diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..9e1b9ca8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,48 @@ +# Contributing to Path of Building + +## Reporting bugs + +#### Before creating an issue: +* Check that the bug hasn't been reported in an existing issue. +* Make sure you are running the latest version of the program; click "Check for Update" at the bottom left corner. +* If you've found an issue with offence or defence calculations, make sure you check the breakdown for that calculation in the Calcs tab to see how it is being performed, as this may help you find the cause. + +#### When creating an issue: +* Please provide detailed instructions on how to reproduce the bug, if possible. +* If the issue affects a specific build, please provide the build share code: In the Import/Export Build tab, click "Generate", then "Share with Pastebin" and add the link to your post. + +## Requesting features +Feature requests are always welcome. Note that not all requests will recieve an immediate response. + +#### Before submitting a feature request: +* Check that the feature hasn't already been requested; look at all issues with titles that might be related to the feature. +* Make sure you are running the latest version of the program, as the feature may already have been added; click "Check for Update" at the bottom left corner. + +#### When submitting a feature request: +* Be specific! The more details, the better. +* Small requests are fine, even if it's just adding support for a minor modifier on a rarely-used unique. + +## Contributing code + +#### When submitting a pull request: +* **Pull requests must be made against the 'dev' branch**, as all changes to the code are staged there before merging to 'master'. +* Make sure that the changes have been thoroughly tested! + +#### Setting up a development install + +The easiest way to make and test changes is by setting up a development install, in which the program runs directly from a local copy of the repository: +1. Clone or download the repository; make sure you grab the dev branch. If you have [Git](https://git-scm.com/) installed, you can use this command: `git clone -b dev https://github.com/Openarl/PathOfBuilding.git`. +2. Copy the 'TreeData' folder from your main installation into the repository; if you used the .exe to install then it will be in "%ProgramData%\Path of Building". +3. Create a shortcut to the 'Path of Building.exe' in your main installation of the program. +4. Add the path and filename of the repository's 'Launch.lua' as an argument to the shortcut; you should end up with something like: `"C:\Program Files (x86)\Path of Building\Path of Building.exe" "C:\Path of Building\Launch.lua"`. + +You can now use the shortcut to run the program from the repository. Running the program in this manner automatically enables 'Dev Mode', which has some handy debugging feature: +* `F5` restarts the program in-place (this is what usually happens when an update is applied). +* Holding `Alt` adds additional debugging information to tooltips: + * Items and passives show all internal modifiers that they are granting. + * Stats that aren't parsed correctly will show any unrecognised parts of the stat description. + * Passives also show node ID and node power values. + * Conditional options in the Configuration tab show the list of dependant modifiers. +* While in the Tree tab, holding `Alt` also highlights nodes that have unrecognised modifiers. + +Note that the updates system is disabled in Dev Mode, so you must update manually. diff --git a/Classes/CalcBreakdownControl.lua b/Classes/CalcBreakdownControl.lua index e186625f..b0dd1f16 100644 --- a/Classes/CalcBreakdownControl.lua +++ b/Classes/CalcBreakdownControl.lua @@ -95,12 +95,13 @@ end -- Add sections based on the breakdown data generated by the Calcs module function CalcBreakdownClass:AddBreakdownSection(sectionData) + local actor = self.calcsTab.input.showMinion and self.calcsTab.calcsEnv.minion or self.calcsTab.calcsEnv.player local breakdown local ns, name = sectionData.breakdown:match("^(%a+)%.(%a+)$") if ns then - breakdown = self.calcsTab.calcsEnv.breakdown[ns] and self.calcsTab.calcsEnv.breakdown[ns][name] + breakdown = actor.breakdown[ns] and actor.breakdown[ns][name] else - breakdown = self.calcsTab.calcsEnv.breakdown[sectionData.breakdown] + breakdown = actor.breakdown[sectionData.breakdown] end if not breakdown then return @@ -181,15 +182,15 @@ end -- Add a table section showing a list of modifiers function CalcBreakdownClass:AddModSection(sectionData) - local env = self.calcsTab.calcsEnv + local actor = self.calcsTab.input.showMinion and self.calcsTab.calcsEnv.minion or self.calcsTab.calcsEnv.player local build = self.calcsTab.build -- Build list of modifiers to display - local cfg = (sectionData.cfg and env.mainSkill[sectionData.cfg.."Cfg"] and copyTable(env.mainSkill[sectionData.cfg.."Cfg"])) or { } + local cfg = (sectionData.cfg and actor.mainSkill[sectionData.cfg.."Cfg"] and copyTable(actor.mainSkill[sectionData.cfg.."Cfg"])) or { } cfg.source = sectionData.modSource cfg.tabulate = true local rowList - local modDB = sectionData.enemy and env.enemyDB or env.modDB + local modDB = sectionData.enemy and actor.enemy.modDB or actor.modDB if type(sectionData.modName) == "table" then rowList = modDB:Sum(sectionData.modType, cfg, unpack(sectionData.modName)) else @@ -321,7 +322,7 @@ function CalcBreakdownClass:AddModSection(sectionData) end elseif sourceType == "Skill" then -- Extract skill name - row.sourceName = row.mod.source:match("Skill:(.+)") + row.sourceName = data.skills[row.mod.source:match("Skill:(.+)")].name end if row.mod.flags ~= 0 or row.mod.keywordFlags ~= 0 then -- Combine, sort and format modifier flags @@ -343,6 +344,8 @@ function CalcBreakdownClass:AddModSection(sectionData) local desc if tag.type == "Condition" then desc = "Condition: "..(tag.neg and "Not " or "")..(tag.varList and table.concat(tag.varList, "/") or self:FormatModName(tag.var)) + elseif tag.type == "EnemyCondition" then + desc = "Enemy Condition: "..(tag.neg and "Not " or "")..(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) diff --git a/Classes/CalcSectionControl.lua b/Classes/CalcSectionControl.lua index e78b83d9..bce8f7bd 100644 --- a/Classes/CalcSectionControl.lua +++ b/Classes/CalcSectionControl.lua @@ -133,35 +133,34 @@ function CalcSectionClass:UpdatePos() end end -function CalcSectionClass:FormatStr(str, output, colData) +function CalcSectionClass:FormatStr(str, actor, colData) str = str:gsub("{output:([%a%.:]+)}", function(c) local ns, var = c:match("^(%a+)%.(%a+)$") if ns then - return output[ns][var] or "" + return actor.output[ns] and actor.output[ns][var] or "" else - return output[c] or "" + return actor.output[c] or "" end end) str = str:gsub("{(%d+):output:([%a%.:]+)}", function(p, c) local ns, var = c:match("^(%a+)%.(%a+)$") if ns then - return formatRound(output[ns][var] or 0, tonumber(p)) + return formatRound(actor.output[ns] and actor.output[ns][var] or 0, tonumber(p)) else - return formatRound(output[c] or 0, tonumber(p)) + return formatRound(actor.output[c] or 0, tonumber(p)) end end) str = str:gsub("{(%d+):mod:(%d+)}", function(p, n) local sectionData = colData[tonumber(n)] - local env = self.calcsTab.calcsEnv - local modCfg = (sectionData.cfg and env.mainSkill[sectionData.cfg.."Cfg"]) or { } + local modCfg = (sectionData.cfg and actor.mainSkill[sectionData.cfg.."Cfg"]) or { } if sectionData.modSource then modCfg.source = sectionData.modSource end local modVal if type(sectionData.modName) == "table" then - modVal = env.modDB:Sum(sectionData.modType, modCfg, unpack(sectionData.modName)) + modVal = actor.modDB:Sum(sectionData.modType, modCfg, unpack(sectionData.modName)) else - modVal = env.modDB:Sum(sectionData.modType, modCfg, sectionData.modName) + modVal = actor.modDB:Sum(sectionData.modType, modCfg, sectionData.modName) end if sectionData.modType == "MORE" then modVal = (modVal - 1) * 100 @@ -175,8 +174,7 @@ function CalcSectionClass:Draw(viewPort) local x, y = self:GetPos() local width, height = self:GetSize() local cursorX, cursorY = GetCursorPos() - local env = self.calcsTab.calcsEnv - local output = self.calcsTab.calcsOutput + local actor = self.calcsTab.input.showMinion and self.calcsTab.calcsEnv.minion or self.calcsTab.calcsEnv.player -- Draw border and background SetDrawLayer(nil, -10) SetDrawColor(self.col) @@ -190,7 +188,7 @@ function CalcSectionClass:Draw(viewPort) DrawString(x + 3, y + 3, "LEFT", 16, "VAR BOLD", "^7"..self.label..":") if self.extra then local x = x + 3 + DrawStringWidth(16, "VAR BOLD", self.label) + 10 - DrawString(x, y + 3, "LEFT", 16, "VAR", self:FormatStr(self.extra, output)) + DrawString(x, y + 3, "LEFT", 16, "VAR", self:FormatStr(self.extra, actor)) end end -- Draw line below label @@ -231,7 +229,7 @@ function CalcSectionClass:Draw(viewPort) end local textSize = rowData.textSize or 14 SetViewport(colData.x + 3, colData.y, colData.width - 4, colData.height) - DrawString(1, 9 - textSize/2, "LEFT", textSize, "VAR", "^7"..self:FormatStr(colData.format, output, colData)) + DrawString(1, 9 - textSize/2, "LEFT", textSize, "VAR", "^7"..self:FormatStr(colData.format, actor, colData)) SetViewport() end end diff --git a/Classes/CalcsTab.lua b/Classes/CalcsTab.lua index e55a8458..80b81c91 100644 --- a/Classes/CalcsTab.lua +++ b/Classes/CalcsTab.lua @@ -27,8 +27,6 @@ local CalcsTabClass = common.NewClass("CalcsTab", "UndoHandler", "ControlHost", self.input = { } self.input.skill_number = 1 - self.input.skill_activeNumber = 1 - self.input.skill_part = 1 self.input.misc_buffMode = "EFFECTIVE" self.colWidth = 230 @@ -45,18 +43,46 @@ local CalcsTabClass = common.NewClass("CalcsTab", "UndoHandler", "ControlHost", }, }, { label = "Active Skill", { controlName = "mainSkill", control = common.New("DropDownControl", nil, 0, 0, 300, 16, nil, function(index) - self.input.skill_activeNumber = index - self:AddUndoState() + local mainSocketGroup = self.build.skillsTab.socketGroupList[self.input.skill_number] + mainSocketGroup.mainActiveSkillCalcs = index self.build.buildFlag = true end) }, }, { label = "Skill Part", flag = "multiPart", { controlName = "mainSkillPart", control = common.New("DropDownControl", nil, 0, 0, 130, 16, nil, function(index) - self.input.skill_part = index + local mainSocketGroup = self.build.skillsTab.socketGroupList[self.input.skill_number] + mainSocketGroup.displaySkillListCalcs[mainSocketGroup.mainActiveSkillCalcs].activeGem.srcGem.skillPartCalcs = index self:AddUndoState() self.build.buildFlag = true end) }, }, + { label = "Show Minion Stats", flag = "haveMinion", { controlName = "showMinion", + control = common.New("CheckBoxControl", nil, 0, 0, 18, nil, function(state) + self.input.showMinion = state + self:AddUndoState() + end, "Show stats for the minion instead of the player.") + }, }, + { label = "Minion", flag = "minion", { controlName = "mainSkillMinion", + control = common.New("DropDownControl", nil, 0, 0, 150, 16, nil, function(index, val) + local mainSocketGroup = self.build.skillsTab.socketGroupList[self.input.skill_number] + mainSocketGroup.displaySkillListCalcs[mainSocketGroup.mainActiveSkillCalcs].activeGem.srcGem.skillMinionCalcs = val.val + self:AddUndoState() + self.build.buildFlag = true + end) + } }, + { label = "Spectre Library", flag = "spectre", { controlName = "mainSkillMinionLibrary", + control = common.New("ButtonControl", nil, 0, 0, 100, 16, "Manage Spectres...", function() + self.build:OpenSpectreLibrary() + end) + } }, + { label = "Minion Skill", flag = "haveMinion", { controlName = "mainSkillMinionSkill", + control = common.New("DropDownControl", nil, 0, 0, 200, 16, nil, function(index) + local mainSocketGroup = self.build.skillsTab.socketGroupList[self.input.skill_number] + mainSocketGroup.displaySkillListCalcs[mainSocketGroup.mainActiveSkillCalcs].activeGem.srcGem.skillMinionSkillCalcs = index + self:AddUndoState() + self.build.buildFlag = true + end) + } }, { label = "Calculation Mode", { controlName = "mode", control = common.New("DropDownControl", nil, 0, 0, 100, 16, { @@ -81,32 +107,8 @@ Effective DPS: Curses and enemy properties (such as resistances and status condi { label = "Combat Buffs", flag = "combat", textSize = 12, { format = "{output:CombatList}" }, }, { label = "Curses and Debuffs", flag = "effective", textSize = 12, { format = "{output:CurseList}" }, }, }, function(section) - wipeTable(section.controls.mainSocketGroup.list) - for i, socketGroup in pairs(self.build.skillsTab.socketGroupList) do - section.controls.mainSocketGroup.list[i] = { val = i, label = socketGroup.displayLabel } - end - if #section.controls.mainSocketGroup.list == 0 then - section.controls.mainSocketGroup.list[1] = { val = 1, label = "" } - else - local mainSocketGroup = self.build.skillsTab.socketGroupList[self.input.skill_number] - wipeTable(section.controls.mainSkill.list) - for i, activeSkill in ipairs(mainSocketGroup.displaySkillList) do - t_insert(section.controls.mainSkill.list, { val = i, label = activeSkill.activeGem.name }) - end - section.controls.mainSkill.enabled = #mainSocketGroup.displaySkillList > 1 - section.controls.mainSkill.sel = self.input.skill_activeNumber - if mainSocketGroup.displaySkillList[1] then - local activeGem = mainSocketGroup.displaySkillList[self.input.skill_activeNumber].activeGem - if activeGem and activeGem.data.parts and #activeGem.data.parts > 1 then - wipeTable(section.controls.mainSkillPart.list) - for i, part in ipairs(activeGem.data.parts) do - t_insert(section.controls.mainSkillPart.list, { val = i, label = part.name }) - end - section.controls.mainSkillPart.sel = self.input.skill_part - end - end - end - section.controls.mainSocketGroup.sel = self.input.skill_number + self.build:RefreshSkillSelectControls(section.controls, self.input.skill_number, "Calcs") + section.controls.showMinion.state = self.input.showMinion section.controls.mode:SelByValue(self.input.misc_buffMode) end) @@ -320,7 +322,8 @@ function CalcsTabClass:SetDisplayStat(displayData, pin) end function CalcsTabClass:CheckFlag(obj) - local skillFlags = self.calcsEnv.mainSkill.skillFlags + local actor = self.input.showMinion and self.calcsEnv.minion or self.calcsEnv.player + local skillFlags = actor.mainSkill.skillFlags if obj.flag and not skillFlags[obj.flag] then return end @@ -342,7 +345,7 @@ function CalcsTabClass:CheckFlag(obj) end end if obj.haveOutput then - if not self.calcsOutput[obj.haveOutput] or self.calcsOutput[obj.haveOutput] == 0 then + if not actor.output[obj.haveOutput] or actor.output[obj.haveOutput] == 0 then return end end @@ -357,18 +360,16 @@ function CalcsTabClass:BuildOutput() local start = GetTime() SetProfiling(true) for i = 1, 1000 do - wipeTable(self.mainOutput) - self.calcs.buildOutput(self.build, self.mainOutput, "MAIN") + self.calcs.buildOutput(self.build, "MAIN") end SetProfiling(false) ConPrintf("Calc time: %d msec", GetTime() - start) --]] self.mainEnv = self.calcs.buildOutput(self.build, "MAIN") - self.mainOutput = self.mainEnv.output + self.mainOutput = self.mainEnv.player.output self.calcsEnv = self.calcs.buildOutput(self.build, "CALCS") - self.calcsOutput = self.calcsEnv.output - self.calcsBreakdown = self.calcsEnv.breakdown + self.calcsOutput = self.calcsEnv.player.output if self.displayData then self.controls.breakdown:SetBreakdownData() @@ -421,7 +422,11 @@ function CalcsTabClass:PowerBuilder() cache[node.modKey] = calcFunc({node}) end local output = cache[node.modKey] - node.power.dps = (output.CombinedDPS - calcBase.CombinedDPS) / calcBase.CombinedDPS + if calcBase.Minion then + node.power.dps = (output.Minion.CombinedDPS - calcBase.Minion.CombinedDPS) / calcBase.Minion.CombinedDPS + else + node.power.dps = (output.CombinedDPS - calcBase.CombinedDPS) / calcBase.CombinedDPS + end node.power.def = (output.LifeUnreserved - calcBase.LifeUnreserved) / m_max(3000, calcBase.Life) + (output.Armour - calcBase.Armour) / m_max(10000, calcBase.Armour) + (output.EnergyShield - calcBase.EnergyShield) / m_max(3000, calcBase.EnergyShield) + diff --git a/Classes/CheckBoxControl.lua b/Classes/CheckBoxControl.lua index aa0a18f9..fcdba3d9 100644 --- a/Classes/CheckBoxControl.lua +++ b/Classes/CheckBoxControl.lua @@ -5,10 +5,11 @@ -- local launch, main = ... -local CheckBoxClass = common.NewClass("CheckBoxControl", "Control", function(self, anchor, x, y, size, label, changeFunc) +local CheckBoxClass = common.NewClass("CheckBoxControl", "Control", function(self, anchor, x, y, size, label, changeFunc, tooltip) self.Control(anchor, x, y, size, size) self.label = label self.changeFunc = changeFunc + self.tooltip = tooltip self.tooltipFunc = function(state) local tooltip = self:GetProperty("tooltip") if tooltip then diff --git a/Classes/ConfigTab.lua b/Classes/ConfigTab.lua index bf917db7..7b4a09d2 100644 --- a/Classes/ConfigTab.lua +++ b/Classes/ConfigTab.lua @@ -58,14 +58,14 @@ local varList = { { var = "conditionOnShockedGround", type = "check", label = "Are you on Shocked Ground?", ifCond = "OnShockedGround", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "OnShockedGround" }, "Config", { type = "Condition", var = "Combat" }) end }, - { var = "conditionIgnited", type = "check", label = "Are you Ignited?", ifCond = "PlayerIgnited", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "PlayerIgnited" }, "Config", { type = "Condition", var = "Combat" }) + { var = "conditionIgnited", type = "check", label = "Are you Ignited?", ifCond = "Ignited", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "Ignited" }, "Config", { type = "Condition", var = "Combat" }) end }, - { var = "conditionFrozen", type = "check", label = "Are you Frozen?", ifCond = "PlayerFrozen", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "PlayerFrozen" }, "Config", { type = "Condition", var = "Combat" }) + { var = "conditionFrozen", type = "check", label = "Are you Frozen?", ifCond = "Frozen", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "Frozen" }, "Config", { type = "Condition", var = "Combat" }) end }, - { var = "conditionShocked", type = "check", label = "Are you Shocked?", ifCond = "PlayerShocked", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "PlayerShocked" }, "Config", { type = "Condition", var = "Combat" }) + { var = "conditionShocked", type = "check", label = "Are you Shocked?", ifCond = "Shocked", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "Condition", var = "Shocked" }, "Config", { type = "Condition", var = "Combat" }) end }, { var = "conditionHitRecently", type = "check", label = "Have you Hit Recently?", ifCond = "HitRecently", tooltip = "You will automatically be considered to have Hit Recently if your main skill is self-cast,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "HitRecently" }, "Config", { type = "Condition", var = "Combat" }) @@ -147,50 +147,50 @@ local varList = { { var = "conditionEnemyMoving", type = "check", label = "Is the enemy Moving?", ifFlag = "bleed", apply = function(val, modList, enemyModList) modList:NewMod("Damage", "MORE", 500, "Movement", 0, KeywordFlag.Bleed) end }, - { var = "conditionEnemyFullLife", type = "check", label = "Is the enemy on Full Life?", ifCond = "EnemyFullLife", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyFullLife" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyFullLife", type = "check", label = "Is the enemy on Full Life?", ifEnemyCond = "FullLife", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "FullLife" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyLowLife", type = "check", label = "Is the enemy on Low Life?", ifCond = "EnemyLowLife", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyLowLife" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyLowLife", type = "check", label = "Is the enemy on Low Life?", ifEnemyCond = "LowLife", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "LowLife" }, "Config", { type = "Condition", var = "Effective" }) end }, { var = "conditionAtCloseRange", type = "check", label = "Is the enemy at Close Range?", ifCond = "AtCloseRange", apply = function(val, modList, enemyModList) modList:NewMod("Misc", "LIST", { type = "Condition", var = "AtCloseRange" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyCursed", type = "check", label = "Is the enemy Cursed?", ifCond = "EnemyCursed", 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" }) + { var = "conditionEnemyCursed", type = "check", label = "Is the enemy Cursed?", ifEnemyCond = "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 = "EnemyCondition", var = "Cursed" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyBleeding", type = "check", label = "Is the enemy Bleeding?", ifCond = "EnemyBleeding", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyBleeding" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyBleeding", type = "check", label = "Is the enemy Bleeding?", ifEnemyCond = "Bleeding", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Bleeding" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyPoisoned", type = "check", label = "Is the enemy Poisoned?", ifCond = "EnemyPoisoned", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyPoisoned" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyPoisoned", type = "check", label = "Is the enemy Poisoned?", ifEnemyCond = "Poisoned", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Poisoned" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyMaimed", type = "check", label = "Is the enemy Maimed?", ifCond = "EnemyMaimed", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyMaimed" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyMaimed", type = "check", label = "Is the enemy Maimed?", ifEnemyCond = "Maimed", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Maimed" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyHindered", type = "check", label = "Is the enemy Hindered?", ifCond = "EnemyHindered", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyHindered" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyHindered", type = "check", label = "Is the enemy Hindered?", ifEnemyCond = "Hindered", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Hindered" }, "Config", { type = "Condition", var = "Effective" }) end }, { var = "conditionEnemyBlinded", type = "check", label = "Is the enemy Blinded?", tooltip = "In addition to allowing 'against Blinded Enemies' modifiers to apply,\nthis will lessen the enemy's chance to hit, and thereby increase your evade chance.", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyBlinded" }, "Config", { type = "Condition", var = "Effective" }) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Blinded" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyTaunted", type = "check", label = "Is the enemy Taunted?", ifCond = "EnemyTaunted", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyTaunted" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyTaunted", type = "check", label = "Is the enemy Taunted?", ifEnemyCond = "Taunted", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Taunted" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyBurning", type = "check", label = "Is the enemy Burning?", ifCond = "EnemyBurning", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyBurning" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyBurning", type = "check", label = "Is the enemy Burning?", ifEnemyCond = "Burning", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Burning" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyIgnited", type = "check", label = "Is the enemy Ignited?", ifCond = "EnemyIgnited", tooltip = "This also implies that the enemy is Burning.", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyIgnited" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyIgnited", type = "check", label = "Is the enemy Ignited?", ifEnemyCond = "Ignited", tooltip = "This also implies that the enemy is Burning.", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Ignited" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyChilled", type = "check", label = "Is the enemy Chilled?", ifCond = "EnemyChilled", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyChilled" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyChilled", type = "check", label = "Is the enemy Chilled?", ifEnemyCond = "Chilled", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Chilled" }, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyFrozen", type = "check", label = "Is the enemy Frozen?", ifCond = "EnemyFrozen", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyFrozen" }, "Config", { type = "Condition", var = "Effective" }) + { var = "conditionEnemyFrozen", type = "check", label = "Is the enemy Frozen?", ifEnemyCond = "Frozen", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Frozen" }, "Config", { type = "Condition", var = "Effective" }) end }, { var = "conditionEnemyShocked", type = "check", label = "Is the enemy Shocked?", tooltip = "In addition to allowing any 'against Shocked Enemies' modifiers to apply,\nthis will apply Shock's Damage Taken modifier to the enemy.", apply = function(val, modList, enemyModList) - modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyShocked" }, "Config", { type = "Condition", var = "Effective" }) + modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "Shocked" }, "Config", { type = "Condition", var = "Effective" }) end }, { var = "conditionEnemyIntimidated", type = "check", label = "Is the enemy Intimidated?", tooltip = "This adds the following modifiers:\n10% increased Damage Taken by enemy", apply = function(val, modList, enemyModList) enemyModList:NewMod("DamageTaken", "INC", 10, "Intimidate") @@ -204,12 +204,12 @@ local varList = { { var = "enemyIsBoss", type = "list", label = "Is the enemy a Boss?", tooltip = "Standard Boss adds the following modifiers:\n60% less Effect of your Curses\n+30% to enemy Elemental Resistances\n+15% to enemy Chaos Resistance\n\nShaper/Guardian adds the following modifiers:\n80% less Effect of your Curses\n+40% to enemy Elemental Resistances\n+25% to enemy Chaos Resistance\n50% less Duration of Bleed\n50% less Duration of Poison\n50% less Duration of Ignite", list = {{val="NONE",label="No"},{val=true,label="Standard Boss"},{val="SHAPER",label="Shaper/Guardian"}}, apply = function(val, modList, enemyModList) if val == true then modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyRareOrUnique" }, "Config", { type = "Condition", var = "Effective" }) - enemyModList:NewMod("CurseEffect", "MORE", -60, "Boss") + enemyModList:NewMod("CurseEffectOnSelf", "MORE", -60, "Boss") enemyModList:NewMod("ElementalResist", "BASE", 30, "Boss") enemyModList:NewMod("ChaosResist", "BASE", 15, "Boss") elseif val == "SHAPER" then modList:NewMod("Misc", "LIST", { type = "Condition", var = "EnemyRareOrUnique" }, "Config", { type = "Condition", var = "Effective" }) - enemyModList:NewMod("CurseEffect", "MORE", -80, "Boss") + enemyModList:NewMod("CurseEffectOnSelf", "MORE", -80, "Boss") enemyModList:NewMod("ElementalResist", "BASE", 40, "Boss") enemyModList:NewMod("ChaosResist", "BASE", 25, "Boss") enemyModList:NewMod("SelfBleedDuration", "MORE", -50, "Boss") @@ -242,6 +242,18 @@ local varList = { modList:NewMod("Misc", "LIST", { type = "EnemyCondition", var = "HitByLightningDamage" }, "Config") end }, { var = "EEIgnoreHitDamage", type = "check", label = "Ignore Skill Hit Damage?", ifNode = 39085, tooltip = "This option prevents EE from being reset by the hit damage of your main skill." }, + { section = "Skill Options" }, + { label = "Raise Spectre:", ifSkill = "Raise Spectre" }, + { var = "raiseSpectreSpectreLevel", type = "number", label = "Spectre Level:", ifSkill = "Raise Spectre", tooltip = "Sets the level of the raised spectre.\nThe default level is the level requirement of the Raise Spectre skill.", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "SkillData", key = "minionLevel", value = val }, "Config", { type = "SkillName", skillName = "Raise Spectre" }) + end }, + { var = "raiseSpectreEnableCurses", type = "check", label = "Enable curses:", ifSkill = "Raise Spectre", tooltip = "Enable any curse skills that your spectres have.", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "SkillData", key = "enable", value = true }, "Config", { type = "SkillType", skillType = SkillType.Curse }, { type = "SkillName", skillName = "Raise Spectre", summonSkill = true }) + end }, + { label = "Summon Lightning Golem:", ifSkill = "Summon Lightning Golem" }, + { var = "summonLightningGolemEnableWrath", type = "check", label = "Enable Wrath Aura:", ifSkill = "Summon Lightning Golem", apply = function(val, modList, enemyModList) + modList:NewMod("Misc", "LIST", { type = "SkillData", key = "enable", value = true }, "Config", { type = "SkillId", skillId = "LightningGolemWrath" }) + end }, } local ConfigTabClass = common.NewClass("ConfigTab", "UndoHandler", "ControlHost", "Control", function(self, build) @@ -284,7 +296,7 @@ local ConfigTabClass = common.NewClass("ConfigTab", "UndoHandler", "ControlHost" self.build.buildFlag = true end) elseif varData.type == "number" then - control = common.New("EditControl", {"TOPLEFT",lastSection,"TOPLEFT"}, 234, 0, 50, 18, "", nil, "^%-%d", 4, function(buf) + control = common.New("EditControl", {"TOPLEFT",lastSection,"TOPLEFT"}, 234, 0, 70, 18, "", nil, "^%-%d", 4, function(buf) self.input[varData.var] = tonumber(buf) self:AddUndoState() self:BuildModList() @@ -297,6 +309,8 @@ local ConfigTabClass = common.NewClass("ConfigTab", "UndoHandler", "ControlHost" self:BuildModList() self.build.buildFlag = true end) + else + control = common.New("Control", {"TOPLEFT",lastSection,"TOPLEFT"}, 234, 0, 16, 16) end if varData.ifNode then control.shown = function() @@ -305,14 +319,24 @@ local ConfigTabClass = common.NewClass("ConfigTab", "UndoHandler", "ControlHost" control.tooltip = function() return "This option is specific to '"..self.build.spec.nodes[varData.ifNode].dn.."'."..(varData.tooltip and "\n"..varData.tooltip or "") end - elseif varData.ifCond then + elseif varData.ifCond or varData.ifEnemyCond then control.shown = function() - return self.build.calcsTab.mainEnv.conditionsUsed[varData.ifCond] + if varData.ifCond then + return self.build.calcsTab.mainEnv.conditionsUsed[varData.ifCond] + else + return self.build.calcsTab.mainEnv.enemyConditionsUsed[varData.ifEnemyCond] + end end control.tooltip = function() if launch.devMode and IsKeyDown("ALT") then local out = varData.tooltip or "" - for _, mod in ipairs(self.build.calcsTab.mainEnv.conditionsUsed[varData.ifCond]) do + local list + if varData.ifCond then + list = self.build.calcsTab.mainEnv.conditionsUsed[varData.ifCond] + else + list = self.build.calcsTab.mainEnv.enemyConditionsUsed[varData.ifEnemyCond] + end + for _, mod in ipairs(list) do out = (#out > 0 and out.."\n" or out) .. modLib.formatMod(mod) .. "|" .. mod.source end return out @@ -322,14 +346,21 @@ local ConfigTabClass = common.NewClass("ConfigTab", "UndoHandler", "ControlHost" end elseif varData.ifFlag then control.shown = function() - return self.build.calcsTab.mainEnv.mainSkill.skillFlags[varData.ifFlag] + return self.build.calcsTab.mainEnv.player.mainSkill.skillFlags[varData.ifFlag] -- O_O + end + control.tooltip = varData.tooltip + elseif varData.ifSkill then + control.shown = function() + return self.build.calcsTab.mainEnv.skillsUsed[varData.ifSkill] end control.tooltip = varData.tooltip else control.tooltip = varData.tooltip end t_insert(self.controls, common.New("LabelControl", {"RIGHT",control,"LEFT"}, -4, 0, 0, 14, "^7"..varData.label)) - self.varControls[varData.var] = control + if varData.var then + self.varControls[varData.var] = control + end t_insert(self.controls, control) t_insert(lastSection.varControlList, control) end @@ -410,25 +441,31 @@ function ConfigTabClass:Draw(viewPort, inputEvents) local colY = { } for _, section in ipairs(self.sectionList) do local y = 14 + section.shown = true + local doShow = false for _, varControl in ipairs(section.varControlList) do if varControl:IsShown() then + doShow = true local width, height = varControl:GetSize() varControl.y = y + (18 - height) / 2 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 + section.shown = doShow + if doShow then + 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 - col = col + 1 + section.x = 10 + (col - 1) * 360 + section.y = colY[col] + colY[col] = colY[col] + height + 18 end - section.x = 10 + (col - 1) * 360 - section.y = colY[col] - colY[col] = colY[col] + height + 18 end main:DrawBackground(viewPort) diff --git a/Classes/ControlHost.lua b/Classes/ControlHost.lua index 73fd74da..47793abf 100644 --- a/Classes/ControlHost.lua +++ b/Classes/ControlHost.lua @@ -73,7 +73,7 @@ end function ControlHostClass:DrawControls(viewPort) for _, control in pairs(self.controls) do - if control:IsShown() then + if control:IsShown() and control.Draw then control:Draw(viewPort) end end diff --git a/Classes/EditControl.lua b/Classes/EditControl.lua index f540715a..99ac7036 100644 --- a/Classes/EditControl.lua +++ b/Classes/EditControl.lua @@ -54,8 +54,9 @@ local EditClass = common.NewClass("EditControl", "ControlHost", "Control", "Undo self.selCol = "^0" self.selBGCol = "^xBBBBBB" self.blinkStart = GetTime() - if self.filter == "%D" then + if self.filter == "%D" or self.filter == "^%-%d" then -- Add +/- buttons for integer number edits + self.isNumeric = true local function buttonSize() local width, height = self:GetSize() return height - 4 @@ -564,7 +565,7 @@ function EditClass:OnKeyUp(key) if self.drag then self.drag = false end - elseif self.filter == "%D" then + elseif self.isNumeric then local cur = tonumber(self.buf) if key == "WHEELUP" or key == "UP" then if cur then @@ -573,7 +574,7 @@ function EditClass:OnKeyUp(key) self:SetText("1", true) end elseif key == "WHEELDOWN" or key == "DOWN" then - if cur and cur > 0 then + if cur and (self.filter ~= "%D" or cur > 0 )then self:SetText(tostring(cur - 1), true) else self:SetText("0", true) diff --git a/Classes/GemSelectControl.lua b/Classes/GemSelectControl.lua index 485e32a0..59a77162 100644 --- a/Classes/GemSelectControl.lua +++ b/Classes/GemSelectControl.lua @@ -173,11 +173,11 @@ function GemSelectClass:Draw(viewPort) SetDrawColor(1, 1, 1) local gemData = data.gems[self.list[index]] if gemData then - if gemData.strength then + if gemData.color == 1 then SetDrawColor(data.colorCodes.STRENGTH) - elseif gemData.dexterity then + elseif gemData.color == 2 then SetDrawColor(data.colorCodes.DEXTERITY) - elseif gemData.intelligence then + elseif gemData.color == 3 then SetDrawColor(data.colorCodes.INTELLIGENCE) end end @@ -185,7 +185,7 @@ function GemSelectClass:Draw(viewPort) if gemData and gemData.support and self.skillsTab.displayGroup.displaySkillList then local gem = { data = gemData } for _, activeSkill in ipairs(self.skillsTab.displayGroup.displaySkillList) do - if gemCanSupport(gem, activeSkill) then + if calcLib.gemCanSupport(gem, activeSkill) then SetDrawColor(0.33, 1, 0.33) main:DrawCheckMark(width - 4 - height / 2 - (scrollBar.enabled and 18 or 0), y + (height - 4) / 2, (height - 4) * 0.8) break diff --git a/Classes/MinionListControl.lua b/Classes/MinionListControl.lua new file mode 100644 index 00000000..c269d1cf --- /dev/null +++ b/Classes/MinionListControl.lua @@ -0,0 +1,251 @@ +-- Path of Building +-- +-- Class: Minion List +-- Minion list control. +-- +local launch, main = ... + +local t_insert = table.insert +local t_remove = table.remove +local m_min = math.min +local m_max = math.max +local m_floor = math.floor +local s_format = string.format + +local MinionListClass = common.NewClass("MinionList", "Control", "ControlHost", function(self, anchor, x, y, width, height, list, mutable, dest) + self.Control(anchor, x, y, width, height) + self.ControlHost() + self.list = list + self.mutable = mutable + self.dest = dest + self.controls.scrollBar = common.New("ScrollBarControl", {"RIGHT",self,"RIGHT"}, -1, 0, 16, 0, 32) + self.controls.scrollBar.height = function() + local width, height = self:GetSize() + return height - 2 + end + if mutable then + self.controls.delete = common.New("ButtonControl", {"BOTTOMRIGHT",self,"TOPRIGHT"}, 0, -2, 60, 18, "Remove", function() + self:DeleteSel() + end) + self.controls.delete.enabled = function() + return self.selValue ~= nil + end + else + self.controls.add = common.New("ButtonControl", {"BOTTOMRIGHT",self,"TOPRIGHT"}, 0, -2, 60, 18, "Add", function() + self:AddSel() + end) + self.controls.add.enabled = function() + return self.selValue ~= nil + end + end +end) + +function MinionListClass:SelectIndex(index) + self.selValue = self.list[index] + if self.selValue then + self.selIndex = index + self.controls.scrollBar:ScrollIntoView((index - 2) * 16, 48) + end +end + +function MinionListClass:AddSel() + if self.selValue and self.dest and not isValueInArray(self.dest.list, self.selValue) then + t_insert(self.dest.list, self.selValue) + end +end + +function MinionListClass:DeleteSel() + if self.selIndex and self.mutable then + t_remove(self.list, self.selIndex) + self.selIndex = nil + self.selValue = nil + end +end + +function MinionListClass:IsMouseOver() + if not self:IsShown() then + return + end + return self:IsMouseInBounds() or self:GetMouseOverControl() +end + +function MinionListClass:Draw(viewPort) + local x, y = self:GetPos() + local width, height = self:GetSize() + local list = self.list + local scrollBar = self.controls.scrollBar + scrollBar:SetContentDimension(#list * 16, height - 4) + self.selDragIndex = nil + if (self.selValue and self.selDragging) or self.otherDragActive then + local cursorX, cursorY = GetCursorPos() + if not self.selDragActive and not self.otherDragActive and (cursorX-self.selCX)*(cursorX-self.selCX)+(cursorY-self.selCY)*(cursorY-self.selCY) > 100 then + self.selDragActive = true + end + if (self.selDragActive or self.otherDragActive) and self.mutable then + if cursorX >= x + 2 and cursorY >= y + 2 and cursorX < x + width - 18 and cursorY < y + height - 2 then + local index = math.floor((cursorY - y - 2 + scrollBar.offset) / 16 + 0.5) + 1 + if not self.selIndex or index < self.selIndex or index > self.selIndex + 1 then + self.selDragIndex = m_min(index, #list + 1) + end + end + end + if self.dest then + self.dest.otherDragActive = self.dest:IsMouseOver() + end + end + DrawString(x, y - 20, "LEFT", 16, "VAR", self.mutable and "^7Spectres in Build:" or "^7Available Spectres:") + if self.hasFocus then + SetDrawColor(1, 1, 1) + else + SetDrawColor(0.5, 0.5, 0.5) + end + DrawImage(nil, x, y, width, height) + SetDrawColor(0, 0, 0) + DrawImage(nil, x + 1, y + 1, width - 2, height - 2) + self:DrawControls(viewPort) + SetViewport(x + 2, y + 2, width - 20, height - 4) + local ttValue, ttY, ttWidth + local minIndex = m_floor(scrollBar.offset / 16 + 1) + local maxIndex = m_min(m_floor((scrollBar.offset + height) / 16 + 1), #list) + for index = minIndex, maxIndex do + local value = list[index] + local minion = data.minions[value] + local lineY = 16 * (index - 1) - scrollBar.offset + local label = minion.name + local nameWidth = DrawStringWidth(16, "VAR", label) + if not scrollBar.dragging and not self.selDragActive then + local cursorX, cursorY = GetCursorPos() + local relX = cursorX - (x + 2) + local relY = cursorY - (y + 2) + if relX >= 0 and relX < width - 17 and relY >= 0 and relY >= lineY and relY < height - 2 and relY < lineY + 16 then + ttValue = value + ttWidth = m_max(nameWidth + 8, relX) + ttY = lineY + y + 2 + end + end + if value == ttValue or value == self.selValue then + if self.hasFocus then + SetDrawColor(1, 1, 1) + else + SetDrawColor(0.5, 0.5, 0.5) + end + DrawImage(nil, 0, lineY, width - 20, 16) + SetDrawColor(0.15, 0.15, 0.15) + DrawImage(nil, 0, lineY + 1, width - 20, 14) + end + SetDrawColor(1, 1, 1) + DrawString(0, lineY, "LEFT", 16, "VAR", label) + end + if self.selDragIndex then + local lineY = 16 * (self.selDragIndex - 1) - scrollBar.offset + SetDrawColor(1, 1, 1) + DrawImage(nil, 0, lineY - 1, width - 20, 3) + SetDrawColor(0, 0, 0) + DrawImage(nil, 0, lineY, width - 20, 1) + end + SetViewport() + if ttValue then + local minion = data.minions[ttValue] + main:AddTooltipLine(18, "^7"..minion.name) + main:AddTooltipLine(14, s_format("^7Life multiplier: x%.2f", minion.life)) + if minion.energyShield then + main:AddTooltipLine(14, s_format("^7Energy Shield: %d%% of base Life", minion.energyShield * 100)) + end + main:AddTooltipLine(14, s_format("^7Resistances: %s%d^7/%s%d^7/%s%d^7/%s%d", + data.colorCodes.FIRE, minion.fireResist, data.colorCodes.COLD, minion.coldResist, + data.colorCodes.LIGHTNING, minion.lightningResist, data.colorCodes.CHAOS, minion.chaosResist)) + main:AddTooltipLine(14, s_format("^7Base damage: x%.2f", minion.damage)) + main:AddTooltipLine(14, s_format("^7Base attack speed: %.2f", 1 / minion.attackTime)) + for _, skillId in ipairs(minion.skillList) do + if data.skills[skillId] then + main:AddTooltipLine(14, "^7Skill: "..data.skills[skillId].name) + end + end + SetDrawLayer(nil, 100) + main:DrawTooltip(x + 2, ttY, ttWidth, 16, viewPort) + SetDrawLayer(nil, 0) + end +end + +function MinionListClass:OnKeyDown(key, doubleClick) + if not self:IsShown() or not self:IsEnabled() then + return + end + local mOverControl = self:GetMouseOverControl() + if mOverControl and mOverControl.OnKeyDown then + return mOverControl:OnKeyDown(key) + end + if not self:IsMouseOver() and key:match("BUTTON") then + return + end + if key == "LEFTBUTTON" then + self.selValue = nil + self.selIndex = nil + local x, y = self:GetPos() + local width, height = self:GetSize() + local cursorX, cursorY = GetCursorPos() + if cursorX >= x + 2 and cursorY >= y + 2 and cursorX < x + width - 18 and cursorY < y + height - 2 then + local index = math.floor((cursorY - y - 2 + self.controls.scrollBar.offset) / 16) + 1 + local selValue = self.list[index] + if selValue then + self.selValue = selValue + self.selIndex = index + if doubleClick then + self:AddSel() + end + end + end + if self.selValue then + self.selCX = cursorX + self.selCY = cursorY + self.selDragging = true + self.selDragActive = false + end + elseif #self.list > 0 then + if key == "UP" then + self:SelectIndex(((self.selIndex or 1) - 2) % #self.list + 1) + elseif key == "DOWN" then + self:SelectIndex((self.selIndex or #self.list) % #self.list + 1) + elseif key == "HOME" then + self:SelectIndex(1) + elseif key == "END" then + self:SelectIndex(#list) + end + end + return self +end + +function MinionListClass:OnKeyUp(key) + if not self:IsShown() or not self:IsEnabled() then + return + end + if key == "WHEELDOWN" then + self.controls.scrollBar:Scroll(1) + elseif key == "WHEELUP" then + self.controls.scrollBar:Scroll(-1) + elseif self.selValue then + if key == "BACK" or key == "DELETE" then + self:DeleteSel() + elseif key == "LEFTBUTTON" then + self.selDragging = false + if self.selDragActive then + self.selDragActive = false + if self.selDragIndex and self.selDragIndex ~= self.selIndex then + t_remove(self.list, self.selIndex) + if self.selDragIndex > self.selIndex then + self.selDragIndex = self.selDragIndex - 1 + end + t_insert(self.list, self.selDragIndex, self.selValue) + self.selValue = nil + elseif self.dest and self.dest.otherDragActive then + if self.dest.selDragIndex and not isValueInArray(self.dest.list, self.selValue) then + t_insert(self.dest.list, self.dest.selDragIndex, self.selValue) + end + self.dest.otherDragActive = false + self.selValue = nil + end + end + end + end + return self +end \ No newline at end of file diff --git a/Classes/ModDB.lua b/Classes/ModDB.lua index 477c6ade..9bcb531e 100644 --- a/Classes/ModDB.lua +++ b/Classes/ModDB.lua @@ -17,9 +17,9 @@ local mod_createMod = modLib.createMod local hack = { } local ModDBClass = common.NewClass("ModDB", function(self) + self.actor = { output = { } } self.multipliers = { } self.conditions = { } - self.stats = { } self.mods = { } end) @@ -82,11 +82,12 @@ end function ModDBClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12) local flags, keywordFlags = 0, 0 - local skillName, skillGem, skillPart, skillTypes, skillStats, skillCond, skillDist, slotName, source, tabulate + local skillName, summonSkillName, skillGem, skillPart, skillTypes, skillStats, skillCond, skillDist, slotName, source, tabulate if cfg then flags = cfg.flags or 0 keywordFlags = cfg.keywordFlags or 0 skillName = cfg.skillName + summonSkillName = cfg.summonSkillName skillGem = cfg.skillGem skillPart = cfg.skillPart skillTypes = cfg.skillTypes @@ -162,7 +163,7 @@ function ModDBClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7, value = value * mult + (tag.base or 0) end elseif tag.type == "PerStat" then - local mult = m_floor((self.stats[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) / tag.div + 0.0001) + local mult = m_floor((self.actor.output[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) / tag.div + 0.0001) if type(value) == "table" then value = copyTable(value) value.value = value.value * mult + (tag.base or 0) @@ -206,18 +207,56 @@ function ModDBClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7, value = nullValue break end + elseif tag.type == "EnemyCondition" then + local match = false + if self.actor.enemy then + if tag.varList then + for _, var in pairs(tag.varList) do + if self.actor.enemy.modDB.conditions[var] then + match = true + break + end + end + else + match = self.actor.enemy.modDB.conditions[tag.var] + end + if tag.neg then + match = not match + end + end + if not match then + value = nullValue + break + end elseif tag.type == "StatThreshold" then if (self.stats[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) < tag.threshold then value = nullValue break end elseif tag.type == "SocketedIn" then - if tag.slotName ~= slotName or (tag.keyword and (not skillGem or not gemIsType(skillGem, tag.keyword))) then + if tag.slotName ~= slotName or (tag.keyword and (not skillGem or not calcLib.gemIsType(skillGem, tag.keyword))) then value = nullValue break end elseif tag.type == "SkillName" then - if tag.skillName ~= skillName then + local match = false + local matchName = tag.summonSkill and (summonSkillName or "") or skillName + if tag.skillNameList then + for _, name in pairs(tag.skillNameList) do + if name == matchName then + match = true + break + end + end + else + match = (tag.skillName == matchName) + end + if not match then + value = nullValue + break + end + elseif tag.type == "SkillId" then + if not skillGem or skillGem.data.id ~= tag.skillId then value = nullValue break end diff --git a/Classes/ModList.lua b/Classes/ModList.lua index 331d042d..57a5bb0c 100644 --- a/Classes/ModList.lua +++ b/Classes/ModList.lua @@ -17,6 +17,7 @@ local mod_createMod = modLib.createMod local hack = { } local ModListClass = common.NewClass("ModList", function(self) + self.actor = { output = { } } self.multipliers = { } self.conditions = { } self.stats = { } @@ -58,11 +59,12 @@ end function ModListClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12) local flags, keywordFlags = 0, 0 - local skillName, skillGem, skillPart, skillTypes, skillStats, skillCond, skillDist, slotName, source, tabulate + local skillName, summonSkillName, skillGem, skillPart, skillTypes, skillStats, skillCond, skillDist, slotName, source, tabulate if cfg then flags = cfg.flags or 0 keywordFlags = cfg.keywordFlags or 0 skillName = cfg.skillName + summonSkillName = cfg.summonSkillName skillGem = cfg.skillGem skillPart = cfg.skillPart skillTypes = cfg.skillTypes @@ -136,7 +138,7 @@ function ModListClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7 value = value * mult + (tag.base or 0) end elseif tag.type == "PerStat" then - local mult = m_floor((self.stats[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) / tag.div + 0.0001) + local mult = m_floor((self.actor.output[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) / tag.div + 0.0001) if type(value) == "table" then value = copyTable(value) value.value = value.value * mult + (tag.base or 0) @@ -180,18 +182,56 @@ function ModListClass:Sum(modType, cfg, arg1, arg2, arg3, arg4, arg5, arg6, arg7 value = nullValue break end + elseif tag.type == "EnemyCondition" then + local match = false + if self.actor.enemy then + if tag.varList then + for _, var in pairs(tag.varList) do + if self.actor.enemy.modDB.conditions[var] then + match = true + break + end + end + else + match = self.actor.enemy.modDB.conditions[tag.var] + end + if tag.neg then + match = not match + end + end + if not match then + value = nullValue + break + end elseif tag.type == "StatThreshold" then if (self.stats[tag.stat] or (skillStats and skillStats[tag.stat]) or 0) < tag.threshold then value = nullValue break end elseif tag.type == "SocketedIn" then - if tag.slotName ~= slotName or (tag.keyword and (not skillGem or not gemIsType(skillGem, tag.keyword))) then + if tag.slotName ~= slotName or (tag.keyword and (not skillGem or not calcLib.gemIsType(skillGem, tag.keyword))) then value = nullValue break end elseif tag.type == "SkillName" then - if tag.skillName ~= skillName then + local match = false + local matchName = tag.summonSkill and (summonSkillName or "") or skillName + if tag.skillNameList then + for _, name in pairs(tag.skillNameList) do + if name == matchName then + match = true + break + end + end + else + match = (tag.skillName == matchName) + end + if not match then + value = nullValue + break + end + elseif tag.type == "SkillId" then + if not skillGem or skillGem.data.id ~= tag.skillId then value = nullValue break end diff --git a/Classes/SkillListControl.lua b/Classes/SkillListControl.lua index cb3bafb8..6681b7dd 100644 --- a/Classes/SkillListControl.lua +++ b/Classes/SkillListControl.lua @@ -165,6 +165,21 @@ function SkillListClass:Draw(viewPort) gemShown[gem.srcGem] = true count = count + 1 end + if activeSkill.minion then + main:AddTooltipSeparator(10) + main:AddTooltipLine(16, "^7Active Skill #"..index.."'s Main Minion Skill:") + local gem = activeSkill.minion.mainSkill.gemList[1] + main:AddTooltipLine(20, string.format("%s%s ^7%d%s/%d%s", + data.skillColorMap[gem.data.color], + gem.name, + gem.level, + (gem.srcGem and gem.level > gem.srcGem.level) and data.colorCodes.MAGIC.."+"..(gem.level - gem.srcGem.level).."^7" or "", + gem.quality, + (gem.srcGem and gem.quality > gem.srcGem.quality) and data.colorCodes.MAGIC.."+"..(gem.quality - gem.srcGem.quality).."^7" or "" + )) + gemShown[gem.srcGem] = true + count = count + 1 + end end local showOtherHeader = true for _, gem in ipairs(ttGroup.gemList) do diff --git a/Classes/SkillsTab.lua b/Classes/SkillsTab.lua index 0d20e2d9..1c9870d2 100644 --- a/Classes/SkillsTab.lua +++ b/Classes/SkillsTab.lua @@ -76,7 +76,7 @@ local SkillsTabClass = common.NewClass("SkillsTab", "UndoHandler", "ControlHost" local item = self.displayGroup.sourceItem or { rarity = "NORMAL", name = "?" } local itemName = data.colorCodes[item.rarity]..item.name.."^7" local activeGem = self.displayGroup.gemList[1] - local label = [[^7This is a special group created for the ']]..activeGem.color..activeGem.nameSpec..[[^7' skill, + local label = [[^7This is a special group created for the ']]..activeGem.color..activeGem.name..[[^7' skill, which is being provided by ']]..itemName..[['. You cannot delete this group, but it will disappear if you un-equip the item.]] if not self.displayGroup.noSupports then @@ -105,6 +105,7 @@ function SkillsTabClass:Load(xml, fileName) socketGroup.slot = node.attrib.slot socketGroup.source = node.attrib.source socketGroup.mainActiveSkill = tonumber(node.attrib.mainActiveSkill) or 1 + socketGroup.mainActiveSkillCalcs = tonumber(node.attrib.mainActiveSkillCalcs) or 1 socketGroup.gemList = { } for _, child in ipairs(node) do local gem = { } @@ -113,6 +114,11 @@ function SkillsTabClass:Load(xml, fileName) gem.quality = tonumber(child.attrib.quality) gem.enabled = not child.attrib.enabled and true or child.attrib.enabled == "true" gem.skillPart = tonumber(child.attrib.skillPart) + gem.skillPartCalcs = tonumber(child.attrib.skillPartCalcs) + gem.skillMinion = child.attrib.skillMinion + gem.skillMinionCalcs = child.attrib.skillMinionCalcs + gem.skillMinionSkill = tonumber(child.attrib.skillMinionSkill) + gem.skillMinionSkillCalcs = tonumber(child.attrib.skillMinionSkillCalcs) t_insert(socketGroup.gemList, gem) end if node.attrib.skillPart and socketGroup.gemList[1] then @@ -134,6 +140,7 @@ function SkillsTabClass:Save(xml) slot = socketGroup.slot, source = socketGroup.source, mainActiveSkill = tostring(socketGroup.mainActiveSkill), + mainActiveSkillCalcs = tostring(socketGroup.mainActiveSkillCalcs), } } for _, gem in ipairs(socketGroup.gemList) do t_insert(node, { elem = "Gem", attrib = { @@ -142,6 +149,11 @@ function SkillsTabClass:Save(xml) quality = tostring(gem.quality), enabled = tostring(gem.enabled), skillPart = gem.skillPart and tostring(gem.skillPart), + skillPartCalcs = gem.skillPartCalcs and tostring(gem.skillPartCalcs), + skillMinion = gem.skillMinion, + skillMinionCalcs = gem.skillMinionCalcs, + skillMinionSkill = gem.skillMinionSkill and tostring(gem.skillMinionSkill), + skillMinionSkillCalcs = gem.skillMinionSkillCalcs and tostring(gem.skillMinionSkillCalcs), } }) end t_insert(xml, node) @@ -398,16 +410,22 @@ function SkillsTabClass:ProcessSocketGroup(socketGroup) gem.name = gem.nameSpec gem.data = data.gems[gem.nameSpec] end + elseif data.skills[gem.nameSpec] then + gem.errMsg = nil + gem.data = data.skills[gem.nameSpec] + gem.name = gem.data.name else gem.errMsg, gem.name, gem.data = self:FindSkillGem(gem.nameSpec) + if gem.name then + gem.nameSpec = gem.name + end end if gem.name then - gem.nameSpec = gem.name - if gem.data.strength then + if gem.data.color == 1 then gem.color = data.colorCodes.STRENGTH - elseif gem.data.dexterity then + elseif gem.data.color == 2 then gem.color = data.colorCodes.DEXTERITY - elseif gem.data.intelligence then + elseif gem.data.color == 3 then gem.color = data.colorCodes.INTELLIGENCE else gem.color = data.colorCodes.NORMAL @@ -471,6 +489,7 @@ function SkillsTabClass:CreateUndoState() enabled = socketGroup.enabled, source = socketGroup.source, mainActiveSkill = socketGroup.mainActiveSkill, + mainActiveSkillCalcs = socketGroup.mainActiveSkillCalcs, gemList = { } } for index, gem in pairs(socketGroup.gemList) do @@ -480,6 +499,11 @@ function SkillsTabClass:CreateUndoState() quality = gem.quality, enabled = gem.enabled, skillPart = gem.skillPart, + skillPartCalcs = gem.skillPartCalcs, + skillMinion = gem.skillMinion, + skillMinionCalcs = gem.skillMinionCalcs, + skillMinionSkill = gem.skillMinionSkill, + skillMinionSkillCalcs = gem.skillMinionSkillCalcs, name = gem.name, data = gem.data, errMsg = gem.errMsg, diff --git a/Data/Bases/sword.lua b/Data/Bases/sword.lua index 39f78a8b..0fb1866a 100644 --- a/Data/Bases/sword.lua +++ b/Data/Bases/sword.lua @@ -51,7 +51,7 @@ itemBases["Dusk Blade"] = { } itemBases["Hook Sword"] = { type = "One Handed Sword", - implicit = "2% chance to Dodge Attacks", + implicit = "4% chance to Dodge Attacks", weapon = { PhysicalMin = 28, PhysicalMax = 60, critChanceBase = 5, attackRateBase = 1.15, }, req = { level = 34, str = 64, dex = 64, }, } @@ -99,7 +99,7 @@ itemBases["Twilight Blade"] = { } itemBases["Grappler"] = { type = "One Handed Sword", - implicit = "2% chance to Dodge Attacks", + implicit = "4% chance to Dodge Attacks", weapon = { PhysicalMin = 44, PhysicalMax = 94, critChanceBase = 5, attackRateBase = 1.15, }, req = { level = 55, str = 99, dex = 99, }, } @@ -147,7 +147,7 @@ itemBases["Midnight Blade"] = { } itemBases["Tiger Hook"] = { type = "One Handed Sword", - implicit = "3% chance to Dodge Attacks", + implicit = "6% chance to Dodge Attacks", weapon = { PhysicalMin = 49, PhysicalMax = 105, critChanceBase = 5, attackRateBase = 1.15, }, req = { level = 70, str = 119, dex = 119, }, } diff --git a/Data/Gems/act_dex.lua b/Data/Gems/act_dex.lua deleted file mode 100644 index 3335acce..00000000 --- a/Data/Gems/act_dex.lua +++ /dev/null @@ -1,4269 +0,0 @@ --- Path of Building --- --- Active Dexterity gems --- Skill gem data (c) Grinding Gear Games --- -local gems, mod, flag, skill = ... - -gems["Animate Weapon"] = { - dexterity = true, - active_skill = true, - duration = true, - minion = true, - spell = true, - unsupported = true, -} -gems["Arctic Armour"] = { - dexterity = true, - active_skill = true, - spell = true, - duration = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [5] = true, [18] = true, [12] = true, [15] = true, [27] = true, [34] = true, [16] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("manaCost", 25), - --"chill_enemy_when_hit_duration_ms" = 500 - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - --[1] = "new_arctic_armour_physical_damage_taken_when_hit_+%_final" - --[2] = "new_arctic_armour_fire_damage_taken_when_hit_+%_final" - [3] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { -8, -8, 2.5, }, - [2] = { -8, -8, 2.6, }, - [3] = { -9, -8, 2.7, }, - [4] = { -9, -8, 2.8, }, - [5] = { -9, -9, 2.9, }, - [6] = { -9, -9, 3, }, - [7] = { -10, -9, 3.1, }, - [8] = { -10, -9, 3.2, }, - [9] = { -10, -10, 3.3, }, - [10] = { -10, -10, 3.4, }, - [11] = { -11, -10, 3.5, }, - [12] = { -11, -10, 3.6, }, - [13] = { -11, -11, 3.7, }, - [14] = { -11, -11, 3.8, }, - [15] = { -12, -11, 3.9, }, - [16] = { -12, -11, 4, }, - [17] = { -12, -12, 4.1, }, - [18] = { -12, -12, 4.2, }, - [19] = { -13, -12, 4.3, }, - [20] = { -13, -12, 4.4, }, - [21] = { -13, -13, 4.5, }, - [22] = { -13, -13, 4.6, }, - [23] = { -14, -13, 4.7, }, - [24] = { -14, -13, 4.8, }, - [25] = { -14, -14, 4.9, }, - [26] = { -14, -14, 5, }, - [27] = { -15, -14, 5.1, }, - [28] = { -15, -14, 5.2, }, - [29] = { -15, -15, 5.3, }, - [30] = { -15, -15, 5.4, }, - }, -} -gems["Barrage"] = { - dexterity = true, - active_skill = true, - attack = true, - bow = true, - parts = { - { - name = "1 Arrow", - }, - { - name = "All Arrows", - }, - }, - setupFunc = function(env, output) - if env.mainSkill.skillPart == 2 then - env.mainSkill.skillData.dpsMultiplier = output.ProjectileCount - end - end, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Wand"] = true, - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("ProjectileCount", "BASE", 3), --"number_of_additional_projectiles" = 3 - --"skill_can_fire_arrows" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 0.5, ModFlag.Projectile), --"projectile_damage_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 7, -50, }, - [2] = { 7, -49.4, }, - [3] = { 7, -48.8, }, - [4] = { 8, -48.2, }, - [5] = { 8, -47.6, }, - [6] = { 8, -47, }, - [7] = { 8, -46.4, }, - [8] = { 8, -45.8, }, - [9] = { 9, -45.2, }, - [10] = { 9, -44.6, }, - [11] = { 9, -44, }, - [12] = { 9, -43.4, }, - [13] = { 9, -42.8, }, - [14] = { 10, -42.2, }, - [15] = { 10, -41.6, }, - [16] = { 10, -41, }, - [17] = { 10, -40.4, }, - [18] = { 10, -39.8, }, - [19] = { 11, -39.2, }, - [20] = { 11, -38.6, }, - [21] = { 11, -38, }, - [22] = { 11, -37.4, }, - [23] = { 11, -36.8, }, - [24] = { 11, -36.2, }, - [25] = { 11, -35.6, }, - [26] = { 12, -35, }, - [27] = { 12, -34.4, }, - [28] = { 12, -33.8, }, - [29] = { 12, -33.2, }, - [30] = { 12, -32.6, }, - }, -} -gems["Bear Trap"] = { - trap = true, - dexterity = true, - active_skill = true, - duration = true, - cast = true, - color = 2, - baseFlags = { - cast = true, - trap = true, - duration = true, - }, - skillTypes = { [12] = true, [19] = true, [37] = true, [39] = true, [10] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 2), - skill("critChance", 5), - --"is_trap" = 1 - --"base_trap_duration" = 16000 - mod("MovementSpeed", "INC", -300, 0, 0, nil), --"base_movement_velocity_+%" = -300 - --"trap_override_pvp_scaling_time_ms" = 750 - --"base_skill_is_trapped" = ? - --"display_skill_deals_secondary_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("trapCooldown", 3), - }, - qualityMods = { - mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"secondary_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"secondary_maximum_base_physical_damage" - }, - levels = { - [1] = { 11, 16, 22, }, - [2] = { 13, 20, 28, }, - [3] = { 15, 27, 38, }, - [4] = { 17, 35, 49, }, - [5] = { 20, 49, 69, }, - [6] = { 22, 67, 94, }, - [7] = { 24, 90, 126, }, - [8] = { 26, 119, 167, }, - [9] = { 28, 156, 218, }, - [10] = { 32, 202, 282, }, - [11] = { 35, 259, 363, }, - [12] = { 38, 331, 463, }, - [13] = { 39, 420, 587, }, - [14] = { 41, 530, 742, }, - [15] = { 42, 630, 881, }, - [16] = { 43, 746, 1045, }, - [17] = { 44, 883, 1236, }, - [18] = { 45, 1043, 1460, }, - [19] = { 46, 1230, 1721, }, - [20] = { 46, 1447, 2026, }, - [21] = { 47, 1613, 2258, }, - [22] = { 48, 1795, 2514, }, - [23] = { 49, 1998, 2797, }, - [24] = { 50, 2222, 3111, }, - [25] = { 50, 2470, 3458, }, - [26] = { 51, 2744, 3842, }, - [27] = { 52, 3047, 4266, }, - [28] = { 53, 3382, 4735, }, - [29] = { 54, 3753, 5254, }, - [30] = { 54, 4162, 5826, }, - }, -} -gems["Blade Flurry"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - channelling = true, - melee = true, - parts = { - { - name = "1 Stage", - }, - { - name = "6 Stages", - }, - { - name = "Release at 6 Stages", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [11] = true, [6] = true, [58] = true, [24] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 4), - mod("Speed", "MORE", 60, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 60 - --"charged_attack_damage_per_stack_+%_final" = 20 - --"is_area_damage" = ? - nil, --"base_skill_show_average_damage_instead_of_dps" = ? - --"skill_can_add_multiple_charges_per_action" = ? - mod("Damage", "MORE", 120, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), - skill("dpsMultiplier", 3, { type = "SkillPart", skillPart = 3 }), - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -55, }, - [2] = { -54.4, }, - [3] = { -53.8, }, - [4] = { -53.2, }, - [5] = { -52.6, }, - [6] = { -52, }, - [7] = { -51.4, }, - [8] = { -50.8, }, - [9] = { -50.2, }, - [10] = { -49.6, }, - [11] = { -49, }, - [12] = { -48.4, }, - [13] = { -47.8, }, - [14] = { -47.2, }, - [15] = { -46.6, }, - [16] = { -46, }, - [17] = { -45.4, }, - [18] = { -44.8, }, - [19] = { -44.2, }, - [20] = { -43.6, }, - [21] = { -43, }, - [22] = { -42.4, }, - [23] = { -41.8, }, - [24] = { -41.2, }, - [25] = { -40.6, }, - [26] = { -40, }, - [27] = { -39.4, }, - [28] = { -38.8, }, - [29] = { -38.2, }, - [30] = { -37.6, }, - }, -} -gems["Blade Vortex"] = { - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - parts = { - { - name = "0 Blades", - }, - { - name = "5 Blades", - }, - { - name = "10 Blades", - }, - { - name = "20 Blades", - }, - }, - color = 2, - baseFlags = { - spell = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [26] = true, [36] = true, [27] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.3), - skill("critChance", 6), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"maximum_number_of_spinning_blades" = 20 - --"base_blade_vortex_hit_rate_ms" = 600 - --"blade_vortex_hit_rate_+%_per_blade" = 10 - --"blade_vortex_damage_+%_per_blade_final" = 30 - --"is_area_damage" = ? - --"skill_can_add_multiple_charges_per_action" = ? - --"action_ignores_crit_tracking" = ? - nil, --"base_skill_show_average_damage_instead_of_dps" = ? - skill("deliciouslyOverpowered", true), - mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), - mod("Damage", "MORE", 300, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 3 }), - mod("Damage", "MORE", 600, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 4 }), - skill("hitTimeOverride", 0.6, { type = "SkillPart", skillPart = 1 }), - skill("hitTimeOverride", 0.4, { type = "SkillPart", skillPart = 2 }), - skill("hitTimeOverride", 0.3, { type = "SkillPart", skillPart = 3 }), - skill("hitTimeOverride", 0.2, { type = "SkillPart", skillPart = 4 }), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 7, 10, 0, }, - [2] = { 7, 8, 12, 0, }, - [3] = { 8, 11, 16, 0, }, - [4] = { 9, 14, 20, 0, }, - [5] = { 10, 17, 25, 1, }, - [6] = { 11, 21, 32, 1, }, - [7] = { 12, 26, 39, 1, }, - [8] = { 13, 30, 45, 1, }, - [9] = { 13, 35, 52, 1, }, - [10] = { 14, 40, 60, 2, }, - [11] = { 14, 46, 69, 2, }, - [12] = { 15, 53, 79, 2, }, - [13] = { 16, 60, 90, 2, }, - [14] = { 16, 68, 103, 2, }, - [15] = { 17, 78, 117, 3, }, - [16] = { 18, 88, 133, 3, }, - [17] = { 18, 96, 144, 3, }, - [18] = { 19, 104, 157, 3, }, - [19] = { 19, 113, 170, 3, }, - [20] = { 19, 123, 185, 4, }, - [21] = { 20, 133, 200, 4, }, - [22] = { 21, 145, 217, 4, }, - [23] = { 21, 157, 235, 4, }, - [24] = { 21, 170, 254, 4, }, - [25] = { 22, 183, 275, 5, }, - [26] = { 23, 198, 298, 5, }, - [27] = { 23, 214, 322, 5, }, - [28] = { 23, 232, 347, 5, }, - [29] = { 24, 250, 375, 5, }, - [30] = { 24, 270, 405, 6, }, - }, -} -gems["Bladefall"] = { - dexterity = true, - active_skill = true, - spell = true, - area = true, - color = 2, - baseFlags = { - spell = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [17] = true, [19] = true, [18] = true, [10] = true, [36] = true, [26] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.9), - skill("critChance", 5), - --"bladefall_damage_per_stage_+%_final" = -6 - mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - }, - levels = { - [1] = { 13, 44, 65, }, - [2] = { 14, 52, 78, }, - [3] = { 15, 62, 93, }, - [4] = { 16, 73, 110, }, - [5] = { 17, 86, 129, }, - [6] = { 18, 96, 144, }, - [7] = { 18, 107, 160, }, - [8] = { 19, 118, 177, }, - [9] = { 19, 131, 197, }, - [10] = { 20, 145, 218, }, - [11] = { 21, 160, 241, }, - [12] = { 21, 177, 266, }, - [13] = { 22, 195, 293, }, - [14] = { 22, 215, 323, }, - [15] = { 23, 237, 356, }, - [16] = { 24, 261, 392, }, - [17] = { 24, 287, 431, }, - [18] = { 25, 315, 473, }, - [19] = { 25, 346, 519, }, - [20] = { 26, 380, 570, }, - [21] = { 27, 417, 625, }, - [22] = { 27, 457, 685, }, - [23] = { 28, 500, 750, }, - [24] = { 28, 548, 821, }, - [25] = { 29, 599, 899, }, - [26] = { 30, 655, 983, }, - [27] = { 30, 716, 1074, }, - [28] = { 31, 782, 1174, }, - [29] = { 31, 854, 1282, }, - [30] = { 32, 933, 1399, }, - }, -} -gems["Blast Rain"] = { - fire = true, - dexterity = true, - active_skill = true, - attack = true, - area = true, - bow = true, - parts = { - { - name = "1 explosion", - }, - { - name = "4 explosions", - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - fire = true, - }, - skillTypes = { [1] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [33] = true, [48] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 - mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 - --"blast_rain_number_of_blasts" = 4 - --"blast_rain_arrow_delay_ms" = 80 - --"base_is_projectile" = ? - --"is_area_damage" = ? - skill("dpsMultiplier", 4, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 8, -60, }, - [2] = { 8, -59.6, }, - [3] = { 8, -59.2, }, - [4] = { 8, -58.8, }, - [5] = { 9, -58.4, }, - [6] = { 9, -58, }, - [7] = { 9, -57.6, }, - [8] = { 9, -57.2, }, - [9] = { 9, -56.8, }, - [10] = { 9, -56.4, }, - [11] = { 9, -56, }, - [12] = { 10, -55.6, }, - [13] = { 10, -55.2, }, - [14] = { 10, -54.8, }, - [15] = { 10, -54.4, }, - [16] = { 10, -54, }, - [17] = { 10, -53.6, }, - [18] = { 10, -53.2, }, - [19] = { 10, -52.8, }, - [20] = { 10, -52.4, }, - [21] = { 10, -52, }, - [22] = { 10, -51.6, }, - [23] = { 11, -51.2, }, - [24] = { 11, -50.8, }, - [25] = { 11, -50.4, }, - [26] = { 11, -50, }, - [27] = { 11, -49.6, }, - [28] = { 12, -49.2, }, - [29] = { 12, -48.8, }, - [30] = { 12, -48.4, }, - }, -} -gems["Blink Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - minion = true, - duration = true, - movement = true, - bow = true, - unsupported = true, -} -gems["Blood Rage"] = { - dexterity = true, - active_skill = true, - spell = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.25), - --"life_leech_from_physical_attack_damage_permyriad" = 120 - --"base_physical_damage_%_of_maximum_life_to_deal_per_minute" = 240 - --"base_physical_damage_%_of_maximum_energy_shield_to_deal_per_minute" = 240 - --"add_frenzy_charge_on_kill_%_chance" = 25 - }, - qualityMods = { - mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" = 0.25 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" - [3] = skill("duration", nil), --"base_skill_effect_duration" - --[4] = "skill_level" - }, - levels = { - [1] = { 17, 5, 7, 1, }, - [2] = { 17, 6, 7.2, 2, }, - [3] = { 17, 6, 7.4, 3, }, - [4] = { 18, 7, 7.6, 4, }, - [5] = { 18, 7, 7.8, 5, }, - [6] = { 18, 8, 8, 6, }, - [7] = { 18, 8, 8.2, 7, }, - [8] = { 19, 9, 8.4, 8, }, - [9] = { 19, 9, 8.6, 9, }, - [10] = { 19, 10, 8.8, 10, }, - [11] = { 20, 10, 9, 11, }, - [12] = { 20, 11, 9.2, 12, }, - [13] = { 20, 11, 9.4, 13, }, - [14] = { 20, 12, 9.6, 14, }, - [15] = { 20, 12, 9.8, 15, }, - [16] = { 21, 13, 10, 16, }, - [17] = { 21, 13, 10.2, 17, }, - [18] = { 21, 14, 10.4, 18, }, - [19] = { 21, 14, 10.6, 19, }, - [20] = { 21, 15, 10.8, 20, }, - [21] = { 22, 15, 11, 21, }, - [22] = { 22, 16, 11.2, 22, }, - [23] = { 22, 16, 11.4, 23, }, - [24] = { 22, 17, 11.6, 24, }, - [25] = { 22, 17, 11.8, 25, }, - [26] = { 23, 18, 12, 26, }, - [27] = { 23, 18, 12.2, 27, }, - [28] = { 23, 19, 12.4, 28, }, - [29] = { 23, 19, 12.6, 29, }, - [30] = { 23, 20, 12.8, 30, }, - }, -} -gems["Burning Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - fire = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - fire = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [33] = true, [53] = true, [55] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 - mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" - }, - levels = { - [1] = { 5, 50, 10, }, - [2] = { 5, 51.8, 11, }, - [3] = { 5, 53.6, 12, }, - [4] = { 5, 55.4, 13, }, - [5] = { 5, 57.2, 14, }, - [6] = { 6, 59, 15, }, - [7] = { 6, 60.8, 16, }, - [8] = { 6, 62.6, 17, }, - [9] = { 6, 64.4, 18, }, - [10] = { 6, 66.2, 19, }, - [11] = { 7, 68, 20, }, - [12] = { 7, 69.8, 21, }, - [13] = { 7, 71.6, 22, }, - [14] = { 7, 73.4, 23, }, - [15] = { 7, 75.2, 24, }, - [16] = { 8, 77, 25, }, - [17] = { 8, 78.8, 26, }, - [18] = { 8, 80.6, 27, }, - [19] = { 8, 82.4, 28, }, - [20] = { 8, 84.2, 29, }, - [21] = { 9, 86, 30, }, - [22] = { 9, 87.8, 31, }, - [23] = { 9, 89.6, 32, }, - [24] = { 9, 91.4, 33, }, - [25] = { 9, 93.2, 34, }, - [26] = { 10, 95, 35, }, - [27] = { 10, 96.8, 36, }, - [28] = { 10, 98.6, 37, }, - [29] = { 10, 100.4, 38, }, - [30] = { 10, 102.2, 39, }, - }, -} -gems["Vaal Burning Arrow"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - fire = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - fire = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [11] = true, [43] = true, [33] = true, [55] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 - mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 - --"vaal_burning_arrow_explode_on_hit" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" - }, - levels = { - [1] = { 60, 10, }, - [2] = { 62, 11, }, - [3] = { 64, 12, }, - [4] = { 66, 13, }, - [5] = { 68, 14, }, - [6] = { 70, 15, }, - [7] = { 72, 16, }, - [8] = { 74, 17, }, - [9] = { 76, 18, }, - [10] = { 78, 19, }, - [11] = { 80, 20, }, - [12] = { 82, 21, }, - [13] = { 84, 22, }, - [14] = { 86, 23, }, - [15] = { 88, 24, }, - [16] = { 90, 25, }, - [17] = { 92, 26, }, - [18] = { 94, 27, }, - [19] = { 96, 28, }, - [20] = { 98, 29, }, - [21] = { 100, 30, }, - [22] = { 102, 31, }, - [23] = { 104, 32, }, - [24] = { 106, 33, }, - [25] = { 108, 34, }, - [26] = { 110, 35, }, - [27] = { 112, 36, }, - [28] = { 114, 37, }, - [29] = { 116, 38, }, - [30] = { 118, 39, }, - }, -} -gems["Caustic Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - duration = true, - chaos = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - duration = true, - chaos = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [17] = true, [19] = true, [22] = true, [40] = true, [50] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"skill_can_fire_arrows" = ? - skill("dotIsArea", true), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - [4] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, nil), --"physical_damage_%_to_add_as_chaos" - --[5] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 8, 2.8, 5.2, 30, 0, }, - [2] = { 8, 2.9, 6.5166666666667, 31, 0, }, - [3] = { 8, 3, 8.8333333333333, 32, 0, }, - [4] = { 9, 3.1, 11.7, 33, 0, }, - [5] = { 9, 3.2, 16.516666666667, 34, 1, }, - [6] = { 9, 3.3, 22.75, 35, 1, }, - [7] = { 10, 3.4, 30.766666666667, 36, 1, }, - [8] = { 10, 3.5, 41.033333333333, 37, 1, }, - [9] = { 10, 3.6, 54.116666666667, 38, 1, }, - [10] = { 11, 3.7, 70.716666666667, 39, 2, }, - [11] = { 11, 3.9, 91.683333333333, 40, 2, }, - [12] = { 12, 4, 118.13333333333, 41, 2, }, - [13] = { 12, 4.1, 151.35, 42, 2, }, - [14] = { 13, 4.2, 192.96666666667, 43, 2, }, - [15] = { 13, 4.3, 230.91666666667, 44, 3, }, - [16] = { 14, 4.4, 275.7, 45, 3, }, - [17] = { 14, 4.5, 328.55, 46, 3, }, - [18] = { 15, 4.6, 390.81666666667, 47, 3, }, - [19] = { 15, 4.7, 464.13333333333, 48, 3, }, - [20] = { 16, 4.8, 550.33333333333, 49, 4, }, - [21] = { 16, 5, 616.05, 50, 4, }, - [22] = { 17, 5.1, 689.2, 51, 4, }, - [23] = { 17, 5.2, 770.58333333333, 52, 4, }, - [24] = { 18, 5.3, 861.11666666667, 53, 4, }, - [25] = { 18, 5.4, 961.78333333333, 54, 5, }, - [26] = { 19, 5.5, 1073.6833333333, 55, 5, }, - [27] = { 19, 5.6, 1198.05, 56, 5, }, - [28] = { 20, 5.7, 1336.2, 57, 5, }, - [29] = { 20, 5.8, 1489.6166666667, 58, 5, }, - [30] = { 21, 5.9, 1659.9833333333, 59, 6, }, - }, -} -gems["Cyclone"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - movement = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [38] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 12), - mod("Speed", "MORE", 50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 50 - mod("MovementSpeed", "MORE", -30), --"cyclone_movement_speed_+%_final" = -30 - --"base_skill_number_of_additional_hits" = 1 - --"cyclone_first_hit_damage_+%_final" = -50 - --"is_area_damage" = ? - skill("dpsMultiplier", 2), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -55, }, - [2] = { -54.4, }, - [3] = { -53.8, }, - [4] = { -53.2, }, - [5] = { -52.6, }, - [6] = { -52, }, - [7] = { -51.4, }, - [8] = { -50.8, }, - [9] = { -50.2, }, - [10] = { -49.6, }, - [11] = { -49, }, - [12] = { -48.4, }, - [13] = { -47.8, }, - [14] = { -47.2, }, - [15] = { -46.6, }, - [16] = { -46, }, - [17] = { -45.4, }, - [18] = { -44.8, }, - [19] = { -44.2, }, - [20] = { -43.6, }, - [21] = { -43, }, - [22] = { -42.4, }, - [23] = { -41.8, }, - [24] = { -41.2, }, - [25] = { -40.6, }, - [26] = { -40, }, - [27] = { -39.4, }, - [28] = { -38.8, }, - [29] = { -38.2, }, - [30] = { -37.6, }, - }, -} -gems["Vaal Cyclone"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - duration = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [12] = true, [43] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("Speed", "MORE", 100, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 100 - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"base_skill_number_of_additional_hits" = 1 - mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 - --"is_area_damage" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -50, }, - [2] = { -49.4, }, - [3] = { -48.8, }, - [4] = { -48.2, }, - [5] = { -47.6, }, - [6] = { -47, }, - [7] = { -46.4, }, - [8] = { -45.8, }, - [9] = { -45.2, }, - [10] = { -44.6, }, - [11] = { -44, }, - [12] = { -43.4, }, - [13] = { -42.8, }, - [14] = { -42.2, }, - [15] = { -41.6, }, - [16] = { -41, }, - [17] = { -40.4, }, - [18] = { -39.8, }, - [19] = { -39.2, }, - [20] = { -38.6, }, - [21] = { -38, }, - [22] = { -37.4, }, - [23] = { -36.8, }, - [24] = { -36.2, }, - [25] = { -35.6, }, - [26] = { -35, }, - [27] = { -34.4, }, - [28] = { -33.8, }, - [29] = { -33.2, }, - [30] = { -32.6, }, - }, -} -gems["Desecrate"] = { - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - chaos = true, - color = 2, - baseFlags = { - spell = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [40] = true, [26] = true, [50] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"desecrate_number_of_corpses_to_create" = 3 - --"is_area_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - --[3] = "desecrate_corpse_level" - }, - levels = { - [1] = { 8, 8.1666666666667, 20, }, - [2] = { 8, 11.316666666667, 24, }, - [3] = { 9, 15.383333333333, 26, }, - [4] = { 9, 20.633333333333, 29, }, - [5] = { 10, 25.533333333333, 32, }, - [6] = { 11, 31.416666666667, 35, }, - [7] = { 12, 38.466666666667, 38, }, - [8] = { 12, 46.916666666667, 41, }, - [9] = { 13, 57.016666666667, 44, }, - [10] = { 14, 69.05, 47, }, - [11] = { 15, 83.4, 50, }, - [12] = { 16, 100.46666666667, 53, }, - [13] = { 17, 120.73333333333, 56, }, - [14] = { 18, 144.76666666667, 59, }, - [15] = { 18, 163.23333333333, 63, }, - [16] = { 18, 183.88333333333, 67, }, - [17] = { 19, 207, 71, }, - [18] = { 19, 232.83333333333, 75, }, - [19] = { 20, 261.71666666667, 100, }, - [20] = { 20, 294, 100, }, - [21] = { 21, 330.05, 100, }, - [22] = { 22, 370.3, 100, }, - [23] = { 22, 415.21666666667, 100, }, - [24] = { 22, 465.33333333333, 100, }, - [25] = { 23, 521.21666666667, 100, }, - [26] = { 23, 583.53333333333, 100, }, - [27] = { 24, 652.98333333333, 100, }, - [28] = { 25, 730.38333333333, 100, }, - [29] = { 25, 816.58333333333, 100, }, - [30] = { 26, 912.58333333333, 100, }, - }, -} -gems["Detonate Dead"] = { - dexterity = true, - active_skill = true, - cast = true, - area = true, - fire = true, - color = 2, - baseFlags = { - cast = true, - area = true, - fire = true, - }, - skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("critChance", 5), - --"corpse_explosion_monster_life_%" = 6 - --"is_area_damage" = 1 - --"display_skill_deals_secondary_damage" = ? - --"damage_cannot_be_reflected" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" - }, - levels = { - [1] = { 7, 4, 5, }, - [2] = { 8, 5, 8, }, - [3] = { 9, 8, 11, }, - [4] = { 10, 9, 14, }, - [5] = { 11, 13, 19, }, - [6] = { 12, 17, 25, }, - [7] = { 14, 22, 33, }, - [8] = { 15, 28, 43, }, - [9] = { 17, 36, 54, }, - [10] = { 19, 46, 69, }, - [11] = { 21, 58, 87, }, - [12] = { 22, 72, 108, }, - [13] = { 23, 90, 135, }, - [14] = { 24, 111, 167, }, - [15] = { 25, 130, 195, }, - [16] = { 26, 152, 227, }, - [17] = { 27, 176, 265, }, - [18] = { 28, 205, 308, }, - [19] = { 29, 238, 357, }, - [20] = { 30, 276, 414, }, - [21] = { 31, 304, 456, }, - [22] = { 32, 335, 502, }, - [23] = { 33, 369, 553, }, - [24] = { 34, 406, 609, }, - [25] = { 34, 446, 669, }, - [26] = { 35, 491, 736, }, - [27] = { 36, 539, 809, }, - [28] = { 37, 592, 888, }, - [29] = { 38, 650, 975, }, - [30] = { 38, 713, 1070, }, - }, -} -gems["Vaal Detonate Dead"] = { - dexterity = true, - active_skill = true, - vaal = true, - cast = true, - area = true, - fire = true, - color = 2, - baseFlags = { - cast = true, - area = true, - fire = true, - }, - skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("critChance", 5), - --"corpse_explosion_monster_life_%" = 8 - --"is_area_damage" = 1 - --"display_skill_deals_secondary_damage" = ? - --"detonate_dead_chain_explode" = ? - --"damage_cannot_be_reflected" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" - }, - levels = { - [1] = { 3, 5, }, - [2] = { 5, 7, }, - [3] = { 7, 10, }, - [4] = { 8, 12, }, - [5] = { 11, 17, }, - [6] = { 15, 23, }, - [7] = { 20, 30, }, - [8] = { 26, 39, }, - [9] = { 33, 50, }, - [10] = { 42, 63, }, - [11] = { 53, 79, }, - [12] = { 66, 99, }, - [13] = { 82, 122, }, - [14] = { 101, 151, }, - [15] = { 118, 177, }, - [16] = { 138, 207, }, - [17] = { 160, 241, }, - [18] = { 186, 280, }, - [19] = { 216, 325, }, - [20] = { 251, 376, }, - [21] = { 276, 415, }, - [22] = { 304, 457, }, - [23] = { 335, 503, }, - [24] = { 369, 553, }, - [25] = { 406, 609, }, - [26] = { 446, 669, }, - [27] = { 490, 735, }, - [28] = { 538, 807, }, - [29] = { 591, 886, }, - [30] = { 649, 973, }, - }, -} -gems["Double Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - --"base_skill_number_of_additional_hits" = 1 - skill("dpsMultiplier", 2), - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -30, }, - [2] = { -28.6, }, - [3] = { -27.2, }, - [4] = { -25.8, }, - [5] = { -24.4, }, - [6] = { -23, }, - [7] = { -21.6, }, - [8] = { -20.2, }, - [9] = { -18.8, }, - [10] = { -17.4, }, - [11] = { -16, }, - [12] = { -14.6, }, - [13] = { -13.2, }, - [14] = { -11.8, }, - [15] = { -10.4, }, - [16] = { -9, }, - [17] = { -7.6, }, - [18] = { -6.2, }, - [19] = { -4.8, }, - [20] = { -3.4, }, - [21] = { -2, }, - [22] = { -0.6, }, - [23] = { 0.8, }, - [24] = { 2.2, }, - [25] = { 3.6, }, - [26] = { 5, }, - [27] = { 6.4, }, - [28] = { 7.8, }, - [29] = { 9.2, }, - [30] = { 10.6, }, - }, -} -gems["Vaal Double Strike"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - melee = true, - duration = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - duration = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_skill_number_of_additional_hits" = 1 - --"number_of_monsters_to_summon" = 1 - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { -30, 3.6, }, - [2] = { -29.2, 3.7, }, - [3] = { -28.4, 3.8, }, - [4] = { -27.6, 3.9, }, - [5] = { -26.8, 4, }, - [6] = { -26, 4.1, }, - [7] = { -25.2, 4.2, }, - [8] = { -24.4, 4.3, }, - [9] = { -23.6, 4.4, }, - [10] = { -22.8, 4.5, }, - [11] = { -22, 4.6, }, - [12] = { -21.2, 4.7, }, - [13] = { -20.4, 4.8, }, - [14] = { -19.6, 4.9, }, - [15] = { -18.8, 5, }, - [16] = { -18, 5.1, }, - [17] = { -17.2, 5.2, }, - [18] = { -16.4, 5.3, }, - [19] = { -15.6, 5.4, }, - [20] = { -14.8, 5.5, }, - [21] = { -14, 5.6, }, - [22] = { -13.2, 5.7, }, - [23] = { -12.4, 5.8, }, - [24] = { -11.6, 5.9, }, - [25] = { -10.8, 6, }, - [26] = { -10, 6.1, }, - [27] = { -9.2, 6.2, }, - [28] = { -8.4, 6.3, }, - [29] = { -7.6, 6.4, }, - [30] = { -6.8, 6.5, }, - }, -} -gems["Dual Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [4] = true, [25] = true, [28] = true, [24] = true, [53] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Axe"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -15, }, - [2] = { -14, }, - [3] = { -13, }, - [4] = { -12, }, - [5] = { -11, }, - [6] = { -10, }, - [7] = { -9, }, - [8] = { -8, }, - [9] = { -7, }, - [10] = { -6, }, - [11] = { -5, }, - [12] = { -4, }, - [13] = { -3, }, - [14] = { -2, }, - [15] = { -1, }, - [16] = { nil, }, - [17] = { 1, }, - [18] = { 2, }, - [19] = { 3, }, - [20] = { 4, }, - [21] = { 5, }, - [22] = { 6, }, - [23] = { 7, }, - [24] = { 8, }, - [25] = { 9, }, - [26] = { 10, }, - [27] = { 11, }, - [28] = { 12, }, - [29] = { 13, }, - [30] = { 14, }, - }, -} -gems["Elemental Hit"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - fire = true, - cold = true, - lightning = true, - bow = true, - parts = { - { - name = "Added fire", - }, - { - name = "Added cold", - }, - { - name = "Added lightning", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - cold = true, - fire = true, - lightning = true, - }, - skillTypes = { [1] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, [33] = true, [34] = true, [35] = true, [48] = true, }, - baseMods = { - skill("castTime", 1), - --"chance_to_freeze_shock_ignite_%" = 10 - --"skill_can_fire_arrows" = ? - --"skill_can_fire_wand_projectiles" = ? - mod("EnemyFreezeChance", "BASE", 10), - mod("EnemyShockChance", "BASE", 10), - mod("EnemyIgniteChance", "BASE", 10), - }, - qualityMods = { - mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_minimum_base_fire_damage_for_elemental_hit" - [3] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_maximum_base_fire_damage_for_elemental_hit" - [4] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_minimum_base_cold_damage_for_elemental_hit" - [5] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_maximum_base_cold_damage_for_elemental_hit" - [6] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_minimum_base_lightning_damage_for_elemental_hit" - [7] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_maximum_base_lightning_damage_for_elemental_hit" - }, - levels = { - [1] = { 6, 4, 8, 3, 6, 1, 13, }, - [2] = { 6, 5, 9, 4, 7, 1, 14, }, - [3] = { 6, 6, 11, 5, 9, 1, 17, }, - [4] = { 7, 7, 14, 6, 11, 1, 23, }, - [5] = { 7, 10, 19, 8, 16, 2, 31, }, - [6] = { 7, 14, 27, 12, 22, 2, 44, }, - [7] = { 8, 18, 34, 15, 28, 3, 56, }, - [8] = { 8, 23, 43, 19, 35, 4, 70, }, - [9] = { 8, 28, 53, 23, 43, 5, 87, }, - [10] = { 9, 35, 64, 28, 53, 6, 106, }, - [11] = { 9, 42, 78, 34, 64, 7, 128, }, - [12] = { 9, 50, 93, 41, 76, 8, 153, }, - [13] = { 10, 60, 111, 49, 91, 10, 183, }, - [14] = { 10, 71, 132, 58, 108, 11, 217, }, - [15] = { 10, 84, 156, 69, 127, 13, 256, }, - [16] = { 11, 99, 183, 81, 150, 16, 301, }, - [17] = { 11, 115, 214, 94, 175, 19, 352, }, - [18] = { 11, 135, 250, 110, 205, 22, 411, }, - [19] = { 11, 151, 280, 123, 229, 24, 461, }, - [20] = { 12, 169, 314, 138, 257, 27, 516, }, - [21] = { 12, 182, 338, 149, 276, 29, 555, }, - [22] = { 12, 196, 364, 160, 297, 31, 598, }, - [23] = { 12, 211, 391, 172, 320, 34, 643, }, - [24] = { 13, 226, 420, 185, 344, 36, 691, }, - [25] = { 13, 243, 452, 199, 370, 39, 743, }, - [26] = { 13, 261, 485, 214, 397, 42, 798, }, - [27] = { 13, 281, 521, 230, 426, 45, 857, }, - [28] = { 14, 301, 559, 246, 457, 48, 919, }, - [29] = { 14, 323, 600, 264, 491, 52, 986, }, - [30] = { 14, 346, 643, 283, 526, 56, 1057, }, - }, -} -gems["Ethereal Knives"] = { - projectile = true, - dexterity = true, - active_skill = true, - spell = true, - color = 2, - baseFlags = { - spell = true, - projectile = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.6), - skill("critChance", 6), - mod("ProjectileCount", "BASE", 9), --"number_of_additional_projectiles" = 9 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - [4] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" - }, - levels = { - [1] = { 5, 4, 6, 0, }, - [2] = { 6, 5, 7, 1, }, - [3] = { 7, 6, 9, 2, }, - [4] = { 8, 8, 12, 3, }, - [5] = { 9, 12, 18, 4, }, - [6] = { 10, 18, 27, 5, }, - [7] = { 11, 24, 37, 6, }, - [8] = { 12, 32, 49, 7, }, - [9] = { 13, 42, 64, 8, }, - [10] = { 14, 55, 82, 9, }, - [11] = { 16, 70, 105, 10, }, - [12] = { 17, 89, 134, 11, }, - [13] = { 18, 112, 169, 12, }, - [14] = { 18, 141, 212, 13, }, - [15] = { 19, 176, 265, 14, }, - [16] = { 20, 219, 329, 15, }, - [17] = { 21, 272, 408, 16, }, - [18] = { 22, 336, 504, 17, }, - [19] = { 22, 393, 590, 18, }, - [20] = { 23, 459, 688, 19, }, - [21] = { 24, 509, 763, 20, }, - [22] = { 24, 563, 845, 21, }, - [23] = { 25, 623, 935, 22, }, - [24] = { 25, 690, 1034, 23, }, - [25] = { 26, 762, 1144, 24, }, - [26] = { 26, 842, 1264, 25, }, - [27] = { 27, 931, 1396, 26, }, - [28] = { 27, 1027, 1541, 27, }, - [29] = { 28, 1134, 1701, 28, }, - [30] = { 29, 1251, 1876, 29, }, - }, -} -gems["Explosive Arrow"] = { - fire = true, - dexterity = true, - active_skill = true, - attack = true, - area = true, - duration = true, - bow = true, - parts = { - { - name = "Explosion", - attack = false, - cast = true, - }, - { - name = "Arrow", - attack = true, - cast = false, - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [33] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("critChance", 6), - skill("duration", 1), --"base_skill_effect_duration" = 1000 - --"fuse_arrow_explosion_radius_+_per_fuse_arrow_orb" = 2 - --"active_skill_attack_damage_+%_final" = 0 - --"skill_can_fire_arrows" = 1 - --"base_is_projectile" = 1 - skill("showAverage", true, { type = "SkillPart", skillPart = 1 }), - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"minimum_fire_damage_per_fuse_arrow_orb" - [3] = skill("FireMax", nil), --"maximum_fire_damage_per_fuse_arrow_orb" - }, - levels = { - [1] = { 18, 44, 66, }, - [2] = { 19, 54, 81, }, - [3] = { 20, 66, 99, }, - [4] = { 21, 80, 121, }, - [5] = { 21, 98, 146, }, - [6] = { 22, 111, 166, }, - [7] = { 22, 126, 189, }, - [8] = { 23, 142, 214, }, - [9] = { 23, 161, 242, }, - [10] = { 24, 182, 273, }, - [11] = { 24, 205, 308, }, - [12] = { 24, 232, 347, }, - [13] = { 26, 261, 391, }, - [14] = { 26, 293, 440, }, - [15] = { 26, 330, 495, }, - [16] = { 26, 371, 556, }, - [17] = { 26, 416, 624, }, - [18] = { 27, 467, 700, }, - [19] = { 27, 523, 785, }, - [20] = { 27, 586, 879, }, - [21] = { 28, 656, 984, }, - [22] = { 28, 734, 1100, }, - [23] = { 29, 820, 1230, }, - [24] = { 29, 917, 1375, }, - [25] = { 30, 1024, 1536, }, - [26] = { 30, 1143, 1714, }, - [27] = { 30, 1275, 1913, }, - [28] = { 30, 1422, 2134, }, - [29] = { 31, 1586, 2379, }, - [30] = { 31, 1767, 2651, }, - }, -} -gems["Fire Trap"] = { - trap = true, - dexterity = true, - active_skill = true, - spell = true, - duration = true, - area = true, - fire = true, - color = 2, - baseFlags = { - spell = true, - trap = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [29] = true, [37] = true, [40] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - skill("critChance", 6), - --"is_trap" = 1 - --"base_trap_duration" = 16000 - skill("duration", 8), --"base_skill_effect_duration" = 8000 - --"is_area_damage" = ? - --"base_skill_is_trapped" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("trapCooldown", 3), - }, - qualityMods = { - mod("FireDamage", "INC", 1.5, ModFlag.Dot), --"burn_damage_+%" = 1.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - --[5] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 7, 2, 4, 3.6166666666667, 0, }, - [2] = { 8, 3, 5, 4.1, 0, }, - [3] = { 9, 4, 6, 5.2, 1, }, - [4] = { 10, 6, 8, 7.1833333333333, 1, }, - [5] = { 11, 8, 12, 10.6, 1, }, - [6] = { 12, 13, 19, 16.416666666667, 2, }, - [7] = { 13, 18, 27, 22.566666666667, 2, }, - [8] = { 14, 25, 37, 30.466666666667, 2, }, - [9] = { 14, 34, 50, 40.533333333333, 3, }, - [10] = { 16, 45, 67, 53.333333333333, 3, }, - [11] = { 17, 59, 89, 69.5, 3, }, - [12] = { 18, 78, 117, 89.866666666667, 4, }, - [13] = { 19, 101, 152, 115.41666666667, 4, }, - [14] = { 20, 132, 197, 147.36666666667, 4, }, - [15] = { 21, 170, 255, 187.21666666667, 5, }, - [16] = { 22, 219, 328, 236.78333333333, 5, }, - [17] = { 22, 280, 420, 298.28333333333, 5, }, - [18] = { 23, 358, 536, 374.41666666667, 6, }, - [19] = { 24, 429, 643, 441.11666666667, 6, }, - [20] = { 24, 513, 770, 518.76666666667, 6, }, - [21] = { 25, 578, 867, 573.95, 7, }, - [22] = { 26, 651, 976, 634.4, 7, }, - [23] = { 26, 732, 1098, 700.6, 7, }, - [24] = { 27, 823, 1235, 772.98333333333, 8, }, - [25] = { 27, 925, 1388, 852.1, 8, }, - [26] = { 28, 1040, 1559, 938.5, 8, }, - [27] = { 29, 1167, 1751, 1032.75, 9, }, - [28] = { 30, 1310, 1965, 1135.4666666667, 9, }, - [29] = { 30, 1470, 2205, 1247.3166666667, 9, }, - [30] = { 30, 1648, 2472, 1368.9833333333, 10, }, - }, -} -gems["Flicker Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - movement = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [24] = true, [25] = true, [28] = true, [38] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - mod("Speed", "MORE", 20, ModFlag.Attack), --"flicker_strike_more_attack_speed_+%_final" = 20 - mod("Speed", "INC", 10, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 10 - --"ignores_proximity_shield" = ? - nil, --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, }, - [2] = { 31.6, }, - [3] = { 33.2, }, - [4] = { 34.8, }, - [5] = { 36.4, }, - [6] = { 38, }, - [7] = { 39.6, }, - [8] = { 41.2, }, - [9] = { 42.8, }, - [10] = { 44.4, }, - [11] = { 46, }, - [12] = { 47.6, }, - [13] = { 49.2, }, - [14] = { 50.8, }, - [15] = { 52.4, }, - [16] = { 54, }, - [17] = { 55.6, }, - [18] = { 57.2, }, - [19] = { 58.8, }, - [20] = { 60.4, }, - [21] = { 62, }, - [22] = { 63.6, }, - [23] = { 65.2, }, - [24] = { 66.8, }, - [25] = { 68.4, }, - [26] = { 70, }, - [27] = { 71.6, }, - [28] = { 73.2, }, - [29] = { 74.8, }, - [30] = { 76.4, }, - }, -} -gems["Freeze Mine"] = { - mine = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - mine = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [41] = true, [34] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.5), - --"freeze_mine_cold_resistance_+_while_frozen" = -15 - --"base_mine_duration" = 16000 - --"base_skill_is_mined" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_remote_mine" = ? - --"always_freeze" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - --[4] = "freeze_as_though_dealt_damage_+%" - }, - levels = { - [1] = { 6, 7, 10, 200, }, - [2] = { 8, 9, 13, 210, }, - [3] = { 10, 12, 17, 220, }, - [4] = { 10, 15, 23, 230, }, - [5] = { 11, 19, 29, 240, }, - [6] = { 12, 24, 37, 250, }, - [7] = { 13, 30, 46, 260, }, - [8] = { 14, 36, 54, 270, }, - [9] = { 14, 42, 63, 280, }, - [10] = { 16, 49, 73, 290, }, - [11] = { 18, 57, 85, 300, }, - [12] = { 18, 66, 99, 310, }, - [13] = { 19, 76, 114, 320, }, - [14] = { 20, 88, 131, 330, }, - [15] = { 21, 101, 151, 340, }, - [16] = { 21, 116, 173, 350, }, - [17] = { 21, 132, 199, 360, }, - [18] = { 21, 151, 227, 370, }, - [19] = { 22, 165, 248, 380, }, - [20] = { 22, 181, 271, 390, }, - [21] = { 22, 197, 296, 400, }, - [22] = { 22, 215, 322, 410, }, - [23] = { 23, 234, 351, 420, }, - [24] = { 23, 255, 383, 430, }, - [25] = { 24, 278, 417, 440, }, - [26] = { 24, 302, 454, 450, }, - [27] = { 24, 329, 493, 460, }, - [28] = { 24, 358, 536, 470, }, - [29] = { 25, 389, 583, 480, }, - [30] = { 25, 422, 633, 490, }, - }, -} -gems["Frenzy"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - mod("PhysicalDamage", "INC", 5, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"physical_damage_+%_per_frenzy_charge" = 5 - mod("Speed", "INC", 5, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 5 - --"skill_can_fire_arrows" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 10, }, - [2] = { 11.4, }, - [3] = { 12.8, }, - [4] = { 14.2, }, - [5] = { 15.6, }, - [6] = { 17, }, - [7] = { 18.4, }, - [8] = { 19.8, }, - [9] = { 21.2, }, - [10] = { 22.6, }, - [11] = { 24, }, - [12] = { 25.4, }, - [13] = { 26.8, }, - [14] = { 28.2, }, - [15] = { 29.6, }, - [16] = { 31, }, - [17] = { 32.4, }, - [18] = { 33.8, }, - [19] = { 35.2, }, - [20] = { 36.6, }, - [21] = { 38, }, - [22] = { 39.4, }, - [23] = { 40.8, }, - [24] = { 42.2, }, - [25] = { 43.6, }, - [26] = { 45, }, - [27] = { 46.4, }, - [28] = { 47.8, }, - [29] = { 49.2, }, - [30] = { 50.6, }, - }, -} -gems["Frost Blades"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - cold = true, - parts = { - { - name = "Melee hit", - melee = true, - projectile = false, - }, - { - name = "Icy blades", - melee = false, - projectile = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - cold = true, - }, - skillTypes = { [1] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [48] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("PhysicalDamageConvertToCold", "BASE", 60, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 60 - --"total_projectile_spread_angle_override" = 110 - --"show_number_of_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 - }, - levelMods = { - [1] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - --[2] = "melee_weapon_range_+" - [3] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" - [4] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 4, 18, 0, nil, }, - [2] = { 4, 18, 1, 2.2, }, - [3] = { 4, 18, 2, 4.4, }, - [4] = { 4, 18, 3, 6.6, }, - [5] = { 4, 18, 4, 8.8, }, - [6] = { 5, 19, 5, 11, }, - [7] = { 5, 19, 6, 13.2, }, - [8] = { 5, 19, 7, 15.4, }, - [9] = { 5, 19, 8, 17.6, }, - [10] = { 5, 19, 9, 19.8, }, - [11] = { 6, 20, 10, 22, }, - [12] = { 6, 20, 11, 24.2, }, - [13] = { 6, 20, 12, 26.4, }, - [14] = { 6, 20, 13, 28.6, }, - [15] = { 6, 20, 14, 30.8, }, - [16] = { 7, 21, 15, 33, }, - [17] = { 7, 21, 16, 35.2, }, - [18] = { 7, 21, 17, 37.4, }, - [19] = { 7, 21, 18, 39.6, }, - [20] = { 7, 21, 19, 41.8, }, - [21] = { 8, 22, 20, 44, }, - [22] = { 8, 22, 21, 46.2, }, - [23] = { 8, 22, 22, 48.4, }, - [24] = { 8, 22, 23, 50.6, }, - [25] = { 8, 22, 24, 52.8, }, - [26] = { 9, 23, 25, 55, }, - [27] = { 9, 23, 26, 57.2, }, - [28] = { 9, 23, 27, 59.4, }, - [29] = { 9, 23, 28, 61.6, }, - [30] = { 9, 23, 29, 63.8, }, - }, -} -gems["Grace"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Evasion", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_evasion_rating" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 227, 0, }, - [2] = { 271, 3, }, - [3] = { 322, 6, }, - [4] = { 379, 9, }, - [5] = { 444, 12, }, - [6] = { 528, 15, }, - [7] = { 621, 18, }, - [8] = { 722, 21, }, - [9] = { 845, 23, }, - [10] = { 940, 25, }, - [11] = { 1043, 27, }, - [12] = { 1155, 29, }, - [13] = { 1283, 31, }, - [14] = { 1413, 33, }, - [15] = { 1567, 35, }, - [16] = { 1732, 36, }, - [17] = { 1914, 37, }, - [18] = { 2115, 38, }, - [19] = { 2335, 39, }, - [20] = { 2575, 40, }, - [21] = { 2700, 41, }, - [22] = { 2835, 42, }, - [23] = { 2979, 43, }, - [24] = { 3124, 44, }, - [25] = { 3279, 45, }, - [26] = { 3444, 46, }, - [27] = { 3611, 47, }, - [28] = { 3795, 48, }, - [29] = { 3982, 49, }, - [30] = { 4179, 50, }, - }, -} -gems["Vaal Grace"] = { - aura = true, - dexterity = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - skill("duration", 6), --"base_skill_effect_duration" = 6000 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("AttackDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_%" - [2] = mod("SpellDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_spells_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 24, 24, 0, }, - [2] = { 25, 25, 3, }, - [3] = { 25, 25, 6, }, - [4] = { 26, 26, 9, }, - [5] = { 26, 26, 12, }, - [6] = { 27, 27, 15, }, - [7] = { 27, 27, 18, }, - [8] = { 28, 28, 21, }, - [9] = { 28, 28, 23, }, - [10] = { 29, 29, 25, }, - [11] = { 29, 29, 27, }, - [12] = { 30, 30, 29, }, - [13] = { 30, 30, 31, }, - [14] = { 31, 31, 33, }, - [15] = { 31, 31, 35, }, - [16] = { 32, 32, 36, }, - [17] = { 32, 32, 37, }, - [18] = { 33, 33, 38, }, - [19] = { 33, 33, 39, }, - [20] = { 34, 34, 40, }, - [21] = { 34, 34, 41, }, - [22] = { 35, 35, 42, }, - [23] = { 35, 35, 43, }, - [24] = { 36, 36, 44, }, - [25] = { 36, 36, 45, }, - [26] = { 37, 37, 46, }, - [27] = { 37, 37, 47, }, - [28] = { 38, 38, 48, }, - [29] = { 38, 38, 49, }, - [30] = { 39, 39, 50, }, - }, -} -gems["Haste"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" - [2] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" - [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 9, 9, 4, 0, }, - [2] = { 10, 9, 4, 3, }, - [3] = { 10, 10, 4, 6, }, - [4] = { 10, 10, 5, 9, }, - [5] = { 11, 10, 5, 12, }, - [6] = { 11, 11, 5, 15, }, - [7] = { 11, 11, 6, 18, }, - [8] = { 12, 11, 6, 21, }, - [9] = { 12, 12, 6, 23, }, - [10] = { 12, 12, 7, 25, }, - [11] = { 13, 12, 7, 27, }, - [12] = { 13, 13, 7, 29, }, - [13] = { 13, 13, 8, 31, }, - [14] = { 14, 13, 8, 33, }, - [15] = { 14, 14, 8, 35, }, - [16] = { 15, 14, 8, 36, }, - [17] = { 15, 15, 8, 37, }, - [18] = { 16, 15, 8, 38, }, - [19] = { 16, 16, 8, 39, }, - [20] = { 16, 16, 9, 40, }, - [21] = { 17, 16, 9, 41, }, - [22] = { 17, 17, 9, 42, }, - [23] = { 17, 17, 10, 43, }, - [24] = { 18, 17, 10, 44, }, - [25] = { 18, 18, 10, 45, }, - [26] = { 18, 18, 11, 46, }, - [27] = { 19, 18, 11, 47, }, - [28] = { 19, 19, 11, 48, }, - [29] = { 19, 19, 12, 49, }, - [30] = { 20, 19, 12, 50, }, - }, -} -gems["Vaal Haste"] = { - aura = true, - dexterity = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - skill("duration", 4), --"base_skill_effect_duration" = 4000 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" - [2] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" - [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 25, 24, 10, 0, }, - [2] = { 25, 25, 10, 3, }, - [3] = { 25, 25, 10, 6, }, - [4] = { 26, 25, 10, 9, }, - [5] = { 26, 26, 10, 12, }, - [6] = { 26, 26, 11, 15, }, - [7] = { 27, 26, 11, 18, }, - [8] = { 27, 27, 11, 21, }, - [9] = { 27, 27, 11, 23, }, - [10] = { 28, 27, 11, 25, }, - [11] = { 28, 28, 12, 27, }, - [12] = { 28, 28, 12, 29, }, - [13] = { 29, 28, 12, 31, }, - [14] = { 29, 29, 12, 33, }, - [15] = { 29, 29, 12, 35, }, - [16] = { 30, 29, 13, 36, }, - [17] = { 30, 30, 13, 37, }, - [18] = { 30, 30, 13, 38, }, - [19] = { 31, 30, 13, 39, }, - [20] = { 31, 31, 13, 40, }, - [21] = { 31, 31, 14, 41, }, - [22] = { 32, 31, 14, 42, }, - [23] = { 32, 32, 14, 43, }, - [24] = { 32, 32, 14, 44, }, - [25] = { 33, 32, 14, 45, }, - [26] = { 33, 33, 15, 46, }, - [27] = { 33, 33, 15, 47, }, - [28] = { 34, 33, 15, 48, }, - [29] = { 34, 34, 15, 49, }, - [30] = { 34, 34, 15, 50, }, - }, -} -gems["Hatred"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("PhysicalDamageGainAsCold", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"physical_damage_%_to_add_as_cold" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 26, 0, }, - [2] = { 26, 3, }, - [3] = { 27, 6, }, - [4] = { 27, 9, }, - [5] = { 28, 12, }, - [6] = { 28, 15, }, - [7] = { 29, 18, }, - [8] = { 29, 21, }, - [9] = { 30, 23, }, - [10] = { 30, 25, }, - [11] = { 31, 27, }, - [12] = { 31, 29, }, - [13] = { 32, 31, }, - [14] = { 32, 33, }, - [15] = { 33, 35, }, - [16] = { 34, 36, }, - [17] = { 34, 37, }, - [18] = { 35, 38, }, - [19] = { 35, 39, }, - [20] = { 36, 40, }, - [21] = { 36, 41, }, - [22] = { 37, 42, }, - [23] = { 37, 43, }, - [24] = { 38, 44, }, - [25] = { 38, 45, }, - [26] = { 39, 46, }, - [27] = { 39, 47, }, - [28] = { 40, 48, }, - [29] = { 40, 49, }, - [30] = { 41, 50, }, - }, -} -gems["Herald of Ice"] = { - dexterity = true, - active_skill = true, - cast = true, - area = true, - cold = true, - color = 2, - baseFlags = { - cast = true, - area = true, - cold = true, - }, - skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [34] = true, [27] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 25), - skill("damageEffectiveness", 0.8), - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"display_skill_deals_secondary_damage" = ? - --"damage_cannot_be_reflected" = ? - --"skill_can_add_multiple_charges_per_action" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ice_cold_damage_+%" = 0.75 - }, - levelMods = { - [1] = mod("ColdMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_cold_damage" - [2] = mod("ColdMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_cold_damage" - [3] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_cold_damage" - [4] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_cold_damage" - [5] = skill("ColdMin", nil), --"secondary_minimum_base_cold_damage" - [6] = skill("ColdMax", nil), --"secondary_maximum_base_cold_damage" - }, - levels = { - [1] = { 4, 5, 4, 5, 18, 26, }, - [2] = { 5, 7, 5, 7, 23, 35, }, - [3] = { 6, 8, 6, 8, 30, 45, }, - [4] = { 7, 10, 7, 10, 38, 57, }, - [5] = { 8, 12, 8, 12, 45, 67, }, - [6] = { 9, 14, 9, 14, 53, 80, }, - [7] = { 10, 16, 10, 16, 62, 94, }, - [8] = { 12, 18, 12, 18, 73, 110, }, - [9] = { 13, 20, 13, 20, 85, 128, }, - [10] = { 15, 23, 15, 23, 99, 149, }, - [11] = { 17, 26, 17, 26, 115, 173, }, - [12] = { 19, 29, 19, 29, 134, 200, }, - [13] = { 22, 33, 22, 33, 154, 232, }, - [14] = { 24, 37, 24, 37, 178, 267, }, - [15] = { 26, 39, 26, 39, 195, 293, }, - [16] = { 28, 42, 28, 42, 214, 321, }, - [17] = { 30, 46, 30, 46, 235, 352, }, - [18] = { 33, 49, 33, 49, 257, 386, }, - [19] = { 35, 53, 35, 53, 282, 422, }, - [20] = { 38, 56, 38, 56, 308, 462, }, - [21] = { 40, 61, 40, 61, 337, 505, }, - [22] = { 43, 65, 43, 65, 368, 552, }, - [23] = { 46, 70, 46, 70, 402, 603, }, - [24] = { 50, 75, 50, 75, 438, 658, }, - [25] = { 53, 80, 53, 80, 478, 717, }, - [26] = { 57, 85, 57, 85, 521, 782, }, - [27] = { 61, 91, 61, 91, 568, 852, }, - [28] = { 65, 98, 65, 98, 619, 928, }, - [29] = { 69, 104, 69, 104, 674, 1010, }, - [30] = { 74, 111, 74, 111, 733, 1100, }, - }, -} -gems["Ice Shot"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - duration = true, - cold = true, - bow = true, - parts = { - { - name = "Arrow", - area = false, - }, - { - name = "Cone", - area = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [34] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToCold", "BASE", 60), --"skill_physical_damage_%_to_convert_to_cold" = 60 - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"skill_can_fire_arrows" = ? - mod("SkillPhysicalDamageConvertToCold", "BASE", 40, 0, 0, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 6, 20, }, - [2] = { 6, 21.4, }, - [3] = { 6, 22.8, }, - [4] = { 7, 24.2, }, - [5] = { 7, 25.6, }, - [6] = { 7, 27, }, - [7] = { 7, 28.4, }, - [8] = { 8, 29.8, }, - [9] = { 8, 31.2, }, - [10] = { 8, 32.6, }, - [11] = { 8, 34, }, - [12] = { 8, 35.4, }, - [13] = { 9, 36.8, }, - [14] = { 9, 38.2, }, - [15] = { 9, 39.6, }, - [16] = { 9, 41, }, - [17] = { 9, 42.4, }, - [18] = { 10, 43.8, }, - [19] = { 10, 45.2, }, - [20] = { 10, 46.6, }, - [21] = { 10, 48, }, - [22] = { 10, 49.4, }, - [23] = { 11, 50.8, }, - [24] = { 11, 52.2, }, - [25] = { 11, 53.6, }, - [26] = { 11, 55, }, - [27] = { 11, 56.4, }, - [28] = { 12, 57.8, }, - [29] = { 12, 59.2, }, - [30] = { 12, 60.6, }, - }, -} -gems["Ice Trap"] = { - trap = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - cold = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - trap = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [19] = true, [11] = true, [37] = true, [34] = true, [12] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 1.1), - skill("critChance", 5), - --"base_trap_duration" = 16000 - --"is_area_damage" = ? - --"base_skill_is_trapped" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_trap" = ? - skill("trapCooldown", 2), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 13, 60, 90, }, - [2] = { 14, 72, 108, }, - [3] = { 15, 85, 128, }, - [4] = { 15, 101, 151, }, - [5] = { 16, 119, 178, }, - [6] = { 17, 132, 198, }, - [7] = { 17, 147, 220, }, - [8] = { 18, 163, 244, }, - [9] = { 19, 180, 270, }, - [10] = { 19, 199, 299, }, - [11] = { 20, 220, 330, }, - [12] = { 20, 243, 364, }, - [13] = { 21, 268, 402, }, - [14] = { 21, 295, 442, }, - [15] = { 22, 325, 487, }, - [16] = { 23, 357, 536, }, - [17] = { 23, 392, 589, }, - [18] = { 24, 431, 646, }, - [19] = { 24, 473, 709, }, - [20] = { 25, 519, 778, }, - [21] = { 26, 568, 853, }, - [22] = { 26, 623, 934, }, - [23] = { 27, 681, 1022, }, - [24] = { 27, 746, 1118, }, - [25] = { 28, 815, 1223, }, - [26] = { 28, 891, 1337, }, - [27] = { 29, 973, 1460, }, - [28] = { 30, 1063, 1595, }, - [29] = { 30, 1160, 1740, }, - [30] = { 31, 1266, 1899, }, - }, -} -gems["Lacerate"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - melee = true, - parts = { - { - name = "One slash", - }, - { - name = "Both slashes", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["Two Handed Axe"] = true, - ["Two Handed Sword"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - mod("Speed", "MORE", -25, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -25 - --"is_area_damage" = ? - skill("dpsMultiplier", 2, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { -5, 0, }, - [2] = { -3.8, 0, }, - [3] = { -2.6, 0, }, - [4] = { -1.4, 1, }, - [5] = { -0.2, 1, }, - [6] = { 1, 1, }, - [7] = { 2.2, 1, }, - [8] = { 3.4, 2, }, - [9] = { 4.6, 2, }, - [10] = { 5.8, 2, }, - [11] = { 7, 2, }, - [12] = { 8.2, 3, }, - [13] = { 9.4, 3, }, - [14] = { 10.6, 3, }, - [15] = { 11.8, 3, }, - [16] = { 13, 4, }, - [17] = { 14.2, 4, }, - [18] = { 15.4, 4, }, - [19] = { 16.6, 4, }, - [20] = { 17.8, 5, }, - [21] = { 19, 5, }, - [22] = { 20.2, 5, }, - [23] = { 21.4, 5, }, - [24] = { 22.6, 6, }, - [25] = { 23.8, 6, }, - [26] = { 25, 6, }, - [27] = { 26.2, 6, }, - [28] = { 27.4, 7, }, - [29] = { 28.6, 7, }, - [30] = { 29.8, 7, }, - }, -} -gems["Lightning Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - lightning = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - lightning = true, - }, - skillTypes = { [1] = true, [48] = true, [11] = true, [3] = true, [22] = true, [17] = true, [19] = true, [35] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 - --"lightning_arrow_maximum_number_of_extra_targets" = 3 - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 7, nil, }, - [2] = { 7, 1, }, - [3] = { 7, 2, }, - [4] = { 8, 3, }, - [5] = { 8, 4, }, - [6] = { 8, 5, }, - [7] = { 8, 6, }, - [8] = { 8, 7, }, - [9] = { 9, 8, }, - [10] = { 9, 9, }, - [11] = { 9, 10, }, - [12] = { 9, 11, }, - [13] = { 9, 12, }, - [14] = { 10, 13, }, - [15] = { 10, 14, }, - [16] = { 10, 15, }, - [17] = { 10, 16, }, - [18] = { 10, 17, }, - [19] = { 11, 18, }, - [20] = { 11, 19, }, - [21] = { 11, 20, }, - [22] = { 11, 21, }, - [23] = { 11, 22, }, - [24] = { 11, 23, }, - [25] = { 11, 24, }, - [26] = { 12, 25, }, - [27] = { 12, 26, }, - [28] = { 12, 27, }, - [29] = { 12, 28, }, - [30] = { 12, 29, }, - }, -} -gems["Lightning Strike"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - lightning = true, - parts = { - { - name = "Melee hit", - melee = true, - projectile = false, - }, - { - name = "Projectiles", - melee = false, - projectile = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - lightning = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 - mod("Damage", "MORE", -25, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -25 - --"total_projectile_spread_angle_override" = 70 - --"show_number_of_projectiles" = ? - }, - qualityMods = { - mod("PierceChance", "BASE", 2), --"pierce_%" = 2 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - }, - levels = { - [1] = { 30, 4, }, - [2] = { 32.4, 4, }, - [3] = { 34.8, 4, }, - [4] = { 37.2, 4, }, - [5] = { 39.6, 4, }, - [6] = { 42, 5, }, - [7] = { 44.4, 5, }, - [8] = { 46.8, 5, }, - [9] = { 49.2, 5, }, - [10] = { 51.6, 5, }, - [11] = { 54, 6, }, - [12] = { 56.4, 6, }, - [13] = { 58.8, 6, }, - [14] = { 61.2, 6, }, - [15] = { 63.6, 6, }, - [16] = { 66, 7, }, - [17] = { 68.4, 7, }, - [18] = { 70.8, 7, }, - [19] = { 73.2, 7, }, - [20] = { 75.6, 7, }, - [21] = { 78, 8, }, - [22] = { 80.4, 8, }, - [23] = { 82.8, 8, }, - [24] = { 85.2, 8, }, - [25] = { 87.6, 8, }, - [26] = { 90, 9, }, - [27] = { 92.4, 9, }, - [28] = { 94.8, 9, }, - [29] = { 97.2, 9, }, - [30] = { 99.6, 9, }, - }, -} -gems["Vaal Lightning Strike"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - melee = true, - duration = true, - lightning = true, - parts = { - { - name = "Strike", - }, - { - name = "Beams", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, [35] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 - mod("Damage", "MORE", -50, 0, 0, { type = "SkillPart", skillPart = 2 }), --"vaal_lightning_strike_beam_damage_+%_final" = -50 - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("duration", nil), --"base_skill_effect_duration" - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 5, nil, }, - [2] = { 5.2, 1.2, }, - [3] = { 5.4, 2.4, }, - [4] = { 5.6, 3.6, }, - [5] = { 5.8, 4.8, }, - [6] = { 6, 6, }, - [7] = { 6.2, 7.2, }, - [8] = { 6.4, 8.4, }, - [9] = { 6.6, 9.6, }, - [10] = { 6.8, 10.8, }, - [11] = { 7, 12, }, - [12] = { 7.2, 13.2, }, - [13] = { 7.4, 14.4, }, - [14] = { 7.6, 15.6, }, - [15] = { 7.8, 16.8, }, - [16] = { 8, 18, }, - [17] = { 8.2, 19.2, }, - [18] = { 8.4, 20.4, }, - [19] = { 8.6, 21.6, }, - [20] = { 8.8, 22.8, }, - [21] = { 9, 24, }, - [22] = { 9.2, 25.2, }, - [23] = { 9.4, 26.4, }, - [24] = { 9.6, 27.6, }, - [25] = { 9.8, 28.8, }, - [26] = { 10, 30, }, - [27] = { 10.2, 31.2, }, - [28] = { 10.4, 32.4, }, - [29] = { 10.6, 33.6, }, - [30] = { 10.8, 34.8, }, - }, -} -gems["Mirror Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - minion = true, - duration = true, - bow = true, - unsupported = true, -} -gems["Phase Run"] = { - dexterity = true, - active_skill = true, - spell = true, - duration = true, - movement = true, - color = 2, - baseFlags = { - spell = true, - duration = true, - movement = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [38] = true, }, - baseMods = { - skill("castTime", 0.5), - --"enemy_aggro_radius_+%" = -80 - skill("duration", 1.8), --"base_skill_effect_duration" = 1800 - --"base_secondary_skill_effect_duration" = 200 - mod("Duration", "INC", 100, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"skill_effect_duration_+%_per_frenzy_charge" = 100 - --"phase_through_objects" = ? - }, - qualityMods = { - mod("MovementSpeed", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" - [3] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"phase_run_melee_physical_damage_+%_final" - }, - levels = { - [1] = { 11, 30, 20, }, - [2] = { 11, 30, 21, }, - [3] = { 11, 31, 21, }, - [4] = { 11, 31, 22, }, - [5] = { 11, 32, 22, }, - [6] = { 12, 32, 23, }, - [7] = { 12, 33, 23, }, - [8] = { 12, 33, 24, }, - [9] = { 12, 34, 24, }, - [10] = { 12, 34, 25, }, - [11] = { 12, 35, 25, }, - [12] = { 12, 35, 26, }, - [13] = { 13, 36, 26, }, - [14] = { 13, 36, 27, }, - [15] = { 13, 37, 27, }, - [16] = { 13, 37, 28, }, - [17] = { 13, 38, 28, }, - [18] = { 13, 38, 29, }, - [19] = { 14, 39, 29, }, - [20] = { 14, 39, 30, }, - [21] = { 14, 40, 30, }, - [22] = { 14, 40, 31, }, - [23] = { 14, 41, 31, }, - [24] = { 14, 41, 32, }, - [25] = { 14, 42, 32, }, - [26] = { 14, 42, 33, }, - [27] = { 14, 43, 33, }, - [28] = { 14, 43, 34, }, - [29] = { 14, 44, 34, }, - [30] = { 14, 44, 35, }, - }, -} -gems["Poacher's Mark"] = { - curse = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"monster_slain_flask_charges_granted_+%" = 100 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"chance_to_grant_frenzy_charge_on_death_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("Evasion", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse"}), --"evasion_rating_+%_final_from_poachers_mark" - [5] = mod("SelfLifeOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_hit_by_attacks" - [6] = mod("SelfManaOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_hit_by_attacks" - --[7] = "chance_to_grant_frenzy_charge_on_death_%" - }, - levels = { - [1] = { 24, 6, 0, -30, 5, 5, 21, }, - [2] = { 26, 6.2, 4, -31, 6, 6, 21, }, - [3] = { 27, 6.4, 8, -32, 7, 6, 22, }, - [4] = { 29, 6.6, 12, -33, 8, 6, 22, }, - [5] = { 30, 6.8, 16, -34, 9, 7, 23, }, - [6] = { 32, 7, 20, -35, 10, 7, 23, }, - [7] = { 34, 7.2, 24, -36, 11, 7, 24, }, - [8] = { 35, 7.4, 28, -37, 12, 8, 24, }, - [9] = { 37, 7.6, 32, -38, 13, 8, 25, }, - [10] = { 38, 7.8, 36, -39, 14, 8, 25, }, - [11] = { 39, 8, 40, -40, 15, 9, 26, }, - [12] = { 40, 8.2, 44, -41, 16, 9, 26, }, - [13] = { 42, 8.4, 48, -42, 17, 9, 27, }, - [14] = { 43, 8.6, 52, -43, 18, 10, 27, }, - [15] = { 44, 8.8, 56, -44, 19, 10, 28, }, - [16] = { 45, 9, 60, -45, 20, 10, 28, }, - [17] = { 46, 9.2, 64, -46, 21, 11, 29, }, - [18] = { 47, 9.4, 68, -47, 22, 11, 29, }, - [19] = { 48, 9.6, 72, -48, 23, 11, 30, }, - [20] = { 50, 9.8, 76, -49, 24, 12, 30, }, - [21] = { 51, 10, 80, -50, 25, 12, 31, }, - [22] = { 52, 10.2, 84, -51, 26, 12, 31, }, - [23] = { 53, 10.4, 88, -52, 27, 13, 32, }, - [24] = { 54, 10.6, 92, -53, 28, 13, 32, }, - [25] = { 56, 10.8, 96, -54, 29, 13, 33, }, - [26] = { 57, 11, 100, -55, 30, 14, 33, }, - [27] = { 58, 11.2, 104, -56, 31, 14, 34, }, - [28] = { 59, 11.4, 108, -57, 32, 14, 34, }, - [29] = { 60, 11.6, 112, -58, 33, 15, 35, }, - [30] = { 61, 11.8, 116, -59, 34, 15, 35, }, - }, -} -gems["Projectile Weakness"] = { - curse = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("SelfPierceChance", "BASE", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" = 50 - --"chance_to_be_knocked_back_%" = 25 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("ProjectileDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" - }, - levels = { - [1] = { 24, 9, 0, 25, }, - [2] = { 26, 9.1, 4, 26, }, - [3] = { 27, 9.2, 8, 27, }, - [4] = { 29, 9.3, 12, 28, }, - [5] = { 30, 9.4, 16, 29, }, - [6] = { 32, 9.5, 20, 30, }, - [7] = { 34, 9.6, 24, 31, }, - [8] = { 35, 9.7, 28, 32, }, - [9] = { 37, 9.8, 32, 33, }, - [10] = { 38, 9.9, 36, 34, }, - [11] = { 39, 10, 40, 35, }, - [12] = { 40, 10.1, 44, 36, }, - [13] = { 42, 10.2, 48, 37, }, - [14] = { 43, 10.3, 52, 38, }, - [15] = { 44, 10.4, 56, 39, }, - [16] = { 45, 10.5, 60, 40, }, - [17] = { 46, 10.6, 64, 41, }, - [18] = { 47, 10.7, 68, 42, }, - [19] = { 48, 10.8, 72, 43, }, - [20] = { 50, 10.9, 76, 44, }, - [21] = { 51, 11, 80, 45, }, - [22] = { 52, 11.1, 84, 46, }, - [23] = { 53, 11.2, 88, 47, }, - [24] = { 54, 11.3, 92, 48, }, - [25] = { 56, 11.4, 96, 49, }, - [26] = { 57, 11.5, 100, 50, }, - [27] = { 58, 11.6, 104, 51, }, - [28] = { 59, 11.7, 108, 52, }, - [29] = { 60, 11.8, 112, 53, }, - [30] = { 61, 11.9, 116, 54, }, - }, -} -gems["Puncture"] = { - dexterity = true, - active_skill = true, - attack = true, - duration = true, - melee = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - duration = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, - weaponTypes = { - ["Bow"] = true, - ["Claw"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 600 - --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 3000 - --"bleed_on_hit_base_duration" = 5000 - --"skill_can_fire_arrows" = ? - mod("BleedChance", "BASE", 100), - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { nil, }, - [2] = { 1.2, }, - [3] = { 2.4, }, - [4] = { 3.6, }, - [5] = { 4.8, }, - [6] = { 6, }, - [7] = { 7.2, }, - [8] = { 8.4, }, - [9] = { 9.6, }, - [10] = { 10.8, }, - [11] = { 12, }, - [12] = { 13.2, }, - [13] = { 14.4, }, - [14] = { 15.6, }, - [15] = { 16.8, }, - [16] = { 18, }, - [17] = { 19.2, }, - [18] = { 20.4, }, - [19] = { 21.6, }, - [20] = { 22.8, }, - [21] = { 24, }, - [22] = { 25.2, }, - [23] = { 26.4, }, - [24] = { 27.6, }, - [25] = { 28.8, }, - [26] = { 30, }, - [27] = { 31.2, }, - [28] = { 32.4, }, - [29] = { 33.6, }, - [30] = { 34.8, }, - }, -} -gems["Purity of Ice"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_cold_damage_resistance_%" - [2] = mod("ColdResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 22, 0, 0, }, - [2] = { 23, 0, 3, }, - [3] = { 24, 0, 6, }, - [4] = { 25, 0, 9, }, - [5] = { 26, 1, 12, }, - [6] = { 27, 1, 15, }, - [7] = { 28, 1, 18, }, - [8] = { 29, 1, 21, }, - [9] = { 30, 1, 23, }, - [10] = { 31, 1, 25, }, - [11] = { 32, 2, 27, }, - [12] = { 33, 2, 29, }, - [13] = { 34, 2, 31, }, - [14] = { 35, 2, 33, }, - [15] = { 36, 2, 35, }, - [16] = { 37, 2, 36, }, - [17] = { 38, 3, 37, }, - [18] = { 39, 3, 38, }, - [19] = { 40, 3, 39, }, - [20] = { 41, 4, 40, }, - [21] = { 42, 4, 41, }, - [22] = { 43, 4, 42, }, - [23] = { 44, 5, 43, }, - [24] = { 45, 5, 44, }, - [25] = { 46, 5, 45, }, - [26] = { 47, 5, 46, }, - [27] = { 48, 5, 47, }, - [28] = { 49, 5, 48, }, - [29] = { 50, 5, 49, }, - [30] = { 51, 5, 50, }, - }, -} -gems["Rain of Arrows"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - }, - skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_is_projectile" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[3] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 7, 10, 0, }, - [2] = { 7, 11, 0, }, - [3] = { 7, 12, 0, }, - [4] = { 8, 13, 0, }, - [5] = { 8, 14, 1, }, - [6] = { 8, 15, 1, }, - [7] = { 8, 16, 1, }, - [8] = { 8, 17, 1, }, - [9] = { 9, 18, 1, }, - [10] = { 9, 19, 2, }, - [11] = { 9, 20, 2, }, - [12] = { 9, 21, 2, }, - [13] = { 9, 22, 2, }, - [14] = { 10, 23, 2, }, - [15] = { 10, 24, 3, }, - [16] = { 10, 25, 3, }, - [17] = { 10, 26, 3, }, - [18] = { 10, 27, 3, }, - [19] = { 11, 28, 3, }, - [20] = { 11, 29, 4, }, - [21] = { 11, 30, 4, }, - [22] = { 11, 31, 4, }, - [23] = { 11, 32, 4, }, - [24] = { 11, 33, 4, }, - [25] = { 11, 34, 5, }, - [26] = { 12, 35, 5, }, - [27] = { 12, 36, 5, }, - [28] = { 12, 37, 5, }, - [29] = { 12, 38, 5, }, - [30] = { 12, 39, 6, }, - }, -} -gems["Vaal Rain of Arrows"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - duration = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [12] = true, [43] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_is_projectile" = ? - --"is_area_damage" = ? - --"rain_of_arrows_pin" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 40, 3.4, 0, }, - [2] = { 41.5, 3.45, 1, }, - [3] = { 43, 3.5, 2, }, - [4] = { 44.5, 3.55, 3, }, - [5] = { 46, 3.6, 4, }, - [6] = { 47.5, 3.65, 5, }, - [7] = { 49, 3.7, 6, }, - [8] = { 50.5, 3.75, 7, }, - [9] = { 52, 3.8, 8, }, - [10] = { 53.5, 3.85, 9, }, - [11] = { 55, 3.9, 10, }, - [12] = { 56.5, 3.95, 11, }, - [13] = { 58, 4, 12, }, - [14] = { 59.5, 4.05, 13, }, - [15] = { 61, 4.1, 14, }, - [16] = { 62.5, 4.15, 15, }, - [17] = { 64, 4.2, 16, }, - [18] = { 65.5, 4.25, 17, }, - [19] = { 67, 4.3, 18, }, - [20] = { 68.5, 4.35, 19, }, - [21] = { 70, 4.4, 20, }, - [22] = { 71.5, 4.45, 21, }, - [23] = { 73, 4.5, 22, }, - [24] = { 74.5, 4.55, 23, }, - [25] = { 76, 4.6, 24, }, - [26] = { 77.5, 4.65, 25, }, - [27] = { 79, 4.7, 26, }, - [28] = { 80.5, 4.75, 27, }, - [29] = { 82, 4.8, 28, }, - [30] = { 83.5, 4.85, 29, }, - }, -} -gems["Reave"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - --"reave_area_of_effect_+%_final_per_stage" = 50 - --"is_area_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - --[1] = "active_skill_base_radius_+" - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 0, nil, }, - [2] = { 0, 2, }, - [3] = { 0, 4, }, - [4] = { 0, 6, }, - [5] = { 1, 8, }, - [6] = { 1, 10, }, - [7] = { 1, 12, }, - [8] = { 1, 14, }, - [9] = { 1, 16, }, - [10] = { 2, 18, }, - [11] = { 2, 20, }, - [12] = { 2, 22, }, - [13] = { 2, 24, }, - [14] = { 2, 26, }, - [15] = { 3, 28, }, - [16] = { 3, 30, }, - [17] = { 3, 32, }, - [18] = { 3, 34, }, - [19] = { 3, 36, }, - [20] = { 4, 38, }, - [21] = { 4, 40, }, - [22] = { 4, 42, }, - [23] = { 4, 44, }, - [24] = { 4, 46, }, - [25] = { 5, 48, }, - [26] = { 5, 50, }, - [27] = { 5, 52, }, - [28] = { 5, 54, }, - [29] = { 5, 56, }, - [30] = { 6, 58, }, - }, -} -gems["Vaal Reave"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - --"reave_area_of_effect_+%_final_per_stage" = 50 - --"reave_rotation_on_repeat" = 135 - --"reave_additional_max_stacks" = 4 - --"base_attack_repeat_count" = 7 - mod("Speed", "MORE", 150, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 150 - --"reave_additional_starting_stacks" = 4 - --"is_area_damage" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - --[1] = "active_skill_base_radius_+" - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 0, nil, }, - [2] = { 0, 1.2, }, - [3] = { 0, 2.4, }, - [4] = { 0, 3.6, }, - [5] = { 1, 4.8, }, - [6] = { 1, 6, }, - [7] = { 1, 7.2, }, - [8] = { 1, 8.4, }, - [9] = { 1, 9.6, }, - [10] = { 2, 10.8, }, - [11] = { 2, 12, }, - [12] = { 2, 13.2, }, - [13] = { 2, 14.4, }, - [14] = { 2, 15.6, }, - [15] = { 3, 16.8, }, - [16] = { 3, 18, }, - [17] = { 3, 19.2, }, - [18] = { 3, 20.4, }, - [19] = { 3, 21.6, }, - [20] = { 4, 22.8, }, - [21] = { 4, 24, }, - [22] = { 4, 25.2, }, - [23] = { 4, 26.4, }, - [24] = { 4, 27.6, }, - [25] = { 5, 28.8, }, - [26] = { 5, 30, }, - [27] = { 5, 31.2, }, - [28] = { 5, 32.4, }, - [29] = { 5, 33.6, }, - [30] = { 6, 34.8, }, - }, -} -gems["Riposte"] = { - trigger = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [24] = true, [25] = true, [6] = true, [47] = true, [57] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"melee_counterattack_trigger_on_block_%" = 100 - --"attack_unusable_if_triggerable" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { nil, }, - [2] = { 2, }, - [3] = { 4, }, - [4] = { 6, }, - [5] = { 8, }, - [6] = { 10, }, - [7] = { 12, }, - [8] = { 14, }, - [9] = { 16, }, - [10] = { 18, }, - [11] = { 20, }, - [12] = { 22, }, - [13] = { 24, }, - [14] = { 26, }, - [15] = { 28, }, - [16] = { 30, }, - [17] = { 32, }, - [18] = { 34, }, - [19] = { 36, }, - [20] = { 38, }, - [21] = { 40, }, - [22] = { 42, }, - [23] = { 44, }, - [24] = { 46, }, - [25] = { 48, }, - [26] = { 50, }, - [27] = { 52, }, - [28] = { 54, }, - [29] = { 56, }, - [30] = { 58, }, - }, -} -gems["Shrapnel Shot"] = { - lightning = true, - dexterity = true, - active_skill = true, - attack = true, - area = true, - bow = true, - parts = { - { - name = "Arrow", - area = false, - }, - { - name = "Cone", - area = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - lightning = true, - }, - skillTypes = { [1] = true, [3] = true, [11] = true, [22] = true, [17] = true, [19] = true, [35] = true, [48] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_arrow_pierce_%" = 100 - mod("Damage", "MORE", 0, ModFlag.Area), --"active_skill_area_damage_+%_final" = 0 - mod("PhysicalDamageConvertToLightning", "BASE", 40, 0, 0, nil), --"base_physical_damage_%_to_convert_to_lightning" = 40 - --"base_is_projectile" = ? - --"skill_can_fire_arrows" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[3] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, -20, 0, }, - [2] = { 6, -19, 0, }, - [3] = { 6, -18, 0, }, - [4] = { 7, -17, 1, }, - [5] = { 7, -16, 1, }, - [6] = { 7, -15, 1, }, - [7] = { 7, -14, 1, }, - [8] = { 8, -13, 2, }, - [9] = { 8, -12, 2, }, - [10] = { 8, -11, 2, }, - [11] = { 8, -10, 2, }, - [12] = { 8, -9, 3, }, - [13] = { 9, -8, 3, }, - [14] = { 9, -7, 3, }, - [15] = { 9, -6, 3, }, - [16] = { 9, -5, 4, }, - [17] = { 9, -4, 4, }, - [18] = { 10, -3, 4, }, - [19] = { 10, -2, 4, }, - [20] = { 10, -1, 5, }, - [21] = { 10, nil, 5, }, - [22] = { 10, 1, 5, }, - [23] = { 11, 2, 5, }, - [24] = { 11, 3, 6, }, - [25] = { 11, 4, 6, }, - [26] = { 11, 5, 6, }, - [27] = { 11, 6, 6, }, - [28] = { 12, 7, 7, }, - [29] = { 12, 8, 7, }, - [30] = { 12, 9, 7, }, - }, -} -gems["Siege Ballista"] = { - totem = true, - dexterity = true, - active_skill = true, - attack = true, - duration = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - totem = true, - duration = true, - }, - skillTypes = { [1] = true, [3] = true, [48] = true, [17] = true, [19] = true, [30] = true, [12] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - skillTotemId = 12, - baseMods = { - skill("castTime", 1), - mod("Speed", "MORE", -50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -50 - --"base_arrow_pierce_%" = 100 - --"base_totem_range" = 80 - --"base_totem_duration" = 8000 - --"base_is_projectile" = ? - --"base_skill_is_totemified" = ? - --"is_totem" = ? - --"skill_can_fire_arrows" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("TotemPlacementSpeed", "INC", 1), --"summon_totem_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" - }, - levels = { - [1] = { 8, 40, 4, }, - [2] = { 8, 41.6, 6, }, - [3] = { 8, 43.2, 9, }, - [4] = { 9, 44.8, 12, }, - [5] = { 9, 46.4, 16, }, - [6] = { 9, 48, 20, }, - [7] = { 9, 49.6, 24, }, - [8] = { 9, 51.2, 28, }, - [9] = { 9, 52.8, 32, }, - [10] = { 10, 54.4, 36, }, - [11] = { 10, 56, 40, }, - [12] = { 10, 57.6, 44, }, - [13] = { 10, 59.2, 48, }, - [14] = { 10, 60.8, 52, }, - [15] = { 11, 62.4, 55, }, - [16] = { 11, 64, 58, }, - [17] = { 12, 65.6, 61, }, - [18] = { 12, 67.2, 64, }, - [19] = { 12, 68.8, 67, }, - [20] = { 13, 70.4, 70, }, - [21] = { 13, 72, 72, }, - [22] = { 13, 73.6, 74, }, - [23] = { 14, 75.2, 76, }, - [24] = { 14, 76.8, 78, }, - [25] = { 14, 78.4, 80, }, - [26] = { 14, 80, 82, }, - [27] = { 14, 81.6, 84, }, - [28] = { 14, 83.2, 86, }, - [29] = { 15, 84.8, 88, }, - [30] = { 15, 86.4, 90, }, - }, -} -gems["Smoke Mine"] = { - mine = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - movement = true, - color = 2, - baseFlags = { - spell = true, - mine = true, - area = true, - duration = true, - movement = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [38] = true, [41] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_mine_duration" = 16000 - mod("MovementSpeed", "INC", 30, 0, 0, nil), --"base_movement_velocity_+%" = 30 - --"is_remote_mine" = ? - --"base_skill_is_mined" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 6, 4, }, - [2] = { 6, 4.1, }, - [3] = { 7, 4.2, }, - [4] = { 7, 4.3, }, - [5] = { 8, 4.4, }, - [6] = { 8, 4.5, }, - [7] = { 9, 4.6, }, - [8] = { 9, 4.7, }, - [9] = { 9, 4.8, }, - [10] = { 10, 4.9, }, - [11] = { 10, 5, }, - [12] = { 10, 5.1, }, - [13] = { 10, 5.2, }, - [14] = { 11, 5.3, }, - [15] = { 11, 5.4, }, - [16] = { 11, 5.5, }, - [17] = { 12, 5.6, }, - [18] = { 12, 5.7, }, - [19] = { 12, 5.8, }, - [20] = { 13, 5.9, }, - [21] = { 13, 6, }, - [22] = { 13, 6.1, }, - [23] = { 14, 6.2, }, - [24] = { 14, 6.3, }, - [25] = { 14, 6.4, }, - [26] = { 14, 6.5, }, - [27] = { 14, 6.6, }, - [28] = { 14, 6.7, }, - [29] = { 15, 6.8, }, - [30] = { 15, 6.9, }, - }, -} -gems["Spectral Throw"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 7, -46, }, - [2] = { 7, -44, }, - [3] = { 7, -42.1, }, - [4] = { 7, -40.2, }, - [5] = { 7, -38.3, }, - [6] = { 7, -36.4, }, - [7] = { 7, -34.4, }, - [8] = { 7, -32.5, }, - [9] = { 7, -30.6, }, - [10] = { 7, -28.7, }, - [11] = { 8, -26.8, }, - [12] = { 8, -24.8, }, - [13] = { 8, -22.9, }, - [14] = { 8, -21, }, - [15] = { 8, -19.1, }, - [16] = { 9, -17.2, }, - [17] = { 9, -15.2, }, - [18] = { 9, -13.3, }, - [19] = { 9, -11.4, }, - [20] = { 9, -9.5, }, - [21] = { 10, -7.6, }, - [22] = { 10, -5.6, }, - [23] = { 10, -3.7, }, - [24] = { 10, -1.8, }, - [25] = { 10, nil, }, - [26] = { 10, 2, }, - [27] = { 10, 3.9, }, - [28] = { 10, 5.8, }, - [29] = { 10, 7.7, }, - [30] = { 10, 9.6, }, - }, -} -gems["Vaal Spectral Throw"] = { - projectile = true, - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [43] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"projectiles_nova" = ? - --"base_is_projectile" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -30, }, - [2] = { -28.2, }, - [3] = { -26.4, }, - [4] = { -24.6, }, - [5] = { -22.8, }, - [6] = { -21, }, - [7] = { -19.2, }, - [8] = { -17.4, }, - [9] = { -15.6, }, - [10] = { -13.8, }, - [11] = { -12, }, - [12] = { -10.2, }, - [13] = { -8.4, }, - [14] = { -6.6, }, - [15] = { -4.8, }, - [16] = { -3, }, - [17] = { -1.2, }, - [18] = { 0.6, }, - [19] = { 2.4, }, - [20] = { 4.2, }, - [21] = { 6, }, - [22] = { 7.8, }, - [23] = { 9.6, }, - [24] = { 11.4, }, - [25] = { 13.2, }, - [26] = { 15, }, - [27] = { 16.8, }, - [28] = { 18.6, }, - [29] = { 20.4, }, - [30] = { 22.2, }, - }, -} -gems["Split Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = mod("ProjectileCount", "BASE", nil), --"base_number_of_additional_arrows" - }, - levels = { - [1] = { 6, -10, 4, }, - [2] = { 6, -9, 4, }, - [3] = { 6, -8, 4, }, - [4] = { 7, -7, 4, }, - [5] = { 7, -6, 4, }, - [6] = { 7, -5, 4, }, - [7] = { 7, -4, 4, }, - [8] = { 8, -3, 5, }, - [9] = { 8, -2, 5, }, - [10] = { 8, -1, 5, }, - [11] = { 8, nil, 5, }, - [12] = { 8, 1, 5, }, - [13] = { 9, 2, 5, }, - [14] = { 9, 3, 5, }, - [15] = { 9, 4, 6, }, - [16] = { 9, 5, 6, }, - [17] = { 9, 6, 6, }, - [18] = { 10, 7, 6, }, - [19] = { 10, 8, 6, }, - [20] = { 10, 9, 6, }, - [21] = { 10, 10, 6, }, - [22] = { 10, 11, 7, }, - [23] = { 11, 12, 7, }, - [24] = { 11, 13, 7, }, - [25] = { 11, 14, 7, }, - [26] = { 11, 15, 7, }, - [27] = { 11, 16, 7, }, - [28] = { 12, 17, 7, }, - [29] = { 12, 18, 8, }, - [30] = { 12, 19, 8, }, - }, -} -gems["Summon Ice Golem"] = { - dexterity = true, - active_skill = true, - cold = true, - minion = true, - spell = true, - golem = true, - color = 2, - baseFlags = { - spell = true, - minion = true, - golem = true, - cold = true, - }, - skillTypes = { [36] = true, [34] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [60] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 6 - mod("Misc", "LIST", { type = "Condition", var = "HaveColdGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [3] = mod("CritChance", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_critical_strike_chance_+%" - [4] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_accuracy_+%" - [5] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - --[6] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 20, 20, 30, 34, }, - [2] = { 32, 1, 21, 21, 32, 36, }, - [3] = { 34, 1, 21, 21, 34, 38, }, - [4] = { 36, 2, 22, 22, 36, 40, }, - [5] = { 38, 2, 22, 22, 38, 42, }, - [6] = { 40, 3, 23, 23, 40, 44, }, - [7] = { 42, 3, 23, 23, 42, 46, }, - [8] = { 44, 4, 24, 24, 44, 48, }, - [9] = { 44, 4, 24, 24, 46, 50, }, - [10] = { 46, 5, 25, 25, 48, 52, }, - [11] = { 48, 5, 25, 25, 50, 54, }, - [12] = { 48, 6, 26, 26, 52, 56, }, - [13] = { 50, 6, 26, 26, 54, 58, }, - [14] = { 50, 7, 27, 27, 56, 60, }, - [15] = { 52, 7, 27, 27, 58, 62, }, - [16] = { 52, 8, 28, 28, 60, 64, }, - [17] = { 52, 8, 28, 28, 62, 66, }, - [18] = { 52, 9, 29, 29, 64, 68, }, - [19] = { 54, 9, 29, 29, 66, 69, }, - [20] = { 54, 10, 30, 30, 68, 70, }, - [21] = { 56, 10, 30, 30, 70, 72, }, - [22] = { 56, 11, 31, 31, 72, 74, }, - [23] = { 58, 11, 31, 31, 74, 76, }, - [24] = { 58, 12, 32, 32, 76, 78, }, - [25] = { 60, 12, 32, 32, 78, 80, }, - [26] = { 60, 13, 33, 33, 80, 82, }, - [27] = { 60, 13, 33, 33, 82, 84, }, - [28] = { 60, 14, 34, 34, 84, 86, }, - [29] = { 62, 14, 34, 34, 86, 88, }, - [30] = { 62, 15, 35, 35, 88, 90, }, - }, -} -gems["Temporal Chains"] = { - curse = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - curse = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("BuffExpireFaster", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"buff_time_passed_-%" = 40 - --"curse_effect_+%_vs_players" = -40 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"temporal_chains_action_speed_+%_final" = -0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - --[4] = "temporal_chains_action_speed_+%_final" - }, - levels = { - [1] = { 24, 5, 0, -20, }, - [2] = { 26, 5.05, 4, -20, }, - [3] = { 27, 5.1, 8, -21, }, - [4] = { 29, 5.15, 12, -21, }, - [5] = { 30, 5.2, 16, -22, }, - [6] = { 32, 5.25, 20, -22, }, - [7] = { 34, 5.3, 24, -23, }, - [8] = { 35, 5.35, 28, -23, }, - [9] = { 37, 5.4, 32, -24, }, - [10] = { 38, 5.45, 36, -24, }, - [11] = { 39, 5.5, 40, -25, }, - [12] = { 40, 5.55, 44, -25, }, - [13] = { 42, 5.6, 48, -26, }, - [14] = { 43, 5.65, 52, -26, }, - [15] = { 44, 5.7, 56, -27, }, - [16] = { 45, 5.75, 60, -27, }, - [17] = { 46, 5.8, 64, -28, }, - [18] = { 47, 5.85, 68, -28, }, - [19] = { 48, 5.9, 72, -29, }, - [20] = { 50, 5.95, 76, -29, }, - [21] = { 51, 6, 80, -30, }, - [22] = { 52, 6.05, 84, -30, }, - [23] = { 53, 6.1, 88, -31, }, - [24] = { 54, 6.15, 92, -31, }, - [25] = { 56, 6.2, 96, -32, }, - [26] = { 57, 6.25, 100, -32, }, - [27] = { 58, 6.3, 104, -33, }, - [28] = { 59, 6.35, 108, -33, }, - [29] = { 60, 6.4, 112, -34, }, - [30] = { 61, 6.45, 116, -34, }, - }, -} -gems["Tornado Shot"] = { - dexterity = true, - active_skill = true, - attack = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [3] = true, [17] = true, [19] = true, [22] = true, [48] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"tornado_shot_num_of_secondary_projectiles" = 3 - --"base_is_projectile" = ? - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 8, -10, }, - [2] = { 8, -9, }, - [3] = { 8, -8, }, - [4] = { 8, -7, }, - [5] = { 9, -6, }, - [6] = { 9, -5, }, - [7] = { 9, -4, }, - [8] = { 9, -3, }, - [9] = { 9, -2, }, - [10] = { 9, -1, }, - [11] = { 9, nil, }, - [12] = { 10, 1, }, - [13] = { 10, 2, }, - [14] = { 10, 3, }, - [15] = { 10, 4, }, - [16] = { 10, 5, }, - [17] = { 10, 6, }, - [18] = { 10, 7, }, - [19] = { 10, 8, }, - [20] = { 10, 9, }, - [21] = { 10, 10, }, - [22] = { 10, 11, }, - [23] = { 11, 12, }, - [24] = { 11, 13, }, - [25] = { 11, 14, }, - [26] = { 11, 15, }, - [27] = { 11, 16, }, - [28] = { 12, 17, }, - [29] = { 12, 18, }, - [30] = { 12, 19, }, - }, -} -gems["Viper Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - duration = true, - melee = true, - chaos = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - duration = true, - chaos = true, - }, - skillTypes = { [1] = true, [6] = true, [12] = true, [28] = true, [24] = true, [25] = true, [40] = true, [50] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - mod("PhysicalDamageConvertToChaos", "BASE", 25, 0, 0, nil), --"base_physical_damage_%_to_convert_to_chaos" = 25 - mod("PoisonChance", "BASE", 100), --"base_chance_to_poison_on_hit_%" = 100 - skill("duration", 8), --"base_skill_effect_duration" = 8000 - skill("poisonDurationIsSkillDuration", true), --"poison_duration_is_skill_duration" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, }, - [2] = { 32.6, }, - [3] = { 35.2, }, - [4] = { 37.8, }, - [5] = { 40.4, }, - [6] = { 43, }, - [7] = { 45.6, }, - [8] = { 48.2, }, - [9] = { 50.8, }, - [10] = { 53.4, }, - [11] = { 56, }, - [12] = { 58.6, }, - [13] = { 61.2, }, - [14] = { 63.8, }, - [15] = { 66.4, }, - [16] = { 69, }, - [17] = { 71.6, }, - [18] = { 74.2, }, - [19] = { 76.8, }, - [20] = { 79.4, }, - [21] = { 82, }, - [22] = { 84.6, }, - [23] = { 87.2, }, - [24] = { 89.8, }, - [25] = { 92.4, }, - [26] = { 95, }, - [27] = { 97.6, }, - [28] = { 100.2, }, - [29] = { 102.8, }, - [30] = { 105.4, }, - }, -} -gems["Whirling Blades"] = { - dexterity = true, - active_skill = true, - attack = true, - movement = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, - weaponTypes = { - ["Claw"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 2.6), - skill("manaCost", 15), - --"ignores_proximity_shield" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -20, }, - [2] = { -19, }, - [3] = { -18, }, - [4] = { -17, }, - [5] = { -16, }, - [6] = { -15, }, - [7] = { -14, }, - [8] = { -13, }, - [9] = { -12, }, - [10] = { -11, }, - [11] = { -10, }, - [12] = { -9, }, - [13] = { -8, }, - [14] = { -7, }, - [15] = { -6, }, - [16] = { -5, }, - [17] = { -4, }, - [18] = { -3, }, - [19] = { -2, }, - [20] = { -1, }, - [21] = { nil, }, - [22] = { 1, }, - [23] = { 2, }, - [24] = { 3, }, - [25] = { 4, }, - [26] = { 5, }, - [27] = { 6, }, - [28] = { 7, }, - [29] = { 8, }, - [30] = { 9, }, - }, -} -gems["Wild Strike"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - lightning = true, - cold = true, - fire = true, - area = true, - chaining = true, - parts = { - { - name = "Fire hit", - melee = true, - projectile = false, - chaining = false, - area = false, - }, - { - name = "Fire explosion", - melee = false, - projectile = false, - chaining = false, - area = true, - }, - { - name = "Lightning hit", - melee = true, - projectile = false, - chaining = false, - area = false, - }, - { - name = "Lightning bolt", - melee = false, - projectile = false, - chaining = true, - area = false, - }, - { - name = "Cold hit", - melee = true, - projectile = false, - chaining = false, - area = false, - }, - { - name = "Icy wave", - melee = false, - projectile = true, - chaining = false, - area = false, - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - chaining = true, - area = true, - lightning = true, - cold = true, - fire = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, [34] = true, [33] = true, [3] = true, [11] = true, [23] = true, [48] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - --"elemental_strike_physical_damage_%_to_convert" = 100 - --"fixed_projectile_spread" = 70 - mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 - --"show_number_of_projectiles" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), - mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 2 }), - mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 3 }), - mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 4 }), - mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 5 }), - mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 6 }), - }, - qualityMods = { - mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 30, 4, 0, }, - [2] = { 32.4, 4, 1, }, - [3] = { 34.8, 4, 2, }, - [4] = { 37.2, 4, 3, }, - [5] = { 39.6, 4, 4, }, - [6] = { 42, 4, 5, }, - [7] = { 44.4, 5, 6, }, - [8] = { 46.8, 5, 7, }, - [9] = { 49.2, 5, 8, }, - [10] = { 51.6, 5, 9, }, - [11] = { 54, 5, 10, }, - [12] = { 56.4, 5, 11, }, - [13] = { 58.8, 6, 12, }, - [14] = { 61.2, 6, 13, }, - [15] = { 63.6, 6, 14, }, - [16] = { 66, 6, 15, }, - [17] = { 68.4, 6, 16, }, - [18] = { 70.8, 6, 17, }, - [19] = { 73.2, 7, 18, }, - [20] = { 75.6, 7, 19, }, - [21] = { 78, 7, 20, }, - [22] = { 80.4, 7, 21, }, - [23] = { 82.8, 7, 22, }, - [24] = { 85.2, 7, 23, }, - [25] = { 87.6, 8, 24, }, - [26] = { 90, 8, 25, }, - [27] = { 92.4, 8, 26, }, - [28] = { 94.8, 8, 27, }, - [29] = { 97.2, 8, 28, }, - [30] = { 99.6, 8, 29, }, - }, -} diff --git a/Data/Gems/act_int.lua b/Data/Gems/act_int.lua deleted file mode 100644 index 3915c762..00000000 --- a/Data/Gems/act_int.lua +++ /dev/null @@ -1,4772 +0,0 @@ --- Path of Building --- --- Active Intelligence gems --- Skill gem data (c) Grinding Gear Games --- -local gems, mod, flag, skill = ... - -gems["Arc"] = { - intelligence = true, - active_skill = true, - spell = true, - chaining = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - chaining = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.7), - skill("critChance", 5), - mod("EnemyShockChance", "BASE", 10), --"base_chance_to_shock_%" = 10 - }, - qualityMods = { - mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [4] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" - }, - levels = { - [1] = { 9, 2, 35, 2, }, - [2] = { 10, 2, 44, 2, }, - [3] = { 11, 3, 58, 2, }, - [4] = { 12, 4, 76, 3, }, - [5] = { 13, 5, 97, 3, }, - [6] = { 14, 6, 123, 3, }, - [7] = { 16, 8, 154, 3, }, - [8] = { 16, 10, 182, 4, }, - [9] = { 17, 11, 214, 4, }, - [10] = { 18, 13, 250, 4, }, - [11] = { 19, 15, 292, 4, }, - [12] = { 20, 18, 340, 5, }, - [13] = { 21, 21, 395, 5, }, - [14] = { 22, 24, 458, 5, }, - [15] = { 23, 28, 529, 5, }, - [16] = { 24, 32, 610, 6, }, - [17] = { 24, 35, 671, 6, }, - [18] = { 25, 39, 736, 6, }, - [19] = { 25, 43, 808, 6, }, - [20] = { 26, 47, 886, 7, }, - [21] = { 26, 51, 971, 7, }, - [22] = { 26, 56, 1064, 7, }, - [23] = { 27, 61, 1164, 7, }, - [24] = { 28, 67, 1274, 8, }, - [25] = { 29, 73, 1393, 8, }, - [26] = { 30, 80, 1523, 8, }, - [27] = { 30, 88, 1663, 8, }, - [28] = { 30, 96, 1816, 9, }, - [29] = { 31, 104, 1983, 9, }, - [30] = { 32, 114, 2163, 9, }, - }, -} -gems["Vaal Arc"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - chaining = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.8), - skill("critChance", 5), - mod("EnemyShockChance", "BASE", 100), --"base_chance_to_shock_%" = 100 - mod("ChainCount", "BASE", 40), --"number_of_additional_projectiles_in_chain" = 40 - }, - qualityMods = { - mod("EnemyShockDuration", "INC", 1.5), --"shock_duration_+%" = 1.5 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 2, 35, }, - [2] = { 2, 44, }, - [3] = { 3, 59, }, - [4] = { 4, 77, }, - [5] = { 5, 99, }, - [6] = { 7, 125, }, - [7] = { 8, 158, }, - [8] = { 10, 187, }, - [9] = { 12, 220, }, - [10] = { 14, 259, }, - [11] = { 16, 303, }, - [12] = { 19, 353, }, - [13] = { 22, 411, }, - [14] = { 25, 478, }, - [15] = { 29, 554, }, - [16] = { 34, 641, }, - [17] = { 37, 706, }, - [18] = { 41, 777, }, - [19] = { 45, 854, }, - [20] = { 49, 938, }, - [21] = { 54, 1030, }, - [22] = { 60, 1131, }, - [23] = { 65, 1240, }, - [24] = { 72, 1359, }, - [25] = { 78, 1489, }, - [26] = { 86, 1631, }, - [27] = { 94, 1785, }, - [28] = { 103, 1953, }, - [29] = { 112, 2136, }, - [30] = { 123, 2335, }, - }, -} -gems["Arctic Breath"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - projectile = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [12] = true, [11] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("critChance", 5), - --"base_is_projectile" = 1 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 11, 52, 78, 0.88, }, - [2] = { 11, 64, 96, 0.94, }, - [3] = { 12, 77, 116, 0.99, }, - [4] = { 13, 93, 140, 1.05, }, - [5] = { 14, 112, 168, 1.1, }, - [6] = { 14, 126, 190, 1.16, }, - [7] = { 15, 143, 214, 1.21, }, - [8] = { 15, 160, 240, 1.27, }, - [9] = { 16, 180, 270, 1.32, }, - [10] = { 16, 202, 303, 1.35, }, - [11] = { 16, 227, 340, 1.38, }, - [12] = { 17, 254, 381, 1.4, }, - [13] = { 17, 284, 426, 1.43, }, - [14] = { 18, 317, 476, 1.46, }, - [15] = { 18, 354, 532, 1.49, }, - [16] = { 19, 395, 593, 1.51, }, - [17] = { 19, 441, 661, 1.54, }, - [18] = { 20, 491, 737, 1.57, }, - [19] = { 20, 547, 820, 1.6, }, - [20] = { 21, 608, 913, 1.65, }, - [21] = { 21, 677, 1015, 1.71, }, - [22] = { 22, 752, 1128, 1.76, }, - [23] = { 22, 835, 1252, 1.82, }, - [24] = { 23, 927, 1390, 1.87, }, - [25] = { 23, 1028, 1542, 1.93, }, - [26] = { 24, 1140, 1710, 1.98, }, - [27] = { 24, 1264, 1896, 2.04, }, - [28] = { 25, 1400, 2100, 2.09, }, - [29] = { 25, 1550, 2326, 2.15, }, - [30] = { 26, 1716, 2574, 2.2, }, - }, -} -gems["Assassin's Mark"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("SelfCritMultiplier", "INC", 20, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_critical_strike_multiplier_-%" = -20 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"chance_to_grant_power_charge_on_death_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("SelfExtraCritChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"additional_chance_to_take_critical_strike_%" - [5] = mod("SelfLifeOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_killed" - [6] = mod("SelfManaOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_killed" - --[7] = "chance_to_grant_power_charge_on_death_%" - }, - levels = { - [1] = { 24, 6, 0, 5, 16, 16, 21, }, - [2] = { 26, 6.2, 4, 5, 16, 16, 21, }, - [3] = { 27, 6.4, 8, 5, 17, 17, 22, }, - [4] = { 29, 6.6, 12, 6, 17, 17, 22, }, - [5] = { 30, 6.8, 16, 6, 18, 18, 23, }, - [6] = { 32, 7, 20, 6, 18, 18, 23, }, - [7] = { 34, 7.2, 24, 7, 19, 19, 24, }, - [8] = { 35, 7.4, 28, 7, 19, 19, 24, }, - [9] = { 37, 7.6, 32, 7, 20, 20, 25, }, - [10] = { 38, 7.8, 36, 8, 20, 20, 25, }, - [11] = { 39, 8, 40, 8, 21, 21, 26, }, - [12] = { 40, 8.2, 44, 8, 21, 21, 26, }, - [13] = { 42, 8.4, 48, 8, 22, 22, 27, }, - [14] = { 43, 8.6, 52, 8, 22, 22, 27, }, - [15] = { 44, 8.8, 56, 9, 23, 23, 28, }, - [16] = { 45, 9, 60, 9, 23, 23, 28, }, - [17] = { 46, 9.2, 64, 9, 24, 24, 29, }, - [18] = { 47, 9.4, 68, 9, 24, 24, 29, }, - [19] = { 48, 9.6, 72, 9, 25, 25, 30, }, - [20] = { 50, 9.8, 76, 9, 25, 25, 30, }, - [21] = { 51, 10, 80, 10, 26, 26, 31, }, - [22] = { 52, 10.2, 84, 10, 26, 26, 31, }, - [23] = { 53, 10.4, 88, 10, 27, 27, 32, }, - [24] = { 54, 10.6, 92, 10, 27, 27, 32, }, - [25] = { 56, 10.8, 96, 10, 28, 28, 33, }, - [26] = { 57, 11, 100, 11, 28, 28, 33, }, - [27] = { 58, 11.2, 104, 11, 29, 29, 34, }, - [28] = { 59, 11.4, 108, 11, 29, 29, 34, }, - [29] = { 60, 11.6, 112, 11, 30, 30, 35, }, - [30] = { 61, 11.8, 116, 11, 30, 30, 35, }, - }, -} -gems["Ball Lightning"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [11] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.2), - skill("critChance", 5), - --"active_skill_index" = 0 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 14, 2, 32, }, - [2] = { 15, 2, 38, }, - [3] = { 16, 2, 45, }, - [4] = { 17, 3, 53, }, - [5] = { 18, 3, 62, }, - [6] = { 19, 4, 69, }, - [7] = { 20, 4, 76, }, - [8] = { 21, 4, 84, }, - [9] = { 22, 5, 93, }, - [10] = { 23, 5, 103, }, - [11] = { 24, 6, 113, }, - [12] = { 25, 7, 124, }, - [13] = { 25, 7, 137, }, - [14] = { 25, 8, 150, }, - [15] = { 26, 9, 165, }, - [16] = { 26, 10, 181, }, - [17] = { 26, 10, 199, }, - [18] = { 26, 11, 217, }, - [19] = { 27, 13, 238, }, - [20] = { 27, 14, 260, }, - [21] = { 28, 15, 285, }, - [22] = { 28, 16, 311, }, - [23] = { 29, 18, 340, }, - [24] = { 29, 20, 371, }, - [25] = { 30, 21, 404, }, - [26] = { 30, 23, 441, }, - [27] = { 30, 25, 480, }, - [28] = { 30, 28, 523, }, - [29] = { 31, 30, 570, }, - [30] = { 31, 33, 620, }, - }, -} -gems["Blight"] = { - intelligence = true, - active_skill = true, - spell = true, - chaos = true, - area = true, - channelling = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - area = true, - chaos = true, - }, - skillTypes = { [2] = true, [50] = true, [11] = true, [18] = true, [58] = true, [12] = true, [40] = true, [59] = true, [52] = true, }, - baseMods = { - skill("castTime", 0.3), - skill("duration", 2.5), --"base_skill_effect_duration" = 2500 - --"base_secondary_skill_effect_duration" = 800 - mod("MovementSpeed", "INC", -80, 0, 0, nil), --"base_movement_velocity_+%" = -80 - --"display_max_blight_stacks" = 20 - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - --[3] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 2, 1.7333333333333, 0, }, - [2] = { 2, 1.9666666666667, 0, }, - [3] = { 2, 2.4666666666667, 0, }, - [4] = { 2, 3.3666666666667, 0, }, - [5] = { 2, 4.8333333333333, 1, }, - [6] = { 2, 7.2166666666667, 1, }, - [7] = { 2, 9.6833333333333, 1, }, - [8] = { 2, 12.75, 1, }, - [9] = { 2, 16.566666666667, 1, }, - [10] = { 2, 21.266666666667, 2, }, - [11] = { 2, 27.05, 2, }, - [12] = { 3, 34.133333333333, 2, }, - [13] = { 3, 42.816666666667, 2, }, - [14] = { 3, 53.4, 2, }, - [15] = { 3, 66.283333333333, 3, }, - [16] = { 3, 81.916666666667, 3, }, - [17] = { 3, 100.88333333333, 3, }, - [18] = { 4, 123.83333333333, 3, }, - [19] = { 4, 144.11666666667, 3, }, - [20] = { 4, 167.48333333333, 4, }, - [21] = { 4, 184.96666666667, 4, }, - [22] = { 4, 204.16666666667, 4, }, - [23] = { 4, 225.23333333333, 4, }, - [24] = { 5, 248.33333333333, 4, }, - [25] = { 5, 273.66666666667, 5, }, - [26] = { 5, 301.41666666667, 5, }, - [27] = { 5, 331.83333333333, 5, }, - [28] = { 5, 365.16666666667, 5, }, - [29] = { 5, 401.66666666667, 5, }, - [30] = { 5, 441.61666666667, 6, }, - }, -} -gems["Bone Offering"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"offering_skill_effect_duration_per_corpse" = 500 - --"base_deal_no_damage" = ? - skill("offering", true), - }, - qualityMods = { - mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("BlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"monster_base_block_%" - [3] = mod("SpellBlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_spell_block_%" - --[4] = "minion_recover_X_life_on_block" - }, - levels = { - [1] = { 16, 25, 25, 11, }, - [2] = { 17, 26, 25, 14, }, - [3] = { 18, 26, 26, 20, }, - [4] = { 19, 27, 26, 27, }, - [5] = { 20, 27, 27, 38, }, - [6] = { 21, 28, 27, 50, }, - [7] = { 22, 28, 28, 66, }, - [8] = { 23, 29, 28, 81, }, - [9] = { 24, 29, 29, 99, }, - [10] = { 25, 30, 29, 120, }, - [11] = { 26, 30, 30, 146, }, - [12] = { 27, 31, 30, 176, }, - [13] = { 28, 31, 31, 212, }, - [14] = { 29, 32, 31, 255, }, - [15] = { 29, 32, 32, 306, }, - [16] = { 30, 33, 32, 366, }, - [17] = { 30, 33, 33, 414, }, - [18] = { 31, 34, 33, 468, }, - [19] = { 32, 34, 34, 528, }, - [20] = { 33, 35, 34, 594, }, - [21] = { 34, 35, 35, 644, }, - [22] = { 34, 36, 35, 693, }, - [23] = { 35, 36, 36, 743, }, - [24] = { 36, 37, 36, 792, }, - [25] = { 37, 37, 37, 842, }, - [26] = { 38, 38, 37, 891, }, - [27] = { 38, 38, 38, 941, }, - [28] = { 39, 39, 38, 990, }, - [29] = { 40, 39, 39, 1040, }, - [30] = { 41, 40, 39, 1089, }, - }, -} -gems["Clarity"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_mana_regeneration_rate_per_minute" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 34, 2.9333333333333, 0, }, - [2] = { 48, 4.0333333333333, 3, }, - [3] = { 61, 5.0833333333333, 6, }, - [4] = { 76, 6.0833333333333, 9, }, - [5] = { 89, 7.0166666666667, 12, }, - [6] = { 102, 7.9166666666667, 15, }, - [7] = { 115, 8.75, 18, }, - [8] = { 129, 9.55, 21, }, - [9] = { 141, 10.316666666667, 23, }, - [10] = { 154, 11.05, 25, }, - [11] = { 166, 11.733333333333, 27, }, - [12] = { 178, 12.4, 29, }, - [13] = { 190, 13.033333333333, 31, }, - [14] = { 203, 13.65, 33, }, - [15] = { 214, 14.25, 35, }, - [16] = { 227, 14.85, 36, }, - [17] = { 239, 15.433333333333, 37, }, - [18] = { 251, 16.016666666667, 38, }, - [19] = { 265, 16.6, 39, }, - [20] = { 279, 17.183333333333, 40, }, - [21] = { 293, 17.766666666667, 41, }, - [22] = { 303, 18.366666666667, 42, }, - [23] = { 313, 18.966666666667, 43, }, - [24] = { 323, 19.566666666667, 44, }, - [25] = { 333, 20.166666666667, 45, }, - [26] = { 343, 20.766666666667, 46, }, - [27] = { 353, 21.366666666667, 47, }, - [28] = { 363, 21.983333333333, 48, }, - [29] = { 373, 22.6, 49, }, - [30] = { 383, 23.216666666667, 50, }, - }, -} -gems["Vaal Clarity"] = { - aura = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - mod("ManaCost", "MORE", -100, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"no_mana_cost" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 0, 8, }, - [2] = { 3, 8.1, }, - [3] = { 6, 8.2, }, - [4] = { 9, 8.3, }, - [5] = { 12, 8.4, }, - [6] = { 15, 8.5, }, - [7] = { 18, 8.6, }, - [8] = { 21, 8.7, }, - [9] = { 23, 8.8, }, - [10] = { 25, 8.9, }, - [11] = { 27, 9, }, - [12] = { 29, 9.1, }, - [13] = { 31, 9.2, }, - [14] = { 33, 9.3, }, - [15] = { 35, 9.4, }, - [16] = { 36, 9.5, }, - [17] = { 37, 9.6, }, - [18] = { 38, 9.7, }, - [19] = { 39, 9.8, }, - [20] = { 40, 9.9, }, - [21] = { 41, 10, }, - [22] = { 42, 10.1, }, - [23] = { 43, 10.2, }, - [24] = { 44, 10.3, }, - [25] = { 45, 10.4, }, - [26] = { 46, 10.5, }, - [27] = { 47, 10.6, }, - [28] = { 48, 10.7, }, - [29] = { 49, 10.8, }, - [30] = { 50, 10.9, }, - }, -} -gems["Cold Snap"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 1.2), - skill("critChance", 5), - mod("EnemyFreezeChance", "BASE", 30), --"base_chance_to_freeze_%" = 30 - mod("EnemyFreezeDuration", "INC", 30), --"freeze_duration_+%" = 30 - mod("EnemyChillDuration", "INC", 110), --"chill_duration_+%" = 110 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 11, 9, 13, 0, }, - [2] = { 12, 11, 16, 0, }, - [3] = { 13, 14, 21, 0, }, - [4] = { 14, 18, 27, 1, }, - [5] = { 15, 25, 37, 1, }, - [6] = { 16, 32, 49, 1, }, - [7] = { 17, 42, 63, 1, }, - [8] = { 18, 54, 81, 2, }, - [9] = { 19, 68, 102, 2, }, - [10] = { 20, 85, 128, 2, }, - [11] = { 21, 106, 159, 2, }, - [12] = { 22, 131, 196, 3, }, - [13] = { 23, 160, 240, 3, }, - [14] = { 24, 196, 294, 3, }, - [15] = { 25, 227, 341, 3, }, - [16] = { 26, 263, 394, 4, }, - [17] = { 26, 303, 455, 4, }, - [18] = { 27, 350, 524, 4, }, - [19] = { 27, 402, 603, 4, }, - [20] = { 28, 462, 693, 5, }, - [21] = { 28, 506, 759, 5, }, - [22] = { 29, 554, 832, 5, }, - [23] = { 29, 607, 910, 5, }, - [24] = { 30, 664, 996, 6, }, - [25] = { 30, 726, 1089, 6, }, - [26] = { 30, 794, 1191, 6, }, - [27] = { 30, 867, 1301, 6, }, - [28] = { 31, 947, 1420, 7, }, - [29] = { 31, 1033, 1550, 7, }, - [30] = { 32, 1127, 1691, 7, }, - }, -} -gems["Vaal Cold Snap"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - cold = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [12] = true, [43] = true, [34] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 1.4), - skill("critChance", 5), - skill("duration", 10), --"base_skill_effect_duration" = 10000 - mod("EnemyFreezeChance", "BASE", 100), --"base_chance_to_freeze_%" = 100 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [2] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 11, 17, }, - [2] = { 14, 21, }, - [3] = { 18, 28, }, - [4] = { 24, 35, }, - [5] = { 32, 48, }, - [6] = { 42, 63, }, - [7] = { 55, 82, }, - [8] = { 70, 105, }, - [9] = { 88, 132, }, - [10] = { 111, 166, }, - [11] = { 137, 206, }, - [12] = { 170, 255, }, - [13] = { 208, 313, }, - [14] = { 255, 382, }, - [15] = { 295, 443, }, - [16] = { 342, 512, }, - [17] = { 394, 591, }, - [18] = { 454, 682, }, - [19] = { 523, 784, }, - [20] = { 600, 901, }, - [21] = { 658, 987, }, - [22] = { 721, 1081, }, - [23] = { 789, 1184, }, - [24] = { 863, 1295, }, - [25] = { 944, 1416, }, - [26] = { 1032, 1548, }, - [27] = { 1127, 1691, }, - [28] = { 1231, 1846, }, - [29] = { 1343, 2015, }, - [30] = { 1466, 2199, }, - }, -} -gems["Conductivity"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("SelfShockDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_shock_duration_-%" = -1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_lightning_damage_resistance_%" - [5] = mod("SelfShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" - }, - levels = { - [1] = { 24, 9, 0, -25, 10, }, - [2] = { 26, 9.1, 4, -26, 10, }, - [3] = { 27, 9.2, 8, -27, 10, }, - [4] = { 29, 9.3, 12, -28, 10, }, - [5] = { 30, 9.4, 16, -29, 10, }, - [6] = { 32, 9.5, 20, -30, 11, }, - [7] = { 34, 9.6, 24, -31, 11, }, - [8] = { 35, 9.7, 28, -32, 11, }, - [9] = { 37, 9.8, 32, -33, 11, }, - [10] = { 38, 9.9, 36, -34, 11, }, - [11] = { 39, 10, 40, -35, 12, }, - [12] = { 40, 10.1, 44, -36, 12, }, - [13] = { 42, 10.2, 48, -37, 12, }, - [14] = { 43, 10.3, 52, -38, 12, }, - [15] = { 44, 10.4, 56, -39, 12, }, - [16] = { 45, 10.5, 60, -40, 13, }, - [17] = { 46, 10.6, 64, -41, 13, }, - [18] = { 47, 10.7, 68, -42, 13, }, - [19] = { 48, 10.8, 72, -43, 13, }, - [20] = { 50, 10.9, 76, -44, 14, }, - [21] = { 51, 11, 80, -45, 14, }, - [22] = { 52, 11.1, 84, -46, 14, }, - [23] = { 53, 11.2, 88, -47, 15, }, - [24] = { 54, 11.3, 92, -48, 15, }, - [25] = { 56, 11.4, 96, -49, 15, }, - [26] = { 57, 11.5, 100, -50, 16, }, - [27] = { 58, 11.6, 104, -51, 16, }, - [28] = { 59, 11.7, 108, -52, 16, }, - [29] = { 60, 11.8, 112, -53, 17, }, - [30] = { 61, 11.9, 116, -54, 17, }, - }, -} -gems["Contagion"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - chaos = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [40] = true, [50] = true, [26] = true, [36] = true, [19] = true, [52] = true, [59] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"is_area_damage" = ? - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - skill("debuff", true), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - }, - levels = { - [1] = { 11, 3.1666666666667, }, - [2] = { 12, 3.9, }, - [3] = { 13, 5.15, }, - [4] = { 14, 6.65, }, - [5] = { 15, 9.0666666666667, }, - [6] = { 16, 12.066666666667, }, - [7] = { 17, 15.766666666667, }, - [8] = { 18, 20.3, }, - [9] = { 19, 25.866666666667, }, - [10] = { 20, 32.65, }, - [11] = { 21, 40.9, }, - [12] = { 22, 50.9, }, - [13] = { 23, 63, }, - [14] = { 24, 77.583333333333, }, - [15] = { 25, 90.466666666667, }, - [16] = { 26, 105.25, }, - [17] = { 26, 122.2, }, - [18] = { 27, 141.65, }, - [19] = { 27, 163.9, }, - [20] = { 28, 189.36666666667, }, - [21] = { 28, 208.35, }, - [22] = { 29, 229.08333333333, }, - [23] = { 29, 251.75, }, - [24] = { 30, 276.5, }, - [25] = { 30, 303.51666666667, }, - [26] = { 30, 333.03333333333, }, - [27] = { 30, 365.21666666667, }, - [28] = { 31, 400.35, }, - [29] = { 31, 438.66666666667, }, - [30] = { 32, 480.45, }, - }, -} -gems["Conversion Trap"] = { - trap = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - unsupported = true, -} -gems["Convocation"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - unsupported = true, -} -gems["Discharge"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - cold = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - lightning = true, - cold = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [36] = true, [45] = true, [33] = true, [34] = true, [35] = true, [60] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 1.5), - skill("critChance", 7), - --"skill_override_pvp_scaling_time_ms" = 1400 - mod("Damage", "MORE", -35, ModFlag.Spell, 0, { type = "Condition", var = "SkillIsTriggered" }), --"triggered_discharge_damage_+%_final" = -35 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_minimum_base_lightning_damage_per_power_charge" - [3] = skill("LightningMax", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_maximum_base_lightning_damage_per_power_charge" - [4] = skill("FireMin", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_minimum_base_fire_damage_per_endurance_charge" - [5] = skill("FireMax", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_maximum_base_fire_damage_per_endurance_charge" - [6] = skill("ColdMin", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_minimum_base_cold_damage_per_frenzy_charge" - [7] = skill("ColdMax", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_maximum_base_cold_damage_per_frenzy_charge" - }, - levels = { - [1] = { 24, 4, 77, 29, 43, 24, 36, }, - [2] = { 26, 5, 92, 34, 51, 28, 42, }, - [3] = { 27, 6, 108, 40, 60, 33, 49, }, - [4] = { 29, 7, 126, 47, 71, 39, 58, }, - [5] = { 31, 8, 147, 55, 83, 45, 68, }, - [6] = { 32, 9, 163, 61, 91, 50, 75, }, - [7] = { 33, 9, 180, 67, 101, 55, 82, }, - [8] = { 34, 10, 198, 74, 111, 61, 91, }, - [9] = { 35, 11, 218, 82, 122, 67, 100, }, - [10] = { 36, 13, 240, 90, 135, 73, 110, }, - [11] = { 37, 14, 263, 99, 148, 81, 121, }, - [12] = { 38, 15, 289, 108, 162, 88, 133, }, - [13] = { 39, 17, 317, 119, 178, 97, 146, }, - [14] = { 40, 18, 347, 130, 195, 106, 159, }, - [15] = { 41, 20, 380, 142, 213, 116, 174, }, - [16] = { 42, 22, 415, 155, 233, 127, 191, }, - [17] = { 44, 24, 454, 170, 255, 139, 208, }, - [18] = { 45, 26, 495, 185, 278, 152, 227, }, - [19] = { 46, 28, 540, 202, 303, 165, 248, }, - [20] = { 47, 31, 589, 220, 331, 180, 271, }, - [21] = { 48, 34, 642, 240, 360, 197, 295, }, - [22] = { 49, 37, 699, 262, 392, 214, 321, }, - [23] = { 50, 40, 761, 285, 427, 233, 349, }, - [24] = { 51, 44, 828, 310, 465, 253, 380, }, - [25] = { 52, 47, 900, 337, 505, 276, 413, }, - [26] = { 53, 51, 978, 366, 549, 299, 449, }, - [27] = { 54, 56, 1062, 397, 596, 325, 488, }, - [28] = { 55, 61, 1153, 431, 647, 353, 529, }, - [29] = { 57, 66, 1251, 468, 702, 383, 575, }, - [30] = { 58, 71, 1357, 508, 762, 416, 623, }, - }, -} -gems["Discipline"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("EnergyShield", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 60, 0, }, - [2] = { 70, 3, }, - [3] = { 78, 6, }, - [4] = { 89, 9, }, - [5] = { 100, 12, }, - [6] = { 111, 15, }, - [7] = { 125, 18, }, - [8] = { 139, 21, }, - [9] = { 154, 23, }, - [10] = { 165, 25, }, - [11] = { 173, 27, }, - [12] = { 187, 29, }, - [13] = { 201, 31, }, - [14] = { 213, 33, }, - [15] = { 227, 35, }, - [16] = { 239, 36, }, - [17] = { 253, 37, }, - [18] = { 269, 38, }, - [19] = { 281, 39, }, - [20] = { 303, 40, }, - [21] = { 315, 41, }, - [22] = { 330, 42, }, - [23] = { 340, 43, }, - [24] = { 357, 44, }, - [25] = { 374, 45, }, - [26] = { 384, 46, }, - [27] = { 406, 47, }, - [28] = { 425, 48, }, - [29] = { 450, 49, }, - [30] = { 455, 50, }, - }, -} -gems["Vaal Discipline"] = { - aura = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - mod("EnergyShield", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" = 0 - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"energy_shield_recharge_not_delayed_by_damage" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 0, }, - [2] = { 3, }, - [3] = { 6, }, - [4] = { 9, }, - [5] = { 12, }, - [6] = { 15, }, - [7] = { 18, }, - [8] = { 21, }, - [9] = { 23, }, - [10] = { 25, }, - [11] = { 27, }, - [12] = { 29, }, - [13] = { 31, }, - [14] = { 33, }, - [15] = { 35, }, - [16] = { 36, }, - [17] = { 37, }, - [18] = { 38, }, - [19] = { 39, }, - [20] = { 40, }, - [21] = { 41, }, - [22] = { 42, }, - [23] = { 43, }, - [24] = { 44, }, - [25] = { 45, }, - [26] = { 46, }, - [27] = { 47, }, - [28] = { 48, }, - [29] = { 49, }, - [30] = { 50, }, - }, -} -gems["Elemental Weakness"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("ElementalResist", "BASE", -0.25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" = -0.25 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" - }, - levels = { - [1] = { 24, 9, 0, -20, }, - [2] = { 26, 9.1, 4, -21, }, - [3] = { 27, 9.2, 8, -22, }, - [4] = { 29, 9.3, 12, -23, }, - [5] = { 30, 9.4, 16, -24, }, - [6] = { 32, 9.5, 20, -25, }, - [7] = { 34, 9.6, 24, -26, }, - [8] = { 35, 9.7, 28, -27, }, - [9] = { 37, 9.8, 32, -28, }, - [10] = { 38, 9.9, 36, -29, }, - [11] = { 39, 10, 40, -30, }, - [12] = { 40, 10.1, 44, -31, }, - [13] = { 42, 10.2, 48, -32, }, - [14] = { 43, 10.3, 52, -33, }, - [15] = { 44, 10.4, 56, -34, }, - [16] = { 45, 10.5, 60, -35, }, - [17] = { 46, 10.6, 64, -36, }, - [18] = { 47, 10.7, 68, -37, }, - [19] = { 48, 10.8, 72, -38, }, - [20] = { 50, 10.9, 76, -39, }, - [21] = { 51, 11, 80, -40, }, - [22] = { 52, 11.1, 84, -41, }, - [23] = { 53, 11.2, 88, -42, }, - [24] = { 54, 11.3, 92, -43, }, - [25] = { 56, 11.4, 96, -44, }, - [26] = { 57, 11.5, 100, -45, }, - [27] = { 58, 11.6, 104, -46, }, - [28] = { 59, 11.7, 108, -47, }, - [29] = { 60, 11.8, 112, -48, }, - [30] = { 61, 11.9, 116, -49, }, - }, -} -gems["Enfeeble"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("CritChance", "INC", -25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -25 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("Accuracy", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -0.5 - mod("CritChance", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" - [5] = mod("Damage", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" - [6] = mod("CritMultiplier", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" - }, - levels = { - [1] = { 24, 9, 0, -18, -21, -21, }, - [2] = { 26, 9.1, 4, -19, -21, -21, }, - [3] = { 27, 9.2, 8, -20, -22, -22, }, - [4] = { 29, 9.3, 12, -21, -22, -22, }, - [5] = { 30, 9.4, 16, -22, -23, -23, }, - [6] = { 32, 9.5, 20, -23, -23, -23, }, - [7] = { 34, 9.6, 24, -24, -24, -24, }, - [8] = { 35, 9.7, 28, -25, -24, -24, }, - [9] = { 37, 9.8, 32, -26, -25, -25, }, - [10] = { 38, 9.9, 36, -27, -25, -25, }, - [11] = { 39, 10, 40, -28, -26, -26, }, - [12] = { 40, 10.1, 44, -29, -26, -26, }, - [13] = { 42, 10.2, 48, -30, -27, -27, }, - [14] = { 43, 10.3, 52, -31, -27, -27, }, - [15] = { 44, 10.4, 56, -32, -28, -28, }, - [16] = { 45, 10.5, 60, -33, -28, -28, }, - [17] = { 46, 10.6, 64, -34, -29, -29, }, - [18] = { 47, 10.7, 68, -35, -29, -29, }, - [19] = { 48, 10.8, 72, -36, -30, -30, }, - [20] = { 50, 10.9, 76, -37, -30, -30, }, - [21] = { 51, 11, 80, -38, -31, -31, }, - [22] = { 52, 11.1, 84, -39, -31, -31, }, - [23] = { 53, 11.2, 88, -40, -32, -32, }, - [24] = { 54, 11.3, 92, -41, -32, -32, }, - [25] = { 56, 11.4, 96, -42, -33, -33, }, - [26] = { 57, 11.5, 100, -43, -33, -33, }, - [27] = { 58, 11.6, 104, -44, -34, -34, }, - [28] = { 59, 11.7, 108, -45, -34, -34, }, - [29] = { 60, 11.8, 112, -46, -35, -35, }, - [30] = { 61, 11.9, 116, -47, -35, -35, }, - }, -} -gems["Essence Drain"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - chaos = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [3] = true, [12] = true, [18] = true, [26] = true, [40] = true, [50] = true, [10] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"siphon_life_leech_from_damage_permyriad" = 50 - skill("duration", 3.8), --"base_skill_effect_duration" = 3800 - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - --"base_is_projectile" = ? - skill("debuff", true), - skill("showAverage", true), - }, - qualityMods = { - mod("ChaosDamage", "INC", 1), --"chaos_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - [3] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" - [4] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" - }, - levels = { - [1] = { 9, 21.483333333333, 6, 9, }, - [2] = { 10, 27.566666666667, 8, 12, }, - [3] = { 11, 37.6, 11, 16, }, - [4] = { 12, 50.3, 14, 22, }, - [5] = { 13, 66.266666666667, 19, 29, }, - [6] = { 14, 86.283333333333, 25, 37, }, - [7] = { 16, 111.26666666667, 32, 48, }, - [8] = { 16, 133.93333333333, 39, 58, }, - [9] = { 17, 160.58333333333, 46, 69, }, - [10] = { 18, 191.85, 55, 83, }, - [11] = { 19, 228.5, 66, 99, }, - [12] = { 20, 271.4, 78, 117, }, - [13] = { 21, 321.53333333333, 93, 139, }, - [14] = { 22, 380.05, 109, 164, }, - [15] = { 23, 448.3, 129, 194, }, - [16] = { 24, 527.78333333333, 152, 228, }, - [17] = { 24, 587.88333333333, 169, 254, }, - [18] = { 25, 654.35, 188, 283, }, - [19] = { 26, 727.81666666667, 210, 314, }, - [20] = { 27, 809, 233, 349, }, - [21] = { 28, 898.68333333333, 259, 388, }, - [22] = { 29, 997.7, 287, 431, }, - [23] = { 29, 1107, 319, 478, }, - [24] = { 30, 1227.6, 354, 530, }, - [25] = { 30, 1360.6333333333, 392, 588, }, - [26] = { 31, 1507.3333333333, 434, 651, }, - [27] = { 32, 1669.0666666667, 481, 721, }, - [28] = { 33, 1847.3, 532, 798, }, - [29] = { 33, 2043.6833333333, 589, 883, }, - [30] = { 34, 2260, 651, 976, }, - }, -} -gems["Fire Nova Mine"] = { - area = true, - mine = true, - intelligence = true, - active_skill = true, - spell = true, - fire = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - mine = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [36] = true, [11] = true, [33] = true, [26] = true, [41] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.4), - skill("damageEffectiveness", 0.3), - skill("critChance", 5), - --"base_mine_duration" = 16000 - skill("repeatCount", 3), --"base_spell_repeat_count" = 3 - --"base_skill_is_mined" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_remote_mine" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - --[4] = "fire_nova_damage_+%_per_repeat_final" - }, - levels = { - [1] = { 12, 6, 9, 20, }, - [2] = { 13, 7, 11, 20, }, - [3] = { 15, 10, 14, 21, }, - [4] = { 17, 12, 18, 21, }, - [5] = { 18, 16, 23, 22, }, - [6] = { 20, 20, 29, 22, }, - [7] = { 22, 24, 36, 23, }, - [8] = { 23, 28, 43, 23, }, - [9] = { 24, 33, 50, 24, }, - [10] = { 25, 39, 58, 24, }, - [11] = { 27, 45, 67, 25, }, - [12] = { 28, 52, 77, 25, }, - [13] = { 29, 60, 89, 26, }, - [14] = { 31, 68, 103, 26, }, - [15] = { 32, 79, 118, 27, }, - [16] = { 33, 90, 135, 27, }, - [17] = { 34, 98, 148, 28, }, - [18] = { 35, 107, 161, 28, }, - [19] = { 36, 117, 176, 29, }, - [20] = { 36, 128, 192, 29, }, - [21] = { 37, 140, 210, 30, }, - [22] = { 38, 152, 228, 30, }, - [23] = { 39, 166, 249, 31, }, - [24] = { 40, 181, 271, 31, }, - [25] = { 41, 197, 295, 32, }, - [26] = { 41, 214, 321, 32, }, - [27] = { 42, 232, 349, 33, }, - [28] = { 43, 253, 379, 33, }, - [29] = { 44, 274, 412, 34, }, - [30] = { 45, 298, 447, 34, }, - }, -} -gems["Fireball"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - parts = { - { - name = "Projectile", - area = false, - }, - { - name = "Explosion", - area = true, - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - fire = true, - }, - skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("critChance", 6), - --"base_is_projectile" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 0.5), --"base_chance_to_ignite_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = mod("EnemyIgniteChance", "BASE", nil), --"base_chance_to_ignite_%" - --[5] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 7, 10, 20, 0, }, - [2] = { 6, 8, 11, 21, 0, }, - [3] = { 7, 10, 14, 22, 0, }, - [4] = { 8, 13, 20, 23, 0, }, - [5] = { 9, 19, 29, 24, 0, }, - [6] = { 10, 29, 43, 25, 1, }, - [7] = { 11, 39, 58, 26, 1, }, - [8] = { 12, 52, 77, 27, 1, }, - [9] = { 13, 67, 101, 28, 1, }, - [10] = { 15, 87, 131, 29, 1, }, - [11] = { 16, 112, 168, 30, 1, }, - [12] = { 17, 142, 213, 31, 2, }, - [13] = { 18, 180, 270, 32, 2, }, - [14] = { 19, 226, 339, 33, 2, }, - [15] = { 21, 283, 424, 34, 2, }, - [16] = { 22, 352, 528, 35, 2, }, - [17] = { 23, 437, 655, 36, 2, }, - [18] = { 24, 540, 810, 37, 3, }, - [19] = { 25, 632, 948, 38, 3, }, - [20] = { 26, 739, 1109, 39, 3, }, - [21] = { 27, 819, 1229, 40, 3, }, - [22] = { 27, 908, 1362, 41, 3, }, - [23] = { 28, 1005, 1508, 42, 3, }, - [24] = { 28, 1113, 1669, 43, 4, }, - [25] = { 29, 1231, 1847, 44, 4, }, - [26] = { 30, 1361, 2042, 45, 4, }, - [27] = { 30, 1504, 2257, 46, 4, }, - [28] = { 31, 1662, 2493, 47, 4, }, - [29] = { 31, 1835, 2752, 48, 4, }, - [30] = { 32, 2025, 3038, 49, 5, }, - }, -} -gems["Vaal Fireball"] = { - projectile = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - fire = true, - parts = { - { - name = "Projectile", - area = false, - }, - { - name = "Explosion", - area = true, - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - fire = true, - vaal = true, - }, - skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 1.25), - skill("critChance", 6), - --"base_number_of_projectiles_in_spiral_nova" = 32 - --"projectile_spiral_nova_time_ms" = 2000 - --"projectile_spiral_nova_angle" = -720 - mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1.5), --"base_chance_to_ignite_%" = 1.5 - }, - levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 8, 11, }, - [2] = { 9, 13, }, - [3] = { 11, 16, }, - [4] = { 14, 22, }, - [5] = { 20, 30, }, - [6] = { 30, 45, }, - [7] = { 39, 59, }, - [8] = { 51, 76, }, - [9] = { 65, 98, }, - [10] = { 82, 124, }, - [11] = { 103, 155, }, - [12] = { 128, 192, }, - [13] = { 158, 238, }, - [14] = { 195, 292, }, - [15] = { 238, 357, }, - [16] = { 289, 434, }, - [17] = { 351, 526, }, - [18] = { 424, 636, }, - [19] = { 488, 732, }, - [20] = { 560, 841, }, - [21] = { 614, 921, }, - [22] = { 673, 1009, }, - [23] = { 736, 1105, }, - [24] = { 806, 1209, }, - [25] = { 881, 1322, }, - [26] = { 963, 1445, }, - [27] = { 1052, 1578, }, - [28] = { 1149, 1723, }, - [29] = { 1254, 1881, }, - [30] = { 1368, 2052, }, - }, -} -gems["Firestorm"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.9), - skill("damageEffectiveness", 0.3), - skill("critChance", 6), - skill("duration", 2), --"base_skill_effect_duration" = 2000 - --"fire_storm_fireball_delay_ms" = 100 - --"is_area_damage" = 1 - --"skill_override_pvp_scaling_time_ms" = 450 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 9, 4, 10, }, - [2] = { 10, 9, 13, }, - [3] = { 11, 11, 17, }, - [4] = { 12, 15, 22, }, - [5] = { 13, 19, 28, }, - [6] = { 14, 23, 35, }, - [7] = { 15, 29, 44, }, - [8] = { 16, 35, 52, }, - [9] = { 17, 40, 61, }, - [10] = { 18, 47, 71, }, - [11] = { 19, 55, 82, }, - [12] = { 20, 64, 95, }, - [13] = { 21, 74, 110, }, - [14] = { 22, 85, 127, }, - [15] = { 23, 98, 147, }, - [16] = { 24, 112, 169, }, - [17] = { 24, 123, 185, }, - [18] = { 25, 135, 203, }, - [19] = { 25, 148, 222, }, - [20] = { 26, 162, 243, }, - [21] = { 26, 177, 265, }, - [22] = { 27, 193, 290, }, - [23] = { 27, 211, 317, }, - [24] = { 28, 231, 346, }, - [25] = { 29, 251, 377, }, - [26] = { 30, 274, 411, }, - [27] = { 30, 299, 448, }, - [28] = { 30, 326, 488, }, - [29] = { 31, 355, 532, }, - [30] = { 32, 386, 579, }, - }, -} -gems["Flame Dash"] = { - intelligence = true, - active_skill = true, - spell = true, - movement = true, - duration = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - movement = true, - fire = true, - }, - skillTypes = { [2] = true, [38] = true, [10] = true, [40] = true, [12] = true, [18] = true, [36] = true, [33] = true, [17] = true, [19] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("critChance", 6), - skill("duration", 4), --"base_skill_effect_duration" = 4000 - --"is_area_damage" = ? - --"firestorm_use_server_effects" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - }, - levels = { - [1] = { 10, 6, 9, 10.9, }, - [2] = { 11, 8, 11, 14.3, }, - [3] = { 12, 11, 16, 20.016666666667, }, - [4] = { 13, 15, 22, 27.366666666667, }, - [5] = { 14, 20, 29, 36.816666666667, }, - [6] = { 15, 26, 39, 48.866666666667, }, - [7] = { 16, 34, 51, 64.15, }, - [8] = { 17, 42, 63, 78.233333333333, }, - [9] = { 18, 51, 76, 94.983333333333, }, - [10] = { 20, 61, 92, 114.9, }, - [11] = { 21, 74, 111, 138.5, }, - [12] = { 22, 89, 133, 166.48333333333, }, - [13] = { 24, 106, 160, 199.55, }, - [14] = { 25, 127, 191, 238.61666666667, }, - [15] = { 26, 152, 228, 284.7, }, - [16] = { 27, 181, 271, 339, }, - [17] = { 28, 215, 322, 402.9, }, - [18] = { 29, 255, 382, 478.05, }, - [19] = { 30, 285, 428, 535.3, }, - [20] = { 30, 319, 479, 599.01666666667, }, - [21] = { 31, 357, 536, 669.9, }, - [22] = { 32, 399, 599, 748.71666666667, }, - [23] = { 33, 446, 669, 836.35, }, - [24] = { 34, 498, 747, 933.7, }, - [25] = { 34, 556, 833, 1041.8666666667, }, - [26] = { 35, 620, 930, 1161.9666666667, }, - [27] = { 36, 691, 1036, 1295.3166666667, }, - [28] = { 37, 770, 1155, 1443.3, }, - [29] = { 38, 857, 1286, 1607.4833333333, }, - [30] = { 38, 954, 1432, 1789.6, }, - }, -} -gems["Flame Surge"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [11] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("critChance", 6), - mod("Damage", "MORE", 50, bit.bor(ModFlag.Spell, ModFlag.Hit), 0, { type = "Condition", var = "EnemyBurning" }), --"flame_whip_damage_+%_final_vs_burning_enemies" = 50 - flag("CannotIgnite"), --"never_ignite" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 5, 21, 31, }, - [2] = { 6, 26, 39, }, - [3] = { 6, 35, 52, }, - [4] = { 7, 45, 67, }, - [5] = { 7, 57, 86, }, - [6] = { 8, 73, 109, }, - [7] = { 9, 91, 137, }, - [8] = { 9, 107, 161, }, - [9] = { 10, 126, 189, }, - [10] = { 10, 147, 221, }, - [11] = { 11, 171, 257, }, - [12] = { 12, 199, 299, }, - [13] = { 12, 231, 346, }, - [14] = { 13, 267, 401, }, - [15] = { 13, 308, 462, }, - [16] = { 13, 355, 533, }, - [17] = { 13, 390, 585, }, - [18] = { 14, 428, 642, }, - [19] = { 15, 469, 703, }, - [20] = { 15, 514, 771, }, - [21] = { 15, 563, 844, }, - [22] = { 15, 616, 923, }, - [23] = { 16, 673, 1010, }, - [24] = { 16, 736, 1104, }, - [25] = { 17, 804, 1206, }, - [26] = { 18, 878, 1317, }, - [27] = { 18, 958, 1437, }, - [28] = { 18, 1045, 1567, }, - [29] = { 18, 1139, 1709, }, - [30] = { 19, 1242, 1863, }, - }, -} -gems["Flameblast"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - channelling = true, - parts = { - { - name = "1 Stage", - }, - { - name = "10 Stages", - }, - }, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [33] = true, [58] = true, }, - baseMods = { - skill("castTime", 0.2), - skill("damageEffectiveness", 0.5), - skill("critChance", 5), - --"charged_blast_spell_damage_+%_final_per_stack" = 110 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - mod("Damage", "MORE", 990, 0, 0, { type = "SkillPart", skillPart = 2 }), - skill("dpsMultiplier", 0.1, { type = "SkillPart", skillPart = 2 }), - skill("showAverage", false), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 6, 32, 48, }, - [2] = { 6, 38, 57, }, - [3] = { 6, 45, 67, }, - [4] = { 6, 52, 78, }, - [5] = { 7, 61, 91, }, - [6] = { 7, 67, 101, }, - [7] = { 7, 74, 111, }, - [8] = { 7, 82, 123, }, - [9] = { 7, 90, 135, }, - [10] = { 8, 99, 148, }, - [11] = { 8, 109, 163, }, - [12] = { 8, 119, 179, }, - [13] = { 8, 130, 196, }, - [14] = { 8, 143, 214, }, - [15] = { 9, 156, 234, }, - [16] = { 9, 171, 256, }, - [17] = { 9, 186, 279, }, - [18] = { 9, 203, 305, }, - [19] = { 9, 221, 332, }, - [20] = { 9, 241, 362, }, - [21] = { 10, 263, 394, }, - [22] = { 10, 286, 429, }, - [23] = { 10, 311, 466, }, - [24] = { 11, 338, 507, }, - [25] = { 11, 367, 550, }, - [26] = { 11, 398, 598, }, - [27] = { 12, 432, 649, }, - [28] = { 12, 469, 704, }, - [29] = { 12, 509, 763, }, - [30] = { 13, 551, 827, }, - }, -} -gems["Vaal Flameblast"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"charged_blast_spell_damage_+%_final_per_stack" = 110 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - mod("Damage", "MORE", 1100, ModFlag.Spell), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 39, 58, }, - [2] = { 46, 68, }, - [3] = { 53, 80, }, - [4] = { 62, 93, }, - [5] = { 71, 107, }, - [6] = { 78, 117, }, - [7] = { 86, 129, }, - [8] = { 94, 141, }, - [9] = { 103, 154, }, - [10] = { 113, 169, }, - [11] = { 123, 184, }, - [12] = { 134, 201, }, - [13] = { 146, 219, }, - [14] = { 159, 238, }, - [15] = { 173, 259, }, - [16] = { 188, 282, }, - [17] = { 204, 306, }, - [18] = { 221, 332, }, - [19] = { 240, 360, }, - [20] = { 260, 390, }, - [21] = { 281, 422, }, - [22] = { 305, 457, }, - [23] = { 329, 494, }, - [24] = { 356, 534, }, - [25] = { 385, 577, }, - [26] = { 416, 623, }, - [27] = { 449, 673, }, - [28] = { 484, 726, }, - [29] = { 522, 783, }, - [30] = { 563, 844, }, - }, -} -gems["Flammability"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("SelfIgniteDuration", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_ignite_duration_-%" = -0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_fire_damage_resistance_%" - [5] = mod("SelfIgniteChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" - }, - levels = { - [1] = { 24, 9, 0, -25, 10, }, - [2] = { 26, 9.1, 4, -26, 10, }, - [3] = { 27, 9.2, 8, -27, 10, }, - [4] = { 29, 9.3, 12, -28, 10, }, - [5] = { 30, 9.4, 16, -29, 10, }, - [6] = { 32, 9.5, 20, -30, 11, }, - [7] = { 34, 9.6, 24, -31, 11, }, - [8] = { 35, 9.7, 28, -32, 11, }, - [9] = { 37, 9.8, 32, -33, 11, }, - [10] = { 38, 9.9, 36, -34, 11, }, - [11] = { 39, 10, 40, -35, 12, }, - [12] = { 40, 10.1, 44, -36, 12, }, - [13] = { 42, 10.2, 48, -37, 12, }, - [14] = { 43, 10.3, 52, -38, 12, }, - [15] = { 44, 10.4, 56, -39, 12, }, - [16] = { 45, 10.5, 60, -40, 13, }, - [17] = { 46, 10.6, 64, -41, 13, }, - [18] = { 47, 10.7, 68, -42, 13, }, - [19] = { 48, 10.8, 72, -43, 13, }, - [20] = { 50, 10.9, 76, -44, 14, }, - [21] = { 51, 11, 80, -45, 14, }, - [22] = { 52, 11.1, 84, -46, 14, }, - [23] = { 53, 11.2, 88, -47, 15, }, - [24] = { 54, 11.3, 92, -48, 15, }, - [25] = { 56, 11.4, 96, -49, 15, }, - [26] = { 57, 11.5, 100, -50, 16, }, - [27] = { 58, 11.6, 104, -51, 16, }, - [28] = { 59, 11.7, 108, -52, 16, }, - [29] = { 60, 11.8, 112, -53, 17, }, - [30] = { 61, 11.9, 116, -54, 17, }, - }, -} -gems["Flesh Offering"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"offering_skill_effect_duration_per_corpse" = 500 - --"base_deal_no_damage" = ? - skill("offering", true), - }, - qualityMods = { - mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" - [4] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff" }), --"cast_speed_+%_from_haste_aura" - }, - levels = { - [1] = { 16, 20, 20, 20, }, - [2] = { 17, 21, 20, 21, }, - [3] = { 18, 21, 21, 21, }, - [4] = { 19, 22, 21, 22, }, - [5] = { 20, 22, 22, 22, }, - [6] = { 21, 23, 22, 23, }, - [7] = { 22, 23, 23, 23, }, - [8] = { 23, 24, 23, 24, }, - [9] = { 24, 24, 24, 24, }, - [10] = { 25, 25, 24, 25, }, - [11] = { 26, 25, 25, 25, }, - [12] = { 27, 26, 25, 26, }, - [13] = { 28, 26, 26, 26, }, - [14] = { 29, 27, 26, 27, }, - [15] = { 29, 27, 27, 27, }, - [16] = { 30, 28, 27, 28, }, - [17] = { 30, 28, 28, 28, }, - [18] = { 31, 29, 28, 29, }, - [19] = { 32, 29, 29, 29, }, - [20] = { 33, 30, 29, 30, }, - [21] = { 34, 30, 30, 30, }, - [22] = { 34, 31, 30, 31, }, - [23] = { 35, 31, 31, 31, }, - [24] = { 36, 32, 31, 32, }, - [25] = { 37, 32, 32, 32, }, - [26] = { 38, 33, 32, 33, }, - [27] = { 38, 33, 33, 33, }, - [28] = { 39, 34, 33, 34, }, - [29] = { 40, 34, 34, 34, }, - [30] = { 41, 35, 34, 35, }, - }, -} -gems["Freezing Pulse"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - cold = true, - setupFunc = function(env, output) - env.modDB:NewMod("Damage", "MORE", -100, "Skill:Freezing Pulse", ModFlag.Spell, { type = "DistanceRamp", ramp = {{0,0},{60*output.ProjectileSpeedMod,1}} }) - env.modDB:NewMod("EnemyFreezeChance", "BASE", 25, "Skill:Freezing Pulse", { type = "DistanceRamp", ramp = {{0,1},{15*output.ProjectileSpeedMod,0}} }) - end, - color = 3, - baseFlags = { - spell = true, - projectile = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.65), - skill("damageEffectiveness", 1.25), - skill("critChance", 6), - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" - }, - levels = { - [1] = { 4, 7, 11, 0, }, - [2] = { 5, 8, 13, 1, }, - [3] = { 6, 11, 16, 2, }, - [4] = { 7, 15, 23, 3, }, - [5] = { 8, 22, 33, 4, }, - [6] = { 9, 32, 49, 5, }, - [7] = { 10, 43, 65, 6, }, - [8] = { 11, 57, 85, 7, }, - [9] = { 12, 73, 110, 8, }, - [10] = { 13, 93, 140, 9, }, - [11] = { 14, 118, 176, 10, }, - [12] = { 14, 148, 221, 11, }, - [13] = { 15, 184, 276, 12, }, - [14] = { 16, 228, 342, 13, }, - [15] = { 17, 281, 421, 14, }, - [16] = { 18, 345, 517, 15, }, - [17] = { 18, 422, 633, 16, }, - [18] = { 18, 515, 772, 17, }, - [19] = { 18, 596, 894, 18, }, - [20] = { 18, 689, 1034, 19, }, - [21] = { 18, 759, 1138, 20, }, - [22] = { 19, 835, 1252, 21, }, - [23] = { 19, 918, 1377, 22, }, - [24] = { 19, 1009, 1513, 23, }, - [25] = { 20, 1108, 1662, 24, }, - [26] = { 20, 1216, 1824, 25, }, - [27] = { 20, 1335, 2002, 26, }, - [28] = { 21, 1464, 2196, 27, }, - [29] = { 21, 1605, 2407, 28, }, - [30] = { 21, 1759, 2638, 29, }, - }, -} -gems["Frost Bomb"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [34] = true, [10] = true, [26] = true, [18] = true, [17] = true, [19] = true, [36] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 1.3), - skill("critChance", 6), - skill("duration", 3.5), --"base_skill_effect_duration" = 3500 - --"base_secondary_skill_effect_duration" = 2000 - mod("ColdResist", "BASE", -20, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_cold_damage_resistance_%" = -20 - --"life_regeneration_rate_+%" = -75 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 6, 10, 14, }, - [2] = { 7, 12, 18, }, - [3] = { 8, 15, 23, }, - [4] = { 9, 20, 30, }, - [5] = { 10, 27, 40, }, - [6] = { 11, 36, 54, }, - [7] = { 12, 46, 70, }, - [8] = { 13, 59, 89, }, - [9] = { 13, 75, 113, }, - [10] = { 14, 94, 142, }, - [11] = { 14, 118, 176, }, - [12] = { 15, 145, 218, }, - [13] = { 16, 179, 268, }, - [14] = { 16, 219, 329, }, - [15] = { 17, 254, 382, }, - [16] = { 18, 295, 442, }, - [17] = { 18, 341, 511, }, - [18] = { 19, 393, 590, }, - [19] = { 19, 453, 679, }, - [20] = { 19, 521, 781, }, - [21] = { 20, 572, 857, }, - [22] = { 21, 627, 940, }, - [23] = { 21, 687, 1030, }, - [24] = { 21, 752, 1128, }, - [25] = { 22, 823, 1235, }, - [26] = { 23, 900, 1351, }, - [27] = { 23, 985, 1477, }, - [28] = { 23, 1076, 1614, }, - [29] = { 24, 1176, 1764, }, - [30] = { 24, 1284, 1926, }, - }, -} -gems["Frost Wall"] = { - intelligence = true, - active_skill = true, - spell = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.5), - --"wall_expand_delay_ms" = 150 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - --[3] = "wall_maximum_length" - [4] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [5] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 14, 3, 28, 8, 12, }, - [2] = { 16, 3.1, 28, 9, 16, }, - [3] = { 18, 3.2, 28, 14, 23, }, - [4] = { 20, 3.3, 28, 18, 27, }, - [5] = { 21, 3.4, 35, 25, 37, }, - [6] = { 23, 3.5, 35, 32, 49, }, - [7] = { 24, 3.6, 35, 42, 63, }, - [8] = { 25, 3.7, 35, 54, 81, }, - [9] = { 26, 3.8, 42, 68, 102, }, - [10] = { 27, 3.9, 42, 85, 128, }, - [11] = { 28, 4, 42, 106, 159, }, - [12] = { 29, 4.1, 42, 131, 196, }, - [13] = { 30, 4.2, 49, 160, 240, }, - [14] = { 31, 4.3, 49, 196, 294, }, - [15] = { 32, 4.4, 49, 227, 341, }, - [16] = { 33, 4.5, 49, 263, 394, }, - [17] = { 34, 4.6, 56, 303, 455, }, - [18] = { 35, 4.7, 56, 350, 524, }, - [19] = { 36, 4.8, 56, 402, 603, }, - [20] = { 37, 4.9, 56, 462, 693, }, - [21] = { 38, 5, 63, 506, 759, }, - [22] = { 38, 5.1, 63, 554, 832, }, - [23] = { 38, 5.2, 63, 607, 910, }, - [24] = { 39, 5.3, 63, 664, 996, }, - [25] = { 40, 5.4, 70, 726, 1089, }, - [26] = { 40, 5.5, 70, 794, 1191, }, - [27] = { 41, 5.6, 70, 867, 1301, }, - [28] = { 42, 5.7, 70, 947, 1420, }, - [29] = { 42, 5.8, 77, 1033, 1550, }, - [30] = { 42, 5.9, 77, 1127, 1691, }, - }, -} -gems["Frostbite"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("SelfFreezeDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_freeze_duration_-%" = -1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_cold_damage_resistance_%" - [5] = mod("SelfFreezeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" - }, - levels = { - [1] = { 24, 9, 0, -25, 10, }, - [2] = { 26, 9.1, 4, -26, 10, }, - [3] = { 27, 9.2, 8, -27, 10, }, - [4] = { 29, 9.3, 12, -28, 10, }, - [5] = { 30, 9.4, 16, -29, 10, }, - [6] = { 32, 9.5, 20, -30, 11, }, - [7] = { 34, 9.6, 24, -31, 11, }, - [8] = { 35, 9.7, 28, -32, 11, }, - [9] = { 37, 9.8, 32, -33, 11, }, - [10] = { 38, 9.9, 36, -34, 11, }, - [11] = { 39, 10, 40, -35, 12, }, - [12] = { 40, 10.1, 44, -36, 12, }, - [13] = { 42, 10.2, 48, -37, 12, }, - [14] = { 43, 10.3, 52, -38, 12, }, - [15] = { 44, 10.4, 56, -39, 12, }, - [16] = { 45, 10.5, 60, -40, 13, }, - [17] = { 46, 10.6, 64, -41, 13, }, - [18] = { 47, 10.7, 68, -42, 13, }, - [19] = { 48, 10.8, 72, -43, 13, }, - [20] = { 50, 10.9, 76, -44, 14, }, - [21] = { 51, 11, 80, -45, 14, }, - [22] = { 52, 11.1, 84, -46, 14, }, - [23] = { 53, 11.2, 88, -47, 15, }, - [24] = { 54, 11.3, 92, -48, 15, }, - [25] = { 56, 11.4, 96, -49, 15, }, - [26] = { 57, 11.5, 100, -50, 16, }, - [27] = { 58, 11.6, 104, -51, 16, }, - [28] = { 59, 11.7, 108, -52, 16, }, - [29] = { 60, 11.8, 112, -53, 17, }, - [30] = { 61, 11.9, 116, -54, 17, }, - }, -} -gems["Frostbolt"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("critChance", 5), - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 6, 6, 10, }, - [2] = { 6, 7, 11, }, - [3] = { 7, 9, 14, }, - [4] = { 8, 13, 19, }, - [5] = { 9, 18, 27, }, - [6] = { 10, 28, 42, }, - [7] = { 11, 38, 57, }, - [8] = { 12, 50, 75, }, - [9] = { 13, 66, 99, }, - [10] = { 14, 86, 128, }, - [11] = { 14, 110, 165, }, - [12] = { 15, 141, 211, }, - [13] = { 16, 178, 268, }, - [14] = { 16, 225, 338, }, - [15] = { 17, 283, 424, }, - [16] = { 18, 354, 530, }, - [17] = { 18, 440, 661, }, - [18] = { 19, 547, 820, }, - [19] = { 19, 642, 963, }, - [20] = { 20, 752, 1129, }, - [21] = { 20, 836, 1254, }, - [22] = { 21, 928, 1392, }, - [23] = { 21, 1030, 1544, }, - [24] = { 21, 1142, 1713, }, - [25] = { 22, 1266, 1898, }, - [26] = { 23, 1402, 2103, }, - [27] = { 23, 1552, 2329, }, - [28] = { 23, 1718, 2577, }, - [29] = { 24, 1901, 2851, }, - [30] = { 24, 2102, 3153, }, - }, -} -gems["Glacial Cascade"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"upheaval_number_of_spikes" = 7 - --"is_area_damage" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - [4] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [5] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 13, 12, 19, 23, 35, }, - [2] = { 14, 15, 23, 28, 42, }, - [3] = { 15, 18, 27, 33, 50, }, - [4] = { 16, 21, 32, 39, 59, }, - [5] = { 17, 25, 38, 46, 69, }, - [6] = { 18, 27, 42, 51, 77, }, - [7] = { 18, 31, 47, 57, 85, }, - [8] = { 19, 34, 52, 63, 95, }, - [9] = { 19, 38, 58, 70, 105, }, - [10] = { 20, 42, 64, 77, 116, }, - [11] = { 21, 46, 71, 85, 129, }, - [12] = { 21, 51, 78, 94, 142, }, - [13] = { 22, 56, 86, 104, 157, }, - [14] = { 22, 62, 95, 115, 173, }, - [15] = { 23, 68, 105, 127, 191, }, - [16] = { 24, 75, 116, 139, 210, }, - [17] = { 24, 83, 127, 153, 231, }, - [18] = { 25, 91, 140, 169, 254, }, - [19] = { 25, 100, 154, 185, 280, }, - [20] = { 26, 110, 169, 203, 307, }, - [21] = { 27, 120, 185, 223, 337, }, - [22] = { 27, 132, 203, 245, 369, }, - [23] = { 28, 145, 223, 268, 405, }, - [24] = { 28, 158, 244, 294, 443, }, - [25] = { 29, 174, 267, 322, 485, }, - [26] = { 30, 190, 292, 352, 531, }, - [27] = { 30, 208, 319, 385, 581, }, - [28] = { 31, 227, 349, 421, 635, }, - [29] = { 31, 248, 382, 460, 694, }, - [30] = { 32, 271, 417, 502, 758, }, - }, -} -gems["Herald of Thunder"] = { - intelligence = true, - active_skill = true, - cast = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - cast = true, - duration = true, - lightning = true, - }, - skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [12] = true, [35] = true, [27] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 25), - skill("damageEffectiveness", 1.2), - skill("duration", 6), --"base_skill_effect_duration" = 6000 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - flag("CannotShock"), --"never_shock" = ? - --"display_skill_deals_secondary_damage" = ? - --"skill_can_add_multiple_charges_per_action" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_thunder_lightning_damage_+%" = 0.75 - }, - levelMods = { - [1] = mod("LightningMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_lightning_damage" - [2] = mod("LightningMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_lightning_damage" - [3] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_lightning_damage" - [4] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_lightning_damage" - [5] = skill("LightningMin", nil), --"secondary_minimum_base_lightning_damage" - [6] = skill("LightningMax", nil), --"secondary_maximum_base_lightning_damage" - }, - levels = { - [1] = { 2, 7, 2, 7, 1, 34, }, - [2] = { 2, 9, 2, 9, 1, 47, }, - [3] = { 3, 11, 3, 11, 1, 65, }, - [4] = { 3, 14, 3, 14, 2, 87, }, - [5] = { 4, 16, 4, 16, 2, 108, }, - [6] = { 5, 18, 5, 18, 3, 135, }, - [7] = { 5, 21, 5, 21, 3, 166, }, - [8] = { 6, 24, 6, 24, 4, 203, }, - [9] = { 7, 27, 7, 27, 5, 248, }, - [10] = { 8, 31, 8, 31, 6, 301, }, - [11] = { 9, 35, 9, 35, 8, 363, }, - [12] = { 10, 39, 10, 39, 9, 436, }, - [13] = { 11, 44, 11, 44, 11, 522, }, - [14] = { 12, 49, 12, 49, 13, 623, }, - [15] = { 13, 53, 13, 53, 15, 708, }, - [16] = { 14, 57, 14, 57, 17, 803, }, - [17] = { 15, 61, 15, 61, 19, 908, }, - [18] = { 16, 66, 16, 66, 21, 1026, }, - [19] = { 18, 71, 18, 71, 24, 1157, }, - [20] = { 19, 76, 19, 76, 27, 1303, }, - [21] = { 20, 81, 20, 81, 31, 1451, }, - [22] = { 22, 87, 22, 87, 34, 1615, }, - [23] = { 23, 94, 23, 94, 38, 1796, }, - [24] = { 25, 100, 25, 100, 43, 1995, }, - [25] = { 27, 107, 27, 107, 48, 2215, }, - [26] = { 29, 115, 29, 115, 54, 2457, }, - [27] = { 31, 123, 31, 123, 60, 2723, }, - [28] = { 33, 131, 33, 131, 67, 3016, }, - [29] = { 35, 140, 35, 140, 75, 3338, }, - [30] = { 37, 150, 37, 150, 83, 3692, }, - }, -} -gems["Ice Nova"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.7), - skill("critChance", 6), - --"skill_art_variation" = 0 - --"is_area_damage" = 1 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 10, 15, 21, }, - [2] = { 11, 17, 27, }, - [3] = { 13, 24, 37, }, - [4] = { 14, 31, 49, }, - [5] = { 16, 41, 64, }, - [6] = { 17, 53, 83, }, - [7] = { 19, 68, 106, }, - [8] = { 20, 81, 127, }, - [9] = { 21, 96, 151, }, - [10] = { 22, 115, 179, }, - [11] = { 23, 136, 212, }, - [12] = { 24, 160, 250, }, - [13] = { 25, 188, 294, }, - [14] = { 26, 221, 346, }, - [15] = { 27, 259, 405, }, - [16] = { 28, 304, 474, }, - [17] = { 29, 337, 526, }, - [18] = { 30, 373, 583, }, - [19] = { 30, 413, 646, }, - [20] = { 31, 458, 715, }, - [21] = { 32, 506, 791, }, - [22] = { 33, 560, 875, }, - [23] = { 34, 619, 966, }, - [24] = { 34, 683, 1067, }, - [25] = { 34, 754, 1178, }, - [26] = { 34, 832, 1300, }, - [27] = { 35, 917, 1433, }, - [28] = { 35, 1011, 1580, }, - [29] = { 35, 1114, 1740, }, - [30] = { 35, 1227, 1917, }, - }, -} -gems["Vaal Ice Nova"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [34] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.7), - skill("critChance", 6), - --"ice_nova_number_of_repeats" = 5 - --"ice_nova_radius_+%_per_repeat" = -20 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [2] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 11, 17, }, - [2] = { 14, 22, }, - [3] = { 18, 29, }, - [4] = { 24, 37, }, - [5] = { 31, 48, }, - [6] = { 39, 61, }, - [7] = { 49, 76, }, - [8] = { 57, 89, }, - [9] = { 67, 105, }, - [10] = { 78, 123, }, - [11] = { 91, 143, }, - [12] = { 106, 166, }, - [13] = { 123, 193, }, - [14] = { 143, 223, }, - [15] = { 164, 257, }, - [16] = { 189, 296, }, - [17] = { 208, 325, }, - [18] = { 228, 357, }, - [19] = { 250, 391, }, - [20] = { 274, 428, }, - [21] = { 300, 469, }, - [22] = { 328, 513, }, - [23] = { 359, 561, }, - [24] = { 393, 613, }, - [25] = { 429, 670, }, - [26] = { 468, 732, }, - [27] = { 511, 799, }, - [28] = { 558, 871, }, - [29] = { 608, 950, }, - [30] = { 663, 1035, }, - }, -} -gems["Ice Spear"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - cold = true, - parts = { - { - name = "First Form", - }, - { - name = "Second Form", - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 0.8), - skill("critChance", 7), - --"base_is_projectile" = 1 - mod("CritChance", "INC", 600, 0, 0, { type = "SkillPart", skillPart = 2 }), --"ice_spear_second_form_critical_strike_chance_+%" = 600 - mod("PierceChance", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = mod("EnemyChillDuration", "INC", nil), --"chill_duration_+%" - }, - levels = { - [1] = { 9, 17, 26, 40, }, - [2] = { 10, 21, 31, 42, }, - [3] = { 11, 28, 42, 44, }, - [4] = { 12, 36, 53, 46, }, - [5] = { 13, 47, 70, 48, }, - [6] = { 14, 61, 91, 50, }, - [7] = { 16, 78, 117, 52, }, - [8] = { 16, 94, 140, 54, }, - [9] = { 17, 112, 168, 56, }, - [10] = { 18, 133, 200, 58, }, - [11] = { 19, 158, 237, 60, }, - [12] = { 20, 187, 281, 62, }, - [13] = { 21, 221, 332, 64, }, - [14] = { 22, 261, 391, 66, }, - [15] = { 23, 307, 460, 68, }, - [16] = { 24, 360, 540, 70, }, - [17] = { 24, 400, 600, 72, }, - [18] = { 25, 445, 667, 74, }, - [19] = { 26, 494, 741, 76, }, - [20] = { 27, 548, 822, 78, }, - [21] = { 28, 607, 911, 80, }, - [22] = { 29, 673, 1009, 82, }, - [23] = { 29, 745, 1118, 84, }, - [24] = { 30, 825, 1237, 86, }, - [25] = { 30, 912, 1369, 88, }, - [26] = { 31, 1009, 1513, 90, }, - [27] = { 32, 1115, 1672, 92, }, - [28] = { 33, 1232, 1847, 94, }, - [29] = { 33, 1360, 2040, 96, }, - [30] = { 34, 1501, 2251, 98, }, - }, -} -gems["Incinerate"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - fire = true, - channelling = true, - parts = { - { - name = "Base damage", - }, - { - name = "Fully charged", - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - fire = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [18] = true, [33] = true, [58] = true, }, - baseMods = { - skill("castTime", 0.2), - skill("damageEffectiveness", 0.3), - --"flamethrower_damage_+%_per_stage_final" = 50 - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - --"skill_can_add_multiple_charges_per_action" = ? - mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 6, 6, 9, }, - [2] = { 6, 7, 11, }, - [3] = { 6, 10, 15, }, - [4] = { 6, 13, 19, }, - [5] = { 6, 16, 24, }, - [6] = { 6, 20, 31, }, - [7] = { 6, 25, 38, }, - [8] = { 6, 30, 45, }, - [9] = { 7, 35, 52, }, - [10] = { 7, 41, 61, }, - [11] = { 7, 47, 71, }, - [12] = { 7, 54, 82, }, - [13] = { 7, 63, 94, }, - [14] = { 7, 72, 108, }, - [15] = { 8, 83, 125, }, - [16] = { 8, 95, 143, }, - [17] = { 8, 104, 157, }, - [18] = { 8, 114, 171, }, - [19] = { 8, 125, 187, }, - [20] = { 9, 136, 204, }, - [21] = { 9, 149, 223, }, - [22] = { 9, 162, 244, }, - [23] = { 9, 177, 266, }, - [24] = { 9, 193, 289, }, - [25] = { 9, 210, 315, }, - [26] = { 10, 229, 343, }, - [27] = { 10, 249, 374, }, - [28] = { 10, 271, 406, }, - [29] = { 10, 295, 442, }, - [30] = { 10, 320, 480, }, - }, -} -gems["Kinetic Blast"] = { - intelligence = true, - active_skill = true, - attack = true, - area = true, - projectile = true, - parts = { - { - name = "Projectile", - area = false, - }, - { - name = "Explosions", - area = true, - }, - }, - color = 3, - baseFlags = { - attack = true, - projectile = true, - area = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [11] = true, [17] = true, [19] = true, [22] = true, }, - weaponTypes = { - ["Wand"] = true, - }, - baseMods = { - skill("castTime", 1), - --"cluster_burst_spawn_amount" = 4 - mod("Damage", "MORE", -25, ModFlag.Area), --"active_skill_area_damage_+%_final" = -25 - --"base_is_projectile" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 15, 20, 0, }, - [2] = { 15, 21.4, 1, }, - [3] = { 15, 22.8, 2, }, - [4] = { 15, 24.2, 3, }, - [5] = { 15, 25.6, 4, }, - [6] = { 15, 27, 5, }, - [7] = { 15, 28.4, 6, }, - [8] = { 15, 29.8, 7, }, - [9] = { 16, 31.2, 8, }, - [10] = { 16, 32.6, 9, }, - [11] = { 16, 34, 10, }, - [12] = { 16, 35.4, 11, }, - [13] = { 16, 36.8, 12, }, - [14] = { 16, 38.2, 13, }, - [15] = { 16, 39.6, 14, }, - [16] = { 16, 41, 15, }, - [17] = { 16, 42.4, 16, }, - [18] = { 16, 43.8, 17, }, - [19] = { 16, 45.2, 18, }, - [20] = { 16, 46.6, 19, }, - [21] = { 16, 48, 20, }, - [22] = { 16, 49.4, 21, }, - [23] = { 16, 50.8, 22, }, - [24] = { 16, 52.2, 23, }, - [25] = { 17, 53.6, 24, }, - [26] = { 17, 55, 25, }, - [27] = { 17, 56.4, 26, }, - [28] = { 17, 57.8, 27, }, - [29] = { 17, 59.2, 28, }, - [30] = { 17, 60.6, 29, }, - }, -} -gems["Lightning Tendrils"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.35), - skill("critChance", 6), - --"base_skill_number_of_additional_hits" = 3 - --"is_area_damage" = ? - skill("dpsMultiplier", 4), - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 1, 3, 0, }, - [2] = { 7, 1, 4, 0, }, - [3] = { 8, 1, 5, 1, }, - [4] = { 9, 1, 7, 1, }, - [5] = { 10, 1, 10, 1, }, - [6] = { 11, 1, 16, 2, }, - [7] = { 12, 1, 21, 2, }, - [8] = { 13, 1, 28, 2, }, - [9] = { 14, 2, 38, 3, }, - [10] = { 16, 3, 49, 3, }, - [11] = { 18, 3, 64, 3, }, - [12] = { 19, 4, 82, 4, }, - [13] = { 20, 6, 105, 4, }, - [14] = { 21, 7, 133, 4, }, - [15] = { 22, 9, 168, 5, }, - [16] = { 23, 11, 212, 5, }, - [17] = { 24, 14, 265, 5, }, - [18] = { 25, 17, 332, 6, }, - [19] = { 26, 21, 392, 6, }, - [20] = { 26, 24, 461, 6, }, - [21] = { 27, 27, 514, 7, }, - [22] = { 27, 30, 573, 7, }, - [23] = { 28, 34, 638, 7, }, - [24] = { 28, 37, 710, 8, }, - [25] = { 29, 42, 790, 8, }, - [26] = { 29, 46, 878, 8, }, - [27] = { 30, 51, 975, 9, }, - [28] = { 30, 57, 1083, 9, }, - [29] = { 31, 63, 1202, 9, }, - [30] = { 31, 70, 1334, 10, }, - }, -} -gems["Lightning Trap"] = { - projectile = true, - trap = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - trap = true, - projectile = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.9), - skill("critChance", 5), - --"base_trap_duration" = 16000 - mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 - --"projectiles_nova" = ? - --"is_trap" = ? - --"base_skill_is_trapped" = ? - --"base_is_projectile" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("trapCooldown", 2), - }, - qualityMods = { - mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 8, 3, 62, }, - [2] = { 9, 4, 77, }, - [3] = { 10, 5, 98, }, - [4] = { 10, 7, 124, }, - [5] = { 11, 8, 153, }, - [6] = { 12, 10, 188, }, - [7] = { 13, 12, 228, }, - [8] = { 14, 14, 263, }, - [9] = { 14, 16, 301, }, - [10] = { 16, 18, 344, }, - [11] = { 17, 21, 391, }, - [12] = { 18, 23, 444, }, - [13] = { 19, 26, 503, }, - [14] = { 20, 30, 568, }, - [15] = { 21, 34, 640, }, - [16] = { 22, 38, 720, }, - [17] = { 22, 41, 779, }, - [18] = { 23, 44, 841, }, - [19] = { 24, 48, 907, }, - [20] = { 24, 52, 979, }, - [21] = { 25, 56, 1055, }, - [22] = { 26, 60, 1136, }, - [23] = { 26, 64, 1223, }, - [24] = { 27, 69, 1316, }, - [25] = { 27, 74, 1415, }, - [26] = { 28, 80, 1521, }, - [27] = { 29, 86, 1634, }, - [28] = { 30, 92, 1755, }, - [29] = { 30, 99, 1884, }, - [30] = { 30, 106, 2021, }, - }, -} -gems["Vaal Lightning Trap"] = { - projectile = true, - trap = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - trap = true, - projectile = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.9), - skill("critChance", 5), - --"base_trap_duration" = 16000 - mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 - skill("duration", 4), --"base_skill_effect_duration" = 4000 - mod("PierceChance", "BASE", 100), --"pierce_%" = 100 - --"projectiles_nova" = ? - --"is_trap" = ? - --"base_skill_is_trapped" = ? - --"base_is_projectile" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"lightning_trap_projectiles_leave_shocking_ground" = ? - }, - qualityMods = { - mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 3, 62, }, - [2] = { 4, 77, }, - [3] = { 5, 98, }, - [4] = { 7, 124, }, - [5] = { 8, 153, }, - [6] = { 10, 188, }, - [7] = { 12, 228, }, - [8] = { 14, 263, }, - [9] = { 16, 301, }, - [10] = { 18, 344, }, - [11] = { 21, 391, }, - [12] = { 23, 444, }, - [13] = { 26, 503, }, - [14] = { 30, 568, }, - [15] = { 34, 640, }, - [16] = { 38, 720, }, - [17] = { 41, 779, }, - [18] = { 44, 841, }, - [19] = { 48, 907, }, - [20] = { 52, 979, }, - [21] = { 56, 1055, }, - [22] = { 60, 1136, }, - [23] = { 64, 1223, }, - [24] = { 69, 1316, }, - [25] = { 74, 1415, }, - [26] = { 80, 1521, }, - [27] = { 86, 1634, }, - [28] = { 92, 1755, }, - [29] = { 99, 1884, }, - [30] = { 106, 2021, }, - }, -} -gems["Lightning Warp"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - movement = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - movement = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [38] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"is_area_damage" = 1 - --"skill_override_pvp_scaling_time_ms" = 1000 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [4] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" - }, - levels = { - [1] = { 15, 1, 19, 0, }, - [2] = { 16, 1, 24, -2, }, - [3] = { 17, 2, 33, -4, }, - [4] = { 18, 2, 44, -6, }, - [5] = { 18, 3, 58, -8, }, - [6] = { 20, 4, 75, -10, }, - [7] = { 21, 5, 96, -12, }, - [8] = { 22, 6, 115, -14, }, - [9] = { 23, 7, 137, -16, }, - [10] = { 24, 9, 162, -18, }, - [11] = { 26, 10, 192, -20, }, - [12] = { 26, 12, 226, -22, }, - [13] = { 27, 14, 266, -24, }, - [14] = { 28, 16, 312, -26, }, - [15] = { 29, 19, 365, -28, }, - [16] = { 30, 22, 426, -30, }, - [17] = { 30, 26, 497, -32, }, - [18] = { 31, 30, 579, -34, }, - [19] = { 32, 34, 640, -36, }, - [20] = { 33, 37, 707, -38, }, - [21] = { 34, 41, 780, -40, }, - [22] = { 34, 45, 861, -42, }, - [23] = { 34, 50, 949, -44, }, - [24] = { 34, 55, 1046, -46, }, - [25] = { 35, 61, 1152, -48, }, - [26] = { 35, 67, 1269, -50, }, - [27] = { 36, 73, 1396, -52, }, - [28] = { 37, 81, 1536, -54, }, - [29] = { 37, 89, 1689, -56, }, - [30] = { 37, 98, 1856, -58, }, - }, -} -gems["Vaal Lightning Warp"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.5), - skill("critChance", 5), - --"is_area_damage" = 1 - --"skill_override_pvp_scaling_time_ms" = 1000 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [3] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" - }, - levels = { - [1] = { 1, 18, 0, }, - [2] = { 1, 24, -2, }, - [3] = { 2, 32, -4, }, - [4] = { 2, 42, -6, }, - [5] = { 3, 54, -8, }, - [6] = { 4, 70, -10, }, - [7] = { 5, 88, -12, }, - [8] = { 5, 104, -14, }, - [9] = { 6, 123, -16, }, - [10] = { 8, 145, -18, }, - [11] = { 9, 170, -20, }, - [12] = { 10, 199, -22, }, - [13] = { 12, 232, -24, }, - [14] = { 14, 270, -26, }, - [15] = { 17, 314, -28, }, - [16] = { 19, 364, -30, }, - [17] = { 22, 420, -32, }, - [18] = { 26, 485, -34, }, - [19] = { 28, 534, -36, }, - [20] = { 31, 586, -38, }, - [21] = { 34, 644, -40, }, - [22] = { 37, 707, -42, }, - [23] = { 41, 775, -44, }, - [24] = { 45, 850, -46, }, - [25] = { 49, 931, -48, }, - [26] = { 54, 1019, -50, }, - [27] = { 59, 1116, -52, }, - [28] = { 64, 1221, -54, }, - [29] = { 70, 1335, -56, }, - [30] = { 77, 1459, -58, }, - }, -} -gems["Magma Orb"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - chaining = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - area = true, - chaining = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [19] = true, [18] = true, [36] = true, [33] = true, [3] = true, [26] = true, [23] = true, }, - baseMods = { - skill("castTime", 0.7), - skill("damageEffectiveness", 1.25), - skill("critChance", 5), - --"is_area_damage" = ? - --"base_is_projectile" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" - }, - levels = { - [1] = { 5, 6, 9, 1, }, - [2] = { 6, 7, 10, 1, }, - [3] = { 6, 8, 12, 1, }, - [4] = { 7, 11, 17, 1, }, - [5] = { 7, 16, 24, 1, }, - [6] = { 8, 25, 37, 1, }, - [7] = { 9, 33, 50, 1, }, - [8] = { 10, 44, 66, 1, }, - [9] = { 11, 58, 87, 1, }, - [10] = { 12, 75, 112, 2, }, - [11] = { 13, 96, 144, 2, }, - [12] = { 14, 122, 183, 2, }, - [13] = { 15, 154, 232, 2, }, - [14] = { 16, 194, 291, 2, }, - [15] = { 18, 243, 365, 2, }, - [16] = { 19, 303, 454, 2, }, - [17] = { 20, 376, 564, 2, }, - [18] = { 21, 466, 698, 2, }, - [19] = { 21, 545, 818, 2, }, - [20] = { 22, 637, 956, 2, }, - [21] = { 23, 707, 1060, 3, }, - [22] = { 23, 784, 1175, 3, }, - [23] = { 24, 868, 1302, 3, }, - [24] = { 24, 961, 1442, 3, }, - [25] = { 25, 1063, 1595, 3, }, - [26] = { 26, 1176, 1764, 3, }, - [27] = { 26, 1300, 1950, 3, }, - [28] = { 27, 1437, 2155, 3, }, - [29] = { 27, 1587, 2380, 3, }, - [30] = { 28, 1752, 2628, 3, }, - }, -} -gems["Orb of Storms"] = { - lightning = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - area = true, - chaining = true, - color = 3, - baseFlags = { - spell = true, - area = true, - chaining = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [35] = true, [12] = true, [11] = true, [23] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.2), - skill("critChance", 5), - skill("duration", 6), --"base_skill_effect_duration" = 6000 - mod("ChainCount", "BASE", 0), --"number_of_additional_projectiles_in_chain" = 0 - --"storm_cloud_charged_damage_+%_final" = 0 - --"skill_can_add_multiple_charges_per_action" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - --[4] = "projectile_number_to_split" - }, - levels = { - [1] = { 11, 1, 3, 2, }, - [2] = { 12, 1, 3, 2, }, - [3] = { 13, 1, 4, 2, }, - [4] = { 14, 2, 6, 2, }, - [5] = { 15, 3, 8, 2, }, - [6] = { 16, 3, 10, 2, }, - [7] = { 17, 4, 13, 2, }, - [8] = { 18, 6, 17, 2, }, - [9] = { 19, 7, 22, 3, }, - [10] = { 20, 10, 29, 3, }, - [11] = { 21, 12, 36, 3, }, - [12] = { 22, 15, 45, 3, }, - [13] = { 23, 19, 56, 3, }, - [14] = { 24, 23, 70, 3, }, - [15] = { 25, 27, 82, 3, }, - [16] = { 26, 32, 96, 3, }, - [17] = { 26, 37, 112, 4, }, - [18] = { 27, 44, 131, 4, }, - [19] = { 27, 51, 152, 4, }, - [20] = { 28, 59, 177, 4, }, - [21] = { 28, 65, 195, 4, }, - [22] = { 29, 72, 215, 4, }, - [23] = { 29, 79, 238, 4, }, - [24] = { 30, 87, 262, 4, }, - [25] = { 30, 96, 289, 5, }, - [26] = { 30, 106, 318, 5, }, - [27] = { 30, 117, 350, 5, }, - [28] = { 31, 128, 385, 5, }, - [29] = { 31, 141, 424, 5, }, - [30] = { 32, 155, 466, 5, }, - }, -} -gems["Power Siphon"] = { - intelligence = true, - active_skill = true, - attack = true, - projectile = true, - color = 3, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Wand"] = true, - }, - baseMods = { - skill("castTime", 1), - --"kill_enemy_on_hit_if_under_10%_life" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 13, 30, }, - [2] = { 13, 31.6, }, - [3] = { 13, 33.2, }, - [4] = { 13, 34.8, }, - [5] = { 13, 36.4, }, - [6] = { 13, 38, }, - [7] = { 13, 39.6, }, - [8] = { 14, 41.2, }, - [9] = { 14, 42.8, }, - [10] = { 14, 44.4, }, - [11] = { 14, 46, }, - [12] = { 14, 47.6, }, - [13] = { 14, 49.2, }, - [14] = { 14, 50.8, }, - [15] = { 14, 52.4, }, - [16] = { 14, 54, }, - [17] = { 14, 55.6, }, - [18] = { 14, 57.2, }, - [19] = { 15, 58.8, }, - [20] = { 15, 60.4, }, - [21] = { 15, 62, }, - [22] = { 15, 63.6, }, - [23] = { 15, 65.2, }, - [24] = { 15, 66.8, }, - [25] = { 15, 68.4, }, - [26] = { 16, 70, }, - [27] = { 16, 71.6, }, - [28] = { 16, 73.2, }, - [29] = { 16, 74.8, }, - [30] = { 16, 76.4, }, - }, -} -gems["Vaal Power Siphon"] = { - intelligence = true, - active_skill = true, - vaal = true, - attack = true, - projectile = true, - color = 3, - baseFlags = { - attack = true, - projectile = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [43] = true, }, - weaponTypes = { - ["Wand"] = true, - }, - baseMods = { - skill("castTime", 1), - --"power_siphon_fire_at_all_targets" = ? - --"skill_can_add_multiple_charges_per_action" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - --"kill_enemy_on_hit_if_under_10%_life" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 25, }, - [2] = { 26.6, }, - [3] = { 28.2, }, - [4] = { 29.8, }, - [5] = { 31.4, }, - [6] = { 33, }, - [7] = { 34.6, }, - [8] = { 36.2, }, - [9] = { 37.8, }, - [10] = { 39.4, }, - [11] = { 41, }, - [12] = { 42.6, }, - [13] = { 44.2, }, - [14] = { 45.8, }, - [15] = { 47.4, }, - [16] = { 49, }, - [17] = { 50.6, }, - [18] = { 52.2, }, - [19] = { 53.8, }, - [20] = { 55.4, }, - [21] = { 57, }, - [22] = { 58.6, }, - [23] = { 60.2, }, - [24] = { 61.8, }, - [25] = { 63.4, }, - [26] = { 65, }, - [27] = { 66.6, }, - [28] = { 68.2, }, - [29] = { 69.8, }, - [30] = { 71.4, }, - }, -} -gems["Purity of Elements"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - mod("FireResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" = 0 - mod("ColdResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" = 0 - mod("LightningResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" = 0 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_resist_all_elements_%" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 12, 0, }, - [2] = { 13, 3, }, - [3] = { 14, 6, }, - [4] = { 15, 9, }, - [5] = { 15, 12, }, - [6] = { 16, 15, }, - [7] = { 17, 18, }, - [8] = { 18, 21, }, - [9] = { 19, 23, }, - [10] = { 20, 25, }, - [11] = { 20, 27, }, - [12] = { 21, 29, }, - [13] = { 22, 31, }, - [14] = { 23, 33, }, - [15] = { 24, 35, }, - [16] = { 25, 36, }, - [17] = { 25, 37, }, - [18] = { 26, 38, }, - [19] = { 27, 39, }, - [20] = { 27, 40, }, - [21] = { 28, 41, }, - [22] = { 29, 42, }, - [23] = { 29, 43, }, - [24] = { 30, 44, }, - [25] = { 31, 45, }, - [26] = { 31, 46, }, - [27] = { 32, 47, }, - [28] = { 33, 48, }, - [29] = { 33, 49, }, - [30] = { 34, 50, }, - }, -} -gems["Purity of Lightning"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_lightning_damage_resistance_%" - [2] = mod("LightningResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 22, 0, 0, }, - [2] = { 23, 0, 3, }, - [3] = { 24, 0, 6, }, - [4] = { 25, 0, 9, }, - [5] = { 26, 1, 12, }, - [6] = { 27, 1, 15, }, - [7] = { 28, 1, 18, }, - [8] = { 29, 1, 21, }, - [9] = { 30, 1, 23, }, - [10] = { 31, 1, 25, }, - [11] = { 32, 2, 27, }, - [12] = { 33, 2, 29, }, - [13] = { 34, 2, 31, }, - [14] = { 35, 2, 33, }, - [15] = { 36, 2, 35, }, - [16] = { 37, 2, 36, }, - [17] = { 38, 3, 37, }, - [18] = { 39, 3, 38, }, - [19] = { 40, 3, 39, }, - [20] = { 41, 4, 40, }, - [21] = { 42, 4, 41, }, - [22] = { 43, 4, 42, }, - [23] = { 44, 5, 43, }, - [24] = { 45, 5, 44, }, - [25] = { 46, 5, 45, }, - [26] = { 47, 5, 46, }, - [27] = { 48, 5, 47, }, - [28] = { 49, 5, 48, }, - [29] = { 50, 5, 49, }, - [30] = { 51, 5, 50, }, - }, -} -gems["Raise Spectre"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, - baseMods = { - skill("castTime", 0.85), - --"base_number_of_spectres_allowed" = 1 - --"active_skill_minion_movement_velocity_+%_final" = 55 - --"movement_velocity_cap" = -89 - --"damage_taken_+%_from_arrow_traps_final" = -90 - --"minion_elemental_resistance_%" = 30 - }, - qualityMods = { - --"minion_movement_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "active_skill_minion_damage_+%_final" - --[3] = "active_skill_minion_life_+%_final" - --[4] = "active_skill_minion_energy_shield_+%_final" - }, - levels = { - [1] = { 21, -30, -20, -20, }, - [2] = { 23, -25, -19, -19, }, - [3] = { 24, -21, -18, -18, }, - [4] = { 26, -17, -17, -17, }, - [5] = { 27, -14, -16, -16, }, - [6] = { 28, -11, -15, -15, }, - [7] = { 29, -8, -14, -14, }, - [8] = { 30, -6, -13, -13, }, - [9] = { 31, -4, -12, -12, }, - [10] = { 32, -2, -11, -11, }, - [11] = { 33, 0, -10, -10, }, - [12] = { 34, 1, -9, -9, }, - [13] = { 35, 2, -8, -8, }, - [14] = { 36, 3, -7, -7, }, - [15] = { 37, 4, -6, -6, }, - [16] = { 38, 5, -5, -5, }, - [17] = { 39, 6, -4, -4, }, - [18] = { 40, 7, -3, -3, }, - [19] = { 41, 8, -2, -2, }, - [20] = { 42, 10, 0, 0, }, - [21] = { 43, 12, 2, 2, }, - [22] = { 44, 14, 4, 4, }, - [23] = { 44, 16, 6, 6, }, - [24] = { 45, 18, 8, 8, }, - [25] = { 46, 20, 10, 10, }, - [26] = { 47, 22, 12, 12, }, - [27] = { 48, 24, 14, 14, }, - [28] = { 49, 26, 16, 16, }, - [29] = { 50, 28, 18, 18, }, - [30] = { 51, 30, 20, 20, }, - }, -} -gems["Raise Zombie"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, - baseMods = { - skill("castTime", 0.85), - --"base_number_of_zombies_allowed" = 3 - --"active_skill_minion_damage_+%_final" = 0 - --"display_minion_monster_type" = 1 - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - --"minion_movement_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "display_minion_monster_level" - }, - levels = { - [1] = { 10, 2, }, - [2] = { 11, 3, }, - [3] = { 12, 5, }, - [4] = { 13, 8, }, - [5] = { 14, 12, }, - [6] = { 16, 16, }, - [7] = { 18, 20, }, - [8] = { 21, 24, }, - [9] = { 24, 28, }, - [10] = { 26, 32, }, - [11] = { 28, 36, }, - [12] = { 30, 40, }, - [13] = { 31, 44, }, - [14] = { 32, 48, }, - [15] = { 33, 52, }, - [16] = { 34, 56, }, - [17] = { 35, 60, }, - [18] = { 36, 64, }, - [19] = { 37, 67, }, - [20] = { 38, 70, }, - [21] = { 38, 72, }, - [22] = { 38, 74, }, - [23] = { 38, 76, }, - [24] = { 39, 78, }, - [25] = { 40, 80, }, - [26] = { 40, 82, }, - [27] = { 41, 84, }, - [28] = { 42, 86, }, - [29] = { 42, 88, }, - [30] = { 42, 90, }, - }, -} -gems["Righteous Fire"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - setupFunc = function(env, output) - if env.mainSkill.skillFlags.totem then - env.mainSkill.skillData.FireDot = output.TotemLife * 0.5 - else - env.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5 - end - end, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [29] = true, [36] = true, [40] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - --"base_righteous_fire_%_of_max_life_to_deal_to_nearby_per_minute" = 3000 - --"base_nonlethal_fire_damage_%_of_maximum_life_taken_per_minute" = 5400 - --"base_righteous_fire_%_of_max_energy_shield_to_deal_to_nearby_per_minute" = 3000 - --"base_nonlethal_fire_damage_%_of_maximum_energy_shield_taken_per_minute" = 4200 - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"righteous_fire_spell_damage_+%_final" - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 40, 0, }, - [2] = { 41, 0, }, - [3] = { 42, 0, }, - [4] = { 43, 1, }, - [5] = { 44, 1, }, - [6] = { 45, 1, }, - [7] = { 46, 1, }, - [8] = { 47, 2, }, - [9] = { 48, 2, }, - [10] = { 49, 2, }, - [11] = { 50, 2, }, - [12] = { 51, 3, }, - [13] = { 52, 3, }, - [14] = { 53, 3, }, - [15] = { 54, 3, }, - [16] = { 55, 4, }, - [17] = { 56, 4, }, - [18] = { 57, 4, }, - [19] = { 58, 4, }, - [20] = { 59, 5, }, - [21] = { 60, 5, }, - [22] = { 61, 5, }, - [23] = { 62, 5, }, - [24] = { 63, 6, }, - [25] = { 64, 6, }, - [26] = { 65, 6, }, - [27] = { 66, 6, }, - [28] = { 67, 7, }, - [29] = { 68, 7, }, - [30] = { 69, 7, }, - }, -} -gems["Vaal Righteous Fire"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - fire = true, - setupFunc = function(env, output) - env.mainSkill.skillData.FireMin = output.EnergyShield + output.Life - 1 - env.mainSkill.skillData.FireMax = output.EnergyShield + output.Life - 1 - end, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - vaal = true, - }, - skillTypes = { [2] = true, [11] = true, [10] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - skill("critChance", 5), - --"damage_cannot_be_reflected" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Spell, 0, nil), --"spell_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" - }, - levels = { - [1] = { 20, }, - [2] = { 21, }, - [3] = { 22, }, - [4] = { 23, }, - [5] = { 24, }, - [6] = { 25, }, - [7] = { 26, }, - [8] = { 27, }, - [9] = { 28, }, - [10] = { 29, }, - [11] = { 30, }, - [12] = { 31, }, - [13] = { 32, }, - [14] = { 33, }, - [15] = { 34, }, - [16] = { 35, }, - [17] = { 36, }, - [18] = { 37, }, - [19] = { 38, }, - [20] = { 39, }, - [21] = { 40, }, - [22] = { 41, }, - [23] = { 42, }, - [24] = { 43, }, - [25] = { 44, }, - [26] = { 45, }, - [27] = { 46, }, - [28] = { 47, }, - [29] = { 48, }, - [30] = { 49, }, - }, -} -gems["Scorching Ray"] = { - intelligence = true, - active_skill = true, - spell = true, - fire = true, - duration = true, - channelling = true, - parts = { - { - name = "1 Stage", - }, - { - name = "4 Stages", - }, - { - name = "8 Stages", - }, - }, - color = 3, - baseFlags = { - spell = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [18] = true, [40] = true, [33] = true, [29] = true, [12] = true, [58] = true, [59] = true, [52] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"fire_beam_additional_stack_damage_+%_final" = -40 - --"display_max_fire_beam_stacks" = 8 - mod("FireResist", "BASE", -3, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"fire_beam_enemy_fire_resistance_%_per_stack" = -3 - --"fire_beam_enemy_fire_resistance_%_maximum" = -24 - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - skill("stackCount", 4, { type = "SkillPart", skillPart = 2 }), - skill("stackCount", 8, { type = "SkillPart", skillPart = 3 }), - mod("Damage", "MORE", 180, 0, 0, { type = "SkillPart", skillPart = 2 }), - mod("Damage", "MORE", 420, 0, 0, { type = "SkillPart", skillPart = 3 }), - }, - qualityMods = { - --"fire_beam_length_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - }, - levels = { - [1] = { 4, 9.6833333333333, }, - [2] = { 4, 12.65, }, - [3] = { 4, 17.683333333333, }, - [4] = { 5, 24.233333333333, }, - [5] = { 5, 32.716666666667, }, - [6] = { 5, 43.666666666667, }, - [7] = { 6, 57.7, }, - [8] = { 6, 70.75, }, - [9] = { 6, 86.4, }, - [10] = { 7, 105.13333333333, }, - [11] = { 7, 127.55, }, - [12] = { 7, 154.3, }, - [13] = { 8, 186.2, }, - [14] = { 8, 224.16666666667, }, - [15] = { 8, 269.33333333333, }, - [16] = { 9, 322.96666666667, }, - [17] = { 9, 364.18333333333, }, - [18] = { 9, 410.36666666667, }, - [19] = { 10, 462.06666666667, }, - [20] = { 10, 519.93333333333, }, - [21] = { 10, 584.7, }, - [22] = { 11, 657.13333333333, }, - [23] = { 11, 738.1, }, - [24] = { 11, 828.61666666667, }, - [25] = { 12, 929.73333333333, }, - [26] = { 12, 1042.6833333333, }, - [27] = { 12, 1168.8, }, - [28] = { 13, 1309.5833333333, }, - [29] = { 13, 1466.6666666667, }, - [30] = { 13, 1641.9166666667, }, - }, -} -gems["Shock Nova"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - parts = { - { - name = "Ring", - }, - { - name = "Nova", - }, - }, - color = 3, - baseFlags = { - spell = true, - area = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, [43] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("damageEffectiveness", 0.6), - skill("critChance", 6), - mod("Damage", "MORE", -80, 0, 0, { type = "SkillPart", skillPart = 1 }), --"newshocknova_first_ring_damage_+%_final" = -80 - mod("EnemyShockChance", "BASE", 20), --"base_chance_to_shock_%" = 20 - --"is_area_damage" = ? - }, - qualityMods = { - mod("EnemyShockDuration", "INC", 2), --"shock_duration_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 13, 26, 79, }, - [2] = { 14, 32, 95, }, - [3] = { 15, 38, 115, }, - [4] = { 16, 46, 137, }, - [5] = { 17, 55, 164, }, - [6] = { 18, 61, 184, }, - [7] = { 18, 69, 206, }, - [8] = { 19, 77, 231, }, - [9] = { 19, 86, 258, }, - [10] = { 20, 96, 288, }, - [11] = { 20, 107, 321, }, - [12] = { 21, 119, 358, }, - [13] = { 22, 133, 399, }, - [14] = { 22, 148, 443, }, - [15] = { 23, 164, 493, }, - [16] = { 23, 182, 547, }, - [17] = { 24, 202, 607, }, - [18] = { 25, 224, 673, }, - [19] = { 25, 248, 745, }, - [20] = { 26, 275, 825, }, - [21] = { 26, 304, 913, }, - [22] = { 27, 336, 1009, }, - [23] = { 28, 372, 1115, }, - [24] = { 28, 411, 1232, }, - [25] = { 29, 453, 1360, }, - [26] = { 29, 500, 1501, }, - [27] = { 30, 552, 1655, }, - [28] = { 31, 608, 1824, }, - [29] = { 31, 670, 2010, }, - [30] = { 32, 738, 2214, }, - }, -} -gems["Spark"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.65), - skill("damageEffectiveness", 0.7), - skill("critChance", 6), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [4] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - }, - levels = { - [1] = { 5, 1, 20, 4, }, - [2] = { 6, 1, 22, 4, }, - [3] = { 7, 1, 27, 4, }, - [4] = { 8, 2, 36, 4, }, - [5] = { 9, 3, 49, 4, }, - [6] = { 10, 4, 69, 4, }, - [7] = { 11, 5, 88, 4, }, - [8] = { 12, 6, 110, 4, }, - [9] = { 14, 7, 136, 5, }, - [10] = { 16, 9, 167, 5, }, - [11] = { 17, 11, 202, 5, }, - [12] = { 18, 13, 243, 5, }, - [13] = { 19, 15, 291, 5, }, - [14] = { 20, 18, 345, 5, }, - [15] = { 21, 22, 409, 5, }, - [16] = { 22, 25, 481, 5, }, - [17] = { 22, 30, 565, 6, }, - [18] = { 22, 35, 661, 6, }, - [19] = { 22, 39, 742, 6, }, - [20] = { 23, 44, 832, 6, }, - [21] = { 23, 47, 897, 6, }, - [22] = { 24, 51, 967, 6, }, - [23] = { 24, 55, 1041, 6, }, - [24] = { 25, 59, 1120, 6, }, - [25] = { 25, 63, 1205, 7, }, - [26] = { 26, 68, 1296, 7, }, - [27] = { 26, 73, 1393, 7, }, - [28] = { 26, 79, 1496, 7, }, - [29] = { 26, 85, 1607, 7, }, - [30] = { 27, 91, 1725, 7, }, - }, -} -gems["Vaal Spark"] = { - projectile = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.65), - skill("damageEffectiveness", 0.4), - skill("critChance", 5), - skill("duration", 2), --"base_skill_effect_duration" = 2000 - --"base_number_of_projectiles_in_spiral_nova" = 100 - --"projectile_spiral_nova_time_ms" = 3000 - --"projectile_spiral_nova_angle" = 0 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 1, 11, }, - [2] = { 1, 12, }, - [3] = { 1, 15, }, - [4] = { 1, 19, }, - [5] = { 1, 27, }, - [6] = { 2, 37, }, - [7] = { 3, 48, }, - [8] = { 3, 60, }, - [9] = { 4, 74, }, - [10] = { 5, 91, }, - [11] = { 6, 110, }, - [12] = { 7, 133, }, - [13] = { 8, 159, }, - [14] = { 10, 188, }, - [15] = { 12, 223, }, - [16] = { 14, 263, }, - [17] = { 16, 308, }, - [18] = { 19, 361, }, - [19] = { 21, 405, }, - [20] = { 24, 454, }, - [21] = { 26, 489, }, - [22] = { 28, 527, }, - [23] = { 30, 568, }, - [24] = { 32, 611, }, - [25] = { 35, 658, }, - [26] = { 37, 707, }, - [27] = { 40, 760, }, - [28] = { 43, 816, }, - [29] = { 46, 877, }, - [30] = { 50, 941, }, - }, -} -gems["Spirit Offering"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"offering_skill_effect_duration_per_corpse" = 500 - --"spirit_offering_life_%_added_as_base_maximum_energy_shield_per_corpse_consumed" = 2 - --"base_deal_no_damage" = ? - skill("offering", true), - }, - qualityMods = { - mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_chaos" - [3] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" - }, - levels = { - [1] = { 16, 20, 20, }, - [2] = { 17, 20, 21, }, - [3] = { 18, 21, 21, }, - [4] = { 19, 21, 22, }, - [5] = { 20, 22, 22, }, - [6] = { 21, 22, 23, }, - [7] = { 22, 23, 23, }, - [8] = { 23, 23, 24, }, - [9] = { 24, 24, 24, }, - [10] = { 25, 24, 25, }, - [11] = { 26, 25, 25, }, - [12] = { 27, 25, 26, }, - [13] = { 28, 26, 26, }, - [14] = { 29, 26, 27, }, - [15] = { 29, 27, 27, }, - [16] = { 30, 27, 28, }, - [17] = { 30, 28, 28, }, - [18] = { 31, 28, 29, }, - [19] = { 32, 29, 29, }, - [20] = { 33, 29, 30, }, - [21] = { 34, 30, 30, }, - [22] = { 34, 30, 31, }, - [23] = { 35, 31, 31, }, - [24] = { 36, 31, 32, }, - [25] = { 37, 32, 32, }, - [26] = { 38, 32, 33, }, - [27] = { 38, 33, 33, }, - [28] = { 39, 33, 34, }, - [29] = { 40, 34, 34, }, - [30] = { 41, 34, 35, }, - }, -} -gems["Storm Call"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [26] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.8), - skill("critChance", 6), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 13, 24, 0, }, - [2] = { 7, 16, 30, 0, }, - [3] = { 8, 22, 40, 1, }, - [4] = { 9, 28, 53, 1, }, - [5] = { 10, 37, 68, 1, }, - [6] = { 11, 46, 86, 2, }, - [7] = { 12, 58, 108, 2, }, - [8] = { 13, 69, 128, 2, }, - [9] = { 13, 81, 151, 3, }, - [10] = { 14, 95, 177, 3, }, - [11] = { 14, 111, 206, 3, }, - [12] = { 15, 130, 241, 4, }, - [13] = { 16, 151, 280, 4, }, - [14] = { 16, 175, 325, 4, }, - [15] = { 17, 202, 376, 5, }, - [16] = { 18, 234, 434, 5, }, - [17] = { 18, 257, 478, 5, }, - [18] = { 19, 283, 525, 6, }, - [19] = { 19, 310, 577, 6, }, - [20] = { 19, 341, 633, 6, }, - [21] = { 20, 374, 694, 7, }, - [22] = { 21, 410, 761, 7, }, - [23] = { 21, 449, 834, 7, }, - [24] = { 21, 492, 914, 8, }, - [25] = { 22, 538, 1000, 8, }, - [26] = { 23, 589, 1094, 8, }, - [27] = { 23, 644, 1196, 9, }, - [28] = { 23, 704, 1308, 9, }, - [29] = { 24, 769, 1429, 9, }, - [30] = { 24, 840, 1560, 10, }, - }, -} -gems["Vaal Storm Call"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.8), - skill("critChance", 6), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 13, 25, }, - [2] = { 17, 31, }, - [3] = { 22, 41, }, - [4] = { 29, 53, }, - [5] = { 36, 67, }, - [6] = { 46, 85, }, - [7] = { 57, 105, }, - [8] = { 67, 124, }, - [9] = { 78, 144, }, - [10] = { 90, 168, }, - [11] = { 105, 194, }, - [12] = { 121, 225, }, - [13] = { 140, 259, }, - [14] = { 161, 298, }, - [15] = { 184, 343, }, - [16] = { 211, 393, }, - [17] = { 231, 429, }, - [18] = { 253, 470, }, - [19] = { 276, 513, }, - [20] = { 302, 560, }, - [21] = { 329, 611, }, - [22] = { 359, 666, }, - [23] = { 391, 726, }, - [24] = { 426, 791, }, - [25] = { 464, 861, }, - [26] = { 504, 937, }, - [27] = { 549, 1019, }, - [28] = { 596, 1108, }, - [29] = { 648, 1204, }, - [30] = { 704, 1307, }, - }, -} -gems["Summon Chaos Golem"] = { - intelligence = true, - active_skill = true, - chaos = true, - minion = true, - spell = true, - golem = true, - color = 3, - baseFlags = { - spell = true, - minion = true, - golem = true, - chaos = true, - }, - skillTypes = { [36] = true, [50] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 5 - mod("Misc", "LIST", { type = "Condition", var = "HaveChaosGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - --[3] = "chaos_golem_grants_additional_physical_damage_reduction_%" - [4] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 3, 30, 34, }, - [2] = { 32, 1, 3, 32, 36, }, - [3] = { 34, 1, 3, 34, 38, }, - [4] = { 36, 2, 3, 36, 40, }, - [5] = { 38, 2, 3, 38, 42, }, - [6] = { 40, 3, 3, 40, 44, }, - [7] = { 42, 3, 3, 42, 46, }, - [8] = { 44, 4, 3, 44, 48, }, - [9] = { 44, 4, 3, 46, 50, }, - [10] = { 46, 5, 3, 48, 52, }, - [11] = { 48, 5, 3, 50, 54, }, - [12] = { 48, 6, 4, 52, 56, }, - [13] = { 50, 6, 4, 54, 58, }, - [14] = { 50, 7, 4, 56, 60, }, - [15] = { 52, 7, 4, 58, 62, }, - [16] = { 52, 8, 4, 60, 64, }, - [17] = { 52, 8, 4, 62, 66, }, - [18] = { 52, 9, 4, 64, 68, }, - [19] = { 54, 9, 4, 66, 69, }, - [20] = { 54, 10, 4, 68, 70, }, - [21] = { 56, 10, 4, 70, 72, }, - [22] = { 56, 11, 5, 72, 74, }, - [23] = { 58, 11, 5, 74, 76, }, - [24] = { 58, 12, 5, 76, 78, }, - [25] = { 60, 12, 5, 78, 80, }, - [26] = { 60, 13, 5, 80, 82, }, - [27] = { 60, 13, 5, 82, 84, }, - [28] = { 60, 14, 5, 84, 86, }, - [29] = { 62, 14, 5, 86, 88, }, - [30] = { 62, 15, 5, 88, 90, }, - }, -} -gems["Summon Lightning Golem"] = { - intelligence = true, - active_skill = true, - lightning = true, - minion = true, - spell = true, - golem = true, - color = 3, - baseFlags = { - spell = true, - minion = true, - golem = true, - lightning = true, - }, - skillTypes = { [36] = true, [35] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [45] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 11 - mod("Misc", "LIST", { type = "Condition", var = "HaveLightningGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [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" - }, - levels = { - [1] = { 30, 0, 6, 30, 34, }, - [2] = { 32, 1, 6, 32, 36, }, - [3] = { 34, 2, 6, 34, 38, }, - [4] = { 36, 3, 6, 36, 40, }, - [5] = { 38, 4, 6, 38, 42, }, - [6] = { 40, 5, 7, 40, 44, }, - [7] = { 42, 6, 7, 42, 46, }, - [8] = { 44, 7, 7, 44, 48, }, - [9] = { 44, 8, 7, 46, 50, }, - [10] = { 46, 9, 7, 48, 52, }, - [11] = { 48, 10, 8, 50, 54, }, - [12] = { 48, 11, 8, 52, 56, }, - [13] = { 50, 12, 8, 54, 58, }, - [14] = { 50, 13, 8, 56, 60, }, - [15] = { 52, 14, 8, 58, 62, }, - [16] = { 52, 15, 9, 60, 64, }, - [17] = { 52, 16, 9, 62, 66, }, - [18] = { 52, 17, 9, 64, 68, }, - [19] = { 54, 18, 9, 66, 69, }, - [20] = { 54, 19, 9, 68, 70, }, - [21] = { 56, 20, 10, 70, 72, }, - [22] = { 56, 21, 10, 72, 74, }, - [23] = { 58, 22, 10, 74, 76, }, - [24] = { 58, 23, 10, 76, 78, }, - [25] = { 60, 24, 10, 78, 80, }, - [26] = { 60, 25, 11, 80, 82, }, - [27] = { 60, 26, 11, 82, 84, }, - [28] = { 60, 27, 11, 84, 86, }, - [29] = { 62, 28, 11, 86, 88, }, - [30] = { 62, 29, 11, 88, 90, }, - }, -} -gems["Summon Raging Spirit"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - duration = true, - fire = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"base_number_of_raging_spirits_allowed" = 20 - --"active_skill_minion_added_damage_+%_final" = -30 - }, - qualityMods = { - --"minion_movement_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - }, - levels = { - [1] = { 4, }, - [2] = { 4, }, - [3] = { 5, }, - [4] = { 5, }, - [5] = { 6, }, - [6] = { 6, }, - [7] = { 6, }, - [8] = { 7, }, - [9] = { 7, }, - [10] = { 8, }, - [11] = { 8, }, - [12] = { 9, }, - [13] = { 9, }, - [14] = { 10, }, - [15] = { 10, }, - [16] = { 10, }, - [17] = { 11, }, - [18] = { 11, }, - [19] = { 11, }, - [20] = { 12, }, - [21] = { 12, }, - [22] = { 13, }, - [23] = { 13, }, - [24] = { 13, }, - [25] = { 14, }, - [26] = { 14, }, - [27] = { 14, }, - [28] = { 15, }, - [29] = { 15, }, - [30] = { 15, }, - }, -} -gems["Summon Skeletons"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - duration = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, - baseMods = { - skill("castTime", 0.8), - --"number_of_melee_skeletons_to_summon" = 2 - skill("duration", 20), --"base_skill_effect_duration" = 20000 - --"active_skill_minion_added_damage_+%_final" = -50 - --"display_minion_monster_type" = 2 - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_number_of_skeletons_allowed" - --[3] = "display_minion_monster_level" - }, - levels = { - [1] = { 6, 4, 10, }, - [2] = { 7, 4, 13, }, - [3] = { 8, 4, 16, }, - [4] = { 9, 4, 19, }, - [5] = { 10, 4, 22, }, - [6] = { 11, 4, 25, }, - [7] = { 12, 4, 28, }, - [8] = { 12, 4, 32, }, - [9] = { 13, 5, 36, }, - [10] = { 14, 5, 40, }, - [11] = { 15, 5, 44, }, - [12] = { 15, 5, 47, }, - [13] = { 16, 5, 50, }, - [14] = { 17, 5, 53, }, - [15] = { 17, 5, 56, }, - [16] = { 18, 6, 59, }, - [17] = { 19, 6, 62, }, - [18] = { 20, 6, 64, }, - [19] = { 20, 6, 66, }, - [20] = { 21, 6, 68, }, - [21] = { 21, 6, 70, }, - [22] = { 22, 6, 72, }, - [23] = { 22, 6, 74, }, - [24] = { 22, 6, 76, }, - [25] = { 23, 6, 78, }, - [26] = { 23, 6, 80, }, - [27] = { 24, 6, 82, }, - [28] = { 24, 6, 84, }, - [29] = { 25, 6, 86, }, - [30] = { 25, 6, 88, }, - }, -} -gems["Vaal Summon Skeletons"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - minion = true, - duration = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, }, - baseMods = { - skill("castTime", 0.8), - --"number_of_leader_skeletons_to_summon" = 1 - skill("duration", 20), --"base_skill_effect_duration" = 20000 - --"display_minion_monster_type" = 2 - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - --[1] = "number_of_melee_skeletons_to_summon" - --[2] = "number_of_archer_skeletons_to_summon" - --[3] = "number_of_mage_skeletons_to_summon" - --[4] = "base_number_of_skeletons_allowed" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 14, 2, 0, 17, 10, }, - [2] = { 15, 2, 0, 18, 13, }, - [3] = { 15, 3, 0, 19, 16, }, - [4] = { 16, 3, 0, 20, 19, }, - [5] = { 16, 4, 0, 21, 22, }, - [6] = { 17, 4, 0, 22, 25, }, - [7] = { 17, 5, 0, 23, 28, }, - [8] = { 18, 5, 0, 24, 32, }, - [9] = { 18, 5, 1, 25, 36, }, - [10] = { 18, 6, 1, 26, 40, }, - [11] = { 18, 6, 2, 27, 44, }, - [12] = { 19, 6, 2, 28, 47, }, - [13] = { 19, 6, 3, 29, 50, }, - [14] = { 20, 6, 3, 30, 53, }, - [15] = { 20, 7, 3, 31, 56, }, - [16] = { 20, 7, 4, 32, 59, }, - [17] = { 20, 8, 4, 33, 62, }, - [18] = { 21, 8, 4, 34, 64, }, - [19] = { 21, 8, 5, 35, 66, }, - [20] = { 21, 9, 5, 36, 68, }, - [21] = { 22, 9, 5, 37, 70, }, - [22] = { 22, 9, 6, 38, 72, }, - [23] = { 22, 10, 6, 39, 74, }, - [24] = { 23, 10, 6, 40, 76, }, - [25] = { 23, 10, 7, 41, 78, }, - [26] = { 23, 11, 7, 42, 80, }, - [27] = { 24, 11, 7, 43, 82, }, - [28] = { 24, 11, 8, 44, 84, }, - [29] = { 25, 11, 8, 45, 86, }, - [30] = { 25, 12, 8, 46, 88, }, - }, -} -gems["Tempest Shield"] = { - intelligence = true, - active_skill = true, - spell = true, - lightning = true, - chaining = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - chaining = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [13] = true, [27] = true, [35] = true, [23] = true, [45] = true, [36] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.6), - skill("critChance", 6), - mod("BlockChance", "BASE", 3, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"shield_block_%" = 3 - --"skill_override_pvp_scaling_time_ms" = 700 - mod("ChainCount", "BASE", 1), --"number_of_additional_projectiles_in_chain" = 1 - skill("duration", 12), --"base_skill_effect_duration" = 12000 - --"skill_can_add_multiple_charges_per_action" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 17, 24, 36, }, - [2] = { 17, 31, 46, }, - [3] = { 17, 39, 58, }, - [4] = { 18, 48, 72, }, - [5] = { 18, 55, 83, }, - [6] = { 18, 64, 96, }, - [7] = { 18, 74, 111, }, - [8] = { 19, 85, 127, }, - [9] = { 19, 97, 145, }, - [10] = { 19, 110, 165, }, - [11] = { 20, 125, 187, }, - [12] = { 20, 141, 212, }, - [13] = { 20, 159, 239, }, - [14] = { 20, 180, 269, }, - [15] = { 20, 194, 291, }, - [16] = { 21, 210, 315, }, - [17] = { 21, 227, 340, }, - [18] = { 21, 245, 367, }, - [19] = { 21, 264, 396, }, - [20] = { 21, 284, 426, }, - [21] = { 22, 306, 459, }, - [22] = { 22, 330, 494, }, - [23] = { 22, 354, 532, }, - [24] = { 22, 381, 572, }, - [25] = { 22, 410, 614, }, - [26] = { 23, 440, 660, }, - [27] = { 23, 472, 708, }, - [28] = { 23, 507, 760, }, - [29] = { 23, 543, 815, }, - [30] = { 23, 583, 874, }, - }, -} -gems["Vortex"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [12] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.9), - skill("critChance", 5), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"is_area_damage" = ? - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = skill("ColdDot", nil), --"base_cold_damage_to_deal_per_minute" - }, - levels = { - [1] = { 11, 50, 75, 41.633333333333, }, - [2] = { 11, 60, 90, 51.983333333333, }, - [3] = { 12, 71, 107, 64.466666666667, }, - [4] = { 13, 85, 127, 79.45, }, - [5] = { 14, 100, 150, 97.383333333333, }, - [6] = { 14, 112, 168, 112.51666666667, }, - [7] = { 15, 124, 187, 129.65, }, - [8] = { 15, 138, 208, 149.01666666667, }, - [9] = { 16, 154, 231, 170.88333333333, }, - [10] = { 16, 171, 256, 195.53333333333, }, - [11] = { 16, 189, 284, 223.28333333333, }, - [12] = { 17, 209, 314, 254.5, }, - [13] = { 17, 232, 347, 289.53333333333, }, - [14] = { 18, 256, 384, 328.85, }, - [15] = { 18, 283, 424, 372.9, }, - [16] = { 19, 312, 468, 422.2, }, - [17] = { 19, 344, 516, 477.35, }, - [18] = { 20, 379, 568, 538.96666666667, }, - [19] = { 20, 417, 625, 607.75, }, - [20] = { 21, 458, 688, 684.46666666667, }, - [21] = { 21, 504, 756, 769.96666666667, }, - [22] = { 22, 554, 831, 865.18333333333, }, - [23] = { 22, 608, 912, 971.15, }, - [24] = { 23, 667, 1001, 1088.9833333333, }, - [25] = { 23, 732, 1098, 1219.9166666667, }, - [26] = { 24, 802, 1204, 1365.3333333333, }, - [27] = { 24, 879, 1319, 1526.7166666667, }, - [28] = { 25, 963, 1445, 1705.7166666667, }, - [29] = { 25, 1055, 1582, 1904.1333333333, }, - [30] = { 26, 1154, 1731, 2123.9666666667, }, - }, -} -gems["Vulnerability"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("DotTaken", "INC", 33, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 33 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("PhysicalDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" - }, - levels = { - [1] = { 24, 9, 0, 20, }, - [2] = { 26, 9.1, 4, 20, }, - [3] = { 27, 9.2, 8, 21, }, - [4] = { 29, 9.3, 12, 21, }, - [5] = { 30, 9.4, 16, 22, }, - [6] = { 32, 9.5, 20, 22, }, - [7] = { 34, 9.6, 24, 23, }, - [8] = { 35, 9.7, 28, 23, }, - [9] = { 37, 9.8, 32, 24, }, - [10] = { 38, 9.9, 36, 24, }, - [11] = { 39, 10, 40, 25, }, - [12] = { 40, 10.1, 44, 25, }, - [13] = { 42, 10.2, 48, 26, }, - [14] = { 43, 10.3, 52, 26, }, - [15] = { 44, 10.4, 56, 27, }, - [16] = { 45, 10.5, 60, 27, }, - [17] = { 46, 10.6, 64, 28, }, - [18] = { 47, 10.7, 68, 28, }, - [19] = { 48, 10.8, 72, 29, }, - [20] = { 50, 10.9, 76, 29, }, - [21] = { 51, 11, 80, 30, }, - [22] = { 52, 11.1, 84, 30, }, - [23] = { 53, 11.2, 88, 31, }, - [24] = { 54, 11.3, 92, 31, }, - [25] = { 56, 11.4, 96, 32, }, - [26] = { 57, 11.5, 100, 32, }, - [27] = { 58, 11.6, 104, 33, }, - [28] = { 59, 11.7, 108, 33, }, - [29] = { 60, 11.8, 112, 34, }, - [30] = { 61, 11.9, 116, 34, }, - }, -} -gems["Wither"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - chaos = true, - channelling = true, - parts = { - { - name = "1 Stack", - }, - { - name = "5 Stacks", - }, - { - name = "10 Stacks", - }, - { - name = "20 Stacks", - }, - }, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [18] = true, [50] = true, [58] = true, }, - baseMods = { - skill("castTime", 0.28), - mod("ChaosDamageTaken", "INC", 7, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"chaos_damage_taken_+%" = 7 - nil, --"base_skill_effect_duration" = 500 - skill("duration", 2), --"base_secondary_skill_effect_duration" = 2000 - skill("stackCount", 5, { type = "SkillPart", skillPart = 2 }), - skill("stackCount", 10, { type = "SkillPart", skillPart = 3 }), - skill("stackCount", 20, { type = "SkillPart", skillPart = 4 }), - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_movement_velocity_+%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 4, -30, 0, }, - [2] = { 4, -30, 1, }, - [3] = { 4, -30, 2, }, - [4] = { 5, -31, 3, }, - [5] = { 5, -31, 4, }, - [6] = { 5, -31, 5, }, - [7] = { 6, -32, 6, }, - [8] = { 6, -32, 7, }, - [9] = { 6, -32, 8, }, - [10] = { 7, -33, 9, }, - [11] = { 7, -33, 10, }, - [12] = { 7, -33, 11, }, - [13] = { 8, -34, 12, }, - [14] = { 8, -34, 13, }, - [15] = { 8, -34, 14, }, - [16] = { 9, -35, 15, }, - [17] = { 9, -35, 16, }, - [18] = { 9, -35, 17, }, - [19] = { 10, -36, 18, }, - [20] = { 10, -36, 19, }, - [21] = { 10, -36, 20, }, - [22] = { 11, -37, 21, }, - [23] = { 11, -37, 22, }, - [24] = { 11, -37, 23, }, - [25] = { 12, -38, 24, }, - [26] = { 12, -38, 25, }, - [27] = { 12, -38, 26, }, - [28] = { 13, -39, 27, }, - [29] = { 13, -39, 28, }, - [30] = { 13, -39, 29, }, - }, -} -gems["Wrath"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - lightning = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_lightning_damage" - [2] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_lightning_damage" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("LightningDamage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"wrath_aura_spell_lightning_damage_+%_final" - }, - levels = { - [1] = { 2, 37, 0, 15, }, - [2] = { 3, 43, 3, 15, }, - [3] = { 3, 50, 6, 15, }, - [4] = { 4, 57, 9, 16, }, - [5] = { 4, 66, 12, 16, }, - [6] = { 5, 75, 15, 16, }, - [7] = { 5, 85, 18, 17, }, - [8] = { 6, 97, 21, 17, }, - [9] = { 7, 109, 23, 17, }, - [10] = { 7, 118, 25, 18, }, - [11] = { 8, 128, 27, 18, }, - [12] = { 9, 138, 29, 18, }, - [13] = { 9, 149, 31, 19, }, - [14] = { 10, 161, 33, 19, }, - [15] = { 11, 173, 35, 19, }, - [16] = { 12, 186, 36, 20, }, - [17] = { 13, 200, 37, 20, }, - [18] = { 13, 215, 38, 20, }, - [19] = { 14, 231, 39, 21, }, - [20] = { 16, 248, 40, 21, }, - [21] = { 17, 267, 41, 21, }, - [22] = { 18, 286, 42, 22, }, - [23] = { 19, 306, 43, 22, }, - [24] = { 20, 328, 44, 22, }, - [25] = { 22, 351, 45, 23, }, - [26] = { 23, 375, 46, 23, }, - [27] = { 25, 401, 47, 23, }, - [28] = { 27, 429, 48, 24, }, - [29] = { 29, 458, 49, 24, }, - [30] = { 31, 490, 50, 24, }, - }, -} diff --git a/Data/Gems/act_str.lua b/Data/Gems/act_str.lua deleted file mode 100644 index 7efbb2ce..00000000 --- a/Data/Gems/act_str.lua +++ /dev/null @@ -1,2890 +0,0 @@ --- Path of Building --- --- Active Strength gems --- Skill gem data (c) Grinding Gear Games --- -local gems, mod, flag, skill = ... - -gems["Abyssal Cry"] = { - warcry = true, - strength = true, - active_skill = true, - area = true, - duration = true, - chaos = true, - color = 1, - baseFlags = { - warcry = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [11] = true, [12] = true, [50] = true, [10] = true, }, - baseMods = { - skill("castTime", 0.25), - --"abyssal_cry_%_max_life_as_chaos_on_death" = 8 - skill("duration", 6), --"base_skill_effect_duration" = 6000 - --"damage_cannot_be_reflected" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"display_skill_deals_secondary_damage" = ? - --"is_warcry" = ? - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "abyssal_cry_movement_velocity_+%_per_one_hundred_nearby_enemies" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, nil), --"base_movement_velocity_+%" - }, - levels = { - [1] = { 26, -60, -20, }, - [2] = { 28, -62, -20, }, - [3] = { 30, -62, -21, }, - [4] = { 32, -64, -21, }, - [5] = { 34, -66, -21, }, - [6] = { 36, -66, -22, }, - [7] = { 38, -68, -22, }, - [8] = { 40, -70, -22, }, - [9] = { 43, -70, -23, }, - [10] = { 45, -72, -23, }, - [11] = { 48, -74, -23, }, - [12] = { 49, -74, -24, }, - [13] = { 50, -76, -24, }, - [14] = { 51, -78, -24, }, - [15] = { 52, -78, -25, }, - [16] = { 53, -80, -25, }, - [17] = { 54, -82, -25, }, - [18] = { 54, -82, -26, }, - [19] = { 55, -84, -26, }, - [20] = { 56, -86, -26, }, - [21] = { 57, -86, -27, }, - [22] = { 58, -88, -27, }, - [23] = { 58, -90, -27, }, - [24] = { 59, -90, -28, }, - [25] = { 60, -92, -28, }, - [26] = { 61, -94, -28, }, - [27] = { 62, -94, -29, }, - [28] = { 62, -96, -29, }, - [29] = { 63, -98, -29, }, - [30] = { 64, -98, -30, }, - }, -} -gems["Ancestral Protector"] = { - totem = true, - strength = true, - active_skill = true, - attack = true, - duration = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - totem = true, - duration = true, - forceMainHand = true, - }, - skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [25] = true, [24] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - skillTotemId = 13, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - --"base_totem_duration" = 12000 - --"base_totem_range" = 50 - --"melee_range_+" = 16 - --"ancestor_totem_parent_activiation_range" = 70 - mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 - --"base_skill_is_totemified" = ? - --"is_totem" = ? - skill("allowTotemBuff", true), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"melee_ancestor_totem_grant_owner_attack_speed_+%_final" - }, - levels = { - [1] = { -20, 4, 10, }, - [2] = { -17.2, 6, 11, }, - [3] = { -14.4, 9, 11, }, - [4] = { -11.6, 12, 12, }, - [5] = { -8.8, 16, 12, }, - [6] = { -6, 20, 13, }, - [7] = { -3.2, 24, 13, }, - [8] = { -0.4, 28, 14, }, - [9] = { 2.4, 32, 14, }, - [10] = { 5.2, 36, 15, }, - [11] = { 8, 40, 15, }, - [12] = { 10.8, 44, 16, }, - [13] = { 13.6, 48, 16, }, - [14] = { 16.4, 52, 17, }, - [15] = { 19.2, 55, 17, }, - [16] = { 22, 58, 18, }, - [17] = { 24.8, 61, 18, }, - [18] = { 27.6, 64, 19, }, - [19] = { 30.4, 67, 19, }, - [20] = { 33.2, 70, 20, }, - [21] = { 36, 72, 20, }, - [22] = { 38.8, 74, 21, }, - [23] = { 41.6, 76, 21, }, - [24] = { 44.4, 78, 22, }, - [25] = { 47.2, 80, 22, }, - [26] = { 50, 82, 23, }, - [27] = { 52.8, 84, 23, }, - [28] = { 55.6, 86, 24, }, - [29] = { 58.4, 88, 24, }, - [30] = { 61.2, 90, 25, }, - }, -} -gems["Ancestral Warchief"] = { - totem = true, - strength = true, - active_skill = true, - attack = true, - duration = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - totem = true, - area = true, - duration = true, - forceMainHand = true, - }, - skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [24] = true, [17] = true, [19] = true, [11] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - skillTotemId = 15, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - --"base_totem_duration" = 12000 - --"base_totem_range" = 50 - --"ancestor_totem_parent_activiation_range" = 70 - mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 - mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 - --"melee_range_+" = 10 - --"is_area_damage" = ? - --"base_skill_is_totemified" = ? - --"is_totem" = ? - skill("allowTotemBuff", true), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 - }, - levelMods = { - [1] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [2] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"slam_ancestor_totem_grant_owner_melee_damage_+%_final" - [3] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 28, 8, nil, }, - [2] = { 31, 8, 1.2, }, - [3] = { 34, 9, 2.4, }, - [4] = { 37, 10, 3.6, }, - [5] = { 40, 10, 4.8, }, - [6] = { 42, 10, 6, }, - [7] = { 44, 11, 7.2, }, - [8] = { 46, 12, 8.4, }, - [9] = { 48, 12, 9.6, }, - [10] = { 50, 12, 10.8, }, - [11] = { 52, 13, 12, }, - [12] = { 54, 14, 13.2, }, - [13] = { 56, 14, 14.4, }, - [14] = { 58, 14, 15.6, }, - [15] = { 60, 15, 16.8, }, - [16] = { 62, 16, 18, }, - [17] = { 64, 16, 19.2, }, - [18] = { 66, 16, 20.4, }, - [19] = { 68, 17, 21.6, }, - [20] = { 70, 18, 22.8, }, - [21] = { 72, 18, 24, }, - [22] = { 74, 18, 25.2, }, - [23] = { 76, 19, 26.4, }, - [24] = { 78, 20, 27.6, }, - [25] = { 80, 20, 28.8, }, - [26] = { 82, 20, 30, }, - [27] = { 84, 21, 31.2, }, - [28] = { 86, 22, 32.4, }, - [29] = { 88, 22, 33.6, }, - [30] = { 90, 22, 44.8, }, - }, -} -gems["Anger"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_fire_damage" - [2] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_fire_damage" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("FireMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_minimum_added_fire_damage" - [5] = mod("FireMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_maximum_added_fire_damage" - }, - levels = { - [1] = { 12, 21, 0, 10, 16, }, - [2] = { 14, 24, 3, 12, 19, }, - [3] = { 17, 28, 6, 14, 22, }, - [4] = { 19, 32, 9, 16, 26, }, - [5] = { 22, 37, 12, 18, 29, }, - [6] = { 25, 42, 15, 21, 33, }, - [7] = { 28, 47, 18, 24, 38, }, - [8] = { 32, 54, 21, 27, 43, }, - [9] = { 36, 61, 23, 30, 48, }, - [10] = { 39, 66, 25, 33, 53, }, - [11] = { 43, 71, 27, 35, 57, }, - [12] = { 46, 77, 29, 38, 61, }, - [13] = { 50, 83, 31, 41, 66, }, - [14] = { 54, 89, 33, 45, 71, }, - [15] = { 58, 96, 35, 48, 77, }, - [16] = { 62, 104, 36, 52, 83, }, - [17] = { 67, 111, 37, 56, 89, }, - [18] = { 72, 120, 38, 60, 96, }, - [19] = { 77, 129, 39, 64, 103, }, - [20] = { 83, 138, 40, 69, 110, }, - [21] = { 89, 148, 41, 74, 118, }, - [22] = { 95, 159, 42, 79, 127, }, - [23] = { 102, 170, 43, 85, 136, }, - [24] = { 109, 182, 44, 91, 146, }, - [25] = { 117, 195, 45, 97, 156, }, - [26] = { 125, 209, 46, 104, 167, }, - [27] = { 134, 223, 47, 112, 178, }, - [28] = { 143, 238, 48, 119, 191, }, - [29] = { 153, 255, 49, 127, 204, }, - [30] = { 163, 272, 50, 136, 218, }, - }, -} -gems["Animate Guardian"] = { - strength = true, - active_skill = true, - spell = true, - minion = true, - unsupported = true, -} -gems["Cleave"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [8] = true, [11] = true, [28] = true, [24] = true, [53] = true, }, - weaponTypes = { - ["Two Handed Axe"] = true, - ["One Handed Axe"] = true, - ["Two Handed Sword"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("Damage", "MORE", -40, 0, 0, { type = "Condition", var = "DualWielding" }), --"cleave_damage_+%_final_while_dual_wielding" = -40 - --"is_area_damage" = ? - skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 10, 0, }, - [2] = { 12.8, 0, }, - [3] = { 15.6, 1, }, - [4] = { 18.4, 1, }, - [5] = { 21.2, 1, }, - [6] = { 24, 2, }, - [7] = { 26.8, 2, }, - [8] = { 29.6, 2, }, - [9] = { 32.4, 3, }, - [10] = { 35.2, 3, }, - [11] = { 38, 3, }, - [12] = { 40.8, 4, }, - [13] = { 43.6, 4, }, - [14] = { 46.4, 4, }, - [15] = { 49.2, 5, }, - [16] = { 52, 5, }, - [17] = { 54.8, 5, }, - [18] = { 57.6, 6, }, - [19] = { 60.4, 6, }, - [20] = { 63.2, 6, }, - [21] = { 66, 7, }, - [22] = { 68.8, 7, }, - [23] = { 71.6, 7, }, - [24] = { 74.4, 8, }, - [25] = { 77.2, 8, }, - [26] = { 80, 8, }, - [27] = { 82.8, 9, }, - [28] = { 85.6, 9, }, - [29] = { 88.4, 9, }, - [30] = { 91.2, 10, }, - }, -} -gems["Decoy Totem"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - area = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [17] = true, [12] = true, [19] = true, [11] = true, [30] = true, [26] = true, }, - skillTotemId = 6, - baseMods = { - skill("castTime", 1), - --"is_totem" = 1 - --"base_totem_duration" = 8000 - --"base_totem_range" = 60 - --"base_skill_is_totemified" = ? - --"base_deal_no_damage" = ? - --"totems_cannot_evade" = ? - --"totem_ignores_cooldown" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = mod("TotemLife", "INC", nil), --"totem_life_+%" - }, - levels = { - [1] = { 9, 4, 0, }, - [2] = { 10, 6, 2, }, - [3] = { 10, 9, 4, }, - [4] = { 12, 12, 6, }, - [5] = { 14, 15, 8, }, - [6] = { 17, 19, 10, }, - [7] = { 18, 23, 12, }, - [8] = { 19, 28, 14, }, - [9] = { 21, 33, 16, }, - [10] = { 24, 39, 18, }, - [11] = { 26, 43, 20, }, - [12] = { 28, 46, 22, }, - [13] = { 30, 49, 24, }, - [14] = { 30, 52, 26, }, - [15] = { 31, 55, 28, }, - [16] = { 33, 58, 30, }, - [17] = { 34, 61, 32, }, - [18] = { 34, 64, 34, }, - [19] = { 34, 66, 36, }, - [20] = { 35, 68, 38, }, - [21] = { 36, 70, 40, }, - [22] = { 37, 72, 42, }, - [23] = { 37, 74, 44, }, - [24] = { 38, 76, 46, }, - [25] = { 38, 78, 48, }, - [26] = { 39, 80, 50, }, - [27] = { 40, 82, 52, }, - [28] = { 40, 84, 54, }, - [29] = { 41, 86, 56, }, - [30] = { 42, 88, 58, }, - }, -} -gems["Determination"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Armour", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"determination_aura_armour_+%_final" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 32, 0, }, - [2] = { 33, 3, }, - [3] = { 34, 6, }, - [4] = { 35, 9, }, - [5] = { 36, 12, }, - [6] = { 37, 15, }, - [7] = { 38, 18, }, - [8] = { 39, 21, }, - [9] = { 40, 23, }, - [10] = { 41, 25, }, - [11] = { 42, 27, }, - [12] = { 43, 29, }, - [13] = { 44, 31, }, - [14] = { 45, 33, }, - [15] = { 46, 35, }, - [16] = { 47, 36, }, - [17] = { 48, 37, }, - [18] = { 49, 38, }, - [19] = { 50, 39, }, - [20] = { 51, 40, }, - [21] = { 52, 41, }, - [22] = { 53, 42, }, - [23] = { 54, 43, }, - [24] = { 55, 44, }, - [25] = { 56, 45, }, - [26] = { 57, 46, }, - [27] = { 58, 47, }, - [28] = { 59, 48, }, - [29] = { 60, 49, }, - [30] = { 61, 50, }, - }, -} -gems["Devouring Totem"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - unsupported = true, -} -gems["Dominating Blow"] = { - strength = true, - active_skill = true, - attack = true, - minion = true, - duration = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - duration = true, - }, - skillTypes = { [1] = true, [6] = true, [9] = true, [12] = true, [21] = true, [25] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("duration", 20), --"base_skill_effect_duration" = 20000 - --"active_skill_minion_damage_+%_final" = -35 - --"is_dominated" = ? - }, - qualityMods = { - mod("Damage", "INC", 0.5, 0, 0, nil), --"damage_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 12, 25, }, - [2] = { 12, 27.1, }, - [3] = { 12, 29.2, }, - [4] = { 13, 31.3, }, - [5] = { 13, 33.4, }, - [6] = { 13, 35.5, }, - [7] = { 14, 37.6, }, - [8] = { 14, 39.7, }, - [9] = { 14, 41.8, }, - [10] = { 14, 43.9, }, - [11] = { 14, 46, }, - [12] = { 15, 48.1, }, - [13] = { 15, 50.2, }, - [14] = { 15, 52.3, }, - [15] = { 15, 54.4, }, - [16] = { 15, 56.5, }, - [17] = { 15, 58.6, }, - [18] = { 15, 60.7, }, - [19] = { 15, 62.8, }, - [20] = { 16, 64.9, }, - [21] = { 16, 67, }, - [22] = { 16, 69.1, }, - [23] = { 16, 71.2, }, - [24] = { 16, 73.3, }, - [25] = { 16, 75.4, }, - [26] = { 17, 77.5, }, - [27] = { 17, 79.6, }, - [28] = { 17, 81.7, }, - [29] = { 17, 83.8, }, - [30] = { 17, 85.9, }, - }, -} -gems["Earthquake"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - duration = true, - melee = true, - parts = { - { - name = "Initial impact", - }, - { - name = "Aftershock", - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [10] = true, [28] = true, [12] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - mod("Damage", "MORE", 50, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"quake_slam_fully_charged_explosion_damage_+%_final" = 50 - --"is_area_damage" = ? - skill("showAverage", true, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -10, }, - [2] = { -9, }, - [3] = { -8, }, - [4] = { -7, }, - [5] = { -6, }, - [6] = { -5, }, - [7] = { -4, }, - [8] = { -3, }, - [9] = { -2, }, - [10] = { -1, }, - [11] = { nil, }, - [12] = { 1, }, - [13] = { 2, }, - [14] = { 3, }, - [15] = { 4, }, - [16] = { 5, }, - [17] = { 6, }, - [18] = { 7, }, - [19] = { 8, }, - [20] = { 9, }, - [21] = { 10, }, - [22] = { 11, }, - [23] = { 12, }, - [24] = { 13, }, - [25] = { 14, }, - [26] = { 15, }, - [27] = { 16, }, - [28] = { 17, }, - [29] = { 18, }, - [30] = { 19, }, - }, -} -gems["Enduring Cry"] = { - warcry = true, - strength = true, - active_skill = true, - area = true, - duration = true, - color = 1, - baseFlags = { - warcry = true, - area = true, - duration = true, - }, - skillTypes = { [5] = true, [11] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.25), - skill("duration", 0.75), --"base_skill_effect_duration" = 750 - --"is_warcry" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 3), --"base_skill_area_of_effect_+%" = 3 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "endurance_charges_granted_per_one_hundred_nearby_enemies_during_endurance_warcry" - [3] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" - }, - levels = { - [1] = { 17, 8, 48, }, - [2] = { 17, 10, 62, }, - [3] = { 17, 12, 76, }, - [4] = { 17, 14, 94, }, - [5] = { 18, 16, 108, }, - [6] = { 18, 18, 122, }, - [7] = { 18, 20, 140, }, - [8] = { 19, 22, 158, }, - [9] = { 19, 24, 176, }, - [10] = { 19, 26, 196, }, - [11] = { 20, 27, 216, }, - [12] = { 20, 28, 238, }, - [13] = { 20, 29, 262, }, - [14] = { 20, 30, 286, }, - [15] = { 20, 31, 302, }, - [16] = { 21, 32, 320, }, - [17] = { 21, 33, 338, }, - [18] = { 21, 34, 356, }, - [19] = { 21, 35, 374, }, - [20] = { 21, 36, 394, }, - [21] = { 22, 37, 414, }, - [22] = { 22, 38, 434, }, - [23] = { 22, 39, 454, }, - [24] = { 22, 40, 476, }, - [25] = { 22, 41, 498, }, - [26] = { 23, 42, 520, }, - [27] = { 23, 43, 544, }, - [28] = { 23, 44, 566, }, - [29] = { 23, 45, 590, }, - [30] = { 23, 46, 614, }, - }, -} -gems["Flame Totem"] = { - projectile = true, - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - projectile = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, - skillTotemId = 8, - baseMods = { - skill("castTime", 0.25), - skill("damageEffectiveness", 0.25), - skill("critChance", 5), - --"base_totem_duration" = 8000 - --"base_totem_range" = 100 - --"is_totem" = ? - --"base_skill_is_totemified" = ? - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [5] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - }, - levels = { - [1] = { 12, 4, 1, 2, 0, }, - [2] = { 14, 6, 1, 3, 0, }, - [3] = { 16, 9, 2, 4, 0, }, - [4] = { 17, 12, 3, 5, 0, }, - [5] = { 19, 16, 4, 7, 1, }, - [6] = { 21, 20, 6, 10, 1, }, - [7] = { 23, 24, 9, 13, 1, }, - [8] = { 24, 28, 11, 17, 1, }, - [9] = { 26, 32, 14, 22, 2, }, - [10] = { 29, 36, 18, 28, 2, }, - [11] = { 31, 40, 24, 35, 2, }, - [12] = { 32, 44, 30, 45, 2, }, - [13] = { 33, 48, 37, 56, 2, }, - [14] = { 34, 52, 47, 70, 2, }, - [15] = { 36, 55, 55, 83, 2, }, - [16] = { 37, 58, 65, 97, 2, }, - [17] = { 39, 61, 76, 114, 2, }, - [18] = { 40, 64, 89, 134, 2, }, - [19] = { 41, 67, 105, 157, 2, }, - [20] = { 42, 70, 122, 183, 2, }, - [21] = { 43, 72, 136, 203, 2, }, - [22] = { 44, 74, 150, 225, 2, }, - [23] = { 45, 76, 166, 249, 2, }, - [24] = { 46, 78, 184, 276, 2, }, - [25] = { 47, 80, 204, 305, 2, }, - [26] = { 48, 82, 225, 338, 2, }, - [27] = { 49, 84, 249, 373, 2, }, - [28] = { 50, 86, 275, 412, 2, }, - [29] = { 51, 88, 303, 455, 2, }, - [30] = { 52, 90, 335, 502, 2, }, - }, -} -gems["Glacial Hammer"] = { - strength = true, - active_skill = true, - attack = true, - melee = true, - cold = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - cold = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [53] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 - mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 - mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 - }, - qualityMods = { - mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 - mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 40, }, - [2] = { 42.2, }, - [3] = { 44.4, }, - [4] = { 46.6, }, - [5] = { 48.8, }, - [6] = { 51, }, - [7] = { 53.2, }, - [8] = { 55.4, }, - [9] = { 57.6, }, - [10] = { 59.8, }, - [11] = { 62, }, - [12] = { 64.2, }, - [13] = { 66.4, }, - [14] = { 68.6, }, - [15] = { 70.8, }, - [16] = { 73, }, - [17] = { 75.2, }, - [18] = { 77.4, }, - [19] = { 79.6, }, - [20] = { 81.8, }, - [21] = { 84, }, - [22] = { 86.2, }, - [23] = { 88.4, }, - [24] = { 90.6, }, - [25] = { 92.8, }, - [26] = { 95, }, - [27] = { 97.2, }, - [28] = { 99.4, }, - [29] = { 101.6, }, - [30] = { 103.8, }, - }, -} -gems["Vaal Glacial Hammer"] = { - strength = true, - active_skill = true, - vaal = true, - attack = true, - melee = true, - duration = true, - area = true, - cold = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - cold = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [11] = true, [43] = true, [34] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 - mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 - mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 - }, - qualityMods = { - mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 - mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 50, 3.4, }, - [2] = { 51.8, 3.45, }, - [3] = { 53.6, 3.5, }, - [4] = { 55.4, 3.55, }, - [5] = { 57.2, 3.6, }, - [6] = { 59, 3.65, }, - [7] = { 60.8, 3.7, }, - [8] = { 62.6, 3.75, }, - [9] = { 64.4, 3.8, }, - [10] = { 66.2, 3.85, }, - [11] = { 68, 3.9, }, - [12] = { 69.8, 3.95, }, - [13] = { 71.6, 4, }, - [14] = { 73.4, 4.05, }, - [15] = { 75.2, 4.1, }, - [16] = { 77, 4.15, }, - [17] = { 78.8, 4.2, }, - [18] = { 80.6, 4.25, }, - [19] = { 82.4, 4.3, }, - [20] = { 84.2, 4.35, }, - [21] = { 86, 4.4, }, - [22] = { 87.8, 4.45, }, - [23] = { 89.6, 4.5, }, - [24] = { 91.4, 4.55, }, - [25] = { 93.2, 4.6, }, - [26] = { 95, 4.65, }, - [27] = { 96.8, 4.7, }, - [28] = { 98.6, 4.75, }, - [29] = { 100.4, 4.8, }, - [30] = { 102.2, 4.85, }, - }, -} -gems["Ground Slam"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 - --"is_area_damage" = ? - }, - qualityMods = { - mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { -10, 0, }, - [2] = { -8.4, 0, }, - [3] = { -6.8, 1, }, - [4] = { -5.2, 1, }, - [5] = { -3.6, 1, }, - [6] = { -2, 2, }, - [7] = { -0.4, 2, }, - [8] = { 1.2, 2, }, - [9] = { 2.8, 3, }, - [10] = { 4.4, 3, }, - [11] = { 6, 3, }, - [12] = { 7.6, 4, }, - [13] = { 9.2, 4, }, - [14] = { 10.8, 4, }, - [15] = { 12.4, 5, }, - [16] = { 14, 5, }, - [17] = { 15.6, 5, }, - [18] = { 17.2, 6, }, - [19] = { 18.8, 6, }, - [20] = { 20.4, 6, }, - [21] = { 22, 7, }, - [22] = { 23.6, 7, }, - [23] = { 25.2, 7, }, - [24] = { 26.8, 8, }, - [25] = { 28.4, 8, }, - [26] = { 30, 8, }, - [27] = { 31.6, 9, }, - [28] = { 33.2, 9, }, - [29] = { 34.8, 9, }, - [30] = { 36.4, 10, }, - }, -} -gems["Vaal Ground Slam"] = { - strength = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - --"knockback_distance_+%" = 100 - --"animation_effect_variation" = -1 - mod("AreaOfEffect", "INC", 20), --"base_skill_area_of_effect_+%" = 20 - --"always_stun" = ? - --"global_knockback" = ? - --"is_area_damage" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 60, }, - [2] = { 62, }, - [3] = { 64, }, - [4] = { 66, }, - [5] = { 68, }, - [6] = { 70, }, - [7] = { 72, }, - [8] = { 74, }, - [9] = { 76, }, - [10] = { 78, }, - [11] = { 80, }, - [12] = { 82, }, - [13] = { 84, }, - [14] = { 86, }, - [15] = { 88, }, - [16] = { 90, }, - [17] = { 92, }, - [18] = { 94, }, - [19] = { 96, }, - [20] = { 98, }, - [21] = { 100, }, - [22] = { 102, }, - [23] = { 104, }, - [24] = { 106, }, - [25] = { 108, }, - [26] = { 110, }, - [27] = { 112, }, - [28] = { 114, }, - [29] = { 116, }, - [30] = { 118, }, - }, -} -gems["Heavy Strike"] = { - strength = true, - active_skill = true, - attack = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["One Handed Axe"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - --"global_knockback" = 1 - mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 - }, - qualityMods = { - mod("EnemyStunDuration", "INC", 1), --"base_stun_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 50, }, - [2] = { 52.3, }, - [3] = { 54.6, }, - [4] = { 56.9, }, - [5] = { 59.2, }, - [6] = { 61.5, }, - [7] = { 63.8, }, - [8] = { 66.1, }, - [9] = { 68.4, }, - [10] = { 70.7, }, - [11] = { 73, }, - [12] = { 75.3, }, - [13] = { 77.6, }, - [14] = { 79.9, }, - [15] = { 82.2, }, - [16] = { 84.5, }, - [17] = { 86.8, }, - [18] = { 89.1, }, - [19] = { 91.4, }, - [20] = { 93.7, }, - [21] = { 96, }, - [22] = { 98.3, }, - [23] = { 100.6, }, - [24] = { 102.9, }, - [25] = { 105.2, }, - [26] = { 107.5, }, - [27] = { 109.8, }, - [28] = { 112.1, }, - [29] = { 114.4, }, - [30] = { 116.7, }, - }, -} -gems["Herald of Ash"] = { - strength = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [5] = true, [15] = true, [16] = true, [29] = true, [11] = true, [40] = true, [20] = true, [33] = true, [27] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 25), - mod("PhysicalDamageGainAsFire", "BASE", 15, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_fire" = 15 - --"is_area_damage" = ? - }, - qualityMods = { - mod("FireDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ash_fire_damage_+%" = 0.75 - }, - levelMods = { - --[1] = "herald_of_ash_%_overkill_dealt_as_ignite" - }, - levels = { - [1] = { 80, }, - [2] = { 83, }, - [3] = { 86, }, - [4] = { 89, }, - [5] = { 92, }, - [6] = { 95, }, - [7] = { 98, }, - [8] = { 101, }, - [9] = { 104, }, - [10] = { 107, }, - [11] = { 110, }, - [12] = { 113, }, - [13] = { 116, }, - [14] = { 119, }, - [15] = { 122, }, - [16] = { 125, }, - [17] = { 128, }, - [18] = { 131, }, - [19] = { 134, }, - [20] = { 137, }, - [21] = { 140, }, - [22] = { 143, }, - [23] = { 146, }, - [24] = { 149, }, - [25] = { 152, }, - [26] = { 155, }, - [27] = { 158, }, - [28] = { 161, }, - [29] = { 164, }, - [30] = { 167, }, - }, -} -gems["Ice Crash"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - cold = true, - melee = true, - parts = { - { - name = "First Hit", - }, - { - name = "Second Hit", - }, - { - name = "Third Hit", - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - cold = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [34] = true, }, - weaponTypes = { - ["None"] = true, - ["Two Handed Sword"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - mod("PhysicalDamageConvertToCold", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 50 - mod("Speed", "MORE", -20, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -20 - mod("Damage", "MORE", -10, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"ice_crash_second_hit_damage_+%_final" = -10 - mod("Damage", "MORE", -20, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"ice_crash_third_hit_damage_+%_final" = -20 - --"is_area_damage" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 70, }, - [2] = { 72, }, - [3] = { 74, }, - [4] = { 76, }, - [5] = { 78, }, - [6] = { 80, }, - [7] = { 82, }, - [8] = { 84, }, - [9] = { 86, }, - [10] = { 88, }, - [11] = { 90, }, - [12] = { 92, }, - [13] = { 94, }, - [14] = { 96, }, - [15] = { 98, }, - [16] = { 100, }, - [17] = { 102, }, - [18] = { 104, }, - [19] = { 106, }, - [20] = { 108, }, - [21] = { 110, }, - [22] = { 112, }, - [23] = { 114, }, - [24] = { 116, }, - [25] = { 118, }, - [26] = { 120, }, - [27] = { 122, }, - [28] = { 124, }, - [29] = { 116, }, - [30] = { 118, }, - }, -} -gems["Immortal Call"] = { - strength = true, - active_skill = true, - spell = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("duration", 0.4), --"base_skill_effect_duration" = 400 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" - }, - levels = { - [1] = { 21, 100, }, - [2] = { 22, 103, }, - [3] = { 23, 106, }, - [4] = { 24, 109, }, - [5] = { 25, 112, }, - [6] = { 25, 115, }, - [7] = { 26, 118, }, - [8] = { 27, 121, }, - [9] = { 28, 124, }, - [10] = { 29, 127, }, - [11] = { 30, 130, }, - [12] = { 31, 133, }, - [13] = { 31, 136, }, - [14] = { 32, 139, }, - [15] = { 33, 142, }, - [16] = { 34, 145, }, - [17] = { 35, 148, }, - [18] = { 36, 151, }, - [19] = { 36, 154, }, - [20] = { 36, 157, }, - [21] = { 37, 160, }, - [22] = { 38, 163, }, - [23] = { 39, 166, }, - [24] = { 40, 169, }, - [25] = { 41, 172, }, - [26] = { 41, 175, }, - [27] = { 42, 178, }, - [28] = { 43, 181, }, - [29] = { 44, 184, }, - [30] = { 45, 187, }, - }, -} -gems["Vaal Immortal Call"] = { - strength = true, - active_skill = true, - vaal = true, - spell = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [43] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("duration", 0.4), --"base_skill_effect_duration" = 400 - --"immortal_call_prevent_all_damage" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 - }, - levelMods = { - [1] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" - }, - levels = { - [1] = { 100, }, - [2] = { 103, }, - [3] = { 106, }, - [4] = { 109, }, - [5] = { 112, }, - [6] = { 115, }, - [7] = { 118, }, - [8] = { 121, }, - [9] = { 124, }, - [10] = { 127, }, - [11] = { 130, }, - [12] = { 133, }, - [13] = { 136, }, - [14] = { 139, }, - [15] = { 142, }, - [16] = { 145, }, - [17] = { 148, }, - [18] = { 151, }, - [19] = { 154, }, - [20] = { 157, }, - [21] = { 160, }, - [22] = { 163, }, - [23] = { 166, }, - [24] = { 169, }, - [25] = { 172, }, - [26] = { 175, }, - [27] = { 178, }, - [28] = { 181, }, - [29] = { 184, }, - [30] = { 187, }, - }, -} -gems["Infernal Blow"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - fire = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - fire = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [25] = true, [28] = true, [24] = true, [33] = true, }, - weaponTypes = { - ["None"] = true, - ["Staff"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - skill("critChance", 5), - mod("SkillPhysicalDamageConvertToFire", "BASE", 50), --"skill_physical_damage_%_to_convert_to_fire" = 50 - skill("duration", 0.5), --"base_skill_effect_duration" = 500 - --"corpse_explosion_monster_life_%" = 10 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, }, - [2] = { 31.6, }, - [3] = { 33.2, }, - [4] = { 34.8, }, - [5] = { 36.4, }, - [6] = { 38, }, - [7] = { 39.6, }, - [8] = { 41.2, }, - [9] = { 42.8, }, - [10] = { 44.4, }, - [11] = { 46, }, - [12] = { 47.6, }, - [13] = { 49.2, }, - [14] = { 50.8, }, - [15] = { 52.4, }, - [16] = { 54, }, - [17] = { 55.6, }, - [18] = { 57.2, }, - [19] = { 58.8, }, - [20] = { 60.4, }, - [21] = { 62, }, - [22] = { 63.6, }, - [23] = { 65.2, }, - [24] = { 66.8, }, - [25] = { 68.4, }, - [26] = { 70, }, - [27] = { 71.6, }, - [28] = { 73.2, }, - [29] = { 74.8, }, - [30] = { 76.4, }, - }, -} -gems["Leap Slam"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - movement = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [24] = true, [38] = true, }, - weaponTypes = { - ["Two Handed Sword"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1.4), - skill("manaCost", 15), - --"base_global_chance_to_knockback_%" = 20 - --"is_area_damage" = ? - skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? - }, - qualityMods = { - --"base_global_chance_to_knockback_%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { nil, }, - [2] = { 1.2, }, - [3] = { 2.4, }, - [4] = { 3.6, }, - [5] = { 4.8, }, - [6] = { 6, }, - [7] = { 7.2, }, - [8] = { 8.4, }, - [9] = { 9.6, }, - [10] = { 10.8, }, - [11] = { 12, }, - [12] = { 13.2, }, - [13] = { 14.4, }, - [14] = { 15.6, }, - [15] = { 16.8, }, - [16] = { 18, }, - [17] = { 19.2, }, - [18] = { 20.4, }, - [19] = { 21.6, }, - [20] = { 22.8, }, - [21] = { 24, }, - [22] = { 25.2, }, - [23] = { 26.4, }, - [24] = { 27.6, }, - [25] = { 28.8, }, - [26] = { 30, }, - [27] = { 31.2, }, - [28] = { 32.4, }, - [29] = { 33.6, }, - [30] = { 34.8, }, - }, -} -gems["Molten Shell"] = { - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [36] = true, [26] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 2), - skill("critChance", 5), - mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 - --"is_area_damage" = 1 - skill("duration", 10), --"base_skill_effect_duration" = 10000 - --"skill_override_pvp_scaling_time_ms" = 1200 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - --[4] = "fire_shield_damage_threshold" - [5] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" - }, - levels = { - [1] = { 8, 14, 20, 26, 17, }, - [2] = { 9, 17, 26, 32, 20, }, - [3] = { 9, 24, 35, 41, 26, }, - [4] = { 10, 32, 47, 52, 33, }, - [5] = { 11, 45, 68, 70, 44, }, - [6] = { 12, 64, 96, 93, 58, }, - [7] = { 13, 88, 132, 120, 75, }, - [8] = { 14, 120, 180, 155, 97, }, - [9] = { 16, 161, 241, 197, 123, }, - [10] = { 17, 214, 321, 250, 156, }, - [11] = { 19, 283, 425, 313, 196, }, - [12] = { 20, 372, 558, 391, 245, }, - [13] = { 22, 486, 729, 487, 304, }, - [14] = { 23, 631, 947, 602, 376, }, - [15] = { 25, 766, 1149, 705, 440, }, - [16] = { 25, 928, 1392, 823, 515, }, - [17] = { 26, 1122, 1683, 960, 600, }, - [18] = { 27, 1354, 2031, 1118, 698, }, - [19] = { 27, 1631, 2447, 1299, 812, }, - [20] = { 28, 1962, 2943, 1508, 943, }, - [21] = { 29, 2217, 3326, 1664, 1040, }, - [22] = { 29, 2504, 3756, 1836, 1148, }, - [23] = { 29, 2827, 4240, 2024, 1265, }, - [24] = { 30, 3189, 4784, 2231, 1394, }, - [25] = { 30, 3596, 5394, 2457, 1536, }, - [26] = { 31, 4053, 6080, 2705, 1691, }, - [27] = { 31, 4566, 6849, 2977, 1861, }, - [28] = { 31, 5141, 7712, 3275, 2047, }, - [29] = { 32, 5787, 8680, 3601, 2251, }, - [30] = { 32, 6510, 9766, 3958, 2474, }, - }, -} -gems["Vaal Molten Shell"] = { - strength = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - area = true, - duration = true, - fire = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [26] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 2), - skill("critChance", 5), - mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 - --"is_area_damage" = 1 - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"skill_override_pvp_scaling_time_ms" = 1400 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"molten_shell_explode_each_hit" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 - }, - levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [3] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" - }, - levels = { - [1] = { 9, 14, 17, }, - [2] = { 11, 17, 20, }, - [3] = { 15, 23, 26, }, - [4] = { 20, 30, 33, }, - [5] = { 27, 41, 44, }, - [6] = { 37, 56, 58, }, - [7] = { 49, 74, 75, }, - [8] = { 64, 96, 97, }, - [9] = { 83, 124, 123, }, - [10] = { 106, 159, 156, }, - [11] = { 135, 202, 196, }, - [12] = { 170, 256, 245, }, - [13] = { 214, 321, 304, }, - [14] = { 267, 401, 376, }, - [15] = { 315, 472, 440, }, - [16] = { 370, 556, 515, }, - [17] = { 435, 652, 600, }, - [18] = { 509, 764, 698, }, - [19] = { 596, 893, 812, }, - [20] = { 696, 1043, 943, }, - [21] = { 771, 1156, 1040, }, - [22] = { 854, 1280, 1148, }, - [23] = { 945, 1417, 1265, }, - [24] = { 1045, 1568, 1394, }, - [25] = { 1155, 1733, 1536, }, - [26] = { 1277, 1915, 1691, }, - [27] = { 1410, 2115, 1861, }, - [28] = { 1557, 2335, 2047, }, - [29] = { 1718, 2577, 2251, }, - [30] = { 1895, 2843, 2474, }, - }, -} -gems["Molten Strike"] = { - projectile = true, - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - fire = true, - parts = { - { - name = "Melee Hit", - melee = true, - projectile = false, - area = false, - }, - { - name = "Magma Balls", - melee = false, - projectile = true, - area = true, - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - projectile = true, - area = true, - fire = true, - }, - skillTypes = { [1] = true, [3] = true, [6] = true, [11] = true, [24] = true, [25] = true, [28] = true, [33] = true, [48] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("SkillPhysicalDamageConvertToFire", "BASE", 60), --"skill_physical_damage_%_to_convert_to_fire" = 60 - mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 - mod("Damage", "MORE", -40, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -40 - --"show_number_of_projectiles" = ? - }, - qualityMods = { - mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 20, }, - [2] = { 21.4, }, - [3] = { 22.8, }, - [4] = { 24.2, }, - [5] = { 25.6, }, - [6] = { 27, }, - [7] = { 28.4, }, - [8] = { 29.8, }, - [9] = { 31.2, }, - [10] = { 32.6, }, - [11] = { 34, }, - [12] = { 35.4, }, - [13] = { 36.8, }, - [14] = { 38.2, }, - [15] = { 39.6, }, - [16] = { 41, }, - [17] = { 42.4, }, - [18] = { 43.8, }, - [19] = { 45.2, }, - [20] = { 46.6, }, - [21] = { 48, }, - [22] = { 49.4, }, - [23] = { 50.8, }, - [24] = { 52.2, }, - [25] = { 53.6, }, - [26] = { 55, }, - [27] = { 56.4, }, - [28] = { 57.8, }, - [29] = { 59.2, }, - [30] = { 60.6, }, - }, -} -gems["Punishment"] = { - curse = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"newpunishment_applied_buff_duration_ms" = 4000 - }, - qualityMods = { - mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" = 0.25 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_melee_damage_+%_final" - [4] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" - [5] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 24, 9, 25, 10, 0, }, - [2] = { 26, 9.1, 26, 10, 4, }, - [3] = { 27, 9.2, 26, 11, 8, }, - [4] = { 29, 9.3, 27, 11, 12, }, - [5] = { 30, 9.4, 27, 12, 16, }, - [6] = { 32, 9.5, 28, 12, 20, }, - [7] = { 34, 9.6, 28, 13, 24, }, - [8] = { 35, 9.7, 29, 13, 28, }, - [9] = { 37, 9.8, 29, 14, 32, }, - [10] = { 38, 9.9, 30, 14, 36, }, - [11] = { 39, 10, 30, 15, 40, }, - [12] = { 40, 10.1, 31, 15, 44, }, - [13] = { 42, 10.2, 31, 16, 48, }, - [14] = { 43, 10.3, 32, 16, 52, }, - [15] = { 44, 10.4, 32, 17, 56, }, - [16] = { 45, 10.5, 33, 17, 60, }, - [17] = { 46, 10.6, 33, 18, 64, }, - [18] = { 47, 10.7, 34, 18, 68, }, - [19] = { 48, 10.8, 34, 19, 72, }, - [20] = { 50, 10.9, 35, 19, 76, }, - [21] = { 51, 11, 35, 20, 80, }, - [22] = { 52, 11.1, 36, 20, 84, }, - [23] = { 53, 11.2, 36, 21, 88, }, - [24] = { 54, 11.3, 37, 21, 92, }, - [25] = { 56, 11.4, 37, 22, 96, }, - [26] = { 57, 11.5, 38, 22, 100, }, - [27] = { 58, 11.6, 38, 23, 104, }, - [28] = { 59, 11.7, 39, 23, 108, }, - [29] = { 60, 11.8, 39, 24, 112, }, - [30] = { 61, 11.9, 40, 24, 116, }, - }, -} -gems["Purity of Fire"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_fire_damage_resistance_%" - [2] = mod("FireResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 22, 0, 0, }, - [2] = { 23, 0, 3, }, - [3] = { 24, 0, 6, }, - [4] = { 25, 0, 9, }, - [5] = { 26, 1, 12, }, - [6] = { 27, 1, 15, }, - [7] = { 28, 1, 18, }, - [8] = { 29, 1, 21, }, - [9] = { 30, 1, 23, }, - [10] = { 31, 1, 25, }, - [11] = { 32, 2, 27, }, - [12] = { 33, 2, 29, }, - [13] = { 34, 2, 31, }, - [14] = { 35, 2, 33, }, - [15] = { 36, 2, 35, }, - [16] = { 37, 2, 36, }, - [17] = { 38, 3, 37, }, - [18] = { 39, 3, 38, }, - [19] = { 40, 3, 39, }, - [20] = { 41, 4, 40, }, - [21] = { 42, 4, 41, }, - [22] = { 43, 4, 42, }, - [23] = { 44, 5, 43, }, - [24] = { 45, 5, 44, }, - [25] = { 46, 5, 45, }, - [26] = { 47, 5, 46, }, - [27] = { 48, 5, 47, }, - [28] = { 49, 5, 48, }, - [29] = { 50, 5, 49, }, - [30] = { 51, 5, 50, }, - }, -} -gems["Rallying Cry"] = { - warcry = true, - strength = true, - active_skill = true, - area = true, - duration = true, - color = 1, - baseFlags = { - warcry = true, - area = true, - duration = true, - }, - skillTypes = { [5] = true, [11] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.25), - skill("duration", 8), --"base_skill_effect_duration" = 8000 - --"base_deal_no_damage" = ? - --"is_warcry" = ? - }, - qualityMods = { - mod("Duration", "INC", 1.5), --"skill_effect_duration_+%" = 1.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "inspiring_cry_damage_+%_per_one_hundred_nearby_enemies" - [3] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"damage_+%" - [4] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_mana_regeneration_rate_per_minute" - }, - levels = { - [1] = { 8, 140, 10, 1.8, }, - [2] = { 10, 142, 10, 2.4, }, - [3] = { 12, 144, 11, 3.1, }, - [4] = { 13, 146, 11, 3.8, }, - [5] = { 14, 148, 11, 4.4, }, - [6] = { 15, 150, 12, 5.1, }, - [7] = { 16, 152, 12, 5.8, }, - [8] = { 17, 154, 12, 6.5, }, - [9] = { 18, 156, 13, 7.1, }, - [10] = { 20, 158, 13, 7.8, }, - [11] = { 21, 160, 13, 8.5, }, - [12] = { 22, 162, 14, 9.2, }, - [13] = { 24, 164, 14, 9.9, }, - [14] = { 25, 166, 14, 10.6, }, - [15] = { 26, 168, 15, 11.3, }, - [16] = { 26, 170, 15, 12, }, - [17] = { 26, 172, 15, 12.7, }, - [18] = { 26, 174, 16, 13.4, }, - [19] = { 27, 176, 16, 14.1, }, - [20] = { 27, 178, 16, 14.8, }, - [21] = { 28, 180, 17, 15.5, }, - [22] = { 28, 182, 17, 16.2, }, - [23] = { 29, 184, 17, 16.9, }, - [24] = { 29, 186, 18, 17.7, }, - [25] = { 30, 188, 18, 18.4, }, - [26] = { 30, 190, 18, 19.1, }, - [27] = { 30, 192, 19, 19.8, }, - [28] = { 30, 194, 19, 20.5, }, - [29] = { 31, 196, 19, 21.3, }, - [30] = { 31, 198, 20, 22, }, - }, -} -gems["Reckoning"] = { - trigger = true, - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - area = true, - melee = true, - }, - skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [47] = true, [57] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Claw"] = true, - ["One Handed Axe"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"melee_counterattack_trigger_on_block_%" = 100 - --"shield_counterattack_aoe_range" = 35 - --"attack_unusable_if_triggerable" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -30, }, - [2] = { -28, }, - [3] = { -26, }, - [4] = { -24, }, - [5] = { -22, }, - [6] = { -20, }, - [7] = { -18, }, - [8] = { -16, }, - [9] = { -14, }, - [10] = { -12, }, - [11] = { -10, }, - [12] = { -8, }, - [13] = { -6, }, - [14] = { -4, }, - [15] = { -2, }, - [16] = { nil, }, - [17] = { 2, }, - [18] = { 4, }, - [19] = { 6, }, - [20] = { 8, }, - [21] = { 10, }, - [22] = { 12, }, - [23] = { 14, }, - [24] = { 16, }, - [25] = { 18, }, - [26] = { 20, }, - [27] = { 22, }, - [28] = { 24, }, - [29] = { 26, }, - [30] = { 28, }, - }, -} -gems["Rejuvenation Totem"] = { - totem = true, - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - totem = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [12] = true, [15] = true, [27] = true, [17] = true, [19] = true, [30] = true, [44] = true, }, - skillTotemId = 4, - baseMods = { - skill("castTime", 0.6), - --"is_totem" = 1 - --"base_totem_duration" = 8000 - --"base_totem_range" = 10 - --"base_skill_is_totemified" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 3, 0, KeywordFlag.Aura), --"base_aura_area_of_effect_+%" = 3 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_life_regeneration_rate_per_minute" - [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" - }, - levels = { - [1] = { 13, 6.35, 4, }, - [2] = { 14, 8.6833333333333, 6, }, - [3] = { 15, 12.366666666667, 9, }, - [4] = { 16, 16, 12, }, - [5] = { 17, 21.033333333333, 16, }, - [6] = { 18, 26.3, 20, }, - [7] = { 19, 32.25, 24, }, - [8] = { 20, 39.366666666667, 28, }, - [9] = { 22, 46.116666666667, 32, }, - [10] = { 24, 53.7, 36, }, - [11] = { 26, 61.816666666667, 40, }, - [12] = { 27, 72.8, 44, }, - [13] = { 28, 82.716666666667, 48, }, - [14] = { 29, 92.666666666667, 52, }, - [15] = { 30, 102.85, 55, }, - [16] = { 30, 113.98333333333, 58, }, - [17] = { 31, 122.95, 61, }, - [18] = { 31, 135.6, 64, }, - [19] = { 32, 149.03333333333, 67, }, - [20] = { 32, 162.2, 70, }, - [21] = { 33, 168.61666666667, 72, }, - [22] = { 34, 177.03333333333, 74, }, - [23] = { 34, 182.1, 76, }, - [24] = { 35, 191.2, 78, }, - [25] = { 36, 200.66666666667, 80, }, - [26] = { 37, 206.03333333333, 82, }, - [27] = { 38, 217.43333333333, 84, }, - [28] = { 38, 227.95, 86, }, - [29] = { 39, 241.21666666667, 88, }, - [30] = { 40, 243.65, 90, }, - }, -} -gems["Searing Bond"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [40] = true, [12] = true, [17] = true, [19] = true, [27] = true, [29] = true, [30] = true, [36] = true, [33] = true, }, - skillTotemId = 9, - baseMods = { - skill("castTime", 1), - --"base_totem_duration" = 8000 - --"base_totem_range" = 100 - mod("ActiveTotemLimit", "BASE", 1), --"number_of_additional_totems_allowed" = 1 - --"is_totem" = ? - --"base_skill_is_totemified" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - }, - levels = { - [1] = { 18, 12, 23.583333333333, }, - [2] = { 19, 15, 31.35, }, - [3] = { 20, 19, 44.816666666667, }, - [4] = { 21, 23, 62.833333333333, }, - [5] = { 23, 27, 86.783333333333, }, - [6] = { 25, 31, 118.43333333333, }, - [7] = { 27, 35, 160.06666666667, }, - [8] = { 29, 38, 199.58333333333, }, - [9] = { 31, 41, 247.88333333333, }, - [10] = { 33, 44, 306.76666666667, }, - [11] = { 35, 47, 378.48333333333, }, - [12] = { 37, 50, 465.65, }, - [13] = { 39, 53, 571.45, }, - [14] = { 40, 56, 699.7, }, - [15] = { 42, 59, 854.93333333333, }, - [16] = { 44, 62, 1042.6166666667, }, - [17] = { 46, 64, 1188.95, }, - [18] = { 48, 66, 1354.8333333333, }, - [19] = { 50, 68, 1542.7666666667, }, - [20] = { 51, 70, 1755.6333333333, }, - [21] = { 53, 72, 1996.5833333333, }, - [22] = { 53, 74, 2269.2666666667, }, - [23] = { 54, 76, 2577.7166666667, }, - [24] = { 56, 78, 2926.5, }, - [25] = { 58, 80, 3320.75, }, - [26] = { 59, 82, 3766.2333333333, }, - [27] = { 59, 84, 4269.4666666667, }, - [28] = { 61, 86, 4837.7333333333, }, - [29] = { 62, 88, 5479.2333333333, }, - [30] = { 64, 90, 6203.2333333333, }, - }, -} -gems["Shield Charge"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - movement = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - movement = true, - }, - skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [38] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Claw"] = true, - ["One Handed Axe"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - --"shield_charge_scaling_stun_threshold_reduction_+%_at_maximum_range" = 50 - mod("MovementSpeed", "INC", 75, 0, 0, nil), --"base_movement_velocity_+%" = 75 - --"shield_charge_damage_+%_maximum" = 200 - --"ignores_proximity_shield" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -50, }, - [2] = { -49.4, }, - [3] = { -48.8, }, - [4] = { -48.2, }, - [5] = { -47.6, }, - [6] = { -47, }, - [7] = { -46.4, }, - [8] = { -45.8, }, - [9] = { -45.2, }, - [10] = { -44.6, }, - [11] = { -44, }, - [12] = { -43.4, }, - [13] = { -42.8, }, - [14] = { -42.2, }, - [15] = { -41.6, }, - [16] = { -41, }, - [17] = { -40.4, }, - [18] = { -39.8, }, - [19] = { -39.2, }, - [20] = { -38.6, }, - [21] = { -38, }, - [22] = { -37.4, }, - [23] = { -36.8, }, - [24] = { -36.2, }, - [25] = { -35.6, }, - [26] = { -35, }, - [27] = { -34.4, }, - [28] = { -33.8, }, - [29] = { -33.2, }, - [30] = { -32.6, }, - }, -} -gems["Shockwave Totem"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [19] = true, [30] = true, [26] = true, }, - skillTotemId = 5, - baseMods = { - skill("castTime", 0.6), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"base_totem_duration" = 8000 - --"base_totem_range" = 100 - --"base_global_chance_to_knockback_%" = 25 - --"is_totem" = ? - --"is_area_damage" = ? - --"base_skill_is_totemified" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - [4] = skill("totemLevel", nil), --"base_active_skill_totem_level" - }, - levels = { - [1] = { 24, 23, 46, 28, }, - [2] = { 26, 28, 51, 31, }, - [3] = { 28, 33, 62, 34, }, - [4] = { 31, 40, 74, 37, }, - [5] = { 33, 47, 88, 40, }, - [6] = { 34, 53, 98, 42, }, - [7] = { 36, 59, 110, 44, }, - [8] = { 39, 66, 123, 46, }, - [9] = { 43, 74, 137, 48, }, - [10] = { 46, 82, 153, 50, }, - [11] = { 49, 92, 170, 52, }, - [12] = { 51, 102, 189, 54, }, - [13] = { 53, 113, 210, 56, }, - [14] = { 53, 126, 233, 58, }, - [15] = { 55, 139, 259, 60, }, - [16] = { 55, 154, 287, 62, }, - [17] = { 57, 171, 318, 64, }, - [18] = { 57, 189, 351, 66, }, - [19] = { 58, 209, 389, 68, }, - [20] = { 58, 231, 429, 70, }, - [21] = { 59, 255, 474, 72, }, - [22] = { 60, 282, 524, 74, }, - [23] = { 61, 311, 578, 76, }, - [24] = { 62, 343, 637, 78, }, - [25] = { 62, 378, 702, 80, }, - [26] = { 63, 416, 773, 82, }, - [27] = { 64, 458, 851, 84, }, - [28] = { 65, 504, 936, 86, }, - [29] = { 66, 555, 1030, 88, }, - [30] = { 66, 610, 1132, 90, }, - }, -} -gems["Static Strike"] = { - strength = true, - active_skill = true, - attack = true, - melee = true, - area = true, - duration = true, - lightning = true, - parts = { - { - name = "Melee hit", - area = false, - }, - { - name = "Explosion", - area = true, - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - lightning = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [11] = true, [12] = true, [35] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 60), --"skill_physical_damage_%_to_convert_to_lightning" = 60 - skill("duration", 0.75), --"base_skill_effect_duration" = 750 - mod("Damage", "MORE", -40, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"static_strike_explosion_damage_+%_final" = -40 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 10, 0, }, - [2] = { 12.6, 0, }, - [3] = { 15.2, 0, }, - [4] = { 17.8, 0, }, - [5] = { 20.4, 1, }, - [6] = { 23, 1, }, - [7] = { 25.6, 1, }, - [8] = { 28.2, 1, }, - [9] = { 30.8, 1, }, - [10] = { 33.4, 2, }, - [11] = { 36, 2, }, - [12] = { 38.6, 2, }, - [13] = { 41.2, 2, }, - [14] = { 43.8, 2, }, - [15] = { 46.4, 3, }, - [16] = { 49, 3, }, - [17] = { 51.6, 3, }, - [18] = { 54.2, 3, }, - [19] = { 56.8, 3, }, - [20] = { 59.4, 4, }, - [21] = { 62, 4, }, - [22] = { 64.6, 4, }, - [23] = { 67.2, 4, }, - [24] = { 69.8, 4, }, - [25] = { 72.4, 5, }, - [26] = { 75, 5, }, - [27] = { 77.6, 5, }, - [28] = { 80.2, 5, }, - [29] = { 82.8, 5, }, - [30] = { 85.4, 6, }, - }, -} -gems["Summon Flame Golem"] = { - strength = true, - active_skill = true, - fire = true, - minion = true, - spell = true, - golem = true, - color = 1, - baseFlags = { - spell = true, - minion = true, - golem = true, - fire = true, - }, - skillTypes = { [36] = true, [33] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 7 - mod("Misc", "LIST", { type = "Condition", var = "HaveFireGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [3] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"fire_golem_grants_damage_+%" - [4] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 15, 30, 34, }, - [2] = { 32, 1, 15, 32, 36, }, - [3] = { 34, 1, 16, 34, 38, }, - [4] = { 36, 2, 16, 36, 40, }, - [5] = { 38, 2, 16, 38, 42, }, - [6] = { 40, 3, 16, 40, 44, }, - [7] = { 42, 3, 17, 42, 46, }, - [8] = { 44, 4, 17, 44, 48, }, - [9] = { 44, 4, 17, 46, 50, }, - [10] = { 46, 5, 17, 48, 52, }, - [11] = { 48, 5, 18, 50, 54, }, - [12] = { 48, 6, 18, 52, 56, }, - [13] = { 50, 6, 18, 54, 58, }, - [14] = { 50, 7, 18, 56, 60, }, - [15] = { 52, 7, 19, 58, 62, }, - [16] = { 52, 8, 19, 60, 64, }, - [17] = { 52, 8, 19, 62, 66, }, - [18] = { 52, 9, 19, 64, 68, }, - [19] = { 54, 9, 20, 66, 69, }, - [20] = { 54, 10, 20, 68, 70, }, - [21] = { 56, 10, 20, 70, 72, }, - [22] = { 56, 11, 20, 72, 74, }, - [23] = { 58, 11, 21, 74, 76, }, - [24] = { 58, 12, 21, 76, 78, }, - [25] = { 60, 12, 21, 78, 80, }, - [26] = { 60, 13, 21, 80, 82, }, - [27] = { 60, 13, 22, 82, 84, }, - [28] = { 60, 14, 22, 84, 86, }, - [29] = { 62, 14, 22, 86, 88, }, - [30] = { 62, 15, 22, 88, 90, }, - }, -} -gems["Summon Stone Golem"] = { - strength = true, - active_skill = true, - minion = true, - spell = true, - golem = true, - color = 1, - baseFlags = { - spell = true, - minion = true, - golem = true, - }, - skillTypes = { [36] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 10 - mod("Misc", "LIST", { type = "Condition", var = "HavePhysicalGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [3] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - [4] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"stone_golem_grants_base_life_regeneration_rate_per_minute" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 30, 33, 34, }, - [2] = { 32, 1, 32, 36, 36, }, - [3] = { 34, 1, 34, 39, 38, }, - [4] = { 36, 2, 36, 42, 40, }, - [5] = { 38, 2, 38, 45, 42, }, - [6] = { 40, 3, 40, 49, 44, }, - [7] = { 42, 3, 42, 52, 46, }, - [8] = { 44, 4, 44, 56, 48, }, - [9] = { 44, 4, 46, 60, 50, }, - [10] = { 46, 5, 48, 64, 52, }, - [11] = { 48, 5, 50, 68, 54, }, - [12] = { 48, 6, 52, 72, 56, }, - [13] = { 50, 6, 54, 76, 58, }, - [14] = { 50, 7, 56, 81, 60, }, - [15] = { 52, 7, 58, 85, 62, }, - [16] = { 52, 8, 60, 90, 64, }, - [17] = { 52, 8, 62, 95, 66, }, - [18] = { 52, 9, 64, 100, 68, }, - [19] = { 54, 9, 66, 103, 69, }, - [20] = { 54, 10, 68, 105, 70, }, - [21] = { 56, 10, 70, 110, 72, }, - [22] = { 56, 11, 72, 116, 74, }, - [23] = { 58, 11, 74, 121, 76, }, - [24] = { 58, 12, 76, 127, 78, }, - [25] = { 60, 12, 78, 133, 80, }, - [26] = { 60, 13, 80, 139, 82, }, - [27] = { 60, 13, 82, 145, 84, }, - [28] = { 60, 14, 84, 151, 86, }, - [29] = { 62, 14, 86, 157, 88, }, - [30] = { 62, 15, 88, 164, 90, }, - }, -} -gems["Sunder"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - parts = { - { - name = "Primary wave", - }, - { - name = "Shockwaves", - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - mod("Damage", "MORE", -60, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"shockwave_slam_explosion_damage_+%_final" = -60 - mod("Speed", "MORE", -15, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -15 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 40, 0, }, - [2] = { 42.2, 0, }, - [3] = { 44.4, 1, }, - [4] = { 46.6, 1, }, - [5] = { 48.8, 1, }, - [6] = { 51, 2, }, - [7] = { 53.2, 2, }, - [8] = { 55.4, 2, }, - [9] = { 57.6, 3, }, - [10] = { 59.8, 3, }, - [11] = { 62, 3, }, - [12] = { 64.2, 4, }, - [13] = { 66.4, 4, }, - [14] = { 68.6, 4, }, - [15] = { 70.8, 5, }, - [16] = { 73, 5, }, - [17] = { 75.2, 5, }, - [18] = { 77.4, 6, }, - [19] = { 79.6, 6, }, - [20] = { 81.8, 6, }, - [21] = { 84, 7, }, - [22] = { 86.2, 7, }, - [23] = { 88.4, 7, }, - [24] = { 90.6, 8, }, - [25] = { 92.8, 8, }, - [26] = { 95, 8, }, - [27] = { 97.2, 9, }, - [28] = { 99.4, 9, }, - [29] = { 101.6, 9, }, - [30] = { 103.8, 10, }, - }, -} -gems["Sweep"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - }, - baseMods = { - skill("castTime", 1.15), - skill("manaCost", 8), - mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - --[1] = "base_global_chance_to_knockback_%" - --[2] = "active_skill_base_radius_+" - [3] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, 0, nil, }, - [2] = { 30, 0, 2, }, - [3] = { 31, 0, 4, }, - [4] = { 31, 0, 6, }, - [5] = { 32, 1, 8, }, - [6] = { 32, 1, 10, }, - [7] = { 33, 1, 12, }, - [8] = { 33, 1, 14, }, - [9] = { 34, 1, 16, }, - [10] = { 34, 2, 18, }, - [11] = { 35, 2, 20, }, - [12] = { 35, 2, 22, }, - [13] = { 36, 2, 24, }, - [14] = { 36, 2, 26, }, - [15] = { 37, 3, 28, }, - [16] = { 37, 3, 30, }, - [17] = { 38, 3, 32, }, - [18] = { 38, 3, 34, }, - [19] = { 39, 3, 36, }, - [20] = { 39, 4, 38, }, - [21] = { 40, 4, 40, }, - [22] = { 40, 4, 42, }, - [23] = { 41, 4, 44, }, - [24] = { 41, 4, 46, }, - [25] = { 42, 5, 48, }, - [26] = { 42, 5, 50, }, - [27] = { 43, 5, 52, }, - [28] = { 43, 5, 54, }, - [29] = { 44, 5, 56, }, - [30] = { 44, 6, 58, }, - }, -} -gems["Vengeance"] = { - trigger = true, - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [11] = true, [24] = true, [47] = true, [6] = true, [57] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"melee_counterattack_trigger_on_hit_%" = 30 - --"attack_unusable_if_triggerable" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - --"melee_counterattack_trigger_on_hit_%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -25, }, - [2] = { -23, }, - [3] = { -21, }, - [4] = { -19, }, - [5] = { -17, }, - [6] = { -15, }, - [7] = { -13, }, - [8] = { -11, }, - [9] = { -9, }, - [10] = { -7, }, - [11] = { -5, }, - [12] = { -3, }, - [13] = { -1, }, - [14] = { 1, }, - [15] = { 3, }, - [16] = { 5, }, - [17] = { 7, }, - [18] = { 9, }, - [19] = { 11, }, - [20] = { 13, }, - [21] = { 15, }, - [22] = { 17, }, - [23] = { 19, }, - [24] = { 21, }, - [25] = { 23, }, - [26] = { 25, }, - [27] = { 27, }, - [28] = { 29, }, - [29] = { 31, }, - [30] = { 33, }, - }, -} -gems["Vigilant Strike"] = { - attack = true, - strength = true, - active_skill = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [5] = true, [24] = true, [6] = true, [28] = true, [25] = true, [53] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("FortifyDuration", "INC", 1), --"fortify_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("FortifyDuration", "INC", nil), --"fortify_duration_+%" - }, - levels = { - [1] = { 65, 75, }, - [2] = { 67, 80, }, - [3] = { 69, 85, }, - [4] = { 71, 90, }, - [5] = { 73, 95, }, - [6] = { 75, 100, }, - [7] = { 77, 105, }, - [8] = { 79, 110, }, - [9] = { 81, 115, }, - [10] = { 83, 120, }, - [11] = { 85, 125, }, - [12] = { 87, 130, }, - [13] = { 89, 135, }, - [14] = { 91, 140, }, - [15] = { 93, 145, }, - [16] = { 95, 150, }, - [17] = { 97, 155, }, - [18] = { 99, 160, }, - [19] = { 101, 165, }, - [20] = { 103, 170, }, - [21] = { 105, 175, }, - [22] = { 107, 180, }, - [23] = { 109, 185, }, - [24] = { 111, 190, }, - [25] = { 113, 195, }, - [26] = { 115, 200, }, - [27] = { 117, 205, }, - [28] = { 119, 210, }, - [29] = { 121, 215, }, - [30] = { 123, 220, }, - }, -} -gems["Vitality"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"life_regeneration_rate_per_minute_%" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 0.7, 0, }, - [2] = { 0.75, 3, }, - [3] = { 0.8, 6, }, - [4] = { 0.85, 9, }, - [5] = { 0.9, 12, }, - [6] = { 0.95, 15, }, - [7] = { 1, 18, }, - [8] = { 1.05, 21, }, - [9] = { 1.1, 23, }, - [10] = { 1.15, 25, }, - [11] = { 1.2, 27, }, - [12] = { 1.25, 29, }, - [13] = { 1.3, 31, }, - [14] = { 1.35, 33, }, - [15] = { 1.4, 35, }, - [16] = { 1.45, 36, }, - [17] = { 1.5, 37, }, - [18] = { 1.55, 38, }, - [19] = { 1.6, 39, }, - [20] = { 1.65, 40, }, - [21] = { 1.7, 41, }, - [22] = { 1.75, 42, }, - [23] = { 1.8, 43, }, - [24] = { 1.85, 44, }, - [25] = { 1.9, 45, }, - [26] = { 1.95, 46, }, - [27] = { 2, 47, }, - [28] = { 2.05, 48, }, - [29] = { 2.1, 49, }, - [30] = { 2.15, 50, }, - }, -} -gems["Warlord's Mark"] = { - curse = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"chance_to_be_stunned_%" = 10 - mod("SelfDamageLifeLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_leech_on_any_damage_when_hit_permyriad" = 200 - mod("SelfDamageManaLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_leech_on_any_damage_when_hit_permyriad" = 200 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"chance_to_grant_endurance_charge_on_death_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("StunRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_stun_recovery_+%" - --[5] = "chance_to_grant_endurance_charge_on_death_%" - }, - levels = { - [1] = { 24, 6, 0, -21, 21, }, - [2] = { 26, 6.2, 4, -21, 21, }, - [3] = { 27, 6.4, 8, -22, 22, }, - [4] = { 29, 6.6, 12, -22, 22, }, - [5] = { 30, 6.8, 16, -23, 23, }, - [6] = { 32, 7, 20, -23, 23, }, - [7] = { 34, 7.2, 24, -24, 24, }, - [8] = { 35, 7.4, 28, -24, 24, }, - [9] = { 37, 7.6, 32, -25, 25, }, - [10] = { 38, 7.8, 36, -25, 25, }, - [11] = { 39, 8, 40, -26, 26, }, - [12] = { 40, 8.2, 44, -26, 26, }, - [13] = { 42, 8.4, 48, -27, 27, }, - [14] = { 43, 8.6, 52, -27, 27, }, - [15] = { 44, 8.8, 56, -28, 28, }, - [16] = { 45, 9, 60, -28, 28, }, - [17] = { 46, 9.2, 64, -29, 29, }, - [18] = { 47, 9.4, 68, -29, 29, }, - [19] = { 48, 9.6, 72, -30, 30, }, - [20] = { 50, 9.8, 76, -30, 30, }, - [21] = { 51, 10, 80, -31, 31, }, - [22] = { 52, 10.2, 84, -31, 31, }, - [23] = { 53, 10.4, 88, -32, 32, }, - [24] = { 54, 10.6, 92, -32, 32, }, - [25] = { 56, 10.8, 96, -33, 33, }, - [26] = { 57, 11, 100, -33, 33, }, - [27] = { 58, 11.2, 104, -34, 34, }, - [28] = { 59, 11.4, 108, -34, 34, }, - [29] = { 60, 11.6, 112, -35, 35, }, - [30] = { 61, 11.8, 116, -35, 35, }, - }, -} diff --git a/Data/Minions.lua b/Data/Minions.lua new file mode 100644 index 00000000..a836b2e7 --- /dev/null +++ b/Data/Minions.lua @@ -0,0 +1,250 @@ +-- Path of Building +-- +-- Minion Data +-- Monster data (c) Grinding Gear Games +-- +local minions, mod = ... + +minions["RaisedZombie"] = { + name = "Zombie", + life = 2.55, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 1.75, + damageSpread = 0.4, + attackTime = 1.17, + limit = "ActiveZombieLimit", + skillList = { + "Melee", + "ZombieSlam", + }, + modList = { + mod("Armour", "INC", 40), + }, +} +minions["SummonedChaosGolem"] = { + name = "Chaos Golem", + life = 4.8, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 60, + energyShield = 0.2, + damage = 3.48, + damageSpread = 0.2, + attackTime = 1.5, + limit = "ActiveGolemLimit", + skillList = { + "Melee", + "ChaosElementalCascadeSummoned", + "SandstormChaosElementalSummoned", + }, + modList = { + mod("Damage", "MORE", -22), + mod("Speed", "MORE", 22), + }, +} +minions["SummonedFlameGolem"] = { + name = "Flame Golem", + life = 3.75, + energyShield = 0.4, + fireResist = 70, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.5, + limit = "ActiveGolemLimit", + skillList = { + "FireElementalFlameRedSummoned", + "FireElementalMortarSummoned", + "FireElementalConeSummoned", + }, + modList = { + mod("Damage", "MORE", -33), + mod("Speed", "MORE", 33), + }, +} +minions["SummonedIceGolem"] = { + name = "Ice Golem", + life = 4.05, + energyShield = 0.4, + fireResist = 40, + coldResist = 70, + lightningResist = 40, + chaosResist = 20, + damage = 4.06, + damageSpread = 0.2, + attackTime = 1.275, + limit = "ActiveGolemLimit", + skillList = { + "Melee", + "IceElementalIceCyclone", + "IceElementalSpearSummoned", + }, + modList = { + mod("Damage", "MORE", -33), + mod("Speed", "MORE", 33), + }, +} +minions["SummonedLightningGolem"] = { + name = "Lightning Golem", + life = 3.75, + energyShield = 0.2, + fireResist = 40, + coldResist = 40, + lightningResist = 70, + chaosResist = 20, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.755, + limit = "ActiveGolemLimit", + skillList = { + "LightningGolemArcSummoned", + "MonsterProjectileSpellLightningGolemSummoned", + "LightningGolemWrath", + }, + modList = { + mod("Damage", "MORE", -22), + mod("Speed", "MORE", 22), + }, +} +minions["SummonedStoneGolem"] = { + name = "Stone Golem", + life = 5.25, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 4, + damageSpread = 0.2, + attackTime = 1.5, + weaponType1 = "One Handed Sword", + limit = "ActiveGolemLimit", + skillList = { + "Melee", + "RockGolemSlam", + "RockGolemWhirlingBlades", + }, + modList = { + mod("Damage", "MORE", -33), + mod("Speed", "MORE", 33), + }, +} +minions["SummonedRagingSpirit"] = { + name = "Raging Spirit", + life = 1.8, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 0.66, + damageSpread = 0.2, + attackTime = 0.855, + limit = "ActiveRagingSpiritLimit", + skillList = { + "PlayerRagingSpiritMeleeAttack", + }, + modList = { + mod("PhysicalMin", "BASE", 4), + mod("PhysicalMax", "BASE", 5), + mod("PhysicalDamageConvertToFire", "BASE", 50), + mod("Speed", "MORE", 40, ModFlag.Attack), + }, +} +minions["SummonedSpectralWolf"] = { + name = "Spectral Wolf", + life = 4.5, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.5, + limit = "ActiveWolfLimit", + skillList = { + "Melee", + }, + modList = { + }, +} +minions["RaisedSkeleton"] = { + name = "Skeleton Warrior", + life = 1.05, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 1.49, + damageSpread = 0.4, + attackTime = 0.87, + weaponType1 = "One Handed Sword", + limit = "ActiveSkeletonLimit", + skillList = { + "Melee", + }, + modList = { + }, +} +minions["RaisedSkeletonCaster"] = { + name = "Skeleton Mage", + life = 1.05, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 1.98, + damageSpread = 0.3, + attackTime = 1.605, + limit = "ActiveSkeletonLimit", + skillList = { + "SkeletonProjectileFire", + "SkeletonProjectileCold", + "SkeletonProjectileLightning", + }, + modList = { + mod("Damage", "MORE", -33), + mod("Speed", "MORE", 33), + }, +} +minions["RaisedSkeletonArcher"] = { + name = "Skeleton Archer", + life = 1.05, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 1.98, + damageSpread = 0.16, + attackTime = 1.995, + weaponType1 = "Bow", + limit = "ActiveSkeletonLimit", + skillList = { + "Melee", + }, + modList = { + mod("Damage", "MORE", -33), + mod("Speed", "MORE", 33), + }, +} +minions["Clone"] = { + name = "Clone", + life = 1, + fireResist = 40, + coldResist = 40, + lightningResist = 40, + chaosResist = 20, + damage = 2, + damageSpread = 0, + attackTime = 1.425, + skillList = { + "Melee", + }, + modList = { + mod("EnergyShield", "BASE", 10), + }, +} \ No newline at end of file diff --git a/Data/New.lua b/Data/New.lua index e56f6f1a..d8216b95 100644 --- a/Data/New.lua +++ b/Data/New.lua @@ -58,8 +58,8 @@ Close Helmet Requires Level 26, 58 Str +2 to Level of Socketed Minion Gems +(20–40) to Strength -Minions have 20% increase maximum Life -Your Strenght is added to your Minions +Minions have 20% increased maximum Life +Your Strength is added to your Minions +1 to maximum number of Zombies per 300 Strength With 1000 or more Strength 2% of Damage dealt by your Zombies is Leeched to you as Life ]],[[ diff --git a/Data/Rares.lua b/Data/Rares.lua index e3fdee84..117e2d6f 100644 --- a/Data/Rares.lua +++ b/Data/Rares.lua @@ -1042,7 +1042,7 @@ Prefixes: ]],[[ Physical 1H Sword Tiger Hook -3% chance to Dodge Attacks +6% chance to Dodge Attacks {phys 1h} ]],[[ Physical 1H Sword diff --git a/Data/Skills/act_dex.lua b/Data/Skills/act_dex.lua new file mode 100644 index 00000000..c975ab92 --- /dev/null +++ b/Data/Skills/act_dex.lua @@ -0,0 +1,4730 @@ +-- Path of Building +-- +-- Active Dexterity skill gems +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["AnimateWeapon"] = { + name = "Animate Weapon", + gemTags = { + dexterity = true, + active_skill = true, + duration = true, + minion = true, + spell = true, + }, + unsupported = true, + color = 2, + baseFlags = { + }, + skillTypes = { [36] = true, [12] = true, [9] = true, [21] = true, [2] = true, [18] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [54] = true, [56] = true, }, + baseMods = { + skill("castTime", 0.8), + --"emerge_speed_+%" = 0 + skill("duration", 37.5), --"base_skill_effect_duration" = 37500 + --"number_of_animated_weapons_allowed" = 50 + }, + qualityMods = { + mod("MovementSpeed", "INC", 2, 0, 0, nil), --"base_movement_velocity_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "animate_item_maximum_level_requirement" + [4] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" + [5] = mod("Speed", "INC", nil, ModFlag.Attack, 0, nil), --"attack_speed_+%" + [6] = mod("PhysicalMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_physical_damage" + [7] = mod("PhysicalMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_physical_damage" + }, + levels = { + [1] = { 4, 9, 9, 0, 0, 4, 6, }, + [2] = { 6, 10, 11, 8, 2, 5, 8, }, + [3] = { 9, 11, 14, 16, 4, 7, 10, }, + [4] = { 12, 12, 18, 24, 6, 8, 12, }, + [5] = { 16, 14, 22, 32, 8, 10, 15, }, + [6] = { 20, 15, 26, 40, 10, 12, 18, }, + [7] = { 24, 16, 31, 48, 12, 14, 21, }, + [8] = { 28, 18, 35, 56, 14, 17, 25, }, + [9] = { 32, 20, 40, 64, 16, 19, 29, }, + [10] = { 36, 22, 44, 72, 18, 22, 34, }, + [11] = { 40, 25, 49, 80, 20, 24, 37, }, + [12] = { 44, 26, 53, 88, 22, 26, 39, }, + [13] = { 48, 27, 58, 96, 24, 28, 41, }, + [14] = { 52, 29, 62, 104, 26, 29, 44, }, + [15] = { 55, 30, 66, 112, 28, 31, 46, }, + [16] = { 58, 31, 70, 120, 30, 32, 49, }, + [17] = { 61, 33, 74, 128, 32, 34, 51, }, + [18] = { 64, 34, 78, 136, 34, 36, 53, }, + [19] = { 67, 34, 82, 144, 36, 37, 55, }, + [20] = { 70, 36, 100, 152, 38, 38, 56, }, + [21] = { 72, 37, 100, 160, 40, 39, 58, }, + [22] = { 74, 38, 100, 168, 42, 40, 60, }, + [23] = { 76, 38, 100, 176, 44, 41, 61, }, + [24] = { 78, 39, 100, 184, 46, 42, 63, }, + [25] = { 80, 40, 100, 192, 48, 43, 64, }, + [26] = { 82, 41, 100, 200, 50, 44, 66, }, + [27] = { 84, 42, 100, 208, 52, 45, 67, }, + [28] = { 86, 42, 100, 216, 54, 46, 69, }, + [29] = { 88, 44, 100, 224, 56, 47, 71, }, + [30] = { 90, 45, 100, 232, 58, 48, 72, }, + }, +} +skills["NewArcticArmour"] = { + name = "Arctic Armour", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + duration = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [5] = true, [18] = true, [12] = true, [15] = true, [27] = true, [34] = true, [16] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 25), + skill("cooldown", 0.5), + --"chill_enemy_when_hit_duration_ms" = 500 + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "new_arctic_armour_physical_damage_taken_when_hit_+%_final" + --[3] = "new_arctic_armour_fire_damage_taken_when_hit_+%_final" + [4] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 16, -8, -8, 2.5, }, + [2] = { 20, -8, -8, 2.6, }, + [3] = { 24, -9, -8, 2.7, }, + [4] = { 28, -9, -8, 2.8, }, + [5] = { 31, -9, -9, 2.9, }, + [6] = { 34, -9, -9, 3, }, + [7] = { 37, -10, -9, 3.1, }, + [8] = { 40, -10, -9, 3.2, }, + [9] = { 43, -10, -10, 3.3, }, + [10] = { 46, -10, -10, 3.4, }, + [11] = { 49, -11, -10, 3.5, }, + [12] = { 52, -11, -10, 3.6, }, + [13] = { 55, -11, -11, 3.7, }, + [14] = { 58, -11, -11, 3.8, }, + [15] = { 60, -12, -11, 3.9, }, + [16] = { 62, -12, -11, 4, }, + [17] = { 64, -12, -12, 4.1, }, + [18] = { 66, -12, -12, 4.2, }, + [19] = { 68, -13, -12, 4.3, }, + [20] = { 70, -13, -12, 4.4, }, + [21] = { 72, -13, -13, 4.5, }, + [22] = { 74, -13, -13, 4.6, }, + [23] = { 76, -14, -13, 4.7, }, + [24] = { 78, -14, -13, 4.8, }, + [25] = { 80, -14, -14, 4.9, }, + [26] = { 82, -14, -14, 5, }, + [27] = { 84, -15, -14, 5.1, }, + [28] = { 86, -15, -14, 5.2, }, + [29] = { 88, -15, -15, 5.3, }, + [30] = { 90, -15, -15, 5.4, }, + }, +} +skills["Barrage"] = { + name = "Barrage", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + bow = true, + }, + parts = { + { + name = "1 Arrow", + }, + { + name = "All Arrows", + }, + }, + setupFunc = function(actor, output) + if actor.mainSkill.skillPart == 2 then + actor.mainSkill.skillData.dpsMultiplier = output.ProjectileCount + end + end, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Wand"] = true, + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("ProjectileCount", "BASE", 3), --"number_of_additional_projectiles" = 3 + --"skill_can_fire_arrows" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 0.5, ModFlag.Projectile), --"projectile_damage_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 7, -50, }, + [2] = { 15, 7, -49.4, }, + [3] = { 19, 7, -48.8, }, + [4] = { 23, 8, -48.2, }, + [5] = { 27, 8, -47.6, }, + [6] = { 31, 8, -47, }, + [7] = { 35, 8, -46.4, }, + [8] = { 38, 8, -45.8, }, + [9] = { 41, 9, -45.2, }, + [10] = { 44, 9, -44.6, }, + [11] = { 47, 9, -44, }, + [12] = { 50, 9, -43.4, }, + [13] = { 53, 9, -42.8, }, + [14] = { 56, 10, -42.2, }, + [15] = { 59, 10, -41.6, }, + [16] = { 62, 10, -41, }, + [17] = { 64, 10, -40.4, }, + [18] = { 66, 10, -39.8, }, + [19] = { 68, 11, -39.2, }, + [20] = { 70, 11, -38.6, }, + [21] = { 72, 11, -38, }, + [22] = { 74, 11, -37.4, }, + [23] = { 76, 11, -36.8, }, + [24] = { 78, 11, -36.2, }, + [25] = { 80, 11, -35.6, }, + [26] = { 82, 12, -35, }, + [27] = { 84, 12, -34.4, }, + [28] = { 86, 12, -33.8, }, + [29] = { 88, 12, -33.2, }, + [30] = { 90, 12, -32.6, }, + }, +} +skills["BearTrap"] = { + name = "Bear Trap", + gemTags = { + trap = true, + dexterity = true, + active_skill = true, + duration = true, + cast = true, + }, + color = 2, + baseFlags = { + cast = true, + trap = true, + duration = true, + }, + skillTypes = { [12] = true, [19] = true, [37] = true, [39] = true, [10] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 2), + skill("critChance", 5), + skill("cooldown", 3), + --"is_trap" = 1 + --"base_trap_duration" = 16000 + mod("MovementSpeed", "INC", -300, 0, 0, nil), --"base_movement_velocity_+%" = -300 + --"trap_override_pvp_scaling_time_ms" = 750 + --"base_skill_is_trapped" = ? + --"display_skill_deals_secondary_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("trapCooldown", 3), + }, + qualityMods = { + mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"secondary_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"secondary_maximum_base_physical_damage" + }, + levels = { + [1] = { 4, 11, 16, 22, }, + [2] = { 6, 13, 20, 28, }, + [3] = { 9, 15, 27, 38, }, + [4] = { 12, 17, 35, 49, }, + [5] = { 16, 20, 49, 69, }, + [6] = { 20, 22, 67, 94, }, + [7] = { 24, 24, 90, 126, }, + [8] = { 28, 26, 119, 167, }, + [9] = { 32, 28, 156, 218, }, + [10] = { 36, 32, 202, 282, }, + [11] = { 40, 35, 259, 363, }, + [12] = { 44, 38, 331, 463, }, + [13] = { 48, 39, 420, 587, }, + [14] = { 52, 41, 530, 742, }, + [15] = { 55, 42, 630, 881, }, + [16] = { 58, 43, 746, 1045, }, + [17] = { 61, 44, 883, 1236, }, + [18] = { 64, 45, 1043, 1460, }, + [19] = { 67, 46, 1230, 1721, }, + [20] = { 70, 46, 1447, 2026, }, + [21] = { 72, 47, 1613, 2258, }, + [22] = { 74, 48, 1795, 2514, }, + [23] = { 76, 49, 1998, 2797, }, + [24] = { 78, 50, 2222, 3111, }, + [25] = { 80, 50, 2470, 3458, }, + [26] = { 82, 51, 2744, 3842, }, + [27] = { 84, 52, 3047, 4266, }, + [28] = { 86, 53, 3382, 4735, }, + [29] = { 88, 54, 3753, 5254, }, + [30] = { 90, 54, 4162, 5826, }, + }, +} +skills["ChargedAttack"] = { + name = "Blade Flurry", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + channelling = true, + melee = true, + }, + parts = { + { + name = "1 Stage", + }, + { + name = "6 Stages", + }, + { + name = "Release at 6 Stages", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, [6] = true, [58] = true, [24] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 4), + mod("Speed", "MORE", 60, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 60 + --"charged_attack_damage_per_stack_+%_final" = 20 + --"is_area_damage" = ? + nil, --"base_skill_show_average_damage_instead_of_dps" = ? + --"skill_can_add_multiple_charges_per_action" = ? + mod("Damage", "MORE", 120, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), + skill("dpsMultiplier", 3, { type = "SkillPart", skillPart = 3 }), + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -55, }, + [2] = { 31, -54.4, }, + [3] = { 34, -53.8, }, + [4] = { 37, -53.2, }, + [5] = { 40, -52.6, }, + [6] = { 42, -52, }, + [7] = { 44, -51.4, }, + [8] = { 46, -50.8, }, + [9] = { 48, -50.2, }, + [10] = { 50, -49.6, }, + [11] = { 52, -49, }, + [12] = { 54, -48.4, }, + [13] = { 56, -47.8, }, + [14] = { 58, -47.2, }, + [15] = { 60, -46.6, }, + [16] = { 62, -46, }, + [17] = { 64, -45.4, }, + [18] = { 66, -44.8, }, + [19] = { 68, -44.2, }, + [20] = { 70, -43.6, }, + [21] = { 72, -43, }, + [22] = { 74, -42.4, }, + [23] = { 76, -41.8, }, + [24] = { 78, -41.2, }, + [25] = { 80, -40.6, }, + [26] = { 82, -40, }, + [27] = { 84, -39.4, }, + [28] = { 86, -38.8, }, + [29] = { 88, -38.2, }, + [30] = { 90, -37.6, }, + }, +} +skills["BladeVortex"] = { + name = "Blade Vortex", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + parts = { + { + name = "0 Blades", + }, + { + name = "5 Blades", + }, + { + name = "10 Blades", + }, + { + name = "20 Blades", + }, + }, + color = 2, + baseFlags = { + spell = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [26] = true, [36] = true, [27] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.3), + skill("critChance", 6), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"maximum_number_of_spinning_blades" = 20 + --"base_blade_vortex_hit_rate_ms" = 600 + --"blade_vortex_hit_rate_+%_per_blade" = 10 + --"blade_vortex_damage_+%_per_blade_final" = 30 + --"is_area_damage" = ? + --"skill_can_add_multiple_charges_per_action" = ? + --"action_ignores_crit_tracking" = ? + nil, --"base_skill_show_average_damage_instead_of_dps" = ? + skill("deliciouslyOverpowered", true), + mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), + mod("Damage", "MORE", 300, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 3 }), + mod("Damage", "MORE", 600, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 4 }), + skill("hitTimeOverride", 0.6, { type = "SkillPart", skillPart = 1 }), + skill("hitTimeOverride", 0.4, { type = "SkillPart", skillPart = 2 }), + skill("hitTimeOverride", 0.3, { type = "SkillPart", skillPart = 3 }), + skill("hitTimeOverride", 0.2, { type = "SkillPart", skillPart = 4 }), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 6, 7, 10, 0, }, + [2] = { 15, 7, 8, 12, 0, }, + [3] = { 19, 8, 11, 16, 0, }, + [4] = { 23, 9, 14, 20, 0, }, + [5] = { 27, 10, 17, 25, 1, }, + [6] = { 31, 11, 21, 32, 1, }, + [7] = { 35, 12, 26, 39, 1, }, + [8] = { 38, 13, 30, 45, 1, }, + [9] = { 41, 13, 35, 52, 1, }, + [10] = { 44, 14, 40, 60, 2, }, + [11] = { 47, 14, 46, 69, 2, }, + [12] = { 50, 15, 53, 79, 2, }, + [13] = { 53, 16, 60, 90, 2, }, + [14] = { 56, 16, 68, 103, 2, }, + [15] = { 59, 17, 78, 117, 3, }, + [16] = { 62, 18, 88, 133, 3, }, + [17] = { 64, 18, 96, 144, 3, }, + [18] = { 66, 19, 104, 157, 3, }, + [19] = { 68, 19, 113, 170, 3, }, + [20] = { 70, 19, 123, 185, 4, }, + [21] = { 72, 20, 133, 200, 4, }, + [22] = { 74, 21, 145, 217, 4, }, + [23] = { 76, 21, 157, 235, 4, }, + [24] = { 78, 21, 170, 254, 4, }, + [25] = { 80, 22, 183, 275, 5, }, + [26] = { 82, 23, 198, 298, 5, }, + [27] = { 84, 23, 214, 322, 5, }, + [28] = { 86, 23, 232, 347, 5, }, + [29] = { 88, 24, 250, 375, 5, }, + [30] = { 90, 24, 270, 405, 6, }, + }, +} +skills["Bladefall"] = { + name = "Bladefall", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + area = true, + }, + color = 2, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [17] = true, [19] = true, [18] = true, [10] = true, [36] = true, [26] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.9), + skill("critChance", 5), + --"bladefall_damage_per_stage_+%_final" = -6 + mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 28, 13, 44, 65, }, + [2] = { 31, 14, 52, 78, }, + [3] = { 34, 15, 62, 93, }, + [4] = { 37, 16, 73, 110, }, + [5] = { 40, 17, 86, 129, }, + [6] = { 42, 18, 96, 144, }, + [7] = { 44, 18, 107, 160, }, + [8] = { 46, 19, 118, 177, }, + [9] = { 48, 19, 131, 197, }, + [10] = { 50, 20, 145, 218, }, + [11] = { 52, 21, 160, 241, }, + [12] = { 54, 21, 177, 266, }, + [13] = { 56, 22, 195, 293, }, + [14] = { 58, 22, 215, 323, }, + [15] = { 60, 23, 237, 356, }, + [16] = { 62, 24, 261, 392, }, + [17] = { 64, 24, 287, 431, }, + [18] = { 66, 25, 315, 473, }, + [19] = { 68, 25, 346, 519, }, + [20] = { 70, 26, 380, 570, }, + [21] = { 72, 27, 417, 625, }, + [22] = { 74, 27, 457, 685, }, + [23] = { 76, 28, 500, 750, }, + [24] = { 78, 28, 548, 821, }, + [25] = { 80, 29, 599, 899, }, + [26] = { 82, 30, 655, 983, }, + [27] = { 84, 30, 716, 1074, }, + [28] = { 86, 31, 782, 1174, }, + [29] = { 88, 31, 854, 1282, }, + [30] = { 90, 32, 933, 1399, }, + }, +} +skills["BlastRain"] = { + name = "Blast Rain", + gemTags = { + fire = true, + dexterity = true, + active_skill = true, + attack = true, + area = true, + bow = true, + }, + parts = { + { + name = "1 explosion", + }, + { + name = "4 explosions", + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [1] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [33] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 + mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 + --"blast_rain_number_of_blasts" = 4 + --"blast_rain_arrow_delay_ms" = 80 + --"base_is_projectile" = ? + --"is_area_damage" = ? + skill("dpsMultiplier", 4, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 8, -60, }, + [2] = { 31, 8, -59.6, }, + [3] = { 34, 8, -59.2, }, + [4] = { 37, 8, -58.8, }, + [5] = { 40, 9, -58.4, }, + [6] = { 42, 9, -58, }, + [7] = { 44, 9, -57.6, }, + [8] = { 46, 9, -57.2, }, + [9] = { 48, 9, -56.8, }, + [10] = { 50, 9, -56.4, }, + [11] = { 52, 9, -56, }, + [12] = { 54, 10, -55.6, }, + [13] = { 56, 10, -55.2, }, + [14] = { 58, 10, -54.8, }, + [15] = { 60, 10, -54.4, }, + [16] = { 62, 10, -54, }, + [17] = { 64, 10, -53.6, }, + [18] = { 66, 10, -53.2, }, + [19] = { 68, 10, -52.8, }, + [20] = { 70, 10, -52.4, }, + [21] = { 72, 10, -52, }, + [22] = { 74, 10, -51.6, }, + [23] = { 76, 11, -51.2, }, + [24] = { 78, 11, -50.8, }, + [25] = { 80, 11, -50.4, }, + [26] = { 82, 11, -50, }, + [27] = { 84, 11, -49.6, }, + [28] = { 86, 12, -49.2, }, + [29] = { 88, 12, -48.8, }, + [30] = { 90, 12, -48.4, }, + }, +} +skills["BlinkArrow"] = { + name = "Blink Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + minion = true, + duration = true, + movement = true, + bow = true, + }, + minionList = { + "Clone", + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + minion = true, + movement = true, + duration = true, + }, + skillTypes = { [14] = true, [1] = true, [9] = true, [48] = true, [21] = true, [12] = true, [22] = true, [17] = true, [19] = true, [38] = true, }, + minionSkillTypes = { [1] = true, [3] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"number_of_monsters_to_summon" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", 75) }), --"active_skill_minion_damage_+%_final" = 75 + --"display_minion_monster_type" = 4 + --"base_is_projectile" = ? + skill("minionUseBowAndQuiver", true), + }, + qualityMods = { + --"base_arrow_speed_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", nil) }), --"minion_damage_+%" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [5] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 14, 0, 0, 24, }, + [2] = { 13, 14, 6, 3, 27, }, + [3] = { 17, 15, 12, 6, 30, }, + [4] = { 21, 15, 18, 9, 33, }, + [5] = { 25, 15, 24, 12, 35, }, + [6] = { 29, 16, 30, 15, 38, }, + [7] = { 33, 16, 36, 18, 40, }, + [8] = { 36, 16, 42, 21, 43, }, + [9] = { 39, 16, 48, 24, 46, }, + [10] = { 42, 17, 54, 27, 48, }, + [11] = { 45, 17, 60, 30, 50, }, + [12] = { 48, 17, 66, 33, 52, }, + [13] = { 51, 17, 72, 36, 54, }, + [14] = { 54, 18, 78, 39, 56, }, + [15] = { 57, 18, 84, 42, 58, }, + [16] = { 60, 18, 90, 45, 60, }, + [17] = { 63, 19, 96, 48, 62, }, + [18] = { 66, 19, 102, 51, 64, }, + [19] = { 68, 20, 108, 54, 66, }, + [20] = { 70, 20, 114, 57, 68, }, + [21] = { 72, 21, 120, 60, 70, }, + [22] = { 74, 21, 126, 63, 72, }, + [23] = { 76, 22, 132, 66, 74, }, + [24] = { 78, 22, 138, 69, 76, }, + [25] = { 80, 22, 144, 72, 78, }, + [26] = { 82, 23, 150, 75, 80, }, + [27] = { 84, 23, 156, 78, 82, }, + [28] = { 86, 23, 162, 81, 84, }, + [29] = { 88, 23, 168, 84, 86, }, + [30] = { 90, 24, 174, 87, 88, }, + }, +} +skills["BloodRage"] = { + name = "Blood Rage", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 1), + --"life_leech_from_physical_attack_damage_permyriad" = 120 + --"base_physical_damage_%_of_maximum_life_to_deal_per_minute" = 240 + --"base_physical_damage_%_of_maximum_energy_shield_to_deal_per_minute" = 240 + --"add_frenzy_charge_on_kill_%_chance" = 25 + }, + qualityMods = { + mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" = 0.25 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" + [4] = skill("duration", nil), --"base_skill_effect_duration" + --[5] = "skill_level" + }, + levels = { + [1] = { 16, 17, 5, 7, 1, }, + [2] = { 20, 17, 6, 7.2, 2, }, + [3] = { 24, 17, 6, 7.4, 3, }, + [4] = { 28, 18, 7, 7.6, 4, }, + [5] = { 31, 18, 7, 7.8, 5, }, + [6] = { 34, 18, 8, 8, 6, }, + [7] = { 37, 18, 8, 8.2, 7, }, + [8] = { 40, 19, 9, 8.4, 8, }, + [9] = { 43, 19, 9, 8.6, 9, }, + [10] = { 46, 19, 10, 8.8, 10, }, + [11] = { 49, 20, 10, 9, 11, }, + [12] = { 52, 20, 11, 9.2, 12, }, + [13] = { 55, 20, 11, 9.4, 13, }, + [14] = { 58, 20, 12, 9.6, 14, }, + [15] = { 60, 20, 12, 9.8, 15, }, + [16] = { 62, 21, 13, 10, 16, }, + [17] = { 64, 21, 13, 10.2, 17, }, + [18] = { 66, 21, 14, 10.4, 18, }, + [19] = { 68, 21, 14, 10.6, 19, }, + [20] = { 70, 21, 15, 10.8, 20, }, + [21] = { 72, 22, 15, 11, 21, }, + [22] = { 74, 22, 16, 11.2, 22, }, + [23] = { 76, 22, 16, 11.4, 23, }, + [24] = { 78, 22, 17, 11.6, 24, }, + [25] = { 80, 22, 17, 11.8, 25, }, + [26] = { 82, 23, 18, 12, 26, }, + [27] = { 84, 23, 18, 12.2, 27, }, + [28] = { 86, 23, 19, 12.4, 28, }, + [29] = { 88, 23, 19, 12.6, 29, }, + [30] = { 90, 23, 20, 12.8, 30, }, + }, +} +skills["BurningArrow"] = { + name = "Burning Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + fire = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + fire = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [33] = true, [53] = true, [55] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 + mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" + }, + levels = { + [1] = { 1, 5, 50, 10, }, + [2] = { 2, 5, 51.8, 11, }, + [3] = { 4, 5, 53.6, 12, }, + [4] = { 7, 5, 55.4, 13, }, + [5] = { 11, 5, 57.2, 14, }, + [6] = { 16, 6, 59, 15, }, + [7] = { 20, 6, 60.8, 16, }, + [8] = { 24, 6, 62.6, 17, }, + [9] = { 28, 6, 64.4, 18, }, + [10] = { 32, 6, 66.2, 19, }, + [11] = { 36, 7, 68, 20, }, + [12] = { 40, 7, 69.8, 21, }, + [13] = { 44, 7, 71.6, 22, }, + [14] = { 48, 7, 73.4, 23, }, + [15] = { 52, 7, 75.2, 24, }, + [16] = { 56, 8, 77, 25, }, + [17] = { 60, 8, 78.8, 26, }, + [18] = { 64, 8, 80.6, 27, }, + [19] = { 67, 8, 82.4, 28, }, + [20] = { 70, 8, 84.2, 29, }, + [21] = { 72, 9, 86, 30, }, + [22] = { 74, 9, 87.8, 31, }, + [23] = { 76, 9, 89.6, 32, }, + [24] = { 78, 9, 91.4, 33, }, + [25] = { 80, 9, 93.2, 34, }, + [26] = { 82, 10, 95, 35, }, + [27] = { 84, 10, 96.8, 36, }, + [28] = { 86, 10, 98.6, 37, }, + [29] = { 88, 10, 100.4, 38, }, + [30] = { 90, 10, 102.2, 39, }, + }, +} +skills["VaalBurningArrow"] = { + name = "Vaal Burning Arrow", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + fire = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + fire = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [11] = true, [43] = true, [33] = true, [55] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 + mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 + --"vaal_burning_arrow_explode_on_hit" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" + }, + levels = { + [1] = { 1, 60, 10, }, + [2] = { 2, 62, 11, }, + [3] = { 4, 64, 12, }, + [4] = { 7, 66, 13, }, + [5] = { 11, 68, 14, }, + [6] = { 16, 70, 15, }, + [7] = { 20, 72, 16, }, + [8] = { 24, 74, 17, }, + [9] = { 28, 76, 18, }, + [10] = { 32, 78, 19, }, + [11] = { 36, 80, 20, }, + [12] = { 40, 82, 21, }, + [13] = { 44, 84, 22, }, + [14] = { 48, 86, 23, }, + [15] = { 52, 88, 24, }, + [16] = { 56, 90, 25, }, + [17] = { 60, 92, 26, }, + [18] = { 64, 94, 27, }, + [19] = { 67, 96, 28, }, + [20] = { 70, 98, 29, }, + [21] = { 72, 100, 30, }, + [22] = { 74, 102, 31, }, + [23] = { 76, 104, 32, }, + [24] = { 78, 106, 33, }, + [25] = { 80, 108, 34, }, + [26] = { 82, 110, 35, }, + [27] = { 84, 112, 36, }, + [28] = { 86, 114, 37, }, + [29] = { 88, 116, 38, }, + [30] = { 90, 118, 39, }, + }, +} +skills["PoisonArrow"] = { + name = "Caustic Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + duration = true, + chaos = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + duration = true, + chaos = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [17] = true, [19] = true, [22] = true, [40] = true, [50] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"skill_can_fire_arrows" = ? + skill("dotIsArea", true), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + [5] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, nil), --"physical_damage_%_to_add_as_chaos" + --[6] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 4, 8, 2.8, 5.2, 30, 0, }, + [2] = { 6, 8, 2.9, 6.5166666666667, 31, 0, }, + [3] = { 9, 8, 3, 8.8333333333333, 32, 0, }, + [4] = { 12, 9, 3.1, 11.7, 33, 0, }, + [5] = { 16, 9, 3.2, 16.516666666667, 34, 1, }, + [6] = { 20, 9, 3.3, 22.75, 35, 1, }, + [7] = { 24, 10, 3.4, 30.766666666667, 36, 1, }, + [8] = { 28, 10, 3.5, 41.033333333333, 37, 1, }, + [9] = { 32, 10, 3.6, 54.116666666667, 38, 1, }, + [10] = { 36, 11, 3.7, 70.716666666667, 39, 2, }, + [11] = { 40, 11, 3.9, 91.683333333333, 40, 2, }, + [12] = { 44, 12, 4, 118.13333333333, 41, 2, }, + [13] = { 48, 12, 4.1, 151.35, 42, 2, }, + [14] = { 52, 13, 4.2, 192.96666666667, 43, 2, }, + [15] = { 55, 13, 4.3, 230.91666666667, 44, 3, }, + [16] = { 58, 14, 4.4, 275.7, 45, 3, }, + [17] = { 61, 14, 4.5, 328.55, 46, 3, }, + [18] = { 64, 15, 4.6, 390.81666666667, 47, 3, }, + [19] = { 67, 15, 4.7, 464.13333333333, 48, 3, }, + [20] = { 70, 16, 4.8, 550.33333333333, 49, 4, }, + [21] = { 72, 16, 5, 616.05, 50, 4, }, + [22] = { 74, 17, 5.1, 689.2, 51, 4, }, + [23] = { 76, 17, 5.2, 770.58333333333, 52, 4, }, + [24] = { 78, 18, 5.3, 861.11666666667, 53, 4, }, + [25] = { 80, 18, 5.4, 961.78333333333, 54, 5, }, + [26] = { 82, 19, 5.5, 1073.6833333333, 55, 5, }, + [27] = { 84, 19, 5.6, 1198.05, 56, 5, }, + [28] = { 86, 20, 5.7, 1336.2, 57, 5, }, + [29] = { 88, 20, 5.8, 1489.6166666667, 58, 5, }, + [30] = { 90, 21, 5.9, 1659.9833333333, 59, 6, }, + }, +} +skills["Cyclone"] = { + name = "Cyclone", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + movement = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 12), + mod("Speed", "MORE", 50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 50 + mod("MovementSpeed", "MORE", -30), --"cyclone_movement_speed_+%_final" = -30 + --"base_skill_number_of_additional_hits" = 1 + --"cyclone_first_hit_damage_+%_final" = -50 + --"is_area_damage" = ? + skill("dpsMultiplier", 2), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -55, }, + [2] = { 31, -54.4, }, + [3] = { 34, -53.8, }, + [4] = { 37, -53.2, }, + [5] = { 40, -52.6, }, + [6] = { 42, -52, }, + [7] = { 44, -51.4, }, + [8] = { 46, -50.8, }, + [9] = { 48, -50.2, }, + [10] = { 50, -49.6, }, + [11] = { 52, -49, }, + [12] = { 54, -48.4, }, + [13] = { 56, -47.8, }, + [14] = { 58, -47.2, }, + [15] = { 60, -46.6, }, + [16] = { 62, -46, }, + [17] = { 64, -45.4, }, + [18] = { 66, -44.8, }, + [19] = { 68, -44.2, }, + [20] = { 70, -43.6, }, + [21] = { 72, -43, }, + [22] = { 74, -42.4, }, + [23] = { 76, -41.8, }, + [24] = { 78, -41.2, }, + [25] = { 80, -40.6, }, + [26] = { 82, -40, }, + [27] = { 84, -39.4, }, + [28] = { 86, -38.8, }, + [29] = { 88, -38.2, }, + [30] = { 90, -37.6, }, + }, +} +skills["VaalCyclone"] = { + name = "Vaal Cyclone", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + duration = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [12] = true, [43] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("Speed", "MORE", 100, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 100 + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"base_skill_number_of_additional_hits" = 1 + mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 + --"is_area_damage" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -50, }, + [2] = { 31, -49.4, }, + [3] = { 34, -48.8, }, + [4] = { 37, -48.2, }, + [5] = { 40, -47.6, }, + [6] = { 42, -47, }, + [7] = { 44, -46.4, }, + [8] = { 46, -45.8, }, + [9] = { 48, -45.2, }, + [10] = { 50, -44.6, }, + [11] = { 52, -44, }, + [12] = { 54, -43.4, }, + [13] = { 56, -42.8, }, + [14] = { 58, -42.2, }, + [15] = { 60, -41.6, }, + [16] = { 62, -41, }, + [17] = { 64, -40.4, }, + [18] = { 66, -39.8, }, + [19] = { 68, -39.2, }, + [20] = { 70, -38.6, }, + [21] = { 72, -38, }, + [22] = { 74, -37.4, }, + [23] = { 76, -36.8, }, + [24] = { 78, -36.2, }, + [25] = { 80, -35.6, }, + [26] = { 82, -35, }, + [27] = { 84, -34.4, }, + [28] = { 86, -33.8, }, + [29] = { 88, -33.2, }, + [30] = { 90, -32.6, }, + }, +} +skills["Desecrate"] = { + name = "Desecrate", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + chaos = true, + }, + color = 2, + baseFlags = { + spell = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [40] = true, [26] = true, [50] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 5), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"desecrate_number_of_corpses_to_create" = 3 + --"is_area_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + --[4] = "desecrate_corpse_level" + }, + levels = { + [1] = { 16, 8, 8.1666666666667, 20, }, + [2] = { 20, 8, 11.316666666667, 24, }, + [3] = { 24, 9, 15.383333333333, 26, }, + [4] = { 28, 9, 20.633333333333, 29, }, + [5] = { 31, 10, 25.533333333333, 32, }, + [6] = { 34, 11, 31.416666666667, 35, }, + [7] = { 37, 12, 38.466666666667, 38, }, + [8] = { 40, 12, 46.916666666667, 41, }, + [9] = { 43, 13, 57.016666666667, 44, }, + [10] = { 46, 14, 69.05, 47, }, + [11] = { 49, 15, 83.4, 50, }, + [12] = { 52, 16, 100.46666666667, 53, }, + [13] = { 55, 17, 120.73333333333, 56, }, + [14] = { 58, 18, 144.76666666667, 59, }, + [15] = { 60, 18, 163.23333333333, 63, }, + [16] = { 62, 18, 183.88333333333, 67, }, + [17] = { 64, 19, 207, 71, }, + [18] = { 66, 19, 232.83333333333, 75, }, + [19] = { 68, 20, 261.71666666667, 100, }, + [20] = { 70, 20, 294, 100, }, + [21] = { 72, 21, 330.05, 100, }, + [22] = { 74, 22, 370.3, 100, }, + [23] = { 76, 22, 415.21666666667, 100, }, + [24] = { 78, 22, 465.33333333333, 100, }, + [25] = { 80, 23, 521.21666666667, 100, }, + [26] = { 82, 23, 583.53333333333, 100, }, + [27] = { 84, 24, 652.98333333333, 100, }, + [28] = { 86, 25, 730.38333333333, 100, }, + [29] = { 88, 25, 816.58333333333, 100, }, + [30] = { 90, 26, 912.58333333333, 100, }, + }, +} +skills["DetonateDead"] = { + name = "Detonate Dead", + gemTags = { + dexterity = true, + active_skill = true, + cast = true, + area = true, + fire = true, + }, + color = 2, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"corpse_explosion_monster_life_%" = 6 + --"is_area_damage" = 1 + --"display_skill_deals_secondary_damage" = ? + --"damage_cannot_be_reflected" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 4, 7, 4, 5, }, + [2] = { 6, 8, 5, 8, }, + [3] = { 9, 9, 8, 11, }, + [4] = { 12, 10, 9, 14, }, + [5] = { 16, 11, 13, 19, }, + [6] = { 20, 12, 17, 25, }, + [7] = { 24, 14, 22, 33, }, + [8] = { 28, 15, 28, 43, }, + [9] = { 32, 17, 36, 54, }, + [10] = { 36, 19, 46, 69, }, + [11] = { 40, 21, 58, 87, }, + [12] = { 44, 22, 72, 108, }, + [13] = { 48, 23, 90, 135, }, + [14] = { 52, 24, 111, 167, }, + [15] = { 55, 25, 130, 195, }, + [16] = { 58, 26, 152, 227, }, + [17] = { 61, 27, 176, 265, }, + [18] = { 64, 28, 205, 308, }, + [19] = { 67, 29, 238, 357, }, + [20] = { 70, 30, 276, 414, }, + [21] = { 72, 31, 304, 456, }, + [22] = { 74, 32, 335, 502, }, + [23] = { 76, 33, 369, 553, }, + [24] = { 78, 34, 406, 609, }, + [25] = { 80, 34, 446, 669, }, + [26] = { 82, 35, 491, 736, }, + [27] = { 84, 36, 539, 809, }, + [28] = { 86, 37, 592, 888, }, + [29] = { 88, 38, 650, 975, }, + [30] = { 90, 38, 713, 1070, }, + }, +} +skills["VaalDetonateDead"] = { + name = "Vaal Detonate Dead", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + cast = true, + area = true, + fire = true, + }, + color = 2, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"corpse_explosion_monster_life_%" = 8 + --"is_area_damage" = 1 + --"display_skill_deals_secondary_damage" = ? + --"detonate_dead_chain_explode" = ? + --"damage_cannot_be_reflected" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 4, 3, 5, }, + [2] = { 6, 5, 7, }, + [3] = { 9, 7, 10, }, + [4] = { 12, 8, 12, }, + [5] = { 16, 11, 17, }, + [6] = { 20, 15, 23, }, + [7] = { 24, 20, 30, }, + [8] = { 28, 26, 39, }, + [9] = { 32, 33, 50, }, + [10] = { 36, 42, 63, }, + [11] = { 40, 53, 79, }, + [12] = { 44, 66, 99, }, + [13] = { 48, 82, 122, }, + [14] = { 52, 101, 151, }, + [15] = { 55, 118, 177, }, + [16] = { 58, 138, 207, }, + [17] = { 61, 160, 241, }, + [18] = { 64, 186, 280, }, + [19] = { 67, 216, 325, }, + [20] = { 70, 251, 376, }, + [21] = { 72, 276, 415, }, + [22] = { 74, 304, 457, }, + [23] = { 76, 335, 503, }, + [24] = { 78, 369, 553, }, + [25] = { 80, 406, 609, }, + [26] = { 82, 446, 669, }, + [27] = { 84, 490, 735, }, + [28] = { 86, 538, 807, }, + [29] = { 88, 591, 886, }, + [30] = { 90, 649, 973, }, + }, +} +skills["DoubleStrike"] = { + name = "Double Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + --"base_skill_number_of_additional_hits" = 1 + skill("dpsMultiplier", 2), + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, -30, }, + [2] = { 2, -28.6, }, + [3] = { 4, -27.2, }, + [4] = { 7, -25.8, }, + [5] = { 11, -24.4, }, + [6] = { 16, -23, }, + [7] = { 20, -21.6, }, + [8] = { 24, -20.2, }, + [9] = { 28, -18.8, }, + [10] = { 32, -17.4, }, + [11] = { 36, -16, }, + [12] = { 40, -14.6, }, + [13] = { 44, -13.2, }, + [14] = { 48, -11.8, }, + [15] = { 52, -10.4, }, + [16] = { 56, -9, }, + [17] = { 60, -7.6, }, + [18] = { 64, -6.2, }, + [19] = { 67, -4.8, }, + [20] = { 70, -3.4, }, + [21] = { 72, -2, }, + [22] = { 74, -0.6, }, + [23] = { 76, 0.8, }, + [24] = { 78, 2.2, }, + [25] = { 80, 3.6, }, + [26] = { 82, 5, }, + [27] = { 84, 6.4, }, + [28] = { 86, 7.8, }, + [29] = { 88, 9.2, }, + [30] = { 90, 10.6, }, + }, +} +skills["VaalDoubleStrike"] = { + name = "Vaal Double Strike", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + melee = true, + duration = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + duration = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_skill_number_of_additional_hits" = 1 + --"number_of_monsters_to_summon" = 1 + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 1, -30, 3.6, }, + [2] = { 2, -29.2, 3.7, }, + [3] = { 4, -28.4, 3.8, }, + [4] = { 7, -27.6, 3.9, }, + [5] = { 11, -26.8, 4, }, + [6] = { 16, -26, 4.1, }, + [7] = { 20, -25.2, 4.2, }, + [8] = { 24, -24.4, 4.3, }, + [9] = { 28, -23.6, 4.4, }, + [10] = { 32, -22.8, 4.5, }, + [11] = { 36, -22, 4.6, }, + [12] = { 40, -21.2, 4.7, }, + [13] = { 44, -20.4, 4.8, }, + [14] = { 48, -19.6, 4.9, }, + [15] = { 52, -18.8, 5, }, + [16] = { 56, -18, 5.1, }, + [17] = { 60, -17.2, 5.2, }, + [18] = { 64, -16.4, 5.3, }, + [19] = { 67, -15.6, 5.4, }, + [20] = { 70, -14.8, 5.5, }, + [21] = { 72, -14, 5.6, }, + [22] = { 74, -13.2, 5.7, }, + [23] = { 76, -12.4, 5.8, }, + [24] = { 78, -11.6, 5.9, }, + [25] = { 80, -10.8, 6, }, + [26] = { 82, -10, 6.1, }, + [27] = { 84, -9.2, 6.2, }, + [28] = { 86, -8.4, 6.3, }, + [29] = { 88, -7.6, 6.4, }, + [30] = { 90, -6.8, 6.5, }, + }, +} +skills["DualStrike"] = { + name = "Dual Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [4] = true, [25] = true, [28] = true, [24] = true, [53] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Axe"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, -15, }, + [2] = { 2, -14, }, + [3] = { 4, -13, }, + [4] = { 7, -12, }, + [5] = { 11, -11, }, + [6] = { 16, -10, }, + [7] = { 20, -9, }, + [8] = { 24, -8, }, + [9] = { 28, -7, }, + [10] = { 32, -6, }, + [11] = { 36, -5, }, + [12] = { 40, -4, }, + [13] = { 44, -3, }, + [14] = { 48, -2, }, + [15] = { 52, -1, }, + [16] = { 56, nil, }, + [17] = { 60, 1, }, + [18] = { 64, 2, }, + [19] = { 67, 3, }, + [20] = { 70, 4, }, + [21] = { 72, 5, }, + [22] = { 74, 6, }, + [23] = { 76, 7, }, + [24] = { 78, 8, }, + [25] = { 80, 9, }, + [26] = { 82, 10, }, + [27] = { 84, 11, }, + [28] = { 86, 12, }, + [29] = { 88, 13, }, + [30] = { 90, 14, }, + }, +} +skills["ElementalHit"] = { + name = "Elemental Hit", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + fire = true, + cold = true, + lightning = true, + bow = true, + }, + parts = { + { + name = "Added fire", + }, + { + name = "Added cold", + }, + { + name = "Added lightning", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + cold = true, + fire = true, + lightning = true, + }, + skillTypes = { [1] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, [33] = true, [34] = true, [35] = true, [48] = true, }, + baseMods = { + skill("castTime", 1), + --"chance_to_freeze_shock_ignite_%" = 10 + --"skill_can_fire_arrows" = ? + --"skill_can_fire_wand_projectiles" = ? + mod("EnemyFreezeChance", "BASE", 10), + mod("EnemyShockChance", "BASE", 10), + mod("EnemyIgniteChance", "BASE", 10), + }, + qualityMods = { + mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_minimum_base_fire_damage_for_elemental_hit" + [4] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_maximum_base_fire_damage_for_elemental_hit" + [5] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_minimum_base_cold_damage_for_elemental_hit" + [6] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_maximum_base_cold_damage_for_elemental_hit" + [7] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_minimum_base_lightning_damage_for_elemental_hit" + [8] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_maximum_base_lightning_damage_for_elemental_hit" + }, + levels = { + [1] = { 1, 6, 4, 8, 3, 6, 1, 13, }, + [2] = { 2, 6, 5, 9, 4, 7, 1, 14, }, + [3] = { 4, 6, 6, 11, 5, 9, 1, 17, }, + [4] = { 7, 7, 7, 14, 6, 11, 1, 23, }, + [5] = { 11, 7, 10, 19, 8, 16, 2, 31, }, + [6] = { 16, 7, 14, 27, 12, 22, 2, 44, }, + [7] = { 20, 8, 18, 34, 15, 28, 3, 56, }, + [8] = { 24, 8, 23, 43, 19, 35, 4, 70, }, + [9] = { 28, 8, 28, 53, 23, 43, 5, 87, }, + [10] = { 32, 9, 35, 64, 28, 53, 6, 106, }, + [11] = { 36, 9, 42, 78, 34, 64, 7, 128, }, + [12] = { 40, 9, 50, 93, 41, 76, 8, 153, }, + [13] = { 44, 10, 60, 111, 49, 91, 10, 183, }, + [14] = { 48, 10, 71, 132, 58, 108, 11, 217, }, + [15] = { 52, 10, 84, 156, 69, 127, 13, 256, }, + [16] = { 56, 11, 99, 183, 81, 150, 16, 301, }, + [17] = { 60, 11, 115, 214, 94, 175, 19, 352, }, + [18] = { 64, 11, 135, 250, 110, 205, 22, 411, }, + [19] = { 67, 11, 151, 280, 123, 229, 24, 461, }, + [20] = { 70, 12, 169, 314, 138, 257, 27, 516, }, + [21] = { 72, 12, 182, 338, 149, 276, 29, 555, }, + [22] = { 74, 12, 196, 364, 160, 297, 31, 598, }, + [23] = { 76, 12, 211, 391, 172, 320, 34, 643, }, + [24] = { 78, 13, 226, 420, 185, 344, 36, 691, }, + [25] = { 80, 13, 243, 452, 199, 370, 39, 743, }, + [26] = { 82, 13, 261, 485, 214, 397, 42, 798, }, + [27] = { 84, 13, 281, 521, 230, 426, 45, 857, }, + [28] = { 86, 14, 301, 559, 246, 457, 48, 919, }, + [29] = { 88, 14, 323, 600, 264, 491, 52, 986, }, + [30] = { 90, 14, 346, 643, 283, 526, 56, 1057, }, + }, +} +skills["EtherealKnives"] = { + name = "Ethereal Knives", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + spell = true, + }, + color = 2, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.6), + skill("critChance", 6), + mod("ProjectileCount", "BASE", 9), --"number_of_additional_projectiles" = 9 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + [5] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" + }, + levels = { + [1] = { 1, 5, 4, 6, 0, }, + [2] = { 2, 6, 5, 7, 1, }, + [3] = { 4, 7, 6, 9, 2, }, + [4] = { 7, 8, 8, 12, 3, }, + [5] = { 11, 9, 12, 18, 4, }, + [6] = { 16, 10, 18, 27, 5, }, + [7] = { 20, 11, 24, 37, 6, }, + [8] = { 24, 12, 32, 49, 7, }, + [9] = { 28, 13, 42, 64, 8, }, + [10] = { 32, 14, 55, 82, 9, }, + [11] = { 36, 16, 70, 105, 10, }, + [12] = { 40, 17, 89, 134, 11, }, + [13] = { 44, 18, 112, 169, 12, }, + [14] = { 48, 18, 141, 212, 13, }, + [15] = { 52, 19, 176, 265, 14, }, + [16] = { 56, 20, 219, 329, 15, }, + [17] = { 60, 21, 272, 408, 16, }, + [18] = { 64, 22, 336, 504, 17, }, + [19] = { 67, 22, 393, 590, 18, }, + [20] = { 70, 23, 459, 688, 19, }, + [21] = { 72, 24, 509, 763, 20, }, + [22] = { 74, 24, 563, 845, 21, }, + [23] = { 76, 25, 623, 935, 22, }, + [24] = { 78, 25, 690, 1034, 23, }, + [25] = { 80, 26, 762, 1144, 24, }, + [26] = { 82, 26, 842, 1264, 25, }, + [27] = { 84, 27, 931, 1396, 26, }, + [28] = { 86, 27, 1027, 1541, 27, }, + [29] = { 88, 28, 1134, 1701, 28, }, + [30] = { 90, 29, 1251, 1876, 29, }, + }, +} +skills["ExplosiveArrow"] = { + name = "Explosive Arrow", + gemTags = { + fire = true, + dexterity = true, + active_skill = true, + attack = true, + area = true, + duration = true, + bow = true, + }, + parts = { + { + name = "Explosion", + attack = false, + cast = true, + }, + { + name = "Arrow", + attack = true, + cast = false, + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [33] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("critChance", 6), + skill("duration", 1), --"base_skill_effect_duration" = 1000 + --"fuse_arrow_explosion_radius_+_per_fuse_arrow_orb" = 2 + --"active_skill_attack_damage_+%_final" = 0 + --"skill_can_fire_arrows" = 1 + --"base_is_projectile" = 1 + skill("showAverage", true, { type = "SkillPart", skillPart = 1 }), + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"minimum_fire_damage_per_fuse_arrow_orb" + [4] = skill("FireMax", nil), --"maximum_fire_damage_per_fuse_arrow_orb" + }, + levels = { + [1] = { 28, 18, 44, 66, }, + [2] = { 31, 19, 54, 81, }, + [3] = { 34, 20, 66, 99, }, + [4] = { 37, 21, 80, 121, }, + [5] = { 40, 21, 98, 146, }, + [6] = { 42, 22, 111, 166, }, + [7] = { 44, 22, 126, 189, }, + [8] = { 46, 23, 142, 214, }, + [9] = { 48, 23, 161, 242, }, + [10] = { 50, 24, 182, 273, }, + [11] = { 52, 24, 205, 308, }, + [12] = { 54, 24, 232, 347, }, + [13] = { 56, 26, 261, 391, }, + [14] = { 58, 26, 293, 440, }, + [15] = { 60, 26, 330, 495, }, + [16] = { 62, 26, 371, 556, }, + [17] = { 64, 26, 416, 624, }, + [18] = { 66, 27, 467, 700, }, + [19] = { 68, 27, 523, 785, }, + [20] = { 70, 27, 586, 879, }, + [21] = { 72, 28, 656, 984, }, + [22] = { 74, 28, 734, 1100, }, + [23] = { 76, 29, 820, 1230, }, + [24] = { 78, 29, 917, 1375, }, + [25] = { 80, 30, 1024, 1536, }, + [26] = { 82, 30, 1143, 1714, }, + [27] = { 84, 30, 1275, 1913, }, + [28] = { 86, 30, 1422, 2134, }, + [29] = { 88, 31, 1586, 2379, }, + [30] = { 90, 31, 1767, 2651, }, + }, +} +skills["FireTrap"] = { + name = "Fire Trap", + gemTags = { + trap = true, + dexterity = true, + active_skill = true, + spell = true, + duration = true, + area = true, + fire = true, + }, + color = 2, + baseFlags = { + spell = true, + trap = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [29] = true, [37] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 6), + skill("cooldown", 3), + --"is_trap" = 1 + --"base_trap_duration" = 16000 + skill("duration", 8), --"base_skill_effect_duration" = 8000 + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("trapCooldown", 3), + }, + qualityMods = { + mod("FireDamage", "INC", 1.5, ModFlag.Dot), --"burn_damage_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + --[6] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 7, 2, 4, 3.6166666666667, 0, }, + [2] = { 2, 8, 3, 5, 4.1, 0, }, + [3] = { 4, 9, 4, 6, 5.2, 1, }, + [4] = { 7, 10, 6, 8, 7.1833333333333, 1, }, + [5] = { 11, 11, 8, 12, 10.6, 1, }, + [6] = { 16, 12, 13, 19, 16.416666666667, 2, }, + [7] = { 20, 13, 18, 27, 22.566666666667, 2, }, + [8] = { 24, 14, 25, 37, 30.466666666667, 2, }, + [9] = { 28, 14, 34, 50, 40.533333333333, 3, }, + [10] = { 32, 16, 45, 67, 53.333333333333, 3, }, + [11] = { 36, 17, 59, 89, 69.5, 3, }, + [12] = { 40, 18, 78, 117, 89.866666666667, 4, }, + [13] = { 44, 19, 101, 152, 115.41666666667, 4, }, + [14] = { 48, 20, 132, 197, 147.36666666667, 4, }, + [15] = { 52, 21, 170, 255, 187.21666666667, 5, }, + [16] = { 56, 22, 219, 328, 236.78333333333, 5, }, + [17] = { 60, 22, 280, 420, 298.28333333333, 5, }, + [18] = { 64, 23, 358, 536, 374.41666666667, 6, }, + [19] = { 67, 24, 429, 643, 441.11666666667, 6, }, + [20] = { 70, 24, 513, 770, 518.76666666667, 6, }, + [21] = { 72, 25, 578, 867, 573.95, 7, }, + [22] = { 74, 26, 651, 976, 634.4, 7, }, + [23] = { 76, 26, 732, 1098, 700.6, 7, }, + [24] = { 78, 27, 823, 1235, 772.98333333333, 8, }, + [25] = { 80, 27, 925, 1388, 852.1, 8, }, + [26] = { 82, 28, 1040, 1559, 938.5, 8, }, + [27] = { 84, 29, 1167, 1751, 1032.75, 9, }, + [28] = { 86, 30, 1310, 1965, 1135.4666666667, 9, }, + [29] = { 88, 30, 1470, 2205, 1247.3166666667, 9, }, + [30] = { 90, 30, 1648, 2472, 1368.9833333333, 10, }, + }, +} +skills["FlickerStrike"] = { + name = "Flicker Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + movement = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [25] = true, [28] = true, [38] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + skill("cooldown", 2), + mod("Speed", "MORE", 20, ModFlag.Attack), --"flicker_strike_more_attack_speed_+%_final" = 20 + mod("Speed", "INC", 10, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 10 + --"ignores_proximity_shield" = ? + nil, --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, 30, }, + [2] = { 13, 31.6, }, + [3] = { 17, 33.2, }, + [4] = { 21, 34.8, }, + [5] = { 25, 36.4, }, + [6] = { 29, 38, }, + [7] = { 33, 39.6, }, + [8] = { 36, 41.2, }, + [9] = { 39, 42.8, }, + [10] = { 42, 44.4, }, + [11] = { 45, 46, }, + [12] = { 48, 47.6, }, + [13] = { 51, 49.2, }, + [14] = { 54, 50.8, }, + [15] = { 57, 52.4, }, + [16] = { 60, 54, }, + [17] = { 63, 55.6, }, + [18] = { 66, 57.2, }, + [19] = { 68, 58.8, }, + [20] = { 70, 60.4, }, + [21] = { 72, 62, }, + [22] = { 74, 63.6, }, + [23] = { 76, 65.2, }, + [24] = { 78, 66.8, }, + [25] = { 80, 68.4, }, + [26] = { 82, 70, }, + [27] = { 84, 71.6, }, + [28] = { 86, 73.2, }, + [29] = { 88, 74.8, }, + [30] = { 90, 76.4, }, + }, +} +skills["FreezeMine"] = { + name = "Freeze Mine", + gemTags = { + mine = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + mine = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [41] = true, [34] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.5), + --"freeze_mine_cold_resistance_+_while_frozen" = -15 + --"base_mine_duration" = 16000 + --"base_skill_is_mined" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_remote_mine" = ? + --"always_freeze" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + --[5] = "freeze_as_though_dealt_damage_+%" + }, + levels = { + [1] = { 10, 6, 7, 10, 200, }, + [2] = { 13, 8, 9, 13, 210, }, + [3] = { 17, 10, 12, 17, 220, }, + [4] = { 21, 10, 15, 23, 230, }, + [5] = { 25, 11, 19, 29, 240, }, + [6] = { 29, 12, 24, 37, 250, }, + [7] = { 33, 13, 30, 46, 260, }, + [8] = { 36, 14, 36, 54, 270, }, + [9] = { 39, 14, 42, 63, 280, }, + [10] = { 42, 16, 49, 73, 290, }, + [11] = { 45, 18, 57, 85, 300, }, + [12] = { 48, 18, 66, 99, 310, }, + [13] = { 51, 19, 76, 114, 320, }, + [14] = { 54, 20, 88, 131, 330, }, + [15] = { 57, 21, 101, 151, 340, }, + [16] = { 60, 21, 116, 173, 350, }, + [17] = { 63, 21, 132, 199, 360, }, + [18] = { 66, 21, 151, 227, 370, }, + [19] = { 68, 22, 165, 248, 380, }, + [20] = { 70, 22, 181, 271, 390, }, + [21] = { 72, 22, 197, 296, 400, }, + [22] = { 74, 22, 215, 322, 410, }, + [23] = { 76, 23, 234, 351, 420, }, + [24] = { 78, 23, 255, 383, 430, }, + [25] = { 80, 24, 278, 417, 440, }, + [26] = { 82, 24, 302, 454, 450, }, + [27] = { 84, 24, 329, 493, 460, }, + [28] = { 86, 24, 358, 536, 470, }, + [29] = { 88, 25, 389, 583, 480, }, + [30] = { 90, 25, 422, 633, 490, }, + }, +} +skills["Frenzy"] = { + name = "Frenzy", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + mod("PhysicalDamage", "INC", 5, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"physical_damage_+%_per_frenzy_charge" = 5 + mod("Speed", "INC", 5, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 5 + --"skill_can_fire_arrows" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 16, 10, }, + [2] = { 20, 11.4, }, + [3] = { 24, 12.8, }, + [4] = { 28, 14.2, }, + [5] = { 31, 15.6, }, + [6] = { 34, 17, }, + [7] = { 37, 18.4, }, + [8] = { 40, 19.8, }, + [9] = { 43, 21.2, }, + [10] = { 46, 22.6, }, + [11] = { 49, 24, }, + [12] = { 52, 25.4, }, + [13] = { 55, 26.8, }, + [14] = { 58, 28.2, }, + [15] = { 60, 29.6, }, + [16] = { 62, 31, }, + [17] = { 64, 32.4, }, + [18] = { 66, 33.8, }, + [19] = { 68, 35.2, }, + [20] = { 70, 36.6, }, + [21] = { 72, 38, }, + [22] = { 74, 39.4, }, + [23] = { 76, 40.8, }, + [24] = { 78, 42.2, }, + [25] = { 80, 43.6, }, + [26] = { 82, 45, }, + [27] = { 84, 46.4, }, + [28] = { 86, 47.8, }, + [29] = { 88, 49.2, }, + [30] = { 90, 50.6, }, + }, +} +skills["FrostBlades"] = { + name = "Frost Blades", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + cold = true, + }, + parts = { + { + name = "Melee hit", + melee = true, + projectile = false, + }, + { + name = "Icy blades", + melee = false, + projectile = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + cold = true, + }, + skillTypes = { [1] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [48] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("PhysicalDamageConvertToCold", "BASE", 60, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 60 + --"total_projectile_spread_angle_override" = 110 + --"show_number_of_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + --[3] = "melee_weapon_range_+" + [4] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" + [5] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 4, 18, 0, nil, }, + [2] = { 2, 4, 18, 1, 2.2, }, + [3] = { 4, 4, 18, 2, 4.4, }, + [4] = { 7, 4, 18, 3, 6.6, }, + [5] = { 11, 4, 18, 4, 8.8, }, + [6] = { 16, 5, 19, 5, 11, }, + [7] = { 20, 5, 19, 6, 13.2, }, + [8] = { 24, 5, 19, 7, 15.4, }, + [9] = { 28, 5, 19, 8, 17.6, }, + [10] = { 32, 5, 19, 9, 19.8, }, + [11] = { 36, 6, 20, 10, 22, }, + [12] = { 40, 6, 20, 11, 24.2, }, + [13] = { 44, 6, 20, 12, 26.4, }, + [14] = { 48, 6, 20, 13, 28.6, }, + [15] = { 52, 6, 20, 14, 30.8, }, + [16] = { 56, 7, 21, 15, 33, }, + [17] = { 60, 7, 21, 16, 35.2, }, + [18] = { 64, 7, 21, 17, 37.4, }, + [19] = { 67, 7, 21, 18, 39.6, }, + [20] = { 70, 7, 21, 19, 41.8, }, + [21] = { 72, 8, 22, 20, 44, }, + [22] = { 74, 8, 22, 21, 46.2, }, + [23] = { 76, 8, 22, 22, 48.4, }, + [24] = { 78, 8, 22, 23, 50.6, }, + [25] = { 80, 8, 22, 24, 52.8, }, + [26] = { 82, 9, 23, 25, 55, }, + [27] = { 84, 9, 23, 26, 57.2, }, + [28] = { 86, 9, 23, 27, 59.4, }, + [29] = { 88, 9, 23, 28, 61.6, }, + [30] = { 90, 9, 23, 29, 63.8, }, + }, +} +skills["Grace"] = { + name = "Grace", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Evasion", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_evasion_rating" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 227, 0, }, + [2] = { 27, 271, 3, }, + [3] = { 30, 322, 6, }, + [4] = { 33, 379, 9, }, + [5] = { 36, 444, 12, }, + [6] = { 39, 528, 15, }, + [7] = { 42, 621, 18, }, + [8] = { 45, 722, 21, }, + [9] = { 48, 845, 23, }, + [10] = { 50, 940, 25, }, + [11] = { 52, 1043, 27, }, + [12] = { 54, 1155, 29, }, + [13] = { 56, 1283, 31, }, + [14] = { 58, 1413, 33, }, + [15] = { 60, 1567, 35, }, + [16] = { 62, 1732, 36, }, + [17] = { 64, 1914, 37, }, + [18] = { 66, 2115, 38, }, + [19] = { 68, 2335, 39, }, + [20] = { 70, 2575, 40, }, + [21] = { 72, 2700, 41, }, + [22] = { 74, 2835, 42, }, + [23] = { 76, 2979, 43, }, + [24] = { 78, 3124, 44, }, + [25] = { 80, 3279, 45, }, + [26] = { 82, 3444, 46, }, + [27] = { 84, 3611, 47, }, + [28] = { 86, 3795, 48, }, + [29] = { 88, 3982, 49, }, + [30] = { 90, 4179, 50, }, + }, +} +skills["VaalGrace"] = { + name = "Vaal Grace", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("AttackDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_%" + [3] = mod("SpellDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_spells_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 24, 24, 0, }, + [2] = { 27, 25, 25, 3, }, + [3] = { 30, 25, 25, 6, }, + [4] = { 33, 26, 26, 9, }, + [5] = { 36, 26, 26, 12, }, + [6] = { 39, 27, 27, 15, }, + [7] = { 42, 27, 27, 18, }, + [8] = { 45, 28, 28, 21, }, + [9] = { 48, 28, 28, 23, }, + [10] = { 50, 29, 29, 25, }, + [11] = { 52, 29, 29, 27, }, + [12] = { 54, 30, 30, 29, }, + [13] = { 56, 30, 30, 31, }, + [14] = { 58, 31, 31, 33, }, + [15] = { 60, 31, 31, 35, }, + [16] = { 62, 32, 32, 36, }, + [17] = { 64, 32, 32, 37, }, + [18] = { 66, 33, 33, 38, }, + [19] = { 68, 33, 33, 39, }, + [20] = { 70, 34, 34, 40, }, + [21] = { 72, 34, 34, 41, }, + [22] = { 74, 35, 35, 42, }, + [23] = { 76, 35, 35, 43, }, + [24] = { 78, 36, 36, 44, }, + [25] = { 80, 36, 36, 45, }, + [26] = { 82, 37, 37, 46, }, + [27] = { 84, 37, 37, 47, }, + [28] = { 86, 38, 38, 48, }, + [29] = { 88, 38, 38, 49, }, + [30] = { 90, 39, 39, 50, }, + }, +} +skills["Haste"] = { + name = "Haste", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" + [3] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" + [5] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 9, 9, 4, 0, }, + [2] = { 27, 10, 9, 4, 3, }, + [3] = { 30, 10, 10, 4, 6, }, + [4] = { 33, 10, 10, 5, 9, }, + [5] = { 36, 11, 10, 5, 12, }, + [6] = { 39, 11, 11, 5, 15, }, + [7] = { 42, 11, 11, 6, 18, }, + [8] = { 45, 12, 11, 6, 21, }, + [9] = { 48, 12, 12, 6, 23, }, + [10] = { 50, 12, 12, 7, 25, }, + [11] = { 52, 13, 12, 7, 27, }, + [12] = { 54, 13, 13, 7, 29, }, + [13] = { 56, 13, 13, 8, 31, }, + [14] = { 58, 14, 13, 8, 33, }, + [15] = { 60, 14, 14, 8, 35, }, + [16] = { 62, 15, 14, 8, 36, }, + [17] = { 64, 15, 15, 8, 37, }, + [18] = { 66, 16, 15, 8, 38, }, + [19] = { 68, 16, 16, 8, 39, }, + [20] = { 70, 16, 16, 9, 40, }, + [21] = { 72, 17, 16, 9, 41, }, + [22] = { 74, 17, 17, 9, 42, }, + [23] = { 76, 17, 17, 10, 43, }, + [24] = { 78, 18, 17, 10, 44, }, + [25] = { 80, 18, 18, 10, 45, }, + [26] = { 82, 18, 18, 11, 46, }, + [27] = { 84, 19, 18, 11, 47, }, + [28] = { 86, 19, 19, 11, 48, }, + [29] = { 88, 19, 19, 12, 49, }, + [30] = { 90, 20, 19, 12, 50, }, + }, +} +skills["VaalHaste"] = { + name = "Vaal Haste", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" + [3] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" + [5] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 25, 24, 10, 0, }, + [2] = { 27, 25, 25, 10, 3, }, + [3] = { 30, 25, 25, 10, 6, }, + [4] = { 33, 26, 25, 10, 9, }, + [5] = { 36, 26, 26, 10, 12, }, + [6] = { 39, 26, 26, 11, 15, }, + [7] = { 42, 27, 26, 11, 18, }, + [8] = { 45, 27, 27, 11, 21, }, + [9] = { 48, 27, 27, 11, 23, }, + [10] = { 50, 28, 27, 11, 25, }, + [11] = { 52, 28, 28, 12, 27, }, + [12] = { 54, 28, 28, 12, 29, }, + [13] = { 56, 29, 28, 12, 31, }, + [14] = { 58, 29, 29, 12, 33, }, + [15] = { 60, 29, 29, 12, 35, }, + [16] = { 62, 30, 29, 13, 36, }, + [17] = { 64, 30, 30, 13, 37, }, + [18] = { 66, 30, 30, 13, 38, }, + [19] = { 68, 31, 30, 13, 39, }, + [20] = { 70, 31, 31, 13, 40, }, + [21] = { 72, 31, 31, 14, 41, }, + [22] = { 74, 32, 31, 14, 42, }, + [23] = { 76, 32, 32, 14, 43, }, + [24] = { 78, 32, 32, 14, 44, }, + [25] = { 80, 33, 32, 14, 45, }, + [26] = { 82, 33, 33, 15, 46, }, + [27] = { 84, 33, 33, 15, 47, }, + [28] = { 86, 34, 33, 15, 48, }, + [29] = { 88, 34, 34, 15, 49, }, + [30] = { 90, 34, 34, 15, 50, }, + }, +} +skills["Hatred"] = { + name = "Hatred", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("PhysicalDamageGainAsCold", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"physical_damage_%_to_add_as_cold" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 26, 0, }, + [2] = { 27, 26, 3, }, + [3] = { 30, 27, 6, }, + [4] = { 33, 27, 9, }, + [5] = { 36, 28, 12, }, + [6] = { 39, 28, 15, }, + [7] = { 42, 29, 18, }, + [8] = { 45, 29, 21, }, + [9] = { 48, 30, 23, }, + [10] = { 50, 30, 25, }, + [11] = { 52, 31, 27, }, + [12] = { 54, 31, 29, }, + [13] = { 56, 32, 31, }, + [14] = { 58, 32, 33, }, + [15] = { 60, 33, 35, }, + [16] = { 62, 34, 36, }, + [17] = { 64, 34, 37, }, + [18] = { 66, 35, 38, }, + [19] = { 68, 35, 39, }, + [20] = { 70, 36, 40, }, + [21] = { 72, 36, 41, }, + [22] = { 74, 37, 42, }, + [23] = { 76, 37, 43, }, + [24] = { 78, 38, 44, }, + [25] = { 80, 38, 45, }, + [26] = { 82, 39, 46, }, + [27] = { 84, 39, 47, }, + [28] = { 86, 40, 48, }, + [29] = { 88, 40, 49, }, + [30] = { 90, 41, 50, }, + }, +} +skills["HeraldOfIce"] = { + name = "Herald of Ice", + gemTags = { + dexterity = true, + active_skill = true, + cast = true, + area = true, + cold = true, + }, + color = 2, + baseFlags = { + cast = true, + area = true, + cold = true, + }, + skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [34] = true, [27] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 25), + skill("damageEffectiveness", 0.8), + skill("cooldown", 1), + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"display_skill_deals_secondary_damage" = ? + --"damage_cannot_be_reflected" = ? + --"skill_can_add_multiple_charges_per_action" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ice_cold_damage_+%" = 0.75 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ColdMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_cold_damage" + [3] = mod("ColdMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_cold_damage" + [4] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_cold_damage" + [5] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_cold_damage" + [6] = skill("ColdMin", nil), --"secondary_minimum_base_cold_damage" + [7] = skill("ColdMax", nil), --"secondary_maximum_base_cold_damage" + }, + levels = { + [1] = { 16, 4, 5, 4, 5, 18, 26, }, + [2] = { 20, 5, 7, 5, 7, 23, 35, }, + [3] = { 24, 6, 8, 6, 8, 30, 45, }, + [4] = { 28, 7, 10, 7, 10, 38, 57, }, + [5] = { 31, 8, 12, 8, 12, 45, 67, }, + [6] = { 34, 9, 14, 9, 14, 53, 80, }, + [7] = { 37, 10, 16, 10, 16, 62, 94, }, + [8] = { 40, 12, 18, 12, 18, 73, 110, }, + [9] = { 43, 13, 20, 13, 20, 85, 128, }, + [10] = { 46, 15, 23, 15, 23, 99, 149, }, + [11] = { 49, 17, 26, 17, 26, 115, 173, }, + [12] = { 52, 19, 29, 19, 29, 134, 200, }, + [13] = { 55, 22, 33, 22, 33, 154, 232, }, + [14] = { 58, 24, 37, 24, 37, 178, 267, }, + [15] = { 60, 26, 39, 26, 39, 195, 293, }, + [16] = { 62, 28, 42, 28, 42, 214, 321, }, + [17] = { 64, 30, 46, 30, 46, 235, 352, }, + [18] = { 66, 33, 49, 33, 49, 257, 386, }, + [19] = { 68, 35, 53, 35, 53, 282, 422, }, + [20] = { 70, 38, 56, 38, 56, 308, 462, }, + [21] = { 72, 40, 61, 40, 61, 337, 505, }, + [22] = { 74, 43, 65, 43, 65, 368, 552, }, + [23] = { 76, 46, 70, 46, 70, 402, 603, }, + [24] = { 78, 50, 75, 50, 75, 438, 658, }, + [25] = { 80, 53, 80, 53, 80, 478, 717, }, + [26] = { 82, 57, 85, 57, 85, 521, 782, }, + [27] = { 84, 61, 91, 61, 91, 568, 852, }, + [28] = { 86, 65, 98, 65, 98, 619, 928, }, + [29] = { 88, 69, 104, 69, 104, 674, 1010, }, + [30] = { 90, 74, 111, 74, 111, 733, 1100, }, + }, +} +skills["IceShot"] = { + name = "Ice Shot", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + duration = true, + cold = true, + bow = true, + }, + parts = { + { + name = "Arrow", + area = false, + }, + { + name = "Cone", + area = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [34] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToCold", "BASE", 60), --"skill_physical_damage_%_to_convert_to_cold" = 60 + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"skill_can_fire_arrows" = ? + mod("SkillPhysicalDamageConvertToCold", "BASE", 40, 0, 0, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 6, 20, }, + [2] = { 2, 6, 21.4, }, + [3] = { 4, 6, 22.8, }, + [4] = { 7, 7, 24.2, }, + [5] = { 11, 7, 25.6, }, + [6] = { 16, 7, 27, }, + [7] = { 20, 7, 28.4, }, + [8] = { 24, 8, 29.8, }, + [9] = { 28, 8, 31.2, }, + [10] = { 32, 8, 32.6, }, + [11] = { 36, 8, 34, }, + [12] = { 40, 8, 35.4, }, + [13] = { 44, 9, 36.8, }, + [14] = { 48, 9, 38.2, }, + [15] = { 52, 9, 39.6, }, + [16] = { 56, 9, 41, }, + [17] = { 60, 9, 42.4, }, + [18] = { 64, 10, 43.8, }, + [19] = { 67, 10, 45.2, }, + [20] = { 70, 10, 46.6, }, + [21] = { 72, 10, 48, }, + [22] = { 74, 10, 49.4, }, + [23] = { 76, 11, 50.8, }, + [24] = { 78, 11, 52.2, }, + [25] = { 80, 11, 53.6, }, + [26] = { 82, 11, 55, }, + [27] = { 84, 11, 56.4, }, + [28] = { 86, 12, 57.8, }, + [29] = { 88, 12, 59.2, }, + [30] = { 90, 12, 60.6, }, + }, +} +skills["IceTrap"] = { + name = "Ice Trap", + gemTags = { + trap = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + cold = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + trap = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [19] = true, [11] = true, [37] = true, [34] = true, [12] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 1.1), + skill("critChance", 5), + skill("cooldown", 2), + --"base_trap_duration" = 16000 + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_trap" = ? + skill("trapCooldown", 2), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 28, 13, 60, 90, }, + [2] = { 31, 14, 72, 108, }, + [3] = { 34, 15, 85, 128, }, + [4] = { 37, 15, 101, 151, }, + [5] = { 40, 16, 119, 178, }, + [6] = { 42, 17, 132, 198, }, + [7] = { 44, 17, 147, 220, }, + [8] = { 46, 18, 163, 244, }, + [9] = { 48, 19, 180, 270, }, + [10] = { 50, 19, 199, 299, }, + [11] = { 52, 20, 220, 330, }, + [12] = { 54, 20, 243, 364, }, + [13] = { 56, 21, 268, 402, }, + [14] = { 58, 21, 295, 442, }, + [15] = { 60, 22, 325, 487, }, + [16] = { 62, 23, 357, 536, }, + [17] = { 64, 23, 392, 589, }, + [18] = { 66, 24, 431, 646, }, + [19] = { 68, 24, 473, 709, }, + [20] = { 70, 25, 519, 778, }, + [21] = { 72, 26, 568, 853, }, + [22] = { 74, 26, 623, 934, }, + [23] = { 76, 27, 681, 1022, }, + [24] = { 78, 27, 746, 1118, }, + [25] = { 80, 28, 815, 1223, }, + [26] = { 82, 28, 891, 1337, }, + [27] = { 84, 29, 973, 1460, }, + [28] = { 86, 30, 1063, 1595, }, + [29] = { 88, 30, 1160, 1740, }, + [30] = { 90, 31, 1266, 1899, }, + }, +} +skills["DoubleSlash"] = { + name = "Lacerate", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + parts = { + { + name = "One slash", + }, + { + name = "Both slashes", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["Two Handed Axe"] = true, + ["Two Handed Sword"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + mod("Speed", "MORE", -25, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -25 + --"is_area_damage" = ? + skill("dpsMultiplier", 2, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, -5, 0, }, + [2] = { 15, -3.8, 0, }, + [3] = { 19, -2.6, 0, }, + [4] = { 23, -1.4, 1, }, + [5] = { 27, -0.2, 1, }, + [6] = { 31, 1, 1, }, + [7] = { 35, 2.2, 1, }, + [8] = { 38, 3.4, 2, }, + [9] = { 41, 4.6, 2, }, + [10] = { 44, 5.8, 2, }, + [11] = { 47, 7, 2, }, + [12] = { 50, 8.2, 3, }, + [13] = { 53, 9.4, 3, }, + [14] = { 56, 10.6, 3, }, + [15] = { 59, 11.8, 3, }, + [16] = { 62, 13, 4, }, + [17] = { 64, 14.2, 4, }, + [18] = { 66, 15.4, 4, }, + [19] = { 68, 16.6, 4, }, + [20] = { 70, 17.8, 5, }, + [21] = { 72, 19, 5, }, + [22] = { 74, 20.2, 5, }, + [23] = { 76, 21.4, 5, }, + [24] = { 78, 22.6, 6, }, + [25] = { 80, 23.8, 6, }, + [26] = { 82, 25, 6, }, + [27] = { 84, 26.2, 6, }, + [28] = { 86, 27.4, 7, }, + [29] = { 88, 28.6, 7, }, + [30] = { 90, 29.8, 7, }, + }, +} +skills["LightningArrow"] = { + name = "Lightning Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + lightning = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + lightning = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [3] = true, [22] = true, [17] = true, [19] = true, [35] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + --"lightning_arrow_maximum_number_of_extra_targets" = 3 + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 7, nil, }, + [2] = { 15, 7, 1, }, + [3] = { 19, 7, 2, }, + [4] = { 23, 8, 3, }, + [5] = { 27, 8, 4, }, + [6] = { 31, 8, 5, }, + [7] = { 35, 8, 6, }, + [8] = { 38, 8, 7, }, + [9] = { 41, 9, 8, }, + [10] = { 44, 9, 9, }, + [11] = { 47, 9, 10, }, + [12] = { 50, 9, 11, }, + [13] = { 53, 9, 12, }, + [14] = { 56, 10, 13, }, + [15] = { 59, 10, 14, }, + [16] = { 62, 10, 15, }, + [17] = { 64, 10, 16, }, + [18] = { 66, 10, 17, }, + [19] = { 68, 11, 18, }, + [20] = { 70, 11, 19, }, + [21] = { 72, 11, 20, }, + [22] = { 74, 11, 21, }, + [23] = { 76, 11, 22, }, + [24] = { 78, 11, 23, }, + [25] = { 80, 11, 24, }, + [26] = { 82, 12, 25, }, + [27] = { 84, 12, 26, }, + [28] = { 86, 12, 27, }, + [29] = { 88, 12, 28, }, + [30] = { 90, 12, 29, }, + }, +} +skills["LightningStrike"] = { + name = "Lightning Strike", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + lightning = true, + }, + parts = { + { + name = "Melee hit", + melee = true, + projectile = false, + }, + { + name = "Projectiles", + melee = false, + projectile = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + lightning = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + mod("Damage", "MORE", -25, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -25 + --"total_projectile_spread_angle_override" = 70 + --"show_number_of_projectiles" = ? + }, + qualityMods = { + mod("PierceChance", "BASE", 2), --"pierce_%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 12, 30, 4, }, + [2] = { 15, 32.4, 4, }, + [3] = { 19, 34.8, 4, }, + [4] = { 23, 37.2, 4, }, + [5] = { 27, 39.6, 4, }, + [6] = { 31, 42, 5, }, + [7] = { 35, 44.4, 5, }, + [8] = { 38, 46.8, 5, }, + [9] = { 41, 49.2, 5, }, + [10] = { 44, 51.6, 5, }, + [11] = { 47, 54, 6, }, + [12] = { 50, 56.4, 6, }, + [13] = { 53, 58.8, 6, }, + [14] = { 56, 61.2, 6, }, + [15] = { 59, 63.6, 6, }, + [16] = { 62, 66, 7, }, + [17] = { 64, 68.4, 7, }, + [18] = { 66, 70.8, 7, }, + [19] = { 68, 73.2, 7, }, + [20] = { 70, 75.6, 7, }, + [21] = { 72, 78, 8, }, + [22] = { 74, 80.4, 8, }, + [23] = { 76, 82.8, 8, }, + [24] = { 78, 85.2, 8, }, + [25] = { 80, 87.6, 8, }, + [26] = { 82, 90, 9, }, + [27] = { 84, 92.4, 9, }, + [28] = { 86, 94.8, 9, }, + [29] = { 88, 97.2, 9, }, + [30] = { 90, 99.6, 9, }, + }, +} +skills["VaalLightningStrike"] = { + name = "Vaal Lightning Strike", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + melee = true, + duration = true, + lightning = true, + }, + parts = { + { + name = "Strike", + }, + { + name = "Beams", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, [35] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + mod("Damage", "MORE", -50, 0, 0, { type = "SkillPart", skillPart = 2 }), --"vaal_lightning_strike_beam_damage_+%_final" = -50 + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("duration", nil), --"base_skill_effect_duration" + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 5, nil, }, + [2] = { 15, 5.2, 1.2, }, + [3] = { 19, 5.4, 2.4, }, + [4] = { 23, 5.6, 3.6, }, + [5] = { 27, 5.8, 4.8, }, + [6] = { 31, 6, 6, }, + [7] = { 35, 6.2, 7.2, }, + [8] = { 38, 6.4, 8.4, }, + [9] = { 41, 6.6, 9.6, }, + [10] = { 44, 6.8, 10.8, }, + [11] = { 47, 7, 12, }, + [12] = { 50, 7.2, 13.2, }, + [13] = { 53, 7.4, 14.4, }, + [14] = { 56, 7.6, 15.6, }, + [15] = { 59, 7.8, 16.8, }, + [16] = { 62, 8, 18, }, + [17] = { 64, 8.2, 19.2, }, + [18] = { 66, 8.4, 20.4, }, + [19] = { 68, 8.6, 21.6, }, + [20] = { 70, 8.8, 22.8, }, + [21] = { 72, 9, 24, }, + [22] = { 74, 9.2, 25.2, }, + [23] = { 76, 9.4, 26.4, }, + [24] = { 78, 9.6, 27.6, }, + [25] = { 80, 9.8, 28.8, }, + [26] = { 82, 10, 30, }, + [27] = { 84, 10.2, 31.2, }, + [28] = { 86, 10.4, 32.4, }, + [29] = { 88, 10.6, 33.6, }, + [30] = { 90, 10.8, 34.8, }, + }, +} +skills["MirrorArrow"] = { + name = "Mirror Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + minion = true, + duration = true, + bow = true, + }, + minionList = { + "Clone", + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + minion = true, + movement = true, + duration = true, + }, + skillTypes = { [14] = true, [1] = true, [9] = true, [48] = true, [21] = true, [12] = true, [22] = true, [17] = true, [19] = true, }, + minionSkillTypes = { [1] = true, [3] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"number_of_monsters_to_summon" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", 75) }), --"active_skill_minion_damage_+%_final" = 75 + --"display_minion_monster_type" = 4 + --"base_is_projectile" = ? + skill("minionUseBowAndQuiver", true), + }, + qualityMods = { + --"base_arrow_speed_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", nil) }), --"minion_damage_+%" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [5] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 14, 0, 0, 24, }, + [2] = { 13, 14, 6, 3, 27, }, + [3] = { 17, 15, 12, 6, 30, }, + [4] = { 21, 15, 18, 9, 33, }, + [5] = { 25, 15, 24, 12, 35, }, + [6] = { 29, 16, 30, 15, 38, }, + [7] = { 33, 16, 36, 18, 40, }, + [8] = { 36, 16, 42, 21, 43, }, + [9] = { 39, 16, 48, 24, 46, }, + [10] = { 42, 17, 54, 27, 48, }, + [11] = { 45, 17, 60, 30, 50, }, + [12] = { 48, 17, 66, 33, 52, }, + [13] = { 51, 17, 72, 36, 54, }, + [14] = { 54, 18, 78, 39, 56, }, + [15] = { 57, 18, 84, 42, 58, }, + [16] = { 60, 18, 90, 45, 60, }, + [17] = { 63, 19, 96, 48, 62, }, + [18] = { 66, 19, 102, 51, 64, }, + [19] = { 68, 20, 108, 54, 66, }, + [20] = { 70, 20, 114, 57, 68, }, + [21] = { 72, 21, 120, 60, 70, }, + [22] = { 74, 21, 126, 63, 72, }, + [23] = { 76, 22, 132, 66, 74, }, + [24] = { 78, 22, 138, 69, 76, }, + [25] = { 80, 22, 144, 72, 78, }, + [26] = { 82, 23, 150, 75, 80, }, + [27] = { 84, 23, 156, 78, 82, }, + [28] = { 86, 23, 162, 81, 84, }, + [29] = { 88, 23, 168, 84, 86, }, + [30] = { 90, 24, 174, 87, 88, }, + }, +} +skills["NewPhaseRun"] = { + name = "Phase Run", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + duration = true, + movement = true, + }, + color = 2, + baseFlags = { + spell = true, + duration = true, + movement = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [38] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("cooldown", 4), + --"enemy_aggro_radius_+%" = -80 + skill("duration", 1.8), --"base_skill_effect_duration" = 1800 + --"base_secondary_skill_effect_duration" = 200 + mod("Duration", "INC", 100, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"skill_effect_duration_+%_per_frenzy_charge" = 100 + --"phase_through_objects" = ? + }, + qualityMods = { + mod("MovementSpeed", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" + [4] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"phase_run_melee_physical_damage_+%_final" + }, + levels = { + [1] = { 34, 11, 30, 20, }, + [2] = { 36, 11, 30, 21, }, + [3] = { 38, 11, 31, 21, }, + [4] = { 40, 11, 31, 22, }, + [5] = { 42, 11, 32, 22, }, + [6] = { 44, 12, 32, 23, }, + [7] = { 46, 12, 33, 23, }, + [8] = { 48, 12, 33, 24, }, + [9] = { 50, 12, 34, 24, }, + [10] = { 52, 12, 34, 25, }, + [11] = { 54, 12, 35, 25, }, + [12] = { 56, 12, 35, 26, }, + [13] = { 58, 13, 36, 26, }, + [14] = { 60, 13, 36, 27, }, + [15] = { 62, 13, 37, 27, }, + [16] = { 64, 13, 37, 28, }, + [17] = { 66, 13, 38, 28, }, + [18] = { 68, 13, 38, 29, }, + [19] = { 69, 14, 39, 29, }, + [20] = { 70, 14, 39, 30, }, + [21] = { 72, 14, 40, 30, }, + [22] = { 74, 14, 40, 31, }, + [23] = { 76, 14, 41, 31, }, + [24] = { 78, 14, 41, 32, }, + [25] = { 80, 14, 42, 32, }, + [26] = { 82, 14, 42, 33, }, + [27] = { 84, 14, 43, 33, }, + [28] = { 86, 14, 43, 34, }, + [29] = { 88, 14, 44, 34, }, + [30] = { 90, 14, 44, 35, }, + }, +} +skills["PoachersMark"] = { + name = "Poacher's Mark", + gemTags = { + curse = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"monster_slain_flask_charges_granted_+%" = 100 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"chance_to_grant_frenzy_charge_on_death_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("Evasion", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse"}), --"evasion_rating_+%_final_from_poachers_mark" + [6] = mod("SelfLifeOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_hit_by_attacks" + [7] = mod("SelfManaOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_hit_by_attacks" + --[8] = "chance_to_grant_frenzy_charge_on_death_%" + }, + levels = { + [1] = { 24, 24, 6, 0, -30, 5, 5, 21, }, + [2] = { 27, 26, 6.2, 4, -31, 6, 6, 21, }, + [3] = { 30, 27, 6.4, 8, -32, 7, 6, 22, }, + [4] = { 33, 29, 6.6, 12, -33, 8, 6, 22, }, + [5] = { 36, 30, 6.8, 16, -34, 9, 7, 23, }, + [6] = { 39, 32, 7, 20, -35, 10, 7, 23, }, + [7] = { 42, 34, 7.2, 24, -36, 11, 7, 24, }, + [8] = { 45, 35, 7.4, 28, -37, 12, 8, 24, }, + [9] = { 48, 37, 7.6, 32, -38, 13, 8, 25, }, + [10] = { 50, 38, 7.8, 36, -39, 14, 8, 25, }, + [11] = { 52, 39, 8, 40, -40, 15, 9, 26, }, + [12] = { 54, 40, 8.2, 44, -41, 16, 9, 26, }, + [13] = { 56, 42, 8.4, 48, -42, 17, 9, 27, }, + [14] = { 58, 43, 8.6, 52, -43, 18, 10, 27, }, + [15] = { 60, 44, 8.8, 56, -44, 19, 10, 28, }, + [16] = { 62, 45, 9, 60, -45, 20, 10, 28, }, + [17] = { 64, 46, 9.2, 64, -46, 21, 11, 29, }, + [18] = { 66, 47, 9.4, 68, -47, 22, 11, 29, }, + [19] = { 68, 48, 9.6, 72, -48, 23, 11, 30, }, + [20] = { 70, 50, 9.8, 76, -49, 24, 12, 30, }, + [21] = { 72, 51, 10, 80, -50, 25, 12, 31, }, + [22] = { 74, 52, 10.2, 84, -51, 26, 12, 31, }, + [23] = { 76, 53, 10.4, 88, -52, 27, 13, 32, }, + [24] = { 78, 54, 10.6, 92, -53, 28, 13, 32, }, + [25] = { 80, 56, 10.8, 96, -54, 29, 13, 33, }, + [26] = { 82, 57, 11, 100, -55, 30, 14, 33, }, + [27] = { 84, 58, 11.2, 104, -56, 31, 14, 34, }, + [28] = { 86, 59, 11.4, 108, -57, 32, 14, 34, }, + [29] = { 88, 60, 11.6, 112, -58, 33, 15, 35, }, + [30] = { 90, 61, 11.8, 116, -59, 34, 15, 35, }, + }, +} +skills["ProjectileWeakness"] = { + name = "Projectile Weakness", + gemTags = { + curse = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("SelfPierceChance", "BASE", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" = 50 + --"chance_to_be_knocked_back_%" = 25 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("ProjectileDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" + }, + levels = { + [1] = { 24, 24, 9, 0, 25, }, + [2] = { 27, 26, 9.1, 4, 26, }, + [3] = { 30, 27, 9.2, 8, 27, }, + [4] = { 33, 29, 9.3, 12, 28, }, + [5] = { 36, 30, 9.4, 16, 29, }, + [6] = { 39, 32, 9.5, 20, 30, }, + [7] = { 42, 34, 9.6, 24, 31, }, + [8] = { 45, 35, 9.7, 28, 32, }, + [9] = { 48, 37, 9.8, 32, 33, }, + [10] = { 50, 38, 9.9, 36, 34, }, + [11] = { 52, 39, 10, 40, 35, }, + [12] = { 54, 40, 10.1, 44, 36, }, + [13] = { 56, 42, 10.2, 48, 37, }, + [14] = { 58, 43, 10.3, 52, 38, }, + [15] = { 60, 44, 10.4, 56, 39, }, + [16] = { 62, 45, 10.5, 60, 40, }, + [17] = { 64, 46, 10.6, 64, 41, }, + [18] = { 66, 47, 10.7, 68, 42, }, + [19] = { 68, 48, 10.8, 72, 43, }, + [20] = { 70, 50, 10.9, 76, 44, }, + [21] = { 72, 51, 11, 80, 45, }, + [22] = { 74, 52, 11.1, 84, 46, }, + [23] = { 76, 53, 11.2, 88, 47, }, + [24] = { 78, 54, 11.3, 92, 48, }, + [25] = { 80, 56, 11.4, 96, 49, }, + [26] = { 82, 57, 11.5, 100, 50, }, + [27] = { 84, 58, 11.6, 104, 51, }, + [28] = { 86, 59, 11.7, 108, 52, }, + [29] = { 88, 60, 11.8, 112, 53, }, + [30] = { 90, 61, 11.9, 116, 54, }, + }, +} +skills["Puncture"] = { + name = "Puncture", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + duration = true, + melee = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + duration = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, + weaponTypes = { + ["Bow"] = true, + ["Claw"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + skill("bleedBasePercent", 10), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 600 + --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 3000 + --"bleed_on_hit_base_duration" = 5000 + --"skill_can_fire_arrows" = ? + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 4, nil, }, + [2] = { 6, 1.2, }, + [3] = { 9, 2.4, }, + [4] = { 12, 3.6, }, + [5] = { 16, 4.8, }, + [6] = { 20, 6, }, + [7] = { 24, 7.2, }, + [8] = { 28, 8.4, }, + [9] = { 32, 9.6, }, + [10] = { 36, 10.8, }, + [11] = { 40, 12, }, + [12] = { 44, 13.2, }, + [13] = { 48, 14.4, }, + [14] = { 52, 15.6, }, + [15] = { 55, 16.8, }, + [16] = { 58, 18, }, + [17] = { 61, 19.2, }, + [18] = { 64, 20.4, }, + [19] = { 67, 21.6, }, + [20] = { 70, 22.8, }, + [21] = { 72, 24, }, + [22] = { 74, 25.2, }, + [23] = { 76, 26.4, }, + [24] = { 78, 27.6, }, + [25] = { 80, 28.8, }, + [26] = { 82, 30, }, + [27] = { 84, 31.2, }, + [28] = { 86, 32.4, }, + [29] = { 88, 33.6, }, + [30] = { 90, 34.8, }, + }, +} +skills["ColdResistAura"] = { + name = "Purity of Ice", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_cold_damage_resistance_%" + [3] = mod("ColdResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 22, 0, 0, }, + [2] = { 27, 23, 0, 3, }, + [3] = { 30, 24, 0, 6, }, + [4] = { 33, 25, 0, 9, }, + [5] = { 36, 26, 1, 12, }, + [6] = { 39, 27, 1, 15, }, + [7] = { 42, 28, 1, 18, }, + [8] = { 45, 29, 1, 21, }, + [9] = { 48, 30, 1, 23, }, + [10] = { 50, 31, 1, 25, }, + [11] = { 52, 32, 2, 27, }, + [12] = { 54, 33, 2, 29, }, + [13] = { 56, 34, 2, 31, }, + [14] = { 58, 35, 2, 33, }, + [15] = { 60, 36, 2, 35, }, + [16] = { 62, 37, 2, 36, }, + [17] = { 64, 38, 3, 37, }, + [18] = { 66, 39, 3, 38, }, + [19] = { 68, 40, 3, 39, }, + [20] = { 70, 41, 4, 40, }, + [21] = { 72, 42, 4, 41, }, + [22] = { 74, 43, 4, 42, }, + [23] = { 76, 44, 5, 43, }, + [24] = { 78, 45, 5, 44, }, + [25] = { 80, 46, 5, 45, }, + [26] = { 82, 47, 5, 46, }, + [27] = { 84, 48, 5, 47, }, + [28] = { 86, 49, 5, 48, }, + [29] = { 88, 50, 5, 49, }, + [30] = { 90, 51, 5, 50, }, + }, +} +skills["RainOfArrows"] = { + name = "Rain of Arrows", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[4] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 7, 10, 0, }, + [2] = { 15, 7, 11, 0, }, + [3] = { 19, 7, 12, 0, }, + [4] = { 23, 8, 13, 0, }, + [5] = { 27, 8, 14, 1, }, + [6] = { 31, 8, 15, 1, }, + [7] = { 35, 8, 16, 1, }, + [8] = { 38, 8, 17, 1, }, + [9] = { 41, 9, 18, 1, }, + [10] = { 44, 9, 19, 2, }, + [11] = { 47, 9, 20, 2, }, + [12] = { 50, 9, 21, 2, }, + [13] = { 53, 9, 22, 2, }, + [14] = { 56, 10, 23, 2, }, + [15] = { 59, 10, 24, 3, }, + [16] = { 62, 10, 25, 3, }, + [17] = { 64, 10, 26, 3, }, + [18] = { 66, 10, 27, 3, }, + [19] = { 68, 11, 28, 3, }, + [20] = { 70, 11, 29, 4, }, + [21] = { 72, 11, 30, 4, }, + [22] = { 74, 11, 31, 4, }, + [23] = { 76, 11, 32, 4, }, + [24] = { 78, 11, 33, 4, }, + [25] = { 80, 11, 34, 5, }, + [26] = { 82, 12, 35, 5, }, + [27] = { 84, 12, 36, 5, }, + [28] = { 86, 12, 37, 5, }, + [29] = { 88, 12, 38, 5, }, + [30] = { 90, 12, 39, 6, }, + }, +} +skills["VaalRainOfArrows"] = { + name = "Vaal Rain of Arrows", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + duration = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [12] = true, [43] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = ? + --"is_area_damage" = ? + --"rain_of_arrows_pin" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 12, 40, 3.4, 0, }, + [2] = { 15, 41.5, 3.45, 1, }, + [3] = { 19, 43, 3.5, 2, }, + [4] = { 23, 44.5, 3.55, 3, }, + [5] = { 27, 46, 3.6, 4, }, + [6] = { 31, 47.5, 3.65, 5, }, + [7] = { 35, 49, 3.7, 6, }, + [8] = { 38, 50.5, 3.75, 7, }, + [9] = { 41, 52, 3.8, 8, }, + [10] = { 44, 53.5, 3.85, 9, }, + [11] = { 47, 55, 3.9, 10, }, + [12] = { 50, 56.5, 3.95, 11, }, + [13] = { 53, 58, 4, 12, }, + [14] = { 56, 59.5, 4.05, 13, }, + [15] = { 59, 61, 4.1, 14, }, + [16] = { 62, 62.5, 4.15, 15, }, + [17] = { 64, 64, 4.2, 16, }, + [18] = { 66, 65.5, 4.25, 17, }, + [19] = { 68, 67, 4.3, 18, }, + [20] = { 70, 68.5, 4.35, 19, }, + [21] = { 72, 70, 4.4, 20, }, + [22] = { 74, 71.5, 4.45, 21, }, + [23] = { 76, 73, 4.5, 22, }, + [24] = { 78, 74.5, 4.55, 23, }, + [25] = { 80, 76, 4.6, 24, }, + [26] = { 82, 77.5, 4.65, 25, }, + [27] = { 84, 79, 4.7, 26, }, + [28] = { 86, 80.5, 4.75, 27, }, + [29] = { 88, 82, 4.8, 28, }, + [30] = { 90, 83.5, 4.85, 29, }, + }, +} +skills["Reave"] = { + name = "Reave", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + --"reave_area_of_effect_+%_final_per_stage" = 50 + --"is_area_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "active_skill_base_radius_+" + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 0, nil, }, + [2] = { 15, 0, 2, }, + [3] = { 19, 0, 4, }, + [4] = { 23, 0, 6, }, + [5] = { 27, 1, 8, }, + [6] = { 31, 1, 10, }, + [7] = { 35, 1, 12, }, + [8] = { 38, 1, 14, }, + [9] = { 41, 1, 16, }, + [10] = { 44, 2, 18, }, + [11] = { 47, 2, 20, }, + [12] = { 50, 2, 22, }, + [13] = { 53, 2, 24, }, + [14] = { 56, 2, 26, }, + [15] = { 59, 3, 28, }, + [16] = { 62, 3, 30, }, + [17] = { 64, 3, 32, }, + [18] = { 66, 3, 34, }, + [19] = { 68, 3, 36, }, + [20] = { 70, 4, 38, }, + [21] = { 72, 4, 40, }, + [22] = { 74, 4, 42, }, + [23] = { 76, 4, 44, }, + [24] = { 78, 4, 46, }, + [25] = { 80, 5, 48, }, + [26] = { 82, 5, 50, }, + [27] = { 84, 5, 52, }, + [28] = { 86, 5, 54, }, + [29] = { 88, 5, 56, }, + [30] = { 90, 6, 58, }, + }, +} +skills["VaalReave"] = { + name = "Vaal Reave", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + --"reave_area_of_effect_+%_final_per_stage" = 50 + --"reave_rotation_on_repeat" = 135 + --"reave_additional_max_stacks" = 4 + --"base_attack_repeat_count" = 7 + mod("Speed", "MORE", 150, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 150 + --"reave_additional_starting_stacks" = 4 + --"is_area_damage" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "active_skill_base_radius_+" + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 0, nil, }, + [2] = { 15, 0, 1.2, }, + [3] = { 19, 0, 2.4, }, + [4] = { 23, 0, 3.6, }, + [5] = { 27, 1, 4.8, }, + [6] = { 31, 1, 6, }, + [7] = { 35, 1, 7.2, }, + [8] = { 38, 1, 8.4, }, + [9] = { 41, 1, 9.6, }, + [10] = { 44, 2, 10.8, }, + [11] = { 47, 2, 12, }, + [12] = { 50, 2, 13.2, }, + [13] = { 53, 2, 14.4, }, + [14] = { 56, 2, 15.6, }, + [15] = { 59, 3, 16.8, }, + [16] = { 62, 3, 18, }, + [17] = { 64, 3, 19.2, }, + [18] = { 66, 3, 20.4, }, + [19] = { 68, 3, 21.6, }, + [20] = { 70, 4, 22.8, }, + [21] = { 72, 4, 24, }, + [22] = { 74, 4, 25.2, }, + [23] = { 76, 4, 26.4, }, + [24] = { 78, 4, 27.6, }, + [25] = { 80, 5, 28.8, }, + [26] = { 82, 5, 30, }, + [27] = { 84, 5, 31.2, }, + [28] = { 86, 5, 32.4, }, + [29] = { 88, 5, 33.6, }, + [30] = { 90, 6, 34.8, }, + }, +} +skills["Riposte"] = { + name = "Riposte", + gemTags = { + trigger = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [24] = true, [25] = true, [6] = true, [47] = true, [57] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 0.8), + --"melee_counterattack_trigger_on_block_%" = 100 + --"attack_unusable_if_triggerable" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 4, nil, }, + [2] = { 6, 2, }, + [3] = { 9, 4, }, + [4] = { 12, 6, }, + [5] = { 16, 8, }, + [6] = { 20, 10, }, + [7] = { 24, 12, }, + [8] = { 28, 14, }, + [9] = { 32, 16, }, + [10] = { 36, 18, }, + [11] = { 40, 20, }, + [12] = { 44, 22, }, + [13] = { 48, 24, }, + [14] = { 52, 26, }, + [15] = { 55, 28, }, + [16] = { 58, 30, }, + [17] = { 61, 32, }, + [18] = { 64, 34, }, + [19] = { 67, 36, }, + [20] = { 70, 38, }, + [21] = { 72, 40, }, + [22] = { 74, 42, }, + [23] = { 76, 44, }, + [24] = { 78, 46, }, + [25] = { 80, 48, }, + [26] = { 82, 50, }, + [27] = { 84, 52, }, + [28] = { 86, 54, }, + [29] = { 88, 56, }, + [30] = { 90, 58, }, + }, +} +skills["ShrapnelShot"] = { + name = "Shrapnel Shot", + gemTags = { + lightning = true, + dexterity = true, + active_skill = true, + attack = true, + area = true, + bow = true, + }, + parts = { + { + name = "Arrow", + area = false, + }, + { + name = "Cone", + area = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + lightning = true, + }, + skillTypes = { [1] = true, [3] = true, [11] = true, [22] = true, [17] = true, [19] = true, [35] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_arrow_pierce_%" = 100 + mod("Damage", "MORE", 0, ModFlag.Area), --"active_skill_area_damage_+%_final" = 0 + mod("PhysicalDamageConvertToLightning", "BASE", 40, 0, 0, nil), --"base_physical_damage_%_to_convert_to_lightning" = 40 + --"base_is_projectile" = ? + --"skill_can_fire_arrows" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[4] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 6, -20, 0, }, + [2] = { 2, 6, -19, 0, }, + [3] = { 4, 6, -18, 0, }, + [4] = { 7, 7, -17, 1, }, + [5] = { 11, 7, -16, 1, }, + [6] = { 16, 7, -15, 1, }, + [7] = { 20, 7, -14, 1, }, + [8] = { 24, 8, -13, 2, }, + [9] = { 28, 8, -12, 2, }, + [10] = { 32, 8, -11, 2, }, + [11] = { 36, 8, -10, 2, }, + [12] = { 40, 8, -9, 3, }, + [13] = { 44, 9, -8, 3, }, + [14] = { 48, 9, -7, 3, }, + [15] = { 52, 9, -6, 3, }, + [16] = { 56, 9, -5, 4, }, + [17] = { 60, 9, -4, 4, }, + [18] = { 64, 10, -3, 4, }, + [19] = { 67, 10, -2, 4, }, + [20] = { 70, 10, -1, 5, }, + [21] = { 72, 10, nil, 5, }, + [22] = { 74, 10, 1, 5, }, + [23] = { 76, 11, 2, 5, }, + [24] = { 78, 11, 3, 6, }, + [25] = { 80, 11, 4, 6, }, + [26] = { 82, 11, 5, 6, }, + [27] = { 84, 11, 6, 6, }, + [28] = { 86, 12, 7, 7, }, + [29] = { 88, 12, 8, 7, }, + [30] = { 90, 12, 9, 7, }, + }, +} +skills["SiegeBallista"] = { + name = "Siege Ballista", + gemTags = { + totem = true, + dexterity = true, + active_skill = true, + attack = true, + duration = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + totem = true, + duration = true, + }, + skillTypes = { [1] = true, [3] = true, [48] = true, [17] = true, [19] = true, [30] = true, [12] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + skillTotemId = 12, + baseMods = { + skill("castTime", 1), + mod("Speed", "MORE", -50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -50 + --"base_arrow_pierce_%" = 100 + --"base_totem_range" = 80 + --"base_totem_duration" = 8000 + --"base_is_projectile" = ? + --"base_skill_is_totemified" = ? + --"is_totem" = ? + --"skill_can_fire_arrows" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("TotemPlacementSpeed", "INC", 1), --"summon_totem_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = skill("totemLevel", nil), --"base_active_skill_totem_level" + }, + levels = { + [1] = { 4, 8, 40, 4, }, + [2] = { 6, 8, 41.6, 6, }, + [3] = { 9, 8, 43.2, 9, }, + [4] = { 12, 9, 44.8, 12, }, + [5] = { 16, 9, 46.4, 16, }, + [6] = { 20, 9, 48, 20, }, + [7] = { 24, 9, 49.6, 24, }, + [8] = { 28, 9, 51.2, 28, }, + [9] = { 32, 9, 52.8, 32, }, + [10] = { 36, 10, 54.4, 36, }, + [11] = { 40, 10, 56, 40, }, + [12] = { 44, 10, 57.6, 44, }, + [13] = { 48, 10, 59.2, 48, }, + [14] = { 52, 10, 60.8, 52, }, + [15] = { 55, 11, 62.4, 55, }, + [16] = { 58, 11, 64, 58, }, + [17] = { 61, 12, 65.6, 61, }, + [18] = { 64, 12, 67.2, 64, }, + [19] = { 67, 12, 68.8, 67, }, + [20] = { 70, 13, 70.4, 70, }, + [21] = { 72, 13, 72, 72, }, + [22] = { 74, 13, 73.6, 74, }, + [23] = { 76, 14, 75.2, 76, }, + [24] = { 78, 14, 76.8, 78, }, + [25] = { 80, 14, 78.4, 80, }, + [26] = { 82, 14, 80, 82, }, + [27] = { 84, 14, 81.6, 84, }, + [28] = { 86, 14, 83.2, 86, }, + [29] = { 88, 15, 84.8, 88, }, + [30] = { 90, 15, 86.4, 90, }, + }, +} +skills["SmokeMine"] = { + name = "Smoke Mine", + gemTags = { + mine = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + movement = true, + }, + color = 2, + baseFlags = { + spell = true, + mine = true, + area = true, + duration = true, + movement = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [38] = true, [41] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_mine_duration" = 16000 + mod("MovementSpeed", "INC", 30, 0, 0, nil), --"base_movement_velocity_+%" = 30 + --"is_remote_mine" = ? + --"base_skill_is_mined" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 10, 6, 4, }, + [2] = { 13, 6, 4.1, }, + [3] = { 17, 7, 4.2, }, + [4] = { 21, 7, 4.3, }, + [5] = { 25, 8, 4.4, }, + [6] = { 29, 8, 4.5, }, + [7] = { 33, 9, 4.6, }, + [8] = { 36, 9, 4.7, }, + [9] = { 39, 9, 4.8, }, + [10] = { 42, 10, 4.9, }, + [11] = { 45, 10, 5, }, + [12] = { 48, 10, 5.1, }, + [13] = { 51, 10, 5.2, }, + [14] = { 54, 11, 5.3, }, + [15] = { 57, 11, 5.4, }, + [16] = { 60, 11, 5.5, }, + [17] = { 63, 12, 5.6, }, + [18] = { 66, 12, 5.7, }, + [19] = { 68, 12, 5.8, }, + [20] = { 70, 13, 5.9, }, + [21] = { 72, 13, 6, }, + [22] = { 74, 13, 6.1, }, + [23] = { 76, 14, 6.2, }, + [24] = { 78, 14, 6.3, }, + [25] = { 80, 14, 6.4, }, + [26] = { 82, 14, 6.5, }, + [27] = { 84, 14, 6.6, }, + [28] = { 86, 14, 6.7, }, + [29] = { 88, 15, 6.8, }, + [30] = { 90, 15, 6.9, }, + }, +} +skills["ThrownWeapon"] = { + name = "Spectral Throw", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 7, -46, }, + [2] = { 2, 7, -44, }, + [3] = { 4, 7, -42.1, }, + [4] = { 7, 7, -40.2, }, + [5] = { 11, 7, -38.3, }, + [6] = { 16, 7, -36.4, }, + [7] = { 20, 7, -34.4, }, + [8] = { 24, 7, -32.5, }, + [9] = { 28, 7, -30.6, }, + [10] = { 32, 7, -28.7, }, + [11] = { 36, 8, -26.8, }, + [12] = { 40, 8, -24.8, }, + [13] = { 44, 8, -22.9, }, + [14] = { 48, 8, -21, }, + [15] = { 52, 8, -19.1, }, + [16] = { 56, 9, -17.2, }, + [17] = { 60, 9, -15.2, }, + [18] = { 64, 9, -13.3, }, + [19] = { 67, 9, -11.4, }, + [20] = { 70, 9, -9.5, }, + [21] = { 72, 10, -7.6, }, + [22] = { 74, 10, -5.6, }, + [23] = { 76, 10, -3.7, }, + [24] = { 78, 10, -1.8, }, + [25] = { 80, 10, nil, }, + [26] = { 82, 10, 2, }, + [27] = { 84, 10, 3.9, }, + [28] = { 86, 10, 5.8, }, + [29] = { 88, 10, 7.7, }, + [30] = { 90, 10, 9.6, }, + }, +} +skills["VaalThrownWeapon"] = { + name = "Vaal Spectral Throw", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [43] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"projectiles_nova" = ? + --"base_is_projectile" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, -30, }, + [2] = { 2, -28.2, }, + [3] = { 4, -26.4, }, + [4] = { 7, -24.6, }, + [5] = { 11, -22.8, }, + [6] = { 16, -21, }, + [7] = { 20, -19.2, }, + [8] = { 24, -17.4, }, + [9] = { 28, -15.6, }, + [10] = { 32, -13.8, }, + [11] = { 36, -12, }, + [12] = { 40, -10.2, }, + [13] = { 44, -8.4, }, + [14] = { 48, -6.6, }, + [15] = { 52, -4.8, }, + [16] = { 56, -3, }, + [17] = { 60, -1.2, }, + [18] = { 64, 0.6, }, + [19] = { 67, 2.4, }, + [20] = { 70, 4.2, }, + [21] = { 72, 6, }, + [22] = { 74, 7.8, }, + [23] = { 76, 9.6, }, + [24] = { 78, 11.4, }, + [25] = { 80, 13.2, }, + [26] = { 82, 15, }, + [27] = { 84, 16.8, }, + [28] = { 86, 18.6, }, + [29] = { 88, 20.4, }, + [30] = { 90, 22.2, }, + }, +} +skills["SplitArrow"] = { + name = "Split Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = mod("ProjectileCount", "BASE", nil), --"base_number_of_additional_arrows" + }, + levels = { + [1] = { 1, 6, -10, 4, }, + [2] = { 2, 6, -9, 4, }, + [3] = { 4, 6, -8, 4, }, + [4] = { 7, 7, -7, 4, }, + [5] = { 11, 7, -6, 4, }, + [6] = { 16, 7, -5, 4, }, + [7] = { 20, 7, -4, 4, }, + [8] = { 24, 8, -3, 5, }, + [9] = { 28, 8, -2, 5, }, + [10] = { 32, 8, -1, 5, }, + [11] = { 36, 8, nil, 5, }, + [12] = { 40, 8, 1, 5, }, + [13] = { 44, 9, 2, 5, }, + [14] = { 48, 9, 3, 5, }, + [15] = { 52, 9, 4, 6, }, + [16] = { 56, 9, 5, 6, }, + [17] = { 60, 9, 6, 6, }, + [18] = { 64, 10, 7, 6, }, + [19] = { 67, 10, 8, 6, }, + [20] = { 70, 10, 9, 6, }, + [21] = { 72, 10, 10, 6, }, + [22] = { 74, 10, 11, 7, }, + [23] = { 76, 11, 12, 7, }, + [24] = { 78, 11, 13, 7, }, + [25] = { 80, 11, 14, 7, }, + [26] = { 82, 11, 15, 7, }, + [27] = { 84, 11, 16, 7, }, + [28] = { 86, 12, 17, 7, }, + [29] = { 88, 12, 18, 8, }, + [30] = { 90, 12, 19, 8, }, + }, +} +skills["SummonIceGolem"] = { + name = "Summon Ice Golem", + gemTags = { + dexterity = true, + active_skill = true, + cold = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedIceGolem", + }, + color = 2, + baseFlags = { + spell = true, + minion = true, + golem = true, + cold = true, + }, + skillTypes = { [36] = true, [34] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [60] = true, [62] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [3] = true, [2] = true, [10] = true, [38] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 6 + mod("Misc", "LIST", { type = "Condition", var = "HaveColdGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("CritChance", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_critical_strike_chance_+%" + [5] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_accuracy_+%" + [6] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [7] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 20, 20, 30, 34, }, + [2] = { 36, 32, 1, 21, 21, 32, 36, }, + [3] = { 38, 34, 1, 21, 21, 34, 38, }, + [4] = { 40, 36, 2, 22, 22, 36, 40, }, + [5] = { 42, 38, 2, 22, 22, 38, 42, }, + [6] = { 44, 40, 3, 23, 23, 40, 44, }, + [7] = { 46, 42, 3, 23, 23, 42, 46, }, + [8] = { 48, 44, 4, 24, 24, 44, 48, }, + [9] = { 50, 44, 4, 24, 24, 46, 50, }, + [10] = { 52, 46, 5, 25, 25, 48, 52, }, + [11] = { 54, 48, 5, 25, 25, 50, 54, }, + [12] = { 56, 48, 6, 26, 26, 52, 56, }, + [13] = { 58, 50, 6, 26, 26, 54, 58, }, + [14] = { 60, 50, 7, 27, 27, 56, 60, }, + [15] = { 62, 52, 7, 27, 27, 58, 62, }, + [16] = { 64, 52, 8, 28, 28, 60, 64, }, + [17] = { 66, 52, 8, 28, 28, 62, 66, }, + [18] = { 68, 52, 9, 29, 29, 64, 68, }, + [19] = { 69, 54, 9, 29, 29, 66, 69, }, + [20] = { 70, 54, 10, 30, 30, 68, 70, }, + [21] = { 72, 56, 10, 30, 30, 70, 72, }, + [22] = { 74, 56, 11, 31, 31, 72, 74, }, + [23] = { 76, 58, 11, 31, 31, 74, 76, }, + [24] = { 78, 58, 12, 32, 32, 76, 78, }, + [25] = { 80, 60, 12, 32, 32, 78, 80, }, + [26] = { 82, 60, 13, 33, 33, 80, 82, }, + [27] = { 84, 60, 13, 33, 33, 82, 84, }, + [28] = { 86, 60, 14, 34, 34, 84, 86, }, + [29] = { 88, 62, 14, 34, 34, 86, 88, }, + [30] = { 90, 62, 15, 35, 35, 88, 90, }, + }, +} +skills["TemporalChains"] = { + name = "Temporal Chains", + gemTags = { + curse = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("BuffExpireFaster", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"buff_time_passed_-%" = 40 + --"curse_effect_+%_vs_players" = -40 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"temporal_chains_action_speed_+%_final" = -0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + --[5] = "temporal_chains_action_speed_+%_final" + }, + levels = { + [1] = { 24, 24, 5, 0, -20, }, + [2] = { 27, 26, 5.05, 4, -20, }, + [3] = { 30, 27, 5.1, 8, -21, }, + [4] = { 33, 29, 5.15, 12, -21, }, + [5] = { 36, 30, 5.2, 16, -22, }, + [6] = { 39, 32, 5.25, 20, -22, }, + [7] = { 42, 34, 5.3, 24, -23, }, + [8] = { 45, 35, 5.35, 28, -23, }, + [9] = { 48, 37, 5.4, 32, -24, }, + [10] = { 50, 38, 5.45, 36, -24, }, + [11] = { 52, 39, 5.5, 40, -25, }, + [12] = { 54, 40, 5.55, 44, -25, }, + [13] = { 56, 42, 5.6, 48, -26, }, + [14] = { 58, 43, 5.65, 52, -26, }, + [15] = { 60, 44, 5.7, 56, -27, }, + [16] = { 62, 45, 5.75, 60, -27, }, + [17] = { 64, 46, 5.8, 64, -28, }, + [18] = { 66, 47, 5.85, 68, -28, }, + [19] = { 68, 48, 5.9, 72, -29, }, + [20] = { 70, 50, 5.95, 76, -29, }, + [21] = { 72, 51, 6, 80, -30, }, + [22] = { 74, 52, 6.05, 84, -30, }, + [23] = { 76, 53, 6.1, 88, -31, }, + [24] = { 78, 54, 6.15, 92, -31, }, + [25] = { 80, 56, 6.2, 96, -32, }, + [26] = { 82, 57, 6.25, 100, -32, }, + [27] = { 84, 58, 6.3, 104, -33, }, + [28] = { 86, 59, 6.35, 108, -33, }, + [29] = { 88, 60, 6.4, 112, -34, }, + [30] = { 90, 61, 6.45, 116, -34, }, + }, +} +skills["TornadoShot"] = { + name = "Tornado Shot", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [3] = true, [17] = true, [19] = true, [22] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"tornado_shot_num_of_secondary_projectiles" = 3 + --"base_is_projectile" = ? + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 8, -10, }, + [2] = { 31, 8, -9, }, + [3] = { 34, 8, -8, }, + [4] = { 37, 8, -7, }, + [5] = { 40, 9, -6, }, + [6] = { 42, 9, -5, }, + [7] = { 44, 9, -4, }, + [8] = { 46, 9, -3, }, + [9] = { 48, 9, -2, }, + [10] = { 50, 9, -1, }, + [11] = { 52, 9, nil, }, + [12] = { 54, 10, 1, }, + [13] = { 56, 10, 2, }, + [14] = { 58, 10, 3, }, + [15] = { 60, 10, 4, }, + [16] = { 62, 10, 5, }, + [17] = { 64, 10, 6, }, + [18] = { 66, 10, 7, }, + [19] = { 68, 10, 8, }, + [20] = { 70, 10, 9, }, + [21] = { 72, 10, 10, }, + [22] = { 74, 10, 11, }, + [23] = { 76, 11, 12, }, + [24] = { 78, 11, 13, }, + [25] = { 80, 11, 14, }, + [26] = { 82, 11, 15, }, + [27] = { 84, 11, 16, }, + [28] = { 86, 12, 17, }, + [29] = { 88, 12, 18, }, + [30] = { 90, 12, 19, }, + }, +} +skills["ViperStrike"] = { + name = "Viper Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + duration = true, + melee = true, + chaos = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + duration = true, + chaos = true, + }, + skillTypes = { [1] = true, [6] = true, [12] = true, [28] = true, [24] = true, [25] = true, [40] = true, [50] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + mod("PhysicalDamageConvertToChaos", "BASE", 25, 0, 0, nil), --"base_physical_damage_%_to_convert_to_chaos" = 25 + mod("PoisonChance", "BASE", 100), --"base_chance_to_poison_on_hit_%" = 100 + skill("duration", 8), --"base_skill_effect_duration" = 8000 + skill("poisonDurationIsSkillDuration", true), --"poison_duration_is_skill_duration" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 30, }, + [2] = { 2, 32.6, }, + [3] = { 4, 35.2, }, + [4] = { 7, 37.8, }, + [5] = { 11, 40.4, }, + [6] = { 16, 43, }, + [7] = { 20, 45.6, }, + [8] = { 24, 48.2, }, + [9] = { 28, 50.8, }, + [10] = { 32, 53.4, }, + [11] = { 36, 56, }, + [12] = { 40, 58.6, }, + [13] = { 44, 61.2, }, + [14] = { 48, 63.8, }, + [15] = { 52, 66.4, }, + [16] = { 56, 69, }, + [17] = { 60, 71.6, }, + [18] = { 64, 74.2, }, + [19] = { 67, 76.8, }, + [20] = { 70, 79.4, }, + [21] = { 72, 82, }, + [22] = { 74, 84.6, }, + [23] = { 76, 87.2, }, + [24] = { 78, 89.8, }, + [25] = { 80, 92.4, }, + [26] = { 82, 95, }, + [27] = { 84, 97.6, }, + [28] = { 86, 100.2, }, + [29] = { 88, 102.8, }, + [30] = { 90, 105.4, }, + }, +} +skills["WhirlingBlades"] = { + name = "Whirling Blades", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + movement = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("manaCost", 15), + --"ignores_proximity_shield" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, -20, }, + [2] = { 13, -19, }, + [3] = { 17, -18, }, + [4] = { 21, -17, }, + [5] = { 25, -16, }, + [6] = { 29, -15, }, + [7] = { 33, -14, }, + [8] = { 36, -13, }, + [9] = { 39, -12, }, + [10] = { 42, -11, }, + [11] = { 45, -10, }, + [12] = { 48, -9, }, + [13] = { 51, -8, }, + [14] = { 54, -7, }, + [15] = { 57, -6, }, + [16] = { 60, -5, }, + [17] = { 63, -4, }, + [18] = { 66, -3, }, + [19] = { 68, -2, }, + [20] = { 70, -1, }, + [21] = { 72, nil, }, + [22] = { 74, 1, }, + [23] = { 76, 2, }, + [24] = { 78, 3, }, + [25] = { 80, 4, }, + [26] = { 82, 5, }, + [27] = { 84, 6, }, + [28] = { 86, 7, }, + [29] = { 88, 8, }, + [30] = { 90, 9, }, + }, +} +skills["WildStrike"] = { + name = "Wild Strike", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + lightning = true, + cold = true, + fire = true, + area = true, + chaining = true, + }, + parts = { + { + name = "Fire hit", + melee = true, + projectile = false, + chaining = false, + area = false, + }, + { + name = "Fire explosion", + melee = false, + projectile = false, + chaining = false, + area = true, + }, + { + name = "Lightning hit", + melee = true, + projectile = false, + chaining = false, + area = false, + }, + { + name = "Lightning bolt", + melee = false, + projectile = false, + chaining = true, + area = false, + }, + { + name = "Cold hit", + melee = true, + projectile = false, + chaining = false, + area = false, + }, + { + name = "Icy wave", + melee = false, + projectile = true, + chaining = false, + area = false, + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + chaining = true, + area = true, + lightning = true, + cold = true, + fire = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, [34] = true, [33] = true, [3] = true, [11] = true, [23] = true, [48] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + --"elemental_strike_physical_damage_%_to_convert" = 100 + --"fixed_projectile_spread" = 70 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + --"show_number_of_projectiles" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), + mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 2 }), + mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 3 }), + mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 4 }), + mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 5 }), + mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 6 }), + }, + qualityMods = { + mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 28, 30, 4, 0, }, + [2] = { 31, 32.4, 4, 1, }, + [3] = { 34, 34.8, 4, 2, }, + [4] = { 37, 37.2, 4, 3, }, + [5] = { 40, 39.6, 4, 4, }, + [6] = { 42, 42, 4, 5, }, + [7] = { 44, 44.4, 5, 6, }, + [8] = { 46, 46.8, 5, 7, }, + [9] = { 48, 49.2, 5, 8, }, + [10] = { 50, 51.6, 5, 9, }, + [11] = { 52, 54, 5, 10, }, + [12] = { 54, 56.4, 5, 11, }, + [13] = { 56, 58.8, 6, 12, }, + [14] = { 58, 61.2, 6, 13, }, + [15] = { 60, 63.6, 6, 14, }, + [16] = { 62, 66, 6, 15, }, + [17] = { 64, 68.4, 6, 16, }, + [18] = { 66, 70.8, 6, 17, }, + [19] = { 68, 73.2, 7, 18, }, + [20] = { 70, 75.6, 7, 19, }, + [21] = { 72, 78, 7, 20, }, + [22] = { 74, 80.4, 7, 21, }, + [23] = { 76, 82.8, 7, 22, }, + [24] = { 78, 85.2, 7, 23, }, + [25] = { 80, 87.6, 8, 24, }, + [26] = { 82, 90, 8, 25, }, + [27] = { 84, 92.4, 8, 26, }, + [28] = { 86, 94.8, 8, 27, }, + [29] = { 88, 97.2, 8, 28, }, + [30] = { 90, 99.6, 8, 29, }, + }, +} \ No newline at end of file diff --git a/Data/Skills/act_int.lua b/Data/Skills/act_int.lua new file mode 100644 index 00000000..9528895d --- /dev/null +++ b/Data/Skills/act_int.lua @@ -0,0 +1,5227 @@ +-- Path of Building +-- +-- Active Intelligence skill gems +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["Arc"] = { + name = "Arc", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + chaining = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + chaining = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 10), --"base_chance_to_shock_%" = 10 + }, + qualityMods = { + mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" + }, + levels = { + [1] = { 12, 9, 2, 35, 2, }, + [2] = { 15, 10, 2, 44, 2, }, + [3] = { 19, 11, 3, 58, 2, }, + [4] = { 23, 12, 4, 76, 3, }, + [5] = { 27, 13, 5, 97, 3, }, + [6] = { 31, 14, 6, 123, 3, }, + [7] = { 35, 16, 8, 154, 3, }, + [8] = { 38, 16, 10, 182, 4, }, + [9] = { 41, 17, 11, 214, 4, }, + [10] = { 44, 18, 13, 250, 4, }, + [11] = { 47, 19, 15, 292, 4, }, + [12] = { 50, 20, 18, 340, 5, }, + [13] = { 53, 21, 21, 395, 5, }, + [14] = { 56, 22, 24, 458, 5, }, + [15] = { 59, 23, 28, 529, 5, }, + [16] = { 62, 24, 32, 610, 6, }, + [17] = { 64, 24, 35, 671, 6, }, + [18] = { 66, 25, 39, 736, 6, }, + [19] = { 68, 25, 43, 808, 6, }, + [20] = { 70, 26, 47, 886, 7, }, + [21] = { 72, 26, 51, 971, 7, }, + [22] = { 74, 26, 56, 1064, 7, }, + [23] = { 76, 27, 61, 1164, 7, }, + [24] = { 78, 28, 67, 1274, 8, }, + [25] = { 80, 29, 73, 1393, 8, }, + [26] = { 82, 30, 80, 1523, 8, }, + [27] = { 84, 30, 88, 1663, 8, }, + [28] = { 86, 30, 96, 1816, 9, }, + [29] = { 88, 31, 104, 1983, 9, }, + [30] = { 90, 32, 114, 2163, 9, }, + }, +} +skills["VaalArcChain"] = { + name = "Vaal Arc", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + chaining = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.8), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 100), --"base_chance_to_shock_%" = 100 + mod("ChainCount", "BASE", 40), --"number_of_additional_projectiles_in_chain" = 40 + }, + qualityMods = { + mod("EnemyShockDuration", "INC", 1.5), --"shock_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 2, 35, }, + [2] = { 15, 2, 44, }, + [3] = { 19, 3, 59, }, + [4] = { 23, 4, 77, }, + [5] = { 27, 5, 99, }, + [6] = { 31, 7, 125, }, + [7] = { 35, 8, 158, }, + [8] = { 38, 10, 187, }, + [9] = { 41, 12, 220, }, + [10] = { 44, 14, 259, }, + [11] = { 47, 16, 303, }, + [12] = { 50, 19, 353, }, + [13] = { 53, 22, 411, }, + [14] = { 56, 25, 478, }, + [15] = { 59, 29, 554, }, + [16] = { 62, 34, 641, }, + [17] = { 64, 37, 706, }, + [18] = { 66, 41, 777, }, + [19] = { 68, 45, 854, }, + [20] = { 70, 49, 938, }, + [21] = { 72, 54, 1030, }, + [22] = { 74, 60, 1131, }, + [23] = { 76, 65, 1240, }, + [24] = { 78, 72, 1359, }, + [25] = { 80, 78, 1489, }, + [26] = { 82, 86, 1631, }, + [27] = { 84, 94, 1785, }, + [28] = { 86, 103, 1953, }, + [29] = { 88, 112, 2136, }, + [30] = { 90, 123, 2335, }, + }, +} +skills["ArcticBreath"] = { + name = "Arctic Breath", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + projectile = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [12] = true, [11] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"base_is_projectile" = 1 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 28, 11, 52, 78, 0.88, }, + [2] = { 31, 11, 64, 96, 0.94, }, + [3] = { 34, 12, 77, 116, 0.99, }, + [4] = { 37, 13, 93, 140, 1.05, }, + [5] = { 40, 14, 112, 168, 1.1, }, + [6] = { 42, 14, 126, 190, 1.16, }, + [7] = { 44, 15, 143, 214, 1.21, }, + [8] = { 46, 15, 160, 240, 1.27, }, + [9] = { 48, 16, 180, 270, 1.32, }, + [10] = { 50, 16, 202, 303, 1.35, }, + [11] = { 52, 16, 227, 340, 1.38, }, + [12] = { 54, 17, 254, 381, 1.4, }, + [13] = { 56, 17, 284, 426, 1.43, }, + [14] = { 58, 18, 317, 476, 1.46, }, + [15] = { 60, 18, 354, 532, 1.49, }, + [16] = { 62, 19, 395, 593, 1.51, }, + [17] = { 64, 19, 441, 661, 1.54, }, + [18] = { 66, 20, 491, 737, 1.57, }, + [19] = { 68, 20, 547, 820, 1.6, }, + [20] = { 70, 21, 608, 913, 1.65, }, + [21] = { 72, 21, 677, 1015, 1.71, }, + [22] = { 74, 22, 752, 1128, 1.76, }, + [23] = { 76, 22, 835, 1252, 1.82, }, + [24] = { 78, 23, 927, 1390, 1.87, }, + [25] = { 80, 23, 1028, 1542, 1.93, }, + [26] = { 82, 24, 1140, 1710, 1.98, }, + [27] = { 84, 24, 1264, 1896, 2.04, }, + [28] = { 86, 25, 1400, 2100, 2.09, }, + [29] = { 88, 25, 1550, 2326, 2.15, }, + [30] = { 90, 26, 1716, 2574, 2.2, }, + }, +} +skills["AssassinsMark"] = { + name = "Assassin's Mark", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("SelfCritMultiplier", "INC", 20, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_critical_strike_multiplier_-%" = -20 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"chance_to_grant_power_charge_on_death_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("SelfExtraCritChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"additional_chance_to_take_critical_strike_%" + [6] = mod("SelfLifeOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_killed" + [7] = mod("SelfManaOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_killed" + --[8] = "chance_to_grant_power_charge_on_death_%" + }, + levels = { + [1] = { 24, 24, 6, 0, 5, 16, 16, 21, }, + [2] = { 27, 26, 6.2, 4, 5, 16, 16, 21, }, + [3] = { 30, 27, 6.4, 8, 5, 17, 17, 22, }, + [4] = { 33, 29, 6.6, 12, 6, 17, 17, 22, }, + [5] = { 36, 30, 6.8, 16, 6, 18, 18, 23, }, + [6] = { 39, 32, 7, 20, 6, 18, 18, 23, }, + [7] = { 42, 34, 7.2, 24, 7, 19, 19, 24, }, + [8] = { 45, 35, 7.4, 28, 7, 19, 19, 24, }, + [9] = { 48, 37, 7.6, 32, 7, 20, 20, 25, }, + [10] = { 50, 38, 7.8, 36, 8, 20, 20, 25, }, + [11] = { 52, 39, 8, 40, 8, 21, 21, 26, }, + [12] = { 54, 40, 8.2, 44, 8, 21, 21, 26, }, + [13] = { 56, 42, 8.4, 48, 8, 22, 22, 27, }, + [14] = { 58, 43, 8.6, 52, 8, 22, 22, 27, }, + [15] = { 60, 44, 8.8, 56, 9, 23, 23, 28, }, + [16] = { 62, 45, 9, 60, 9, 23, 23, 28, }, + [17] = { 64, 46, 9.2, 64, 9, 24, 24, 29, }, + [18] = { 66, 47, 9.4, 68, 9, 24, 24, 29, }, + [19] = { 68, 48, 9.6, 72, 9, 25, 25, 30, }, + [20] = { 70, 50, 9.8, 76, 9, 25, 25, 30, }, + [21] = { 72, 51, 10, 80, 10, 26, 26, 31, }, + [22] = { 74, 52, 10.2, 84, 10, 26, 26, 31, }, + [23] = { 76, 53, 10.4, 88, 10, 27, 27, 32, }, + [24] = { 78, 54, 10.6, 92, 10, 27, 27, 32, }, + [25] = { 80, 56, 10.8, 96, 10, 28, 28, 33, }, + [26] = { 82, 57, 11, 100, 11, 28, 28, 33, }, + [27] = { 84, 58, 11.2, 104, 11, 29, 29, 34, }, + [28] = { 86, 59, 11.4, 108, 11, 29, 29, 34, }, + [29] = { 88, 60, 11.6, 112, 11, 30, 30, 35, }, + [30] = { 90, 61, 11.8, 116, 11, 30, 30, 35, }, + }, +} +skills["BallLightning"] = { + name = "Ball Lightning", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [11] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.2), + skill("critChance", 5), + --"active_skill_index" = 0 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 28, 14, 2, 32, }, + [2] = { 31, 15, 2, 38, }, + [3] = { 34, 16, 2, 45, }, + [4] = { 37, 17, 3, 53, }, + [5] = { 40, 18, 3, 62, }, + [6] = { 42, 19, 4, 69, }, + [7] = { 44, 20, 4, 76, }, + [8] = { 46, 21, 4, 84, }, + [9] = { 48, 22, 5, 93, }, + [10] = { 50, 23, 5, 103, }, + [11] = { 52, 24, 6, 113, }, + [12] = { 54, 25, 7, 124, }, + [13] = { 56, 25, 7, 137, }, + [14] = { 58, 25, 8, 150, }, + [15] = { 60, 26, 9, 165, }, + [16] = { 62, 26, 10, 181, }, + [17] = { 64, 26, 10, 199, }, + [18] = { 66, 26, 11, 217, }, + [19] = { 68, 27, 13, 238, }, + [20] = { 70, 27, 14, 260, }, + [21] = { 72, 28, 15, 285, }, + [22] = { 74, 28, 16, 311, }, + [23] = { 76, 29, 18, 340, }, + [24] = { 78, 29, 20, 371, }, + [25] = { 80, 30, 21, 404, }, + [26] = { 82, 30, 23, 441, }, + [27] = { 84, 30, 25, 480, }, + [28] = { 86, 30, 28, 523, }, + [29] = { 88, 31, 30, 570, }, + [30] = { 90, 31, 33, 620, }, + }, +} +skills["Blight"] = { + name = "Blight", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + chaos = true, + area = true, + channelling = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + area = true, + chaos = true, + }, + skillTypes = { [2] = true, [50] = true, [11] = true, [18] = true, [58] = true, [12] = true, [40] = true, [59] = true, [52] = true, }, + baseMods = { + skill("castTime", 0.3), + skill("duration", 2.5), --"base_skill_effect_duration" = 2500 + --"base_secondary_skill_effect_duration" = 800 + mod("MovementSpeed", "INC", -80, 0, 0, nil), --"base_movement_velocity_+%" = -80 + --"display_max_blight_stacks" = 20 + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + --[4] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 2, 1.7333333333333, 0, }, + [2] = { 2, 2, 1.9666666666667, 0, }, + [3] = { 4, 2, 2.4666666666667, 0, }, + [4] = { 7, 2, 3.3666666666667, 0, }, + [5] = { 11, 2, 4.8333333333333, 1, }, + [6] = { 16, 2, 7.2166666666667, 1, }, + [7] = { 20, 2, 9.6833333333333, 1, }, + [8] = { 24, 2, 12.75, 1, }, + [9] = { 28, 2, 16.566666666667, 1, }, + [10] = { 32, 2, 21.266666666667, 2, }, + [11] = { 36, 2, 27.05, 2, }, + [12] = { 40, 3, 34.133333333333, 2, }, + [13] = { 44, 3, 42.816666666667, 2, }, + [14] = { 48, 3, 53.4, 2, }, + [15] = { 52, 3, 66.283333333333, 3, }, + [16] = { 56, 3, 81.916666666667, 3, }, + [17] = { 60, 3, 100.88333333333, 3, }, + [18] = { 64, 4, 123.83333333333, 3, }, + [19] = { 67, 4, 144.11666666667, 3, }, + [20] = { 70, 4, 167.48333333333, 4, }, + [21] = { 72, 4, 184.96666666667, 4, }, + [22] = { 74, 4, 204.16666666667, 4, }, + [23] = { 76, 4, 225.23333333333, 4, }, + [24] = { 78, 5, 248.33333333333, 4, }, + [25] = { 80, 5, 273.66666666667, 5, }, + [26] = { 82, 5, 301.41666666667, 5, }, + [27] = { 84, 5, 331.83333333333, 5, }, + [28] = { 86, 5, 365.16666666667, 5, }, + [29] = { 88, 5, 401.66666666667, 5, }, + [30] = { 90, 5, 441.61666666667, 6, }, + }, +} +skills["BoneOffering"] = { + name = "Bone Offering", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"offering_skill_effect_duration_per_corpse" = 500 + --"base_deal_no_damage" = ? + skill("offering", true), + }, + qualityMods = { + mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("BlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"monster_base_block_%" + [4] = mod("SpellBlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_spell_block_%" + --[5] = "minion_recover_X_life_on_block" + }, + levels = { + [1] = { 12, 16, 25, 25, 11, }, + [2] = { 15, 17, 26, 25, 14, }, + [3] = { 19, 18, 26, 26, 20, }, + [4] = { 23, 19, 27, 26, 27, }, + [5] = { 27, 20, 27, 27, 38, }, + [6] = { 31, 21, 28, 27, 50, }, + [7] = { 35, 22, 28, 28, 66, }, + [8] = { 38, 23, 29, 28, 81, }, + [9] = { 41, 24, 29, 29, 99, }, + [10] = { 44, 25, 30, 29, 120, }, + [11] = { 47, 26, 30, 30, 146, }, + [12] = { 50, 27, 31, 30, 176, }, + [13] = { 53, 28, 31, 31, 212, }, + [14] = { 56, 29, 32, 31, 255, }, + [15] = { 59, 29, 32, 32, 306, }, + [16] = { 62, 30, 33, 32, 366, }, + [17] = { 64, 30, 33, 33, 414, }, + [18] = { 66, 31, 34, 33, 468, }, + [19] = { 68, 32, 34, 34, 528, }, + [20] = { 70, 33, 35, 34, 594, }, + [21] = { 72, 34, 35, 35, 644, }, + [22] = { 74, 34, 36, 35, 693, }, + [23] = { 76, 35, 36, 36, 743, }, + [24] = { 78, 36, 37, 36, 792, }, + [25] = { 80, 37, 37, 37, 842, }, + [26] = { 82, 38, 38, 37, 891, }, + [27] = { 84, 38, 38, 38, 941, }, + [28] = { 86, 39, 39, 38, 990, }, + [29] = { 88, 40, 39, 39, 1040, }, + [30] = { 90, 41, 40, 39, 1089, }, + }, +} +skills["Clarity"] = { + name = "Clarity", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_mana_regeneration_rate_per_minute" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 10, 34, 2.9333333333333, 0, }, + [2] = { 13, 48, 4.0333333333333, 3, }, + [3] = { 17, 61, 5.0833333333333, 6, }, + [4] = { 21, 76, 6.0833333333333, 9, }, + [5] = { 25, 89, 7.0166666666667, 12, }, + [6] = { 29, 102, 7.9166666666667, 15, }, + [7] = { 33, 115, 8.75, 18, }, + [8] = { 36, 129, 9.55, 21, }, + [9] = { 39, 141, 10.316666666667, 23, }, + [10] = { 42, 154, 11.05, 25, }, + [11] = { 45, 166, 11.733333333333, 27, }, + [12] = { 48, 178, 12.4, 29, }, + [13] = { 51, 190, 13.033333333333, 31, }, + [14] = { 54, 203, 13.65, 33, }, + [15] = { 57, 214, 14.25, 35, }, + [16] = { 60, 227, 14.85, 36, }, + [17] = { 63, 239, 15.433333333333, 37, }, + [18] = { 66, 251, 16.016666666667, 38, }, + [19] = { 68, 265, 16.6, 39, }, + [20] = { 70, 279, 17.183333333333, 40, }, + [21] = { 72, 293, 17.766666666667, 41, }, + [22] = { 74, 303, 18.366666666667, 42, }, + [23] = { 76, 313, 18.966666666667, 43, }, + [24] = { 78, 323, 19.566666666667, 44, }, + [25] = { 80, 333, 20.166666666667, 45, }, + [26] = { 82, 343, 20.766666666667, 46, }, + [27] = { 84, 353, 21.366666666667, 47, }, + [28] = { 86, 363, 21.983333333333, 48, }, + [29] = { 88, 373, 22.6, 49, }, + [30] = { 90, 383, 23.216666666667, 50, }, + }, +} +skills["VaalClarity"] = { + name = "Vaal Clarity", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + mod("ManaCost", "MORE", -100, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"no_mana_cost" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 10, 0, 8, }, + [2] = { 13, 3, 8.1, }, + [3] = { 17, 6, 8.2, }, + [4] = { 21, 9, 8.3, }, + [5] = { 25, 12, 8.4, }, + [6] = { 29, 15, 8.5, }, + [7] = { 33, 18, 8.6, }, + [8] = { 36, 21, 8.7, }, + [9] = { 39, 23, 8.8, }, + [10] = { 42, 25, 8.9, }, + [11] = { 45, 27, 9, }, + [12] = { 48, 29, 9.1, }, + [13] = { 51, 31, 9.2, }, + [14] = { 54, 33, 9.3, }, + [15] = { 57, 35, 9.4, }, + [16] = { 60, 36, 9.5, }, + [17] = { 63, 37, 9.6, }, + [18] = { 66, 38, 9.7, }, + [19] = { 68, 39, 9.8, }, + [20] = { 70, 40, 9.9, }, + [21] = { 72, 41, 10, }, + [22] = { 74, 42, 10.1, }, + [23] = { 76, 43, 10.2, }, + [24] = { 78, 44, 10.3, }, + [25] = { 80, 45, 10.4, }, + [26] = { 82, 46, 10.5, }, + [27] = { 84, 47, 10.6, }, + [28] = { 86, 48, 10.7, }, + [29] = { 88, 49, 10.8, }, + [30] = { 90, 50, 10.9, }, + }, +} +skills["ColdSnap"] = { + name = "Cold Snap", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 1.2), + skill("critChance", 5), + skill("cooldown", 4), + mod("EnemyFreezeChance", "BASE", 30), --"base_chance_to_freeze_%" = 30 + mod("EnemyFreezeDuration", "INC", 30), --"freeze_duration_+%" = 30 + mod("EnemyChillDuration", "INC", 110), --"chill_duration_+%" = 110 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 4, 11, 9, 13, 0, }, + [2] = { 6, 12, 11, 16, 0, }, + [3] = { 9, 13, 14, 21, 0, }, + [4] = { 12, 14, 18, 27, 1, }, + [5] = { 16, 15, 25, 37, 1, }, + [6] = { 20, 16, 32, 49, 1, }, + [7] = { 24, 17, 42, 63, 1, }, + [8] = { 28, 18, 54, 81, 2, }, + [9] = { 32, 19, 68, 102, 2, }, + [10] = { 36, 20, 85, 128, 2, }, + [11] = { 40, 21, 106, 159, 2, }, + [12] = { 44, 22, 131, 196, 3, }, + [13] = { 48, 23, 160, 240, 3, }, + [14] = { 52, 24, 196, 294, 3, }, + [15] = { 55, 25, 227, 341, 3, }, + [16] = { 58, 26, 263, 394, 4, }, + [17] = { 61, 26, 303, 455, 4, }, + [18] = { 64, 27, 350, 524, 4, }, + [19] = { 67, 27, 402, 603, 4, }, + [20] = { 70, 28, 462, 693, 5, }, + [21] = { 72, 28, 506, 759, 5, }, + [22] = { 74, 29, 554, 832, 5, }, + [23] = { 76, 29, 607, 910, 5, }, + [24] = { 78, 30, 664, 996, 6, }, + [25] = { 80, 30, 726, 1089, 6, }, + [26] = { 82, 30, 794, 1191, 6, }, + [27] = { 84, 30, 867, 1301, 6, }, + [28] = { 86, 31, 947, 1420, 7, }, + [29] = { 88, 31, 1033, 1550, 7, }, + [30] = { 90, 32, 1127, 1691, 7, }, + }, +} +skills["VaalColdSnap"] = { + name = "Vaal Cold Snap", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + cold = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [12] = true, [43] = true, [34] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 1.4), + skill("critChance", 5), + skill("duration", 10), --"base_skill_effect_duration" = 10000 + mod("EnemyFreezeChance", "BASE", 100), --"base_chance_to_freeze_%" = 100 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 11, 17, }, + [2] = { 6, 14, 21, }, + [3] = { 9, 18, 28, }, + [4] = { 12, 24, 35, }, + [5] = { 16, 32, 48, }, + [6] = { 20, 42, 63, }, + [7] = { 24, 55, 82, }, + [8] = { 28, 70, 105, }, + [9] = { 32, 88, 132, }, + [10] = { 36, 111, 166, }, + [11] = { 40, 137, 206, }, + [12] = { 44, 170, 255, }, + [13] = { 48, 208, 313, }, + [14] = { 52, 255, 382, }, + [15] = { 55, 295, 443, }, + [16] = { 58, 342, 512, }, + [17] = { 61, 394, 591, }, + [18] = { 64, 454, 682, }, + [19] = { 67, 523, 784, }, + [20] = { 70, 600, 901, }, + [21] = { 72, 658, 987, }, + [22] = { 74, 721, 1081, }, + [23] = { 76, 789, 1184, }, + [24] = { 78, 863, 1295, }, + [25] = { 80, 944, 1416, }, + [26] = { 82, 1032, 1548, }, + [27] = { 84, 1127, 1691, }, + [28] = { 86, 1231, 1846, }, + [29] = { 88, 1343, 2015, }, + [30] = { 90, 1466, 2199, }, + }, +} +skills["Conductivity"] = { + name = "Conductivity", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("SelfShockDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_shock_duration_-%" = -1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_lightning_damage_resistance_%" + [6] = mod("SelfShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -25, 10, }, + [2] = { 27, 26, 9.1, 4, -26, 10, }, + [3] = { 30, 27, 9.2, 8, -27, 10, }, + [4] = { 33, 29, 9.3, 12, -28, 10, }, + [5] = { 36, 30, 9.4, 16, -29, 10, }, + [6] = { 39, 32, 9.5, 20, -30, 11, }, + [7] = { 42, 34, 9.6, 24, -31, 11, }, + [8] = { 45, 35, 9.7, 28, -32, 11, }, + [9] = { 48, 37, 9.8, 32, -33, 11, }, + [10] = { 50, 38, 9.9, 36, -34, 11, }, + [11] = { 52, 39, 10, 40, -35, 12, }, + [12] = { 54, 40, 10.1, 44, -36, 12, }, + [13] = { 56, 42, 10.2, 48, -37, 12, }, + [14] = { 58, 43, 10.3, 52, -38, 12, }, + [15] = { 60, 44, 10.4, 56, -39, 12, }, + [16] = { 62, 45, 10.5, 60, -40, 13, }, + [17] = { 64, 46, 10.6, 64, -41, 13, }, + [18] = { 66, 47, 10.7, 68, -42, 13, }, + [19] = { 68, 48, 10.8, 72, -43, 13, }, + [20] = { 70, 50, 10.9, 76, -44, 14, }, + [21] = { 72, 51, 11, 80, -45, 14, }, + [22] = { 74, 52, 11.1, 84, -46, 14, }, + [23] = { 76, 53, 11.2, 88, -47, 15, }, + [24] = { 78, 54, 11.3, 92, -48, 15, }, + [25] = { 80, 56, 11.4, 96, -49, 15, }, + [26] = { 82, 57, 11.5, 100, -50, 16, }, + [27] = { 84, 58, 11.6, 104, -51, 16, }, + [28] = { 86, 59, 11.7, 108, -52, 16, }, + [29] = { 88, 60, 11.8, 112, -53, 17, }, + [30] = { 90, 61, 11.9, 116, -54, 17, }, + }, +} +skills["Contagion"] = { + name = "Contagion", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + chaos = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [40] = true, [50] = true, [26] = true, [36] = true, [19] = true, [52] = true, [59] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"is_area_damage" = ? + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + skill("debuff", true), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 4, 11, 3.1666666666667, }, + [2] = { 6, 12, 3.9, }, + [3] = { 9, 13, 5.15, }, + [4] = { 12, 14, 6.65, }, + [5] = { 16, 15, 9.0666666666667, }, + [6] = { 20, 16, 12.066666666667, }, + [7] = { 24, 17, 15.766666666667, }, + [8] = { 28, 18, 20.3, }, + [9] = { 32, 19, 25.866666666667, }, + [10] = { 36, 20, 32.65, }, + [11] = { 40, 21, 40.9, }, + [12] = { 44, 22, 50.9, }, + [13] = { 48, 23, 63, }, + [14] = { 52, 24, 77.583333333333, }, + [15] = { 55, 25, 90.466666666667, }, + [16] = { 58, 26, 105.25, }, + [17] = { 61, 26, 122.2, }, + [18] = { 64, 27, 141.65, }, + [19] = { 67, 27, 163.9, }, + [20] = { 70, 28, 189.36666666667, }, + [21] = { 72, 28, 208.35, }, + [22] = { 74, 29, 229.08333333333, }, + [23] = { 76, 29, 251.75, }, + [24] = { 78, 30, 276.5, }, + [25] = { 80, 30, 303.51666666667, }, + [26] = { 82, 30, 333.03333333333, }, + [27] = { 84, 30, 365.21666666667, }, + [28] = { 86, 31, 400.35, }, + [29] = { 88, 31, 438.66666666667, }, + [30] = { 90, 32, 480.45, }, + }, +} +skills["ConversionTrap"] = { + name = "Conversion Trap", + gemTags = { + trap = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + unsupported = true, + color = 3, + baseFlags = { + }, + skillTypes = { [2] = true, [12] = true, [19] = true, [37] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 8), + --"is_trap" = 1 + --"base_trap_duration" = 16000 + --"base_skill_is_trapped" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 4, 16, 5.3, }, + [2] = { 6, 17, 5.5, }, + [3] = { 9, 18, 5.8, }, + [4] = { 12, 19, 6, }, + [5] = { 16, 20, 6.3, }, + [6] = { 20, 21, 6.5, }, + [7] = { 24, 22, 6.8, }, + [8] = { 28, 23, 7, }, + [9] = { 32, 25, 7.3, }, + [10] = { 36, 27, 7.5, }, + [11] = { 40, 29, 7.8, }, + [12] = { 44, 30, 8, }, + [13] = { 48, 31, 8.3, }, + [14] = { 52, 32, 8.5, }, + [15] = { 55, 33, 8.8, }, + [16] = { 58, 34, 9, }, + [17] = { 61, 34, 9.3, }, + [18] = { 64, 35, 9.5, }, + [19] = { 67, 36, 9.8, }, + [20] = { 70, 37, 10, }, + [21] = { 72, 38, 10.3, }, + [22] = { 74, 38, 10.5, }, + [23] = { 76, 39, 10.8, }, + [24] = { 78, 40, 11, }, + [25] = { 80, 41, 11.3, }, + [26] = { 82, 42, 11.5, }, + [27] = { 84, 42, 11.8, }, + [28] = { 86, 43, 12, }, + [29] = { 88, 44, 12.3, }, + [30] = { 90, 45, 12.5, }, + }, +} +skills["Convocation"] = { + name = "Convocation", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + unsupported = true, + color = 3, + baseFlags = { + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("cooldown", 8), + skill("duration", 2), --"base_skill_effect_duration" = 2000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" + }, + levels = { + [1] = { 24, 9, 19.25, }, + [2] = { 27, 9, 22.983333333333, }, + [3] = { 30, 9, 27.383333333333, }, + [4] = { 33, 9, 32.2, }, + [5] = { 36, 9, 37.6, }, + [6] = { 39, 9, 43.583333333333, }, + [7] = { 42, 10, 50.4, }, + [8] = { 45, 10, 57.816666666667, }, + [9] = { 48, 10, 66.033333333333, }, + [10] = { 50, 10, 70.85, }, + [11] = { 52, 10, 75.816666666667, }, + [12] = { 54, 10, 80.833333333333, }, + [13] = { 56, 11, 85.85, }, + [14] = { 58, 11, 90.883333333333, }, + [15] = { 60, 11, 95.833333333333, }, + [16] = { 62, 11, 100.55, }, + [17] = { 64, 12, 105.1, }, + [18] = { 66, 12, 109.26666666667, }, + [19] = { 68, 12, 112.95, }, + [20] = { 70, 13, 115.98333333333, }, + [21] = { 72, 13, 128.71666666667, }, + [22] = { 74, 13, 142.83333333333, }, + [23] = { 76, 14, 158.31666666667, }, + [24] = { 78, 14, 175.41666666667, }, + [25] = { 80, 14, 194.28333333333, }, + [26] = { 82, 14, 215.01666666667, }, + [27] = { 84, 14, 237.85, }, + [28] = { 86, 14, 262.93333333333, }, + [29] = { 88, 15, 290.61666666667, }, + [30] = { 90, 15, 321, }, + }, +} +skills["Discharge"] = { + name = "Discharge", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + cold = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + cold = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [36] = true, [45] = true, [33] = true, [34] = true, [35] = true, [60] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 1.5), + skill("critChance", 7), + --"skill_override_pvp_scaling_time_ms" = 1400 + mod("Damage", "MORE", -35, ModFlag.Spell, 0, { type = "Condition", var = "SkillIsTriggered" }), --"triggered_discharge_damage_+%_final" = -35 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_minimum_base_lightning_damage_per_power_charge" + [4] = skill("LightningMax", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_maximum_base_lightning_damage_per_power_charge" + [5] = skill("FireMin", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_minimum_base_fire_damage_per_endurance_charge" + [6] = skill("FireMax", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_maximum_base_fire_damage_per_endurance_charge" + [7] = skill("ColdMin", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_minimum_base_cold_damage_per_frenzy_charge" + [8] = skill("ColdMax", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_maximum_base_cold_damage_per_frenzy_charge" + }, + levels = { + [1] = { 28, 24, 4, 77, 29, 43, 24, 36, }, + [2] = { 31, 26, 5, 92, 34, 51, 28, 42, }, + [3] = { 34, 27, 6, 108, 40, 60, 33, 49, }, + [4] = { 37, 29, 7, 126, 47, 71, 39, 58, }, + [5] = { 40, 31, 8, 147, 55, 83, 45, 68, }, + [6] = { 42, 32, 9, 163, 61, 91, 50, 75, }, + [7] = { 44, 33, 9, 180, 67, 101, 55, 82, }, + [8] = { 46, 34, 10, 198, 74, 111, 61, 91, }, + [9] = { 48, 35, 11, 218, 82, 122, 67, 100, }, + [10] = { 50, 36, 13, 240, 90, 135, 73, 110, }, + [11] = { 52, 37, 14, 263, 99, 148, 81, 121, }, + [12] = { 54, 38, 15, 289, 108, 162, 88, 133, }, + [13] = { 56, 39, 17, 317, 119, 178, 97, 146, }, + [14] = { 58, 40, 18, 347, 130, 195, 106, 159, }, + [15] = { 60, 41, 20, 380, 142, 213, 116, 174, }, + [16] = { 62, 42, 22, 415, 155, 233, 127, 191, }, + [17] = { 64, 44, 24, 454, 170, 255, 139, 208, }, + [18] = { 66, 45, 26, 495, 185, 278, 152, 227, }, + [19] = { 68, 46, 28, 540, 202, 303, 165, 248, }, + [20] = { 70, 47, 31, 589, 220, 331, 180, 271, }, + [21] = { 72, 48, 34, 642, 240, 360, 197, 295, }, + [22] = { 74, 49, 37, 699, 262, 392, 214, 321, }, + [23] = { 76, 50, 40, 761, 285, 427, 233, 349, }, + [24] = { 78, 51, 44, 828, 310, 465, 253, 380, }, + [25] = { 80, 52, 47, 900, 337, 505, 276, 413, }, + [26] = { 82, 53, 51, 978, 366, 549, 299, 449, }, + [27] = { 84, 54, 56, 1062, 397, 596, 325, 488, }, + [28] = { 86, 55, 61, 1153, 431, 647, 353, 529, }, + [29] = { 88, 57, 66, 1251, 468, 702, 383, 575, }, + [30] = { 90, 58, 71, 1357, 508, 762, 416, 623, }, + }, +} +skills["Discipline"] = { + name = "Discipline", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("EnergyShield", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 60, 0, }, + [2] = { 27, 70, 3, }, + [3] = { 30, 78, 6, }, + [4] = { 33, 89, 9, }, + [5] = { 36, 100, 12, }, + [6] = { 39, 111, 15, }, + [7] = { 42, 125, 18, }, + [8] = { 45, 139, 21, }, + [9] = { 48, 154, 23, }, + [10] = { 50, 165, 25, }, + [11] = { 52, 173, 27, }, + [12] = { 54, 187, 29, }, + [13] = { 56, 201, 31, }, + [14] = { 58, 213, 33, }, + [15] = { 60, 227, 35, }, + [16] = { 62, 239, 36, }, + [17] = { 64, 253, 37, }, + [18] = { 66, 269, 38, }, + [19] = { 68, 281, 39, }, + [20] = { 70, 303, 40, }, + [21] = { 72, 315, 41, }, + [22] = { 74, 330, 42, }, + [23] = { 76, 340, 43, }, + [24] = { 78, 357, 44, }, + [25] = { 80, 374, 45, }, + [26] = { 82, 384, 46, }, + [27] = { 84, 406, 47, }, + [28] = { 86, 425, 48, }, + [29] = { 88, 450, 49, }, + [30] = { 90, 455, 50, }, + }, +} +skills["VaalDiscipline"] = { + name = "Vaal Discipline", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + mod("EnergyShield", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" = 0 + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"energy_shield_recharge_not_delayed_by_damage" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 0, }, + [2] = { 27, 3, }, + [3] = { 30, 6, }, + [4] = { 33, 9, }, + [5] = { 36, 12, }, + [6] = { 39, 15, }, + [7] = { 42, 18, }, + [8] = { 45, 21, }, + [9] = { 48, 23, }, + [10] = { 50, 25, }, + [11] = { 52, 27, }, + [12] = { 54, 29, }, + [13] = { 56, 31, }, + [14] = { 58, 33, }, + [15] = { 60, 35, }, + [16] = { 62, 36, }, + [17] = { 64, 37, }, + [18] = { 66, 38, }, + [19] = { 68, 39, }, + [20] = { 70, 40, }, + [21] = { 72, 41, }, + [22] = { 74, 42, }, + [23] = { 76, 43, }, + [24] = { 78, 44, }, + [25] = { 80, 45, }, + [26] = { 82, 46, }, + [27] = { 84, 47, }, + [28] = { 86, 48, }, + [29] = { 88, 49, }, + [30] = { 90, 50, }, + }, +} +skills["ElementalWeakness"] = { + name = "Elemental Weakness", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("ElementalResist", "BASE", -0.25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" = -0.25 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -20, }, + [2] = { 27, 26, 9.1, 4, -21, }, + [3] = { 30, 27, 9.2, 8, -22, }, + [4] = { 33, 29, 9.3, 12, -23, }, + [5] = { 36, 30, 9.4, 16, -24, }, + [6] = { 39, 32, 9.5, 20, -25, }, + [7] = { 42, 34, 9.6, 24, -26, }, + [8] = { 45, 35, 9.7, 28, -27, }, + [9] = { 48, 37, 9.8, 32, -28, }, + [10] = { 50, 38, 9.9, 36, -29, }, + [11] = { 52, 39, 10, 40, -30, }, + [12] = { 54, 40, 10.1, 44, -31, }, + [13] = { 56, 42, 10.2, 48, -32, }, + [14] = { 58, 43, 10.3, 52, -33, }, + [15] = { 60, 44, 10.4, 56, -34, }, + [16] = { 62, 45, 10.5, 60, -35, }, + [17] = { 64, 46, 10.6, 64, -36, }, + [18] = { 66, 47, 10.7, 68, -37, }, + [19] = { 68, 48, 10.8, 72, -38, }, + [20] = { 70, 50, 10.9, 76, -39, }, + [21] = { 72, 51, 11, 80, -40, }, + [22] = { 74, 52, 11.1, 84, -41, }, + [23] = { 76, 53, 11.2, 88, -42, }, + [24] = { 78, 54, 11.3, 92, -43, }, + [25] = { 80, 56, 11.4, 96, -44, }, + [26] = { 82, 57, 11.5, 100, -45, }, + [27] = { 84, 58, 11.6, 104, -46, }, + [28] = { 86, 59, 11.7, 108, -47, }, + [29] = { 88, 60, 11.8, 112, -48, }, + [30] = { 90, 61, 11.9, 116, -49, }, + }, +} +skills["Enfeeble"] = { + name = "Enfeeble", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("CritChance", "INC", -25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -25 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("Accuracy", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -0.5 + mod("CritChance", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" + [6] = mod("Damage", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" + [7] = mod("CritMultiplier", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" + }, + levels = { + [1] = { 24, 24, 9, 0, -18, -21, -21, }, + [2] = { 27, 26, 9.1, 4, -19, -21, -21, }, + [3] = { 30, 27, 9.2, 8, -20, -22, -22, }, + [4] = { 33, 29, 9.3, 12, -21, -22, -22, }, + [5] = { 36, 30, 9.4, 16, -22, -23, -23, }, + [6] = { 39, 32, 9.5, 20, -23, -23, -23, }, + [7] = { 42, 34, 9.6, 24, -24, -24, -24, }, + [8] = { 45, 35, 9.7, 28, -25, -24, -24, }, + [9] = { 48, 37, 9.8, 32, -26, -25, -25, }, + [10] = { 50, 38, 9.9, 36, -27, -25, -25, }, + [11] = { 52, 39, 10, 40, -28, -26, -26, }, + [12] = { 54, 40, 10.1, 44, -29, -26, -26, }, + [13] = { 56, 42, 10.2, 48, -30, -27, -27, }, + [14] = { 58, 43, 10.3, 52, -31, -27, -27, }, + [15] = { 60, 44, 10.4, 56, -32, -28, -28, }, + [16] = { 62, 45, 10.5, 60, -33, -28, -28, }, + [17] = { 64, 46, 10.6, 64, -34, -29, -29, }, + [18] = { 66, 47, 10.7, 68, -35, -29, -29, }, + [19] = { 68, 48, 10.8, 72, -36, -30, -30, }, + [20] = { 70, 50, 10.9, 76, -37, -30, -30, }, + [21] = { 72, 51, 11, 80, -38, -31, -31, }, + [22] = { 74, 52, 11.1, 84, -39, -31, -31, }, + [23] = { 76, 53, 11.2, 88, -40, -32, -32, }, + [24] = { 78, 54, 11.3, 92, -41, -32, -32, }, + [25] = { 80, 56, 11.4, 96, -42, -33, -33, }, + [26] = { 82, 57, 11.5, 100, -43, -33, -33, }, + [27] = { 84, 58, 11.6, 104, -44, -34, -34, }, + [28] = { 86, 59, 11.7, 108, -45, -34, -34, }, + [29] = { 88, 60, 11.8, 112, -46, -35, -35, }, + [30] = { 90, 61, 11.9, 116, -47, -35, -35, }, + }, +} +skills["EssenceDrain"] = { + name = "Essence Drain", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + chaos = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [3] = true, [12] = true, [18] = true, [26] = true, [40] = true, [50] = true, [10] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"siphon_life_leech_from_damage_permyriad" = 50 + skill("duration", 3.8), --"base_skill_effect_duration" = 3800 + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + --"base_is_projectile" = ? + skill("debuff", true), + skill("showAverage", true), + }, + qualityMods = { + mod("ChaosDamage", "INC", 1), --"chaos_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + [4] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [5] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + }, + levels = { + [1] = { 12, 9, 21.483333333333, 6, 9, }, + [2] = { 15, 10, 27.566666666667, 8, 12, }, + [3] = { 19, 11, 37.6, 11, 16, }, + [4] = { 23, 12, 50.3, 14, 22, }, + [5] = { 27, 13, 66.266666666667, 19, 29, }, + [6] = { 31, 14, 86.283333333333, 25, 37, }, + [7] = { 35, 16, 111.26666666667, 32, 48, }, + [8] = { 38, 16, 133.93333333333, 39, 58, }, + [9] = { 41, 17, 160.58333333333, 46, 69, }, + [10] = { 44, 18, 191.85, 55, 83, }, + [11] = { 47, 19, 228.5, 66, 99, }, + [12] = { 50, 20, 271.4, 78, 117, }, + [13] = { 53, 21, 321.53333333333, 93, 139, }, + [14] = { 56, 22, 380.05, 109, 164, }, + [15] = { 59, 23, 448.3, 129, 194, }, + [16] = { 62, 24, 527.78333333333, 152, 228, }, + [17] = { 64, 24, 587.88333333333, 169, 254, }, + [18] = { 66, 25, 654.35, 188, 283, }, + [19] = { 68, 26, 727.81666666667, 210, 314, }, + [20] = { 70, 27, 809, 233, 349, }, + [21] = { 72, 28, 898.68333333333, 259, 388, }, + [22] = { 74, 29, 997.7, 287, 431, }, + [23] = { 76, 29, 1107, 319, 478, }, + [24] = { 78, 30, 1227.6, 354, 530, }, + [25] = { 80, 30, 1360.6333333333, 392, 588, }, + [26] = { 82, 31, 1507.3333333333, 434, 651, }, + [27] = { 84, 32, 1669.0666666667, 481, 721, }, + [28] = { 86, 33, 1847.3, 532, 798, }, + [29] = { 88, 33, 2043.6833333333, 589, 883, }, + [30] = { 90, 34, 2260, 651, 976, }, + }, +} +skills["FireNovaMine"] = { + name = "Fire Nova Mine", + gemTags = { + area = true, + mine = true, + intelligence = true, + active_skill = true, + spell = true, + fire = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + mine = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [36] = true, [11] = true, [33] = true, [26] = true, [41] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.4), + skill("damageEffectiveness", 0.3), + skill("critChance", 5), + --"base_mine_duration" = 16000 + skill("repeatCount", 3), --"base_spell_repeat_count" = 3 + --"base_skill_is_mined" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_remote_mine" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[5] = "fire_nova_damage_+%_per_repeat_final" + }, + levels = { + [1] = { 12, 12, 6, 9, 20, }, + [2] = { 15, 13, 7, 11, 20, }, + [3] = { 19, 15, 10, 14, 21, }, + [4] = { 23, 17, 12, 18, 21, }, + [5] = { 27, 18, 16, 23, 22, }, + [6] = { 31, 20, 20, 29, 22, }, + [7] = { 35, 22, 24, 36, 23, }, + [8] = { 38, 23, 28, 43, 23, }, + [9] = { 41, 24, 33, 50, 24, }, + [10] = { 44, 25, 39, 58, 24, }, + [11] = { 47, 27, 45, 67, 25, }, + [12] = { 50, 28, 52, 77, 25, }, + [13] = { 53, 29, 60, 89, 26, }, + [14] = { 56, 31, 68, 103, 26, }, + [15] = { 59, 32, 79, 118, 27, }, + [16] = { 62, 33, 90, 135, 27, }, + [17] = { 64, 34, 98, 148, 28, }, + [18] = { 66, 35, 107, 161, 28, }, + [19] = { 68, 36, 117, 176, 29, }, + [20] = { 70, 36, 128, 192, 29, }, + [21] = { 72, 37, 140, 210, 30, }, + [22] = { 74, 38, 152, 228, 30, }, + [23] = { 76, 39, 166, 249, 31, }, + [24] = { 78, 40, 181, 271, 31, }, + [25] = { 80, 41, 197, 295, 32, }, + [26] = { 82, 41, 214, 321, 32, }, + [27] = { 84, 42, 232, 349, 33, }, + [28] = { 86, 43, 253, 379, 33, }, + [29] = { 88, 44, 274, 412, 34, }, + [30] = { 90, 45, 298, 447, 34, }, + }, +} +skills["Fireball"] = { + name = "Fireball", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + parts = { + { + name = "Projectile", + area = false, + }, + { + name = "Explosion", + area = true, + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 0.5), --"base_chance_to_ignite_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = mod("EnemyIgniteChance", "BASE", nil), --"base_chance_to_ignite_%" + --[6] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 6, 7, 10, 20, 0, }, + [2] = { 2, 6, 8, 11, 21, 0, }, + [3] = { 4, 7, 10, 14, 22, 0, }, + [4] = { 7, 8, 13, 20, 23, 0, }, + [5] = { 11, 9, 19, 29, 24, 0, }, + [6] = { 16, 10, 29, 43, 25, 1, }, + [7] = { 20, 11, 39, 58, 26, 1, }, + [8] = { 24, 12, 52, 77, 27, 1, }, + [9] = { 28, 13, 67, 101, 28, 1, }, + [10] = { 32, 15, 87, 131, 29, 1, }, + [11] = { 36, 16, 112, 168, 30, 1, }, + [12] = { 40, 17, 142, 213, 31, 2, }, + [13] = { 44, 18, 180, 270, 32, 2, }, + [14] = { 48, 19, 226, 339, 33, 2, }, + [15] = { 52, 21, 283, 424, 34, 2, }, + [16] = { 56, 22, 352, 528, 35, 2, }, + [17] = { 60, 23, 437, 655, 36, 2, }, + [18] = { 64, 24, 540, 810, 37, 3, }, + [19] = { 67, 25, 632, 948, 38, 3, }, + [20] = { 70, 26, 739, 1109, 39, 3, }, + [21] = { 72, 27, 819, 1229, 40, 3, }, + [22] = { 74, 27, 908, 1362, 41, 3, }, + [23] = { 76, 28, 1005, 1508, 42, 3, }, + [24] = { 78, 28, 1113, 1669, 43, 4, }, + [25] = { 80, 29, 1231, 1847, 44, 4, }, + [26] = { 82, 30, 1361, 2042, 45, 4, }, + [27] = { 84, 30, 1504, 2257, 46, 4, }, + [28] = { 86, 31, 1662, 2493, 47, 4, }, + [29] = { 88, 31, 1835, 2752, 48, 4, }, + [30] = { 90, 32, 2025, 3038, 49, 5, }, + }, +} +skills["VaalFireballSpiralNova"] = { + name = "Vaal Fireball", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + fire = true, + }, + parts = { + { + name = "Projectile", + area = false, + }, + { + name = "Explosion", + area = true, + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + fire = true, + vaal = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 1.25), + skill("critChance", 6), + --"base_number_of_projectiles_in_spiral_nova" = 32 + --"projectile_spiral_nova_time_ms" = 2000 + --"projectile_spiral_nova_angle" = -720 + mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1.5), --"base_chance_to_ignite_%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 1, 8, 11, }, + [2] = { 2, 9, 13, }, + [3] = { 4, 11, 16, }, + [4] = { 7, 14, 22, }, + [5] = { 11, 20, 30, }, + [6] = { 16, 30, 45, }, + [7] = { 20, 39, 59, }, + [8] = { 24, 51, 76, }, + [9] = { 28, 65, 98, }, + [10] = { 32, 82, 124, }, + [11] = { 36, 103, 155, }, + [12] = { 40, 128, 192, }, + [13] = { 44, 158, 238, }, + [14] = { 48, 195, 292, }, + [15] = { 52, 238, 357, }, + [16] = { 56, 289, 434, }, + [17] = { 60, 351, 526, }, + [18] = { 64, 424, 636, }, + [19] = { 67, 488, 732, }, + [20] = { 70, 560, 841, }, + [21] = { 72, 614, 921, }, + [22] = { 74, 673, 1009, }, + [23] = { 76, 736, 1105, }, + [24] = { 78, 806, 1209, }, + [25] = { 80, 881, 1322, }, + [26] = { 82, 963, 1445, }, + [27] = { 84, 1052, 1578, }, + [28] = { 86, 1149, 1723, }, + [29] = { 88, 1254, 1881, }, + [30] = { 90, 1368, 2052, }, + }, +} +skills["Firestorm"] = { + name = "Firestorm", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.9), + skill("damageEffectiveness", 0.3), + skill("critChance", 6), + skill("duration", 2), --"base_skill_effect_duration" = 2000 + --"fire_storm_fireball_delay_ms" = 100 + --"is_area_damage" = 1 + --"skill_override_pvp_scaling_time_ms" = 450 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 12, 9, 4, 10, }, + [2] = { 15, 10, 9, 13, }, + [3] = { 19, 11, 11, 17, }, + [4] = { 23, 12, 15, 22, }, + [5] = { 27, 13, 19, 28, }, + [6] = { 31, 14, 23, 35, }, + [7] = { 35, 15, 29, 44, }, + [8] = { 38, 16, 35, 52, }, + [9] = { 41, 17, 40, 61, }, + [10] = { 44, 18, 47, 71, }, + [11] = { 47, 19, 55, 82, }, + [12] = { 50, 20, 64, 95, }, + [13] = { 53, 21, 74, 110, }, + [14] = { 56, 22, 85, 127, }, + [15] = { 59, 23, 98, 147, }, + [16] = { 62, 24, 112, 169, }, + [17] = { 64, 24, 123, 185, }, + [18] = { 66, 25, 135, 203, }, + [19] = { 68, 25, 148, 222, }, + [20] = { 70, 26, 162, 243, }, + [21] = { 72, 26, 177, 265, }, + [22] = { 74, 27, 193, 290, }, + [23] = { 76, 27, 211, 317, }, + [24] = { 78, 28, 231, 346, }, + [25] = { 80, 29, 251, 377, }, + [26] = { 82, 30, 274, 411, }, + [27] = { 84, 30, 299, 448, }, + [28] = { 86, 30, 326, 488, }, + [29] = { 88, 31, 355, 532, }, + [30] = { 90, 32, 386, 579, }, + }, +} +skills["FlameDash"] = { + name = "Flame Dash", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + movement = true, + duration = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + movement = true, + fire = true, + }, + skillTypes = { [2] = true, [38] = true, [10] = true, [40] = true, [12] = true, [18] = true, [36] = true, [33] = true, [17] = true, [19] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("critChance", 6), + skill("cooldown", 3), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"is_area_damage" = ? + --"firestorm_use_server_effects" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 10, 10, 6, 9, 10.9, }, + [2] = { 13, 11, 8, 11, 14.3, }, + [3] = { 17, 12, 11, 16, 20.016666666667, }, + [4] = { 21, 13, 15, 22, 27.366666666667, }, + [5] = { 25, 14, 20, 29, 36.816666666667, }, + [6] = { 29, 15, 26, 39, 48.866666666667, }, + [7] = { 33, 16, 34, 51, 64.15, }, + [8] = { 36, 17, 42, 63, 78.233333333333, }, + [9] = { 39, 18, 51, 76, 94.983333333333, }, + [10] = { 42, 20, 61, 92, 114.9, }, + [11] = { 45, 21, 74, 111, 138.5, }, + [12] = { 48, 22, 89, 133, 166.48333333333, }, + [13] = { 51, 24, 106, 160, 199.55, }, + [14] = { 54, 25, 127, 191, 238.61666666667, }, + [15] = { 57, 26, 152, 228, 284.7, }, + [16] = { 60, 27, 181, 271, 339, }, + [17] = { 63, 28, 215, 322, 402.9, }, + [18] = { 66, 29, 255, 382, 478.05, }, + [19] = { 68, 30, 285, 428, 535.3, }, + [20] = { 70, 30, 319, 479, 599.01666666667, }, + [21] = { 72, 31, 357, 536, 669.9, }, + [22] = { 74, 32, 399, 599, 748.71666666667, }, + [23] = { 76, 33, 446, 669, 836.35, }, + [24] = { 78, 34, 498, 747, 933.7, }, + [25] = { 80, 34, 556, 833, 1041.8666666667, }, + [26] = { 82, 35, 620, 930, 1161.9666666667, }, + [27] = { 84, 36, 691, 1036, 1295.3166666667, }, + [28] = { 86, 37, 770, 1155, 1443.3, }, + [29] = { 88, 38, 857, 1286, 1607.4833333333, }, + [30] = { 90, 38, 954, 1432, 1789.6, }, + }, +} +skills["FlameWhip"] = { + name = "Flame Surge", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [11] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("critChance", 6), + mod("Damage", "MORE", 50, bit.bor(ModFlag.Spell, ModFlag.Hit), 0, { type = "EnemyCondition", var = "Burning" }), --"flame_whip_damage_+%_final_vs_burning_enemies" = 50 + flag("CannotIgnite"), --"never_ignite" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 12, 5, 21, 31, }, + [2] = { 15, 6, 26, 39, }, + [3] = { 19, 6, 35, 52, }, + [4] = { 23, 7, 45, 67, }, + [5] = { 27, 7, 57, 86, }, + [6] = { 31, 8, 73, 109, }, + [7] = { 35, 9, 91, 137, }, + [8] = { 38, 9, 107, 161, }, + [9] = { 41, 10, 126, 189, }, + [10] = { 44, 10, 147, 221, }, + [11] = { 47, 11, 171, 257, }, + [12] = { 50, 12, 199, 299, }, + [13] = { 53, 12, 231, 346, }, + [14] = { 56, 13, 267, 401, }, + [15] = { 59, 13, 308, 462, }, + [16] = { 62, 13, 355, 533, }, + [17] = { 64, 13, 390, 585, }, + [18] = { 66, 14, 428, 642, }, + [19] = { 68, 15, 469, 703, }, + [20] = { 70, 15, 514, 771, }, + [21] = { 72, 15, 563, 844, }, + [22] = { 74, 15, 616, 923, }, + [23] = { 76, 16, 673, 1010, }, + [24] = { 78, 16, 736, 1104, }, + [25] = { 80, 17, 804, 1206, }, + [26] = { 82, 18, 878, 1317, }, + [27] = { 84, 18, 958, 1437, }, + [28] = { 86, 18, 1045, 1567, }, + [29] = { 88, 18, 1139, 1709, }, + [30] = { 90, 19, 1242, 1863, }, + }, +} +skills["Flameblast"] = { + name = "Flameblast", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + channelling = true, + }, + parts = { + { + name = "1 Stage", + }, + { + name = "10 Stages", + }, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [33] = true, [58] = true, }, + baseMods = { + skill("castTime", 0.2), + skill("damageEffectiveness", 0.5), + skill("critChance", 5), + --"charged_blast_spell_damage_+%_final_per_stack" = 110 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + mod("Damage", "MORE", 990, 0, 0, { type = "SkillPart", skillPart = 2 }), + skill("dpsMultiplier", 0.1, { type = "SkillPart", skillPart = 2 }), + skill("showAverage", false), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 28, 6, 32, 48, }, + [2] = { 31, 6, 38, 57, }, + [3] = { 34, 6, 45, 67, }, + [4] = { 37, 6, 52, 78, }, + [5] = { 40, 7, 61, 91, }, + [6] = { 42, 7, 67, 101, }, + [7] = { 44, 7, 74, 111, }, + [8] = { 46, 7, 82, 123, }, + [9] = { 48, 7, 90, 135, }, + [10] = { 50, 8, 99, 148, }, + [11] = { 52, 8, 109, 163, }, + [12] = { 54, 8, 119, 179, }, + [13] = { 56, 8, 130, 196, }, + [14] = { 58, 8, 143, 214, }, + [15] = { 60, 9, 156, 234, }, + [16] = { 62, 9, 171, 256, }, + [17] = { 64, 9, 186, 279, }, + [18] = { 66, 9, 203, 305, }, + [19] = { 68, 9, 221, 332, }, + [20] = { 70, 9, 241, 362, }, + [21] = { 72, 10, 263, 394, }, + [22] = { 74, 10, 286, 429, }, + [23] = { 76, 10, 311, 466, }, + [24] = { 78, 11, 338, 507, }, + [25] = { 80, 11, 367, 550, }, + [26] = { 82, 11, 398, 598, }, + [27] = { 84, 12, 432, 649, }, + [28] = { 86, 12, 469, 704, }, + [29] = { 88, 12, 509, 763, }, + [30] = { 90, 13, 551, 827, }, + }, +} +skills["VaalFlameblast"] = { + name = "Vaal Flameblast", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"charged_blast_spell_damage_+%_final_per_stack" = 110 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + mod("Damage", "MORE", 1100, ModFlag.Spell), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 28, 39, 58, }, + [2] = { 31, 46, 68, }, + [3] = { 34, 53, 80, }, + [4] = { 37, 62, 93, }, + [5] = { 40, 71, 107, }, + [6] = { 42, 78, 117, }, + [7] = { 44, 86, 129, }, + [8] = { 46, 94, 141, }, + [9] = { 48, 103, 154, }, + [10] = { 50, 113, 169, }, + [11] = { 52, 123, 184, }, + [12] = { 54, 134, 201, }, + [13] = { 56, 146, 219, }, + [14] = { 58, 159, 238, }, + [15] = { 60, 173, 259, }, + [16] = { 62, 188, 282, }, + [17] = { 64, 204, 306, }, + [18] = { 66, 221, 332, }, + [19] = { 68, 240, 360, }, + [20] = { 70, 260, 390, }, + [21] = { 72, 281, 422, }, + [22] = { 74, 305, 457, }, + [23] = { 76, 329, 494, }, + [24] = { 78, 356, 534, }, + [25] = { 80, 385, 577, }, + [26] = { 82, 416, 623, }, + [27] = { 84, 449, 673, }, + [28] = { 86, 484, 726, }, + [29] = { 88, 522, 783, }, + [30] = { 90, 563, 844, }, + }, +} +skills["Flammability"] = { + name = "Flammability", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("SelfIgniteDuration", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_ignite_duration_-%" = -0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_fire_damage_resistance_%" + [6] = mod("SelfIgniteChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -25, 10, }, + [2] = { 27, 26, 9.1, 4, -26, 10, }, + [3] = { 30, 27, 9.2, 8, -27, 10, }, + [4] = { 33, 29, 9.3, 12, -28, 10, }, + [5] = { 36, 30, 9.4, 16, -29, 10, }, + [6] = { 39, 32, 9.5, 20, -30, 11, }, + [7] = { 42, 34, 9.6, 24, -31, 11, }, + [8] = { 45, 35, 9.7, 28, -32, 11, }, + [9] = { 48, 37, 9.8, 32, -33, 11, }, + [10] = { 50, 38, 9.9, 36, -34, 11, }, + [11] = { 52, 39, 10, 40, -35, 12, }, + [12] = { 54, 40, 10.1, 44, -36, 12, }, + [13] = { 56, 42, 10.2, 48, -37, 12, }, + [14] = { 58, 43, 10.3, 52, -38, 12, }, + [15] = { 60, 44, 10.4, 56, -39, 12, }, + [16] = { 62, 45, 10.5, 60, -40, 13, }, + [17] = { 64, 46, 10.6, 64, -41, 13, }, + [18] = { 66, 47, 10.7, 68, -42, 13, }, + [19] = { 68, 48, 10.8, 72, -43, 13, }, + [20] = { 70, 50, 10.9, 76, -44, 14, }, + [21] = { 72, 51, 11, 80, -45, 14, }, + [22] = { 74, 52, 11.1, 84, -46, 14, }, + [23] = { 76, 53, 11.2, 88, -47, 15, }, + [24] = { 78, 54, 11.3, 92, -48, 15, }, + [25] = { 80, 56, 11.4, 96, -49, 15, }, + [26] = { 82, 57, 11.5, 100, -50, 16, }, + [27] = { 84, 58, 11.6, 104, -51, 16, }, + [28] = { 86, 59, 11.7, 108, -52, 16, }, + [29] = { 88, 60, 11.8, 112, -53, 17, }, + [30] = { 90, 61, 11.9, 116, -54, 17, }, + }, +} +skills["FleshOffering"] = { + name = "Flesh Offering", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"offering_skill_effect_duration_per_corpse" = 500 + --"base_deal_no_damage" = ? + skill("offering", true), + }, + qualityMods = { + mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" + [5] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff" }), --"cast_speed_+%_from_haste_aura" + }, + levels = { + [1] = { 12, 16, 20, 20, 20, }, + [2] = { 15, 17, 21, 20, 21, }, + [3] = { 19, 18, 21, 21, 21, }, + [4] = { 23, 19, 22, 21, 22, }, + [5] = { 27, 20, 22, 22, 22, }, + [6] = { 31, 21, 23, 22, 23, }, + [7] = { 35, 22, 23, 23, 23, }, + [8] = { 38, 23, 24, 23, 24, }, + [9] = { 41, 24, 24, 24, 24, }, + [10] = { 44, 25, 25, 24, 25, }, + [11] = { 47, 26, 25, 25, 25, }, + [12] = { 50, 27, 26, 25, 26, }, + [13] = { 53, 28, 26, 26, 26, }, + [14] = { 56, 29, 27, 26, 27, }, + [15] = { 59, 29, 27, 27, 27, }, + [16] = { 62, 30, 28, 27, 28, }, + [17] = { 64, 30, 28, 28, 28, }, + [18] = { 66, 31, 29, 28, 29, }, + [19] = { 68, 32, 29, 29, 29, }, + [20] = { 70, 33, 30, 29, 30, }, + [21] = { 72, 34, 30, 30, 30, }, + [22] = { 74, 34, 31, 30, 31, }, + [23] = { 76, 35, 31, 31, 31, }, + [24] = { 78, 36, 32, 31, 32, }, + [25] = { 80, 37, 32, 32, 32, }, + [26] = { 82, 38, 33, 32, 33, }, + [27] = { 84, 38, 33, 33, 33, }, + [28] = { 86, 39, 34, 33, 34, }, + [29] = { 88, 40, 34, 34, 34, }, + [30] = { 90, 41, 35, 34, 35, }, + }, +} +skills["FreezingPulse"] = { + name = "Freezing Pulse", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + cold = true, + }, + setupFunc = function(env, output) + env.modDB:NewMod("Damage", "MORE", -100, "Skill:Freezing Pulse", ModFlag.Spell, { type = "DistanceRamp", ramp = {{0,0},{60*output.ProjectileSpeedMod,1}} }) + env.modDB:NewMod("EnemyFreezeChance", "BASE", 25, "Skill:Freezing Pulse", { type = "DistanceRamp", ramp = {{0,1},{15*output.ProjectileSpeedMod,0}} }) + end, + color = 3, + baseFlags = { + spell = true, + projectile = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 1.25), + skill("critChance", 6), + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" + }, + levels = { + [1] = { 1, 4, 7, 11, 0, }, + [2] = { 2, 5, 8, 13, 1, }, + [3] = { 4, 6, 11, 16, 2, }, + [4] = { 7, 7, 15, 23, 3, }, + [5] = { 11, 8, 22, 33, 4, }, + [6] = { 16, 9, 32, 49, 5, }, + [7] = { 20, 10, 43, 65, 6, }, + [8] = { 24, 11, 57, 85, 7, }, + [9] = { 28, 12, 73, 110, 8, }, + [10] = { 32, 13, 93, 140, 9, }, + [11] = { 36, 14, 118, 176, 10, }, + [12] = { 40, 14, 148, 221, 11, }, + [13] = { 44, 15, 184, 276, 12, }, + [14] = { 48, 16, 228, 342, 13, }, + [15] = { 52, 17, 281, 421, 14, }, + [16] = { 56, 18, 345, 517, 15, }, + [17] = { 60, 18, 422, 633, 16, }, + [18] = { 64, 18, 515, 772, 17, }, + [19] = { 67, 18, 596, 894, 18, }, + [20] = { 70, 18, 689, 1034, 19, }, + [21] = { 72, 18, 759, 1138, 20, }, + [22] = { 74, 19, 835, 1252, 21, }, + [23] = { 76, 19, 918, 1377, 22, }, + [24] = { 78, 19, 1009, 1513, 23, }, + [25] = { 80, 20, 1108, 1662, 24, }, + [26] = { 82, 20, 1216, 1824, 25, }, + [27] = { 84, 20, 1335, 2002, 26, }, + [28] = { 86, 21, 1464, 2196, 27, }, + [29] = { 88, 21, 1605, 2407, 28, }, + [30] = { 90, 21, 1759, 2638, 29, }, + }, +} +skills["FrostBomb"] = { + name = "Frost Bomb", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [34] = true, [10] = true, [26] = true, [18] = true, [17] = true, [19] = true, [36] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 1.3), + skill("critChance", 6), + skill("cooldown", 2.5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + --"base_secondary_skill_effect_duration" = 2000 + mod("ColdResist", "BASE", -20, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_cold_damage_resistance_%" = -20 + --"life_regeneration_rate_+%" = -75 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 6, 10, 14, }, + [2] = { 6, 7, 12, 18, }, + [3] = { 9, 8, 15, 23, }, + [4] = { 12, 9, 20, 30, }, + [5] = { 16, 10, 27, 40, }, + [6] = { 20, 11, 36, 54, }, + [7] = { 24, 12, 46, 70, }, + [8] = { 28, 13, 59, 89, }, + [9] = { 32, 13, 75, 113, }, + [10] = { 36, 14, 94, 142, }, + [11] = { 40, 14, 118, 176, }, + [12] = { 44, 15, 145, 218, }, + [13] = { 48, 16, 179, 268, }, + [14] = { 52, 16, 219, 329, }, + [15] = { 55, 17, 254, 382, }, + [16] = { 58, 18, 295, 442, }, + [17] = { 61, 18, 341, 511, }, + [18] = { 64, 19, 393, 590, }, + [19] = { 67, 19, 453, 679, }, + [20] = { 70, 19, 521, 781, }, + [21] = { 72, 20, 572, 857, }, + [22] = { 74, 21, 627, 940, }, + [23] = { 76, 21, 687, 1030, }, + [24] = { 78, 21, 752, 1128, }, + [25] = { 80, 22, 823, 1235, }, + [26] = { 82, 23, 900, 1351, }, + [27] = { 84, 23, 985, 1477, }, + [28] = { 86, 23, 1076, 1614, }, + [29] = { 88, 24, 1176, 1764, }, + [30] = { 90, 24, 1284, 1926, }, + }, +} +skills["FrostWall"] = { + name = "Frost Wall", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("cooldown", 3), + --"wall_expand_delay_ms" = 150 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + --[4] = "wall_maximum_length" + [5] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [6] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 14, 3, 28, 8, 12, }, + [2] = { 6, 16, 3.1, 28, 9, 16, }, + [3] = { 9, 18, 3.2, 28, 14, 23, }, + [4] = { 12, 20, 3.3, 28, 18, 27, }, + [5] = { 16, 21, 3.4, 35, 25, 37, }, + [6] = { 20, 23, 3.5, 35, 32, 49, }, + [7] = { 24, 24, 3.6, 35, 42, 63, }, + [8] = { 28, 25, 3.7, 35, 54, 81, }, + [9] = { 32, 26, 3.8, 42, 68, 102, }, + [10] = { 36, 27, 3.9, 42, 85, 128, }, + [11] = { 40, 28, 4, 42, 106, 159, }, + [12] = { 44, 29, 4.1, 42, 131, 196, }, + [13] = { 48, 30, 4.2, 49, 160, 240, }, + [14] = { 52, 31, 4.3, 49, 196, 294, }, + [15] = { 55, 32, 4.4, 49, 227, 341, }, + [16] = { 58, 33, 4.5, 49, 263, 394, }, + [17] = { 61, 34, 4.6, 56, 303, 455, }, + [18] = { 64, 35, 4.7, 56, 350, 524, }, + [19] = { 67, 36, 4.8, 56, 402, 603, }, + [20] = { 70, 37, 4.9, 56, 462, 693, }, + [21] = { 72, 38, 5, 63, 506, 759, }, + [22] = { 74, 38, 5.1, 63, 554, 832, }, + [23] = { 76, 38, 5.2, 63, 607, 910, }, + [24] = { 78, 39, 5.3, 63, 664, 996, }, + [25] = { 80, 40, 5.4, 70, 726, 1089, }, + [26] = { 82, 40, 5.5, 70, 794, 1191, }, + [27] = { 84, 41, 5.6, 70, 867, 1301, }, + [28] = { 86, 42, 5.7, 70, 947, 1420, }, + [29] = { 88, 42, 5.8, 77, 1033, 1550, }, + [30] = { 90, 42, 5.9, 77, 1127, 1691, }, + }, +} +skills["Frostbite"] = { + name = "Frostbite", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("SelfFreezeDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_freeze_duration_-%" = -1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_cold_damage_resistance_%" + [6] = mod("SelfFreezeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -25, 10, }, + [2] = { 27, 26, 9.1, 4, -26, 10, }, + [3] = { 30, 27, 9.2, 8, -27, 10, }, + [4] = { 33, 29, 9.3, 12, -28, 10, }, + [5] = { 36, 30, 9.4, 16, -29, 10, }, + [6] = { 39, 32, 9.5, 20, -30, 11, }, + [7] = { 42, 34, 9.6, 24, -31, 11, }, + [8] = { 45, 35, 9.7, 28, -32, 11, }, + [9] = { 48, 37, 9.8, 32, -33, 11, }, + [10] = { 50, 38, 9.9, 36, -34, 11, }, + [11] = { 52, 39, 10, 40, -35, 12, }, + [12] = { 54, 40, 10.1, 44, -36, 12, }, + [13] = { 56, 42, 10.2, 48, -37, 12, }, + [14] = { 58, 43, 10.3, 52, -38, 12, }, + [15] = { 60, 44, 10.4, 56, -39, 12, }, + [16] = { 62, 45, 10.5, 60, -40, 13, }, + [17] = { 64, 46, 10.6, 64, -41, 13, }, + [18] = { 66, 47, 10.7, 68, -42, 13, }, + [19] = { 68, 48, 10.8, 72, -43, 13, }, + [20] = { 70, 50, 10.9, 76, -44, 14, }, + [21] = { 72, 51, 11, 80, -45, 14, }, + [22] = { 74, 52, 11.1, 84, -46, 14, }, + [23] = { 76, 53, 11.2, 88, -47, 15, }, + [24] = { 78, 54, 11.3, 92, -48, 15, }, + [25] = { 80, 56, 11.4, 96, -49, 15, }, + [26] = { 82, 57, 11.5, 100, -50, 16, }, + [27] = { 84, 58, 11.6, 104, -51, 16, }, + [28] = { 86, 59, 11.7, 108, -52, 16, }, + [29] = { 88, 60, 11.8, 112, -53, 17, }, + [30] = { 90, 61, 11.9, 116, -54, 17, }, + }, +} +skills["FrostBolt"] = { + name = "Frostbolt", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("critChance", 5), + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 1, 6, 6, 10, }, + [2] = { 2, 6, 7, 11, }, + [3] = { 4, 7, 9, 14, }, + [4] = { 7, 8, 13, 19, }, + [5] = { 11, 9, 18, 27, }, + [6] = { 16, 10, 28, 42, }, + [7] = { 20, 11, 38, 57, }, + [8] = { 24, 12, 50, 75, }, + [9] = { 28, 13, 66, 99, }, + [10] = { 32, 14, 86, 128, }, + [11] = { 36, 14, 110, 165, }, + [12] = { 40, 15, 141, 211, }, + [13] = { 44, 16, 178, 268, }, + [14] = { 48, 16, 225, 338, }, + [15] = { 52, 17, 283, 424, }, + [16] = { 56, 18, 354, 530, }, + [17] = { 60, 18, 440, 661, }, + [18] = { 64, 19, 547, 820, }, + [19] = { 67, 19, 642, 963, }, + [20] = { 70, 20, 752, 1129, }, + [21] = { 72, 20, 836, 1254, }, + [22] = { 74, 21, 928, 1392, }, + [23] = { 76, 21, 1030, 1544, }, + [24] = { 78, 21, 1142, 1713, }, + [25] = { 80, 22, 1266, 1898, }, + [26] = { 82, 23, 1402, 2103, }, + [27] = { 84, 23, 1552, 2329, }, + [28] = { 86, 23, 1718, 2577, }, + [29] = { 88, 24, 1901, 2851, }, + [30] = { 90, 24, 2102, 3153, }, + }, +} +skills["GlacialCascade"] = { + name = "Glacial Cascade", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"upheaval_number_of_spikes" = 7 + --"is_area_damage" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + [5] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [6] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 28, 13, 12, 19, 23, 35, }, + [2] = { 31, 14, 15, 23, 28, 42, }, + [3] = { 34, 15, 18, 27, 33, 50, }, + [4] = { 37, 16, 21, 32, 39, 59, }, + [5] = { 40, 17, 25, 38, 46, 69, }, + [6] = { 42, 18, 27, 42, 51, 77, }, + [7] = { 44, 18, 31, 47, 57, 85, }, + [8] = { 46, 19, 34, 52, 63, 95, }, + [9] = { 48, 19, 38, 58, 70, 105, }, + [10] = { 50, 20, 42, 64, 77, 116, }, + [11] = { 52, 21, 46, 71, 85, 129, }, + [12] = { 54, 21, 51, 78, 94, 142, }, + [13] = { 56, 22, 56, 86, 104, 157, }, + [14] = { 58, 22, 62, 95, 115, 173, }, + [15] = { 60, 23, 68, 105, 127, 191, }, + [16] = { 62, 24, 75, 116, 139, 210, }, + [17] = { 64, 24, 83, 127, 153, 231, }, + [18] = { 66, 25, 91, 140, 169, 254, }, + [19] = { 68, 25, 100, 154, 185, 280, }, + [20] = { 70, 26, 110, 169, 203, 307, }, + [21] = { 72, 27, 120, 185, 223, 337, }, + [22] = { 74, 27, 132, 203, 245, 369, }, + [23] = { 76, 28, 145, 223, 268, 405, }, + [24] = { 78, 28, 158, 244, 294, 443, }, + [25] = { 80, 29, 174, 267, 322, 485, }, + [26] = { 82, 30, 190, 292, 352, 531, }, + [27] = { 84, 30, 208, 319, 385, 581, }, + [28] = { 86, 31, 227, 349, 421, 635, }, + [29] = { 88, 31, 248, 382, 460, 694, }, + [30] = { 90, 32, 271, 417, 502, 758, }, + }, +} +skills["HeraldOfThunder"] = { + name = "Herald of Thunder", + gemTags = { + intelligence = true, + active_skill = true, + cast = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + cast = true, + duration = true, + lightning = true, + }, + skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [12] = true, [35] = true, [27] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 25), + skill("damageEffectiveness", 1.2), + skill("cooldown", 1), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + flag("CannotShock"), --"never_shock" = ? + --"display_skill_deals_secondary_damage" = ? + --"skill_can_add_multiple_charges_per_action" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_thunder_lightning_damage_+%" = 0.75 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_lightning_damage" + [3] = mod("LightningMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_lightning_damage" + [4] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_lightning_damage" + [5] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_lightning_damage" + [6] = skill("LightningMin", nil), --"secondary_minimum_base_lightning_damage" + [7] = skill("LightningMax", nil), --"secondary_maximum_base_lightning_damage" + }, + levels = { + [1] = { 16, 2, 7, 2, 7, 1, 34, }, + [2] = { 20, 2, 9, 2, 9, 1, 47, }, + [3] = { 24, 3, 11, 3, 11, 1, 65, }, + [4] = { 28, 3, 14, 3, 14, 2, 87, }, + [5] = { 31, 4, 16, 4, 16, 2, 108, }, + [6] = { 34, 5, 18, 5, 18, 3, 135, }, + [7] = { 37, 5, 21, 5, 21, 3, 166, }, + [8] = { 40, 6, 24, 6, 24, 4, 203, }, + [9] = { 43, 7, 27, 7, 27, 5, 248, }, + [10] = { 46, 8, 31, 8, 31, 6, 301, }, + [11] = { 49, 9, 35, 9, 35, 8, 363, }, + [12] = { 52, 10, 39, 10, 39, 9, 436, }, + [13] = { 55, 11, 44, 11, 44, 11, 522, }, + [14] = { 58, 12, 49, 12, 49, 13, 623, }, + [15] = { 60, 13, 53, 13, 53, 15, 708, }, + [16] = { 62, 14, 57, 14, 57, 17, 803, }, + [17] = { 64, 15, 61, 15, 61, 19, 908, }, + [18] = { 66, 16, 66, 16, 66, 21, 1026, }, + [19] = { 68, 18, 71, 18, 71, 24, 1157, }, + [20] = { 70, 19, 76, 19, 76, 27, 1303, }, + [21] = { 72, 20, 81, 20, 81, 31, 1451, }, + [22] = { 74, 22, 87, 22, 87, 34, 1615, }, + [23] = { 76, 23, 94, 23, 94, 38, 1796, }, + [24] = { 78, 25, 100, 25, 100, 43, 1995, }, + [25] = { 80, 27, 107, 27, 107, 48, 2215, }, + [26] = { 82, 29, 115, 29, 115, 54, 2457, }, + [27] = { 84, 31, 123, 31, 123, 60, 2723, }, + [28] = { 86, 33, 131, 33, 131, 67, 3016, }, + [29] = { 88, 35, 140, 35, 140, 75, 3338, }, + [30] = { 90, 37, 150, 37, 150, 83, 3692, }, + }, +} +skills["IceNova"] = { + name = "Ice Nova", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 6), + --"skill_art_variation" = 0 + --"is_area_damage" = 1 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 12, 10, 15, 21, }, + [2] = { 15, 11, 17, 27, }, + [3] = { 19, 13, 24, 37, }, + [4] = { 23, 14, 31, 49, }, + [5] = { 27, 16, 41, 64, }, + [6] = { 31, 17, 53, 83, }, + [7] = { 35, 19, 68, 106, }, + [8] = { 38, 20, 81, 127, }, + [9] = { 41, 21, 96, 151, }, + [10] = { 44, 22, 115, 179, }, + [11] = { 47, 23, 136, 212, }, + [12] = { 50, 24, 160, 250, }, + [13] = { 53, 25, 188, 294, }, + [14] = { 56, 26, 221, 346, }, + [15] = { 59, 27, 259, 405, }, + [16] = { 62, 28, 304, 474, }, + [17] = { 64, 29, 337, 526, }, + [18] = { 66, 30, 373, 583, }, + [19] = { 68, 30, 413, 646, }, + [20] = { 70, 31, 458, 715, }, + [21] = { 72, 32, 506, 791, }, + [22] = { 74, 33, 560, 875, }, + [23] = { 76, 34, 619, 966, }, + [24] = { 78, 34, 683, 1067, }, + [25] = { 80, 34, 754, 1178, }, + [26] = { 82, 34, 832, 1300, }, + [27] = { 84, 35, 917, 1433, }, + [28] = { 86, 35, 1011, 1580, }, + [29] = { 88, 35, 1114, 1740, }, + [30] = { 90, 35, 1227, 1917, }, + }, +} +skills["VaalIceNova"] = { + name = "Vaal Ice Nova", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [34] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 6), + --"ice_nova_number_of_repeats" = 5 + --"ice_nova_radius_+%_per_repeat" = -20 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 12, 11, 17, }, + [2] = { 15, 14, 22, }, + [3] = { 19, 18, 29, }, + [4] = { 23, 24, 37, }, + [5] = { 27, 31, 48, }, + [6] = { 31, 39, 61, }, + [7] = { 35, 49, 76, }, + [8] = { 38, 57, 89, }, + [9] = { 41, 67, 105, }, + [10] = { 44, 78, 123, }, + [11] = { 47, 91, 143, }, + [12] = { 50, 106, 166, }, + [13] = { 53, 123, 193, }, + [14] = { 56, 143, 223, }, + [15] = { 59, 164, 257, }, + [16] = { 62, 189, 296, }, + [17] = { 64, 208, 325, }, + [18] = { 66, 228, 357, }, + [19] = { 68, 250, 391, }, + [20] = { 70, 274, 428, }, + [21] = { 72, 300, 469, }, + [22] = { 74, 328, 513, }, + [23] = { 76, 359, 561, }, + [24] = { 78, 393, 613, }, + [25] = { 80, 429, 670, }, + [26] = { 82, 468, 732, }, + [27] = { 84, 511, 799, }, + [28] = { 86, 558, 871, }, + [29] = { 88, 608, 950, }, + [30] = { 90, 663, 1035, }, + }, +} +skills["IceSpear"] = { + name = "Ice Spear", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + cold = true, + }, + parts = { + { + name = "First Form", + }, + { + name = "Second Form", + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 0.8), + skill("critChance", 7), + --"base_is_projectile" = 1 + mod("CritChance", "INC", 600, 0, 0, { type = "SkillPart", skillPart = 2 }), --"ice_spear_second_form_critical_strike_chance_+%" = 600 + mod("PierceChance", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = mod("EnemyChillDuration", "INC", nil), --"chill_duration_+%" + }, + levels = { + [1] = { 12, 9, 17, 26, 40, }, + [2] = { 15, 10, 21, 31, 42, }, + [3] = { 19, 11, 28, 42, 44, }, + [4] = { 23, 12, 36, 53, 46, }, + [5] = { 27, 13, 47, 70, 48, }, + [6] = { 31, 14, 61, 91, 50, }, + [7] = { 35, 16, 78, 117, 52, }, + [8] = { 38, 16, 94, 140, 54, }, + [9] = { 41, 17, 112, 168, 56, }, + [10] = { 44, 18, 133, 200, 58, }, + [11] = { 47, 19, 158, 237, 60, }, + [12] = { 50, 20, 187, 281, 62, }, + [13] = { 53, 21, 221, 332, 64, }, + [14] = { 56, 22, 261, 391, 66, }, + [15] = { 59, 23, 307, 460, 68, }, + [16] = { 62, 24, 360, 540, 70, }, + [17] = { 64, 24, 400, 600, 72, }, + [18] = { 66, 25, 445, 667, 74, }, + [19] = { 68, 26, 494, 741, 76, }, + [20] = { 70, 27, 548, 822, 78, }, + [21] = { 72, 28, 607, 911, 80, }, + [22] = { 74, 29, 673, 1009, 82, }, + [23] = { 76, 29, 745, 1118, 84, }, + [24] = { 78, 30, 825, 1237, 86, }, + [25] = { 80, 30, 912, 1369, 88, }, + [26] = { 82, 31, 1009, 1513, 90, }, + [27] = { 84, 32, 1115, 1672, 92, }, + [28] = { 86, 33, 1232, 1847, 94, }, + [29] = { 88, 33, 1360, 2040, 96, }, + [30] = { 90, 34, 1501, 2251, 98, }, + }, +} +skills["Incinerate"] = { + name = "Incinerate", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + fire = true, + channelling = true, + }, + parts = { + { + name = "Base damage", + }, + { + name = "Fully charged", + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [18] = true, [33] = true, [58] = true, }, + baseMods = { + skill("castTime", 0.2), + skill("damageEffectiveness", 0.3), + --"flamethrower_damage_+%_per_stage_final" = 50 + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + --"skill_can_add_multiple_charges_per_action" = ? + mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 12, 6, 6, 9, }, + [2] = { 15, 6, 7, 11, }, + [3] = { 19, 6, 10, 15, }, + [4] = { 23, 6, 13, 19, }, + [5] = { 27, 6, 16, 24, }, + [6] = { 31, 6, 20, 31, }, + [7] = { 35, 6, 25, 38, }, + [8] = { 38, 6, 30, 45, }, + [9] = { 41, 7, 35, 52, }, + [10] = { 44, 7, 41, 61, }, + [11] = { 47, 7, 47, 71, }, + [12] = { 50, 7, 54, 82, }, + [13] = { 53, 7, 63, 94, }, + [14] = { 56, 7, 72, 108, }, + [15] = { 59, 8, 83, 125, }, + [16] = { 62, 8, 95, 143, }, + [17] = { 64, 8, 104, 157, }, + [18] = { 66, 8, 114, 171, }, + [19] = { 68, 8, 125, 187, }, + [20] = { 70, 9, 136, 204, }, + [21] = { 72, 9, 149, 223, }, + [22] = { 74, 9, 162, 244, }, + [23] = { 76, 9, 177, 266, }, + [24] = { 78, 9, 193, 289, }, + [25] = { 80, 9, 210, 315, }, + [26] = { 82, 10, 229, 343, }, + [27] = { 84, 10, 249, 374, }, + [28] = { 86, 10, 271, 406, }, + [29] = { 88, 10, 295, 442, }, + [30] = { 90, 10, 320, 480, }, + }, +} +skills["ClusterBurst"] = { + name = "Kinetic Blast", + gemTags = { + intelligence = true, + active_skill = true, + attack = true, + area = true, + projectile = true, + }, + parts = { + { + name = "Projectile", + area = false, + }, + { + name = "Explosions", + area = true, + }, + }, + color = 3, + baseFlags = { + attack = true, + projectile = true, + area = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [11] = true, [17] = true, [19] = true, [22] = true, }, + weaponTypes = { + ["Wand"] = true, + }, + baseMods = { + skill("castTime", 1), + --"cluster_burst_spawn_amount" = 4 + mod("Damage", "MORE", -25, ModFlag.Area), --"active_skill_area_damage_+%_final" = -25 + --"base_is_projectile" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 28, 15, 20, 0, }, + [2] = { 31, 15, 21.4, 1, }, + [3] = { 34, 15, 22.8, 2, }, + [4] = { 37, 15, 24.2, 3, }, + [5] = { 40, 15, 25.6, 4, }, + [6] = { 42, 15, 27, 5, }, + [7] = { 44, 15, 28.4, 6, }, + [8] = { 46, 15, 29.8, 7, }, + [9] = { 48, 16, 31.2, 8, }, + [10] = { 50, 16, 32.6, 9, }, + [11] = { 52, 16, 34, 10, }, + [12] = { 54, 16, 35.4, 11, }, + [13] = { 56, 16, 36.8, 12, }, + [14] = { 58, 16, 38.2, 13, }, + [15] = { 60, 16, 39.6, 14, }, + [16] = { 62, 16, 41, 15, }, + [17] = { 64, 16, 42.4, 16, }, + [18] = { 66, 16, 43.8, 17, }, + [19] = { 68, 16, 45.2, 18, }, + [20] = { 70, 16, 46.6, 19, }, + [21] = { 72, 16, 48, 20, }, + [22] = { 74, 16, 49.4, 21, }, + [23] = { 76, 16, 50.8, 22, }, + [24] = { 78, 16, 52.2, 23, }, + [25] = { 80, 17, 53.6, 24, }, + [26] = { 82, 17, 55, 25, }, + [27] = { 84, 17, 56.4, 26, }, + [28] = { 86, 17, 57.8, 27, }, + [29] = { 88, 17, 59.2, 28, }, + [30] = { 90, 17, 60.6, 29, }, + }, +} +skills["LightningTendrils"] = { + name = "Lightning Tendrils", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.35), + skill("critChance", 6), + --"base_skill_number_of_additional_hits" = 3 + --"is_area_damage" = ? + skill("dpsMultiplier", 4), + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 6, 1, 3, 0, }, + [2] = { 2, 7, 1, 4, 0, }, + [3] = { 4, 8, 1, 5, 1, }, + [4] = { 7, 9, 1, 7, 1, }, + [5] = { 11, 10, 1, 10, 1, }, + [6] = { 16, 11, 1, 16, 2, }, + [7] = { 20, 12, 1, 21, 2, }, + [8] = { 24, 13, 1, 28, 2, }, + [9] = { 28, 14, 2, 38, 3, }, + [10] = { 32, 16, 3, 49, 3, }, + [11] = { 36, 18, 3, 64, 3, }, + [12] = { 40, 19, 4, 82, 4, }, + [13] = { 44, 20, 6, 105, 4, }, + [14] = { 48, 21, 7, 133, 4, }, + [15] = { 52, 22, 9, 168, 5, }, + [16] = { 56, 23, 11, 212, 5, }, + [17] = { 60, 24, 14, 265, 5, }, + [18] = { 64, 25, 17, 332, 6, }, + [19] = { 67, 26, 21, 392, 6, }, + [20] = { 70, 26, 24, 461, 6, }, + [21] = { 72, 27, 27, 514, 7, }, + [22] = { 74, 27, 30, 573, 7, }, + [23] = { 76, 28, 34, 638, 7, }, + [24] = { 78, 28, 37, 710, 8, }, + [25] = { 80, 29, 42, 790, 8, }, + [26] = { 82, 29, 46, 878, 8, }, + [27] = { 84, 30, 51, 975, 9, }, + [28] = { 86, 30, 57, 1083, 9, }, + [29] = { 88, 31, 63, 1202, 9, }, + [30] = { 90, 31, 70, 1334, 10, }, + }, +} +skills["LightningTrap"] = { + name = "Lightning Trap", + gemTags = { + projectile = true, + trap = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + trap = true, + projectile = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.9), + skill("critChance", 5), + skill("cooldown", 2), + --"base_trap_duration" = 16000 + mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 + --"projectiles_nova" = ? + --"is_trap" = ? + --"base_skill_is_trapped" = ? + --"base_is_projectile" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("trapCooldown", 2), + }, + qualityMods = { + mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 8, 3, 62, }, + [2] = { 15, 9, 4, 77, }, + [3] = { 19, 10, 5, 98, }, + [4] = { 23, 10, 7, 124, }, + [5] = { 27, 11, 8, 153, }, + [6] = { 31, 12, 10, 188, }, + [7] = { 35, 13, 12, 228, }, + [8] = { 38, 14, 14, 263, }, + [9] = { 41, 14, 16, 301, }, + [10] = { 44, 16, 18, 344, }, + [11] = { 47, 17, 21, 391, }, + [12] = { 50, 18, 23, 444, }, + [13] = { 53, 19, 26, 503, }, + [14] = { 56, 20, 30, 568, }, + [15] = { 59, 21, 34, 640, }, + [16] = { 62, 22, 38, 720, }, + [17] = { 64, 22, 41, 779, }, + [18] = { 66, 23, 44, 841, }, + [19] = { 68, 24, 48, 907, }, + [20] = { 70, 24, 52, 979, }, + [21] = { 72, 25, 56, 1055, }, + [22] = { 74, 26, 60, 1136, }, + [23] = { 76, 26, 64, 1223, }, + [24] = { 78, 27, 69, 1316, }, + [25] = { 80, 27, 74, 1415, }, + [26] = { 82, 28, 80, 1521, }, + [27] = { 84, 29, 86, 1634, }, + [28] = { 86, 30, 92, 1755, }, + [29] = { 88, 30, 99, 1884, }, + [30] = { 90, 30, 106, 2021, }, + }, +} +skills["VaalLightningTrap"] = { + name = "Vaal Lightning Trap", + gemTags = { + projectile = true, + trap = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + trap = true, + projectile = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.9), + skill("critChance", 5), + --"base_trap_duration" = 16000 + mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 + skill("duration", 4), --"base_skill_effect_duration" = 4000 + mod("PierceChance", "BASE", 100), --"pierce_%" = 100 + --"projectiles_nova" = ? + --"is_trap" = ? + --"base_skill_is_trapped" = ? + --"base_is_projectile" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"lightning_trap_projectiles_leave_shocking_ground" = ? + }, + qualityMods = { + mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 3, 62, }, + [2] = { 15, 4, 77, }, + [3] = { 19, 5, 98, }, + [4] = { 23, 7, 124, }, + [5] = { 27, 8, 153, }, + [6] = { 31, 10, 188, }, + [7] = { 35, 12, 228, }, + [8] = { 38, 14, 263, }, + [9] = { 41, 16, 301, }, + [10] = { 44, 18, 344, }, + [11] = { 47, 21, 391, }, + [12] = { 50, 23, 444, }, + [13] = { 53, 26, 503, }, + [14] = { 56, 30, 568, }, + [15] = { 59, 34, 640, }, + [16] = { 62, 38, 720, }, + [17] = { 64, 41, 779, }, + [18] = { 66, 44, 841, }, + [19] = { 68, 48, 907, }, + [20] = { 70, 52, 979, }, + [21] = { 72, 56, 1055, }, + [22] = { 74, 60, 1136, }, + [23] = { 76, 64, 1223, }, + [24] = { 78, 69, 1316, }, + [25] = { 80, 74, 1415, }, + [26] = { 82, 80, 1521, }, + [27] = { 84, 86, 1634, }, + [28] = { 86, 92, 1755, }, + [29] = { 88, 99, 1884, }, + [30] = { 90, 106, 2021, }, + }, +} +skills["LightningWarp"] = { + name = "Lightning Warp", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + movement = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + movement = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [38] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"is_area_damage" = 1 + --"skill_override_pvp_scaling_time_ms" = 1000 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" + }, + levels = { + [1] = { 10, 15, 1, 19, 0, }, + [2] = { 13, 16, 1, 24, -2, }, + [3] = { 17, 17, 2, 33, -4, }, + [4] = { 21, 18, 2, 44, -6, }, + [5] = { 25, 18, 3, 58, -8, }, + [6] = { 29, 20, 4, 75, -10, }, + [7] = { 33, 21, 5, 96, -12, }, + [8] = { 36, 22, 6, 115, -14, }, + [9] = { 39, 23, 7, 137, -16, }, + [10] = { 42, 24, 9, 162, -18, }, + [11] = { 45, 26, 10, 192, -20, }, + [12] = { 48, 26, 12, 226, -22, }, + [13] = { 51, 27, 14, 266, -24, }, + [14] = { 54, 28, 16, 312, -26, }, + [15] = { 57, 29, 19, 365, -28, }, + [16] = { 60, 30, 22, 426, -30, }, + [17] = { 63, 30, 26, 497, -32, }, + [18] = { 66, 31, 30, 579, -34, }, + [19] = { 68, 32, 34, 640, -36, }, + [20] = { 70, 33, 37, 707, -38, }, + [21] = { 72, 34, 41, 780, -40, }, + [22] = { 74, 34, 45, 861, -42, }, + [23] = { 76, 34, 50, 949, -44, }, + [24] = { 78, 34, 55, 1046, -46, }, + [25] = { 80, 35, 61, 1152, -48, }, + [26] = { 82, 35, 67, 1269, -50, }, + [27] = { 84, 36, 73, 1396, -52, }, + [28] = { 86, 37, 81, 1536, -54, }, + [29] = { 88, 37, 89, 1689, -56, }, + [30] = { 90, 37, 98, 1856, -58, }, + }, +} +skills["VaalLightningWarpInstant"] = { + name = "Vaal Lightning Warp", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.5), + skill("critChance", 5), + --"is_area_damage" = 1 + --"skill_override_pvp_scaling_time_ms" = 1000 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [4] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" + }, + levels = { + [1] = { 10, 1, 18, 0, }, + [2] = { 13, 1, 24, -2, }, + [3] = { 17, 2, 32, -4, }, + [4] = { 21, 2, 42, -6, }, + [5] = { 25, 3, 54, -8, }, + [6] = { 29, 4, 70, -10, }, + [7] = { 33, 5, 88, -12, }, + [8] = { 36, 5, 104, -14, }, + [9] = { 39, 6, 123, -16, }, + [10] = { 42, 8, 145, -18, }, + [11] = { 45, 9, 170, -20, }, + [12] = { 48, 10, 199, -22, }, + [13] = { 51, 12, 232, -24, }, + [14] = { 54, 14, 270, -26, }, + [15] = { 57, 17, 314, -28, }, + [16] = { 60, 19, 364, -30, }, + [17] = { 63, 22, 420, -32, }, + [18] = { 66, 26, 485, -34, }, + [19] = { 68, 28, 534, -36, }, + [20] = { 70, 31, 586, -38, }, + [21] = { 72, 34, 644, -40, }, + [22] = { 74, 37, 707, -42, }, + [23] = { 76, 41, 775, -44, }, + [24] = { 78, 45, 850, -46, }, + [25] = { 80, 49, 931, -48, }, + [26] = { 82, 54, 1019, -50, }, + [27] = { 84, 59, 1116, -52, }, + [28] = { 86, 64, 1221, -54, }, + [29] = { 88, 70, 1335, -56, }, + [30] = { 90, 77, 1459, -58, }, + }, +} +skills["MagmaOrb"] = { + name = "Magma Orb", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + chaining = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + chaining = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [19] = true, [18] = true, [36] = true, [33] = true, [3] = true, [26] = true, [23] = true, }, + baseMods = { + skill("castTime", 0.7), + skill("damageEffectiveness", 1.25), + skill("critChance", 5), + --"is_area_damage" = ? + --"base_is_projectile" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" + }, + levels = { + [1] = { 1, 5, 6, 9, 1, }, + [2] = { 2, 6, 7, 10, 1, }, + [3] = { 4, 6, 8, 12, 1, }, + [4] = { 7, 7, 11, 17, 1, }, + [5] = { 11, 7, 16, 24, 1, }, + [6] = { 16, 8, 25, 37, 1, }, + [7] = { 20, 9, 33, 50, 1, }, + [8] = { 24, 10, 44, 66, 1, }, + [9] = { 28, 11, 58, 87, 1, }, + [10] = { 32, 12, 75, 112, 2, }, + [11] = { 36, 13, 96, 144, 2, }, + [12] = { 40, 14, 122, 183, 2, }, + [13] = { 44, 15, 154, 232, 2, }, + [14] = { 48, 16, 194, 291, 2, }, + [15] = { 52, 18, 243, 365, 2, }, + [16] = { 56, 19, 303, 454, 2, }, + [17] = { 60, 20, 376, 564, 2, }, + [18] = { 64, 21, 466, 698, 2, }, + [19] = { 67, 21, 545, 818, 2, }, + [20] = { 70, 22, 637, 956, 2, }, + [21] = { 72, 23, 707, 1060, 3, }, + [22] = { 74, 23, 784, 1175, 3, }, + [23] = { 76, 24, 868, 1302, 3, }, + [24] = { 78, 24, 961, 1442, 3, }, + [25] = { 80, 25, 1063, 1595, 3, }, + [26] = { 82, 26, 1176, 1764, 3, }, + [27] = { 84, 26, 1300, 1950, 3, }, + [28] = { 86, 27, 1437, 2155, 3, }, + [29] = { 88, 27, 1587, 2380, 3, }, + [30] = { 90, 28, 1752, 2628, 3, }, + }, +} +skills["OrbOfStorms"] = { + name = "Orb of Storms", + gemTags = { + lightning = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + area = true, + chaining = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + chaining = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [35] = true, [12] = true, [11] = true, [23] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.2), + skill("critChance", 5), + skill("cooldown", 0.5), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + mod("ChainCount", "BASE", 0), --"number_of_additional_projectiles_in_chain" = 0 + --"storm_cloud_charged_damage_+%_final" = 0 + --"skill_can_add_multiple_charges_per_action" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + --[5] = "projectile_number_to_split" + }, + levels = { + [1] = { 4, 11, 1, 3, 2, }, + [2] = { 6, 12, 1, 3, 2, }, + [3] = { 9, 13, 1, 4, 2, }, + [4] = { 12, 14, 2, 6, 2, }, + [5] = { 16, 15, 3, 8, 2, }, + [6] = { 20, 16, 3, 10, 2, }, + [7] = { 24, 17, 4, 13, 2, }, + [8] = { 28, 18, 6, 17, 2, }, + [9] = { 32, 19, 7, 22, 3, }, + [10] = { 36, 20, 10, 29, 3, }, + [11] = { 40, 21, 12, 36, 3, }, + [12] = { 44, 22, 15, 45, 3, }, + [13] = { 48, 23, 19, 56, 3, }, + [14] = { 52, 24, 23, 70, 3, }, + [15] = { 55, 25, 27, 82, 3, }, + [16] = { 58, 26, 32, 96, 3, }, + [17] = { 61, 26, 37, 112, 4, }, + [18] = { 64, 27, 44, 131, 4, }, + [19] = { 67, 27, 51, 152, 4, }, + [20] = { 70, 28, 59, 177, 4, }, + [21] = { 72, 28, 65, 195, 4, }, + [22] = { 74, 29, 72, 215, 4, }, + [23] = { 76, 29, 79, 238, 4, }, + [24] = { 78, 30, 87, 262, 4, }, + [25] = { 80, 30, 96, 289, 5, }, + [26] = { 82, 30, 106, 318, 5, }, + [27] = { 84, 30, 117, 350, 5, }, + [28] = { 86, 31, 128, 385, 5, }, + [29] = { 88, 31, 141, 424, 5, }, + [30] = { 90, 32, 155, 466, 5, }, + }, +} +skills["PowerSiphon"] = { + name = "Power Siphon", + gemTags = { + intelligence = true, + active_skill = true, + attack = true, + projectile = true, + }, + color = 3, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Wand"] = true, + }, + baseMods = { + skill("castTime", 1), + --"kill_enemy_on_hit_if_under_10%_life" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 13, 30, }, + [2] = { 15, 13, 31.6, }, + [3] = { 19, 13, 33.2, }, + [4] = { 23, 13, 34.8, }, + [5] = { 27, 13, 36.4, }, + [6] = { 31, 13, 38, }, + [7] = { 35, 13, 39.6, }, + [8] = { 38, 14, 41.2, }, + [9] = { 41, 14, 42.8, }, + [10] = { 44, 14, 44.4, }, + [11] = { 47, 14, 46, }, + [12] = { 50, 14, 47.6, }, + [13] = { 53, 14, 49.2, }, + [14] = { 56, 14, 50.8, }, + [15] = { 59, 14, 52.4, }, + [16] = { 62, 14, 54, }, + [17] = { 64, 14, 55.6, }, + [18] = { 66, 14, 57.2, }, + [19] = { 68, 15, 58.8, }, + [20] = { 70, 15, 60.4, }, + [21] = { 72, 15, 62, }, + [22] = { 74, 15, 63.6, }, + [23] = { 76, 15, 65.2, }, + [24] = { 78, 15, 66.8, }, + [25] = { 80, 15, 68.4, }, + [26] = { 82, 16, 70, }, + [27] = { 84, 16, 71.6, }, + [28] = { 86, 16, 73.2, }, + [29] = { 88, 16, 74.8, }, + [30] = { 90, 16, 76.4, }, + }, +} +skills["VaalPowerSiphon"] = { + name = "Vaal Power Siphon", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + attack = true, + projectile = true, + }, + color = 3, + baseFlags = { + attack = true, + projectile = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [43] = true, }, + weaponTypes = { + ["Wand"] = true, + }, + baseMods = { + skill("castTime", 1), + --"power_siphon_fire_at_all_targets" = ? + --"skill_can_add_multiple_charges_per_action" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + --"kill_enemy_on_hit_if_under_10%_life" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 25, }, + [2] = { 15, 26.6, }, + [3] = { 19, 28.2, }, + [4] = { 23, 29.8, }, + [5] = { 27, 31.4, }, + [6] = { 31, 33, }, + [7] = { 35, 34.6, }, + [8] = { 38, 36.2, }, + [9] = { 41, 37.8, }, + [10] = { 44, 39.4, }, + [11] = { 47, 41, }, + [12] = { 50, 42.6, }, + [13] = { 53, 44.2, }, + [14] = { 56, 45.8, }, + [15] = { 59, 47.4, }, + [16] = { 62, 49, }, + [17] = { 64, 50.6, }, + [18] = { 66, 52.2, }, + [19] = { 68, 53.8, }, + [20] = { 70, 55.4, }, + [21] = { 72, 57, }, + [22] = { 74, 58.6, }, + [23] = { 76, 60.2, }, + [24] = { 78, 61.8, }, + [25] = { 80, 63.4, }, + [26] = { 82, 65, }, + [27] = { 84, 66.6, }, + [28] = { 86, 68.2, }, + [29] = { 88, 69.8, }, + [30] = { 90, 71.4, }, + }, +} +skills["Purity"] = { + name = "Purity of Elements", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + mod("FireResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" = 0 + mod("ColdResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" = 0 + mod("LightningResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" = 0 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_resist_all_elements_%" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 12, 0, }, + [2] = { 27, 13, 3, }, + [3] = { 30, 14, 6, }, + [4] = { 33, 15, 9, }, + [5] = { 36, 15, 12, }, + [6] = { 39, 16, 15, }, + [7] = { 42, 17, 18, }, + [8] = { 45, 18, 21, }, + [9] = { 48, 19, 23, }, + [10] = { 50, 20, 25, }, + [11] = { 52, 20, 27, }, + [12] = { 54, 21, 29, }, + [13] = { 56, 22, 31, }, + [14] = { 58, 23, 33, }, + [15] = { 60, 24, 35, }, + [16] = { 62, 25, 36, }, + [17] = { 64, 25, 37, }, + [18] = { 66, 26, 38, }, + [19] = { 68, 27, 39, }, + [20] = { 70, 27, 40, }, + [21] = { 72, 28, 41, }, + [22] = { 74, 29, 42, }, + [23] = { 76, 29, 43, }, + [24] = { 78, 30, 44, }, + [25] = { 80, 31, 45, }, + [26] = { 82, 31, 46, }, + [27] = { 84, 32, 47, }, + [28] = { 86, 33, 48, }, + [29] = { 88, 33, 49, }, + [30] = { 90, 34, 50, }, + }, +} +skills["LightningResistAura"] = { + name = "Purity of Lightning", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_lightning_damage_resistance_%" + [3] = mod("LightningResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 22, 0, 0, }, + [2] = { 27, 23, 0, 3, }, + [3] = { 30, 24, 0, 6, }, + [4] = { 33, 25, 0, 9, }, + [5] = { 36, 26, 1, 12, }, + [6] = { 39, 27, 1, 15, }, + [7] = { 42, 28, 1, 18, }, + [8] = { 45, 29, 1, 21, }, + [9] = { 48, 30, 1, 23, }, + [10] = { 50, 31, 1, 25, }, + [11] = { 52, 32, 2, 27, }, + [12] = { 54, 33, 2, 29, }, + [13] = { 56, 34, 2, 31, }, + [14] = { 58, 35, 2, 33, }, + [15] = { 60, 36, 2, 35, }, + [16] = { 62, 37, 2, 36, }, + [17] = { 64, 38, 3, 37, }, + [18] = { 66, 39, 3, 38, }, + [19] = { 68, 40, 3, 39, }, + [20] = { 70, 41, 4, 40, }, + [21] = { 72, 42, 4, 41, }, + [22] = { 74, 43, 4, 42, }, + [23] = { 76, 44, 5, 43, }, + [24] = { 78, 45, 5, 44, }, + [25] = { 80, 46, 5, 45, }, + [26] = { 82, 47, 5, 46, }, + [27] = { 84, 48, 5, 47, }, + [28] = { 86, 49, 5, 48, }, + [29] = { 88, 50, 5, 49, }, + [30] = { 90, 51, 5, 50, }, + }, +} +skills["RaiseSpectre"] = { + name = "Raise Spectre", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + }, + minionList = { + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + spectre = true, + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [2] = true, [10] = true, [11] = true, [3] = true, [23] = true, [12] = true, [30] = true, [37] = true, [41] = true, [40] = true, [58] = true, [32] = true, [48] = true, }, + baseMods = { + skill("castTime", 0.85), + mod("ActiveSpectreLimit", "BASE", 1), --"base_number_of_spectres_allowed" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "MORE", 55) }), --"active_skill_minion_movement_velocity_+%_final" = 55 + --"movement_velocity_cap" = -89 + --"damage_taken_+%_from_arrow_traps_final" = -90 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("ElementalResist", "BASE", 30) }), --"minion_elemental_resistance_%" = 30 + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 1) }), --"minion_movement_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", nil) }), --"active_skill_minion_damage_+%_final" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "MORE", nil) }), --"active_skill_minion_life_+%_final" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("EnergyShield", "MORE", nil) }), --"active_skill_minion_energy_shield_+%_final" + }, + levels = { + [1] = { 28, 21, -30, -20, -20, }, + [2] = { 31, 23, -25, -19, -19, }, + [3] = { 34, 24, -21, -18, -18, }, + [4] = { 37, 26, -17, -17, -17, }, + [5] = { 40, 27, -14, -16, -16, }, + [6] = { 42, 28, -11, -15, -15, }, + [7] = { 44, 29, -8, -14, -14, }, + [8] = { 46, 30, -6, -13, -13, }, + [9] = { 48, 31, -4, -12, -12, }, + [10] = { 50, 32, -2, -11, -11, }, + [11] = { 52, 33, 0, -10, -10, }, + [12] = { 54, 34, 1, -9, -9, }, + [13] = { 56, 35, 2, -8, -8, }, + [14] = { 58, 36, 3, -7, -7, }, + [15] = { 60, 37, 4, -6, -6, }, + [16] = { 62, 38, 5, -5, -5, }, + [17] = { 64, 39, 6, -4, -4, }, + [18] = { 66, 40, 7, -3, -3, }, + [19] = { 68, 41, 8, -2, -2, }, + [20] = { 70, 42, 10, 0, 0, }, + [21] = { 72, 43, 12, 2, 2, }, + [22] = { 74, 44, 14, 4, 4, }, + [23] = { 76, 44, 16, 6, 6, }, + [24] = { 78, 45, 18, 8, 8, }, + [25] = { 80, 46, 20, 10, 10, }, + [26] = { 82, 47, 22, 12, 12, }, + [27] = { 84, 48, 24, 14, 14, }, + [28] = { 86, 49, 26, 16, 16, }, + [29] = { 88, 50, 28, 18, 18, }, + [30] = { 90, 51, 30, 20, 20, }, + }, +} +skills["RaiseZombie"] = { + name = "Raise Zombie", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + }, + minionList = { + "RaisedZombie", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [11] = true, }, + baseMods = { + skill("castTime", 0.85), + mod("ActiveZombieLimit", "BASE", 3), --"base_number_of_zombies_allowed" = 3 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", 0) }), --"active_skill_minion_damage_+%_final" = 0 + --"display_minion_monster_type" = 1 + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 1) }), --"minion_movement_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 1, 10, 2, }, + [2] = { 2, 11, 3, }, + [3] = { 4, 12, 5, }, + [4] = { 7, 13, 8, }, + [5] = { 11, 14, 12, }, + [6] = { 16, 16, 16, }, + [7] = { 20, 18, 20, }, + [8] = { 24, 21, 24, }, + [9] = { 28, 24, 28, }, + [10] = { 32, 26, 32, }, + [11] = { 36, 28, 36, }, + [12] = { 40, 30, 40, }, + [13] = { 44, 31, 44, }, + [14] = { 48, 32, 48, }, + [15] = { 52, 33, 52, }, + [16] = { 56, 34, 56, }, + [17] = { 60, 35, 60, }, + [18] = { 64, 36, 64, }, + [19] = { 67, 37, 67, }, + [20] = { 70, 38, 70, }, + [21] = { 72, 38, 72, }, + [22] = { 74, 38, 74, }, + [23] = { 76, 38, 76, }, + [24] = { 78, 39, 78, }, + [25] = { 80, 40, 80, }, + [26] = { 82, 40, 82, }, + [27] = { 84, 41, 84, }, + [28] = { 86, 42, 86, }, + [29] = { 88, 42, 88, }, + [30] = { 90, 42, 90, }, + }, +} +skills["RighteousFire"] = { + name = "Righteous Fire", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + setupFunc = function(actor, output) + if actor.mainSkill.skillFlags.totem then + actor.mainSkill.skillData.FireDot = output.TotemLife * 0.5 + else + actor.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5 + end + end, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [29] = true, [36] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + --"base_righteous_fire_%_of_max_life_to_deal_to_nearby_per_minute" = 3000 + --"base_nonlethal_fire_damage_%_of_maximum_life_taken_per_minute" = 5400 + --"base_righteous_fire_%_of_max_energy_shield_to_deal_to_nearby_per_minute" = 3000 + --"base_nonlethal_fire_damage_%_of_maximum_energy_shield_taken_per_minute" = 4200 + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"righteous_fire_spell_damage_+%_final" + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 16, 40, 0, }, + [2] = { 20, 41, 0, }, + [3] = { 24, 42, 0, }, + [4] = { 28, 43, 1, }, + [5] = { 31, 44, 1, }, + [6] = { 34, 45, 1, }, + [7] = { 37, 46, 1, }, + [8] = { 40, 47, 2, }, + [9] = { 43, 48, 2, }, + [10] = { 46, 49, 2, }, + [11] = { 49, 50, 2, }, + [12] = { 52, 51, 3, }, + [13] = { 55, 52, 3, }, + [14] = { 58, 53, 3, }, + [15] = { 60, 54, 3, }, + [16] = { 62, 55, 4, }, + [17] = { 64, 56, 4, }, + [18] = { 66, 57, 4, }, + [19] = { 68, 58, 4, }, + [20] = { 70, 59, 5, }, + [21] = { 72, 60, 5, }, + [22] = { 74, 61, 5, }, + [23] = { 76, 62, 5, }, + [24] = { 78, 63, 6, }, + [25] = { 80, 64, 6, }, + [26] = { 82, 65, 6, }, + [27] = { 84, 66, 6, }, + [28] = { 86, 67, 7, }, + [29] = { 88, 68, 7, }, + [30] = { 90, 69, 7, }, + }, +} +skills["VaalRighteousFire"] = { + name = "Vaal Righteous Fire", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + fire = true, + }, + setupFunc = function(actor, output) + actor.mainSkill.skillData.FireMin = output.EnergyShield + output.Life - 1 + actor.mainSkill.skillData.FireMax = output.EnergyShield + output.Life - 1 + end, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + vaal = true, + }, + skillTypes = { [2] = true, [11] = true, [10] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + --"damage_cannot_be_reflected" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Spell, 0, nil), --"spell_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" + }, + levels = { + [1] = { 16, 20, }, + [2] = { 20, 21, }, + [3] = { 24, 22, }, + [4] = { 28, 23, }, + [5] = { 31, 24, }, + [6] = { 34, 25, }, + [7] = { 37, 26, }, + [8] = { 40, 27, }, + [9] = { 43, 28, }, + [10] = { 46, 29, }, + [11] = { 49, 30, }, + [12] = { 52, 31, }, + [13] = { 55, 32, }, + [14] = { 58, 33, }, + [15] = { 60, 34, }, + [16] = { 62, 35, }, + [17] = { 64, 36, }, + [18] = { 66, 37, }, + [19] = { 68, 38, }, + [20] = { 70, 39, }, + [21] = { 72, 40, }, + [22] = { 74, 41, }, + [23] = { 76, 42, }, + [24] = { 78, 43, }, + [25] = { 80, 44, }, + [26] = { 82, 45, }, + [27] = { 84, 46, }, + [28] = { 86, 47, }, + [29] = { 88, 48, }, + [30] = { 90, 49, }, + }, +} +skills["FireBeam"] = { + name = "Scorching Ray", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + fire = true, + duration = true, + channelling = true, + }, + parts = { + { + name = "1 Stage", + }, + { + name = "4 Stages", + }, + { + name = "8 Stages", + }, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [18] = true, [40] = true, [33] = true, [29] = true, [12] = true, [58] = true, [59] = true, [52] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"fire_beam_additional_stack_damage_+%_final" = -40 + --"display_max_fire_beam_stacks" = 8 + mod("FireResist", "BASE", -3, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"fire_beam_enemy_fire_resistance_%_per_stack" = -3 + --"fire_beam_enemy_fire_resistance_%_maximum" = -24 + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + skill("stackCount", 4, { type = "SkillPart", skillPart = 2 }), + skill("stackCount", 8, { type = "SkillPart", skillPart = 3 }), + mod("Damage", "MORE", 180, 0, 0, { type = "SkillPart", skillPart = 2 }), + mod("Damage", "MORE", 420, 0, 0, { type = "SkillPart", skillPart = 3 }), + }, + qualityMods = { + --"fire_beam_length_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 12, 4, 9.6833333333333, }, + [2] = { 15, 4, 12.65, }, + [3] = { 19, 4, 17.683333333333, }, + [4] = { 23, 5, 24.233333333333, }, + [5] = { 27, 5, 32.716666666667, }, + [6] = { 31, 5, 43.666666666667, }, + [7] = { 35, 6, 57.7, }, + [8] = { 38, 6, 70.75, }, + [9] = { 41, 6, 86.4, }, + [10] = { 44, 7, 105.13333333333, }, + [11] = { 47, 7, 127.55, }, + [12] = { 50, 7, 154.3, }, + [13] = { 53, 8, 186.2, }, + [14] = { 56, 8, 224.16666666667, }, + [15] = { 59, 8, 269.33333333333, }, + [16] = { 62, 9, 322.96666666667, }, + [17] = { 64, 9, 364.18333333333, }, + [18] = { 66, 9, 410.36666666667, }, + [19] = { 68, 10, 462.06666666667, }, + [20] = { 70, 10, 519.93333333333, }, + [21] = { 72, 10, 584.7, }, + [22] = { 74, 11, 657.13333333333, }, + [23] = { 76, 11, 738.1, }, + [24] = { 78, 11, 828.61666666667, }, + [25] = { 80, 12, 929.73333333333, }, + [26] = { 82, 12, 1042.6833333333, }, + [27] = { 84, 12, 1168.8, }, + [28] = { 86, 13, 1309.5833333333, }, + [29] = { 88, 13, 1466.6666666667, }, + [30] = { 90, 13, 1641.9166666667, }, + }, +} +skills["ShockNova"] = { + name = "Shock Nova", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + parts = { + { + name = "Ring", + }, + { + name = "Nova", + }, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, [43] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("damageEffectiveness", 0.6), + skill("critChance", 6), + mod("Damage", "MORE", -80, 0, 0, { type = "SkillPart", skillPart = 1 }), --"newshocknova_first_ring_damage_+%_final" = -80 + mod("EnemyShockChance", "BASE", 20), --"base_chance_to_shock_%" = 20 + --"is_area_damage" = ? + }, + qualityMods = { + mod("EnemyShockDuration", "INC", 2), --"shock_duration_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 28, 13, 26, 79, }, + [2] = { 31, 14, 32, 95, }, + [3] = { 34, 15, 38, 115, }, + [4] = { 37, 16, 46, 137, }, + [5] = { 40, 17, 55, 164, }, + [6] = { 42, 18, 61, 184, }, + [7] = { 44, 18, 69, 206, }, + [8] = { 46, 19, 77, 231, }, + [9] = { 48, 19, 86, 258, }, + [10] = { 50, 20, 96, 288, }, + [11] = { 52, 20, 107, 321, }, + [12] = { 54, 21, 119, 358, }, + [13] = { 56, 22, 133, 399, }, + [14] = { 58, 22, 148, 443, }, + [15] = { 60, 23, 164, 493, }, + [16] = { 62, 23, 182, 547, }, + [17] = { 64, 24, 202, 607, }, + [18] = { 66, 25, 224, 673, }, + [19] = { 68, 25, 248, 745, }, + [20] = { 70, 26, 275, 825, }, + [21] = { 72, 26, 304, 913, }, + [22] = { 74, 27, 336, 1009, }, + [23] = { 76, 28, 372, 1115, }, + [24] = { 78, 28, 411, 1232, }, + [25] = { 80, 29, 453, 1360, }, + [26] = { 82, 29, 500, 1501, }, + [27] = { 84, 30, 552, 1655, }, + [28] = { 86, 31, 608, 1824, }, + [29] = { 88, 31, 670, 2010, }, + [30] = { 90, 32, 738, 2214, }, + }, +} +skills["Spark"] = { + name = "Spark", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.7), + skill("critChance", 6), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 1, 5, 1, 20, 4, }, + [2] = { 2, 6, 1, 22, 4, }, + [3] = { 4, 7, 1, 27, 4, }, + [4] = { 7, 8, 2, 36, 4, }, + [5] = { 11, 9, 3, 49, 4, }, + [6] = { 16, 10, 4, 69, 4, }, + [7] = { 20, 11, 5, 88, 4, }, + [8] = { 24, 12, 6, 110, 4, }, + [9] = { 28, 14, 7, 136, 5, }, + [10] = { 32, 16, 9, 167, 5, }, + [11] = { 36, 17, 11, 202, 5, }, + [12] = { 40, 18, 13, 243, 5, }, + [13] = { 44, 19, 15, 291, 5, }, + [14] = { 48, 20, 18, 345, 5, }, + [15] = { 52, 21, 22, 409, 5, }, + [16] = { 56, 22, 25, 481, 5, }, + [17] = { 60, 22, 30, 565, 6, }, + [18] = { 64, 22, 35, 661, 6, }, + [19] = { 67, 22, 39, 742, 6, }, + [20] = { 70, 23, 44, 832, 6, }, + [21] = { 72, 23, 47, 897, 6, }, + [22] = { 74, 24, 51, 967, 6, }, + [23] = { 76, 24, 55, 1041, 6, }, + [24] = { 78, 25, 59, 1120, 6, }, + [25] = { 80, 25, 63, 1205, 7, }, + [26] = { 82, 26, 68, 1296, 7, }, + [27] = { 84, 26, 73, 1393, 7, }, + [28] = { 86, 26, 79, 1496, 7, }, + [29] = { 88, 26, 85, 1607, 7, }, + [30] = { 90, 27, 91, 1725, 7, }, + }, +} +skills["VaalSparkSpiralNova"] = { + name = "Vaal Spark", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.4), + skill("critChance", 5), + skill("duration", 2), --"base_skill_effect_duration" = 2000 + --"base_number_of_projectiles_in_spiral_nova" = 100 + --"projectile_spiral_nova_time_ms" = 3000 + --"projectile_spiral_nova_angle" = 0 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 1, 1, 11, }, + [2] = { 2, 1, 12, }, + [3] = { 4, 1, 15, }, + [4] = { 7, 1, 19, }, + [5] = { 11, 1, 27, }, + [6] = { 16, 2, 37, }, + [7] = { 20, 3, 48, }, + [8] = { 24, 3, 60, }, + [9] = { 28, 4, 74, }, + [10] = { 32, 5, 91, }, + [11] = { 36, 6, 110, }, + [12] = { 40, 7, 133, }, + [13] = { 44, 8, 159, }, + [14] = { 48, 10, 188, }, + [15] = { 52, 12, 223, }, + [16] = { 56, 14, 263, }, + [17] = { 60, 16, 308, }, + [18] = { 64, 19, 361, }, + [19] = { 67, 21, 405, }, + [20] = { 70, 24, 454, }, + [21] = { 72, 26, 489, }, + [22] = { 74, 28, 527, }, + [23] = { 76, 30, 568, }, + [24] = { 78, 32, 611, }, + [25] = { 80, 35, 658, }, + [26] = { 82, 37, 707, }, + [27] = { 84, 40, 760, }, + [28] = { 86, 43, 816, }, + [29] = { 88, 46, 877, }, + [30] = { 90, 50, 941, }, + }, +} +skills["SpiritOffering"] = { + name = "Spirit Offering", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"offering_skill_effect_duration_per_corpse" = 500 + --"spirit_offering_life_%_added_as_base_maximum_energy_shield_per_corpse_consumed" = 2 + --"base_deal_no_damage" = ? + skill("offering", true), + }, + qualityMods = { + mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_chaos" + [4] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" + }, + levels = { + [1] = { 12, 16, 20, 20, }, + [2] = { 15, 17, 20, 21, }, + [3] = { 19, 18, 21, 21, }, + [4] = { 23, 19, 21, 22, }, + [5] = { 27, 20, 22, 22, }, + [6] = { 31, 21, 22, 23, }, + [7] = { 35, 22, 23, 23, }, + [8] = { 38, 23, 23, 24, }, + [9] = { 41, 24, 24, 24, }, + [10] = { 44, 25, 24, 25, }, + [11] = { 47, 26, 25, 25, }, + [12] = { 50, 27, 25, 26, }, + [13] = { 53, 28, 26, 26, }, + [14] = { 56, 29, 26, 27, }, + [15] = { 59, 29, 27, 27, }, + [16] = { 62, 30, 27, 28, }, + [17] = { 64, 30, 28, 28, }, + [18] = { 66, 31, 28, 29, }, + [19] = { 68, 32, 29, 29, }, + [20] = { 70, 33, 29, 30, }, + [21] = { 72, 34, 30, 30, }, + [22] = { 74, 34, 30, 31, }, + [23] = { 76, 35, 31, 31, }, + [24] = { 78, 36, 31, 32, }, + [25] = { 80, 37, 32, 32, }, + [26] = { 82, 38, 32, 33, }, + [27] = { 84, 38, 33, 33, }, + [28] = { 86, 39, 33, 34, }, + [29] = { 88, 40, 34, 34, }, + [30] = { 90, 41, 34, 35, }, + }, +} +skills["StormCall"] = { + name = "Storm Call", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [26] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.8), + skill("critChance", 6), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 6, 13, 24, 0, }, + [2] = { 15, 7, 16, 30, 0, }, + [3] = { 19, 8, 22, 40, 1, }, + [4] = { 23, 9, 28, 53, 1, }, + [5] = { 27, 10, 37, 68, 1, }, + [6] = { 31, 11, 46, 86, 2, }, + [7] = { 35, 12, 58, 108, 2, }, + [8] = { 38, 13, 69, 128, 2, }, + [9] = { 41, 13, 81, 151, 3, }, + [10] = { 44, 14, 95, 177, 3, }, + [11] = { 47, 14, 111, 206, 3, }, + [12] = { 50, 15, 130, 241, 4, }, + [13] = { 53, 16, 151, 280, 4, }, + [14] = { 56, 16, 175, 325, 4, }, + [15] = { 59, 17, 202, 376, 5, }, + [16] = { 62, 18, 234, 434, 5, }, + [17] = { 64, 18, 257, 478, 5, }, + [18] = { 66, 19, 283, 525, 6, }, + [19] = { 68, 19, 310, 577, 6, }, + [20] = { 70, 19, 341, 633, 6, }, + [21] = { 72, 20, 374, 694, 7, }, + [22] = { 74, 21, 410, 761, 7, }, + [23] = { 76, 21, 449, 834, 7, }, + [24] = { 78, 21, 492, 914, 8, }, + [25] = { 80, 22, 538, 1000, 8, }, + [26] = { 82, 23, 589, 1094, 8, }, + [27] = { 84, 23, 644, 1196, 9, }, + [28] = { 86, 23, 704, 1308, 9, }, + [29] = { 88, 24, 769, 1429, 9, }, + [30] = { 90, 24, 840, 1560, 10, }, + }, +} +skills["VaalStormCall"] = { + name = "Vaal Storm Call", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.8), + skill("critChance", 6), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 13, 25, }, + [2] = { 15, 17, 31, }, + [3] = { 19, 22, 41, }, + [4] = { 23, 29, 53, }, + [5] = { 27, 36, 67, }, + [6] = { 31, 46, 85, }, + [7] = { 35, 57, 105, }, + [8] = { 38, 67, 124, }, + [9] = { 41, 78, 144, }, + [10] = { 44, 90, 168, }, + [11] = { 47, 105, 194, }, + [12] = { 50, 121, 225, }, + [13] = { 53, 140, 259, }, + [14] = { 56, 161, 298, }, + [15] = { 59, 184, 343, }, + [16] = { 62, 211, 393, }, + [17] = { 64, 231, 429, }, + [18] = { 66, 253, 470, }, + [19] = { 68, 276, 513, }, + [20] = { 70, 302, 560, }, + [21] = { 72, 329, 611, }, + [22] = { 74, 359, 666, }, + [23] = { 76, 391, 726, }, + [24] = { 78, 426, 791, }, + [25] = { 80, 464, 861, }, + [26] = { 82, 504, 937, }, + [27] = { 84, 549, 1019, }, + [28] = { 86, 596, 1108, }, + [29] = { 88, 648, 1204, }, + [30] = { 90, 704, 1307, }, + }, +} +skills["SummonChaosGolem"] = { + name = "Summon Chaos Golem", + gemTags = { + intelligence = true, + active_skill = true, + chaos = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedChaosGolem", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + golem = true, + chaos = true, + }, + skillTypes = { [36] = true, [50] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [12] = true, [2] = true, [10] = true, [11] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 5 + mod("Misc", "LIST", { type = "Condition", var = "HaveChaosGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + --[4] = "chaos_golem_grants_additional_physical_damage_reduction_%" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 3, 30, 34, }, + [2] = { 36, 32, 1, 3, 32, 36, }, + [3] = { 38, 34, 1, 3, 34, 38, }, + [4] = { 40, 36, 2, 3, 36, 40, }, + [5] = { 42, 38, 2, 3, 38, 42, }, + [6] = { 44, 40, 3, 3, 40, 44, }, + [7] = { 46, 42, 3, 3, 42, 46, }, + [8] = { 48, 44, 4, 3, 44, 48, }, + [9] = { 50, 44, 4, 3, 46, 50, }, + [10] = { 52, 46, 5, 3, 48, 52, }, + [11] = { 54, 48, 5, 3, 50, 54, }, + [12] = { 56, 48, 6, 4, 52, 56, }, + [13] = { 58, 50, 6, 4, 54, 58, }, + [14] = { 60, 50, 7, 4, 56, 60, }, + [15] = { 62, 52, 7, 4, 58, 62, }, + [16] = { 64, 52, 8, 4, 60, 64, }, + [17] = { 66, 52, 8, 4, 62, 66, }, + [18] = { 68, 52, 9, 4, 64, 68, }, + [19] = { 69, 54, 9, 4, 66, 69, }, + [20] = { 70, 54, 10, 4, 68, 70, }, + [21] = { 72, 56, 10, 4, 70, 72, }, + [22] = { 74, 56, 11, 5, 72, 74, }, + [23] = { 76, 58, 11, 5, 74, 76, }, + [24] = { 78, 58, 12, 5, 76, 78, }, + [25] = { 80, 60, 12, 5, 78, 80, }, + [26] = { 82, 60, 13, 5, 80, 82, }, + [27] = { 84, 60, 13, 5, 82, 84, }, + [28] = { 86, 60, 14, 5, 84, 86, }, + [29] = { 88, 62, 14, 5, 86, 88, }, + [30] = { 90, 62, 15, 5, 88, 90, }, + }, +} +skills["SummonLightningGolem"] = { + name = "Summon Lightning Golem", + gemTags = { + intelligence = true, + active_skill = true, + lightning = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedLightningGolem", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + golem = true, + lightning = true, + }, + skillTypes = { [36] = true, [35] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [45] = true, [62] = true, }, + minionSkillTypes = { [10] = true, [11] = true, [44] = true, [3] = true, [12] = true, [2] = true, [5] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 11 + mod("Misc", "LIST", { type = "Condition", var = "HaveLightningGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("Speed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"lightning_golem_grants_attack_and_cast_speed_+%" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 6, 30, 34, }, + [2] = { 36, 32, 1, 6, 32, 36, }, + [3] = { 38, 34, 2, 6, 34, 38, }, + [4] = { 40, 36, 3, 6, 36, 40, }, + [5] = { 42, 38, 4, 6, 38, 42, }, + [6] = { 44, 40, 5, 7, 40, 44, }, + [7] = { 46, 42, 6, 7, 42, 46, }, + [8] = { 48, 44, 7, 7, 44, 48, }, + [9] = { 50, 44, 8, 7, 46, 50, }, + [10] = { 52, 46, 9, 7, 48, 52, }, + [11] = { 54, 48, 10, 8, 50, 54, }, + [12] = { 56, 48, 11, 8, 52, 56, }, + [13] = { 58, 50, 12, 8, 54, 58, }, + [14] = { 60, 50, 13, 8, 56, 60, }, + [15] = { 62, 52, 14, 8, 58, 62, }, + [16] = { 64, 52, 15, 9, 60, 64, }, + [17] = { 66, 52, 16, 9, 62, 66, }, + [18] = { 68, 52, 17, 9, 64, 68, }, + [19] = { 69, 54, 18, 9, 66, 69, }, + [20] = { 70, 54, 19, 9, 68, 70, }, + [21] = { 72, 56, 20, 10, 70, 72, }, + [22] = { 74, 56, 21, 10, 72, 74, }, + [23] = { 76, 58, 22, 10, 74, 76, }, + [24] = { 78, 58, 23, 10, 76, 78, }, + [25] = { 80, 60, 24, 10, 78, 80, }, + [26] = { 82, 60, 25, 11, 80, 82, }, + [27] = { 84, 60, 26, 11, 82, 84, }, + [28] = { 86, 60, 27, 11, 84, 86, }, + [29] = { 88, 62, 28, 11, 86, 88, }, + [30] = { 90, 62, 29, 11, 88, 90, }, + }, +} +skills["SummonRagingSpirit"] = { + name = "Summon Raging Spirit", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + duration = true, + fire = true, + }, + minionList = { + "SummonedRagingSpirit", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, [33] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + mod("ActiveRagingSpiritLimit", "BASE", 20), --"base_number_of_raging_spirits_allowed" = 20 + skill("minionDamageEffectiveness", -30), --"active_skill_minion_added_damage_+%_final" = -30 + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 1) }), --"minion_movement_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + }, + levels = { + [1] = { 4, 4, }, + [2] = { 6, 4, }, + [3] = { 9, 5, }, + [4] = { 12, 5, }, + [5] = { 16, 6, }, + [6] = { 20, 6, }, + [7] = { 24, 6, }, + [8] = { 28, 7, }, + [9] = { 32, 7, }, + [10] = { 36, 8, }, + [11] = { 40, 8, }, + [12] = { 44, 9, }, + [13] = { 48, 9, }, + [14] = { 52, 10, }, + [15] = { 55, 10, }, + [16] = { 58, 10, }, + [17] = { 61, 11, }, + [18] = { 64, 11, }, + [19] = { 67, 11, }, + [20] = { 70, 12, }, + [21] = { 72, 12, }, + [22] = { 74, 13, }, + [23] = { 76, 13, }, + [24] = { 78, 13, }, + [25] = { 80, 14, }, + [26] = { 82, 14, }, + [27] = { 84, 14, }, + [28] = { 86, 15, }, + [29] = { 88, 15, }, + [30] = { 90, 15, }, + }, +} +skills["SummonSkeletons"] = { + name = "Summon Skeletons", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + duration = true, + }, + minionList = { + "RaisedSkeleton", + "RaisedSkeletonCaster", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + duration = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [54] = true, [28] = true, }, + baseMods = { + skill("castTime", 0.8), + --"number_of_melee_skeletons_to_summon" = 2 + skill("duration", 20), --"base_skill_effect_duration" = 20000 + skill("minionDamageEffectiveness", -50), --"active_skill_minion_added_damage_+%_final" = -50 + --"display_minion_monster_type" = 2 + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("ActiveSkeletonLimit", "BASE", nil), --"base_number_of_skeletons_allowed" + [4] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 6, 4, 10, }, + [2] = { 13, 7, 4, 13, }, + [3] = { 17, 8, 4, 16, }, + [4] = { 21, 9, 4, 19, }, + [5] = { 25, 10, 4, 22, }, + [6] = { 29, 11, 4, 25, }, + [7] = { 33, 12, 4, 28, }, + [8] = { 36, 12, 4, 32, }, + [9] = { 39, 13, 5, 36, }, + [10] = { 42, 14, 5, 40, }, + [11] = { 45, 15, 5, 44, }, + [12] = { 48, 15, 5, 47, }, + [13] = { 51, 16, 5, 50, }, + [14] = { 54, 17, 5, 53, }, + [15] = { 57, 17, 5, 56, }, + [16] = { 60, 18, 6, 59, }, + [17] = { 63, 19, 6, 62, }, + [18] = { 66, 20, 6, 64, }, + [19] = { 68, 20, 6, 66, }, + [20] = { 70, 21, 6, 68, }, + [21] = { 72, 21, 6, 70, }, + [22] = { 74, 22, 6, 72, }, + [23] = { 76, 22, 6, 74, }, + [24] = { 78, 22, 6, 76, }, + [25] = { 80, 23, 6, 78, }, + [26] = { 82, 23, 6, 80, }, + [27] = { 84, 24, 6, 82, }, + [28] = { 86, 24, 6, 84, }, + [29] = { 88, 25, 6, 86, }, + [30] = { 90, 25, 6, 88, }, + }, +} +skills["VaalSummonSkeletons"] = { + name = "Vaal Summon Skeletons", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + minion = true, + duration = true, + }, + minionList = { + "RaisedSkeleton", + "RaisedSkeletonCaster", + "RaisedSkeletonArcher", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + duration = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [3] = true, [48] = true, [28] = true, [2] = true, [11] = true, }, + baseMods = { + skill("castTime", 0.8), + --"number_of_leader_skeletons_to_summon" = 1 + skill("duration", 20), --"base_skill_effect_duration" = 20000 + --"display_minion_monster_type" = 2 + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "number_of_melee_skeletons_to_summon" + --[3] = "number_of_archer_skeletons_to_summon" + --[4] = "number_of_mage_skeletons_to_summon" + [5] = mod("ActiveSkeletonLimit", "BASE", nil), --"base_number_of_skeletons_allowed" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 14, 2, 0, 17, 10, }, + [2] = { 13, 15, 2, 0, 18, 13, }, + [3] = { 17, 15, 3, 0, 19, 16, }, + [4] = { 21, 16, 3, 0, 20, 19, }, + [5] = { 25, 16, 4, 0, 21, 22, }, + [6] = { 29, 17, 4, 0, 22, 25, }, + [7] = { 33, 17, 5, 0, 23, 28, }, + [8] = { 36, 18, 5, 0, 24, 32, }, + [9] = { 39, 18, 5, 1, 25, 36, }, + [10] = { 42, 18, 6, 1, 26, 40, }, + [11] = { 45, 18, 6, 2, 27, 44, }, + [12] = { 48, 19, 6, 2, 28, 47, }, + [13] = { 51, 19, 6, 3, 29, 50, }, + [14] = { 54, 20, 6, 3, 30, 53, }, + [15] = { 57, 20, 7, 3, 31, 56, }, + [16] = { 60, 20, 7, 4, 32, 59, }, + [17] = { 63, 20, 8, 4, 33, 62, }, + [18] = { 66, 21, 8, 4, 34, 64, }, + [19] = { 68, 21, 8, 5, 35, 66, }, + [20] = { 70, 21, 9, 5, 36, 68, }, + [21] = { 72, 22, 9, 5, 37, 70, }, + [22] = { 74, 22, 9, 6, 38, 72, }, + [23] = { 76, 22, 10, 6, 39, 74, }, + [24] = { 78, 23, 10, 6, 40, 76, }, + [25] = { 80, 23, 10, 7, 41, 78, }, + [26] = { 82, 23, 11, 7, 42, 80, }, + [27] = { 84, 24, 11, 7, 43, 82, }, + [28] = { 86, 24, 11, 8, 44, 84, }, + [29] = { 88, 25, 11, 8, 45, 86, }, + [30] = { 90, 25, 12, 8, 46, 88, }, + }, +} +skills["TempestShield"] = { + name = "Tempest Shield", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + lightning = true, + chaining = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + chaining = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [13] = true, [27] = true, [35] = true, [23] = true, [45] = true, [36] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.6), + skill("critChance", 6), + mod("BlockChance", "BASE", 3, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"shield_block_%" = 3 + --"skill_override_pvp_scaling_time_ms" = 700 + mod("ChainCount", "BASE", 1), --"number_of_additional_projectiles_in_chain" = 1 + skill("duration", 12), --"base_skill_effect_duration" = 12000 + --"skill_can_add_multiple_charges_per_action" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 16, 17, 24, 36, }, + [2] = { 20, 17, 31, 46, }, + [3] = { 24, 17, 39, 58, }, + [4] = { 28, 18, 48, 72, }, + [5] = { 31, 18, 55, 83, }, + [6] = { 34, 18, 64, 96, }, + [7] = { 37, 18, 74, 111, }, + [8] = { 40, 19, 85, 127, }, + [9] = { 43, 19, 97, 145, }, + [10] = { 46, 19, 110, 165, }, + [11] = { 49, 20, 125, 187, }, + [12] = { 52, 20, 141, 212, }, + [13] = { 55, 20, 159, 239, }, + [14] = { 58, 20, 180, 269, }, + [15] = { 60, 20, 194, 291, }, + [16] = { 62, 21, 210, 315, }, + [17] = { 64, 21, 227, 340, }, + [18] = { 66, 21, 245, 367, }, + [19] = { 68, 21, 264, 396, }, + [20] = { 70, 21, 284, 426, }, + [21] = { 72, 22, 306, 459, }, + [22] = { 74, 22, 330, 494, }, + [23] = { 76, 22, 354, 532, }, + [24] = { 78, 22, 381, 572, }, + [25] = { 80, 22, 410, 614, }, + [26] = { 82, 23, 440, 660, }, + [27] = { 84, 23, 472, 708, }, + [28] = { 86, 23, 507, 760, }, + [29] = { 88, 23, 543, 815, }, + [30] = { 90, 23, 583, 874, }, + }, +} +skills["FrostBoltNova"] = { + name = "Vortex", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [12] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.9), + skill("critChance", 5), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"is_area_damage" = ? + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = skill("ColdDot", nil), --"base_cold_damage_to_deal_per_minute" + }, + levels = { + [1] = { 28, 11, 50, 75, 41.633333333333, }, + [2] = { 31, 11, 60, 90, 51.983333333333, }, + [3] = { 34, 12, 71, 107, 64.466666666667, }, + [4] = { 37, 13, 85, 127, 79.45, }, + [5] = { 40, 14, 100, 150, 97.383333333333, }, + [6] = { 42, 14, 112, 168, 112.51666666667, }, + [7] = { 44, 15, 124, 187, 129.65, }, + [8] = { 46, 15, 138, 208, 149.01666666667, }, + [9] = { 48, 16, 154, 231, 170.88333333333, }, + [10] = { 50, 16, 171, 256, 195.53333333333, }, + [11] = { 52, 16, 189, 284, 223.28333333333, }, + [12] = { 54, 17, 209, 314, 254.5, }, + [13] = { 56, 17, 232, 347, 289.53333333333, }, + [14] = { 58, 18, 256, 384, 328.85, }, + [15] = { 60, 18, 283, 424, 372.9, }, + [16] = { 62, 19, 312, 468, 422.2, }, + [17] = { 64, 19, 344, 516, 477.35, }, + [18] = { 66, 20, 379, 568, 538.96666666667, }, + [19] = { 68, 20, 417, 625, 607.75, }, + [20] = { 70, 21, 458, 688, 684.46666666667, }, + [21] = { 72, 21, 504, 756, 769.96666666667, }, + [22] = { 74, 22, 554, 831, 865.18333333333, }, + [23] = { 76, 22, 608, 912, 971.15, }, + [24] = { 78, 23, 667, 1001, 1088.9833333333, }, + [25] = { 80, 23, 732, 1098, 1219.9166666667, }, + [26] = { 82, 24, 802, 1204, 1365.3333333333, }, + [27] = { 84, 24, 879, 1319, 1526.7166666667, }, + [28] = { 86, 25, 963, 1445, 1705.7166666667, }, + [29] = { 88, 25, 1055, 1582, 1904.1333333333, }, + [30] = { 90, 26, 1154, 1731, 2123.9666666667, }, + }, +} +skills["Vulnerability"] = { + name = "Vulnerability", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("DotTaken", "INC", 33, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 33 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("PhysicalDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" + }, + levels = { + [1] = { 24, 24, 9, 0, 20, }, + [2] = { 27, 26, 9.1, 4, 20, }, + [3] = { 30, 27, 9.2, 8, 21, }, + [4] = { 33, 29, 9.3, 12, 21, }, + [5] = { 36, 30, 9.4, 16, 22, }, + [6] = { 39, 32, 9.5, 20, 22, }, + [7] = { 42, 34, 9.6, 24, 23, }, + [8] = { 45, 35, 9.7, 28, 23, }, + [9] = { 48, 37, 9.8, 32, 24, }, + [10] = { 50, 38, 9.9, 36, 24, }, + [11] = { 52, 39, 10, 40, 25, }, + [12] = { 54, 40, 10.1, 44, 25, }, + [13] = { 56, 42, 10.2, 48, 26, }, + [14] = { 58, 43, 10.3, 52, 26, }, + [15] = { 60, 44, 10.4, 56, 27, }, + [16] = { 62, 45, 10.5, 60, 27, }, + [17] = { 64, 46, 10.6, 64, 28, }, + [18] = { 66, 47, 10.7, 68, 28, }, + [19] = { 68, 48, 10.8, 72, 29, }, + [20] = { 70, 50, 10.9, 76, 29, }, + [21] = { 72, 51, 11, 80, 30, }, + [22] = { 74, 52, 11.1, 84, 30, }, + [23] = { 76, 53, 11.2, 88, 31, }, + [24] = { 78, 54, 11.3, 92, 31, }, + [25] = { 80, 56, 11.4, 96, 32, }, + [26] = { 82, 57, 11.5, 100, 32, }, + [27] = { 84, 58, 11.6, 104, 33, }, + [28] = { 86, 59, 11.7, 108, 33, }, + [29] = { 88, 60, 11.8, 112, 34, }, + [30] = { 90, 61, 11.9, 116, 34, }, + }, +} +skills["Wither"] = { + name = "Wither", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + chaos = true, + channelling = true, + }, + parts = { + { + name = "1 Stack", + }, + { + name = "5 Stacks", + }, + { + name = "10 Stacks", + }, + { + name = "20 Stacks", + }, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [18] = true, [50] = true, [58] = true, }, + baseMods = { + skill("castTime", 0.28), + mod("ChaosDamageTaken", "INC", 7, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"chaos_damage_taken_+%" = 7 + nil, --"base_skill_effect_duration" = 500 + skill("duration", 2), --"base_secondary_skill_effect_duration" = 2000 + skill("stackCount", 5, { type = "SkillPart", skillPart = 2 }), + skill("stackCount", 10, { type = "SkillPart", skillPart = 3 }), + skill("stackCount", 20, { type = "SkillPart", skillPart = 4 }), + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_movement_velocity_+%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 10, 4, -30, 0, }, + [2] = { 13, 4, -30, 1, }, + [3] = { 17, 4, -30, 2, }, + [4] = { 21, 5, -31, 3, }, + [5] = { 25, 5, -31, 4, }, + [6] = { 29, 5, -31, 5, }, + [7] = { 33, 6, -32, 6, }, + [8] = { 36, 6, -32, 7, }, + [9] = { 39, 6, -32, 8, }, + [10] = { 42, 7, -33, 9, }, + [11] = { 45, 7, -33, 10, }, + [12] = { 48, 7, -33, 11, }, + [13] = { 51, 8, -34, 12, }, + [14] = { 54, 8, -34, 13, }, + [15] = { 57, 8, -34, 14, }, + [16] = { 60, 9, -35, 15, }, + [17] = { 63, 9, -35, 16, }, + [18] = { 66, 9, -35, 17, }, + [19] = { 68, 10, -36, 18, }, + [20] = { 70, 10, -36, 19, }, + [21] = { 72, 10, -36, 20, }, + [22] = { 74, 11, -37, 21, }, + [23] = { 76, 11, -37, 22, }, + [24] = { 78, 11, -37, 23, }, + [25] = { 80, 12, -38, 24, }, + [26] = { 82, 12, -38, 25, }, + [27] = { 84, 12, -38, 26, }, + [28] = { 86, 13, -39, 27, }, + [29] = { 88, 13, -39, 28, }, + [30] = { 90, 13, -39, 29, }, + }, +} +skills["Wrath"] = { + name = "Wrath", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_lightning_damage" + [3] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_lightning_damage" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("LightningDamage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"wrath_aura_spell_lightning_damage_+%_final" + }, + levels = { + [1] = { 24, 2, 37, 0, 15, }, + [2] = { 27, 3, 43, 3, 15, }, + [3] = { 30, 3, 50, 6, 15, }, + [4] = { 33, 4, 57, 9, 16, }, + [5] = { 36, 4, 66, 12, 16, }, + [6] = { 39, 5, 75, 15, 16, }, + [7] = { 42, 5, 85, 18, 17, }, + [8] = { 45, 6, 97, 21, 17, }, + [9] = { 48, 7, 109, 23, 17, }, + [10] = { 50, 7, 118, 25, 18, }, + [11] = { 52, 8, 128, 27, 18, }, + [12] = { 54, 9, 138, 29, 18, }, + [13] = { 56, 9, 149, 31, 19, }, + [14] = { 58, 10, 161, 33, 19, }, + [15] = { 60, 11, 173, 35, 19, }, + [16] = { 62, 12, 186, 36, 20, }, + [17] = { 64, 13, 200, 37, 20, }, + [18] = { 66, 13, 215, 38, 20, }, + [19] = { 68, 14, 231, 39, 21, }, + [20] = { 70, 16, 248, 40, 21, }, + [21] = { 72, 17, 267, 41, 21, }, + [22] = { 74, 18, 286, 42, 22, }, + [23] = { 76, 19, 306, 43, 22, }, + [24] = { 78, 20, 328, 44, 22, }, + [25] = { 80, 22, 351, 45, 23, }, + [26] = { 82, 23, 375, 46, 23, }, + [27] = { 84, 25, 401, 47, 23, }, + [28] = { 86, 27, 429, 48, 24, }, + [29] = { 88, 29, 458, 49, 24, }, + [30] = { 90, 31, 490, 50, 24, }, + }, +} \ No newline at end of file diff --git a/Data/Skills/act_str.lua b/Data/Skills/act_str.lua new file mode 100644 index 00000000..7c8a5693 --- /dev/null +++ b/Data/Skills/act_str.lua @@ -0,0 +1,3199 @@ +-- Path of Building +-- +-- Active Strength skill gems +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["AbyssalCry"] = { + name = "Abyssal Cry", + gemTags = { + warcry = true, + strength = true, + active_skill = true, + area = true, + duration = true, + chaos = true, + }, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [11] = true, [12] = true, [50] = true, [10] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + --"abyssal_cry_%_max_life_as_chaos_on_death" = 8 + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"damage_cannot_be_reflected" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"display_skill_deals_secondary_damage" = ? + --"is_warcry" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "abyssal_cry_movement_velocity_+%_per_one_hundred_nearby_enemies" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, nil), --"base_movement_velocity_+%" + }, + levels = { + [1] = { 34, 26, -60, -20, }, + [2] = { 36, 28, -62, -20, }, + [3] = { 38, 30, -62, -21, }, + [4] = { 40, 32, -64, -21, }, + [5] = { 42, 34, -66, -21, }, + [6] = { 44, 36, -66, -22, }, + [7] = { 46, 38, -68, -22, }, + [8] = { 48, 40, -70, -22, }, + [9] = { 50, 43, -70, -23, }, + [10] = { 52, 45, -72, -23, }, + [11] = { 54, 48, -74, -23, }, + [12] = { 56, 49, -74, -24, }, + [13] = { 58, 50, -76, -24, }, + [14] = { 60, 51, -78, -24, }, + [15] = { 62, 52, -78, -25, }, + [16] = { 64, 53, -80, -25, }, + [17] = { 66, 54, -82, -25, }, + [18] = { 68, 54, -82, -26, }, + [19] = { 69, 55, -84, -26, }, + [20] = { 70, 56, -86, -26, }, + [21] = { 72, 57, -86, -27, }, + [22] = { 74, 58, -88, -27, }, + [23] = { 76, 58, -90, -27, }, + [24] = { 78, 59, -90, -28, }, + [25] = { 80, 60, -92, -28, }, + [26] = { 82, 61, -94, -28, }, + [27] = { 84, 62, -94, -29, }, + [28] = { 86, 62, -96, -29, }, + [29] = { 88, 63, -98, -29, }, + [30] = { 90, 64, -98, -30, }, + }, +} +skills["TotemMelee"] = { + name = "Ancestral Protector", + gemTags = { + totem = true, + strength = true, + active_skill = true, + attack = true, + duration = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + totem = true, + duration = true, + forceMainHand = true, + }, + skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [25] = true, [24] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + skillTotemId = 13, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + --"base_totem_duration" = 12000 + --"base_totem_range" = 50 + --"melee_range_+" = 16 + --"ancestor_totem_parent_activiation_range" = 70 + mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 + --"base_skill_is_totemified" = ? + --"is_totem" = ? + skill("allowTotemBuff", true), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"melee_ancestor_totem_grant_owner_attack_speed_+%_final" + }, + levels = { + [1] = { 4, -20, 4, 10, }, + [2] = { 6, -17.2, 6, 11, }, + [3] = { 9, -14.4, 9, 11, }, + [4] = { 12, -11.6, 12, 12, }, + [5] = { 16, -8.8, 16, 12, }, + [6] = { 20, -6, 20, 13, }, + [7] = { 24, -3.2, 24, 13, }, + [8] = { 28, -0.4, 28, 14, }, + [9] = { 32, 2.4, 32, 14, }, + [10] = { 36, 5.2, 36, 15, }, + [11] = { 40, 8, 40, 15, }, + [12] = { 44, 10.8, 44, 16, }, + [13] = { 48, 13.6, 48, 16, }, + [14] = { 52, 16.4, 52, 17, }, + [15] = { 55, 19.2, 55, 17, }, + [16] = { 58, 22, 58, 18, }, + [17] = { 61, 24.8, 61, 18, }, + [18] = { 64, 27.6, 64, 19, }, + [19] = { 67, 30.4, 67, 19, }, + [20] = { 70, 33.2, 70, 20, }, + [21] = { 72, 36, 72, 20, }, + [22] = { 74, 38.8, 74, 21, }, + [23] = { 76, 41.6, 76, 21, }, + [24] = { 78, 44.4, 78, 22, }, + [25] = { 80, 47.2, 80, 22, }, + [26] = { 82, 50, 82, 23, }, + [27] = { 84, 52.8, 84, 23, }, + [28] = { 86, 55.6, 86, 24, }, + [29] = { 88, 58.4, 88, 24, }, + [30] = { 90, 61.2, 90, 25, }, + }, +} +skills["AncestorTotemSlam"] = { + name = "Ancestral Warchief", + gemTags = { + totem = true, + strength = true, + active_skill = true, + attack = true, + duration = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + totem = true, + area = true, + duration = true, + forceMainHand = true, + }, + skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [24] = true, [17] = true, [19] = true, [11] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + skillTotemId = 15, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + --"base_totem_duration" = 12000 + --"base_totem_range" = 50 + --"ancestor_totem_parent_activiation_range" = 70 + mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 + mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 + --"melee_range_+" = 10 + --"is_area_damage" = ? + --"base_skill_is_totemified" = ? + --"is_totem" = ? + skill("allowTotemBuff", true), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [3] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"slam_ancestor_totem_grant_owner_melee_damage_+%_final" + [4] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 28, 8, nil, }, + [2] = { 31, 31, 8, 1.2, }, + [3] = { 34, 34, 9, 2.4, }, + [4] = { 37, 37, 10, 3.6, }, + [5] = { 40, 40, 10, 4.8, }, + [6] = { 42, 42, 10, 6, }, + [7] = { 44, 44, 11, 7.2, }, + [8] = { 46, 46, 12, 8.4, }, + [9] = { 48, 48, 12, 9.6, }, + [10] = { 50, 50, 12, 10.8, }, + [11] = { 52, 52, 13, 12, }, + [12] = { 54, 54, 14, 13.2, }, + [13] = { 56, 56, 14, 14.4, }, + [14] = { 58, 58, 14, 15.6, }, + [15] = { 60, 60, 15, 16.8, }, + [16] = { 62, 62, 16, 18, }, + [17] = { 64, 64, 16, 19.2, }, + [18] = { 66, 66, 16, 20.4, }, + [19] = { 68, 68, 17, 21.6, }, + [20] = { 70, 70, 18, 22.8, }, + [21] = { 72, 72, 18, 24, }, + [22] = { 74, 74, 18, 25.2, }, + [23] = { 76, 76, 19, 26.4, }, + [24] = { 78, 78, 20, 27.6, }, + [25] = { 80, 80, 20, 28.8, }, + [26] = { 82, 82, 20, 30, }, + [27] = { 84, 84, 21, 31.2, }, + [28] = { 86, 86, 22, 32.4, }, + [29] = { 88, 88, 22, 33.6, }, + [30] = { 90, 90, 22, 44.8, }, + }, +} +skills["Anger"] = { + name = "Anger", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_fire_damage" + [3] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_fire_damage" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("FireMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_minimum_added_fire_damage" + [6] = mod("FireMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_maximum_added_fire_damage" + }, + levels = { + [1] = { 24, 12, 21, 0, 10, 16, }, + [2] = { 27, 14, 24, 3, 12, 19, }, + [3] = { 30, 17, 28, 6, 14, 22, }, + [4] = { 33, 19, 32, 9, 16, 26, }, + [5] = { 36, 22, 37, 12, 18, 29, }, + [6] = { 39, 25, 42, 15, 21, 33, }, + [7] = { 42, 28, 47, 18, 24, 38, }, + [8] = { 45, 32, 54, 21, 27, 43, }, + [9] = { 48, 36, 61, 23, 30, 48, }, + [10] = { 50, 39, 66, 25, 33, 53, }, + [11] = { 52, 43, 71, 27, 35, 57, }, + [12] = { 54, 46, 77, 29, 38, 61, }, + [13] = { 56, 50, 83, 31, 41, 66, }, + [14] = { 58, 54, 89, 33, 45, 71, }, + [15] = { 60, 58, 96, 35, 48, 77, }, + [16] = { 62, 62, 104, 36, 52, 83, }, + [17] = { 64, 67, 111, 37, 56, 89, }, + [18] = { 66, 72, 120, 38, 60, 96, }, + [19] = { 68, 77, 129, 39, 64, 103, }, + [20] = { 70, 83, 138, 40, 69, 110, }, + [21] = { 72, 89, 148, 41, 74, 118, }, + [22] = { 74, 95, 159, 42, 79, 127, }, + [23] = { 76, 102, 170, 43, 85, 136, }, + [24] = { 78, 109, 182, 44, 91, 146, }, + [25] = { 80, 117, 195, 45, 97, 156, }, + [26] = { 82, 125, 209, 46, 104, 167, }, + [27] = { 84, 134, 223, 47, 112, 178, }, + [28] = { 86, 143, 238, 48, 119, 191, }, + [29] = { 88, 153, 255, 49, 127, 204, }, + [30] = { 90, 163, 272, 50, 136, 218, }, + }, +} +skills["AnimateArmour"] = { + name = "Animate Guardian", + gemTags = { + strength = true, + active_skill = true, + spell = true, + minion = true, + }, + unsupported = true, + color = 1, + baseFlags = { + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [18] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, }, + baseMods = { + skill("castTime", 0.6), + --"emerge_speed_+%" = 100 + --"display_minion_monster_type" = 3 + }, + qualityMods = { + mod("MovementSpeed", "INC", 2, 0, 0, nil), --"base_movement_velocity_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "animate_item_maximum_level_requirement" + --[4] = "maximum_life_+%" + [5] = mod("PhysicalDamage", "INC", nil, ModFlag.Melee), --"melee_physical_damage_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + [7] = mod("PhysicalMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_physical_damage" + [8] = mod("PhysicalMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_physical_damage" + }, + levels = { + [1] = { 28, 19, 33, 0, 0, 28, 22, 34, }, + [2] = { 31, 20, 36, 4, 4, 31, 25, 37, }, + [3] = { 34, 21, 39, 8, 8, 34, 27, 41, }, + [4] = { 37, 23, 43, 12, 12, 37, 30, 44, }, + [5] = { 40, 24, 46, 16, 16, 40, 32, 48, }, + [6] = { 42, 25, 48, 20, 20, 42, 34, 50, }, + [7] = { 44, 25, 51, 24, 24, 44, 35, 53, }, + [8] = { 46, 26, 53, 28, 28, 46, 37, 55, }, + [9] = { 48, 27, 56, 32, 32, 48, 38, 58, }, + [10] = { 50, 28, 58, 36, 36, 50, 40, 60, }, + [11] = { 52, 29, 61, 40, 40, 52, 42, 62, }, + [12] = { 54, 30, 63, 44, 44, 54, 43, 65, }, + [13] = { 56, 31, 66, 48, 48, 56, 45, 67, }, + [14] = { 58, 31, 68, 52, 52, 58, 46, 70, }, + [15] = { 60, 32, 71, 56, 56, 60, 48, 72, }, + [16] = { 62, 33, 73, 60, 60, 62, 50, 74, }, + [17] = { 64, 34, 76, 64, 64, 64, 51, 77, }, + [18] = { 66, 35, 79, 68, 68, 66, 53, 79, }, + [19] = { 68, 36, 82, 72, 72, 68, 54, 82, }, + [20] = { 70, 36, 100, 76, 76, 70, 56, 84, }, + [21] = { 72, 37, 100, 80, 80, 72, 58, 86, }, + [22] = { 74, 38, 100, 84, 84, 74, 59, 89, }, + [23] = { 76, 39, 100, 88, 88, 76, 61, 91, }, + [24] = { 78, 40, 100, 92, 92, 78, 62, 94, }, + [25] = { 80, 41, 100, 96, 96, 80, 64, 96, }, + [26] = { 82, 41, 100, 100, 100, 82, 66, 98, }, + [27] = { 84, 42, 100, 104, 104, 84, 67, 101, }, + [28] = { 86, 43, 100, 108, 108, 86, 69, 103, }, + [29] = { 88, 44, 100, 112, 112, 88, 70, 106, }, + [30] = { 90, 45, 100, 116, 116, 90, 72, 108, }, + }, +} +skills["Cleave"] = { + name = "Cleave", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [8] = true, [11] = true, [28] = true, [24] = true, [53] = true, }, + weaponTypes = { + ["Two Handed Axe"] = true, + ["One Handed Axe"] = true, + ["Two Handed Sword"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("Damage", "MORE", -40, 0, 0, { type = "Condition", var = "DualWielding" }), --"cleave_damage_+%_final_while_dual_wielding" = -40 + --"is_area_damage" = ? + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 10, 0, }, + [2] = { 2, 12.8, 0, }, + [3] = { 4, 15.6, 1, }, + [4] = { 7, 18.4, 1, }, + [5] = { 11, 21.2, 1, }, + [6] = { 16, 24, 2, }, + [7] = { 20, 26.8, 2, }, + [8] = { 24, 29.6, 2, }, + [9] = { 28, 32.4, 3, }, + [10] = { 32, 35.2, 3, }, + [11] = { 36, 38, 3, }, + [12] = { 40, 40.8, 4, }, + [13] = { 44, 43.6, 4, }, + [14] = { 48, 46.4, 4, }, + [15] = { 52, 49.2, 5, }, + [16] = { 56, 52, 5, }, + [17] = { 60, 54.8, 5, }, + [18] = { 64, 57.6, 6, }, + [19] = { 67, 60.4, 6, }, + [20] = { 70, 63.2, 6, }, + [21] = { 72, 66, 7, }, + [22] = { 74, 68.8, 7, }, + [23] = { 76, 71.6, 7, }, + [24] = { 78, 74.4, 8, }, + [25] = { 80, 77.2, 8, }, + [26] = { 82, 80, 8, }, + [27] = { 84, 82.8, 9, }, + [28] = { 86, 85.6, 9, }, + [29] = { 88, 88.4, 9, }, + [30] = { 90, 91.2, 10, }, + }, +} +skills["DecoyTotem"] = { + name = "Decoy Totem", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + area = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [17] = true, [12] = true, [19] = true, [11] = true, [30] = true, [26] = true, }, + skillTotemId = 6, + baseMods = { + skill("castTime", 1), + skill("cooldown", 4), + --"is_totem" = 1 + --"base_totem_duration" = 8000 + --"base_totem_range" = 60 + --"base_skill_is_totemified" = ? + --"base_deal_no_damage" = ? + --"totems_cannot_evade" = ? + --"totem_ignores_cooldown" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = mod("TotemLife", "INC", nil), --"totem_life_+%" + }, + levels = { + [1] = { 4, 9, 4, 0, }, + [2] = { 6, 10, 6, 2, }, + [3] = { 9, 10, 9, 4, }, + [4] = { 12, 12, 12, 6, }, + [5] = { 16, 14, 15, 8, }, + [6] = { 20, 17, 19, 10, }, + [7] = { 24, 18, 23, 12, }, + [8] = { 28, 19, 28, 14, }, + [9] = { 32, 21, 33, 16, }, + [10] = { 36, 24, 39, 18, }, + [11] = { 40, 26, 43, 20, }, + [12] = { 44, 28, 46, 22, }, + [13] = { 48, 30, 49, 24, }, + [14] = { 52, 30, 52, 26, }, + [15] = { 55, 31, 55, 28, }, + [16] = { 58, 33, 58, 30, }, + [17] = { 61, 34, 61, 32, }, + [18] = { 64, 34, 64, 34, }, + [19] = { 67, 34, 66, 36, }, + [20] = { 70, 35, 68, 38, }, + [21] = { 72, 36, 70, 40, }, + [22] = { 74, 37, 72, 42, }, + [23] = { 76, 37, 74, 44, }, + [24] = { 78, 38, 76, 46, }, + [25] = { 80, 38, 78, 48, }, + [26] = { 82, 39, 80, 50, }, + [27] = { 84, 40, 82, 52, }, + [28] = { 86, 40, 84, 54, }, + [29] = { 88, 41, 86, 56, }, + [30] = { 90, 42, 88, 58, }, + }, +} +skills["Determination"] = { + name = "Determination", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Armour", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"determination_aura_armour_+%_final" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 32, 0, }, + [2] = { 27, 33, 3, }, + [3] = { 30, 34, 6, }, + [4] = { 33, 35, 9, }, + [5] = { 36, 36, 12, }, + [6] = { 39, 37, 15, }, + [7] = { 42, 38, 18, }, + [8] = { 45, 39, 21, }, + [9] = { 48, 40, 23, }, + [10] = { 50, 41, 25, }, + [11] = { 52, 42, 27, }, + [12] = { 54, 43, 29, }, + [13] = { 56, 44, 31, }, + [14] = { 58, 45, 33, }, + [15] = { 60, 46, 35, }, + [16] = { 62, 47, 36, }, + [17] = { 64, 48, 37, }, + [18] = { 66, 49, 38, }, + [19] = { 68, 50, 39, }, + [20] = { 70, 51, 40, }, + [21] = { 72, 52, 41, }, + [22] = { 74, 53, 42, }, + [23] = { 76, 54, 43, }, + [24] = { 78, 55, 44, }, + [25] = { 80, 56, 45, }, + [26] = { 82, 57, 46, }, + [27] = { 84, 58, 47, }, + [28] = { 86, 59, 48, }, + [29] = { 88, 60, 49, }, + [30] = { 90, 61, 50, }, + }, +} +skills["DevouringTotem"] = { + name = "Devouring Totem", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + }, + unsupported = true, + color = 1, + baseFlags = { + }, + skillTypes = { [2] = true, [17] = true, [12] = true, [19] = true, [30] = true, }, + skillTotemId = 7, + baseMods = { + skill("castTime", 1), + --"is_totem" = 1 + --"base_totem_duration" = 8000 + --"base_totem_range" = 60 + --"base_skill_is_totemified" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + --[4] = "corpse_consumption_life_to_gain" + --[5] = "corpse_consumption_mana_to_gain" + }, + levels = { + [1] = { 4, 20, 4, 30, 9, }, + [2] = { 6, 22, 6, 39, 12, }, + [3] = { 9, 23, 9, 45, 14, }, + [4] = { 12, 25, 12, 53, 17, }, + [5] = { 16, 26, 16, 61, 19, }, + [6] = { 20, 28, 20, 70, 22, }, + [7] = { 24, 30, 24, 79, 24, }, + [8] = { 28, 31, 28, 90, 27, }, + [9] = { 32, 33, 32, 102, 29, }, + [10] = { 36, 34, 36, 115, 32, }, + [11] = { 40, 36, 40, 129, 34, }, + [12] = { 44, 37, 44, 144, 37, }, + [13] = { 48, 38, 48, 157, 40, }, + [14] = { 52, 39, 52, 173, 42, }, + [15] = { 55, 40, 55, 191, 45, }, + [16] = { 58, 41, 58, 211, 47, }, + [17] = { 61, 42, 61, 231, 50, }, + [18] = { 64, 42, 64, 253, 53, }, + [19] = { 67, 43, 67, 275, 56, }, + [20] = { 70, 44, 70, 299, 59, }, + [21] = { 72, 45, 72, 325, 62, }, + [22] = { 74, 45, 74, 352, 66, }, + [23] = { 76, 46, 76, 382, 69, }, + [24] = { 78, 46, 78, 413, 73, }, + [25] = { 80, 47, 80, 447, 76, }, + [26] = { 82, 48, 82, 483, 80, }, + [27] = { 84, 49, 84, 522, 84, }, + [28] = { 86, 50, 86, 563, 88, }, + [29] = { 88, 50, 88, 606, 92, }, + [30] = { 90, 51, 90, 652, 96, }, + }, +} +skills["DominatingBlow"] = { + name = "Dominating Blow", + gemTags = { + strength = true, + active_skill = true, + attack = true, + minion = true, + duration = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + duration = true, + }, + skillTypes = { [1] = true, [6] = true, [9] = true, [12] = true, [21] = true, [25] = true, [28] = true, [24] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [2] = true, [10] = true, [11] = true, [3] = true, [23] = true, [12] = true, [30] = true, [37] = true, [41] = true, [40] = true, [58] = true, [32] = true, [48] = true, [26] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("duration", 20), --"base_skill_effect_duration" = 20000 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", -35) }), --"active_skill_minion_damage_+%_final" = -35 + --"is_dominated" = ? + }, + qualityMods = { + mod("Damage", "INC", 0.5, 0, 0, nil), --"damage_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 12, 25, }, + [2] = { 31, 12, 27.1, }, + [3] = { 34, 12, 29.2, }, + [4] = { 37, 13, 31.3, }, + [5] = { 40, 13, 33.4, }, + [6] = { 42, 13, 35.5, }, + [7] = { 44, 14, 37.6, }, + [8] = { 46, 14, 39.7, }, + [9] = { 48, 14, 41.8, }, + [10] = { 50, 14, 43.9, }, + [11] = { 52, 14, 46, }, + [12] = { 54, 15, 48.1, }, + [13] = { 56, 15, 50.2, }, + [14] = { 58, 15, 52.3, }, + [15] = { 60, 15, 54.4, }, + [16] = { 62, 15, 56.5, }, + [17] = { 64, 15, 58.6, }, + [18] = { 66, 15, 60.7, }, + [19] = { 68, 15, 62.8, }, + [20] = { 70, 16, 64.9, }, + [21] = { 72, 16, 67, }, + [22] = { 74, 16, 69.1, }, + [23] = { 76, 16, 71.2, }, + [24] = { 78, 16, 73.3, }, + [25] = { 80, 16, 75.4, }, + [26] = { 82, 17, 77.5, }, + [27] = { 84, 17, 79.6, }, + [28] = { 86, 17, 81.7, }, + [29] = { 88, 17, 83.8, }, + [30] = { 90, 17, 85.9, }, + }, +} +skills["Earthquake"] = { + name = "Earthquake", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + duration = true, + melee = true, + }, + parts = { + { + name = "Initial impact", + }, + { + name = "Aftershock", + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [10] = true, [28] = true, [12] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + mod("Damage", "MORE", 50, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"quake_slam_fully_charged_explosion_damage_+%_final" = 50 + --"is_area_damage" = ? + skill("showAverage", true, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -10, }, + [2] = { 31, -9, }, + [3] = { 34, -8, }, + [4] = { 37, -7, }, + [5] = { 40, -6, }, + [6] = { 42, -5, }, + [7] = { 44, -4, }, + [8] = { 46, -3, }, + [9] = { 48, -2, }, + [10] = { 50, -1, }, + [11] = { 52, nil, }, + [12] = { 54, 1, }, + [13] = { 56, 2, }, + [14] = { 58, 3, }, + [15] = { 60, 4, }, + [16] = { 62, 5, }, + [17] = { 64, 6, }, + [18] = { 66, 7, }, + [19] = { 68, 8, }, + [20] = { 70, 9, }, + [21] = { 72, 10, }, + [22] = { 74, 11, }, + [23] = { 76, 12, }, + [24] = { 78, 13, }, + [25] = { 80, 14, }, + [26] = { 82, 15, }, + [27] = { 84, 16, }, + [28] = { 86, 17, }, + [29] = { 88, 18, }, + [30] = { 90, 19, }, + }, +} +skills["EnduringCry"] = { + name = "Enduring Cry", + gemTags = { + warcry = true, + strength = true, + active_skill = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + }, + skillTypes = { [5] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + skill("duration", 0.75), --"base_skill_effect_duration" = 750 + --"is_warcry" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 3), --"base_skill_area_of_effect_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "endurance_charges_granted_per_one_hundred_nearby_enemies_during_endurance_warcry" + [4] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" + }, + levels = { + [1] = { 16, 17, 8, 48, }, + [2] = { 20, 17, 10, 62, }, + [3] = { 24, 17, 12, 76, }, + [4] = { 28, 17, 14, 94, }, + [5] = { 31, 18, 16, 108, }, + [6] = { 34, 18, 18, 122, }, + [7] = { 37, 18, 20, 140, }, + [8] = { 40, 19, 22, 158, }, + [9] = { 43, 19, 24, 176, }, + [10] = { 46, 19, 26, 196, }, + [11] = { 49, 20, 27, 216, }, + [12] = { 52, 20, 28, 238, }, + [13] = { 55, 20, 29, 262, }, + [14] = { 58, 20, 30, 286, }, + [15] = { 60, 20, 31, 302, }, + [16] = { 62, 21, 32, 320, }, + [17] = { 64, 21, 33, 338, }, + [18] = { 66, 21, 34, 356, }, + [19] = { 68, 21, 35, 374, }, + [20] = { 70, 21, 36, 394, }, + [21] = { 72, 22, 37, 414, }, + [22] = { 74, 22, 38, 434, }, + [23] = { 76, 22, 39, 454, }, + [24] = { 78, 22, 40, 476, }, + [25] = { 80, 22, 41, 498, }, + [26] = { 82, 23, 42, 520, }, + [27] = { 84, 23, 43, 544, }, + [28] = { 86, 23, 44, 566, }, + [29] = { 88, 23, 45, 590, }, + [30] = { 90, 23, 46, 614, }, + }, +} +skills["FlameTotem"] = { + name = "Flame Totem", + gemTags = { + projectile = true, + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + projectile = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, + skillTotemId = 8, + baseMods = { + skill("castTime", 0.25), + skill("damageEffectiveness", 0.25), + skill("critChance", 5), + --"base_totem_duration" = 8000 + --"base_totem_range" = 100 + --"is_totem" = ? + --"base_skill_is_totemified" = ? + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [5] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [6] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 4, 12, 4, 1, 2, 0, }, + [2] = { 6, 14, 6, 1, 3, 0, }, + [3] = { 9, 16, 9, 2, 4, 0, }, + [4] = { 12, 17, 12, 3, 5, 0, }, + [5] = { 16, 19, 16, 4, 7, 1, }, + [6] = { 20, 21, 20, 6, 10, 1, }, + [7] = { 24, 23, 24, 9, 13, 1, }, + [8] = { 28, 24, 28, 11, 17, 1, }, + [9] = { 32, 26, 32, 14, 22, 2, }, + [10] = { 36, 29, 36, 18, 28, 2, }, + [11] = { 40, 31, 40, 24, 35, 2, }, + [12] = { 44, 32, 44, 30, 45, 2, }, + [13] = { 48, 33, 48, 37, 56, 2, }, + [14] = { 52, 34, 52, 47, 70, 2, }, + [15] = { 55, 36, 55, 55, 83, 2, }, + [16] = { 58, 37, 58, 65, 97, 2, }, + [17] = { 61, 39, 61, 76, 114, 2, }, + [18] = { 64, 40, 64, 89, 134, 2, }, + [19] = { 67, 41, 67, 105, 157, 2, }, + [20] = { 70, 42, 70, 122, 183, 2, }, + [21] = { 72, 43, 72, 136, 203, 2, }, + [22] = { 74, 44, 74, 150, 225, 2, }, + [23] = { 76, 45, 76, 166, 249, 2, }, + [24] = { 78, 46, 78, 184, 276, 2, }, + [25] = { 80, 47, 80, 204, 305, 2, }, + [26] = { 82, 48, 82, 225, 338, 2, }, + [27] = { 84, 49, 84, 249, 373, 2, }, + [28] = { 86, 50, 86, 275, 412, 2, }, + [29] = { 88, 51, 88, 303, 455, 2, }, + [30] = { 90, 52, 90, 335, 502, 2, }, + }, +} +skills["GlacialHammer"] = { + name = "Glacial Hammer", + gemTags = { + strength = true, + active_skill = true, + attack = true, + melee = true, + cold = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + cold = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [53] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 + mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 + mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 + }, + qualityMods = { + mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 + mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 40, }, + [2] = { 2, 42.2, }, + [3] = { 4, 44.4, }, + [4] = { 7, 46.6, }, + [5] = { 11, 48.8, }, + [6] = { 16, 51, }, + [7] = { 20, 53.2, }, + [8] = { 24, 55.4, }, + [9] = { 28, 57.6, }, + [10] = { 32, 59.8, }, + [11] = { 36, 62, }, + [12] = { 40, 64.2, }, + [13] = { 44, 66.4, }, + [14] = { 48, 68.6, }, + [15] = { 52, 70.8, }, + [16] = { 56, 73, }, + [17] = { 60, 75.2, }, + [18] = { 64, 77.4, }, + [19] = { 67, 79.6, }, + [20] = { 70, 81.8, }, + [21] = { 72, 84, }, + [22] = { 74, 86.2, }, + [23] = { 76, 88.4, }, + [24] = { 78, 90.6, }, + [25] = { 80, 92.8, }, + [26] = { 82, 95, }, + [27] = { 84, 97.2, }, + [28] = { 86, 99.4, }, + [29] = { 88, 101.6, }, + [30] = { 90, 103.8, }, + }, +} +skills["VaalGlacialHammer"] = { + name = "Vaal Glacial Hammer", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + attack = true, + melee = true, + duration = true, + area = true, + cold = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + cold = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [11] = true, [43] = true, [34] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 + mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 + mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 + }, + qualityMods = { + mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 + mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 1, 50, 3.4, }, + [2] = { 2, 51.8, 3.45, }, + [3] = { 4, 53.6, 3.5, }, + [4] = { 7, 55.4, 3.55, }, + [5] = { 11, 57.2, 3.6, }, + [6] = { 16, 59, 3.65, }, + [7] = { 20, 60.8, 3.7, }, + [8] = { 24, 62.6, 3.75, }, + [9] = { 28, 64.4, 3.8, }, + [10] = { 32, 66.2, 3.85, }, + [11] = { 36, 68, 3.9, }, + [12] = { 40, 69.8, 3.95, }, + [13] = { 44, 71.6, 4, }, + [14] = { 48, 73.4, 4.05, }, + [15] = { 52, 75.2, 4.1, }, + [16] = { 56, 77, 4.15, }, + [17] = { 60, 78.8, 4.2, }, + [18] = { 64, 80.6, 4.25, }, + [19] = { 67, 82.4, 4.3, }, + [20] = { 70, 84.2, 4.35, }, + [21] = { 72, 86, 4.4, }, + [22] = { 74, 87.8, 4.45, }, + [23] = { 76, 89.6, 4.5, }, + [24] = { 78, 91.4, 4.55, }, + [25] = { 80, 93.2, 4.6, }, + [26] = { 82, 95, 4.65, }, + [27] = { 84, 96.8, 4.7, }, + [28] = { 86, 98.6, 4.75, }, + [29] = { 88, 100.4, 4.8, }, + [30] = { 90, 102.2, 4.85, }, + }, +} +skills["GroundSlam"] = { + name = "Ground Slam", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 + --"is_area_damage" = ? + }, + qualityMods = { + mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, -10, 0, }, + [2] = { 2, -8.4, 0, }, + [3] = { 4, -6.8, 1, }, + [4] = { 7, -5.2, 1, }, + [5] = { 11, -3.6, 1, }, + [6] = { 16, -2, 2, }, + [7] = { 20, -0.4, 2, }, + [8] = { 24, 1.2, 2, }, + [9] = { 28, 2.8, 3, }, + [10] = { 32, 4.4, 3, }, + [11] = { 36, 6, 3, }, + [12] = { 40, 7.6, 4, }, + [13] = { 44, 9.2, 4, }, + [14] = { 48, 10.8, 4, }, + [15] = { 52, 12.4, 5, }, + [16] = { 56, 14, 5, }, + [17] = { 60, 15.6, 5, }, + [18] = { 64, 17.2, 6, }, + [19] = { 67, 18.8, 6, }, + [20] = { 70, 20.4, 6, }, + [21] = { 72, 22, 7, }, + [22] = { 74, 23.6, 7, }, + [23] = { 76, 25.2, 7, }, + [24] = { 78, 26.8, 8, }, + [25] = { 80, 28.4, 8, }, + [26] = { 82, 30, 8, }, + [27] = { 84, 31.6, 9, }, + [28] = { 86, 33.2, 9, }, + [29] = { 88, 34.8, 9, }, + [30] = { 90, 36.4, 10, }, + }, +} +skills["VaalGroundSlam"] = { + name = "Vaal Ground Slam", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + --"knockback_distance_+%" = 100 + --"animation_effect_variation" = -1 + mod("AreaOfEffect", "INC", 20), --"base_skill_area_of_effect_+%" = 20 + --"always_stun" = ? + --"global_knockback" = ? + --"is_area_damage" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 60, }, + [2] = { 2, 62, }, + [3] = { 4, 64, }, + [4] = { 7, 66, }, + [5] = { 11, 68, }, + [6] = { 16, 70, }, + [7] = { 20, 72, }, + [8] = { 24, 74, }, + [9] = { 28, 76, }, + [10] = { 32, 78, }, + [11] = { 36, 80, }, + [12] = { 40, 82, }, + [13] = { 44, 84, }, + [14] = { 48, 86, }, + [15] = { 52, 88, }, + [16] = { 56, 90, }, + [17] = { 60, 92, }, + [18] = { 64, 94, }, + [19] = { 67, 96, }, + [20] = { 70, 98, }, + [21] = { 72, 100, }, + [22] = { 74, 102, }, + [23] = { 76, 104, }, + [24] = { 78, 106, }, + [25] = { 80, 108, }, + [26] = { 82, 110, }, + [27] = { 84, 112, }, + [28] = { 86, 114, }, + [29] = { 88, 116, }, + [30] = { 90, 118, }, + }, +} +skills["HeavyStrike"] = { + name = "Heavy Strike", + gemTags = { + strength = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["One Handed Axe"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + --"global_knockback" = 1 + mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 + }, + qualityMods = { + mod("EnemyStunDuration", "INC", 1), --"base_stun_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 50, }, + [2] = { 2, 52.3, }, + [3] = { 4, 54.6, }, + [4] = { 7, 56.9, }, + [5] = { 11, 59.2, }, + [6] = { 16, 61.5, }, + [7] = { 20, 63.8, }, + [8] = { 24, 66.1, }, + [9] = { 28, 68.4, }, + [10] = { 32, 70.7, }, + [11] = { 36, 73, }, + [12] = { 40, 75.3, }, + [13] = { 44, 77.6, }, + [14] = { 48, 79.9, }, + [15] = { 52, 82.2, }, + [16] = { 56, 84.5, }, + [17] = { 60, 86.8, }, + [18] = { 64, 89.1, }, + [19] = { 67, 91.4, }, + [20] = { 70, 93.7, }, + [21] = { 72, 96, }, + [22] = { 74, 98.3, }, + [23] = { 76, 100.6, }, + [24] = { 78, 102.9, }, + [25] = { 80, 105.2, }, + [26] = { 82, 107.5, }, + [27] = { 84, 109.8, }, + [28] = { 86, 112.1, }, + [29] = { 88, 114.4, }, + [30] = { 90, 116.7, }, + }, +} +skills["HeraldOfAsh"] = { + name = "Herald of Ash", + gemTags = { + strength = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [5] = true, [15] = true, [16] = true, [29] = true, [11] = true, [40] = true, [20] = true, [33] = true, [27] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 25), + skill("cooldown", 1), + mod("PhysicalDamageGainAsFire", "BASE", 15, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_fire" = 15 + --"is_area_damage" = ? + }, + qualityMods = { + mod("FireDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ash_fire_damage_+%" = 0.75 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "herald_of_ash_%_overkill_dealt_as_ignite" + }, + levels = { + [1] = { 16, 80, }, + [2] = { 20, 83, }, + [3] = { 24, 86, }, + [4] = { 28, 89, }, + [5] = { 31, 92, }, + [6] = { 34, 95, }, + [7] = { 37, 98, }, + [8] = { 40, 101, }, + [9] = { 43, 104, }, + [10] = { 46, 107, }, + [11] = { 49, 110, }, + [12] = { 52, 113, }, + [13] = { 55, 116, }, + [14] = { 58, 119, }, + [15] = { 60, 122, }, + [16] = { 62, 125, }, + [17] = { 64, 128, }, + [18] = { 66, 131, }, + [19] = { 68, 134, }, + [20] = { 70, 137, }, + [21] = { 72, 140, }, + [22] = { 74, 143, }, + [23] = { 76, 146, }, + [24] = { 78, 149, }, + [25] = { 80, 152, }, + [26] = { 82, 155, }, + [27] = { 84, 158, }, + [28] = { 86, 161, }, + [29] = { 88, 164, }, + [30] = { 90, 167, }, + }, +} +skills["IceCrash"] = { + name = "Ice Crash", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + cold = true, + melee = true, + }, + parts = { + { + name = "First Hit", + }, + { + name = "Second Hit", + }, + { + name = "Third Hit", + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + cold = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [34] = true, }, + weaponTypes = { + ["None"] = true, + ["Two Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + mod("PhysicalDamageConvertToCold", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 50 + mod("Speed", "MORE", -20, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -20 + mod("Damage", "MORE", -10, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"ice_crash_second_hit_damage_+%_final" = -10 + mod("Damage", "MORE", -20, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"ice_crash_third_hit_damage_+%_final" = -20 + --"is_area_damage" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 70, }, + [2] = { 31, 72, }, + [3] = { 34, 74, }, + [4] = { 37, 76, }, + [5] = { 40, 78, }, + [6] = { 42, 80, }, + [7] = { 44, 82, }, + [8] = { 46, 84, }, + [9] = { 48, 86, }, + [10] = { 50, 88, }, + [11] = { 52, 90, }, + [12] = { 54, 92, }, + [13] = { 56, 94, }, + [14] = { 58, 96, }, + [15] = { 60, 98, }, + [16] = { 62, 100, }, + [17] = { 64, 102, }, + [18] = { 66, 104, }, + [19] = { 68, 106, }, + [20] = { 70, 108, }, + [21] = { 72, 110, }, + [22] = { 74, 112, }, + [23] = { 76, 114, }, + [24] = { 78, 116, }, + [25] = { 80, 118, }, + [26] = { 82, 120, }, + [27] = { 84, 122, }, + [28] = { 86, 124, }, + [29] = { 88, 116, }, + [30] = { 90, 118, }, + }, +} +skills["ImmortalCall"] = { + name = "Immortal Call", + gemTags = { + strength = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("cooldown", 3), + skill("duration", 0.4), --"base_skill_effect_duration" = 400 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" + }, + levels = { + [1] = { 34, 21, 100, }, + [2] = { 36, 22, 103, }, + [3] = { 38, 23, 106, }, + [4] = { 40, 24, 109, }, + [5] = { 42, 25, 112, }, + [6] = { 44, 25, 115, }, + [7] = { 46, 26, 118, }, + [8] = { 48, 27, 121, }, + [9] = { 50, 28, 124, }, + [10] = { 52, 29, 127, }, + [11] = { 54, 30, 130, }, + [12] = { 56, 31, 133, }, + [13] = { 58, 31, 136, }, + [14] = { 60, 32, 139, }, + [15] = { 62, 33, 142, }, + [16] = { 64, 34, 145, }, + [17] = { 66, 35, 148, }, + [18] = { 68, 36, 151, }, + [19] = { 69, 36, 154, }, + [20] = { 70, 36, 157, }, + [21] = { 72, 37, 160, }, + [22] = { 74, 38, 163, }, + [23] = { 76, 39, 166, }, + [24] = { 78, 40, 169, }, + [25] = { 80, 41, 172, }, + [26] = { 82, 41, 175, }, + [27] = { 84, 42, 178, }, + [28] = { 86, 43, 181, }, + [29] = { 88, 44, 184, }, + [30] = { 90, 45, 187, }, + }, +} +skills["VaalImmortalCall"] = { + name = "Vaal Immortal Call", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + spell = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [43] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("cooldown", 3), + skill("duration", 0.4), --"base_skill_effect_duration" = 400 + --"immortal_call_prevent_all_damage" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" + }, + levels = { + [1] = { 34, 100, }, + [2] = { 36, 103, }, + [3] = { 38, 106, }, + [4] = { 40, 109, }, + [5] = { 42, 112, }, + [6] = { 44, 115, }, + [7] = { 46, 118, }, + [8] = { 48, 121, }, + [9] = { 50, 124, }, + [10] = { 52, 127, }, + [11] = { 54, 130, }, + [12] = { 56, 133, }, + [13] = { 58, 136, }, + [14] = { 60, 139, }, + [15] = { 62, 142, }, + [16] = { 64, 145, }, + [17] = { 66, 148, }, + [18] = { 68, 151, }, + [19] = { 69, 154, }, + [20] = { 70, 157, }, + [21] = { 72, 160, }, + [22] = { 74, 163, }, + [23] = { 76, 166, }, + [24] = { 78, 169, }, + [25] = { 80, 172, }, + [26] = { 82, 175, }, + [27] = { 84, 178, }, + [28] = { 86, 181, }, + [29] = { 88, 184, }, + [30] = { 90, 187, }, + }, +} +skills["InfernalBlow"] = { + name = "Infernal Blow", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + fire = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + fire = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [25] = true, [28] = true, [24] = true, [33] = true, }, + weaponTypes = { + ["None"] = true, + ["Staff"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + skill("critChance", 5), + mod("SkillPhysicalDamageConvertToFire", "BASE", 50), --"skill_physical_damage_%_to_convert_to_fire" = 50 + skill("duration", 0.5), --"base_skill_effect_duration" = 500 + --"corpse_explosion_monster_life_%" = 10 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 30, }, + [2] = { 2, 31.6, }, + [3] = { 4, 33.2, }, + [4] = { 7, 34.8, }, + [5] = { 11, 36.4, }, + [6] = { 16, 38, }, + [7] = { 20, 39.6, }, + [8] = { 24, 41.2, }, + [9] = { 28, 42.8, }, + [10] = { 32, 44.4, }, + [11] = { 36, 46, }, + [12] = { 40, 47.6, }, + [13] = { 44, 49.2, }, + [14] = { 48, 50.8, }, + [15] = { 52, 52.4, }, + [16] = { 56, 54, }, + [17] = { 60, 55.6, }, + [18] = { 64, 57.2, }, + [19] = { 67, 58.8, }, + [20] = { 70, 60.4, }, + [21] = { 72, 62, }, + [22] = { 74, 63.6, }, + [23] = { 76, 65.2, }, + [24] = { 78, 66.8, }, + [25] = { 80, 68.4, }, + [26] = { 82, 70, }, + [27] = { 84, 71.6, }, + [28] = { 86, 73.2, }, + [29] = { 88, 74.8, }, + [30] = { 90, 76.4, }, + }, +} +skills["LeapSlam"] = { + name = "Leap Slam", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + movement = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Two Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1.4), + skill("manaCost", 15), + --"base_global_chance_to_knockback_%" = 20 + --"is_area_damage" = ? + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + }, + qualityMods = { + --"base_global_chance_to_knockback_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, nil, }, + [2] = { 13, 1.2, }, + [3] = { 17, 2.4, }, + [4] = { 21, 3.6, }, + [5] = { 25, 4.8, }, + [6] = { 29, 6, }, + [7] = { 33, 7.2, }, + [8] = { 36, 8.4, }, + [9] = { 39, 9.6, }, + [10] = { 42, 10.8, }, + [11] = { 45, 12, }, + [12] = { 48, 13.2, }, + [13] = { 51, 14.4, }, + [14] = { 54, 15.6, }, + [15] = { 57, 16.8, }, + [16] = { 60, 18, }, + [17] = { 63, 19.2, }, + [18] = { 66, 20.4, }, + [19] = { 68, 21.6, }, + [20] = { 70, 22.8, }, + [21] = { 72, 24, }, + [22] = { 74, 25.2, }, + [23] = { 76, 26.4, }, + [24] = { 78, 27.6, }, + [25] = { 80, 28.8, }, + [26] = { 82, 30, }, + [27] = { 84, 31.2, }, + [28] = { 86, 32.4, }, + [29] = { 88, 33.6, }, + [30] = { 90, 34.8, }, + }, +} +skills["MoltenShell"] = { + name = "Molten Shell", + gemTags = { + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [36] = true, [26] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 2), + skill("critChance", 5), + mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 + --"is_area_damage" = 1 + skill("duration", 10), --"base_skill_effect_duration" = 10000 + --"skill_override_pvp_scaling_time_ms" = 1200 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[5] = "fire_shield_damage_threshold" + [6] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" + }, + levels = { + [1] = { 4, 8, 14, 20, 26, 17, }, + [2] = { 6, 9, 17, 26, 32, 20, }, + [3] = { 9, 9, 24, 35, 41, 26, }, + [4] = { 12, 10, 32, 47, 52, 33, }, + [5] = { 16, 11, 45, 68, 70, 44, }, + [6] = { 20, 12, 64, 96, 93, 58, }, + [7] = { 24, 13, 88, 132, 120, 75, }, + [8] = { 28, 14, 120, 180, 155, 97, }, + [9] = { 32, 16, 161, 241, 197, 123, }, + [10] = { 36, 17, 214, 321, 250, 156, }, + [11] = { 40, 19, 283, 425, 313, 196, }, + [12] = { 44, 20, 372, 558, 391, 245, }, + [13] = { 48, 22, 486, 729, 487, 304, }, + [14] = { 52, 23, 631, 947, 602, 376, }, + [15] = { 55, 25, 766, 1149, 705, 440, }, + [16] = { 58, 25, 928, 1392, 823, 515, }, + [17] = { 61, 26, 1122, 1683, 960, 600, }, + [18] = { 64, 27, 1354, 2031, 1118, 698, }, + [19] = { 67, 27, 1631, 2447, 1299, 812, }, + [20] = { 70, 28, 1962, 2943, 1508, 943, }, + [21] = { 72, 29, 2217, 3326, 1664, 1040, }, + [22] = { 74, 29, 2504, 3756, 1836, 1148, }, + [23] = { 76, 29, 2827, 4240, 2024, 1265, }, + [24] = { 78, 30, 3189, 4784, 2231, 1394, }, + [25] = { 80, 30, 3596, 5394, 2457, 1536, }, + [26] = { 82, 31, 4053, 6080, 2705, 1691, }, + [27] = { 84, 31, 4566, 6849, 2977, 1861, }, + [28] = { 86, 31, 5141, 7712, 3275, 2047, }, + [29] = { 88, 32, 5787, 8680, 3601, 2251, }, + [30] = { 90, 32, 6510, 9766, 3958, 2474, }, + }, +} +skills["VaalMoltenShell"] = { + name = "Vaal Molten Shell", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [26] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 2), + skill("critChance", 5), + mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 + --"is_area_damage" = 1 + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"skill_override_pvp_scaling_time_ms" = 1400 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"molten_shell_explode_each_hit" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [4] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" + }, + levels = { + [1] = { 4, 9, 14, 17, }, + [2] = { 6, 11, 17, 20, }, + [3] = { 9, 15, 23, 26, }, + [4] = { 12, 20, 30, 33, }, + [5] = { 16, 27, 41, 44, }, + [6] = { 20, 37, 56, 58, }, + [7] = { 24, 49, 74, 75, }, + [8] = { 28, 64, 96, 97, }, + [9] = { 32, 83, 124, 123, }, + [10] = { 36, 106, 159, 156, }, + [11] = { 40, 135, 202, 196, }, + [12] = { 44, 170, 256, 245, }, + [13] = { 48, 214, 321, 304, }, + [14] = { 52, 267, 401, 376, }, + [15] = { 55, 315, 472, 440, }, + [16] = { 58, 370, 556, 515, }, + [17] = { 61, 435, 652, 600, }, + [18] = { 64, 509, 764, 698, }, + [19] = { 67, 596, 893, 812, }, + [20] = { 70, 696, 1043, 943, }, + [21] = { 72, 771, 1156, 1040, }, + [22] = { 74, 854, 1280, 1148, }, + [23] = { 76, 945, 1417, 1265, }, + [24] = { 78, 1045, 1568, 1394, }, + [25] = { 80, 1155, 1733, 1536, }, + [26] = { 82, 1277, 1915, 1691, }, + [27] = { 84, 1410, 2115, 1861, }, + [28] = { 86, 1557, 2335, 2047, }, + [29] = { 88, 1718, 2577, 2251, }, + [30] = { 90, 1895, 2843, 2474, }, + }, +} +skills["MoltenStrike"] = { + name = "Molten Strike", + gemTags = { + projectile = true, + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + fire = true, + }, + parts = { + { + name = "Melee Hit", + melee = true, + projectile = false, + area = false, + }, + { + name = "Magma Balls", + melee = false, + projectile = true, + area = true, + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [1] = true, [3] = true, [6] = true, [11] = true, [24] = true, [25] = true, [28] = true, [33] = true, [48] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("SkillPhysicalDamageConvertToFire", "BASE", 60), --"skill_physical_damage_%_to_convert_to_fire" = 60 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + mod("Damage", "MORE", -40, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -40 + --"show_number_of_projectiles" = ? + }, + qualityMods = { + mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 20, }, + [2] = { 2, 21.4, }, + [3] = { 4, 22.8, }, + [4] = { 7, 24.2, }, + [5] = { 11, 25.6, }, + [6] = { 16, 27, }, + [7] = { 20, 28.4, }, + [8] = { 24, 29.8, }, + [9] = { 28, 31.2, }, + [10] = { 32, 32.6, }, + [11] = { 36, 34, }, + [12] = { 40, 35.4, }, + [13] = { 44, 36.8, }, + [14] = { 48, 38.2, }, + [15] = { 52, 39.6, }, + [16] = { 56, 41, }, + [17] = { 60, 42.4, }, + [18] = { 64, 43.8, }, + [19] = { 67, 45.2, }, + [20] = { 70, 46.6, }, + [21] = { 72, 48, }, + [22] = { 74, 49.4, }, + [23] = { 76, 50.8, }, + [24] = { 78, 52.2, }, + [25] = { 80, 53.6, }, + [26] = { 82, 55, }, + [27] = { 84, 56.4, }, + [28] = { 86, 57.8, }, + [29] = { 88, 59.2, }, + [30] = { 90, 60.6, }, + }, +} +skills["Punishment"] = { + name = "Punishment", + gemTags = { + curse = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"newpunishment_applied_buff_duration_ms" = 4000 + }, + qualityMods = { + mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" = 0.25 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_melee_damage_+%_final" + [5] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" + [6] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 24, 9, 25, 10, 0, }, + [2] = { 27, 26, 9.1, 26, 10, 4, }, + [3] = { 30, 27, 9.2, 26, 11, 8, }, + [4] = { 33, 29, 9.3, 27, 11, 12, }, + [5] = { 36, 30, 9.4, 27, 12, 16, }, + [6] = { 39, 32, 9.5, 28, 12, 20, }, + [7] = { 42, 34, 9.6, 28, 13, 24, }, + [8] = { 45, 35, 9.7, 29, 13, 28, }, + [9] = { 48, 37, 9.8, 29, 14, 32, }, + [10] = { 50, 38, 9.9, 30, 14, 36, }, + [11] = { 52, 39, 10, 30, 15, 40, }, + [12] = { 54, 40, 10.1, 31, 15, 44, }, + [13] = { 56, 42, 10.2, 31, 16, 48, }, + [14] = { 58, 43, 10.3, 32, 16, 52, }, + [15] = { 60, 44, 10.4, 32, 17, 56, }, + [16] = { 62, 45, 10.5, 33, 17, 60, }, + [17] = { 64, 46, 10.6, 33, 18, 64, }, + [18] = { 66, 47, 10.7, 34, 18, 68, }, + [19] = { 68, 48, 10.8, 34, 19, 72, }, + [20] = { 70, 50, 10.9, 35, 19, 76, }, + [21] = { 72, 51, 11, 35, 20, 80, }, + [22] = { 74, 52, 11.1, 36, 20, 84, }, + [23] = { 76, 53, 11.2, 36, 21, 88, }, + [24] = { 78, 54, 11.3, 37, 21, 92, }, + [25] = { 80, 56, 11.4, 37, 22, 96, }, + [26] = { 82, 57, 11.5, 38, 22, 100, }, + [27] = { 84, 58, 11.6, 38, 23, 104, }, + [28] = { 86, 59, 11.7, 39, 23, 108, }, + [29] = { 88, 60, 11.8, 39, 24, 112, }, + [30] = { 90, 61, 11.9, 40, 24, 116, }, + }, +} +skills["FireResistAura"] = { + name = "Purity of Fire", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_fire_damage_resistance_%" + [3] = mod("FireResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 22, 0, 0, }, + [2] = { 27, 23, 0, 3, }, + [3] = { 30, 24, 0, 6, }, + [4] = { 33, 25, 0, 9, }, + [5] = { 36, 26, 1, 12, }, + [6] = { 39, 27, 1, 15, }, + [7] = { 42, 28, 1, 18, }, + [8] = { 45, 29, 1, 21, }, + [9] = { 48, 30, 1, 23, }, + [10] = { 50, 31, 1, 25, }, + [11] = { 52, 32, 2, 27, }, + [12] = { 54, 33, 2, 29, }, + [13] = { 56, 34, 2, 31, }, + [14] = { 58, 35, 2, 33, }, + [15] = { 60, 36, 2, 35, }, + [16] = { 62, 37, 2, 36, }, + [17] = { 64, 38, 3, 37, }, + [18] = { 66, 39, 3, 38, }, + [19] = { 68, 40, 3, 39, }, + [20] = { 70, 41, 4, 40, }, + [21] = { 72, 42, 4, 41, }, + [22] = { 74, 43, 4, 42, }, + [23] = { 76, 44, 5, 43, }, + [24] = { 78, 45, 5, 44, }, + [25] = { 80, 46, 5, 45, }, + [26] = { 82, 47, 5, 46, }, + [27] = { 84, 48, 5, 47, }, + [28] = { 86, 49, 5, 48, }, + [29] = { 88, 50, 5, 49, }, + [30] = { 90, 51, 5, 50, }, + }, +} +skills["RallyingCry"] = { + name = "Rallying Cry", + gemTags = { + warcry = true, + strength = true, + active_skill = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + }, + skillTypes = { [5] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + skill("duration", 8), --"base_skill_effect_duration" = 8000 + --"base_deal_no_damage" = ? + --"is_warcry" = ? + }, + qualityMods = { + mod("Duration", "INC", 1.5), --"skill_effect_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "inspiring_cry_damage_+%_per_one_hundred_nearby_enemies" + [4] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"damage_+%" + [5] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_mana_regeneration_rate_per_minute" + }, + levels = { + [1] = { 10, 8, 140, 10, 1.8, }, + [2] = { 13, 10, 142, 10, 2.4, }, + [3] = { 17, 12, 144, 11, 3.1, }, + [4] = { 21, 13, 146, 11, 3.8, }, + [5] = { 25, 14, 148, 11, 4.4, }, + [6] = { 29, 15, 150, 12, 5.1, }, + [7] = { 33, 16, 152, 12, 5.8, }, + [8] = { 36, 17, 154, 12, 6.5, }, + [9] = { 39, 18, 156, 13, 7.1, }, + [10] = { 42, 20, 158, 13, 7.8, }, + [11] = { 45, 21, 160, 13, 8.5, }, + [12] = { 48, 22, 162, 14, 9.2, }, + [13] = { 51, 24, 164, 14, 9.9, }, + [14] = { 54, 25, 166, 14, 10.6, }, + [15] = { 57, 26, 168, 15, 11.3, }, + [16] = { 60, 26, 170, 15, 12, }, + [17] = { 63, 26, 172, 15, 12.7, }, + [18] = { 66, 26, 174, 16, 13.4, }, + [19] = { 68, 27, 176, 16, 14.1, }, + [20] = { 70, 27, 178, 16, 14.8, }, + [21] = { 72, 28, 180, 17, 15.5, }, + [22] = { 74, 28, 182, 17, 16.2, }, + [23] = { 76, 29, 184, 17, 16.9, }, + [24] = { 78, 29, 186, 18, 17.7, }, + [25] = { 80, 30, 188, 18, 18.4, }, + [26] = { 82, 30, 190, 18, 19.1, }, + [27] = { 84, 30, 192, 19, 19.8, }, + [28] = { 86, 30, 194, 19, 20.5, }, + [29] = { 88, 31, 196, 19, 21.3, }, + [30] = { 90, 31, 198, 20, 22, }, + }, +} +skills["Reckoning"] = { + name = "Reckoning", + gemTags = { + trigger = true, + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + area = true, + melee = true, + }, + skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [47] = true, [57] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Claw"] = true, + ["One Handed Axe"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 0.4), + --"melee_counterattack_trigger_on_block_%" = 100 + --"shield_counterattack_aoe_range" = 35 + --"attack_unusable_if_triggerable" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 4, -30, }, + [2] = { 6, -28, }, + [3] = { 9, -26, }, + [4] = { 12, -24, }, + [5] = { 16, -22, }, + [6] = { 20, -20, }, + [7] = { 24, -18, }, + [8] = { 28, -16, }, + [9] = { 32, -14, }, + [10] = { 36, -12, }, + [11] = { 40, -10, }, + [12] = { 44, -8, }, + [13] = { 48, -6, }, + [14] = { 52, -4, }, + [15] = { 55, -2, }, + [16] = { 58, nil, }, + [17] = { 61, 2, }, + [18] = { 64, 4, }, + [19] = { 67, 6, }, + [20] = { 70, 8, }, + [21] = { 72, 10, }, + [22] = { 74, 12, }, + [23] = { 76, 14, }, + [24] = { 78, 16, }, + [25] = { 80, 18, }, + [26] = { 82, 20, }, + [27] = { 84, 22, }, + [28] = { 86, 24, }, + [29] = { 88, 26, }, + [30] = { 90, 28, }, + }, +} +skills["RejuvenationTotem"] = { + name = "Rejuvenation Totem", + gemTags = { + totem = true, + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + totem = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [12] = true, [15] = true, [27] = true, [17] = true, [19] = true, [30] = true, [44] = true, }, + skillTotemId = 4, + baseMods = { + skill("castTime", 0.6), + --"is_totem" = 1 + --"base_totem_duration" = 8000 + --"base_totem_range" = 10 + --"base_skill_is_totemified" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 3, 0, KeywordFlag.Aura), --"base_aura_area_of_effect_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_life_regeneration_rate_per_minute" + [4] = skill("totemLevel", nil), --"base_active_skill_totem_level" + }, + levels = { + [1] = { 4, 13, 6.35, 4, }, + [2] = { 6, 14, 8.6833333333333, 6, }, + [3] = { 9, 15, 12.366666666667, 9, }, + [4] = { 12, 16, 16, 12, }, + [5] = { 16, 17, 21.033333333333, 16, }, + [6] = { 20, 18, 26.3, 20, }, + [7] = { 24, 19, 32.25, 24, }, + [8] = { 28, 20, 39.366666666667, 28, }, + [9] = { 32, 22, 46.116666666667, 32, }, + [10] = { 36, 24, 53.7, 36, }, + [11] = { 40, 26, 61.816666666667, 40, }, + [12] = { 44, 27, 72.8, 44, }, + [13] = { 48, 28, 82.716666666667, 48, }, + [14] = { 52, 29, 92.666666666667, 52, }, + [15] = { 55, 30, 102.85, 55, }, + [16] = { 58, 30, 113.98333333333, 58, }, + [17] = { 61, 31, 122.95, 61, }, + [18] = { 64, 31, 135.6, 64, }, + [19] = { 67, 32, 149.03333333333, 67, }, + [20] = { 70, 32, 162.2, 70, }, + [21] = { 72, 33, 168.61666666667, 72, }, + [22] = { 74, 34, 177.03333333333, 74, }, + [23] = { 76, 34, 182.1, 76, }, + [24] = { 78, 35, 191.2, 78, }, + [25] = { 80, 36, 200.66666666667, 80, }, + [26] = { 82, 37, 206.03333333333, 82, }, + [27] = { 84, 38, 217.43333333333, 84, }, + [28] = { 86, 38, 227.95, 86, }, + [29] = { 88, 39, 241.21666666667, 88, }, + [30] = { 90, 40, 243.65, 90, }, + }, +} +skills["SearingBond"] = { + name = "Searing Bond", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [40] = true, [12] = true, [17] = true, [19] = true, [27] = true, [29] = true, [30] = true, [36] = true, [33] = true, }, + skillTotemId = 9, + baseMods = { + skill("castTime", 1), + --"base_totem_duration" = 8000 + --"base_totem_range" = 100 + mod("ActiveTotemLimit", "BASE", 1), --"number_of_additional_totems_allowed" = 1 + --"is_totem" = ? + --"base_skill_is_totemified" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 12, 18, 12, 23.583333333333, }, + [2] = { 15, 19, 15, 31.35, }, + [3] = { 19, 20, 19, 44.816666666667, }, + [4] = { 23, 21, 23, 62.833333333333, }, + [5] = { 27, 23, 27, 86.783333333333, }, + [6] = { 31, 25, 31, 118.43333333333, }, + [7] = { 35, 27, 35, 160.06666666667, }, + [8] = { 38, 29, 38, 199.58333333333, }, + [9] = { 41, 31, 41, 247.88333333333, }, + [10] = { 44, 33, 44, 306.76666666667, }, + [11] = { 47, 35, 47, 378.48333333333, }, + [12] = { 50, 37, 50, 465.65, }, + [13] = { 53, 39, 53, 571.45, }, + [14] = { 56, 40, 56, 699.7, }, + [15] = { 59, 42, 59, 854.93333333333, }, + [16] = { 62, 44, 62, 1042.6166666667, }, + [17] = { 64, 46, 64, 1188.95, }, + [18] = { 66, 48, 66, 1354.8333333333, }, + [19] = { 68, 50, 68, 1542.7666666667, }, + [20] = { 70, 51, 70, 1755.6333333333, }, + [21] = { 72, 53, 72, 1996.5833333333, }, + [22] = { 74, 53, 74, 2269.2666666667, }, + [23] = { 76, 54, 76, 2577.7166666667, }, + [24] = { 78, 56, 78, 2926.5, }, + [25] = { 80, 58, 80, 3320.75, }, + [26] = { 82, 59, 82, 3766.2333333333, }, + [27] = { 84, 59, 84, 4269.4666666667, }, + [28] = { 86, 61, 86, 4837.7333333333, }, + [29] = { 88, 62, 88, 5479.2333333333, }, + [30] = { 90, 64, 90, 6203.2333333333, }, + }, +} +skills["NewShieldCharge"] = { + name = "Shield Charge", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + movement = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + movement = true, + }, + skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [38] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Claw"] = true, + ["One Handed Axe"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + --"shield_charge_scaling_stun_threshold_reduction_+%_at_maximum_range" = 50 + mod("MovementSpeed", "INC", 75, 0, 0, nil), --"base_movement_velocity_+%" = 75 + --"shield_charge_damage_+%_maximum" = 200 + --"ignores_proximity_shield" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, -50, }, + [2] = { 13, -49.4, }, + [3] = { 17, -48.8, }, + [4] = { 21, -48.2, }, + [5] = { 25, -47.6, }, + [6] = { 29, -47, }, + [7] = { 33, -46.4, }, + [8] = { 36, -45.8, }, + [9] = { 39, -45.2, }, + [10] = { 42, -44.6, }, + [11] = { 45, -44, }, + [12] = { 48, -43.4, }, + [13] = { 51, -42.8, }, + [14] = { 54, -42.2, }, + [15] = { 57, -41.6, }, + [16] = { 60, -41, }, + [17] = { 63, -40.4, }, + [18] = { 66, -39.8, }, + [19] = { 68, -39.2, }, + [20] = { 70, -38.6, }, + [21] = { 72, -38, }, + [22] = { 74, -37.4, }, + [23] = { 76, -36.8, }, + [24] = { 78, -36.2, }, + [25] = { 80, -35.6, }, + [26] = { 82, -35, }, + [27] = { 84, -34.4, }, + [28] = { 86, -33.8, }, + [29] = { 88, -33.2, }, + [30] = { 90, -32.6, }, + }, +} +skills["ShockwaveTotem"] = { + name = "Shockwave Totem", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [19] = true, [30] = true, [26] = true, }, + skillTotemId = 5, + baseMods = { + skill("castTime", 0.6), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"base_totem_duration" = 8000 + --"base_totem_range" = 100 + --"base_global_chance_to_knockback_%" = 25 + --"is_totem" = ? + --"is_area_damage" = ? + --"base_skill_is_totemified" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + [5] = skill("totemLevel", nil), --"base_active_skill_totem_level" + }, + levels = { + [1] = { 28, 24, 23, 46, 28, }, + [2] = { 31, 26, 28, 51, 31, }, + [3] = { 34, 28, 33, 62, 34, }, + [4] = { 37, 31, 40, 74, 37, }, + [5] = { 40, 33, 47, 88, 40, }, + [6] = { 42, 34, 53, 98, 42, }, + [7] = { 44, 36, 59, 110, 44, }, + [8] = { 46, 39, 66, 123, 46, }, + [9] = { 48, 43, 74, 137, 48, }, + [10] = { 50, 46, 82, 153, 50, }, + [11] = { 52, 49, 92, 170, 52, }, + [12] = { 54, 51, 102, 189, 54, }, + [13] = { 56, 53, 113, 210, 56, }, + [14] = { 58, 53, 126, 233, 58, }, + [15] = { 60, 55, 139, 259, 60, }, + [16] = { 62, 55, 154, 287, 62, }, + [17] = { 64, 57, 171, 318, 64, }, + [18] = { 66, 57, 189, 351, 66, }, + [19] = { 68, 58, 209, 389, 68, }, + [20] = { 70, 58, 231, 429, 70, }, + [21] = { 72, 59, 255, 474, 72, }, + [22] = { 74, 60, 282, 524, 74, }, + [23] = { 76, 61, 311, 578, 76, }, + [24] = { 78, 62, 343, 637, 78, }, + [25] = { 80, 62, 378, 702, 80, }, + [26] = { 82, 63, 416, 773, 82, }, + [27] = { 84, 64, 458, 851, 84, }, + [28] = { 86, 65, 504, 936, 86, }, + [29] = { 88, 66, 555, 1030, 88, }, + [30] = { 90, 66, 610, 1132, 90, }, + }, +} +skills["StaticStrike"] = { + name = "Static Strike", + gemTags = { + strength = true, + active_skill = true, + attack = true, + melee = true, + area = true, + duration = true, + lightning = true, + }, + parts = { + { + name = "Melee hit", + area = false, + }, + { + name = "Explosion", + area = true, + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [11] = true, [12] = true, [35] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 60), --"skill_physical_damage_%_to_convert_to_lightning" = 60 + skill("duration", 0.75), --"base_skill_effect_duration" = 750 + mod("Damage", "MORE", -40, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"static_strike_explosion_damage_+%_final" = -40 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 10, 0, }, + [2] = { 15, 12.6, 0, }, + [3] = { 19, 15.2, 0, }, + [4] = { 23, 17.8, 0, }, + [5] = { 27, 20.4, 1, }, + [6] = { 31, 23, 1, }, + [7] = { 35, 25.6, 1, }, + [8] = { 38, 28.2, 1, }, + [9] = { 41, 30.8, 1, }, + [10] = { 44, 33.4, 2, }, + [11] = { 47, 36, 2, }, + [12] = { 50, 38.6, 2, }, + [13] = { 53, 41.2, 2, }, + [14] = { 56, 43.8, 2, }, + [15] = { 59, 46.4, 3, }, + [16] = { 62, 49, 3, }, + [17] = { 64, 51.6, 3, }, + [18] = { 66, 54.2, 3, }, + [19] = { 68, 56.8, 3, }, + [20] = { 70, 59.4, 4, }, + [21] = { 72, 62, 4, }, + [22] = { 74, 64.6, 4, }, + [23] = { 76, 67.2, 4, }, + [24] = { 78, 69.8, 4, }, + [25] = { 80, 72.4, 5, }, + [26] = { 82, 75, 5, }, + [27] = { 84, 77.6, 5, }, + [28] = { 86, 80.2, 5, }, + [29] = { 88, 82.8, 5, }, + [30] = { 90, 85.4, 6, }, + }, +} +skills["SummonFireGolem"] = { + name = "Summon Flame Golem", + gemTags = { + strength = true, + active_skill = true, + fire = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedFlameGolem", + }, + color = 1, + baseFlags = { + spell = true, + minion = true, + golem = true, + fire = true, + }, + skillTypes = { [36] = true, [33] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, + minionSkillTypes = { [10] = true, [11] = true, [3] = true, [2] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 7 + mod("Misc", "LIST", { type = "Condition", var = "HaveFireGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"fire_golem_grants_damage_+%" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 15, 30, 34, }, + [2] = { 36, 32, 1, 15, 32, 36, }, + [3] = { 38, 34, 1, 16, 34, 38, }, + [4] = { 40, 36, 2, 16, 36, 40, }, + [5] = { 42, 38, 2, 16, 38, 42, }, + [6] = { 44, 40, 3, 16, 40, 44, }, + [7] = { 46, 42, 3, 17, 42, 46, }, + [8] = { 48, 44, 4, 17, 44, 48, }, + [9] = { 50, 44, 4, 17, 46, 50, }, + [10] = { 52, 46, 5, 17, 48, 52, }, + [11] = { 54, 48, 5, 18, 50, 54, }, + [12] = { 56, 48, 6, 18, 52, 56, }, + [13] = { 58, 50, 6, 18, 54, 58, }, + [14] = { 60, 50, 7, 18, 56, 60, }, + [15] = { 62, 52, 7, 19, 58, 62, }, + [16] = { 64, 52, 8, 19, 60, 64, }, + [17] = { 66, 52, 8, 19, 62, 66, }, + [18] = { 68, 52, 9, 19, 64, 68, }, + [19] = { 69, 54, 9, 20, 66, 69, }, + [20] = { 70, 54, 10, 20, 68, 70, }, + [21] = { 72, 56, 10, 20, 70, 72, }, + [22] = { 74, 56, 11, 20, 72, 74, }, + [23] = { 76, 58, 11, 21, 74, 76, }, + [24] = { 78, 58, 12, 21, 76, 78, }, + [25] = { 80, 60, 12, 21, 78, 80, }, + [26] = { 82, 60, 13, 21, 80, 82, }, + [27] = { 84, 60, 13, 22, 82, 84, }, + [28] = { 86, 60, 14, 22, 84, 86, }, + [29] = { 88, 62, 14, 22, 86, 88, }, + [30] = { 90, 62, 15, 22, 88, 90, }, + }, +} +skills["SummonRockGolem"] = { + name = "Summon Stone Golem", + gemTags = { + strength = true, + active_skill = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedStoneGolem", + }, + color = 1, + baseFlags = { + spell = true, + minion = true, + golem = true, + }, + skillTypes = { [36] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [38] = true, [11] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 10 + mod("Misc", "LIST", { type = "Condition", var = "HavePhysicalGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [5] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"stone_golem_grants_base_life_regeneration_rate_per_minute" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 30, 33, 34, }, + [2] = { 36, 32, 1, 32, 36, 36, }, + [3] = { 38, 34, 1, 34, 39, 38, }, + [4] = { 40, 36, 2, 36, 42, 40, }, + [5] = { 42, 38, 2, 38, 45, 42, }, + [6] = { 44, 40, 3, 40, 49, 44, }, + [7] = { 46, 42, 3, 42, 52, 46, }, + [8] = { 48, 44, 4, 44, 56, 48, }, + [9] = { 50, 44, 4, 46, 60, 50, }, + [10] = { 52, 46, 5, 48, 64, 52, }, + [11] = { 54, 48, 5, 50, 68, 54, }, + [12] = { 56, 48, 6, 52, 72, 56, }, + [13] = { 58, 50, 6, 54, 76, 58, }, + [14] = { 60, 50, 7, 56, 81, 60, }, + [15] = { 62, 52, 7, 58, 85, 62, }, + [16] = { 64, 52, 8, 60, 90, 64, }, + [17] = { 66, 52, 8, 62, 95, 66, }, + [18] = { 68, 52, 9, 64, 100, 68, }, + [19] = { 69, 54, 9, 66, 103, 69, }, + [20] = { 70, 54, 10, 68, 105, 70, }, + [21] = { 72, 56, 10, 70, 110, 72, }, + [22] = { 74, 56, 11, 72, 116, 74, }, + [23] = { 76, 58, 11, 74, 121, 76, }, + [24] = { 78, 58, 12, 76, 127, 78, }, + [25] = { 80, 60, 12, 78, 133, 80, }, + [26] = { 82, 60, 13, 80, 139, 82, }, + [27] = { 84, 60, 13, 82, 145, 84, }, + [28] = { 86, 60, 14, 84, 151, 86, }, + [29] = { 88, 62, 14, 86, 157, 88, }, + [30] = { 90, 62, 15, 88, 164, 90, }, + }, +} +skills["Sunder"] = { + name = "Sunder", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + parts = { + { + name = "Primary wave", + }, + { + name = "Shockwaves", + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + mod("Damage", "MORE", -60, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"shockwave_slam_explosion_damage_+%_final" = -60 + mod("Speed", "MORE", -15, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -15 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 40, 0, }, + [2] = { 15, 42.2, 0, }, + [3] = { 19, 44.4, 1, }, + [4] = { 23, 46.6, 1, }, + [5] = { 27, 48.8, 1, }, + [6] = { 31, 51, 2, }, + [7] = { 35, 53.2, 2, }, + [8] = { 38, 55.4, 2, }, + [9] = { 41, 57.6, 3, }, + [10] = { 44, 59.8, 3, }, + [11] = { 47, 62, 3, }, + [12] = { 50, 64.2, 4, }, + [13] = { 53, 66.4, 4, }, + [14] = { 56, 68.6, 4, }, + [15] = { 59, 70.8, 5, }, + [16] = { 62, 73, 5, }, + [17] = { 64, 75.2, 5, }, + [18] = { 66, 77.4, 6, }, + [19] = { 68, 79.6, 6, }, + [20] = { 70, 81.8, 6, }, + [21] = { 72, 84, 7, }, + [22] = { 74, 86.2, 7, }, + [23] = { 76, 88.4, 7, }, + [24] = { 78, 90.6, 8, }, + [25] = { 80, 92.8, 8, }, + [26] = { 82, 95, 8, }, + [27] = { 84, 97.2, 9, }, + [28] = { 86, 99.4, 9, }, + [29] = { 88, 101.6, 9, }, + [30] = { 90, 103.8, 10, }, + }, +} +skills["Sweep"] = { + name = "Sweep", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + }, + baseMods = { + skill("castTime", 1.15), + skill("manaCost", 8), + mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "base_global_chance_to_knockback_%" + --[3] = "active_skill_base_radius_+" + [4] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 30, 0, nil, }, + [2] = { 15, 30, 0, 2, }, + [3] = { 19, 31, 0, 4, }, + [4] = { 23, 31, 0, 6, }, + [5] = { 27, 32, 1, 8, }, + [6] = { 31, 32, 1, 10, }, + [7] = { 35, 33, 1, 12, }, + [8] = { 38, 33, 1, 14, }, + [9] = { 41, 34, 1, 16, }, + [10] = { 44, 34, 2, 18, }, + [11] = { 47, 35, 2, 20, }, + [12] = { 50, 35, 2, 22, }, + [13] = { 53, 36, 2, 24, }, + [14] = { 56, 36, 2, 26, }, + [15] = { 59, 37, 3, 28, }, + [16] = { 62, 37, 3, 30, }, + [17] = { 64, 38, 3, 32, }, + [18] = { 66, 38, 3, 34, }, + [19] = { 68, 39, 3, 36, }, + [20] = { 70, 39, 4, 38, }, + [21] = { 72, 40, 4, 40, }, + [22] = { 74, 40, 4, 42, }, + [23] = { 76, 41, 4, 44, }, + [24] = { 78, 41, 4, 46, }, + [25] = { 80, 42, 5, 48, }, + [26] = { 82, 42, 5, 50, }, + [27] = { 84, 43, 5, 52, }, + [28] = { 86, 43, 5, 54, }, + [29] = { 88, 44, 5, 56, }, + [30] = { 90, 44, 6, 58, }, + }, +} +skills["Vengeance"] = { + name = "Vengeance", + gemTags = { + trigger = true, + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, [24] = true, [47] = true, [6] = true, [57] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 1.2), + --"melee_counterattack_trigger_on_hit_%" = 30 + --"attack_unusable_if_triggerable" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + --"melee_counterattack_trigger_on_hit_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 24, -25, }, + [2] = { 27, -23, }, + [3] = { 30, -21, }, + [4] = { 33, -19, }, + [5] = { 36, -17, }, + [6] = { 39, -15, }, + [7] = { 42, -13, }, + [8] = { 45, -11, }, + [9] = { 48, -9, }, + [10] = { 50, -7, }, + [11] = { 52, -5, }, + [12] = { 54, -3, }, + [13] = { 56, -1, }, + [14] = { 58, 1, }, + [15] = { 60, 3, }, + [16] = { 62, 5, }, + [17] = { 64, 7, }, + [18] = { 66, 9, }, + [19] = { 68, 11, }, + [20] = { 70, 13, }, + [21] = { 72, 15, }, + [22] = { 74, 17, }, + [23] = { 76, 19, }, + [24] = { 78, 21, }, + [25] = { 80, 23, }, + [26] = { 82, 25, }, + [27] = { 84, 27, }, + [28] = { 86, 29, }, + [29] = { 88, 31, }, + [30] = { 90, 33, }, + }, +} +skills["VigilantStrike"] = { + name = "Vigilant Strike", + gemTags = { + attack = true, + strength = true, + active_skill = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [5] = true, [24] = true, [6] = true, [28] = true, [25] = true, [53] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + skill("cooldown", 4), + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("FortifyDuration", "INC", 1), --"fortify_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("FortifyDuration", "INC", nil), --"fortify_duration_+%" + }, + levels = { + [1] = { 4, 65, 75, }, + [2] = { 6, 67, 80, }, + [3] = { 9, 69, 85, }, + [4] = { 12, 71, 90, }, + [5] = { 16, 73, 95, }, + [6] = { 20, 75, 100, }, + [7] = { 24, 77, 105, }, + [8] = { 28, 79, 110, }, + [9] = { 32, 81, 115, }, + [10] = { 36, 83, 120, }, + [11] = { 40, 85, 125, }, + [12] = { 44, 87, 130, }, + [13] = { 48, 89, 135, }, + [14] = { 52, 91, 140, }, + [15] = { 55, 93, 145, }, + [16] = { 58, 95, 150, }, + [17] = { 61, 97, 155, }, + [18] = { 64, 99, 160, }, + [19] = { 67, 101, 165, }, + [20] = { 70, 103, 170, }, + [21] = { 72, 105, 175, }, + [22] = { 74, 107, 180, }, + [23] = { 76, 109, 185, }, + [24] = { 78, 111, 190, }, + [25] = { 80, 113, 195, }, + [26] = { 82, 115, 200, }, + [27] = { 84, 117, 205, }, + [28] = { 86, 119, 210, }, + [29] = { 88, 121, 215, }, + [30] = { 90, 123, 220, }, + }, +} +skills["Vitality"] = { + name = "Vitality", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"life_regeneration_rate_per_minute_%" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 0.7, 0, }, + [2] = { 27, 0.75, 3, }, + [3] = { 30, 0.8, 6, }, + [4] = { 33, 0.85, 9, }, + [5] = { 36, 0.9, 12, }, + [6] = { 39, 0.95, 15, }, + [7] = { 42, 1, 18, }, + [8] = { 45, 1.05, 21, }, + [9] = { 48, 1.1, 23, }, + [10] = { 50, 1.15, 25, }, + [11] = { 52, 1.2, 27, }, + [12] = { 54, 1.25, 29, }, + [13] = { 56, 1.3, 31, }, + [14] = { 58, 1.35, 33, }, + [15] = { 60, 1.4, 35, }, + [16] = { 62, 1.45, 36, }, + [17] = { 64, 1.5, 37, }, + [18] = { 66, 1.55, 38, }, + [19] = { 68, 1.6, 39, }, + [20] = { 70, 1.65, 40, }, + [21] = { 72, 1.7, 41, }, + [22] = { 74, 1.75, 42, }, + [23] = { 76, 1.8, 43, }, + [24] = { 78, 1.85, 44, }, + [25] = { 80, 1.9, 45, }, + [26] = { 82, 1.95, 46, }, + [27] = { 84, 2, 47, }, + [28] = { 86, 2.05, 48, }, + [29] = { 88, 2.1, 49, }, + [30] = { 90, 2.15, 50, }, + }, +} +skills["WarlordsMark"] = { + name = "Warlord's Mark", + gemTags = { + curse = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"chance_to_be_stunned_%" = 10 + mod("SelfDamageLifeLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_leech_on_any_damage_when_hit_permyriad" = 200 + mod("SelfDamageManaLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_leech_on_any_damage_when_hit_permyriad" = 200 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"chance_to_grant_endurance_charge_on_death_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("StunRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_stun_recovery_+%" + --[6] = "chance_to_grant_endurance_charge_on_death_%" + }, + levels = { + [1] = { 24, 24, 6, 0, -21, 21, }, + [2] = { 27, 26, 6.2, 4, -21, 21, }, + [3] = { 30, 27, 6.4, 8, -22, 22, }, + [4] = { 33, 29, 6.6, 12, -22, 22, }, + [5] = { 36, 30, 6.8, 16, -23, 23, }, + [6] = { 39, 32, 7, 20, -23, 23, }, + [7] = { 42, 34, 7.2, 24, -24, 24, }, + [8] = { 45, 35, 7.4, 28, -24, 24, }, + [9] = { 48, 37, 7.6, 32, -25, 25, }, + [10] = { 50, 38, 7.8, 36, -25, 25, }, + [11] = { 52, 39, 8, 40, -26, 26, }, + [12] = { 54, 40, 8.2, 44, -26, 26, }, + [13] = { 56, 42, 8.4, 48, -27, 27, }, + [14] = { 58, 43, 8.6, 52, -27, 27, }, + [15] = { 60, 44, 8.8, 56, -28, 28, }, + [16] = { 62, 45, 9, 60, -28, 28, }, + [17] = { 64, 46, 9.2, 64, -29, 29, }, + [18] = { 66, 47, 9.4, 68, -29, 29, }, + [19] = { 68, 48, 9.6, 72, -30, 30, }, + [20] = { 70, 50, 9.8, 76, -30, 30, }, + [21] = { 72, 51, 10, 80, -31, 31, }, + [22] = { 74, 52, 10.2, 84, -31, 31, }, + [23] = { 76, 53, 10.4, 88, -32, 32, }, + [24] = { 78, 54, 10.6, 92, -32, 32, }, + [25] = { 80, 56, 10.8, 96, -33, 33, }, + [26] = { 82, 57, 11, 100, -33, 33, }, + [27] = { 84, 58, 11.2, 104, -34, 34, }, + [28] = { 86, 59, 11.4, 108, -34, 34, }, + [29] = { 88, 60, 11.6, 112, -35, 35, }, + [30] = { 90, 61, 11.8, 116, -35, 35, }, + }, +} \ No newline at end of file diff --git a/Data/Skills/minion.lua b/Data/Skills/minion.lua new file mode 100644 index 00000000..5bbd5290 --- /dev/null +++ b/Data/Skills/minion.lua @@ -0,0 +1,993 @@ +-- Path of Building +-- +-- Minion active skills +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["ChaosElementalCascadeSummoned"] = { + name = "Cascade", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.6), + skill("cooldown", 3.5), + --"upheaval_number_of_spikes" = 6 + mod("Speed", "INC", 0, ModFlag.Cast), --"base_cast_speed_+%" = 0 + --"skill_art_variation" = 3 + mod("PhysicalDamageConvertToChaos", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_chaos" = 50 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 4, 9, 13, }, + [2] = { 7, 12, 18, }, + [3] = { 9, 14, 22, }, + [4] = { 12, 19, 28, }, + [5] = { 16, 26, 39, }, + [6] = { 20, 35, 52, }, + [7] = { 27, 55, 83, }, + [8] = { 28, 59, 89, }, + [9] = { 29, 63, 94, }, + [10] = { 32, 76, 114, }, + [11] = { 36, 96, 145, }, + [12] = { 40, 122, 182, }, + [13] = { 45, 161, 242, }, + [14] = { 49, 201, 301, }, + [15] = { 50, 212, 318, }, + [16] = { 52, 236, 354, }, + [17] = { 56, 292, 438, }, + [18] = { 60, 360, 539, }, + [19] = { 64, 441, 662, }, + [20] = { 65, 464, 696, }, + [21] = { 66, 488, 733, }, + [22] = { 67, 514, 770, }, + [23] = { 68, 540, 810, }, + [24] = { 69, 568, 852, }, + [25] = { 70, 597, 895, }, + [26] = { 71, 627, 941, }, + [27] = { 72, 659, 989, }, + [28] = { 73, 693, 1039, }, + [29] = { 74, 728, 1091, }, + [30] = { 75, 764, 1146, }, + [31] = { 76, 803, 1204, }, + [32] = { 77, 843, 1264, }, + [33] = { 78, 885, 1328, }, + [34] = { 79, 929, 1394, }, + [35] = { 80, 975, 1463, }, + [36] = { 81, 1024, 1535, }, + [37] = { 82, 1074, 1611, }, + }, +} +skills["SandstormChaosElementalSummoned"] = { + name = "Chaos Aura", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 8), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 2 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 14.533333333333, }, + [2] = { 5, 17.383333333333, }, + [3] = { 8, 21.95, }, + [4] = { 11, 26.95, }, + [5] = { 15, 34.3, }, + [6] = { 20, 44.75, }, + [7] = { 24, 54.183333333333, }, + [8] = { 28, 64.7, }, + [9] = { 29, 67.516666666667, }, + [10] = { 32, 76.383333333333, }, + [11] = { 36, 89.366666666667, }, + [12] = { 40, 103.75, }, + [13] = { 45, 123.9, }, + [14] = { 49, 141.93333333333, }, + [15] = { 50, 146.73333333333, }, + [16] = { 52, 156.7, }, + [17] = { 56, 178.11666666667, }, + [18] = { 60, 201.73333333333, }, + [19] = { 64, 227.73333333333, }, + [20] = { 65, 234.63333333333, }, + [21] = { 66, 241.68333333333, }, + [22] = { 67, 248.91666666667, }, + [23] = { 68, 256.31666666667, }, + [24] = { 69, 263.9, }, + [25] = { 70, 271.65, }, + [26] = { 71, 279.6, }, + [27] = { 72, 287.73333333333, }, + [28] = { 73, 296.05, }, + [29] = { 74, 304.58333333333, }, + [30] = { 75, 313.3, }, + [31] = { 76, 322.21666666667, }, + [32] = { 77, 331.35, }, + [33] = { 78, 340.7, }, + [34] = { 79, 350.26666666667, }, + [35] = { 80, 360.06666666667, }, + [36] = { 81, 370.08333333333, }, + [37] = { 82, 380.33333333333, }, + }, +} +skills["FireElementalFlameRedSummoned"] = { + name = "Immolate", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, + skillTotemId = 8, + baseMods = { + skill("castTime", 0.25), + skill("damageEffectiveness", 0.2), + --"skill_art_variation" = 4 + mod("Speed", "MORE", -89, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = -89 + --"spell_maximum_action_distance_+%" = -77 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 6, 8, }, + [2] = { 5, 7, 11, }, + [3] = { 8, 10, 14, }, + [4] = { 12, 14, 21, }, + [5] = { 15, 18, 27, }, + [6] = { 19, 24, 37, }, + [7] = { 20, 26, 39, }, + [8] = { 21, 28, 42, }, + [9] = { 26, 40, 61, }, + [10] = { 30, 53, 79, }, + [11] = { 34, 69, 103, }, + [12] = { 38, 88, 133, }, + [13] = { 43, 120, 180, }, + [14] = { 45, 135, 203, }, + [15] = { 53, 215, 323, }, + [16] = { 58, 285, 428, }, + [17] = { 62, 356, 534, }, + [18] = { 63, 376, 565, }, + [19] = { 66, 443, 665, }, + [20] = { 67, 468, 702, }, + [21] = { 68, 494, 741, }, + [22] = { 69, 522, 782, }, + [23] = { 70, 550, 825, }, + [24] = { 71, 581, 871, }, + [25] = { 72, 612, 919, }, + [26] = { 73, 646, 969, }, + [27] = { 74, 681, 1022, }, + [28] = { 75, 718, 1078, }, + [29] = { 76, 757, 1136, }, + [30] = { 77, 798, 1198, }, + [31] = { 78, 841, 1262, }, + [32] = { 79, 887, 1330, }, + [33] = { 80, 934, 1402, }, + [34] = { 81, 985, 1477, }, + [35] = { 82, 1037, 1556, }, + }, +} +skills["FireElementalMortarSummoned"] = { + name = "Magma Ball", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + area = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + skill("cooldown", 6), + --"monster_projectile_variation" = 3 + --"projectile_spread_radius" = 15 + --"spell_maximum_action_distance_+%" = -33 + --"is_area_damage" = ? + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 34, 152, 228, }, + [2] = { 36, 170, 254, }, + [3] = { 38, 188, 283, }, + [4] = { 40, 209, 314, }, + [5] = { 42, 232, 347, }, + [6] = { 44, 256, 384, }, + [7] = { 46, 283, 425, }, + [8] = { 48, 312, 468, }, + [9] = { 50, 344, 516, }, + [10] = { 52, 379, 568, }, + [11] = { 54, 416, 625, }, + [12] = { 56, 457, 686, }, + [13] = { 58, 502, 753, }, + [14] = { 60, 550, 826, }, + [15] = { 62, 603, 904, }, + [16] = { 64, 660, 990, }, + [17] = { 66, 722, 1083, }, + [18] = { 68, 789, 1184, }, + [19] = { 69, 825, 1237, }, + [20] = { 70, 862, 1293, }, + [21] = { 72, 941, 1412, }, + [22] = { 74, 1027, 1540, }, + [23] = { 76, 1120, 1680, }, + [24] = { 78, 1220, 1831, }, + [25] = { 80, 1329, 1994, }, + [26] = { 82, 1447, 2171, }, + [27] = { 84, 1575, 2363, }, + [28] = { 86, 1713, 2570, }, + [29] = { 88, 1863, 2794, }, + [30] = { 90, 2025, 3037, }, + }, +} +skills["FireElementalConeSummoned"] = { + name = "Flame Wave", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.935), + skill("critChance", 10), + skill("cooldown", 2), + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 34, 106, 165, }, + [2] = { 36, 117, 184, }, + [3] = { 38, 131, 204, }, + [4] = { 40, 145, 226, }, + [5] = { 42, 160, 250, }, + [6] = { 44, 177, 277, }, + [7] = { 46, 196, 306, }, + [8] = { 48, 216, 337, }, + [9] = { 50, 237, 371, }, + [10] = { 52, 261, 408, }, + [11] = { 54, 287, 448, }, + [12] = { 56, 315, 492, }, + [13] = { 58, 346, 540, }, + [14] = { 60, 379, 592, }, + [15] = { 62, 415, 648, }, + [16] = { 64, 454, 709, }, + [17] = { 66, 496, 775, }, + [18] = { 68, 542, 847, }, + [19] = { 69, 566, 885, }, + [20] = { 70, 592, 924, }, + [21] = { 72, 645, 1008, }, + [22] = { 74, 704, 1100, }, + [23] = { 76, 767, 1198, }, + [24] = { 78, 835, 1305, }, + [25] = { 80, 909, 1421, }, + [26] = { 82, 990, 1546, }, + [27] = { 84, 1076, 1682, }, + [28] = { 86, 1170, 1828, }, + [29] = { 88, 1271, 1987, }, + [30] = { 90, 1381, 2158, }, + }, +} +skills["IceElementalIceCyclone"] = { + name = "Cyclone", + hidden = true, + color = 2, + baseFlags = { + attack = true, + area = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 6), + --"skill_art_variation" = 4 + mod("MovementSpeed", "MORE", 75), --"cyclone_movement_speed_+%_final" = 75 + --"cyclone_extra_distance" = 40 + mod("Damage", "MORE", -20, ModFlag.Hit), --"active_skill_damage_+%_final" = -20 + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"is_area_damage" = ? + --"cyclone_places_ground_ice" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["IceElementalSpearSummoned"] = { + name = "Ice Spear", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [3] = true, [2] = true, [17] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 4), + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 25 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 3, 10, 15, }, + [2] = { 5, 12, 18, }, + [3] = { 8, 16, 24, }, + [4] = { 11, 21, 31, }, + [5] = { 15, 28, 42, }, + [6] = { 20, 40, 60, }, + [7] = { 24, 51, 77, }, + [8] = { 28, 65, 97, }, + [9] = { 29, 69, 103, }, + [10] = { 32, 81, 122, }, + [11] = { 36, 101, 152, }, + [12] = { 40, 125, 187, }, + [13] = { 45, 161, 241, }, + [14] = { 49, 196, 293, }, + [15] = { 50, 205, 308, }, + [16] = { 52, 226, 339, }, + [17] = { 56, 273, 409, }, + [18] = { 60, 328, 493, }, + [19] = { 64, 394, 591, }, + [20] = { 65, 412, 618, }, + [21] = { 66, 431, 646, }, + [22] = { 67, 450, 676, }, + [23] = { 68, 471, 706, }, + [24] = { 69, 492, 738, }, + [25] = { 70, 514, 772, }, + [26] = { 71, 537, 806, }, + [27] = { 72, 562, 842, }, + [28] = { 73, 587, 880, }, + [29] = { 74, 613, 919, }, + [30] = { 75, 640, 960, }, + [31] = { 76, 668, 1002, }, + [32] = { 77, 698, 1046, }, + [33] = { 78, 728, 1092, }, + [34] = { 79, 760, 1140, }, + [35] = { 80, 793, 1190, }, + [36] = { 81, 828, 1241, }, + [37] = { 82, 864, 1295, }, + }, +} +skills["LightningGolemArcSummoned"] = { + name = "Storm Orb", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + lightning = true, + duration = true, + }, + skillTypes = { [12] = true, [35] = true, [3] = true, [14] = true, [2] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + skill("cooldown", 8), + skill("duration", 8), --"base_skill_effect_duration" = 8000 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 1, 1, 8, }, + [2] = { 2, 1, 9, }, + [3] = { 4, 1, 11, }, + [4] = { 7, 2, 14, }, + [5] = { 10, 2, 18, }, + [6] = { 13, 2, 22, }, + [7] = { 16, 3, 27, }, + [8] = { 19, 4, 32, }, + [9] = { 22, 4, 39, }, + [10] = { 25, 5, 46, }, + [11] = { 28, 6, 54, }, + [12] = { 31, 7, 62, }, + [13] = { 34, 8, 72, }, + [14] = { 36, 9, 80, }, + [15] = { 38, 10, 88, }, + [16] = { 40, 11, 96, }, + [17] = { 42, 12, 105, }, + [18] = { 44, 13, 115, }, + [19] = { 46, 14, 126, }, + [20] = { 48, 15, 137, }, + [21] = { 50, 17, 149, }, + [22] = { 52, 18, 162, }, + [23] = { 54, 20, 176, }, + [24] = { 56, 21, 191, }, + [25] = { 58, 23, 208, }, + [26] = { 60, 25, 225, }, + [27] = { 62, 27, 244, }, + [28] = { 64, 29, 264, }, + [29] = { 66, 32, 285, }, + [30] = { 68, 34, 308, }, + [31] = { 69, 36, 320, }, + [32] = { 70, 37, 333, }, + [33] = { 72, 40, 359, }, + [34] = { 74, 43, 387, }, + [35] = { 76, 46, 417, }, + [36] = { 78, 50, 449, }, + [37] = { 80, 54, 484, }, + [38] = { 82, 58, 521, }, + [39] = { 84, 62, 560, }, + [40] = { 86, 67, 602, }, + [41] = { 88, 72, 647, }, + [42] = { 90, 77, 695, }, + }, +} +skills["MonsterProjectileSpellLightningGolemSummoned"] = { + name = "Lightning Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [3] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + --"monster_projectile_variation" = 11 + mod("Speed", "MORE", -15, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = -15 + --"spell_maximum_action_distance_+%" = -40 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 1, 2, 18, }, + [2] = { 2, 2, 21, }, + [3] = { 4, 3, 26, }, + [4] = { 7, 4, 35, }, + [5] = { 10, 5, 45, }, + [6] = { 13, 6, 58, }, + [7] = { 16, 8, 72, }, + [8] = { 19, 10, 89, }, + [9] = { 22, 12, 108, }, + [10] = { 25, 15, 131, }, + [11] = { 28, 17, 157, }, + [12] = { 31, 21, 187, }, + [13] = { 34, 25, 221, }, + [14] = { 36, 27, 247, }, + [15] = { 38, 31, 275, }, + [16] = { 40, 34, 306, }, + [17] = { 42, 38, 340, }, + [18] = { 44, 42, 378, }, + [19] = { 46, 46, 418, }, + [20] = { 48, 51, 463, }, + [21] = { 50, 57, 511, }, + [22] = { 52, 63, 565, }, + [23] = { 54, 69, 623, }, + [24] = { 56, 76, 686, }, + [25] = { 58, 84, 755, }, + [26] = { 60, 92, 830, }, + [27] = { 62, 101, 912, }, + [28] = { 64, 111, 1001, }, + [29] = { 66, 122, 1098, }, + [30] = { 68, 134, 1204, }, + [31] = { 69, 140, 1261, }, + [32] = { 70, 147, 1319, }, + [33] = { 72, 161, 1445, }, + [34] = { 74, 176, 1581, }, + [35] = { 76, 192, 1729, }, + [36] = { 78, 210, 1889, }, + [37] = { 80, 229, 2064, }, + [38] = { 82, 250, 2254, }, + [39] = { 84, 273, 2460, }, + [40] = { 86, 298, 2683, }, + [41] = { 88, 325, 2926, }, + [42] = { 90, 354, 3189, }, + }, +} +skills["LightningGolemWrath"] = { + name = "Wrath", + hidden = true, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [16] = true, [44] = true, [35] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("cooldown", 12), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_lightning_damage" + [3] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_lightning_damage" + [4] = mod("LightningMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_minimum_added_lightning_damage" + [5] = mod("LightningMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_maximum_added_lightning_damage" + }, + levels = { + [1] = { 1, 1, 1, 1, 1, }, + [2] = { 8, 1, 2, 1, 1, }, + [3] = { 16, 1, 4, 1, 2, }, + [4] = { 24, 1, 6, 1, 3, }, + [5] = { 34, 1, 9, 1, 5, }, + [6] = { 36, 1, 10, 1, 6, }, + [7] = { 38, 1, 10, 1, 6, }, + [8] = { 40, 1, 11, 1, 7, }, + [9] = { 42, 1, 12, 1, 7, }, + [10] = { 44, 1, 13, 1, 8, }, + [11] = { 46, 2, 14, 1, 9, }, + [12] = { 48, 2, 15, 1, 9, }, + [13] = { 50, 2, 17, 1, 10, }, + [14] = { 52, 2, 18, 1, 11, }, + [15] = { 54, 2, 19, 1, 12, }, + [16] = { 56, 2, 21, 1, 12, }, + [17] = { 58, 2, 22, 1, 13, }, + [18] = { 60, 3, 24, 2, 14, }, + [19] = { 62, 3, 25, 2, 15, }, + [20] = { 64, 3, 27, 2, 16, }, + [21] = { 66, 3, 29, 2, 17, }, + [22] = { 68, 3, 31, 2, 19, }, + [23] = { 69, 4, 32, 2, 19, }, + [24] = { 70, 4, 33, 2, 20, }, + [25] = { 72, 4, 35, 2, 21, }, + [26] = { 74, 4, 37, 2, 22, }, + [27] = { 76, 4, 40, 3, 24, }, + [28] = { 78, 5, 42, 3, 25, }, + [29] = { 80, 5, 45, 3, 27, }, + [30] = { 82, 5, 48, 3, 29, }, + [31] = { 84, 6, 51, 3, 31, }, + [32] = { 86, 6, 54, 4, 33, }, + [33] = { 88, 6, 58, 4, 35, }, + [34] = { 90, 7, 61, 4, 37, }, + }, +} +skills["PlayerRagingSpiritMeleeAttack"] = { + name = "Melee Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [25] = true, [28] = true, [24] = true, }, + baseMods = { + skill("castTime", 1), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" + }, + levels = { + [1] = { 4, 76, }, + [2] = { 6, 75, }, + [3] = { 9, 74, }, + [4] = { 12, 73, }, + [5] = { 15, 72, }, + [6] = { 19, 71, }, + [7] = { 23, 70, }, + [8] = { 28, 69, }, + [9] = { 33, 68, }, + [10] = { 39, 67, }, + [11] = { 43, 66, }, + [12] = { 46, 65, }, + [13] = { 49, 64, }, + [14] = { 52, 63, }, + [15] = { 55, 62, }, + [16] = { 58, 61, }, + [17] = { 61, 60, }, + [18] = { 64, 59, }, + [19] = { 66, 58, }, + [20] = { 68, 57, }, + [21] = { 70, 56, }, + [22] = { 72, 55, }, + [23] = { 74, 54, }, + [24] = { 76, 53, }, + [25] = { 78, 52, }, + [26] = { 80, 51, }, + [27] = { 82, 50, }, + [28] = { 84, 49, }, + [29] = { 86, 48, }, + [30] = { 88, 47, }, + }, +} +skills["SkeletonProjectileCold"] = { + name = "Cold Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, [3] = true, }, + baseMods = { + skill("castTime", 1.95), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 5, 3, 5, }, + [2] = { 7, 5, 4, 6, }, + [3] = { 10, 5, 6, 8, }, + [4] = { 15, 5, 8, 13, }, + [5] = { 19, 4, 11, 17, }, + [6] = { 20, 4, 12, 18, }, + [7] = { 25, 4, 17, 26, }, + [8] = { 28, 4, 21, 32, }, + [9] = { 29, 4, 22, 34, }, + [10] = { 30, 4, 24, 36, }, + [11] = { 33, 4, 29, 43, }, + [12] = { 34, 4, 31, 46, }, + [13] = { 37, 4, 37, 55, }, + [14] = { 39, 4, 42, 62, }, + [15] = { 43, 4, 53, 79, }, + [16] = { 44, 4, 56, 84, }, + [17] = { 47, 4, 66, 99, }, + [18] = { 48, 4, 70, 105, }, + [19] = { 51, 4, 82, 124, }, + [20] = { 58, 4, 121, 181, }, + [21] = { 61, 4, 141, 212, }, + [22] = { 62, 4, 149, 223, }, + [23] = { 63, 4, 157, 236, }, + [24] = { 64, 4, 165, 248, }, + [25] = { 65, 4, 174, 261, }, + [26] = { 66, 4, 184, 275, }, + [27] = { 67, 4, 193, 290, }, + [28] = { 68, 4, 687, 1071, }, + [29] = { 69, 4, 723, 1128, }, + [30] = { 70, 4, 761, 1187, }, + [31] = { 71, 4, 801, 1249, }, + [32] = { 72, 4, 843, 1315, }, + [33] = { 73, 4, 887, 1383, }, + [34] = { 74, 4, 933, 1455, }, + [35] = { 75, 4, 981, 1530, }, + [36] = { 76, 4, 1032, 1609, }, + [37] = { 77, 4, 1085, 1692, }, + [38] = { 78, 4, 1141, 1779, }, + [39] = { 79, 4, 1200, 1870, }, + [40] = { 80, 4, 1261, 1966, }, + [41] = { 81, 4, 1325, 2066, }, + [42] = { 82, 4, 1393, 2171, }, + }, +} +skills["SkeletonProjectileFire"] = { + name = "Fire Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, [3] = true, }, + baseMods = { + skill("castTime", 1.95), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 4, 5, 4, 6, }, + [2] = { 7, 5, 5, 8, }, + [3] = { 10, 5, 7, 10, }, + [4] = { 15, 5, 10, 15, }, + [5] = { 19, 4, 14, 21, }, + [6] = { 20, 4, 15, 22, }, + [7] = { 25, 4, 21, 32, }, + [8] = { 28, 4, 26, 39, }, + [9] = { 29, 4, 27, 41, }, + [10] = { 30, 4, 29, 44, }, + [11] = { 33, 4, 35, 53, }, + [12] = { 34, 4, 38, 56, }, + [13] = { 37, 4, 45, 68, }, + [14] = { 39, 4, 51, 76, }, + [15] = { 43, 4, 64, 96, }, + [16] = { 44, 4, 68, 102, }, + [17] = { 47, 4, 81, 121, }, + [18] = { 48, 4, 85, 128, }, + [19] = { 51, 4, 101, 151, }, + [20] = { 58, 4, 147, 221, }, + [21] = { 61, 4, 173, 259, }, + [22] = { 62, 4, 182, 273, }, + [23] = { 63, 4, 192, 288, }, + [24] = { 64, 4, 202, 303, }, + [25] = { 65, 4, 213, 320, }, + [26] = { 66, 4, 224, 337, }, + [27] = { 67, 4, 236, 354, }, + [28] = { 68, 4, 840, 1309, }, + [29] = { 69, 4, 884, 1378, }, + [30] = { 70, 4, 930, 1451, }, + [31] = { 71, 4, 979, 1527, }, + [32] = { 72, 4, 1030, 1607, }, + [33] = { 73, 4, 1084, 1690, }, + [34] = { 74, 4, 1140, 1778, }, + [35] = { 75, 4, 1200, 1870, }, + [36] = { 76, 4, 1262, 1967, }, + [37] = { 77, 4, 1327, 2068, }, + [38] = { 78, 4, 1395, 2175, }, + [39] = { 79, 4, 1466, 2286, }, + [40] = { 80, 4, 1541, 2403, }, + [41] = { 81, 4, 1620, 2525, }, + [42] = { 82, 4, 1702, 2654, }, + }, +} +skills["SkeletonProjectileLightning"] = { + name = "Lightning Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, [3] = true, }, + baseMods = { + skill("castTime", 1.95), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 4, 5, 3, 8, }, + [2] = { 7, 5, 4, 11, }, + [3] = { 10, 5, 5, 14, }, + [4] = { 15, 5, 7, 22, }, + [5] = { 19, 4, 10, 29, }, + [6] = { 20, 4, 10, 31, }, + [7] = { 25, 4, 15, 45, }, + [8] = { 28, 4, 18, 54, }, + [9] = { 29, 4, 19, 58, }, + [10] = { 30, 4, 21, 62, }, + [11] = { 31, 4, 22, 66, }, + [12] = { 34, 4, 26, 79, }, + [13] = { 37, 4, 32, 95, }, + [14] = { 39, 4, 36, 107, }, + [15] = { 43, 4, 45, 136, }, + [16] = { 44, 4, 48, 144, }, + [17] = { 47, 4, 57, 170, }, + [18] = { 48, 4, 60, 180, }, + [19] = { 51, 4, 71, 213, }, + [20] = { 52, 4, 75, 225, }, + [21] = { 58, 4, 104, 311, }, + [22] = { 62, 4, 128, 384, }, + [23] = { 63, 4, 135, 405, }, + [24] = { 64, 4, 142, 427, }, + [25] = { 65, 4, 150, 449, }, + [26] = { 66, 4, 158, 473, }, + [27] = { 67, 4, 166, 498, }, + [28] = { 68, 4, 409, 1221, }, + [29] = { 69, 4, 431, 1285, }, + [30] = { 70, 4, 454, 1353, }, + [31] = { 71, 4, 477, 1424, }, + [32] = { 72, 4, 502, 1498, }, + [33] = { 73, 4, 529, 1577, }, + [34] = { 74, 4, 556, 1658, }, + [35] = { 75, 4, 585, 1744, }, + [36] = { 76, 4, 615, 1834, }, + [37] = { 77, 4, 647, 1929, }, + [38] = { 78, 4, 680, 2028, }, + [39] = { 79, 4, 715, 2132, }, + [40] = { 80, 4, 751, 2241, }, + [41] = { 81, 4, 790, 2355, }, + [42] = { 82, 4, 830, 2475, }, + }, +} +skills["RockGolemSlam"] = { + name = "Slam", + hidden = true, + color = 1, + baseFlags = { + attack = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 1), + mod("Damage", "MORE", 75, ModFlag.Attack), + skill("cooldown", 6), + mod("Speed", "MORE", -20, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -20 + --"chance_to_taunt_on_hit_%" = 33 + --"skill_art_variation" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["RockGolemWhirlingBlades"] = { + name = "Roll", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("levelRequirement", 1), + --"skill_sound_variation" = 1 + mod("Speed", "MORE", -50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -50 + --"monster_flurry" = 1 + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["ZombieSlam"] = { + name = "Slam", + hidden = true, + color = 4, + baseFlags = { + attack = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 5), + mod("Speed", "MORE", -22, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -22 + mod("Damage", "MORE", 45, ModFlag.Hit), --"active_skill_damage_+%_final" = 45 + skill("duration", 0.28), --"base_skill_effect_duration" = 280 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MinionInstability"] = { + name = "Minion Instability", + hidden = true, + color = 4, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [10] = true, }, + baseMods = { + skill("FireMin", 1, { type = "PerStat", stat = "Life", div = 1/.33 }), + skill("FireMax", 1, { type = "PerStat", stat = "Life", div = 1/.33 }), + skill("showAverage", true), + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} diff --git a/Export/Gems/other.lua b/Data/Skills/other.lua similarity index 65% rename from Export/Gems/other.lua rename to Data/Skills/other.lua index 65ac5a56..1a438d9a 100644 --- a/Export/Gems/other.lua +++ b/Data/Skills/other.lua @@ -1,12 +1,14 @@ -- Path of Building -- -- Other active skills --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["_default"] = { +skills["Melee"] = { + name = "Default Attack", hidden = true, + other = true, color = 4, baseFlags = { attack = true, @@ -16,6 +18,7 @@ gems["_default"] = { skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [25] = true, [28] = true, [24] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), --"skill_can_fire_arrows" = 1 --"skill_can_fire_wand_projectiles" = 1 }, @@ -27,10 +30,13 @@ gems["_default"] = { [1] = { }, }, } -gems["Detonate Mines"] = { - low_max_level = true, - active_skill = true, - spell = true, +skills["GemDetonateMines"] = { + name = "Detonate Mines", + gemTags = { + low_max_level = true, + active_skill = true, + spell = true, + }, color = 4, baseFlags = { spell = true, @@ -38,6 +44,7 @@ gems["Detonate Mines"] = { skillTypes = { [2] = true, [17] = true, [18] = true, [36] = true, }, baseMods = { skill("castTime", 0.2), + skill("levelRequirement", 8), --"base_deal_no_damage" = ? }, qualityMods = { @@ -58,10 +65,13 @@ gems["Detonate Mines"] = { [10] = { }, }, } -gems["Portal"] = { - low_max_level = true, - active_skill = true, - spell = true, +skills["Portal"] = { + name = "Portal", + gemTags = { + low_max_level = true, + active_skill = true, + spell = true, + }, color = 4, baseFlags = { spell = true, @@ -69,6 +79,7 @@ gems["Portal"] = { skillTypes = { [2] = true, [17] = true, [18] = true, [19] = true, [36] = true, [27] = true, }, baseMods = { skill("castTime", 2.5), + skill("levelRequirement", 10), --"base_deal_no_damage" = ? }, qualityMods = { @@ -89,8 +100,10 @@ gems["Portal"] = { [10] = { }, }, } -gems["Abberath's Fury"] = { +skills["RepeatingShockwave"] = { + name = "Abberath's Fury", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -99,6 +112,7 @@ gems["Abberath's Fury"] = { skillTypes = { [11] = true, [36] = true, [42] = true, [2] = true, [10] = true, [61] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), skill("critChance", 5), skill("FireMin", 50), --"spell_minimum_base_fire_damage" = 50 skill("FireMax", 75), --"spell_maximum_base_fire_damage" = 75 @@ -117,8 +131,10 @@ gems["Abberath's Fury"] = { [7] = { }, }, } -gems["Bone Nova"] = { +skills["TriggeredBoneNova"] = { + name = "Bone Nova", hidden = true, + other = true, color = 4, baseFlags = { attack = true, @@ -127,6 +143,8 @@ gems["Bone Nova"] = { skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, [47] = true, [61] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 0.5), mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 --"attack_trigger_on_killing_bleeding_enemy_%" = 100 --"monster_projectile_variation" = 15 @@ -143,8 +161,10 @@ gems["Bone Nova"] = { [20] = { }, }, } -gems["Consecrate"] = { +skills["TriggeredConsecrate"] = { + name = "Consecrate", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -154,6 +174,8 @@ gems["Consecrate"] = { skillTypes = { [2] = true, [12] = true, [36] = true, [11] = true, [42] = true, [61] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 5), skill("duration", 5), --"base_skill_effect_duration" = 5000 mod("LifeRegenPercent", "BASE", 4, 0, 0, nil), --"life_regeneration_rate_per_minute_%" = 240 --"cast_on_crit_%" = 100 @@ -167,8 +189,10 @@ gems["Consecrate"] = { [10] = { }, }, } -gems["Create Lesser Shrine"] = { +skills["TriggeredSummonLesserShrine"] = { + name = "Create Lesser Shrine", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -177,6 +201,8 @@ gems["Create Lesser Shrine"] = { skillTypes = { [2] = true, [36] = true, [42] = true, [61] = true, [12] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 20), --"chance_to_cast_on_kill_%" = 100 skill("duration", 10), --"base_skill_effect_duration" = 10000 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? @@ -189,8 +215,10 @@ gems["Create Lesser Shrine"] = { [1] = { }, }, } -gems["Envy"] = { +skills["Envy"] = { + name = "Envy", hidden = true, + other = true, color = 3, baseFlags = { spell = true, @@ -201,7 +229,9 @@ gems["Envy"] = { skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [50] = true, }, baseMods = { skill("castTime", 1.2), + skill("levelRequirement", 60), skill("manaCost", 50), + skill("cooldown", 1.2), mod("ChaosMin", "BASE", 58, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_chaos_damage" = 58 mod("ChaosMax", "BASE", 81, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_chaos_damage" = 81 mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 @@ -217,8 +247,10 @@ gems["Envy"] = { [15] = { }, }, } -gems["Fire Burst"] = { +skills["FireBurstOnHit"] = { + name = "Fire Burst", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -230,6 +262,7 @@ gems["Fire Burst"] = { skill("castTime", 1), skill("damageEffectiveness", 0.5), skill("critChance", 5), + skill("cooldown", 0.5), --"cast_on_hit_%" = 10 --"is_area_damage" = ? skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? @@ -237,44 +270,47 @@ gems["Fire Burst"] = { qualityMods = { }, levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" }, levels = { - [1] = { 7, 11, }, - [2] = { 8, 12, }, - [3] = { 10, 16, }, - [4] = { 14, 21, }, - [5] = { 20, 30, }, - [6] = { 30, 46, }, - [7] = { 41, 61, }, - [8] = { 54, 80, }, - [9] = { 70, 104, }, - [10] = { 89, 134, }, - [11] = { 114, 170, }, - [12] = { 143, 215, }, - [13] = { 180, 270, }, - [14] = { 224, 336, }, - [15] = { 278, 418, }, - [16] = { 344, 516, }, - [17] = { 424, 636, }, - [18] = { 520, 780, }, - [19] = { 605, 908, }, - [20] = { 703, 1055, }, - [21] = { 777, 1165, }, - [22] = { 858, 1286, }, - [23] = { 946, 1419, }, - [24] = { 1043, 1564, }, - [25] = { 1149, 1724, }, - [26] = { 1266, 1899, }, - [27] = { 1394, 2091, }, - [28] = { 1534, 2301, }, - [29] = { 1687, 2530, }, - [30] = { 1855, 2782, }, + [1] = { 1, 7, 11, }, + [2] = { 2, 8, 12, }, + [3] = { 4, 10, 16, }, + [4] = { 7, 14, 21, }, + [5] = { 11, 20, 30, }, + [6] = { 16, 30, 46, }, + [7] = { 20, 41, 61, }, + [8] = { 24, 54, 80, }, + [9] = { 28, 70, 104, }, + [10] = { 32, 89, 134, }, + [11] = { 36, 114, 170, }, + [12] = { 40, 143, 215, }, + [13] = { 44, 180, 270, }, + [14] = { 48, 224, 336, }, + [15] = { 52, 278, 418, }, + [16] = { 56, 344, 516, }, + [17] = { 60, 424, 636, }, + [18] = { 64, 520, 780, }, + [19] = { 67, 605, 908, }, + [20] = { 70, 703, 1055, }, + [21] = { 72, 777, 1165, }, + [22] = { 74, 858, 1286, }, + [23] = { 76, 946, 1419, }, + [24] = { 78, 1043, 1564, }, + [25] = { 80, 1149, 1724, }, + [26] = { 82, 1266, 1899, }, + [27] = { 84, 1394, 2091, }, + [28] = { 86, 1534, 2301, }, + [29] = { 88, 1687, 2530, }, + [30] = { 90, 1855, 2782, }, }, } -gems["Gluttony of Elements"] = { +skills["VaalAuraElementalDamageHealing"] = { + name = "Gluttony of Elements", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -286,6 +322,7 @@ gems["Gluttony of Elements"] = { skillTypes = { [2] = true, [5] = true, [11] = true, [12] = true, [18] = true, [43] = true, [44] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), skill("duration", 6), --"base_skill_effect_duration" = 6000 --"base_elemental_damage_heals" = ? }, @@ -297,8 +334,10 @@ gems["Gluttony of Elements"] = { [20] = { }, }, } -gems["Icestorm"] = { +skills["IcestormUniqueStaff12"] = { + name = "Icestorm", hidden = true, + other = true, color = 3, baseFlags = { spell = true, @@ -309,6 +348,7 @@ gems["Icestorm"] = { skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), skill("manaCost", 22), skill("damageEffectiveness", 0.3), skill("critChance", 5), @@ -332,8 +372,10 @@ gems["Icestorm"] = { [1] = { }, }, } -gems["Illusory Warp"] = { +skills["MerveilWarp"] = { + name = "Illusory Warp", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -345,7 +387,9 @@ gems["Illusory Warp"] = { skillTypes = { [2] = true, [38] = true, [12] = true, [34] = true, [11] = true, }, baseMods = { skill("castTime", 0.6), + skill("levelRequirement", 1), skill("manaCost", 20), + skill("cooldown", 3), skill("duration", 1.5), --"base_skill_effect_duration" = 1500 }, qualityMods = { @@ -356,8 +400,10 @@ gems["Illusory Warp"] = { [20] = { }, }, } -gems["Lightning Bolt"] = { +skills["LightningSpell"] = { + name = "Lightning Bolt", hidden = true, + other = true, color = 3, baseFlags = { spell = true, @@ -368,6 +414,7 @@ gems["Lightning Bolt"] = { baseMods = { skill("castTime", 1), skill("critChance", 6), + skill("cooldown", 0.5), --"cast_on_crit_%" = 100 --"is_area_damage" = ? skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? @@ -375,44 +422,47 @@ gems["Lightning Bolt"] = { qualityMods = { }, levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" }, levels = { - [1] = { 10, 29, }, - [2] = { 11, 33, }, - [3] = { 14, 41, }, - [4] = { 18, 54, }, - [5] = { 25, 75, }, - [6] = { 36, 109, }, - [7] = { 47, 141, }, - [8] = { 60, 180, }, - [9] = { 76, 227, }, - [10] = { 94, 282, }, - [11] = { 116, 348, }, - [12] = { 142, 426, }, - [13] = { 173, 518, }, - [14] = { 209, 626, }, - [15] = { 251, 754, }, - [16] = { 301, 903, }, - [17] = { 359, 1078, }, - [18] = { 428, 1283, }, - [19] = { 486, 1459, }, - [20] = { 552, 1657, }, - [21] = { 601, 1802, }, - [22] = { 653, 1959, }, - [23] = { 709, 2127, }, - [24] = { 770, 2310, }, - [25] = { 835, 2506, }, - [26] = { 906, 2718, }, - [27] = { 982, 2946, }, - [28] = { 1064, 3192, }, - [29] = { 1153, 3458, }, - [30] = { 1248, 3743, }, + [1] = { 1, 10, 29, }, + [2] = { 2, 11, 33, }, + [3] = { 4, 14, 41, }, + [4] = { 7, 18, 54, }, + [5] = { 11, 25, 75, }, + [6] = { 16, 36, 109, }, + [7] = { 20, 47, 141, }, + [8] = { 24, 60, 180, }, + [9] = { 28, 76, 227, }, + [10] = { 32, 94, 282, }, + [11] = { 36, 116, 348, }, + [12] = { 40, 142, 426, }, + [13] = { 44, 173, 518, }, + [14] = { 48, 209, 626, }, + [15] = { 52, 251, 754, }, + [16] = { 56, 301, 903, }, + [17] = { 60, 359, 1078, }, + [18] = { 64, 428, 1283, }, + [19] = { 67, 486, 1459, }, + [20] = { 70, 552, 1657, }, + [21] = { 72, 601, 1802, }, + [22] = { 74, 653, 1959, }, + [23] = { 76, 709, 2127, }, + [24] = { 78, 770, 2310, }, + [25] = { 80, 835, 2506, }, + [26] = { 82, 906, 2718, }, + [27] = { 84, 982, 2946, }, + [28] = { 86, 1064, 3192, }, + [29] = { 88, 1153, 3458, }, + [30] = { 90, 1248, 3743, }, }, } -gems["Molten Burst"] = { +skills["TriggeredMoltenStrike"] = { + name = "Molten Burst", hidden = true, + other = true, color = 1, baseFlags = { attack = true, @@ -423,6 +473,8 @@ gems["Molten Burst"] = { skillTypes = { [3] = true, [1] = true, [11] = true, [33] = true, [57] = true, [47] = true, [48] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 0.15), mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 --"attack_trigger_on_melee_hit_%" = 20 --"show_number_of_projectiles" = ? @@ -438,8 +490,10 @@ gems["Molten Burst"] = { [16] = { }, }, } -gems["Shock Ground"] = { +skills["TriggeredShockedGround"] = { + name = "Shock Ground", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -450,6 +504,8 @@ gems["Shock Ground"] = { skillTypes = { [2] = true, [11] = true, [36] = true, [12] = true, [42] = true, [45] = true, [61] = true, [35] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 5), --"cast_when_hit_%" = 100 --"skill_art_variation" = 7 skill("duration", 5), --"base_skill_effect_duration" = 5000 @@ -463,3 +519,36 @@ gems["Shock Ground"] = { [1] = { }, }, } +skills["SummonRigwaldsPack"] = { + name = "Summon Spectral Wolf", + hidden = true, + other = true, + minionList = { + "SummonedSpectralWolf", + }, + color = 4, + baseFlags = { + spell = true, + minion = true, + duration = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, [42] = true, [61] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 66), + skill("duration", 30), --"base_skill_effect_duration" = 30000 + mod("ActiveWolfLimit", "BASE", 20), --"number_of_wolves_allowed" = 20 + --"chance_to_cast_on_kill_%_target_self" = 10 + --"display_minion_monster_type" = 8 + skill("minionLevel", 65), --"display_minion_monster_level" = 65 + skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [18] = { }, + }, +} \ No newline at end of file diff --git a/Data/Skills/spectre.lua b/Data/Skills/spectre.lua new file mode 100644 index 00000000..53e1d53e --- /dev/null +++ b/Data/Skills/spectre.lua @@ -0,0 +1,2865 @@ +-- Path of Building +-- +-- Spectre active skills +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["BeastCleave"] = { + name = "Cleave", + hidden = true, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [8] = true, [11] = true, [28] = true, [24] = true, [53] = true, }, + weaponTypes = { + ["Two Handed Axe"] = true, + ["One Handed Axe"] = true, + ["Two Handed Sword"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 4), + skill("manaCost", 14), + mod("Damage", "MORE", -40, 0, 0, { type = "Condition", var = "DualWielding" }), --"cleave_damage_+%_final_while_dual_wielding" = -40 + --"is_area_damage" = 1 + mod("PhysicalDamage", "INC", 52), --"physical_damage_+%" = 52 + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = 1 + mod("Speed", "INC", -30, ModFlag.Attack, 0, nil), --"attack_speed_+%" = -30 + --"skill_sound_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["BirdmanBloodProjectile"] = { + name = "Blood Projectile", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, }, + baseMods = { + skill("castTime", 1), + mod("Speed", "INC", 100, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 100 + mod("Damage", "MORE", 10, ModFlag.Hit), --"active_skill_damage_+%_final" = 10 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"projectile_spread_radius" = 15 + --"base_is_projectile" = ? + --"spell_maximum_action_distance_+%" = -15 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + }, + levels = { + [1] = { 4, }, + [2] = { 13, }, + [3] = { 33, }, + [4] = { 39, }, + [5] = { 55, }, + [6] = { 66, }, + }, +} +skills["BirdmanConsumeCorpse"] = { + name = "Consume Corpse", + hidden = true, + color = 4, + baseFlags = { + spell = true, + }, + skillTypes = { [2] = true, }, + baseMods = { + skill("castTime", 2.67), + skill("levelRequirement", 0), + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["ChaosDegenAura"] = { + name = "Chaos Aura", + hidden = true, + color = 4, + baseFlags = { + spell = true, + aura = true, + area = true, + chaos = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [15] = true, [40] = true, [44] = true, [50] = true, }, + baseMods = { + skill("castTime", 1), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 1.2833333333333, }, + [2] = { 5, 1.6, }, + [3] = { 8, 2.1333333333333, }, + [4] = { 10, 2.55, }, + [5] = { 12, 3.0166666666667, }, + [6] = { 14, 3.5333333333333, }, + [7] = { 17, 4.4333333333333, }, + [8] = { 20, 5.5, }, + [9] = { 24, 7.2, }, + [10] = { 30, 10.516666666667, }, + [11] = { 31, 11.166666666667, }, + [12] = { 36, 15, }, + [13] = { 41, 19.9, }, + [14] = { 44, 23.466666666667, }, + [15] = { 51, 34.083333333333, }, + [16] = { 52, 35.916666666667, }, + [17] = { 57, 46.433333333333, }, + [18] = { 60, 54.033333333333, }, + [19] = { 65, 69.283333333333, }, + [20] = { 66, 72.766666666667, }, + [21] = { 67, 76.416666666667, }, + [22] = { 68, 80.233333333333, }, + [23] = { 69, 84.233333333333, }, + [24] = { 70, 88.416666666667, }, + [25] = { 71, 92.8, }, + [26] = { 72, 97.366666666667, }, + [27] = { 73, 102.16666666667, }, + [28] = { 74, 107.16666666667, }, + [29] = { 75, 112.4, }, + [30] = { 76, 117.88333333333, }, + [31] = { 77, 123.6, }, + [32] = { 78, 129.6, }, + [33] = { 79, 135.85, }, + [34] = { 80, 142.4, }, + [35] = { 81, 149.25, }, + [36] = { 82, 156.4, }, + }, +} +skills["DelayedBlastSpectre"] = { + name = "Delayed Blast", + hidden = true, + color = 4, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 1.3), + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 3, 3, 5, }, + [2] = { 5, 4, 6, }, + [3] = { 8, 5, 8, }, + [4] = { 10, 6, 9, }, + [5] = { 12, 8, 11, }, + [6] = { 14, 9, 13, }, + [7] = { 17, 11, 17, }, + [8] = { 20, 14, 21, }, + [9] = { 24, 19, 28, }, + [10] = { 30, 28, 42, }, + [11] = { 31, 30, 45, }, + [12] = { 36, 41, 61, }, + [13] = { 41, 55, 82, }, + [14] = { 44, 65, 98, }, + [15] = { 51, 97, 146, }, + [16] = { 52, 103, 154, }, + [17] = { 57, 135, 202, }, + [18] = { 60, 159, 238, }, + [19] = { 65, 207, 310, }, + [20] = { 66, 218, 327, }, + [21] = { 67, 230, 345, }, + [22] = { 68, 242, 363, }, + [23] = { 69, 255, 382, }, + [24] = { 70, 269, 403, }, + [25] = { 71, 283, 424, }, + [26] = { 72, 298, 447, }, + [27] = { 73, 313, 470, }, + [28] = { 74, 330, 495, }, + [29] = { 75, 347, 521, }, + [30] = { 76, 365, 548, }, + [31] = { 77, 384, 577, }, + [32] = { 78, 404, 607, }, + [33] = { 79, 425, 638, }, + [34] = { 80, 447, 671, }, + [35] = { 81, 470, 706, }, + [36] = { 82, 495, 742, }, + }, +} +skills["DemonFemaleRangedProjectile"] = { + name = "Ranged Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, }, + baseMods = { + skill("castTime", 2), + skill("levelRequirement", 30), + --"spell_maximum_action_distance_+%" = -60 + mod("Damage", "MORE", -60, ModFlag.Hit), --"active_skill_damage_+%_final" = -60 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 30 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["ExperimenterDetonateDead"] = { + name = "Detonate Dead", + hidden = true, + color = 4, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"is_area_damage" = 1 + --"spell_maximum_action_distance_+%" = -70 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "corpse_explosion_monster_life_%" + [3] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 7, 6, 9, }, + [2] = { 5, 7, 7, 10, }, + [3] = { 8, 7, 9, 13, }, + [4] = { 12, 7, 11, 17, }, + [5] = { 16, 7, 14, 21, }, + [6] = { 20, 7, 17, 25, }, + [7] = { 25, 7, 21, 32, }, + [8] = { 32, 7, 28, 42, }, + [9] = { 33, 5, 29, 44, }, + [10] = { 34, 5, 30, 46, }, + [11] = { 45, 5, 45, 67, }, + [12] = { 53, 5, 57, 86, }, + [13] = { 54, 5, 59, 88, }, + [14] = { 60, 4, 70, 105, }, + [15] = { 66, 4, 83, 125, }, + [16] = { 67, 4, 85, 128, }, + [17] = { 68, 4, 88, 132, }, + [18] = { 69, 4, 90, 135, }, + [19] = { 70, 4, 93, 139, }, + [20] = { 71, 4, 95, 143, }, + [21] = { 72, 4, 98, 146, }, + [22] = { 73, 4, 100, 150, }, + [23] = { 74, 4, 103, 154, }, + [24] = { 75, 4, 106, 158, }, + [25] = { 76, 4, 108, 163, }, + [26] = { 77, 4, 111, 167, }, + [27] = { 78, 4, 114, 171, }, + [28] = { 79, 4, 117, 176, }, + [29] = { 80, 4, 120, 180, }, + [30] = { 81, 4, 123, 185, }, + [31] = { 82, 4, 126, 189, }, + }, +} +skills["FireMonsterWhirlingBlades"] = { + name = "Fire Roll", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + duration = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + mod("Speed", "INC", -50, ModFlag.Attack, 0, nil), --"attack_speed_+%" = -50 + --"monster_flurry" = 1 + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireDot", nil), --"whirling_blades_base_ground_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 1.5833333333333, }, + [2] = { 5, 2.0666666666667, }, + [3] = { 8, 3, }, + [4] = { 11, 4.2333333333333, }, + [5] = { 15, 6.4833333333333, }, + [6] = { 19, 9.6833333333333, }, + [7] = { 23, 14.166666666667, }, + [8] = { 27, 20.4, }, + [9] = { 28, 22.316666666667, }, + [10] = { 32, 31.7, }, + [11] = { 40, 62.316666666667, }, + [12] = { 47, 110.18333333333, }, + [13] = { 50, 139.96666666667, }, + [14] = { 55, 207.4, }, + [15] = { 60, 305.51666666667, }, + [16] = { 64, 414.95, }, + [17] = { 65, 447.75, }, + [18] = { 66, 483.03333333333, }, + [19] = { 67, 521.03333333333, }, + [20] = { 68, 561.91666666667, }, + [21] = { 69, 605.9, }, + [22] = { 70, 653.23333333333, }, + [23] = { 71, 704.15, }, + [24] = { 72, 758.91666666667, }, + [25] = { 73, 817.81666666667, }, + [26] = { 74, 881.16666666667, }, + [27] = { 75, 949.28333333333, }, + [28] = { 76, 1022.5333333333, }, + [29] = { 77, 1101.2833333333, }, + [30] = { 78, 1185.9333333333, }, + [31] = { 79, 1276.9166666667, }, + [32] = { 80, 1374.7166666667, }, + [33] = { 81, 1479.8333333333, }, + [34] = { 82, 1592.7833333333, }, + }, +} +skills["FlamebearerFlameBlue"] = { + name = "Blue Flame", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, + skillTotemId = 8, + baseMods = { + skill("castTime", 0.25), + skill("damageEffectiveness", 0.25), + skill("cooldown", 4), + --"skill_repeat_count" = 25 + --"skill_art_variation" = 1 + mod("Speed", "MORE", 25, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = 25 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[4] = "spell_maximum_action_distance_+%" + }, + levels = { + [1] = { 4, 2, 3, -78, }, + [2] = { 8, 3, 5, -75, }, + [3] = { 16, 7, 10, -75, }, + [4] = { 20, 9, 13, -75, }, + [5] = { 29, 17, 25, -75, }, + [6] = { 34, 23, 34, -75, }, + [7] = { 39, 31, 47, -75, }, + [8] = { 45, 45, 67, -75, }, + [9] = { 51, 63, 95, -75, }, + [10] = { 58, 93, 140, -75, }, + [11] = { 62, 116, 174, -75, }, + [12] = { 64, 129, 194, -75, }, + [13] = { 66, 144, 216, -75, }, + [14] = { 67, 152, 228, -75, }, + [15] = { 68, 248, 372, -75, }, + [16] = { 69, 261, 392, -75, }, + [17] = { 70, 276, 413, -75, }, + [18] = { 71, 291, 436, -75, }, + [19] = { 72, 306, 459, -75, }, + [20] = { 73, 323, 484, -75, }, + [21] = { 74, 340, 510, -75, }, + [22] = { 75, 358, 537, -75, }, + [23] = { 76, 377, 566, -75, }, + [24] = { 77, 397, 596, -75, }, + [25] = { 78, 418, 627, -75, }, + [26] = { 79, 440, 660, -75, }, + [27] = { 80, 464, 695, -75, }, + [28] = { 81, 488, 732, -75, }, + [29] = { 82, 514, 770, -75, }, + }, +} +skills["GoatmanMoltenShell"] = { + name = "Molten Shell", + hidden = true, + color = 1, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [36] = true, [26] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 2), + mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 + --"skill_art_variation" = 1 + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"is_area_damage" = ? + skill("critChance", 5), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[5] = "fire_shield_damage_threshold" + [6] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" + }, + levels = { + [1] = { 3, 200, 17, 25, 20, 335, }, + [2] = { 5, 200, 21, 32, 25, 649, }, + [3] = { 8, 190, 29, 43, 36, 1000, }, + [4] = { 12, 180, 41, 62, 49, 1633, }, + [5] = { 15, 180, 53, 79, 64, 2075, }, + [6] = { 19, 175, 72, 107, 91, 2573, }, + [7] = { 22, 175, 89, 133, 116, 3094, }, + [8] = { 26, 166, 117, 175, 160, 3641, }, + [9] = { 30, 160, 152, 228, 209, 4352, }, + [10] = { 36, 160, 222, 332, 315, 5313, }, + [11] = { 39, 160, 266, 398, 374, 5890, }, + [12] = { 40, 160, 282, 423, 377, 6189, }, + [13] = { 45, 160, 377, 566, 565, 7030, }, + [14] = { 50, 160, 501, 752, 752, 7870, }, + [15] = { 57, 160, 737, 1105, 1194, 9159, }, + [16] = { 60, 160, 866, 1299, 1403, 9867, }, + [17] = { 66, 160, 1190, 1784, 2091, 11090, }, + [18] = { 67, 160, 1253, 1880, 2211, 11524, }, + [19] = { 68, 160, 1321, 1981, 2334, 11966, }, + [20] = { 69, 160, 1391, 2087, 2456, 12428, }, + [21] = { 70, 160, 1465, 2198, 2579, 12894, }, + [22] = { 71, 160, 1543, 2314, 2746, 13369, }, + [23] = { 72, 160, 1624, 2437, 2912, 13857, }, + [24] = { 73, 160, 1710, 2565, 3074, 14358, }, + [25] = { 74, 160, 1800, 2700, 3237, 14875, }, + [26] = { 75, 160, 1894, 2841, 3397, 15397, }, + [27] = { 76, 160, 1993, 2990, 3552, 15931, }, + [28] = { 77, 160, 2097, 3146, 3703, 16480, }, + [29] = { 78, 160, 2206, 3309, 3847, 17039, }, + [30] = { 79, 160, 2321, 3481, 3981, 17613, }, + [31] = { 80, 160, 2441, 3661, 4110, 18195, }, + [32] = { 81, 160, 2566, 3850, 4230, 18790, }, + [33] = { 82, 160, 2698, 4048, 4334, 19399, }, + }, +} +skills["GuardianArc"] = { + name = "Arc", + hidden = true, + color = 3, + baseFlags = { + spell = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 5), --"base_chance_to_shock_%" = 5 + mod("ChainCount", "BASE", 0), --"number_of_additional_projectiles_in_chain" = 0 + mod("Speed", "MORE", -80, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = -80 + --"spell_maximum_action_distance_+%" = -50 + --"skill_art_variation" = 1 + mod("Speed", "INC", -80, ModFlag.Cast), --"base_cast_speed_+%" = -80 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 2, 2, 6, }, + [2] = { 4, 2, 7, }, + [3] = { 8, 3, 10, }, + [4] = { 12, 5, 14, }, + [5] = { 15, 6, 17, }, + [6] = { 18, 7, 21, }, + [7] = { 21, 9, 26, }, + [8] = { 25, 11, 32, }, + [9] = { 28, 13, 39, }, + [10] = { 32, 16, 48, }, + [11] = { 38, 22, 66, }, + [12] = { 46, 32, 97, }, + [13] = { 51, 41, 122, }, + [14] = { 56, 51, 154, }, + [15] = { 62, 67, 200, }, + [16] = { 64, 73, 218, }, + [17] = { 66, 79, 238, }, + [18] = { 67, 83, 248, }, + [19] = { 68, 86, 259, }, + [20] = { 69, 90, 270, }, + [21] = { 70, 113, 338, }, + [22] = { 71, 118, 353, }, + [23] = { 72, 123, 368, }, + [24] = { 73, 128, 383, }, + [25] = { 74, 133, 400, }, + [26] = { 75, 139, 416, }, + [27] = { 76, 145, 434, }, + [28] = { 77, 151, 452, }, + [29] = { 78, 157, 471, }, + [30] = { 79, 164, 491, }, + [31] = { 80, 170, 511, }, + [32] = { 81, 177, 532, }, + [33] = { 82, 185, 554, }, + [34] = { 83, 192, 577, }, + [35] = { 84, 200, 601, }, + }, +} +skills["HalfSkeletonPuncture"] = { + name = "Puncture", + hidden = true, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, + weaponTypes = { + ["Bow"] = true, + ["Claw"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 7.5), + skill("bleedBasePercent", 14.5), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 870 + --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 4370 + --"bleed_on_hit_base_duration" = 5000 + --"melee_range_+" = 20 + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + }, + levels = { + [1] = { 2, }, + [2] = { 6, }, + [3] = { 10, }, + [4] = { 14, }, + [5] = { 18, }, + [6] = { 22, }, + [7] = { 26, }, + [8] = { 30, }, + [9] = { 34, }, + [10] = { 38, }, + [11] = { 42, }, + [12] = { 46, }, + [13] = { 50, }, + [14] = { 54, }, + [15] = { 58, }, + [16] = { 61, }, + [17] = { 63, }, + [18] = { 66, }, + [19] = { 67, }, + [20] = { 68, }, + [21] = { 69, }, + [22] = { 70, }, + [23] = { 71, }, + [24] = { 72, }, + [25] = { 73, }, + [26] = { 74, }, + [27] = { 75, }, + [28] = { 76, }, + [29] = { 77, }, + [30] = { 78, }, + [31] = { 79, }, + [32] = { 80, }, + [33] = { 81, }, + [34] = { 82, }, + }, +} +skills["IguanaProjectile"] = { + name = "Ranged Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, }, + baseMods = { + skill("castTime", 1.5), + skill("levelRequirement", 1), + skill("cooldown", 3.5), + --"monster_projectile_variation" = 4 + --"skill_repeat_count" = 0 + --"spell_maximum_action_distance_+%" = -60 + mod("Damage", "MORE", -60, ModFlag.Hit), --"active_skill_damage_+%_final" = -60 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 30 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["IncaMinionProjectile"] = { + name = "Chaos Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, }, + baseMods = { + skill("castTime", 1.65), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"skill_range_+%" = -75 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [4] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + [5] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [6] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 4, 5, 2, 3, 3, 5, }, + [2] = { 9, 5, 3, 5, 5, 7, }, + [3] = { 13, 5, 4, 6, 6, 9, }, + [4] = { 17, 5, 5, 8, 8, 12, }, + [5] = { 21, 4, 7, 10, 10, 15, }, + [6] = { 22, 4, 7, 10, 10, 15, }, + [7] = { 25, 4, 8, 12, 12, 18, }, + [8] = { 32, 4, 11, 16, 16, 24, }, + [9] = { 39, 4, 14, 22, 22, 33, }, + [10] = { 45, 4, 18, 27, 27, 41, }, + [11] = { 47, 4, 20, 29, 29, 44, }, + [12] = { 48, 4, 20, 30, 30, 46, }, + [13] = { 52, 4, 23, 35, 35, 53, }, + [14] = { 56, 4, 27, 40, 40, 60, }, + [15] = { 63, 4, 34, 51, 51, 76, }, + [16] = { 64, 4, 35, 53, 53, 79, }, + [17] = { 65, 4, 36, 54, 54, 81, }, + [18] = { 66, 4, 37, 56, 56, 84, }, + [19] = { 67, 4, 39, 58, 58, 87, }, + [20] = { 68, 4, 101, 151, 151, 227, }, + [21] = { 69, 4, 104, 156, 156, 234, }, + [22] = { 70, 4, 107, 161, 161, 242, }, + [23] = { 71, 4, 110, 166, 166, 249, }, + [24] = { 72, 4, 114, 172, 171, 257, }, + [25] = { 73, 4, 118, 177, 176, 265, }, + [26] = { 74, 4, 121, 182, 182, 274, }, + [27] = { 75, 4, 125, 188, 188, 282, }, + [28] = { 76, 4, 129, 194, 193, 291, }, + [29] = { 77, 4, 133, 200, 199, 300, }, + [30] = { 78, 4, 137, 206, 205, 309, }, + [31] = { 79, 4, 141, 212, 212, 319, }, + [32] = { 80, 4, 145, 219, 218, 328, }, + [33] = { 81, 4, 150, 226, 225, 338, }, + [34] = { 82, 4, 154, 232, 232, 349, }, + }, +} +skills["InsectSpawnerSpit"] = { + name = "Spit", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [3] = true, }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = 1 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 30 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_fire_damage" + [3] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_fire_damage" + [4] = mod("PhysicalMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_physical_damage" + [5] = mod("PhysicalMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_physical_damage" + }, + levels = { + [1] = { 2, 1, 1, 2, 3, }, + [2] = { 5, 1, 2, 3, 4, }, + [3] = { 8, 2, 2, 4, 6, }, + [4] = { 11, 2, 3, 6, 7, }, + [5] = { 15, 3, 4, 8, 10, }, + [6] = { 18, 3, 5, 9, 12, }, + [7] = { 22, 4, 7, 12, 15, }, + [8] = { 26, 6, 8, 15, 19, }, + [9] = { 28, 6, 9, 17, 21, }, + [10] = { 34, 9, 13, 24, 29, }, + [11] = { 41, 12, 19, 34, 42, }, + [12] = { 49, 18, 27, 49, 62, }, + [13] = { 50, 19, 29, 52, 65, }, + [14] = { 55, 24, 36, 65, 81, }, + [15] = { 60, 30, 45, 81, 101, }, + [16] = { 64, 36, 54, 97, 121, }, + [17] = { 65, 37, 56, 101, 126, }, + [18] = { 66, 39, 58, 105, 131, }, + [19] = { 67, 41, 61, 110, 137, }, + [20] = { 68, 42, 64, 115, 143, }, + [21] = { 69, 44, 66, 119, 149, }, + [22] = { 70, 46, 69, 125, 156, }, + [23] = { 71, 48, 72, 130, 162, }, + [24] = { 72, 50, 75, 136, 169, }, + [25] = { 73, 52, 78, 141, 177, }, + [26] = { 74, 55, 82, 147, 184, }, + [27] = { 75, 57, 85, 154, 192, }, + [28] = { 76, 59, 89, 160, 200, }, + [29] = { 77, 62, 93, 167, 208, }, + [30] = { 78, 64, 96, 174, 217, }, + [31] = { 79, 67, 101, 181, 226, }, + [32] = { 80, 70, 105, 188, 236, }, + [33] = { 81, 73, 109, 196, 245, }, + [34] = { 82, 76, 114, 204, 255, }, + }, +} +skills["MassFrenzy"] = { + name = "Mass Frenzy", + hidden = true, + color = 4, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, }, + baseMods = { + skill("castTime", 2), + skill("levelRequirement", 0), + skill("manaCost", 100), + skill("cooldown", 6), + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterArc"] = { + name = "Arc", + hidden = true, + color = 3, + baseFlags = { + spell = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 10), --"base_chance_to_shock_%" = 10 + mod("ChainCount", "BASE", 1), --"number_of_additional_projectiles_in_chain" = 1 + --"skill_range_+%" = -50 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 3, 20, 2, 7, }, + [2] = { 5, 20, 3, 9, }, + [3] = { 8, 19, 4, 12, }, + [4] = { 12, 18, 6, 17, }, + [5] = { 15, 18, 8, 23, }, + [6] = { 18, 18, 10, 29, }, + [7] = { 21, 18, 12, 37, }, + [8] = { 25, 17, 17, 50, }, + [9] = { 32, 16, 27, 82, }, + [10] = { 38, 16, 41, 123, }, + [11] = { 46, 16, 68, 205, }, + [12] = { 52, 16, 99, 298, }, + [13] = { 56, 16, 127, 380, }, + [14] = { 62, 16, 181, 542, }, + [15] = { 66, 16, 229, 686, }, + [16] = { 67, 16, 242, 727, }, + [17] = { 68, 16, 257, 770, }, + [18] = { 69, 16, 272, 816, }, + [19] = { 70, 16, 288, 864, }, + [20] = { 71, 16, 305, 915, }, + [21] = { 72, 16, 323, 969, }, + [22] = { 73, 16, 342, 1026, }, + [23] = { 74, 16, 362, 1086, }, + [24] = { 75, 16, 383, 1150, }, + [25] = { 76, 16, 406, 1217, }, + [26] = { 77, 16, 429, 1288, }, + [27] = { 78, 16, 454, 1362, }, + [28] = { 79, 16, 480, 1441, }, + [29] = { 80, 16, 508, 1525, }, + [30] = { 81, 16, 537, 1612, }, + [31] = { 82, 16, 568, 1705, }, + [32] = { 83, 16, 601, 1803, }, + [33] = { 84, 16, 635, 1906, }, + }, +} +skills["MonsterCausticArrow"] = { + name = "Caustic Arrow", + hidden = true, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [17] = true, [19] = true, [22] = true, [40] = true, [50] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("PhysicalDamageGainAsChaos", "BASE", 34, 0, 0, nil), --"physical_damage_%_to_add_as_chaos" = 34 + --"skill_can_fire_arrows" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"ground_caustic_art_variation" = 2 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 10, 1.2, 1.4833333333333, }, + [2] = { 5, 10, 1.2, 1.85, }, + [3] = { 8, 10, 1.2, 2.5, }, + [4] = { 12, 9, 1.2, 3.5833333333333, }, + [5] = { 15, 9, 1.2, 4.5833333333333, }, + [6] = { 19, 9, 1.2, 6.2166666666667, }, + [7] = { 20, 9, 1.2, 6.7, }, + [8] = { 21, 9, 1.2, 7.2, }, + [9] = { 26, 8, 1.2, 10.183333333333, }, + [10] = { 30, 8, 1.2, 13.25, }, + [11] = { 34, 8, 1.2, 17.05, }, + [12] = { 38, 8, 1.2, 21.766666666667, }, + [13] = { 43, 8, 1.2, 29.25, }, + [14] = { 45, 8, 1.2, 32.85, }, + [15] = { 53, 8, 1.2, 51.516666666667, }, + [16] = { 58, 8, 1.2, 67.666666666667, }, + [17] = { 62, 8, 1.2, 83.833333333333, }, + [18] = { 63, 8, 1.2, 88.4, }, + [19] = { 66, 8, 1.2, 103.53333333333, }, + [20] = { 67, 8, 1.2, 109.1, }, + [21] = { 68, 8, 2.4, 160.91666666667, }, + [22] = { 69, 8, 2.5, 169.5, }, + [23] = { 70, 8, 2.6, 178.51666666667, }, + [24] = { 71, 8, 2.7, 187.98333333333, }, + [25] = { 72, 8, 2.8, 197.91666666667, }, + [26] = { 73, 8, 2.9, 208.35, }, + [27] = { 74, 8, 3, 219.3, }, + [28] = { 75, 8, 3, 230.8, }, + [29] = { 76, 8, 3, 242.86666666667, }, + [30] = { 77, 8, 3, 255.51666666667, }, + [31] = { 78, 8, 3, 268.8, }, + [32] = { 79, 8, 3, 282.75, }, + [33] = { 80, 8, 3, 297.36666666667, }, + [34] = { 81, 8, 3, 312.7, }, + [35] = { 82, 8, 3, 328.8, }, + }, +} +skills["MonsterCausticBomb"] = { + name = "Caustic Bomb", + hidden = true, + color = 4, + baseFlags = { + spell = true, + trap = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [37] = true, [40] = true, [50] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + skill("cooldown", 4), + --"base_trap_duration" = 2500 + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"trap_variation" = 2 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"ground_caustic_art_variation" = 2 + --"is_trap" = ? + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [3] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + [4] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 4, 4, 5, 3.5, }, + [2] = { 7, 5, 7, 4.7833333333333, }, + [3] = { 9, 6, 8, 5.7666666666667, }, + [4] = { 12, 8, 11, 7.4833333333333, }, + [5] = { 16, 11, 15, 10.3, }, + [6] = { 20, 15, 20, 13.85, }, + [7] = { 27, 24, 32, 22.283333333333, }, + [8] = { 28, 26, 34, 23.766666666667, }, + [9] = { 29, 27, 36, 25.333333333333, }, + [10] = { 32, 33, 44, 30.566666666667, }, + [11] = { 36, 42, 56, 38.966666666667, }, + [12] = { 40, 53, 71, 49.283333333333, }, + [13] = { 45, 71, 94, 65.5, }, + [14] = { 49, 88, 118, 81.75, }, + [15] = { 50, 93, 124, 86.333333333333, }, + [16] = { 52, 104, 139, 96.233333333333, }, + [17] = { 56, 129, 172, 119.16666666667, }, + [18] = { 60, 159, 212, 147.03333333333, }, + [19] = { 64, 195, 260, 180.83333333333, }, + [20] = { 65, 206, 274, 190.33333333333, }, + [21] = { 66, 216, 288, 200.3, }, + [22] = { 67, 228, 303, 210.76666666667, }, + [23] = { 68, 239, 319, 221.73333333333, }, + [24] = { 69, 252, 336, 233.21666666667, }, + [25] = { 70, 265, 353, 245.28333333333, }, + [26] = { 71, 279, 371, 257.91666666667, }, + [27] = { 72, 293, 390, 271.15, }, + [28] = { 73, 308, 410, 285.03333333333, }, + [29] = { 74, 324, 431, 299.58333333333, }, + [30] = { 75, 340, 453, 314.83333333333, }, + [31] = { 76, 357, 476, 330.81666666667, }, + [32] = { 77, 375, 500, 347.55, }, + [33] = { 78, 394, 526, 365.1, }, + [34] = { 79, 414, 552, 383.46666666667, }, + [35] = { 80, 435, 580, 402.71666666667, }, + [36] = { 81, 457, 609, 422.88333333333, }, + [37] = { 82, 480, 639, 444, }, + }, +} +skills["MonsterDischarge"] = { + name = "Discharge", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + cold = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [36] = true, [45] = true, [33] = true, [34] = true, [35] = true, [60] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 1.5), + skill("critChance", 4), + --"spell_maximum_action_distance_+%" = -75 + --"skill_art_variation" = 1 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_minimum_base_lightning_damage_per_power_charge" + [3] = skill("LightningMax", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_maximum_base_lightning_damage_per_power_charge" + [4] = skill("FireMin", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_minimum_base_fire_damage_per_endurance_charge" + [5] = skill("FireMax", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_maximum_base_fire_damage_per_endurance_charge" + [6] = skill("ColdMin", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_minimum_base_cold_damage_per_frenzy_charge" + [7] = skill("ColdMax", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_maximum_base_cold_damage_per_frenzy_charge" + }, + levels = { + [1] = { 4, 7, 20, 10, 14, 8, 12, }, + [2] = { 7, 9, 27, 13, 19, 10, 16, }, + [3] = { 10, 11, 34, 16, 24, 13, 20, }, + [4] = { 12, 13, 40, 19, 28, 15, 23, }, + [5] = { 15, 16, 49, 23, 35, 19, 29, }, + [6] = { 20, 23, 68, 32, 49, 26, 40, }, + [7] = { 27, 34, 103, 49, 73, 40, 60, }, + [8] = { 28, 36, 108, 51, 77, 42, 63, }, + [9] = { 29, 38, 115, 54, 81, 44, 67, }, + [10] = { 32, 45, 134, 64, 95, 52, 78, }, + [11] = { 36, 55, 165, 78, 117, 64, 96, }, + [12] = { 40, 67, 200, 95, 142, 78, 116, }, + [13] = { 45, 85, 254, 120, 180, 98, 148, }, + [14] = { 49, 101, 304, 144, 217, 118, 177, }, + [15] = { 50, 106, 318, 151, 226, 124, 185, }, + [16] = { 52, 116, 348, 165, 248, 135, 203, }, + [17] = { 64, 194, 582, 276, 414, 226, 339, }, + [18] = { 65, 202, 607, 288, 432, 236, 353, }, + [19] = { 66, 211, 633, 300, 450, 245, 368, }, + [20] = { 67, 220, 659, 313, 469, 256, 384, }, + [21] = { 68, 252, 756, 358, 537, 293, 440, }, + [22] = { 69, 262, 787, 373, 560, 305, 458, }, + [23] = { 70, 273, 820, 389, 583, 318, 477, }, + [24] = { 71, 285, 854, 405, 607, 331, 497, }, + [25] = { 72, 296, 889, 422, 632, 345, 517, }, + [26] = { 73, 309, 926, 439, 658, 359, 539, }, + [27] = { 74, 321, 964, 457, 685, 374, 561, }, + [28] = { 75, 334, 1003, 475, 713, 389, 584, }, + [29] = { 76, 348, 1044, 495, 742, 405, 607, }, + [30] = { 77, 362, 1086, 515, 772, 421, 632, }, + [31] = { 78, 377, 1130, 536, 803, 438, 657, }, + [32] = { 79, 392, 1175, 557, 836, 456, 684, }, + [33] = { 80, 407, 1222, 579, 869, 474, 711, }, + [34] = { 81, 424, 1271, 603, 904, 493, 740, }, + [35] = { 82, 441, 1322, 627, 940, 513, 769, }, + }, +} +skills["MonsterEnduringCry"] = { + name = "Enduring Cry", + hidden = true, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + }, + skillTypes = { [5] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + --"endurance_charges_granted_per_one_hundred_nearby_enemies_during_endurance_warcry" = 300 + skill("duration", 0.75), --"base_skill_effect_duration" = 750 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" + }, + levels = { + [1] = { 4, 5, }, + [2] = { 7, 7.6, }, + [3] = { 10, 11, }, + [4] = { 14, 17, }, + [5] = { 18, 25.2, }, + [6] = { 22, 36.4, }, + [7] = { 24, 43.4, }, + [8] = { 28, 60.8, }, + [9] = { 32, 84.4, }, + [10] = { 36, 115.4, }, + [11] = { 40, 156.6, }, + [12] = { 44, 211, }, + [13] = { 48, 282.2, }, + [14] = { 52, 375.6, }, + [15] = { 56, 497.2, }, + [16] = { 60, 655.8, }, + [17] = { 63, 805, }, + [18] = { 66, 986.4, }, + [19] = { 67, 1055.2, }, + [20] = { 68, 1128.4, }, + [21] = { 69, 1206.6, }, + [22] = { 70, 1289.8, }, + [23] = { 71, 1378.8, }, + [24] = { 72, 1473.4, }, + [25] = { 73, 1574.4, }, + [26] = { 74, 1682, }, + [27] = { 75, 1796.8, }, + [28] = { 76, 1919, }, + [29] = { 77, 2049.2, }, + [30] = { 78, 2188, }, + [31] = { 79, 2335.8, }, + [32] = { 80, 2493.2, }, + [33] = { 81, 2660.8, }, + [34] = { 82, 2839.6, }, + }, +} +skills["MonsterEnfeeble"] = { + name = "Enfeeble", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 4), + skill("manaCost", 35), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("Accuracy", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -40 + mod("CritChance", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -40 + mod("Damage", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" = -40 + mod("CritMultiplier", "BASE", -60, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" = -60 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterFireball"] = { + name = "Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 5, 7, }, + [2] = { 5, 6, 9, }, + [3] = { 8, 8, 12, }, + [4] = { 10, 10, 14, }, + [5] = { 12, 11, 17, }, + [6] = { 14, 13, 20, }, + [7] = { 17, 17, 26, }, + [8] = { 20, 21, 32, }, + [9] = { 25, 30, 45, }, + [10] = { 28, 37, 55, }, + [11] = { 31, 45, 67, }, + [12] = { 36, 61, 91, }, + [13] = { 41, 82, 122, }, + [14] = { 46, 109, 163, }, + [15] = { 51, 144, 216, }, + [16] = { 52, 152, 228, }, + [17] = { 57, 199, 299, }, + [18] = { 65, 304, 456, }, + [19] = { 66, 320, 480, }, + [20] = { 67, 337, 506, }, + [21] = { 68, 861, 1336, }, + [22] = { 69, 906, 1406, }, + [23] = { 70, 954, 1480, }, + [24] = { 71, 1004, 1557, }, + [25] = { 72, 1056, 1639, }, + [26] = { 73, 1111, 1724, }, + [27] = { 74, 1169, 1814, }, + [28] = { 75, 1230, 1908, }, + [29] = { 76, 1293, 2006, }, + [30] = { 77, 1360, 2110, }, + [31] = { 78, 1430, 2218, }, + [32] = { 79, 1503, 2332, }, + [33] = { 80, 1580, 2451, }, + [34] = { 81, 1660, 2576, }, + [35] = { 82, 1745, 2707, }, + }, +} +skills["MonsterFireBomb"] = { + name = "Fire Bomb", + hidden = true, + color = 4, + baseFlags = { + spell = true, + trap = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [29] = true, [37] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + --"base_trap_duration" = 2500 + skill("duration", 4.5), --"base_skill_effect_duration" = 4500 + --"trap_variation" = 1 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"is_trap" = ? + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 4, 4, 7, 3.0333333333333, }, + [2] = { 7, 6, 9, 4.3, }, + [3] = { 10, 8, 13, 5.9, }, + [4] = { 12, 10, 16, 7.2, }, + [5] = { 16, 15, 23, 10.433333333333, }, + [6] = { 20, 21, 32, 14.75, }, + [7] = { 27, 37, 56, 25.983333333333, }, + [8] = { 28, 40, 61, 28.066666666667, }, + [9] = { 34, 63, 95, 44.083333333333, }, + [10] = { 40, 98, 147, 67.95, }, + [11] = { 45, 139, 208, 96.35, }, + [12] = { 49, 182, 274, 126.63333333333, }, + [13] = { 50, 195, 293, 135.48333333333, }, + [14] = { 54, 255, 382, 177.03333333333, }, + [15] = { 58, 332, 498, 230.43333333333, }, + [16] = { 62, 430, 646, 298.88333333333, }, + [17] = { 64, 490, 734, 339.98333333333, }, + [18] = { 65, 522, 783, 362.51666666667, }, + [19] = { 66, 557, 835, 386.46666666667, }, + [20] = { 67, 593, 890, 411.91666666667, }, + [21] = { 68, 885, 1328, 614.58333333333, }, + [22] = { 69, 943, 1414, 654.85, }, + [23] = { 70, 1005, 1507, 697.65, }, + [24] = { 71, 1070, 1605, 743.13333333333, }, + [25] = { 72, 1140, 1710, 791.45, }, + [26] = { 73, 1214, 1820, 842.78333333333, }, + [27] = { 74, 1292, 1938, 897.31666666667, }, + [28] = { 75, 1376, 2063, 955.25, }, + [29] = { 76, 1464, 2196, 1016.7666666667, }, + [30] = { 77, 1558, 2337, 1082.1166666667, }, + [31] = { 78, 1658, 2487, 1151.5, }, + [32] = { 79, 1764, 2646, 1225.1833333333, }, + [33] = { 80, 1877, 2815, 1303.4, }, + [34] = { 81, 1996, 2995, 1386.45, }, + [35] = { 82, 2123, 3185, 1474.6166666667, }, + }, +} +skills["MonsterFlickerStrike"] = { + name = "Flicker Strike", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [25] = true, [28] = true, [38] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 13), + skill("manaCost", 18), + skill("cooldown", 2), + mod("Speed", "INC", 30, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 30 + mod("Speed", "INC", 10, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 10 + mod("PhysicalDamage", "INC", 0), --"physical_damage_+%" = 0 + mod("Damage", "MORE", 10, ModFlag.Hit), --"active_skill_damage_+%_final" = 10 + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterLeapSlam"] = { + name = "Leap Slam", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Two Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1.4), + skill("levelRequirement", 2), + mod("Damage", "MORE", 50, ModFlag.Attack), + --"skill_art_variation" = 1 + --"is_area_damage" = ? + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterLesserMultiFireballSpectre"] = { + name = "Lesser Multi Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + mod("ProjectileCount", "BASE", 1), --"number_of_additional_projectiles" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 4, 5, }, + [2] = { 5, 4, 7, }, + [3] = { 8, 6, 9, }, + [4] = { 12, 9, 13, }, + [5] = { 15, 11, 16, }, + [6] = { 19, 15, 22, }, + [7] = { 20, 16, 24, }, + [8] = { 21, 17, 26, }, + [9] = { 26, 24, 36, }, + [10] = { 30, 31, 47, }, + [11] = { 34, 40, 60, }, + [12] = { 38, 51, 77, }, + [13] = { 43, 69, 103, }, + [14] = { 45, 77, 115, }, + [15] = { 53, 120, 180, }, + [16] = { 58, 157, 236, }, + [17] = { 62, 194, 291, }, + [18] = { 63, 205, 307, }, + [19] = { 66, 239, 359, }, + [20] = { 67, 252, 378, }, + [21] = { 68, 584, 876, }, + [22] = { 69, 615, 922, }, + [23] = { 70, 647, 970, }, + [24] = { 71, 681, 1021, }, + [25] = { 72, 716, 1075, }, + [26] = { 73, 754, 1131, }, + [27] = { 74, 793, 1189, }, + [28] = { 75, 834, 1251, }, + [29] = { 76, 877, 1316, }, + [30] = { 77, 922, 1384, }, + [31] = { 78, 970, 1455, }, + [32] = { 79, 1019, 1529, }, + [33] = { 80, 1072, 1607, }, + [34] = { 81, 1126, 1689, }, + [35] = { 82, 1183, 1775, }, + }, +} +skills["MonsterLightningArrow"] = { + name = "Lightning Arrow", + hidden = true, + color = 2, + baseFlags = { + attack = true, + projectile = true, + lightning = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [3] = true, [22] = true, [17] = true, [19] = true, [35] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 9), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + --"lightning_arrow_maximum_number_of_extra_targets" = 4 + mod("EnemyShockChance", "BASE", 25), --"base_chance_to_shock_%" = 25 + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterLightningThorns"] = { + name = "Lightning Thorns", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3.5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "minimum_lightning_damage_to_return_when_hit" + --[3] = "maximum_lightning_damage_to_return_when_hit" + }, + levels = { + [1] = { 3, 3, 10, }, + [2] = { 5, 4, 13, }, + [3] = { 8, 6, 17, }, + [4] = { 12, 8, 24, }, + [5] = { 16, 11, 32, }, + [6] = { 24, 18, 55, }, + [7] = { 28, 23, 70, }, + [8] = { 29, 25, 74, }, + [9] = { 32, 29, 88, }, + [10] = { 38, 41, 123, }, + [11] = { 44, 57, 170, }, + [12] = { 50, 77, 231, }, + [13] = { 51, 81, 243, }, + [14] = { 52, 85, 255, }, + [15] = { 56, 103, 310, }, + [16] = { 60, 125, 376, }, + [17] = { 63, 145, 434, }, + [18] = { 65, 159, 476, }, + [19] = { 66, 166, 499, }, + [20] = { 67, 174, 523, }, + [21] = { 68, 183, 548, }, + [22] = { 69, 191, 574, }, + [23] = { 70, 200, 601, }, + [24] = { 71, 210, 629, }, + [25] = { 72, 219, 658, }, + [26] = { 73, 230, 689, }, + [27] = { 74, 240, 721, }, + [28] = { 75, 252, 755, }, + [29] = { 76, 263, 790, }, + [30] = { 77, 275, 826, }, + [31] = { 78, 288, 864, }, + [32] = { 79, 301, 903, }, + [33] = { 80, 315, 945, }, + [34] = { 81, 329, 988, }, + [35] = { 82, 344, 1032, }, + }, +} +skills["MonsterMultiFireballSpectre"] = { + name = "Multi Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 3, 5, }, + [2] = { 5, 4, 6, }, + [3] = { 8, 5, 8, }, + [4] = { 12, 7, 11, }, + [5] = { 15, 10, 14, }, + [6] = { 19, 13, 19, }, + [7] = { 20, 14, 21, }, + [8] = { 21, 15, 22, }, + [9] = { 26, 21, 32, }, + [10] = { 30, 27, 41, }, + [11] = { 34, 35, 53, }, + [12] = { 38, 45, 67, }, + [13] = { 43, 60, 90, }, + [14] = { 45, 67, 101, }, + [15] = { 53, 105, 157, }, + [16] = { 58, 137, 206, }, + [17] = { 62, 170, 255, }, + [18] = { 63, 179, 269, }, + [19] = { 66, 209, 314, }, + [20] = { 67, 221, 331, }, + [21] = { 68, 511, 766, }, + [22] = { 69, 538, 807, }, + [23] = { 70, 566, 849, }, + [24] = { 71, 596, 894, }, + [25] = { 72, 627, 940, }, + [26] = { 73, 660, 989, }, + [27] = { 74, 694, 1041, }, + [28] = { 75, 730, 1095, }, + [29] = { 76, 768, 1151, }, + [30] = { 77, 807, 1211, }, + [31] = { 78, 849, 1273, }, + [32] = { 79, 892, 1338, }, + [33] = { 80, 938, 1406, }, + [34] = { 81, 985, 1478, }, + [35] = { 82, 1035, 1553, }, + }, +} +skills["MonsterProjectileWeakness"] = { + name = "Projectile Weakness", + hidden = true, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("duration", nil), --"base_skill_effect_duration" + [3] = mod("SelfPierceChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" + --[4] = "chance_to_be_knocked_back_%" + [5] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" + }, + levels = { + [1] = { 25, 10.4, 54, 22, 32, }, + [2] = { 36, 10.4, 54, 22, 32, }, + [3] = { 47, 10.4, 54, 22, 32, }, + [4] = { 55, 10.9, 70, 24, 34, }, + [5] = { 60, 10.9, 95, 24, 34, }, + }, +} +skills["MonsterProximityShield"] = { + name = "Proximity Shield", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 0), + skill("cooldown", 18), + skill("duration", 8), --"base_skill_effect_duration" = 8000 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterPuncture"] = { + name = "Puncture", + hidden = true, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, + weaponTypes = { + ["Bow"] = true, + ["Claw"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"bleed_on_hit_base_duration" = 5000 + --"skill_can_fire_arrows" = ? + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("bleedBasePercent", nil), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" + --[3] = "base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" + }, + levels = { + [1] = { 9, 14.5, 4370, }, + [2] = { 30, 20.666666666667, 6210, }, + [3] = { 60, 25.833333333333, 7730, }, + }, +} +skills["MonsterRighteousFireWhileSpectred"] = { + name = "Unrighteous Fire", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [29] = true, [36] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + --"skill_art_variation" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 1.5833333333333, }, + [2] = { 5, 2.05, }, + [3] = { 8, 2.9, }, + [4] = { 10, 3.6, }, + [5] = { 12, 4.4166666666667, }, + [6] = { 14, 5.3666666666667, }, + [7] = { 17, 7.1166666666667, }, + [8] = { 20, 9.3333333333333, }, + [9] = { 24, 13.15, }, + [10] = { 27, 16.866666666667, }, + [11] = { 28, 18.3, }, + [12] = { 31, 23.25, }, + [13] = { 36, 34.283333333333, }, + [14] = { 41, 49.933333333333, }, + [15] = { 44, 62.266666666667, }, + [16] = { 48, 83.183333333333, }, + [17] = { 50, 95.983333333333, }, + [18] = { 52, 110.61666666667, }, + [19] = { 57, 157, }, + [20] = { 63, 237.28333333333, }, + [21] = { 64, 254.01666666667, }, + [22] = { 65, 271.86666666667, }, + [23] = { 66, 290.93333333333, }, + [24] = { 67, 311.28333333333, }, + [25] = { 68, 332.98333333333, }, + [26] = { 69, 356.16666666667, }, + [27] = { 70, 380.88333333333, }, + [28] = { 71, 407.25, }, + [29] = { 72, 435.38333333333, }, + [30] = { 73, 465.38333333333, }, + [31] = { 74, 497.38333333333, }, + [32] = { 75, 531.5, }, + [33] = { 76, 567.88333333333, }, + [34] = { 77, 606.68333333333, }, + [35] = { 78, 648.03333333333, }, + [36] = { 79, 692.11666666667, }, + [37] = { 80, 739.1, }, + [38] = { 81, 789.18333333333, }, + [39] = { 82, 842.56666666667, }, + }, +} +skills["MonsterShockNova"] = { + name = "Shock Nova", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("critChance", 3), + --"is_area_damage" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 4, 3, 10, }, + [2] = { 8, 5, 15, }, + [3] = { 11, 6, 19, }, + [4] = { 12, 7, 20, }, + [5] = { 17, 10, 29, }, + [6] = { 22, 13, 40, }, + [7] = { 29, 20, 60, }, + [8] = { 31, 22, 67, }, + [9] = { 35, 28, 83, }, + [10] = { 37, 31, 92, }, + [11] = { 40, 36, 107, }, + [12] = { 45, 46, 137, }, + [13] = { 50, 58, 173, }, + [14] = { 55, 73, 218, }, + [15] = { 58, 83, 250, }, + [16] = { 65, 113, 340, }, + [17] = { 66, 118, 355, }, + [18] = { 67, 124, 371, }, + [19] = { 68, 377, 1132, }, + [20] = { 69, 393, 1182, }, + [21] = { 70, 410, 1233, }, + [22] = { 71, 428, 1286, }, + [23] = { 72, 446, 1342, }, + [24] = { 73, 465, 1400, }, + [25] = { 74, 485, 1459, }, + [26] = { 75, 506, 1522, }, + [27] = { 76, 528, 1587, }, + [28] = { 77, 550, 1654, }, + [29] = { 78, 573, 1724, }, + [30] = { 79, 597, 1796, }, + [31] = { 80, 623, 1872, }, + [32] = { 81, 649, 1950, }, + [33] = { 82, 676, 2032, }, + }, +} +skills["MonsterSpark"] = { + name = "Spark", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + --"base_is_projectile" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 4, 20, 2, 7, 0, }, + [2] = { 8, 19, 3, 10, 0, }, + [3] = { 11, 18, 4, 12, 1, }, + [4] = { 12, 18, 4, 13, 1, }, + [5] = { 15, 18, 5, 16, 1, }, + [6] = { 20, 18, 7, 22, 1, }, + [7] = { 25, 17, 10, 29, 1, }, + [8] = { 29, 16, 12, 36, 1, }, + [9] = { 31, 16, 13, 40, 2, }, + [10] = { 32, 16, 14, 42, 2, }, + [11] = { 34, 16, 15, 46, 2, }, + [12] = { 37, 16, 18, 54, 2, }, + [13] = { 40, 16, 21, 62, 2, }, + [14] = { 42, 16, 22, 67, 2, }, + [15] = { 45, 16, 26, 77, 2, }, + [16] = { 50, 16, 32, 96, 2, }, + [17] = { 51, 16, 33, 100, 2, }, + [18] = { 52, 16, 35, 104, 2, }, + [19] = { 54, 16, 38, 113, 2, }, + [20] = { 58, 16, 44, 133, 2, }, + [21] = { 66, nil, 61, 183, 2, }, + [22] = { 67, nil, 63, 190, 2, }, + [23] = { 68, nil, 145, 435, 2, }, + [24] = { 69, nil, 151, 452, 2, }, + [25] = { 70, nil, 157, 470, 2, }, + [26] = { 71, nil, 163, 488, 2, }, + [27] = { 72, nil, 169, 507, 2, }, + [28] = { 73, nil, 176, 527, 2, }, + [29] = { 74, nil, 182, 547, 2, }, + [30] = { 75, nil, 189, 568, 2, }, + [31] = { 76, nil, 197, 590, 2, }, + [32] = { 77, nil, 204, 612, 2, }, + [33] = { 78, nil, 212, 636, 2, }, + [34] = { 79, nil, 220, 660, 2, }, + [35] = { 80, nil, 228, 684, 2, }, + [36] = { 81, nil, 237, 710, 2, }, + [37] = { 82, nil, 246, 737, 2, }, + }, +} +skills["MonsterSplitFireballSpectre"] = { + name = "Split Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + --"projectiles_fork" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 4, 6, }, + [2] = { 5, 5, 7, }, + [3] = { 8, 6, 10, }, + [4] = { 12, 9, 14, }, + [5] = { 15, 12, 18, }, + [6] = { 19, 16, 24, }, + [7] = { 20, 17, 26, }, + [8] = { 21, 18, 28, }, + [9] = { 26, 26, 39, }, + [10] = { 30, 34, 50, }, + [11] = { 34, 43, 65, }, + [12] = { 38, 55, 82, }, + [13] = { 43, 74, 111, }, + [14] = { 45, 83, 124, }, + [15] = { 53, 129, 193, }, + [16] = { 58, 169, 253, }, + [17] = { 62, 209, 313, }, + [18] = { 63, 220, 330, }, + [19] = { 66, 257, 386, }, + [20] = { 67, 271, 406, }, + [21] = { 68, 628, 941, }, + [22] = { 69, 661, 991, }, + [23] = { 70, 695, 1043, }, + [24] = { 71, 732, 1098, }, + [25] = { 72, 770, 1155, }, + [26] = { 73, 810, 1216, }, + [27] = { 74, 852, 1279, }, + [28] = { 75, 897, 1345, }, + [29] = { 76, 943, 1414, }, + [30] = { 77, 992, 1487, }, + [31] = { 78, 1042, 1564, }, + [32] = { 79, 1096, 1644, }, + [33] = { 80, 1152, 1728, }, + [34] = { 81, 1211, 1816, }, + [35] = { 82, 1272, 1908, }, + }, +} +skills["MonsterWarlordsMark"] = { + name = "Warlord's Mark", + hidden = true, + color = 1, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 5), + skill("manaCost", 50), + skill("duration", 8.8), --"base_skill_effect_duration" = 8800 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("StunRecovery", "INC", -27, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_stun_recovery_+%" = -27 + --"chance_to_be_stunned_%" = 10 + mod("SelfDamageLifeLeech", "BASE", 128, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_leech_on_any_damage_when_hit_permyriad" = 128 + mod("SelfDamageManaLeech", "BASE", 108, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_leech_on_any_damage_when_hit_permyriad" = 108 + --"chance_to_grant_endurance_charge_on_death_%" = 37 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["NecromancerConductivity"] = { + name = "Conductivity", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_lightning_damage_resistance_%" + [3] = mod("SelfShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" + }, + levels = { + [1] = { 10, -20, 14, }, + [2] = { 40, -20, 14, }, + [3] = { 41, -25, 16, }, + [4] = { 57, -25, 16, }, + [5] = { 58, -30, 18, }, + [6] = { 70, -30, 18, }, + [7] = { 71, -40, 20, }, + }, +} +skills["NecromancerElementalWeakness"] = { + name = "Elemental Weakness", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 35), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("SelfShockChance", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" = 0 + mod("SelfFreezeChance", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" = 0 + mod("SelfIgniteChance", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" + }, + levels = { + [1] = { 10, -20, }, + [2] = { 39, -20, }, + [3] = { 40, -25, }, + [4] = { 55, -25, }, + [5] = { 56, -30, }, + [6] = { 70, -30, }, + [7] = { 71, -40, }, + }, +} +skills["NecromancerEnfeeble"] = { + name = "Enfeeble", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 4), + skill("manaCost", 35), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("Accuracy", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -40 + mod("CritChance", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -40 + mod("Damage", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" = -40 + mod("CritMultiplier", "BASE", -60, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" = -60 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["NecromancerFlammability"] = { + name = "Flammability", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 50), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_fire_damage_resistance_%" + [3] = mod("SelfIgniteChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" + }, + levels = { + [1] = { 10, -20, 14, }, + [2] = { 40, -20, 14, }, + [3] = { 41, -25, 16, }, + [4] = { 57, -25, 16, }, + [5] = { 58, -30, 18, }, + [6] = { 70, -30, 18, }, + [7] = { 71, -40, 20, }, + }, +} +skills["NecromancerFrostbite"] = { + name = "Frostbite", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 50), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_cold_damage_resistance_%" + [3] = mod("SelfFreezeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" + }, + levels = { + [1] = { 10, -20, 14, }, + [2] = { 40, -20, 14, }, + [3] = { 41, -25, 16, }, + [4] = { 57, -25, 16, }, + [5] = { 58, -30, 18, }, + [6] = { 70, -30, 18, }, + [7] = { 71, -40, 20, }, + }, +} +skills["NecromancerProjectileWeakness"] = { + name = "Projectile Weakness", + hidden = true, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("duration", nil), --"base_skill_effect_duration" + [3] = mod("SelfPierceChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" + --[4] = "chance_to_be_knocked_back_%" + [5] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" + }, + levels = { + [1] = { 25, 10.4, 54, 22, 32, }, + [2] = { 36, 10.4, 54, 22, 32, }, + [3] = { 47, 10.4, 54, 22, 32, }, + [4] = { 55, 10.9, 70, 24, 34, }, + [5] = { 60, 10.9, 95, 24, 34, }, + }, +} +skills["NecromancerRaiseZombie"] = { + name = "Raise Zombie", + hidden = true, + color = 4, + baseFlags = { + spell = true, + minion = true, + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [11] = true, }, + baseMods = { + skill("castTime", 0.85), + --"alternate_minion" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ActiveZombieLimit", "BASE", nil), --"base_number_of_zombies_allowed" + }, + levels = { + [1] = { 2, 3, }, + [2] = { 3, 3, }, + [3] = { 5, 3, }, + [4] = { 8, 3, }, + [5] = { 11, 3, }, + [6] = { 16, 3, }, + [7] = { 21, 3, }, + [8] = { 26, 4, }, + [9] = { 31, 4, }, + [10] = { 35, 4, }, + [11] = { 40, 5, }, + [12] = { 44, 5, }, + [13] = { 48, 5, }, + [14] = { 51, 6, }, + [15] = { 54, 6, }, + [16] = { 58, 6, }, + [17] = { 63, 6, }, + }, +} +skills["NecromancerVulnerability"] = { + name = "Vulnerability", + hidden = true, + color = 4, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 1), + skill("manaCost", 110), + skill("duration", 10.9), --"base_skill_effect_duration" = 10900 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("PhysicalDamageTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 50 + mod("DotTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 50 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["PyroChaosFireball"] = { + name = "Chaos Fireball", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + skill("cooldown", 3), + --"spell_maximum_action_distance_+%" = -50 + --"skill_art_variation" = 4 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [4] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [5] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + }, + levels = { + [1] = { 3, 3, 4, 2, 2, }, + [2] = { 5, 3, 5, 2, 3, }, + [3] = { 8, 4, 6, 3, 3, }, + [4] = { 10, 5, 7, 3, 4, }, + [5] = { 12, 6, 9, 4, 5, }, + [6] = { 14, 7, 10, 5, 6, }, + [7] = { 17, 8, 12, 6, 7, }, + [8] = { 20, 10, 15, 7, 8, }, + [9] = { 27, 15, 22, 10, 12, }, + [10] = { 28, 16, 24, 11, 13, }, + [11] = { 31, 19, 28, 12, 15, }, + [12] = { 36, 24, 36, 16, 20, }, + [13] = { 41, 31, 46, 21, 25, }, + [14] = { 49, 44, 66, 30, 37, }, + [15] = { 50, 46, 69, 31, 38, }, + [16] = { 52, 51, 76, 34, 42, }, + [17] = { 57, 63, 94, 42, 52, }, + [18] = { 63, 81, 122, 55, 67, }, + [19] = { 64, 85, 127, 57, 70, }, + [20] = { 65, 88, 132, 60, 73, }, + [21] = { 66, 92, 138, 62, 76, }, + [22] = { 67, 96, 144, 65, 79, }, + [23] = { 68, 100, 150, 67, 82, }, + [24] = { 69, 104, 156, 70, 86, }, + [25] = { 70, 108, 163, 73, 89, }, + [26] = { 71, 113, 169, 76, 93, }, + [27] = { 72, 117, 176, 79, 97, }, + [28] = { 73, 122, 183, 83, 101, }, + [29] = { 74, 127, 191, 86, 105, }, + [30] = { 75, 132, 199, 89, 109, }, + [31] = { 76, 138, 207, 93, 114, }, + [32] = { 77, 143, 215, 97, 118, }, + [33] = { 78, 149, 224, 101, 123, }, + [34] = { 79, 155, 233, 105, 128, }, + [35] = { 80, 161, 242, 109, 133, }, + [36] = { 81, 168, 252, 113, 139, }, + [37] = { 82, 175, 262, 118, 144, }, + }, +} +skills["PyroFireball"] = { + name = "Fireball", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + --"skill_art_variation" = 3 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 5, 7, }, + [2] = { 5, 6, 9, }, + [3] = { 8, 8, 12, }, + [4] = { 10, 10, 14, }, + [5] = { 12, 11, 17, }, + [6] = { 14, 13, 20, }, + [7] = { 17, 17, 26, }, + [8] = { 20, 21, 32, }, + [9] = { 24, 28, 42, }, + [10] = { 28, 37, 55, }, + [11] = { 31, 45, 67, }, + [12] = { 36, 61, 91, }, + [13] = { 41, 82, 122, }, + [14] = { 46, 109, 163, }, + [15] = { 50, 136, 204, }, + [16] = { 52, 152, 228, }, + [17] = { 57, 199, 299, }, + [18] = { 63, 274, 411, }, + [19] = { 64, 288, 433, }, + [20] = { 65, 304, 456, }, + [21] = { 66, 320, 480, }, + [22] = { 67, 337, 506, }, + [23] = { 68, 497, 745, }, + [24] = { 69, 523, 785, }, + [25] = { 70, 551, 826, }, + [26] = { 71, 580, 869, }, + [27] = { 72, 610, 915, }, + [28] = { 73, 642, 962, }, + [29] = { 74, 675, 1012, }, + [30] = { 75, 710, 1065, }, + [31] = { 76, 747, 1120, }, + [32] = { 77, 785, 1178, }, + [33] = { 78, 825, 1238, }, + [34] = { 79, 868, 1301, }, + [35] = { 80, 912, 1368, }, + [36] = { 81, 958, 1438, }, + [37] = { 82, 1007, 1511, }, + }, +} +skills["PyroSuicideExplosion"] = { + name = "Suicide Explosion", + hidden = true, + color = 4, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [10] = true, }, + baseMods = { + skill("castTime", 1), + --"is_area_damage" = 1 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + --[4] = "grant_kill_to_target_when_exploding_self" + }, + levels = { + [1] = { 3, 9, 14, nil, }, + [2] = { 5, 12, 18, nil, }, + [3] = { 9, 18, 27, nil, }, + [4] = { 12, 24, 37, nil, }, + [5] = { 13, 27, 40, nil, }, + [6] = { 18, 42, 62, nil, }, + [7] = { 23, 63, 94, nil, }, + [8] = { 27, 85, 128, nil, }, + [9] = { 28, 92, 138, nil, }, + [10] = { 35, 154, 231, nil, }, + [11] = { 49, 399, 599, nil, }, + [12] = { 50, 427, 640, nil, }, + [13] = { 58, 714, 1072, nil, }, + [14] = { 64, 1042, 1563, nil, }, + [15] = { 65, 1109, 1664, nil, }, + [16] = { 66, 1180, 1770, nil, }, + [17] = { 67, 1256, 1883, nil, }, + [18] = { 68, 1336, 2003, nil, }, + [19] = { 69, 1420, 2131, nil, }, + [20] = { 70, 1510, 2265, nil, }, + [21] = { 71, 1606, 2409, nil, }, + [22] = { 72, 1707, 2560, nil, }, + [23] = { 73, 1814, 2721, nil, }, + [24] = { 74, 1928, 2892, nil, }, + [25] = { 75, 2048, 3073, nil, }, + [26] = { 76, 2176, 3264, nil, }, + [27] = { 77, 2312, 3467, nil, }, + [28] = { 78, 2455, 3683, nil, }, + [29] = { 79, 2607, 3911, nil, }, + [30] = { 80, 2768, 4153, nil, }, + [31] = { 81, 2939, 4409, nil, }, + [32] = { 82, 3120, 4680, nil, }, + }, +} +skills["RevenantSpellProjectileSpectre"] = { + name = "Lightning Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [3] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3), + --"monster_projectile_variation" = 7 + --"base_number_of_projectiles_in_spiral_nova" = 3 + --"projectile_spiral_nova_time_ms" = 150 + --"projectile_spiral_nova_angle" = 20 + --"projectile_spiral_nova_starting_angle_offset" = -10 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 60 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 3, 3, 7, }, + [2] = { 5, 4, 9, }, + [3] = { 8, 6, 13, }, + [4] = { 11, 8, 18, }, + [5] = { 15, 11, 26, }, + [6] = { 20, 17, 40, }, + [7] = { 24, 24, 56, }, + [8] = { 28, 33, 77, }, + [9] = { 29, 36, 83, }, + [10] = { 32, 45, 104, }, + [11] = { 36, 60, 141, }, + [12] = { 40, 81, 188, }, + [13] = { 45, 115, 268, }, + [14] = { 49, 152, 354, }, + [15] = { 50, 162, 379, }, + [16] = { 52, 186, 434, }, + [17] = { 56, 243, 568, }, + [18] = { 60, 318, 741, }, + [19] = { 64, 413, 963, }, + [20] = { 65, 441, 1028, }, + [21] = { 66, 470, 1097, }, + [22] = { 67, 502, 1170, }, + [23] = { 68, 535, 1248, }, + [24] = { 69, 571, 1331, }, + [25] = { 70, 608, 1420, }, + [26] = { 71, 649, 1514, }, + [27] = { 72, 692, 1614, }, + [28] = { 73, 737, 1720, }, + [29] = { 74, 786, 1833, }, + [30] = { 75, 837, 1953, }, + [31] = { 76, 892, 2081, }, + [32] = { 77, 950, 2217, }, + [33] = { 78, 1012, 2361, }, + [34] = { 79, 1078, 2515, }, + [35] = { 80, 1148, 2678, }, + [36] = { 81, 1222, 2851, }, + [37] = { 82, 1301, 3035, }, + }, +} +skills["SeaWitchScreech"] = { + name = "Screech", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + area = true, + }, + skillTypes = { [2] = true, }, + baseMods = { + skill("castTime", 2.73), + skill("cooldown", 6.5), + mod("MovementSpeed", "INC", -20, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_movement_velocity_+%" = -20 + skill("duration", 1.9), --"base_skill_effect_duration" = 1900 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 3, 1, 2, }, + [2] = { 5, 1, 2, }, + [3] = { 6, 2, 2, }, + [4] = { 8, 2, 3, }, + [5] = { 10, 2, 3, }, + [6] = { 13, 3, 4, }, + [7] = { 17, 4, 6, }, + [8] = { 20, 5, 8, }, + [9] = { 24, 7, 10, }, + [10] = { 27, 8, 13, }, + [11] = { 29, 10, 14, }, + [12] = { 35, 14, 21, }, + [13] = { 42, 22, 33, }, + [14] = { 49, 33, 50, }, + [15] = { 51, 37, 56, }, + [16] = { 58, 56, 83, }, + [17] = { 64, 77, 116, }, + [18] = { 65, 82, 123, }, + [19] = { 66, 86, 130, }, + [20] = { 67, 91, 137, }, + [21] = { 68, 223, 347, }, + [22] = { 69, 235, 366, }, + [23] = { 70, 248, 386, }, + [24] = { 71, 262, 407, }, + [25] = { 72, 276, 430, }, + [26] = { 73, 291, 453, }, + [27] = { 74, 307, 478, }, + [28] = { 75, 324, 504, }, + [29] = { 76, 341, 531, }, + [30] = { 77, 360, 560, }, + [31] = { 78, 379, 590, }, + [32] = { 79, 400, 622, }, + [33] = { 80, 421, 655, }, + [34] = { 81, 444, 690, }, + [35] = { 82, 467, 727, }, + }, +} +skills["SeaWitchWave"] = { + name = "Wave", + hidden = true, + color = 4, + baseFlags = { + spell = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, }, + baseMods = { + skill("castTime", 1.5), + skill("manaCost", 6), + skill("critChance", 5), + --"base_is_projectile" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 6, 10, }, + [2] = { 6, 8, 12, }, + [3] = { 9, 10, 16, }, + [4] = { 12, 13, 20, }, + [5] = { 13, 14, 22, }, + [6] = { 14, 16, 23, }, + [7] = { 15, 17, 25, }, + [8] = { 18, 21, 31, }, + [9] = { 22, 27, 41, }, + [10] = { 25, 33, 49, }, + [11] = { 29, 42, 63, }, + [12] = { 31, 47, 71, }, + [13] = { 34, 56, 84, }, + [14] = { 38, 70, 105, }, + [15] = { 39, 74, 111, }, + [16] = { 40, 78, 117, }, + [17] = { 43, 91, 137, }, + [18] = { 49, 125, 187, }, + [19] = { 56, 176, 265, }, + [20] = { 58, 194, 292, }, + [21] = { 59, 204, 306, }, + [22] = { 60, 214, 321, }, + [23] = { 63, 247, 370, }, + [24] = { 66, 284, 427, }, + [25] = { 67, 298, 447, }, + [26] = { 68, 874, 1312, }, + [27] = { 69, 916, 1374, }, + [28] = { 70, 959, 1439, }, + [29] = { 71, 1004, 1507, }, + [30] = { 72, 1052, 1577, }, + [31] = { 73, 1101, 1651, }, + [32] = { 74, 1152, 1728, }, + [33] = { 75, 1206, 1809, }, + [34] = { 76, 1262, 1893, }, + [35] = { 77, 1320, 1980, }, + [36] = { 78, 1381, 2072, }, + [37] = { 79, 1445, 2167, }, + [38] = { 80, 1511, 2266, }, + [39] = { 81, 1580, 2370, }, + [40] = { 82, 1652, 2478, }, + }, +} +skills["SkeletonMassBowProjectile"] = { + name = "Puncture", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, }, + baseMods = { + skill("castTime", 1.5), + --"monster_projectile_variation" = 12 + --"spell_maximum_action_distance_+%" = -50 + mod("ProjectileSpeed", "INC", 200), --"base_projectile_speed_+%" = 200 + --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 3000 + skill("bleedBasePercent", 10), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 600 + --"bleed_on_hit_base_duration" = 5000 + --"base_is_projectile" = ? + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + }, + levels = { + [1] = { 2, }, + [2] = { 6, }, + [3] = { 10, }, + [4] = { 14, }, + [5] = { 18, }, + [6] = { 22, }, + [7] = { 26, }, + [8] = { 30, }, + [9] = { 34, }, + [10] = { 38, }, + [11] = { 42, }, + [12] = { 46, }, + [13] = { 50, }, + [14] = { 54, }, + [15] = { 58, }, + [16] = { 61, }, + [17] = { 63, }, + [18] = { 66, }, + [19] = { 67, }, + [20] = { 68, }, + [21] = { 69, }, + [22] = { 70, }, + [23] = { 71, }, + [24] = { 72, }, + [25] = { 73, }, + [26] = { 74, }, + [27] = { 75, }, + [28] = { 76, }, + [29] = { 77, }, + [30] = { 78, }, + [31] = { 79, }, + [32] = { 80, }, + [33] = { 81, }, + [34] = { 82, }, + }, +} +skills["SkeletonSpark"] = { + name = "Spark", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + --"base_is_projectile" = 1 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 4, 50, 2, 6, }, + [2] = { 8, 48, 3, 9, }, + [3] = { 11, 45, 4, 11, }, + [4] = { 15, 45, 5, 15, }, + [5] = { 20, 44, 7, 21, }, + [6] = { 28, 41, 11, 34, }, + [7] = { 29, 40, 12, 36, }, + [8] = { 31, 40, 14, 41, }, + [9] = { 32, 40, 14, 43, }, + [10] = { 34, 40, 16, 48, }, + [11] = { 37, 40, 19, 56, }, + [12] = { 40, 40, 22, 65, }, + [13] = { 42, 40, 24, 72, }, + [14] = { 44, 40, 26, 79, }, + [15] = { 50, 40, 35, 105, }, + [16] = { 51, 40, 37, 110, }, + [17] = { 52, 40, 38, 115, }, + [18] = { 63, 40, 63, 189, }, + [19] = { 65, 40, 69, 206, }, + [20] = { 66, 40, 72, 215, }, + [21] = { 67, 40, 75, 225, }, + [22] = { 68, 40, 351, 1052, }, + [23] = { 69, 40, 366, 1098, }, + [24] = { 70, 40, 382, 1146, }, + [25] = { 71, 40, 398, 1195, }, + [26] = { 72, 40, 416, 1247, }, + [27] = { 73, 40, 434, 1301, }, + [28] = { 74, 40, 452, 1356, }, + [29] = { 75, 40, 471, 1414, }, + [30] = { 76, 40, 492, 1475, }, + [31] = { 77, 40, 512, 1537, }, + [32] = { 78, 40, 534, 1602, }, + [33] = { 79, 40, 557, 1670, }, + [34] = { 80, 40, 580, 1740, }, + [35] = { 81, 40, 604, 1813, }, + [36] = { 82, 40, 629, 1888, }, + }, +} +skills["SkeletonTemporalChains"] = { + name = "Temporal Chains", + hidden = true, + color = 4, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 0), + skill("manaCost", 20), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"temporal_chains_action_speed_+%_final" = -20 + mod("BuffExpireFaster", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"buff_time_passed_-%" = 40 + --"skill_art_variation" = 0 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["SkeletonVulnerability"] = { + name = "Vulnerability", + hidden = true, + color = 4, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 1), + skill("manaCost", 110), + skill("duration", 10.9), --"base_skill_effect_duration" = 10900 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("PhysicalDamageTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 50 + mod("DotTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 50 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["SnakeSpineProjectile"] = { + name = "Spine Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, }, + baseMods = { + skill("castTime", 1.5), + skill("levelRequirement", 1), + --"monster_projectile_variation" = 2 + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["UndyingWhirlingBlades"] = { + name = "Whirling Blades", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("levelRequirement", 0), + skill("manaCost", 50), + --"skill_art_variation" = 1 + mod("Damage", "MORE", -40, ModFlag.Hit), --"active_skill_damage_+%_final" = -40 + --"monster_flurry" = 1 + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} \ No newline at end of file diff --git a/Data/Gems/sup_dex.lua b/Data/Skills/sup_dex.lua similarity index 87% rename from Data/Gems/sup_dex.lua rename to Data/Skills/sup_dex.lua index f92eb2e1..49e05227 100644 --- a/Data/Gems/sup_dex.lua +++ b/Data/Skills/sup_dex.lua @@ -1,13 +1,17 @@ -- Path of Building -- -- Dexterity support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Cold Damage"] = { - cold = true, - dexterity = true, +skills["SupportAddedColdDamage"] = { + name = "Added Cold Damage", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 10, }, @@ -56,9 +60,13 @@ gems["Added Cold Damage"] = { [30] = { 298, 447, }, }, } -gems["Additional Accuracy"] = { - attack = true, - dexterity = true, +skills["SupportAdditionalAccuracy"] = { + name = "Additional Accuracy", + gemTags = { + attack = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 56, }, @@ -105,8 +113,12 @@ gems["Additional Accuracy"] = { [30] = { 1594, }, }, } -gems["Blind"] = { - dexterity = true, +skills["SupportBlind"] = { + name = "Blind", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -154,8 +166,12 @@ gems["Blind"] = { [30] = { 58, }, }, } -gems["Block Chance Reduction"] = { - dexterity = true, +skills["SupportBlockReduction"] = { + name = "Block Chance Reduction", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -203,17 +219,22 @@ gems["Block Chance Reduction"] = { [30] = { 35, 34, }, }, } -gems["Cast On Critical Strike"] = { - dexterity = true, +skills["SupportCastOnCrit"] = { + name = "Cast On Critical Strike", + gemTags = { + dexterity = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 2, requireSkillTypes = { 1, 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { mod("ManaCost", "MORE", 40), + skill("cooldown", 0.5), --"cast_linked_spells_on_attack_crit_%" = 100 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? skill("showAverage", true, { type = "SkillType", skillType = 36 }), @@ -257,11 +278,15 @@ gems["Cast On Critical Strike"] = { [30] = { 49, }, }, } -gems["Cast on Death"] = { - dexterity = true, +skills["SupportCastOnDeath"] = { + name = "Cast on Death", + gemTags = { + dexterity = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 2, requireSkillTypes = { 36, }, addSkillTypes = { 42, }, @@ -311,11 +336,15 @@ gems["Cast on Death"] = { [30] = { 464, }, }, } -gems["Chain"] = { - dexterity = true, +skills["SupportChain"] = { + name = "Chain", + gemTags = { + dexterity = true, + support = true, + chaining = true, + projectile = true, + }, support = true, - chaining = true, - projectile = true, color = 2, requireSkillTypes = { 23, 3, 54, 56, }, addSkillTypes = { }, @@ -363,8 +392,12 @@ gems["Chain"] = { [30] = { -21, }, }, } -gems["Chance to Flee"] = { - dexterity = true, +skills["SupportChanceToFlee"] = { + name = "Chance to Flee", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 10, }, @@ -411,9 +444,13 @@ gems["Chance to Flee"] = { [30] = { 54, }, }, } -gems["Cluster Traps"] = { - trap = true, - dexterity = true, +skills["SupportClusterTrap"] = { + name = "Cluster Traps", + gemTags = { + trap = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 37, }, @@ -464,9 +501,13 @@ gems["Cluster Traps"] = { [30] = { -26, }, }, } -gems["Cold Penetration"] = { - cold = true, - dexterity = true, +skills["SupportColdPenetration"] = { + name = "Cold Penetration", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -514,8 +555,12 @@ gems["Cold Penetration"] = { [30] = { 47, }, }, } -gems["Culling Strike"] = { - dexterity = true, +skills["SupportCullingStrike"] = { + name = "Culling Strike", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -567,9 +612,13 @@ gems["Culling Strike"] = { [30] = { 58, }, }, } -gems["Enhance"] = { - low_max_level = true, - dexterity = true, +skills["SupportAdditionalQuality"] = { + name = "Enhance", + gemTags = { + low_max_level = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { }, @@ -597,9 +646,13 @@ gems["Enhance"] = { [10] = { 72, }, }, } -gems["Faster Attacks"] = { - attack = true, - dexterity = true, +skills["SupportFasterAttack"] = { + name = "Faster Attacks", + gemTags = { + attack = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 56, }, @@ -647,10 +700,14 @@ gems["Faster Attacks"] = { [30] = { 54, }, }, } -gems["Faster Projectiles"] = { - dexterity = true, +skills["SupportFasterProjectiles"] = { + name = "Faster Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 14, 54, 56, }, addSkillTypes = { }, @@ -699,10 +756,14 @@ gems["Faster Projectiles"] = { [30] = { 79, 34, }, }, } -gems["Fork"] = { - dexterity = true, +skills["SupportFork"] = { + name = "Fork", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -750,10 +811,14 @@ gems["Fork"] = { [30] = { -1, }, }, } -gems["Greater Multiple Projectiles"] = { - dexterity = true, +skills["SupportGreaterMultipleProjectiles"] = { + name = "Greater Multiple Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -803,9 +868,13 @@ gems["Greater Multiple Projectiles"] = { [30] = { -21, }, }, } -gems["Hypothermia"] = { - cold = true, - dexterity = true, +skills["SupportDamageAgainstChilled"] = { + name = "Hypothermia", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -813,13 +882,13 @@ gems["Hypothermia"] = { excludeSkillTypes = { }, baseMods = { mod("ManaCost", "MORE", 20), - mod("EnemyFreezeChance", "BASE", 10, ModFlag.Hit, 0, { type = "Condition", var = "EnemyChilled" }), --"additional_chance_to_freeze_chilled_enemies_%" = 10 + mod("EnemyFreezeChance", "BASE", 10, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Chilled" }), --"additional_chance_to_freeze_chilled_enemies_%" = 10 }, qualityMods = { mod("EnemyChillDuration", "INC", 1.5), --"chill_duration_+%" = 1.5 }, levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "EnemyChilled" }), --"support_hypothermia_damage_+%_vs_chilled_enemies_final" + [1] = mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Chilled" }), --"support_hypothermia_damage_+%_vs_chilled_enemies_final" }, levels = { [1] = { 20, }, @@ -854,9 +923,13 @@ gems["Hypothermia"] = { [30] = { 49, }, }, } -gems["Ice Bite"] = { - cold = true, - dexterity = true, +skills["SupportFrenzyChargeOnSlayingFrozenEnemy"] = { + name = "Ice Bite", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -867,7 +940,7 @@ gems["Ice Bite"] = { mod("EnemyFreezeChance", "BASE", 15), --"base_chance_to_freeze_%" = 15 }, qualityMods = { - mod("Damage", "INC", 1, ModFlag.Hit, 0, { type = "Condition", var = "EnemyFrozen" }), --"damage_+%_vs_frozen_enemies" = 1 + mod("Damage", "INC", 1, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Frozen" }), --"damage_+%_vs_frozen_enemies" = 1 }, levelMods = { --[1] = "chance_to_gain_frenzy_charge_on_killing_frozen_enemy_%" @@ -905,10 +978,14 @@ gems["Ice Bite"] = { [30] = { 79, }, }, } -gems["Lesser Multiple Projectiles"] = { - dexterity = true, +skills["SupportLesserMultipleProjectiles"] = { + name = "Lesser Multiple Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -958,8 +1035,12 @@ gems["Lesser Multiple Projectiles"] = { [30] = { -11, }, }, } -gems["Mana Leech"] = { - dexterity = true, +skills["SupportManaLeech"] = { + name = "Mana Leech", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -1007,10 +1088,14 @@ gems["Mana Leech"] = { [30] = { 58, }, }, } -gems["Multiple Traps"] = { - dexterity = true, +skills["SupportMultiTrap"] = { + name = "Multiple Traps", + gemTags = { + dexterity = true, + support = true, + trap = true, + }, support = true, - trap = true, color = 2, requireSkillTypes = { 37, }, addSkillTypes = { }, @@ -1059,9 +1144,13 @@ gems["Multiple Traps"] = { [30] = { -11, }, }, } -gems["Physical Projectile Attack Damage"] = { - projectile = true, - dexterity = true, +skills["SupportPhysicalProjectileAttackDamage"] = { + name = "Physical Projectile Attack Damage", + gemTags = { + projectile = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 48, 56, }, @@ -1110,10 +1199,14 @@ gems["Physical Projectile Attack Damage"] = { [30] = { 59, }, }, } -gems["Pierce"] = { - dexterity = true, +skills["SupportPierce"] = { + name = "Pierce", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -1161,10 +1254,14 @@ gems["Pierce"] = { [30] = { 24, }, }, } -gems["Point Blank"] = { - projectile = true, - attack = true, - dexterity = true, +skills["SupportPointBlank"] = { + name = "Point Blank", + gemTags = { + projectile = true, + attack = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 48, 56, }, @@ -1213,9 +1310,13 @@ gems["Point Blank"] = { [30] = { 58, }, }, } -gems["Poison"] = { - chaos = true, - dexterity = true, +skills["SupportPoison"] = { + name = "Poison", + gemTags = { + chaos = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -1264,10 +1365,14 @@ gems["Poison"] = { [30] = { 58, }, }, } -gems["Rapid Decay"] = { - dexterity = true, +skills["SupportRapidDecay"] = { + name = "Rapid Decay", + gemTags = { + dexterity = true, + support = true, + duration = true, + }, support = true, - duration = true, color = 2, requireSkillTypes = { 12, 55, }, addSkillTypes = { }, @@ -1315,10 +1420,14 @@ gems["Rapid Decay"] = { [30] = { 49, }, }, } -gems["Slower Projectiles"] = { - dexterity = true, +skills["SupportSlowerProjectiles"] = { + name = "Slower Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 14, 54, 56, }, addSkillTypes = { }, @@ -1366,11 +1475,15 @@ gems["Slower Projectiles"] = { [30] = { -59, 34, }, }, } -gems["Trap"] = { - dexterity = true, +skills["SupportTrap"] = { + name = "Trap", + gemTags = { + dexterity = true, + support = true, + trap = true, + duration = true, + }, support = true, - trap = true, - duration = true, addFlags = { trap = true, duration = true, @@ -1381,6 +1494,7 @@ gems["Trap"] = { excludeSkillTypes = { 61, }, baseMods = { mod("ManaCost", "MORE", 40), + skill("cooldown", 4), --"is_trap" = 1 --"base_trap_duration" = 16000 --"trap_override_pvp_scaling_time_ms" = 900 @@ -1428,9 +1542,13 @@ gems["Trap"] = { [30] = { 49, }, }, } -gems["Trap Cooldown"] = { - trap = true, - dexterity = true, +skills["SupportTrapCooldown"] = { + name = "Trap Cooldown", + gemTags = { + trap = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 37, }, @@ -1478,11 +1596,15 @@ gems["Trap Cooldown"] = { [30] = { 59, }, }, } -gems["Trap and Mine Damage"] = { - dexterity = true, +skills["SupportTrapAndMineDamage"] = { + name = "Trap and Mine Damage", + gemTags = { + dexterity = true, + support = true, + trap = true, + mine = true, + }, support = true, - trap = true, - mine = true, color = 2, requireSkillTypes = { 37, 41, }, addSkillTypes = { }, @@ -1531,9 +1653,13 @@ gems["Trap and Mine Damage"] = { [30] = { 49, }, }, } -gems["Void Manipulation"] = { - chaos = true, - dexterity = true, +skills["SupportVoidManipulation"] = { + name = "Void Manipulation", + gemTags = { + chaos = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, 40, }, @@ -1581,4 +1707,4 @@ gems["Void Manipulation"] = { [29] = { 48, }, [30] = { 49, }, }, -} +} \ No newline at end of file diff --git a/Data/Gems/sup_int.lua b/Data/Skills/sup_int.lua similarity index 76% rename from Data/Gems/sup_int.lua rename to Data/Skills/sup_int.lua index 7ea0023b..98eb5f88 100644 --- a/Data/Gems/sup_int.lua +++ b/Data/Skills/sup_int.lua @@ -1,13 +1,17 @@ -- Path of Building -- -- Intelligence support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Chaos Damage"] = { - chaos = true, - intelligence = true, +skills["SupportAddedChaosDamage"] = { + name = "Added Chaos Damage", + gemTags = { + chaos = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -56,9 +60,13 @@ gems["Added Chaos Damage"] = { [30] = { 485, 728, }, }, } -gems["Added Lightning Damage"] = { - lightning = true, - intelligence = true, +skills["SupportAddedLightningDamage"] = { + name = "Added Lightning Damage", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 1, 10, }, @@ -107,17 +115,22 @@ gems["Added Lightning Damage"] = { [30] = { 47, 897, }, }, } -gems["Blasphemy"] = { - intelligence = true, +skills["SupportBlasphemy"] = { + name = "Blasphemy", + gemTags = { + intelligence = true, + support = true, + curse = true, + aura = true, + }, support = true, - curse = true, - aura = true, color = 3, requireSkillTypes = { 32, }, addSkillTypes = { 15, 16, 31, 44, }, excludeSkillTypes = { }, baseMods = { skill("manaCostOverride", 35), + skill("cooldown", 0.5), --"curse_apply_as_aura" = ? }, qualityMods = { @@ -159,16 +172,21 @@ gems["Blasphemy"] = { [30] = { 116, }, }, } -gems["Cast when Stunned"] = { - intelligence = true, +skills["SupportCastOnStunned"] = { + name = "Cast when Stunned", + gemTags = { + intelligence = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 3, requireSkillTypes = { 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { + skill("cooldown", 0.25), skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? }, @@ -211,11 +229,15 @@ gems["Cast when Stunned"] = { [30] = { 79, }, }, } -gems["Cast while Channelling"] = { - intelligence = true, +skills["SupportCastWhileChannelling"] = { + name = "Cast while Channelling", + gemTags = { + intelligence = true, + support = true, + channelling = true, + spell = true, + }, support = true, - channelling = true, - spell = true, color = 3, requireSkillTypes = { 58, 36, }, addSkillTypes = { }, @@ -264,9 +286,13 @@ gems["Cast while Channelling"] = { [30] = { 0.3, 14, }, }, } -gems["Chance to Ignite"] = { - fire = true, - intelligence = true, +skills["SupportChanceToIgnite"] = { + name = "Chance to Ignite", + gemTags = { + fire = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -314,10 +340,14 @@ gems["Chance to Ignite"] = { [30] = { 59, }, }, } -gems["Concentrated Effect"] = { - intelligence = true, +skills["SupportConcentratedEffect"] = { + name = "Concentrated Effect", + gemTags = { + intelligence = true, + support = true, + area = true, + }, support = true, - area = true, color = 3, requireSkillTypes = { 11, 21, 53, }, addSkillTypes = { }, @@ -365,9 +395,13 @@ gems["Concentrated Effect"] = { [30] = { 64, }, }, } -gems["Controlled Destruction"] = { - spell = true, - intelligence = true, +skills["SupportControlledDestruction"] = { + name = "Controlled Destruction", + gemTags = { + spell = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, 59, }, @@ -416,10 +450,14 @@ gems["Controlled Destruction"] = { [30] = { 54, }, }, } -gems["Curse On Hit"] = { - curse = true, - trigger = true, - intelligence = true, +skills["SupportCurseOnHit"] = { + name = "Curse On Hit", + gemTags = { + curse = true, + trigger = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 1, 10, 32, }, @@ -468,8 +506,12 @@ gems["Curse On Hit"] = { [30] = { 8, }, }, } -gems["Elemental Focus"] = { - intelligence = true, +skills["SupportElementalFocus"] = { + name = "Elemental Focus", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, 29, }, @@ -522,13 +564,17 @@ gems["Elemental Focus"] = { [30] = { 59, }, }, } -gems["Elemental Proliferation"] = { - cold = true, - fire = true, - lightning = true, - intelligence = true, +skills["SupportElementalProliferation"] = { + name = "Elemental Proliferation", + gemTags = { + cold = true, + fire = true, + lightning = true, + intelligence = true, + support = true, + area = true, + }, support = true, - area = true, color = 3, requireSkillTypes = { 10, 1, 20, }, addSkillTypes = { 11, }, @@ -580,9 +626,13 @@ gems["Elemental Proliferation"] = { [30] = { -16, }, }, } -gems["Enlighten"] = { - low_max_level = true, - intelligence = true, +skills["SupportAdditionalXP"] = { + name = "Enlighten", + gemTags = { + low_max_level = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { }, @@ -609,10 +659,14 @@ gems["Enlighten"] = { [10] = { -36, }, }, } -gems["Faster Casting"] = { - intelligence = true, +skills["SupportFasterCast"] = { + name = "Faster Casting", + gemTags = { + intelligence = true, + support = true, + spell = true, + }, support = true, - spell = true, color = 3, requireSkillTypes = { 2, 39, }, addSkillTypes = { }, @@ -659,10 +713,14 @@ gems["Faster Casting"] = { [30] = { 49, }, }, } -gems["Increased Area of Effect"] = { - intelligence = true, +skills["SupportIncreasedAreaOfEffect"] = { + name = "Increased Area of Effect", + gemTags = { + intelligence = true, + support = true, + area = true, + }, support = true, - area = true, color = 3, requireSkillTypes = { 11, 21, 53, }, addSkillTypes = { }, @@ -709,8 +767,12 @@ gems["Increased Area of Effect"] = { [30] = { 59, }, }, } -gems["Increased Critical Damage"] = { - intelligence = true, +skills["SupportIncreasedCriticalDamage"] = { + name = "Increased Critical Damage", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -758,8 +820,12 @@ gems["Increased Critical Damage"] = { [30] = { 118, }, }, } -gems["Increased Critical Strikes"] = { - intelligence = true, +skills["SupportIncreasedCriticalStrikes"] = { + name = "Increased Critical Strikes", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -808,9 +874,13 @@ gems["Increased Critical Strikes"] = { [30] = { 108, 2.4, }, }, } -gems["Innervate"] = { - lightning = true, - intelligence = true, +skills["SupportOnslaughtOnSlayingShockedEnemy"] = { + name = "Innervate", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -859,8 +929,12 @@ gems["Innervate"] = { [30] = { 7900, }, }, } -gems["Item Rarity"] = { - intelligence = true, +skills["SupportItemRarity"] = { + name = "Item Rarity", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, 40, }, @@ -907,9 +981,13 @@ gems["Item Rarity"] = { [30] = { 69, }, }, } -gems["Lightning Penetration"] = { - lightning = true, - intelligence = true, +skills["SupportLightningPenetration"] = { + name = "Lightning Penetration", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -957,10 +1035,14 @@ gems["Lightning Penetration"] = { [30] = { 47, }, }, } -gems["Minefield"] = { - intelligence = true, +skills["SupportMinefield"] = { + name = "Minefield", + gemTags = { + intelligence = true, + support = true, + mine = true, + }, support = true, - mine = true, color = 3, requireSkillTypes = { 41, }, addSkillTypes = { }, @@ -1009,29 +1091,179 @@ gems["Minefield"] = { [30] = { -11, }, }, } -gems["Minion Damage"] = { - intelligence = true, +skills["SupportMinionDamage"] = { + name = "Minion Damage", + gemTags = { + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, - unsupported = true, + color = 3, + requireSkillTypes = { 9, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + baseMods = { + mod("ManaCost", "MORE", 30), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 0.75) }), --"minion_damage_+%" = 0.75 + }, + levelMods = { + [1] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", nil) }), --"support_minion_damage_+%_final" + }, + levels = { + [1] = { 30, }, + [2] = { 31, }, + [3] = { 32, }, + [4] = { 33, }, + [5] = { 34, }, + [6] = { 35, }, + [7] = { 36, }, + [8] = { 37, }, + [9] = { 38, }, + [10] = { 39, }, + [11] = { 40, }, + [12] = { 41, }, + [13] = { 42, }, + [14] = { 43, }, + [15] = { 44, }, + [16] = { 45, }, + [17] = { 46, }, + [18] = { 47, }, + [19] = { 48, }, + [20] = { 49, }, + [21] = { 50, }, + [22] = { 51, }, + [23] = { 52, }, + [24] = { 53, }, + [25] = { 54, }, + [26] = { 55, }, + [27] = { 56, }, + [28] = { 57, }, + [29] = { 58, }, + [30] = { 59, }, + }, } -gems["Minion Life"] = { - intelligence = true, +skills["SupportMinionLife"] = { + name = "Minion Life", + gemTags = { + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, - unsupported = true, + color = 3, + requireSkillTypes = { 9, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + baseMods = { + mod("ManaCost", "MORE", 40), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 0.75) }), --"minion_maximum_life_+%" = 0.75 + }, + levelMods = { + [1] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + }, + levels = { + [1] = { 30, }, + [2] = { 31, }, + [3] = { 32, }, + [4] = { 33, }, + [5] = { 34, }, + [6] = { 35, }, + [7] = { 36, }, + [8] = { 37, }, + [9] = { 38, }, + [10] = { 39, }, + [11] = { 40, }, + [12] = { 41, }, + [13] = { 42, }, + [14] = { 43, }, + [15] = { 44, }, + [16] = { 45, }, + [17] = { 46, }, + [18] = { 47, }, + [19] = { 48, }, + [20] = { 49, }, + [21] = { 50, }, + [22] = { 51, }, + [23] = { 52, }, + [24] = { 53, }, + [25] = { 54, }, + [26] = { 55, }, + [27] = { 56, }, + [28] = { 57, }, + [29] = { 58, }, + [30] = { 59, }, + }, } -gems["Minion Speed"] = { - movement = true, - intelligence = true, +skills["SupportMinionSpeed"] = { + name = "Minion Speed", + gemTags = { + movement = true, + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, - unsupported = true, + color = 3, + requireSkillTypes = { 9, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + baseMods = { + mod("ManaCost", "MORE", 40), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 0.5) }), --"minion_movement_speed_+%" = 0.5 + }, + levelMods = { + [1] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", nil) }), --"minion_movement_speed_+%" + [2] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Speed", "INC", nil, ModFlag.Attack) }), --"minion_attack_speed_+%" + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Speed", "INC", nil, ModFlag.Cast) }), --"minion_cast_speed_+%" + }, + levels = { + [1] = { 25, 10, 10, }, + [2] = { 26, 10, 10, }, + [3] = { 27, 11, 11, }, + [4] = { 28, 11, 11, }, + [5] = { 29, 12, 12, }, + [6] = { 30, 12, 12, }, + [7] = { 31, 13, 13, }, + [8] = { 32, 13, 13, }, + [9] = { 33, 14, 14, }, + [10] = { 34, 14, 14, }, + [11] = { 35, 15, 15, }, + [12] = { 36, 15, 15, }, + [13] = { 37, 16, 16, }, + [14] = { 38, 16, 16, }, + [15] = { 39, 17, 17, }, + [16] = { 40, 17, 17, }, + [17] = { 41, 18, 18, }, + [18] = { 42, 18, 18, }, + [19] = { 43, 19, 19, }, + [20] = { 44, 19, 19, }, + [21] = { 45, 20, 20, }, + [22] = { 46, 20, 20, }, + [23] = { 47, 21, 21, }, + [24] = { 48, 21, 21, }, + [25] = { 49, 22, 22, }, + [26] = { 50, 22, 22, }, + [27] = { 51, 23, 23, }, + [28] = { 52, 23, 23, }, + [29] = { 53, 24, 24, }, + [30] = { 54, 24, 24, }, + }, } -gems["Minion and Totem Elemental Resistance"] = { - intelligence = true, +skills["SupportSummonElementalResistances"] = { + name = "Minion and Totem Elemental Resistance", + gemTags = { + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, color = 3, requireSkillTypes = { 9, 30, }, addSkillTypes = { }, @@ -1048,7 +1280,7 @@ gems["Minion and Totem Elemental Resistance"] = { --[1] = "summon_fire_resistance_+" --[2] = "summon_cold_resistance_+" --[3] = "summon_lightning_resistance_+" - [4] = mod("ElementalDamage", "MORE", nil, 0, bit.bor(KeywordFlag.Minion, KeywordFlag.Totem)), --"support_minion_totem_resistance_elemental_damage_+%_final" + [4] = { mod("ElementalDamage", "MORE", nil, 0, KeywordFlag.Totem), mod("Misc", "LIST", { type = "MinionModifier", mod = mod("ElementalDamage", "MORE", nil) }) }, --"support_minion_totem_resistance_elemental_damage_+%_final" }, levels = { [1] = { 25, 25, 25, 10, }, @@ -1083,9 +1315,13 @@ gems["Minion and Totem Elemental Resistance"] = { [30] = { 54, 54, 54, 24, }, }, } -gems["Physical to Lightning"] = { - lightning = true, - intelligence = true, +skills["SupportPhysicalToLightning"] = { + name = "Physical to Lightning", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -1135,8 +1371,12 @@ gems["Physical to Lightning"] = { [30] = { 39, }, }, } -gems["Power Charge On Critical"] = { - intelligence = true, +skills["SupportPowerChargeOnCrit"] = { + name = "Power Charge On Critical", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -1184,11 +1424,15 @@ gems["Power Charge On Critical"] = { [30] = { 64, }, }, } -gems["Remote Mine"] = { - intelligence = true, +skills["SupportRemoteMine"] = { + name = "Remote Mine", + gemTags = { + intelligence = true, + support = true, + mine = true, + duration = true, + }, support = true, - mine = true, - duration = true, addFlags = { mine = true, duration = true, @@ -1245,9 +1489,13 @@ gems["Remote Mine"] = { [30] = { 59, }, }, } -gems["Spell Echo"] = { - spell = true, - intelligence = true, +skills["SupportMulticast"] = { + name = "Spell Echo", + gemTags = { + spell = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 26, }, @@ -1296,4 +1544,4 @@ gems["Spell Echo"] = { [29] = { 79, }, [30] = { 80, }, }, -} +} \ No newline at end of file diff --git a/Export/Gems/sup_str.lua b/Data/Skills/sup_str.lua similarity index 87% rename from Export/Gems/sup_str.lua rename to Data/Skills/sup_str.lua index b0798305..6124d95b 100644 --- a/Export/Gems/sup_str.lua +++ b/Data/Skills/sup_str.lua @@ -1,13 +1,17 @@ -- Path of Building -- -- Strength support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Fire Damage"] = { - fire = true, - strength = true, +skills["SupportAddedFireDamage"] = { + name = "Added Fire Damage", + gemTags = { + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -55,8 +59,12 @@ gems["Added Fire Damage"] = { [30] = { 54, }, }, } -gems["Blood Magic"] = { - strength = true, +skills["SupportBloodMagic"] = { + name = "Blood Magic", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { }, @@ -104,11 +112,15 @@ gems["Blood Magic"] = { [30] = { 66, }, }, } -gems["Bloodlust"] = { - attack = true, - strength = true, +skills["SupportBloodlust"] = { + name = "Bloodlust", + gemTags = { + attack = true, + strength = true, + support = true, + melee = true, + }, support = true, - melee = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -118,10 +130,10 @@ gems["Bloodlust"] = { flag("CannotBleed"), --"cannot_cause_bleeding" = ? }, qualityMods = { - mod("PhysicalDamage", "INC", 0.5, ModFlag.Melee, 0, { type = "Condition", var = "EnemyBleeding" }), --"melee_damage_vs_bleeding_enemies_+%" = 0.5 + mod("PhysicalDamage", "INC", 0.5, ModFlag.Melee, 0, { type = "EnemyCondition", var = "Bleeding" }), --"melee_damage_vs_bleeding_enemies_+%" = 0.5 }, levelMods = { - [1] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "Condition", var = "EnemyBleeding" }), --"support_bloodlust_melee_physical_damage_+%_final_vs_bleeding_enemies" + [1] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "EnemyCondition", var = "Bleeding" }), --"support_bloodlust_melee_physical_damage_+%_final_vs_bleeding_enemies" }, levels = { [1] = { 40, }, @@ -156,19 +168,24 @@ gems["Bloodlust"] = { [30] = { 69, }, }, } -gems["Cast on Melee Kill"] = { - strength = true, +skills["SupportCastOnMeleeKill"] = { + name = "Cast on Melee Kill", + gemTags = { + strength = true, + support = true, + melee = true, + attack = true, + spell = true, + trigger = true, + }, support = true, - melee = true, - attack = true, - spell = true, - trigger = true, color = 1, requireSkillTypes = { 24, 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { mod("ManaCost", "MORE", 40), + skill("cooldown", 0.25), --"cast_linked_spells_on_melee_kill_%" = 100 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? }, @@ -211,16 +228,21 @@ gems["Cast on Melee Kill"] = { [30] = { 49, }, }, } -gems["Cast when Damage Taken"] = { - strength = true, +skills["SupportCastOnDamageTaken"] = { + name = "Cast when Damage Taken", + gemTags = { + strength = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 1, requireSkillTypes = { 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { + skill("cooldown", 0.25), --"cast_on_damage_taken_%" = 100 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? @@ -266,10 +288,14 @@ gems["Cast when Damage Taken"] = { [30] = { 7990, 46, 90, }, }, } -gems["Cold to Fire"] = { - cold = true, - fire = true, - strength = true, +skills["SupportColdToFire"] = { + name = "Cold to Fire", + gemTags = { + cold = true, + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -319,9 +345,13 @@ gems["Cold to Fire"] = { [30] = { 39, }, }, } -gems["Empower"] = { - low_max_level = true, - strength = true, +skills["SupportAdditionalLevel"] = { + name = "Empower", + gemTags = { + low_max_level = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { }, @@ -349,11 +379,15 @@ gems["Empower"] = { [10] = { 9, }, }, } -gems["Endurance Charge on Melee Stun"] = { - strength = true, +skills["EnduranceChargeOnMeleeStun"] = { + name = "Endurance Charge on Melee Stun", + gemTags = { + strength = true, + support = true, + melee = true, + attack = true, + }, support = true, - melee = true, - attack = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -401,9 +435,13 @@ gems["Endurance Charge on Melee Stun"] = { [30] = { -29, }, }, } -gems["Fire Penetration"] = { - fire = true, - strength = true, +skills["SupportFirePenetration"] = { + name = "Fire Penetration", + gemTags = { + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -451,11 +489,15 @@ gems["Fire Penetration"] = { [30] = { 47, }, }, } -gems["Fortify"] = { - attack = true, - strength = true, +skills["SupportFortify"] = { + name = "Fortify", + gemTags = { + attack = true, + strength = true, + support = true, + melee = true, + }, support = true, - melee = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -504,10 +546,14 @@ gems["Fortify"] = { [30] = { 54, }, }, } -gems["Generosity"] = { - strength = true, +skills["SupportGenerosity"] = { + name = "Generosity", + gemTags = { + strength = true, + support = true, + aura = true, + }, support = true, - aura = true, color = 1, requireSkillTypes = { 44, }, addSkillTypes = { }, @@ -554,9 +600,13 @@ gems["Generosity"] = { [30] = { 49, }, }, } -gems["Increased Burning Damage"] = { - fire = true, - strength = true, +skills["SupportIncreasedBurningDamage"] = { + name = "Increased Burning Damage", + gemTags = { + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, 29, }, @@ -604,10 +654,14 @@ gems["Increased Burning Damage"] = { [30] = { 69, }, }, } -gems["Increased Duration"] = { - strength = true, +skills["SupportIncreasedDuration"] = { + name = "Increased Duration", + gemTags = { + strength = true, + support = true, + duration = true, + }, support = true, - duration = true, color = 1, requireSkillTypes = { 12, 55, }, addSkillTypes = { }, @@ -654,9 +708,13 @@ gems["Increased Duration"] = { [30] = { 74, }, }, } -gems["Iron Grip"] = { - projectile = true, - strength = true, +skills["SupportIronGrip"] = { + name = "Iron Grip", + gemTags = { + projectile = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 48, 56, }, @@ -704,9 +762,13 @@ gems["Iron Grip"] = { [30] = { 58, }, }, } -gems["Iron Will"] = { - spell = true, - strength = true, +skills["SupportIronWill"] = { + name = "Iron Will", + gemTags = { + spell = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 52, 59, }, @@ -754,8 +816,12 @@ gems["Iron Will"] = { [30] = { 58, }, }, } -gems["Item Quantity"] = { - strength = true, +skills["SupportItemQuantity"] = { + name = "Item Quantity", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, 40, }, @@ -802,8 +868,12 @@ gems["Item Quantity"] = { [30] = { 46, }, }, } -gems["Knockback"] = { - strength = true, +skills["SupportKnockback"] = { + name = "Knockback", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -851,10 +921,14 @@ gems["Knockback"] = { [30] = { 54, }, }, } -gems["Less Duration"] = { - strength = true, +skills["SupportReducedDuration"] = { + name = "Less Duration", + gemTags = { + strength = true, + support = true, + duration = true, + }, support = true, - duration = true, color = 1, requireSkillTypes = { 12, 55, }, addSkillTypes = { }, @@ -902,9 +976,13 @@ gems["Less Duration"] = { [30] = { -54, 24, }, }, } -gems["Life Gain on Hit"] = { - attack = true, - strength = true, +skills["SupportLifeGainOnHit"] = { + name = "Life Gain on Hit", + gemTags = { + attack = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 1, 56, }, @@ -952,8 +1030,12 @@ gems["Life Gain on Hit"] = { [30] = { 64, }, }, } -gems["Life Leech"] = { - strength = true, +skills["SupportLifeLeech"] = { + name = "Life Leech", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -1002,11 +1084,15 @@ gems["Life Leech"] = { [30] = { 58, }, }, } -gems["Melee Damage on Full Life"] = { - melee = true, - strength = true, +skills["SupportMeleeDamageOnFullLife"] = { + name = "Melee Damage on Full Life", + gemTags = { + melee = true, + strength = true, + support = true, + attack = true, + }, support = true, - attack = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -1053,11 +1139,15 @@ gems["Melee Damage on Full Life"] = { [30] = { 59, }, }, } -gems["Melee Physical Damage"] = { - melee = true, - strength = true, +skills["SupportMeleePhysicalDamage"] = { + name = "Melee Physical Damage", + gemTags = { + melee = true, + strength = true, + support = true, + attack = true, + }, support = true, - attack = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -1104,12 +1194,16 @@ gems["Melee Physical Damage"] = { [30] = { 59, }, }, } -gems["Melee Splash"] = { - strength = true, +skills["SupportMeleeSplash"] = { + name = "Melee Splash", + gemTags = { + strength = true, + support = true, + melee = true, + attack = true, + area = true, + }, support = true, - melee = true, - attack = true, - area = true, color = 1, requireSkillTypes = { 25, }, addSkillTypes = { 11, }, @@ -1159,10 +1253,14 @@ gems["Melee Splash"] = { [30] = { -21, 87, }, }, } -gems["Multistrike"] = { - attack = true, - melee = true, - strength = true, +skills["SupportMultistrike"] = { + name = "Multistrike", + gemTags = { + attack = true, + melee = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 28, }, @@ -1212,14 +1310,18 @@ gems["Multistrike"] = { [30] = { 104, }, }, } -gems["Ranged Attack Totem"] = { - bow = true, - projectile = true, - strength = true, +skills["SupportRangedAttackTotem"] = { + name = "Ranged Attack Totem", + gemTags = { + bow = true, + projectile = true, + strength = true, + support = true, + totem = true, + attack = true, + duration = true, + }, support = true, - totem = true, - attack = true, - duration = true, addFlags = { totem = true, }, @@ -1276,8 +1378,12 @@ gems["Ranged Attack Totem"] = { [30] = { 90, -21, }, }, } -gems["Reduced Mana"] = { - strength = true, +skills["SupportReducedMana"] = { + name = "Reduced Mana", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { }, @@ -1324,11 +1430,15 @@ gems["Reduced Mana"] = { [30] = { -39, }, }, } -gems["Spell Totem"] = { - strength = true, +skills["SupportSpellTotem"] = { + name = "Spell Totem", + gemTags = { + strength = true, + support = true, + totem = true, + duration = true, + }, support = true, - totem = true, - duration = true, addFlags = { totem = true, }, @@ -1384,8 +1494,12 @@ gems["Spell Totem"] = { [30] = { 90, -21, }, }, } -gems["Stun"] = { - strength = true, +skills["SupportStun"] = { + name = "Stun", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -1432,9 +1546,13 @@ gems["Stun"] = { [30] = { -59, }, }, } -gems["Weapon Elemental Damage"] = { - attack = true, - strength = true, +skills["SupportWeaponElementalDamage"] = { + name = "Weapon Elemental Damage", + gemTags = { + attack = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 1, 56, }, @@ -1481,4 +1599,4 @@ gems["Weapon Elemental Damage"] = { [29] = { 68, }, [30] = { 69, }, }, -} +} \ No newline at end of file diff --git a/Data/Spectres.lua b/Data/Spectres.lua new file mode 100644 index 00000000..e6ef4e7a --- /dev/null +++ b/Data/Spectres.lua @@ -0,0 +1,1340 @@ +-- Path of Building +-- +-- Spectre Data +-- Monster data (c) Grinding Gear Games +-- +local minions, mod = ... + +-- Blackguard +minions["Metadata/Monsters/Axis/AxisCaster"] = { + name = "Blackguard Mage", + life = 0.9, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.305, + weaponType1 = "Wand", + weaponType2 = "Shield", + skillList = { + "Melee", + "SkeletonSpark", + "MonsterLightningThorns", + "AxisClaimSoldierMinions", + }, + modList = { + -- MonsterCastsSparkText + -- MonsterCastsLightningThornsText + }, +} +minions["Metadata/Monsters/Axis/AxisCasterArc"] = { + name = "Blackguard Arcmage", + life = 0.9, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.305, + weaponType1 = "Wand", + weaponType2 = "Shield", + skillList = { + "Melee", + "MonsterLightningThorns", + "MonsterArc", + "AxisClaimSoldierMinions", + }, + modList = { + -- MonsterCastsArcText + -- MonsterCastsLightningThornsText + }, +} +minions["Metadata/Monsters/Axis/AxisExperimenter"] = { + name = "Mortality Experimenter", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 75, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Wand", + skillList = { + "Melee", + "SkeletonTemporalChains", + "ExperimenterDetonateDead", + }, + modList = { + -- MonsterCastsTemporalChainsText + -- MonsterDetonatesCorpsesText + }, +} +minions["Metadata/Monsters/Axis/AxisExperimenter2"] = { + name = "Flesh Sculptor", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 75, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Wand", + skillList = { + "ExperimenterDetonateDead", + "Melee", + "MonsterEnfeeble", + "MonsterProjectileWeakness", + }, + modList = { + -- MonsterDetonatesCorpsesText + -- MonsterCastsEnfeebleCurseText + -- MonsterCastsProjectileWeaknessCurseText + }, +} +minions["Metadata/Monsters/Axis/AxisExperimenterRaiseZombie"] = { + name = "Reanimator", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 75, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Wand", + skillList = { + "Melee", + "MonsterEnfeeble", + "NecromancerRaiseZombie", + }, + modList = { + -- MonsterCastsEnfeebleCurseText + -- MonsterRaisesZombiesText + }, +} +-- Bandit +minions["Metadata/Monsters/Bandits/BanditBowPoisonArrow"] = { + name = "Alira's Deadeye", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterCausticArrow", + }, + modList = { + -- MonsterFiresCausticArrowsText + }, +} +minions["Metadata/Monsters/Bandits/BanditMeleeWarlordsMarkMaul"] = { + name = "Oak's Devoted", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.35, + weaponType1 = "Two Handed Mace", + skillList = { + "Melee", + "MonsterWarlordsMark", + }, + modList = { + -- MonsterCastsWarlordsMarkCurseText + }, +} +-- Beast +minions["Metadata/Monsters/Beasts/BeastCaveDegenAura"] = { + name = "Shaggy Monstrosity", + life = 2.1, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "Melee", + "ChaosDegenAura", + }, + modList = { + mod("Damage", "MORE", -33), -- MonsterSpeedAndDamageFixupComplete + mod("Speed", "MORE", 33), -- MonsterSpeedAndDamageFixupComplete + }, +} +minions["Metadata/Monsters/Beasts/BeastCleaveEnduringCry"] = { + name = "Hairy Bonecruncher", + life = 2.1, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "Melee", + "MonsterEnduringCry", + "BeastCleave", + }, + modList = { + mod("Damage", "MORE", -33), -- MonsterSpeedAndDamageFixupComplete + mod("Speed", "MORE", 33), -- MonsterSpeedAndDamageFixupComplete + -- MonsterUsesEnduringCryText + -- MonsterCleavesText + }, +} +-- Blood apes +minions["Metadata/Monsters/BloodChieftain/MonkeyChiefBloodEnrage"] = { + name = "Carnage Chieftain", + life = 1.5, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.395, + weaponType1 = "One Handed Mace", + skillList = { + "Melee", + "BloodChieftainSummonMonkeys", + "MassFrenzy", + }, + modList = { + mod("Damage", "MORE", -22), -- MonsterSpeedAndDamageFixupLarge + mod("Speed", "MORE", 22), -- MonsterSpeedAndDamageFixupLarge + -- MonsterSummonsMonkeysText + -- MonsterCastsMassFrenzyText + }, +} +-- Goatmen +minions["Metadata/Monsters/Goatman/GoatmanLeapSlam"] = { + name = "Goatman", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + "GoatmanWait", + "GoatmanWait2", + }, + modList = { + -- MonsterLeapsOntoEnemiesText + }, +} +minions["Metadata/Monsters/Goatman/GoatmanLightningLeapSlamMaps"] = { + name = "Bearded Devil", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.8, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + "GoatmanWait", + "GoatmanWait2", + }, + modList = { + mod("PhysicalDamageGainAsLightning", "BASE", 100), -- MonsterPhysicalAddedAsLightningSkeletonMaps + -- MonsterLeapsOntoEnemiesText + }, +} +minions["Metadata/Monsters/Goatman/GoatmanShamanFireball"] = { + name = "Goatman Shaman", + life = 1, + energyShield = 0.2, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + weaponType1 = "Staff", + skillList = { + "MonsterFireball", + "GoatmanMoltenShell", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "INC", -50, ModFlag.Cast), -- MonsterGoatmanShamanCastSpeed + -- MonsterCastsFireballText + -- MonsterCastsMoltenShellText + }, +} +minions["Metadata/Monsters/Goatman/GoatmanShamanLightning"] = { + name = "Bearded Shaman", + life = 1, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + weaponType1 = "Staff", + skillList = { + "Melee", + "MonsterShockNova", + "MonsterSpark", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "INC", -50, ModFlag.Cast), -- MonsterGoatmanShamanCastSpeed + -- MonsterCastsShockNovaText + -- MonsterCastsSparkText + }, +} +-- Miscreation +minions["Metadata/Monsters/DemonFemale/DemonFemale"] = { + name = "Whipping Miscreation", + life = 0.99, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.88, + damageSpread = 0.2, + attackTime = 2.445, + skillList = { + "Melee", + }, + modList = { + -- MonsterChanceToVulnerabilityOnHit2 + }, +} +minions["Metadata/Monsters/DemonModular/DemonFemaleRanged"] = { + name = "Tentacle Miscreation", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.84, + damageSpread = 0.2, + attackTime = 3, + skillList = { + "DemonFemaleRangedProjectile", + }, + modList = { + mod("PhysicalDamageConvertToFire", "BASE", 50), -- MonsterConvertToFireDamage2 + }, +} +minions["Metadata/Monsters/DemonModular/DemonModularFire"] = { + name = "Burned Miscreation", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "MonsterRighteousFire", + "MonsterRighteousFireWhileSpectred", + }, + modList = { + -- MonsterCastsUnholyFireText + }, +} +-- Maw +minions["Metadata/Monsters/Frog/Frog"] = { + name = "Fetid Maw", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + }, + modList = { + -- MonsterLeapsOntoEnemiesText + }, +} +minions["Metadata/Monsters/Frog/Frog2"] = { + name = "Murk Fiend", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + }, + modList = { + -- MonsterLeapsOntoEnemiesText + }, +} +-- Chimeral +minions["Metadata/Monsters/GemMonster/Iguana"] = { + name = "Plumed Chimeral", + life = 1.25, + energyShield = 0.2, + fireResist = 52, + coldResist = 52, + lightningResist = 0, + chaosResist = 0, + damage = 2.12, + damageSpread = 0.2, + attackTime = 1.005, + skillList = { + "IguanaProjectile", + "Melee", + }, + modList = { + -- MonsterSuppressingFire + -- DisplayMonsterSuppressingFire + }, +} +-- Ghost pirate +minions["Metadata/Monsters/GhostPirates/GhostPirateBlackBowMaps"] = { + name = "Spectral Bowman", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.48, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + mod("PhysicalDamageGainAsLightning", "BASE", 100), -- MonsterPhysicalAddedAsLightningSkeletonMaps + -- MonsterCastsPunctureText + }, +} +minions["Metadata/Monsters/GhostPirates/GhostPirateBlackFlickerStrikeMaps"] = { + name = "Cursed Mariner", + life = 1, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.8, + damageSpread = 0.2, + attackTime = 1.65, + weaponType1 = "One Handed Sword", + weaponType2 = "Shield", + skillList = { + "Melee", + "MonsterFlickerStrike", + }, + modList = { + mod("PhysicalDamageGainAsLightning", "BASE", 100), -- MonsterPhysicalAddedAsLightningSkeletonMaps + -- MonsterUsesFlickerStrikeText + }, +} +-- Undying grappler +minions["Metadata/Monsters/Grappler/Grappler"] = { + name = "Undying Grappler", + life = 1, + fireResist = 20, + coldResist = 20, + lightningResist = 20, + chaosResist = 20, + damage = 2, + damageSpread = 0.2, + attackTime = 1.245, + skillList = { + "Melee", + "MonsterFlickerStrike", + "MonsterDischarge", + }, + modList = { + -- MonsterGainsPowerChargeOnKinDeath + -- MonsterUsesFlickerStrikeText + -- MonsterCastsDischargeText + }, +} +-- Ribbon +minions["Metadata/Monsters/Guardians/GuardianFire"] = { + name = "Flame Sentinel", + life = 1.8, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "MonsterMultiFireball", + "MonsterSplitFireball", + "MonsterLesserMultiFireball", + "MonsterMultiFireballSpectre", + "MonsterSplitFireballSpectre", + "MonsterLesserMultiFireballSpectre", + }, + modList = { + -- MonsterCastsAugmentedFireballsText + }, +} +minions["Metadata/Monsters/Guardians/GuardianLightning"] = { + name = "Galvanic Ribbon", + life = 1.8, + energyShield = 0.4, + fireResist = 0, + coldResist = 85, + lightningResist = 0, + chaosResist = 0, + damage = 2.2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "GuardianArc", + }, + modList = { + -- MonsterChannelsLightningText + }, +} +-- Gut flayer +minions["Metadata/Monsters/HalfSkeleton/HalfSkeleton"] = { + name = "Gut Flayer", + life = 1.32, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.1, + damageSpread = 0.3, + attackTime = 1.5, + weaponType1 = "Dagger", + skillList = { + "Melee", + "HalfSkeletonPuncture", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +-- Construct +minions["Metadata/Monsters/incaminion/Fragment"] = { + name = "Ancient Construct", + life = 0.7, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 40, + damage = 1.84, + damageSpread = 0.2, + attackTime = 1.995, + skillList = { + "IncaMinionProjectile", + }, + modList = { + }, +} +-- Carrion queen +minions["Metadata/Monsters/InsectSpawner/InsectSpawner"] = { + name = "Carrion Queen", + life = 2.45, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.91, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "InsectSpawnerSpit", + "InsectSpawnerSpawn", + }, + modList = { + mod("PhysicalDamageConvertToFire", "BASE", 50), -- MonsterConvertToFireDamage2 + }, +} +-- Birdman +minions["Metadata/Monsters/Kiweth/Kiweth"] = { + name = "Avian Retch", + life = 1.54, + energyShield = 0.2, + fireResist = 0, + coldResist = 40, + lightningResist = 0, + chaosResist = 0, + damage = 2.68, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "BirdmanConsumeCorpse", + "BirdmanBloodProjectile", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterLesserFarShot + }, +} +minions["Metadata/Monsters/Kiweth/KiwethSeagull"] = { + name = "Gluttonous Gull", + life = 1.3, + energyShield = 0.12, + fireResist = 0, + coldResist = 40, + lightningResist = 0, + chaosResist = 0, + damage = 2.56, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "BirdmanConsumeCorpse", + "BirdmanBloodProjectile", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterLesserFarShot + }, +} +-- Helion +minions["Metadata/Monsters/Lion/LionDesertSkinPuncture"] = { + name = "Dune Hellion", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +-- Knitted horror +minions["Metadata/Monsters/MassSkeleton/MassSkeleton"] = { + name = "Knitted Horror", + life = 2.25, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "SkeletonMassBowProjectile", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +-- Voidbearer +minions["Metadata/Monsters/Monkeys/FlameBearer"] = { + name = "Voidbearer", + life = 1.1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.1, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "FlamebearerFlameBlue", + }, + modList = { + }, +} +-- Stone golem +minions["Metadata/Monsters/MossMonster/FireMonster"] = { + name = "Cinder Elemental", + life = 2.7, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.695, + skillList = { + "Melee", + "FireMonsterWhirlingBlades", + }, + modList = { + mod("Damage", "MORE", -33), -- MonsterSpeedAndDamageFixupComplete + mod("Speed", "MORE", 33), -- MonsterSpeedAndDamageFixupComplete + -- MonsterRollsOverEnemiesText + -- ImmuneToLavaDamage + }, +} +-- Necromancer +minions["Metadata/Monsters/Necromancer/NecromancerConductivity"] = { + name = "Sin Lord", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerConductivity", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsConductivityText + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerEnfeebleCurse"] = { + name = "Diabolist", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerEnfeeble", + }, + modList = { + -- MonsterRaisesUndeadText + -- MonsterCastsEnfeebleCurseText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerFlamability"] = { + name = "Ash Prophet", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerFlammability", + }, + modList = { + -- MonsterRaisesUndeadText + -- MonsterCastsFlammabilityText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- ImmuneToLavaDamage + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerFrostbite"] = { + name = "Death Bishop", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerFrostbite", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsFrostbiteText + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerElementalWeakness"] = { + name = "Defiler", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerElementalWeakness", + }, + modList = { + -- MonsterRaisesUndeadText + -- MonsterCastsElementralWeaknessCurseText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerProjectileWeakness"] = { + name = "Necromancer", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerProjectileWeakness", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsProjectileWeaknessCurseText + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerVulnerability"] = { + name = "Necromancer", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerVulnerability", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsVulnerabilityCurseText + }, +} +-- Undying bomber +minions["Metadata/Monsters/Pyromaniac/PyromaniacFire"] = { + name = "Undying Incinerator", + life = 1, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "PyroFireball", + "PyroSuicideExplosion", + "MonsterFireBomb", + }, + modList = { + -- MonsterThrowsFireBombsText + -- MonsterExplodesOnItsTargetOnLowLifeText + -- ImmuneToLavaDamage + }, +} +minions["Metadata/Monsters/Pyromaniac/PyromaniacPoison"] = { + name = "Undying Alchemist", + life = 1, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "MonsterCausticBomb", + "PyroChaosFireball", + }, + modList = { + -- MonsterThrowsPoisonBombsText + }, +} +-- Stygian revenant +minions["Metadata/Monsters/Revenant/Revenant"] = { + name = "Stygian Revenant", + life = 1.82, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 2.4, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "RevenantReviveUndead", + "RevenantSpellProjectile", + "Melee", + "RevenantSpellProjectileSpectre", + }, + modList = { + }, +} +-- Sea witch +minions["Metadata/Monsters/Seawitch/SeaWitchScreech"] = { + name = "Singing Siren", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SeaWitchScreech", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + }, +} +minions["Metadata/Monsters/Seawitch/SeaWitchSpawnExploding"] = { + name = "Merveil's Attendant", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SummonExplodingSpawn", + "SeaWitchScreech", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterSummonsExplodingSpawnText + }, +} +minions["Metadata/Monsters/Seawitch/SeaWitchSpawnTemporalChains"] = { + name = "Merveil's Chosen", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SkeletonTemporalChains", + "SummonSpawn", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterSummonsSpawnText + -- MonsterCastsTemporalChainsText + }, +} +minions["Metadata/Monsters/Seawitch/SeaWitchVulnerabilityCurse"] = { + name = "Merveil's Chosen", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SkeletonVulnerability", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterCastsVulnerabilityCurseText + }, +} +-- Skeleton +minions["Metadata/Monsters/Skeletons/SkeletonBowPuncture"] = { + name = "Brittle Bleeder", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterCastsPunctureText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning"] = { + name = "Brittle Poacher", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonMeleeLarge"] = { + name = "Colossal Bonestalker", + life = 1.98, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2.8, + damageSpread = 0.2, + attackTime = 2.25, + weaponType1 = "One Handed Mace", + skillList = { + "Melee", + }, + modList = { + -- MonsterNecromancerRaisable + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning3"] = { + name = "Flayed Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonCasterColdMultipleProjectiles"] = { + name = "Frost Harbinger", + life = 0.84, + energyShield = 0.4, + fireResist = 0, + coldResist = 40, + lightningResist = 0, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "SkeletonProjectileCold", + }, + modList = { + mod("ProjectileCount", "BASE", 2), -- MonsterMultipleProjectilesImplicit1 + -- MonsterNecromancerRaisable + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonCasterFireMultipleProjectiles2"] = { + name = "Incinerated Mage", + life = 0.84, + energyShield = 0.4, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "SkeletonProjectileFire", + }, + modList = { + -- MonsterNecromancerRaisable + mod("ProjectileCount", "BASE", 2), -- MonsterMultipleProjectilesImplicit1 + -- ImmuneToLavaDamage + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowPoison"] = { + name = "Plagued Bowman", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterCausticArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresCausticArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning2"] = { + name = "Restless Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning4"] = { + name = "Sin Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonCasterLightningSpark"] = { + name = "Sparking Mage", + life = 0.84, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "SkeletonProjectileLightning", + "SkeletonSpark", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterCastsSparkText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowProjectileWeaknessCurse"] = { + name = "Vexing Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterProjectileWeakness", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterCastsProjectileWeaknessCurseText + }, +} +-- Snake +minions["Metadata/Monsters/Snake/SnakeScorpionMultiShot"] = { + name = "Barb Serpent", + life = 0.94, + fireResist = 30, + coldResist = 0, + lightningResist = 0, + chaosResist = 30, + damage = 1.75, + damageSpread = 0.2, + attackTime = 1.65, + skillList = { + "Melee", + "SnakeSpineProjectile", + }, + modList = { + mod("PhysicalDamageConvertToChaos", "BASE", 30), -- MonsterSnakeChaos + mod("ProjectileCount", "BASE", 2), -- MonsterMultipleProjectilesImplicit1 + }, +} +-- Spider +minions["Metadata/Monsters/Spiders/SpiderThornFlickerStrike"] = { + name = "Leaping Spider", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.44, + skillList = { + "Melee", + "MonsterFlickerStrike", + }, + modList = { + -- MonsterUsesFlickerStrikeText + }, +} +-- Undying +minions["Metadata/Monsters/Undying/CityStalkerMaleCasterArmour"] = { + name = "Undying Evangelist", + life = 1.2, + fireResist = 37, + coldResist = 37, + lightningResist = 37, + chaosResist = 0, + damage = 2.2, + damageSpread = 0.2, + attackTime = 1.245, + skillList = { + "Melee", + "DelayedBlast", + "MonsterProximityShield", + "DelayedBlastSpectre", + }, + modList = { + }, +} +minions["Metadata/Monsters/Undying/UndyingOutcastPuncture"] = { + name = "Undying Impaler", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.65, + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +minions["Metadata/Monsters/Undying/UndyingOutcastWhirlingBlades"] = { + name = "Undying Outcast", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.65, + skillList = { + "Melee", + "UndyingWhirlingBlades", + }, + modList = { + }, +} diff --git a/Data/Uniques/boots.lua b/Data/Uniques/boots.lua index e50f986c..ed125c7b 100644 --- a/Data/Uniques/boots.lua +++ b/Data/Uniques/boots.lua @@ -410,7 +410,7 @@ Requires Level 16, 18 Dex, 18 Int +(30-50) to Evasion Rating +(15-30) to maximum Energy Shield 20% increased Movement Speed -20% to Cold Resistance ++20% to Cold Resistance {variant:1}30% increased Physical Damage taken {variant:2}20% increased Physical Damage taken {variant:3}15% increased Damage taken while on Full Energy Shield diff --git a/Data/Uniques/helmet.lua b/Data/Uniques/helmet.lua index 598fc4a8..1427b080 100644 --- a/Data/Uniques/helmet.lua +++ b/Data/Uniques/helmet.lua @@ -473,7 +473,7 @@ Requires Level 67, 73 Dex, 88 Int (130-150)% increased Evasion and Energy Shield {variant:1}+2 to Level of Socketed Curse Gems {variant:2}+1 to Level of Socketed Curse Gems -Socketed Curse Gems Supported by Level 22 Blasphemy +Socketed Curse Gems are Supported by Level 22 Blasphemy Socketed Curse Gems have 12% reduced Mana Reservation ]],[[ Leer Cast diff --git a/Data/Uniques/jewel.lua b/Data/Uniques/jewel.lua index 5bf0243a..bad453a0 100644 --- a/Data/Uniques/jewel.lua +++ b/Data/Uniques/jewel.lua @@ -280,6 +280,7 @@ Implicits: 0 Golems have (16-20)% increased Attack and Cast Speed 30% increased Effect of Buffs granted by your Golems Golems have +(800-1000) to Armour +Primordial ]],[[ Primordial Harmony Cobalt Jewel diff --git a/Data/Uniques/mace.lua b/Data/Uniques/mace.lua index 73259360..f4c3eb42 100644 --- a/Data/Uniques/mace.lua +++ b/Data/Uniques/mace.lua @@ -57,7 +57,7 @@ Adds (24-30) to (34-40) Physical Damage (8-10)% increased Attack Speed Minions have (20-30)% increased maximum Life Minions' Attacks deal (5-8) to (12-16) additional Physical Damage -+1 to maximum number of Golems +Can Summon up to 1 additional Golem at a time Grants level 12 Summon Stone Golem ]],[[ Flesh-Eater diff --git a/Data/Uniques/shield.lua b/Data/Uniques/shield.lua index 72fc804e..88646fa4 100644 --- a/Data/Uniques/shield.lua +++ b/Data/Uniques/shield.lua @@ -73,7 +73,7 @@ Requires Level 35, 87 Str {variant:1}+1 to Level of Socketed Warcry Gems {variant:2}(80-100)% increased Armour {variant:2}2% of Attack Damage Leeched as Life against Taunted Enemies -{variant:2}50% increased Warcry Cooldown Recovery +{variant:2}50% increased Warcry Cooldown Recovery Speed +5% Chance to Block {variant:1}20% increased Endurance Charge Duration Gain +10 Life when you Taunt an Enemy diff --git a/Export/Gems/gems.sln b/Export/Export.sln similarity index 86% rename from Export/Gems/gems.sln rename to Export/Export.sln index 8228d52e..4ea5ec60 100644 --- a/Export/Gems/gems.sln +++ b/Export/Export.sln @@ -11,9 +11,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution act_int.txt = act_int.txt act_str.lua = act_str.lua act_str.txt = act_str.txt - ..\gems.lua = ..\gems.lua + minion.lua = minion.lua + minion.txt = minion.txt other.lua = other.lua other.txt = other.txt + ..\skills.lua = ..\skills.lua + spectre.lua = spectre.lua + spectre.txt = spectre.txt statmap.ini = statmap.ini sup_dex.lua = sup_dex.lua sup_dex.txt = sup_dex.txt diff --git a/Export/Gems/act_dex.lua b/Export/Gems/act_dex.lua deleted file mode 100644 index 3335acce..00000000 --- a/Export/Gems/act_dex.lua +++ /dev/null @@ -1,4269 +0,0 @@ --- Path of Building --- --- Active Dexterity gems --- Skill gem data (c) Grinding Gear Games --- -local gems, mod, flag, skill = ... - -gems["Animate Weapon"] = { - dexterity = true, - active_skill = true, - duration = true, - minion = true, - spell = true, - unsupported = true, -} -gems["Arctic Armour"] = { - dexterity = true, - active_skill = true, - spell = true, - duration = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [5] = true, [18] = true, [12] = true, [15] = true, [27] = true, [34] = true, [16] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("manaCost", 25), - --"chill_enemy_when_hit_duration_ms" = 500 - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - --[1] = "new_arctic_armour_physical_damage_taken_when_hit_+%_final" - --[2] = "new_arctic_armour_fire_damage_taken_when_hit_+%_final" - [3] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { -8, -8, 2.5, }, - [2] = { -8, -8, 2.6, }, - [3] = { -9, -8, 2.7, }, - [4] = { -9, -8, 2.8, }, - [5] = { -9, -9, 2.9, }, - [6] = { -9, -9, 3, }, - [7] = { -10, -9, 3.1, }, - [8] = { -10, -9, 3.2, }, - [9] = { -10, -10, 3.3, }, - [10] = { -10, -10, 3.4, }, - [11] = { -11, -10, 3.5, }, - [12] = { -11, -10, 3.6, }, - [13] = { -11, -11, 3.7, }, - [14] = { -11, -11, 3.8, }, - [15] = { -12, -11, 3.9, }, - [16] = { -12, -11, 4, }, - [17] = { -12, -12, 4.1, }, - [18] = { -12, -12, 4.2, }, - [19] = { -13, -12, 4.3, }, - [20] = { -13, -12, 4.4, }, - [21] = { -13, -13, 4.5, }, - [22] = { -13, -13, 4.6, }, - [23] = { -14, -13, 4.7, }, - [24] = { -14, -13, 4.8, }, - [25] = { -14, -14, 4.9, }, - [26] = { -14, -14, 5, }, - [27] = { -15, -14, 5.1, }, - [28] = { -15, -14, 5.2, }, - [29] = { -15, -15, 5.3, }, - [30] = { -15, -15, 5.4, }, - }, -} -gems["Barrage"] = { - dexterity = true, - active_skill = true, - attack = true, - bow = true, - parts = { - { - name = "1 Arrow", - }, - { - name = "All Arrows", - }, - }, - setupFunc = function(env, output) - if env.mainSkill.skillPart == 2 then - env.mainSkill.skillData.dpsMultiplier = output.ProjectileCount - end - end, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Wand"] = true, - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("ProjectileCount", "BASE", 3), --"number_of_additional_projectiles" = 3 - --"skill_can_fire_arrows" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 0.5, ModFlag.Projectile), --"projectile_damage_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 7, -50, }, - [2] = { 7, -49.4, }, - [3] = { 7, -48.8, }, - [4] = { 8, -48.2, }, - [5] = { 8, -47.6, }, - [6] = { 8, -47, }, - [7] = { 8, -46.4, }, - [8] = { 8, -45.8, }, - [9] = { 9, -45.2, }, - [10] = { 9, -44.6, }, - [11] = { 9, -44, }, - [12] = { 9, -43.4, }, - [13] = { 9, -42.8, }, - [14] = { 10, -42.2, }, - [15] = { 10, -41.6, }, - [16] = { 10, -41, }, - [17] = { 10, -40.4, }, - [18] = { 10, -39.8, }, - [19] = { 11, -39.2, }, - [20] = { 11, -38.6, }, - [21] = { 11, -38, }, - [22] = { 11, -37.4, }, - [23] = { 11, -36.8, }, - [24] = { 11, -36.2, }, - [25] = { 11, -35.6, }, - [26] = { 12, -35, }, - [27] = { 12, -34.4, }, - [28] = { 12, -33.8, }, - [29] = { 12, -33.2, }, - [30] = { 12, -32.6, }, - }, -} -gems["Bear Trap"] = { - trap = true, - dexterity = true, - active_skill = true, - duration = true, - cast = true, - color = 2, - baseFlags = { - cast = true, - trap = true, - duration = true, - }, - skillTypes = { [12] = true, [19] = true, [37] = true, [39] = true, [10] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 2), - skill("critChance", 5), - --"is_trap" = 1 - --"base_trap_duration" = 16000 - mod("MovementSpeed", "INC", -300, 0, 0, nil), --"base_movement_velocity_+%" = -300 - --"trap_override_pvp_scaling_time_ms" = 750 - --"base_skill_is_trapped" = ? - --"display_skill_deals_secondary_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("trapCooldown", 3), - }, - qualityMods = { - mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"secondary_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"secondary_maximum_base_physical_damage" - }, - levels = { - [1] = { 11, 16, 22, }, - [2] = { 13, 20, 28, }, - [3] = { 15, 27, 38, }, - [4] = { 17, 35, 49, }, - [5] = { 20, 49, 69, }, - [6] = { 22, 67, 94, }, - [7] = { 24, 90, 126, }, - [8] = { 26, 119, 167, }, - [9] = { 28, 156, 218, }, - [10] = { 32, 202, 282, }, - [11] = { 35, 259, 363, }, - [12] = { 38, 331, 463, }, - [13] = { 39, 420, 587, }, - [14] = { 41, 530, 742, }, - [15] = { 42, 630, 881, }, - [16] = { 43, 746, 1045, }, - [17] = { 44, 883, 1236, }, - [18] = { 45, 1043, 1460, }, - [19] = { 46, 1230, 1721, }, - [20] = { 46, 1447, 2026, }, - [21] = { 47, 1613, 2258, }, - [22] = { 48, 1795, 2514, }, - [23] = { 49, 1998, 2797, }, - [24] = { 50, 2222, 3111, }, - [25] = { 50, 2470, 3458, }, - [26] = { 51, 2744, 3842, }, - [27] = { 52, 3047, 4266, }, - [28] = { 53, 3382, 4735, }, - [29] = { 54, 3753, 5254, }, - [30] = { 54, 4162, 5826, }, - }, -} -gems["Blade Flurry"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - channelling = true, - melee = true, - parts = { - { - name = "1 Stage", - }, - { - name = "6 Stages", - }, - { - name = "Release at 6 Stages", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [11] = true, [6] = true, [58] = true, [24] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 4), - mod("Speed", "MORE", 60, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 60 - --"charged_attack_damage_per_stack_+%_final" = 20 - --"is_area_damage" = ? - nil, --"base_skill_show_average_damage_instead_of_dps" = ? - --"skill_can_add_multiple_charges_per_action" = ? - mod("Damage", "MORE", 120, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), - skill("dpsMultiplier", 3, { type = "SkillPart", skillPart = 3 }), - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -55, }, - [2] = { -54.4, }, - [3] = { -53.8, }, - [4] = { -53.2, }, - [5] = { -52.6, }, - [6] = { -52, }, - [7] = { -51.4, }, - [8] = { -50.8, }, - [9] = { -50.2, }, - [10] = { -49.6, }, - [11] = { -49, }, - [12] = { -48.4, }, - [13] = { -47.8, }, - [14] = { -47.2, }, - [15] = { -46.6, }, - [16] = { -46, }, - [17] = { -45.4, }, - [18] = { -44.8, }, - [19] = { -44.2, }, - [20] = { -43.6, }, - [21] = { -43, }, - [22] = { -42.4, }, - [23] = { -41.8, }, - [24] = { -41.2, }, - [25] = { -40.6, }, - [26] = { -40, }, - [27] = { -39.4, }, - [28] = { -38.8, }, - [29] = { -38.2, }, - [30] = { -37.6, }, - }, -} -gems["Blade Vortex"] = { - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - parts = { - { - name = "0 Blades", - }, - { - name = "5 Blades", - }, - { - name = "10 Blades", - }, - { - name = "20 Blades", - }, - }, - color = 2, - baseFlags = { - spell = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [26] = true, [36] = true, [27] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.3), - skill("critChance", 6), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"maximum_number_of_spinning_blades" = 20 - --"base_blade_vortex_hit_rate_ms" = 600 - --"blade_vortex_hit_rate_+%_per_blade" = 10 - --"blade_vortex_damage_+%_per_blade_final" = 30 - --"is_area_damage" = ? - --"skill_can_add_multiple_charges_per_action" = ? - --"action_ignores_crit_tracking" = ? - nil, --"base_skill_show_average_damage_instead_of_dps" = ? - skill("deliciouslyOverpowered", true), - mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), - mod("Damage", "MORE", 300, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 3 }), - mod("Damage", "MORE", 600, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 4 }), - skill("hitTimeOverride", 0.6, { type = "SkillPart", skillPart = 1 }), - skill("hitTimeOverride", 0.4, { type = "SkillPart", skillPart = 2 }), - skill("hitTimeOverride", 0.3, { type = "SkillPart", skillPart = 3 }), - skill("hitTimeOverride", 0.2, { type = "SkillPart", skillPart = 4 }), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 7, 10, 0, }, - [2] = { 7, 8, 12, 0, }, - [3] = { 8, 11, 16, 0, }, - [4] = { 9, 14, 20, 0, }, - [5] = { 10, 17, 25, 1, }, - [6] = { 11, 21, 32, 1, }, - [7] = { 12, 26, 39, 1, }, - [8] = { 13, 30, 45, 1, }, - [9] = { 13, 35, 52, 1, }, - [10] = { 14, 40, 60, 2, }, - [11] = { 14, 46, 69, 2, }, - [12] = { 15, 53, 79, 2, }, - [13] = { 16, 60, 90, 2, }, - [14] = { 16, 68, 103, 2, }, - [15] = { 17, 78, 117, 3, }, - [16] = { 18, 88, 133, 3, }, - [17] = { 18, 96, 144, 3, }, - [18] = { 19, 104, 157, 3, }, - [19] = { 19, 113, 170, 3, }, - [20] = { 19, 123, 185, 4, }, - [21] = { 20, 133, 200, 4, }, - [22] = { 21, 145, 217, 4, }, - [23] = { 21, 157, 235, 4, }, - [24] = { 21, 170, 254, 4, }, - [25] = { 22, 183, 275, 5, }, - [26] = { 23, 198, 298, 5, }, - [27] = { 23, 214, 322, 5, }, - [28] = { 23, 232, 347, 5, }, - [29] = { 24, 250, 375, 5, }, - [30] = { 24, 270, 405, 6, }, - }, -} -gems["Bladefall"] = { - dexterity = true, - active_skill = true, - spell = true, - area = true, - color = 2, - baseFlags = { - spell = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [17] = true, [19] = true, [18] = true, [10] = true, [36] = true, [26] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.9), - skill("critChance", 5), - --"bladefall_damage_per_stage_+%_final" = -6 - mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - }, - levels = { - [1] = { 13, 44, 65, }, - [2] = { 14, 52, 78, }, - [3] = { 15, 62, 93, }, - [4] = { 16, 73, 110, }, - [5] = { 17, 86, 129, }, - [6] = { 18, 96, 144, }, - [7] = { 18, 107, 160, }, - [8] = { 19, 118, 177, }, - [9] = { 19, 131, 197, }, - [10] = { 20, 145, 218, }, - [11] = { 21, 160, 241, }, - [12] = { 21, 177, 266, }, - [13] = { 22, 195, 293, }, - [14] = { 22, 215, 323, }, - [15] = { 23, 237, 356, }, - [16] = { 24, 261, 392, }, - [17] = { 24, 287, 431, }, - [18] = { 25, 315, 473, }, - [19] = { 25, 346, 519, }, - [20] = { 26, 380, 570, }, - [21] = { 27, 417, 625, }, - [22] = { 27, 457, 685, }, - [23] = { 28, 500, 750, }, - [24] = { 28, 548, 821, }, - [25] = { 29, 599, 899, }, - [26] = { 30, 655, 983, }, - [27] = { 30, 716, 1074, }, - [28] = { 31, 782, 1174, }, - [29] = { 31, 854, 1282, }, - [30] = { 32, 933, 1399, }, - }, -} -gems["Blast Rain"] = { - fire = true, - dexterity = true, - active_skill = true, - attack = true, - area = true, - bow = true, - parts = { - { - name = "1 explosion", - }, - { - name = "4 explosions", - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - fire = true, - }, - skillTypes = { [1] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [33] = true, [48] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 - mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 - --"blast_rain_number_of_blasts" = 4 - --"blast_rain_arrow_delay_ms" = 80 - --"base_is_projectile" = ? - --"is_area_damage" = ? - skill("dpsMultiplier", 4, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 8, -60, }, - [2] = { 8, -59.6, }, - [3] = { 8, -59.2, }, - [4] = { 8, -58.8, }, - [5] = { 9, -58.4, }, - [6] = { 9, -58, }, - [7] = { 9, -57.6, }, - [8] = { 9, -57.2, }, - [9] = { 9, -56.8, }, - [10] = { 9, -56.4, }, - [11] = { 9, -56, }, - [12] = { 10, -55.6, }, - [13] = { 10, -55.2, }, - [14] = { 10, -54.8, }, - [15] = { 10, -54.4, }, - [16] = { 10, -54, }, - [17] = { 10, -53.6, }, - [18] = { 10, -53.2, }, - [19] = { 10, -52.8, }, - [20] = { 10, -52.4, }, - [21] = { 10, -52, }, - [22] = { 10, -51.6, }, - [23] = { 11, -51.2, }, - [24] = { 11, -50.8, }, - [25] = { 11, -50.4, }, - [26] = { 11, -50, }, - [27] = { 11, -49.6, }, - [28] = { 12, -49.2, }, - [29] = { 12, -48.8, }, - [30] = { 12, -48.4, }, - }, -} -gems["Blink Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - minion = true, - duration = true, - movement = true, - bow = true, - unsupported = true, -} -gems["Blood Rage"] = { - dexterity = true, - active_skill = true, - spell = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.25), - --"life_leech_from_physical_attack_damage_permyriad" = 120 - --"base_physical_damage_%_of_maximum_life_to_deal_per_minute" = 240 - --"base_physical_damage_%_of_maximum_energy_shield_to_deal_per_minute" = 240 - --"add_frenzy_charge_on_kill_%_chance" = 25 - }, - qualityMods = { - mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" = 0.25 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" - [3] = skill("duration", nil), --"base_skill_effect_duration" - --[4] = "skill_level" - }, - levels = { - [1] = { 17, 5, 7, 1, }, - [2] = { 17, 6, 7.2, 2, }, - [3] = { 17, 6, 7.4, 3, }, - [4] = { 18, 7, 7.6, 4, }, - [5] = { 18, 7, 7.8, 5, }, - [6] = { 18, 8, 8, 6, }, - [7] = { 18, 8, 8.2, 7, }, - [8] = { 19, 9, 8.4, 8, }, - [9] = { 19, 9, 8.6, 9, }, - [10] = { 19, 10, 8.8, 10, }, - [11] = { 20, 10, 9, 11, }, - [12] = { 20, 11, 9.2, 12, }, - [13] = { 20, 11, 9.4, 13, }, - [14] = { 20, 12, 9.6, 14, }, - [15] = { 20, 12, 9.8, 15, }, - [16] = { 21, 13, 10, 16, }, - [17] = { 21, 13, 10.2, 17, }, - [18] = { 21, 14, 10.4, 18, }, - [19] = { 21, 14, 10.6, 19, }, - [20] = { 21, 15, 10.8, 20, }, - [21] = { 22, 15, 11, 21, }, - [22] = { 22, 16, 11.2, 22, }, - [23] = { 22, 16, 11.4, 23, }, - [24] = { 22, 17, 11.6, 24, }, - [25] = { 22, 17, 11.8, 25, }, - [26] = { 23, 18, 12, 26, }, - [27] = { 23, 18, 12.2, 27, }, - [28] = { 23, 19, 12.4, 28, }, - [29] = { 23, 19, 12.6, 29, }, - [30] = { 23, 20, 12.8, 30, }, - }, -} -gems["Burning Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - fire = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - fire = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [33] = true, [53] = true, [55] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 - mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" - }, - levels = { - [1] = { 5, 50, 10, }, - [2] = { 5, 51.8, 11, }, - [3] = { 5, 53.6, 12, }, - [4] = { 5, 55.4, 13, }, - [5] = { 5, 57.2, 14, }, - [6] = { 6, 59, 15, }, - [7] = { 6, 60.8, 16, }, - [8] = { 6, 62.6, 17, }, - [9] = { 6, 64.4, 18, }, - [10] = { 6, 66.2, 19, }, - [11] = { 7, 68, 20, }, - [12] = { 7, 69.8, 21, }, - [13] = { 7, 71.6, 22, }, - [14] = { 7, 73.4, 23, }, - [15] = { 7, 75.2, 24, }, - [16] = { 8, 77, 25, }, - [17] = { 8, 78.8, 26, }, - [18] = { 8, 80.6, 27, }, - [19] = { 8, 82.4, 28, }, - [20] = { 8, 84.2, 29, }, - [21] = { 9, 86, 30, }, - [22] = { 9, 87.8, 31, }, - [23] = { 9, 89.6, 32, }, - [24] = { 9, 91.4, 33, }, - [25] = { 9, 93.2, 34, }, - [26] = { 10, 95, 35, }, - [27] = { 10, 96.8, 36, }, - [28] = { 10, 98.6, 37, }, - [29] = { 10, 100.4, 38, }, - [30] = { 10, 102.2, 39, }, - }, -} -gems["Vaal Burning Arrow"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - fire = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - fire = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [11] = true, [43] = true, [33] = true, [55] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 - mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 - --"vaal_burning_arrow_explode_on_hit" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" - }, - levels = { - [1] = { 60, 10, }, - [2] = { 62, 11, }, - [3] = { 64, 12, }, - [4] = { 66, 13, }, - [5] = { 68, 14, }, - [6] = { 70, 15, }, - [7] = { 72, 16, }, - [8] = { 74, 17, }, - [9] = { 76, 18, }, - [10] = { 78, 19, }, - [11] = { 80, 20, }, - [12] = { 82, 21, }, - [13] = { 84, 22, }, - [14] = { 86, 23, }, - [15] = { 88, 24, }, - [16] = { 90, 25, }, - [17] = { 92, 26, }, - [18] = { 94, 27, }, - [19] = { 96, 28, }, - [20] = { 98, 29, }, - [21] = { 100, 30, }, - [22] = { 102, 31, }, - [23] = { 104, 32, }, - [24] = { 106, 33, }, - [25] = { 108, 34, }, - [26] = { 110, 35, }, - [27] = { 112, 36, }, - [28] = { 114, 37, }, - [29] = { 116, 38, }, - [30] = { 118, 39, }, - }, -} -gems["Caustic Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - duration = true, - chaos = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - duration = true, - chaos = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [17] = true, [19] = true, [22] = true, [40] = true, [50] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"skill_can_fire_arrows" = ? - skill("dotIsArea", true), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - [4] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, nil), --"physical_damage_%_to_add_as_chaos" - --[5] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 8, 2.8, 5.2, 30, 0, }, - [2] = { 8, 2.9, 6.5166666666667, 31, 0, }, - [3] = { 8, 3, 8.8333333333333, 32, 0, }, - [4] = { 9, 3.1, 11.7, 33, 0, }, - [5] = { 9, 3.2, 16.516666666667, 34, 1, }, - [6] = { 9, 3.3, 22.75, 35, 1, }, - [7] = { 10, 3.4, 30.766666666667, 36, 1, }, - [8] = { 10, 3.5, 41.033333333333, 37, 1, }, - [9] = { 10, 3.6, 54.116666666667, 38, 1, }, - [10] = { 11, 3.7, 70.716666666667, 39, 2, }, - [11] = { 11, 3.9, 91.683333333333, 40, 2, }, - [12] = { 12, 4, 118.13333333333, 41, 2, }, - [13] = { 12, 4.1, 151.35, 42, 2, }, - [14] = { 13, 4.2, 192.96666666667, 43, 2, }, - [15] = { 13, 4.3, 230.91666666667, 44, 3, }, - [16] = { 14, 4.4, 275.7, 45, 3, }, - [17] = { 14, 4.5, 328.55, 46, 3, }, - [18] = { 15, 4.6, 390.81666666667, 47, 3, }, - [19] = { 15, 4.7, 464.13333333333, 48, 3, }, - [20] = { 16, 4.8, 550.33333333333, 49, 4, }, - [21] = { 16, 5, 616.05, 50, 4, }, - [22] = { 17, 5.1, 689.2, 51, 4, }, - [23] = { 17, 5.2, 770.58333333333, 52, 4, }, - [24] = { 18, 5.3, 861.11666666667, 53, 4, }, - [25] = { 18, 5.4, 961.78333333333, 54, 5, }, - [26] = { 19, 5.5, 1073.6833333333, 55, 5, }, - [27] = { 19, 5.6, 1198.05, 56, 5, }, - [28] = { 20, 5.7, 1336.2, 57, 5, }, - [29] = { 20, 5.8, 1489.6166666667, 58, 5, }, - [30] = { 21, 5.9, 1659.9833333333, 59, 6, }, - }, -} -gems["Cyclone"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - movement = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [38] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 12), - mod("Speed", "MORE", 50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 50 - mod("MovementSpeed", "MORE", -30), --"cyclone_movement_speed_+%_final" = -30 - --"base_skill_number_of_additional_hits" = 1 - --"cyclone_first_hit_damage_+%_final" = -50 - --"is_area_damage" = ? - skill("dpsMultiplier", 2), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -55, }, - [2] = { -54.4, }, - [3] = { -53.8, }, - [4] = { -53.2, }, - [5] = { -52.6, }, - [6] = { -52, }, - [7] = { -51.4, }, - [8] = { -50.8, }, - [9] = { -50.2, }, - [10] = { -49.6, }, - [11] = { -49, }, - [12] = { -48.4, }, - [13] = { -47.8, }, - [14] = { -47.2, }, - [15] = { -46.6, }, - [16] = { -46, }, - [17] = { -45.4, }, - [18] = { -44.8, }, - [19] = { -44.2, }, - [20] = { -43.6, }, - [21] = { -43, }, - [22] = { -42.4, }, - [23] = { -41.8, }, - [24] = { -41.2, }, - [25] = { -40.6, }, - [26] = { -40, }, - [27] = { -39.4, }, - [28] = { -38.8, }, - [29] = { -38.2, }, - [30] = { -37.6, }, - }, -} -gems["Vaal Cyclone"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - duration = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [12] = true, [43] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("Speed", "MORE", 100, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 100 - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"base_skill_number_of_additional_hits" = 1 - mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 - --"is_area_damage" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -50, }, - [2] = { -49.4, }, - [3] = { -48.8, }, - [4] = { -48.2, }, - [5] = { -47.6, }, - [6] = { -47, }, - [7] = { -46.4, }, - [8] = { -45.8, }, - [9] = { -45.2, }, - [10] = { -44.6, }, - [11] = { -44, }, - [12] = { -43.4, }, - [13] = { -42.8, }, - [14] = { -42.2, }, - [15] = { -41.6, }, - [16] = { -41, }, - [17] = { -40.4, }, - [18] = { -39.8, }, - [19] = { -39.2, }, - [20] = { -38.6, }, - [21] = { -38, }, - [22] = { -37.4, }, - [23] = { -36.8, }, - [24] = { -36.2, }, - [25] = { -35.6, }, - [26] = { -35, }, - [27] = { -34.4, }, - [28] = { -33.8, }, - [29] = { -33.2, }, - [30] = { -32.6, }, - }, -} -gems["Desecrate"] = { - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - chaos = true, - color = 2, - baseFlags = { - spell = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [40] = true, [26] = true, [50] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"desecrate_number_of_corpses_to_create" = 3 - --"is_area_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - --[3] = "desecrate_corpse_level" - }, - levels = { - [1] = { 8, 8.1666666666667, 20, }, - [2] = { 8, 11.316666666667, 24, }, - [3] = { 9, 15.383333333333, 26, }, - [4] = { 9, 20.633333333333, 29, }, - [5] = { 10, 25.533333333333, 32, }, - [6] = { 11, 31.416666666667, 35, }, - [7] = { 12, 38.466666666667, 38, }, - [8] = { 12, 46.916666666667, 41, }, - [9] = { 13, 57.016666666667, 44, }, - [10] = { 14, 69.05, 47, }, - [11] = { 15, 83.4, 50, }, - [12] = { 16, 100.46666666667, 53, }, - [13] = { 17, 120.73333333333, 56, }, - [14] = { 18, 144.76666666667, 59, }, - [15] = { 18, 163.23333333333, 63, }, - [16] = { 18, 183.88333333333, 67, }, - [17] = { 19, 207, 71, }, - [18] = { 19, 232.83333333333, 75, }, - [19] = { 20, 261.71666666667, 100, }, - [20] = { 20, 294, 100, }, - [21] = { 21, 330.05, 100, }, - [22] = { 22, 370.3, 100, }, - [23] = { 22, 415.21666666667, 100, }, - [24] = { 22, 465.33333333333, 100, }, - [25] = { 23, 521.21666666667, 100, }, - [26] = { 23, 583.53333333333, 100, }, - [27] = { 24, 652.98333333333, 100, }, - [28] = { 25, 730.38333333333, 100, }, - [29] = { 25, 816.58333333333, 100, }, - [30] = { 26, 912.58333333333, 100, }, - }, -} -gems["Detonate Dead"] = { - dexterity = true, - active_skill = true, - cast = true, - area = true, - fire = true, - color = 2, - baseFlags = { - cast = true, - area = true, - fire = true, - }, - skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("critChance", 5), - --"corpse_explosion_monster_life_%" = 6 - --"is_area_damage" = 1 - --"display_skill_deals_secondary_damage" = ? - --"damage_cannot_be_reflected" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" - }, - levels = { - [1] = { 7, 4, 5, }, - [2] = { 8, 5, 8, }, - [3] = { 9, 8, 11, }, - [4] = { 10, 9, 14, }, - [5] = { 11, 13, 19, }, - [6] = { 12, 17, 25, }, - [7] = { 14, 22, 33, }, - [8] = { 15, 28, 43, }, - [9] = { 17, 36, 54, }, - [10] = { 19, 46, 69, }, - [11] = { 21, 58, 87, }, - [12] = { 22, 72, 108, }, - [13] = { 23, 90, 135, }, - [14] = { 24, 111, 167, }, - [15] = { 25, 130, 195, }, - [16] = { 26, 152, 227, }, - [17] = { 27, 176, 265, }, - [18] = { 28, 205, 308, }, - [19] = { 29, 238, 357, }, - [20] = { 30, 276, 414, }, - [21] = { 31, 304, 456, }, - [22] = { 32, 335, 502, }, - [23] = { 33, 369, 553, }, - [24] = { 34, 406, 609, }, - [25] = { 34, 446, 669, }, - [26] = { 35, 491, 736, }, - [27] = { 36, 539, 809, }, - [28] = { 37, 592, 888, }, - [29] = { 38, 650, 975, }, - [30] = { 38, 713, 1070, }, - }, -} -gems["Vaal Detonate Dead"] = { - dexterity = true, - active_skill = true, - vaal = true, - cast = true, - area = true, - fire = true, - color = 2, - baseFlags = { - cast = true, - area = true, - fire = true, - }, - skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("critChance", 5), - --"corpse_explosion_monster_life_%" = 8 - --"is_area_damage" = 1 - --"display_skill_deals_secondary_damage" = ? - --"detonate_dead_chain_explode" = ? - --"damage_cannot_be_reflected" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" - }, - levels = { - [1] = { 3, 5, }, - [2] = { 5, 7, }, - [3] = { 7, 10, }, - [4] = { 8, 12, }, - [5] = { 11, 17, }, - [6] = { 15, 23, }, - [7] = { 20, 30, }, - [8] = { 26, 39, }, - [9] = { 33, 50, }, - [10] = { 42, 63, }, - [11] = { 53, 79, }, - [12] = { 66, 99, }, - [13] = { 82, 122, }, - [14] = { 101, 151, }, - [15] = { 118, 177, }, - [16] = { 138, 207, }, - [17] = { 160, 241, }, - [18] = { 186, 280, }, - [19] = { 216, 325, }, - [20] = { 251, 376, }, - [21] = { 276, 415, }, - [22] = { 304, 457, }, - [23] = { 335, 503, }, - [24] = { 369, 553, }, - [25] = { 406, 609, }, - [26] = { 446, 669, }, - [27] = { 490, 735, }, - [28] = { 538, 807, }, - [29] = { 591, 886, }, - [30] = { 649, 973, }, - }, -} -gems["Double Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - --"base_skill_number_of_additional_hits" = 1 - skill("dpsMultiplier", 2), - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -30, }, - [2] = { -28.6, }, - [3] = { -27.2, }, - [4] = { -25.8, }, - [5] = { -24.4, }, - [6] = { -23, }, - [7] = { -21.6, }, - [8] = { -20.2, }, - [9] = { -18.8, }, - [10] = { -17.4, }, - [11] = { -16, }, - [12] = { -14.6, }, - [13] = { -13.2, }, - [14] = { -11.8, }, - [15] = { -10.4, }, - [16] = { -9, }, - [17] = { -7.6, }, - [18] = { -6.2, }, - [19] = { -4.8, }, - [20] = { -3.4, }, - [21] = { -2, }, - [22] = { -0.6, }, - [23] = { 0.8, }, - [24] = { 2.2, }, - [25] = { 3.6, }, - [26] = { 5, }, - [27] = { 6.4, }, - [28] = { 7.8, }, - [29] = { 9.2, }, - [30] = { 10.6, }, - }, -} -gems["Vaal Double Strike"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - melee = true, - duration = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - duration = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_skill_number_of_additional_hits" = 1 - --"number_of_monsters_to_summon" = 1 - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { -30, 3.6, }, - [2] = { -29.2, 3.7, }, - [3] = { -28.4, 3.8, }, - [4] = { -27.6, 3.9, }, - [5] = { -26.8, 4, }, - [6] = { -26, 4.1, }, - [7] = { -25.2, 4.2, }, - [8] = { -24.4, 4.3, }, - [9] = { -23.6, 4.4, }, - [10] = { -22.8, 4.5, }, - [11] = { -22, 4.6, }, - [12] = { -21.2, 4.7, }, - [13] = { -20.4, 4.8, }, - [14] = { -19.6, 4.9, }, - [15] = { -18.8, 5, }, - [16] = { -18, 5.1, }, - [17] = { -17.2, 5.2, }, - [18] = { -16.4, 5.3, }, - [19] = { -15.6, 5.4, }, - [20] = { -14.8, 5.5, }, - [21] = { -14, 5.6, }, - [22] = { -13.2, 5.7, }, - [23] = { -12.4, 5.8, }, - [24] = { -11.6, 5.9, }, - [25] = { -10.8, 6, }, - [26] = { -10, 6.1, }, - [27] = { -9.2, 6.2, }, - [28] = { -8.4, 6.3, }, - [29] = { -7.6, 6.4, }, - [30] = { -6.8, 6.5, }, - }, -} -gems["Dual Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [4] = true, [25] = true, [28] = true, [24] = true, [53] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Axe"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -15, }, - [2] = { -14, }, - [3] = { -13, }, - [4] = { -12, }, - [5] = { -11, }, - [6] = { -10, }, - [7] = { -9, }, - [8] = { -8, }, - [9] = { -7, }, - [10] = { -6, }, - [11] = { -5, }, - [12] = { -4, }, - [13] = { -3, }, - [14] = { -2, }, - [15] = { -1, }, - [16] = { nil, }, - [17] = { 1, }, - [18] = { 2, }, - [19] = { 3, }, - [20] = { 4, }, - [21] = { 5, }, - [22] = { 6, }, - [23] = { 7, }, - [24] = { 8, }, - [25] = { 9, }, - [26] = { 10, }, - [27] = { 11, }, - [28] = { 12, }, - [29] = { 13, }, - [30] = { 14, }, - }, -} -gems["Elemental Hit"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - fire = true, - cold = true, - lightning = true, - bow = true, - parts = { - { - name = "Added fire", - }, - { - name = "Added cold", - }, - { - name = "Added lightning", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - cold = true, - fire = true, - lightning = true, - }, - skillTypes = { [1] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, [33] = true, [34] = true, [35] = true, [48] = true, }, - baseMods = { - skill("castTime", 1), - --"chance_to_freeze_shock_ignite_%" = 10 - --"skill_can_fire_arrows" = ? - --"skill_can_fire_wand_projectiles" = ? - mod("EnemyFreezeChance", "BASE", 10), - mod("EnemyShockChance", "BASE", 10), - mod("EnemyIgniteChance", "BASE", 10), - }, - qualityMods = { - mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_minimum_base_fire_damage_for_elemental_hit" - [3] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_maximum_base_fire_damage_for_elemental_hit" - [4] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_minimum_base_cold_damage_for_elemental_hit" - [5] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_maximum_base_cold_damage_for_elemental_hit" - [6] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_minimum_base_lightning_damage_for_elemental_hit" - [7] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_maximum_base_lightning_damage_for_elemental_hit" - }, - levels = { - [1] = { 6, 4, 8, 3, 6, 1, 13, }, - [2] = { 6, 5, 9, 4, 7, 1, 14, }, - [3] = { 6, 6, 11, 5, 9, 1, 17, }, - [4] = { 7, 7, 14, 6, 11, 1, 23, }, - [5] = { 7, 10, 19, 8, 16, 2, 31, }, - [6] = { 7, 14, 27, 12, 22, 2, 44, }, - [7] = { 8, 18, 34, 15, 28, 3, 56, }, - [8] = { 8, 23, 43, 19, 35, 4, 70, }, - [9] = { 8, 28, 53, 23, 43, 5, 87, }, - [10] = { 9, 35, 64, 28, 53, 6, 106, }, - [11] = { 9, 42, 78, 34, 64, 7, 128, }, - [12] = { 9, 50, 93, 41, 76, 8, 153, }, - [13] = { 10, 60, 111, 49, 91, 10, 183, }, - [14] = { 10, 71, 132, 58, 108, 11, 217, }, - [15] = { 10, 84, 156, 69, 127, 13, 256, }, - [16] = { 11, 99, 183, 81, 150, 16, 301, }, - [17] = { 11, 115, 214, 94, 175, 19, 352, }, - [18] = { 11, 135, 250, 110, 205, 22, 411, }, - [19] = { 11, 151, 280, 123, 229, 24, 461, }, - [20] = { 12, 169, 314, 138, 257, 27, 516, }, - [21] = { 12, 182, 338, 149, 276, 29, 555, }, - [22] = { 12, 196, 364, 160, 297, 31, 598, }, - [23] = { 12, 211, 391, 172, 320, 34, 643, }, - [24] = { 13, 226, 420, 185, 344, 36, 691, }, - [25] = { 13, 243, 452, 199, 370, 39, 743, }, - [26] = { 13, 261, 485, 214, 397, 42, 798, }, - [27] = { 13, 281, 521, 230, 426, 45, 857, }, - [28] = { 14, 301, 559, 246, 457, 48, 919, }, - [29] = { 14, 323, 600, 264, 491, 52, 986, }, - [30] = { 14, 346, 643, 283, 526, 56, 1057, }, - }, -} -gems["Ethereal Knives"] = { - projectile = true, - dexterity = true, - active_skill = true, - spell = true, - color = 2, - baseFlags = { - spell = true, - projectile = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.6), - skill("critChance", 6), - mod("ProjectileCount", "BASE", 9), --"number_of_additional_projectiles" = 9 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - [4] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" - }, - levels = { - [1] = { 5, 4, 6, 0, }, - [2] = { 6, 5, 7, 1, }, - [3] = { 7, 6, 9, 2, }, - [4] = { 8, 8, 12, 3, }, - [5] = { 9, 12, 18, 4, }, - [6] = { 10, 18, 27, 5, }, - [7] = { 11, 24, 37, 6, }, - [8] = { 12, 32, 49, 7, }, - [9] = { 13, 42, 64, 8, }, - [10] = { 14, 55, 82, 9, }, - [11] = { 16, 70, 105, 10, }, - [12] = { 17, 89, 134, 11, }, - [13] = { 18, 112, 169, 12, }, - [14] = { 18, 141, 212, 13, }, - [15] = { 19, 176, 265, 14, }, - [16] = { 20, 219, 329, 15, }, - [17] = { 21, 272, 408, 16, }, - [18] = { 22, 336, 504, 17, }, - [19] = { 22, 393, 590, 18, }, - [20] = { 23, 459, 688, 19, }, - [21] = { 24, 509, 763, 20, }, - [22] = { 24, 563, 845, 21, }, - [23] = { 25, 623, 935, 22, }, - [24] = { 25, 690, 1034, 23, }, - [25] = { 26, 762, 1144, 24, }, - [26] = { 26, 842, 1264, 25, }, - [27] = { 27, 931, 1396, 26, }, - [28] = { 27, 1027, 1541, 27, }, - [29] = { 28, 1134, 1701, 28, }, - [30] = { 29, 1251, 1876, 29, }, - }, -} -gems["Explosive Arrow"] = { - fire = true, - dexterity = true, - active_skill = true, - attack = true, - area = true, - duration = true, - bow = true, - parts = { - { - name = "Explosion", - attack = false, - cast = true, - }, - { - name = "Arrow", - attack = true, - cast = false, - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [33] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("critChance", 6), - skill("duration", 1), --"base_skill_effect_duration" = 1000 - --"fuse_arrow_explosion_radius_+_per_fuse_arrow_orb" = 2 - --"active_skill_attack_damage_+%_final" = 0 - --"skill_can_fire_arrows" = 1 - --"base_is_projectile" = 1 - skill("showAverage", true, { type = "SkillPart", skillPart = 1 }), - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"minimum_fire_damage_per_fuse_arrow_orb" - [3] = skill("FireMax", nil), --"maximum_fire_damage_per_fuse_arrow_orb" - }, - levels = { - [1] = { 18, 44, 66, }, - [2] = { 19, 54, 81, }, - [3] = { 20, 66, 99, }, - [4] = { 21, 80, 121, }, - [5] = { 21, 98, 146, }, - [6] = { 22, 111, 166, }, - [7] = { 22, 126, 189, }, - [8] = { 23, 142, 214, }, - [9] = { 23, 161, 242, }, - [10] = { 24, 182, 273, }, - [11] = { 24, 205, 308, }, - [12] = { 24, 232, 347, }, - [13] = { 26, 261, 391, }, - [14] = { 26, 293, 440, }, - [15] = { 26, 330, 495, }, - [16] = { 26, 371, 556, }, - [17] = { 26, 416, 624, }, - [18] = { 27, 467, 700, }, - [19] = { 27, 523, 785, }, - [20] = { 27, 586, 879, }, - [21] = { 28, 656, 984, }, - [22] = { 28, 734, 1100, }, - [23] = { 29, 820, 1230, }, - [24] = { 29, 917, 1375, }, - [25] = { 30, 1024, 1536, }, - [26] = { 30, 1143, 1714, }, - [27] = { 30, 1275, 1913, }, - [28] = { 30, 1422, 2134, }, - [29] = { 31, 1586, 2379, }, - [30] = { 31, 1767, 2651, }, - }, -} -gems["Fire Trap"] = { - trap = true, - dexterity = true, - active_skill = true, - spell = true, - duration = true, - area = true, - fire = true, - color = 2, - baseFlags = { - spell = true, - trap = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [29] = true, [37] = true, [40] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - skill("critChance", 6), - --"is_trap" = 1 - --"base_trap_duration" = 16000 - skill("duration", 8), --"base_skill_effect_duration" = 8000 - --"is_area_damage" = ? - --"base_skill_is_trapped" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("trapCooldown", 3), - }, - qualityMods = { - mod("FireDamage", "INC", 1.5, ModFlag.Dot), --"burn_damage_+%" = 1.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - --[5] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 7, 2, 4, 3.6166666666667, 0, }, - [2] = { 8, 3, 5, 4.1, 0, }, - [3] = { 9, 4, 6, 5.2, 1, }, - [4] = { 10, 6, 8, 7.1833333333333, 1, }, - [5] = { 11, 8, 12, 10.6, 1, }, - [6] = { 12, 13, 19, 16.416666666667, 2, }, - [7] = { 13, 18, 27, 22.566666666667, 2, }, - [8] = { 14, 25, 37, 30.466666666667, 2, }, - [9] = { 14, 34, 50, 40.533333333333, 3, }, - [10] = { 16, 45, 67, 53.333333333333, 3, }, - [11] = { 17, 59, 89, 69.5, 3, }, - [12] = { 18, 78, 117, 89.866666666667, 4, }, - [13] = { 19, 101, 152, 115.41666666667, 4, }, - [14] = { 20, 132, 197, 147.36666666667, 4, }, - [15] = { 21, 170, 255, 187.21666666667, 5, }, - [16] = { 22, 219, 328, 236.78333333333, 5, }, - [17] = { 22, 280, 420, 298.28333333333, 5, }, - [18] = { 23, 358, 536, 374.41666666667, 6, }, - [19] = { 24, 429, 643, 441.11666666667, 6, }, - [20] = { 24, 513, 770, 518.76666666667, 6, }, - [21] = { 25, 578, 867, 573.95, 7, }, - [22] = { 26, 651, 976, 634.4, 7, }, - [23] = { 26, 732, 1098, 700.6, 7, }, - [24] = { 27, 823, 1235, 772.98333333333, 8, }, - [25] = { 27, 925, 1388, 852.1, 8, }, - [26] = { 28, 1040, 1559, 938.5, 8, }, - [27] = { 29, 1167, 1751, 1032.75, 9, }, - [28] = { 30, 1310, 1965, 1135.4666666667, 9, }, - [29] = { 30, 1470, 2205, 1247.3166666667, 9, }, - [30] = { 30, 1648, 2472, 1368.9833333333, 10, }, - }, -} -gems["Flicker Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - movement = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [24] = true, [25] = true, [28] = true, [38] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - mod("Speed", "MORE", 20, ModFlag.Attack), --"flicker_strike_more_attack_speed_+%_final" = 20 - mod("Speed", "INC", 10, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 10 - --"ignores_proximity_shield" = ? - nil, --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, }, - [2] = { 31.6, }, - [3] = { 33.2, }, - [4] = { 34.8, }, - [5] = { 36.4, }, - [6] = { 38, }, - [7] = { 39.6, }, - [8] = { 41.2, }, - [9] = { 42.8, }, - [10] = { 44.4, }, - [11] = { 46, }, - [12] = { 47.6, }, - [13] = { 49.2, }, - [14] = { 50.8, }, - [15] = { 52.4, }, - [16] = { 54, }, - [17] = { 55.6, }, - [18] = { 57.2, }, - [19] = { 58.8, }, - [20] = { 60.4, }, - [21] = { 62, }, - [22] = { 63.6, }, - [23] = { 65.2, }, - [24] = { 66.8, }, - [25] = { 68.4, }, - [26] = { 70, }, - [27] = { 71.6, }, - [28] = { 73.2, }, - [29] = { 74.8, }, - [30] = { 76.4, }, - }, -} -gems["Freeze Mine"] = { - mine = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - mine = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [41] = true, [34] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.5), - --"freeze_mine_cold_resistance_+_while_frozen" = -15 - --"base_mine_duration" = 16000 - --"base_skill_is_mined" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_remote_mine" = ? - --"always_freeze" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - --[4] = "freeze_as_though_dealt_damage_+%" - }, - levels = { - [1] = { 6, 7, 10, 200, }, - [2] = { 8, 9, 13, 210, }, - [3] = { 10, 12, 17, 220, }, - [4] = { 10, 15, 23, 230, }, - [5] = { 11, 19, 29, 240, }, - [6] = { 12, 24, 37, 250, }, - [7] = { 13, 30, 46, 260, }, - [8] = { 14, 36, 54, 270, }, - [9] = { 14, 42, 63, 280, }, - [10] = { 16, 49, 73, 290, }, - [11] = { 18, 57, 85, 300, }, - [12] = { 18, 66, 99, 310, }, - [13] = { 19, 76, 114, 320, }, - [14] = { 20, 88, 131, 330, }, - [15] = { 21, 101, 151, 340, }, - [16] = { 21, 116, 173, 350, }, - [17] = { 21, 132, 199, 360, }, - [18] = { 21, 151, 227, 370, }, - [19] = { 22, 165, 248, 380, }, - [20] = { 22, 181, 271, 390, }, - [21] = { 22, 197, 296, 400, }, - [22] = { 22, 215, 322, 410, }, - [23] = { 23, 234, 351, 420, }, - [24] = { 23, 255, 383, 430, }, - [25] = { 24, 278, 417, 440, }, - [26] = { 24, 302, 454, 450, }, - [27] = { 24, 329, 493, 460, }, - [28] = { 24, 358, 536, 470, }, - [29] = { 25, 389, 583, 480, }, - [30] = { 25, 422, 633, 490, }, - }, -} -gems["Frenzy"] = { - dexterity = true, - active_skill = true, - attack = true, - melee = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - mod("PhysicalDamage", "INC", 5, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"physical_damage_+%_per_frenzy_charge" = 5 - mod("Speed", "INC", 5, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 5 - --"skill_can_fire_arrows" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 10, }, - [2] = { 11.4, }, - [3] = { 12.8, }, - [4] = { 14.2, }, - [5] = { 15.6, }, - [6] = { 17, }, - [7] = { 18.4, }, - [8] = { 19.8, }, - [9] = { 21.2, }, - [10] = { 22.6, }, - [11] = { 24, }, - [12] = { 25.4, }, - [13] = { 26.8, }, - [14] = { 28.2, }, - [15] = { 29.6, }, - [16] = { 31, }, - [17] = { 32.4, }, - [18] = { 33.8, }, - [19] = { 35.2, }, - [20] = { 36.6, }, - [21] = { 38, }, - [22] = { 39.4, }, - [23] = { 40.8, }, - [24] = { 42.2, }, - [25] = { 43.6, }, - [26] = { 45, }, - [27] = { 46.4, }, - [28] = { 47.8, }, - [29] = { 49.2, }, - [30] = { 50.6, }, - }, -} -gems["Frost Blades"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - cold = true, - parts = { - { - name = "Melee hit", - melee = true, - projectile = false, - }, - { - name = "Icy blades", - melee = false, - projectile = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - cold = true, - }, - skillTypes = { [1] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [48] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("PhysicalDamageConvertToCold", "BASE", 60, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 60 - --"total_projectile_spread_angle_override" = 110 - --"show_number_of_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 - }, - levelMods = { - [1] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - --[2] = "melee_weapon_range_+" - [3] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" - [4] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 4, 18, 0, nil, }, - [2] = { 4, 18, 1, 2.2, }, - [3] = { 4, 18, 2, 4.4, }, - [4] = { 4, 18, 3, 6.6, }, - [5] = { 4, 18, 4, 8.8, }, - [6] = { 5, 19, 5, 11, }, - [7] = { 5, 19, 6, 13.2, }, - [8] = { 5, 19, 7, 15.4, }, - [9] = { 5, 19, 8, 17.6, }, - [10] = { 5, 19, 9, 19.8, }, - [11] = { 6, 20, 10, 22, }, - [12] = { 6, 20, 11, 24.2, }, - [13] = { 6, 20, 12, 26.4, }, - [14] = { 6, 20, 13, 28.6, }, - [15] = { 6, 20, 14, 30.8, }, - [16] = { 7, 21, 15, 33, }, - [17] = { 7, 21, 16, 35.2, }, - [18] = { 7, 21, 17, 37.4, }, - [19] = { 7, 21, 18, 39.6, }, - [20] = { 7, 21, 19, 41.8, }, - [21] = { 8, 22, 20, 44, }, - [22] = { 8, 22, 21, 46.2, }, - [23] = { 8, 22, 22, 48.4, }, - [24] = { 8, 22, 23, 50.6, }, - [25] = { 8, 22, 24, 52.8, }, - [26] = { 9, 23, 25, 55, }, - [27] = { 9, 23, 26, 57.2, }, - [28] = { 9, 23, 27, 59.4, }, - [29] = { 9, 23, 28, 61.6, }, - [30] = { 9, 23, 29, 63.8, }, - }, -} -gems["Grace"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Evasion", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_evasion_rating" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 227, 0, }, - [2] = { 271, 3, }, - [3] = { 322, 6, }, - [4] = { 379, 9, }, - [5] = { 444, 12, }, - [6] = { 528, 15, }, - [7] = { 621, 18, }, - [8] = { 722, 21, }, - [9] = { 845, 23, }, - [10] = { 940, 25, }, - [11] = { 1043, 27, }, - [12] = { 1155, 29, }, - [13] = { 1283, 31, }, - [14] = { 1413, 33, }, - [15] = { 1567, 35, }, - [16] = { 1732, 36, }, - [17] = { 1914, 37, }, - [18] = { 2115, 38, }, - [19] = { 2335, 39, }, - [20] = { 2575, 40, }, - [21] = { 2700, 41, }, - [22] = { 2835, 42, }, - [23] = { 2979, 43, }, - [24] = { 3124, 44, }, - [25] = { 3279, 45, }, - [26] = { 3444, 46, }, - [27] = { 3611, 47, }, - [28] = { 3795, 48, }, - [29] = { 3982, 49, }, - [30] = { 4179, 50, }, - }, -} -gems["Vaal Grace"] = { - aura = true, - dexterity = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - skill("duration", 6), --"base_skill_effect_duration" = 6000 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("AttackDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_%" - [2] = mod("SpellDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_spells_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 24, 24, 0, }, - [2] = { 25, 25, 3, }, - [3] = { 25, 25, 6, }, - [4] = { 26, 26, 9, }, - [5] = { 26, 26, 12, }, - [6] = { 27, 27, 15, }, - [7] = { 27, 27, 18, }, - [8] = { 28, 28, 21, }, - [9] = { 28, 28, 23, }, - [10] = { 29, 29, 25, }, - [11] = { 29, 29, 27, }, - [12] = { 30, 30, 29, }, - [13] = { 30, 30, 31, }, - [14] = { 31, 31, 33, }, - [15] = { 31, 31, 35, }, - [16] = { 32, 32, 36, }, - [17] = { 32, 32, 37, }, - [18] = { 33, 33, 38, }, - [19] = { 33, 33, 39, }, - [20] = { 34, 34, 40, }, - [21] = { 34, 34, 41, }, - [22] = { 35, 35, 42, }, - [23] = { 35, 35, 43, }, - [24] = { 36, 36, 44, }, - [25] = { 36, 36, 45, }, - [26] = { 37, 37, 46, }, - [27] = { 37, 37, 47, }, - [28] = { 38, 38, 48, }, - [29] = { 38, 38, 49, }, - [30] = { 39, 39, 50, }, - }, -} -gems["Haste"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" - [2] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" - [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 9, 9, 4, 0, }, - [2] = { 10, 9, 4, 3, }, - [3] = { 10, 10, 4, 6, }, - [4] = { 10, 10, 5, 9, }, - [5] = { 11, 10, 5, 12, }, - [6] = { 11, 11, 5, 15, }, - [7] = { 11, 11, 6, 18, }, - [8] = { 12, 11, 6, 21, }, - [9] = { 12, 12, 6, 23, }, - [10] = { 12, 12, 7, 25, }, - [11] = { 13, 12, 7, 27, }, - [12] = { 13, 13, 7, 29, }, - [13] = { 13, 13, 8, 31, }, - [14] = { 14, 13, 8, 33, }, - [15] = { 14, 14, 8, 35, }, - [16] = { 15, 14, 8, 36, }, - [17] = { 15, 15, 8, 37, }, - [18] = { 16, 15, 8, 38, }, - [19] = { 16, 16, 8, 39, }, - [20] = { 16, 16, 9, 40, }, - [21] = { 17, 16, 9, 41, }, - [22] = { 17, 17, 9, 42, }, - [23] = { 17, 17, 10, 43, }, - [24] = { 18, 17, 10, 44, }, - [25] = { 18, 18, 10, 45, }, - [26] = { 18, 18, 11, 46, }, - [27] = { 19, 18, 11, 47, }, - [28] = { 19, 19, 11, 48, }, - [29] = { 19, 19, 12, 49, }, - [30] = { 20, 19, 12, 50, }, - }, -} -gems["Vaal Haste"] = { - aura = true, - dexterity = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - skill("duration", 4), --"base_skill_effect_duration" = 4000 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" - [2] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" - [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 25, 24, 10, 0, }, - [2] = { 25, 25, 10, 3, }, - [3] = { 25, 25, 10, 6, }, - [4] = { 26, 25, 10, 9, }, - [5] = { 26, 26, 10, 12, }, - [6] = { 26, 26, 11, 15, }, - [7] = { 27, 26, 11, 18, }, - [8] = { 27, 27, 11, 21, }, - [9] = { 27, 27, 11, 23, }, - [10] = { 28, 27, 11, 25, }, - [11] = { 28, 28, 12, 27, }, - [12] = { 28, 28, 12, 29, }, - [13] = { 29, 28, 12, 31, }, - [14] = { 29, 29, 12, 33, }, - [15] = { 29, 29, 12, 35, }, - [16] = { 30, 29, 13, 36, }, - [17] = { 30, 30, 13, 37, }, - [18] = { 30, 30, 13, 38, }, - [19] = { 31, 30, 13, 39, }, - [20] = { 31, 31, 13, 40, }, - [21] = { 31, 31, 14, 41, }, - [22] = { 32, 31, 14, 42, }, - [23] = { 32, 32, 14, 43, }, - [24] = { 32, 32, 14, 44, }, - [25] = { 33, 32, 14, 45, }, - [26] = { 33, 33, 15, 46, }, - [27] = { 33, 33, 15, 47, }, - [28] = { 34, 33, 15, 48, }, - [29] = { 34, 34, 15, 49, }, - [30] = { 34, 34, 15, 50, }, - }, -} -gems["Hatred"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("PhysicalDamageGainAsCold", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"physical_damage_%_to_add_as_cold" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 26, 0, }, - [2] = { 26, 3, }, - [3] = { 27, 6, }, - [4] = { 27, 9, }, - [5] = { 28, 12, }, - [6] = { 28, 15, }, - [7] = { 29, 18, }, - [8] = { 29, 21, }, - [9] = { 30, 23, }, - [10] = { 30, 25, }, - [11] = { 31, 27, }, - [12] = { 31, 29, }, - [13] = { 32, 31, }, - [14] = { 32, 33, }, - [15] = { 33, 35, }, - [16] = { 34, 36, }, - [17] = { 34, 37, }, - [18] = { 35, 38, }, - [19] = { 35, 39, }, - [20] = { 36, 40, }, - [21] = { 36, 41, }, - [22] = { 37, 42, }, - [23] = { 37, 43, }, - [24] = { 38, 44, }, - [25] = { 38, 45, }, - [26] = { 39, 46, }, - [27] = { 39, 47, }, - [28] = { 40, 48, }, - [29] = { 40, 49, }, - [30] = { 41, 50, }, - }, -} -gems["Herald of Ice"] = { - dexterity = true, - active_skill = true, - cast = true, - area = true, - cold = true, - color = 2, - baseFlags = { - cast = true, - area = true, - cold = true, - }, - skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [34] = true, [27] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 25), - skill("damageEffectiveness", 0.8), - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"display_skill_deals_secondary_damage" = ? - --"damage_cannot_be_reflected" = ? - --"skill_can_add_multiple_charges_per_action" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ice_cold_damage_+%" = 0.75 - }, - levelMods = { - [1] = mod("ColdMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_cold_damage" - [2] = mod("ColdMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_cold_damage" - [3] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_cold_damage" - [4] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_cold_damage" - [5] = skill("ColdMin", nil), --"secondary_minimum_base_cold_damage" - [6] = skill("ColdMax", nil), --"secondary_maximum_base_cold_damage" - }, - levels = { - [1] = { 4, 5, 4, 5, 18, 26, }, - [2] = { 5, 7, 5, 7, 23, 35, }, - [3] = { 6, 8, 6, 8, 30, 45, }, - [4] = { 7, 10, 7, 10, 38, 57, }, - [5] = { 8, 12, 8, 12, 45, 67, }, - [6] = { 9, 14, 9, 14, 53, 80, }, - [7] = { 10, 16, 10, 16, 62, 94, }, - [8] = { 12, 18, 12, 18, 73, 110, }, - [9] = { 13, 20, 13, 20, 85, 128, }, - [10] = { 15, 23, 15, 23, 99, 149, }, - [11] = { 17, 26, 17, 26, 115, 173, }, - [12] = { 19, 29, 19, 29, 134, 200, }, - [13] = { 22, 33, 22, 33, 154, 232, }, - [14] = { 24, 37, 24, 37, 178, 267, }, - [15] = { 26, 39, 26, 39, 195, 293, }, - [16] = { 28, 42, 28, 42, 214, 321, }, - [17] = { 30, 46, 30, 46, 235, 352, }, - [18] = { 33, 49, 33, 49, 257, 386, }, - [19] = { 35, 53, 35, 53, 282, 422, }, - [20] = { 38, 56, 38, 56, 308, 462, }, - [21] = { 40, 61, 40, 61, 337, 505, }, - [22] = { 43, 65, 43, 65, 368, 552, }, - [23] = { 46, 70, 46, 70, 402, 603, }, - [24] = { 50, 75, 50, 75, 438, 658, }, - [25] = { 53, 80, 53, 80, 478, 717, }, - [26] = { 57, 85, 57, 85, 521, 782, }, - [27] = { 61, 91, 61, 91, 568, 852, }, - [28] = { 65, 98, 65, 98, 619, 928, }, - [29] = { 69, 104, 69, 104, 674, 1010, }, - [30] = { 74, 111, 74, 111, 733, 1100, }, - }, -} -gems["Ice Shot"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - duration = true, - cold = true, - bow = true, - parts = { - { - name = "Arrow", - area = false, - }, - { - name = "Cone", - area = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [34] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToCold", "BASE", 60), --"skill_physical_damage_%_to_convert_to_cold" = 60 - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"skill_can_fire_arrows" = ? - mod("SkillPhysicalDamageConvertToCold", "BASE", 40, 0, 0, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 6, 20, }, - [2] = { 6, 21.4, }, - [3] = { 6, 22.8, }, - [4] = { 7, 24.2, }, - [5] = { 7, 25.6, }, - [6] = { 7, 27, }, - [7] = { 7, 28.4, }, - [8] = { 8, 29.8, }, - [9] = { 8, 31.2, }, - [10] = { 8, 32.6, }, - [11] = { 8, 34, }, - [12] = { 8, 35.4, }, - [13] = { 9, 36.8, }, - [14] = { 9, 38.2, }, - [15] = { 9, 39.6, }, - [16] = { 9, 41, }, - [17] = { 9, 42.4, }, - [18] = { 10, 43.8, }, - [19] = { 10, 45.2, }, - [20] = { 10, 46.6, }, - [21] = { 10, 48, }, - [22] = { 10, 49.4, }, - [23] = { 11, 50.8, }, - [24] = { 11, 52.2, }, - [25] = { 11, 53.6, }, - [26] = { 11, 55, }, - [27] = { 11, 56.4, }, - [28] = { 12, 57.8, }, - [29] = { 12, 59.2, }, - [30] = { 12, 60.6, }, - }, -} -gems["Ice Trap"] = { - trap = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - cold = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - trap = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [19] = true, [11] = true, [37] = true, [34] = true, [12] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 1.1), - skill("critChance", 5), - --"base_trap_duration" = 16000 - --"is_area_damage" = ? - --"base_skill_is_trapped" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_trap" = ? - skill("trapCooldown", 2), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 13, 60, 90, }, - [2] = { 14, 72, 108, }, - [3] = { 15, 85, 128, }, - [4] = { 15, 101, 151, }, - [5] = { 16, 119, 178, }, - [6] = { 17, 132, 198, }, - [7] = { 17, 147, 220, }, - [8] = { 18, 163, 244, }, - [9] = { 19, 180, 270, }, - [10] = { 19, 199, 299, }, - [11] = { 20, 220, 330, }, - [12] = { 20, 243, 364, }, - [13] = { 21, 268, 402, }, - [14] = { 21, 295, 442, }, - [15] = { 22, 325, 487, }, - [16] = { 23, 357, 536, }, - [17] = { 23, 392, 589, }, - [18] = { 24, 431, 646, }, - [19] = { 24, 473, 709, }, - [20] = { 25, 519, 778, }, - [21] = { 26, 568, 853, }, - [22] = { 26, 623, 934, }, - [23] = { 27, 681, 1022, }, - [24] = { 27, 746, 1118, }, - [25] = { 28, 815, 1223, }, - [26] = { 28, 891, 1337, }, - [27] = { 29, 973, 1460, }, - [28] = { 30, 1063, 1595, }, - [29] = { 30, 1160, 1740, }, - [30] = { 31, 1266, 1899, }, - }, -} -gems["Lacerate"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - melee = true, - parts = { - { - name = "One slash", - }, - { - name = "Both slashes", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["Two Handed Axe"] = true, - ["Two Handed Sword"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - mod("Speed", "MORE", -25, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -25 - --"is_area_damage" = ? - skill("dpsMultiplier", 2, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { -5, 0, }, - [2] = { -3.8, 0, }, - [3] = { -2.6, 0, }, - [4] = { -1.4, 1, }, - [5] = { -0.2, 1, }, - [6] = { 1, 1, }, - [7] = { 2.2, 1, }, - [8] = { 3.4, 2, }, - [9] = { 4.6, 2, }, - [10] = { 5.8, 2, }, - [11] = { 7, 2, }, - [12] = { 8.2, 3, }, - [13] = { 9.4, 3, }, - [14] = { 10.6, 3, }, - [15] = { 11.8, 3, }, - [16] = { 13, 4, }, - [17] = { 14.2, 4, }, - [18] = { 15.4, 4, }, - [19] = { 16.6, 4, }, - [20] = { 17.8, 5, }, - [21] = { 19, 5, }, - [22] = { 20.2, 5, }, - [23] = { 21.4, 5, }, - [24] = { 22.6, 6, }, - [25] = { 23.8, 6, }, - [26] = { 25, 6, }, - [27] = { 26.2, 6, }, - [28] = { 27.4, 7, }, - [29] = { 28.6, 7, }, - [30] = { 29.8, 7, }, - }, -} -gems["Lightning Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - lightning = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - lightning = true, - }, - skillTypes = { [1] = true, [48] = true, [11] = true, [3] = true, [22] = true, [17] = true, [19] = true, [35] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 - --"lightning_arrow_maximum_number_of_extra_targets" = 3 - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 7, nil, }, - [2] = { 7, 1, }, - [3] = { 7, 2, }, - [4] = { 8, 3, }, - [5] = { 8, 4, }, - [6] = { 8, 5, }, - [7] = { 8, 6, }, - [8] = { 8, 7, }, - [9] = { 9, 8, }, - [10] = { 9, 9, }, - [11] = { 9, 10, }, - [12] = { 9, 11, }, - [13] = { 9, 12, }, - [14] = { 10, 13, }, - [15] = { 10, 14, }, - [16] = { 10, 15, }, - [17] = { 10, 16, }, - [18] = { 10, 17, }, - [19] = { 11, 18, }, - [20] = { 11, 19, }, - [21] = { 11, 20, }, - [22] = { 11, 21, }, - [23] = { 11, 22, }, - [24] = { 11, 23, }, - [25] = { 11, 24, }, - [26] = { 12, 25, }, - [27] = { 12, 26, }, - [28] = { 12, 27, }, - [29] = { 12, 28, }, - [30] = { 12, 29, }, - }, -} -gems["Lightning Strike"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - lightning = true, - parts = { - { - name = "Melee hit", - melee = true, - projectile = false, - }, - { - name = "Projectiles", - melee = false, - projectile = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - lightning = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 - mod("Damage", "MORE", -25, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -25 - --"total_projectile_spread_angle_override" = 70 - --"show_number_of_projectiles" = ? - }, - qualityMods = { - mod("PierceChance", "BASE", 2), --"pierce_%" = 2 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - }, - levels = { - [1] = { 30, 4, }, - [2] = { 32.4, 4, }, - [3] = { 34.8, 4, }, - [4] = { 37.2, 4, }, - [5] = { 39.6, 4, }, - [6] = { 42, 5, }, - [7] = { 44.4, 5, }, - [8] = { 46.8, 5, }, - [9] = { 49.2, 5, }, - [10] = { 51.6, 5, }, - [11] = { 54, 6, }, - [12] = { 56.4, 6, }, - [13] = { 58.8, 6, }, - [14] = { 61.2, 6, }, - [15] = { 63.6, 6, }, - [16] = { 66, 7, }, - [17] = { 68.4, 7, }, - [18] = { 70.8, 7, }, - [19] = { 73.2, 7, }, - [20] = { 75.6, 7, }, - [21] = { 78, 8, }, - [22] = { 80.4, 8, }, - [23] = { 82.8, 8, }, - [24] = { 85.2, 8, }, - [25] = { 87.6, 8, }, - [26] = { 90, 9, }, - [27] = { 92.4, 9, }, - [28] = { 94.8, 9, }, - [29] = { 97.2, 9, }, - [30] = { 99.6, 9, }, - }, -} -gems["Vaal Lightning Strike"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - melee = true, - duration = true, - lightning = true, - parts = { - { - name = "Strike", - }, - { - name = "Beams", - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, [35] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 - mod("Damage", "MORE", -50, 0, 0, { type = "SkillPart", skillPart = 2 }), --"vaal_lightning_strike_beam_damage_+%_final" = -50 - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("duration", nil), --"base_skill_effect_duration" - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 5, nil, }, - [2] = { 5.2, 1.2, }, - [3] = { 5.4, 2.4, }, - [4] = { 5.6, 3.6, }, - [5] = { 5.8, 4.8, }, - [6] = { 6, 6, }, - [7] = { 6.2, 7.2, }, - [8] = { 6.4, 8.4, }, - [9] = { 6.6, 9.6, }, - [10] = { 6.8, 10.8, }, - [11] = { 7, 12, }, - [12] = { 7.2, 13.2, }, - [13] = { 7.4, 14.4, }, - [14] = { 7.6, 15.6, }, - [15] = { 7.8, 16.8, }, - [16] = { 8, 18, }, - [17] = { 8.2, 19.2, }, - [18] = { 8.4, 20.4, }, - [19] = { 8.6, 21.6, }, - [20] = { 8.8, 22.8, }, - [21] = { 9, 24, }, - [22] = { 9.2, 25.2, }, - [23] = { 9.4, 26.4, }, - [24] = { 9.6, 27.6, }, - [25] = { 9.8, 28.8, }, - [26] = { 10, 30, }, - [27] = { 10.2, 31.2, }, - [28] = { 10.4, 32.4, }, - [29] = { 10.6, 33.6, }, - [30] = { 10.8, 34.8, }, - }, -} -gems["Mirror Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - minion = true, - duration = true, - bow = true, - unsupported = true, -} -gems["Phase Run"] = { - dexterity = true, - active_skill = true, - spell = true, - duration = true, - movement = true, - color = 2, - baseFlags = { - spell = true, - duration = true, - movement = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [38] = true, }, - baseMods = { - skill("castTime", 0.5), - --"enemy_aggro_radius_+%" = -80 - skill("duration", 1.8), --"base_skill_effect_duration" = 1800 - --"base_secondary_skill_effect_duration" = 200 - mod("Duration", "INC", 100, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"skill_effect_duration_+%_per_frenzy_charge" = 100 - --"phase_through_objects" = ? - }, - qualityMods = { - mod("MovementSpeed", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" - [3] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"phase_run_melee_physical_damage_+%_final" - }, - levels = { - [1] = { 11, 30, 20, }, - [2] = { 11, 30, 21, }, - [3] = { 11, 31, 21, }, - [4] = { 11, 31, 22, }, - [5] = { 11, 32, 22, }, - [6] = { 12, 32, 23, }, - [7] = { 12, 33, 23, }, - [8] = { 12, 33, 24, }, - [9] = { 12, 34, 24, }, - [10] = { 12, 34, 25, }, - [11] = { 12, 35, 25, }, - [12] = { 12, 35, 26, }, - [13] = { 13, 36, 26, }, - [14] = { 13, 36, 27, }, - [15] = { 13, 37, 27, }, - [16] = { 13, 37, 28, }, - [17] = { 13, 38, 28, }, - [18] = { 13, 38, 29, }, - [19] = { 14, 39, 29, }, - [20] = { 14, 39, 30, }, - [21] = { 14, 40, 30, }, - [22] = { 14, 40, 31, }, - [23] = { 14, 41, 31, }, - [24] = { 14, 41, 32, }, - [25] = { 14, 42, 32, }, - [26] = { 14, 42, 33, }, - [27] = { 14, 43, 33, }, - [28] = { 14, 43, 34, }, - [29] = { 14, 44, 34, }, - [30] = { 14, 44, 35, }, - }, -} -gems["Poacher's Mark"] = { - curse = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"monster_slain_flask_charges_granted_+%" = 100 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"chance_to_grant_frenzy_charge_on_death_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("Evasion", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse"}), --"evasion_rating_+%_final_from_poachers_mark" - [5] = mod("SelfLifeOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_hit_by_attacks" - [6] = mod("SelfManaOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_hit_by_attacks" - --[7] = "chance_to_grant_frenzy_charge_on_death_%" - }, - levels = { - [1] = { 24, 6, 0, -30, 5, 5, 21, }, - [2] = { 26, 6.2, 4, -31, 6, 6, 21, }, - [3] = { 27, 6.4, 8, -32, 7, 6, 22, }, - [4] = { 29, 6.6, 12, -33, 8, 6, 22, }, - [5] = { 30, 6.8, 16, -34, 9, 7, 23, }, - [6] = { 32, 7, 20, -35, 10, 7, 23, }, - [7] = { 34, 7.2, 24, -36, 11, 7, 24, }, - [8] = { 35, 7.4, 28, -37, 12, 8, 24, }, - [9] = { 37, 7.6, 32, -38, 13, 8, 25, }, - [10] = { 38, 7.8, 36, -39, 14, 8, 25, }, - [11] = { 39, 8, 40, -40, 15, 9, 26, }, - [12] = { 40, 8.2, 44, -41, 16, 9, 26, }, - [13] = { 42, 8.4, 48, -42, 17, 9, 27, }, - [14] = { 43, 8.6, 52, -43, 18, 10, 27, }, - [15] = { 44, 8.8, 56, -44, 19, 10, 28, }, - [16] = { 45, 9, 60, -45, 20, 10, 28, }, - [17] = { 46, 9.2, 64, -46, 21, 11, 29, }, - [18] = { 47, 9.4, 68, -47, 22, 11, 29, }, - [19] = { 48, 9.6, 72, -48, 23, 11, 30, }, - [20] = { 50, 9.8, 76, -49, 24, 12, 30, }, - [21] = { 51, 10, 80, -50, 25, 12, 31, }, - [22] = { 52, 10.2, 84, -51, 26, 12, 31, }, - [23] = { 53, 10.4, 88, -52, 27, 13, 32, }, - [24] = { 54, 10.6, 92, -53, 28, 13, 32, }, - [25] = { 56, 10.8, 96, -54, 29, 13, 33, }, - [26] = { 57, 11, 100, -55, 30, 14, 33, }, - [27] = { 58, 11.2, 104, -56, 31, 14, 34, }, - [28] = { 59, 11.4, 108, -57, 32, 14, 34, }, - [29] = { 60, 11.6, 112, -58, 33, 15, 35, }, - [30] = { 61, 11.8, 116, -59, 34, 15, 35, }, - }, -} -gems["Projectile Weakness"] = { - curse = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("SelfPierceChance", "BASE", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" = 50 - --"chance_to_be_knocked_back_%" = 25 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("ProjectileDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" - }, - levels = { - [1] = { 24, 9, 0, 25, }, - [2] = { 26, 9.1, 4, 26, }, - [3] = { 27, 9.2, 8, 27, }, - [4] = { 29, 9.3, 12, 28, }, - [5] = { 30, 9.4, 16, 29, }, - [6] = { 32, 9.5, 20, 30, }, - [7] = { 34, 9.6, 24, 31, }, - [8] = { 35, 9.7, 28, 32, }, - [9] = { 37, 9.8, 32, 33, }, - [10] = { 38, 9.9, 36, 34, }, - [11] = { 39, 10, 40, 35, }, - [12] = { 40, 10.1, 44, 36, }, - [13] = { 42, 10.2, 48, 37, }, - [14] = { 43, 10.3, 52, 38, }, - [15] = { 44, 10.4, 56, 39, }, - [16] = { 45, 10.5, 60, 40, }, - [17] = { 46, 10.6, 64, 41, }, - [18] = { 47, 10.7, 68, 42, }, - [19] = { 48, 10.8, 72, 43, }, - [20] = { 50, 10.9, 76, 44, }, - [21] = { 51, 11, 80, 45, }, - [22] = { 52, 11.1, 84, 46, }, - [23] = { 53, 11.2, 88, 47, }, - [24] = { 54, 11.3, 92, 48, }, - [25] = { 56, 11.4, 96, 49, }, - [26] = { 57, 11.5, 100, 50, }, - [27] = { 58, 11.6, 104, 51, }, - [28] = { 59, 11.7, 108, 52, }, - [29] = { 60, 11.8, 112, 53, }, - [30] = { 61, 11.9, 116, 54, }, - }, -} -gems["Puncture"] = { - dexterity = true, - active_skill = true, - attack = true, - duration = true, - melee = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - duration = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, - weaponTypes = { - ["Bow"] = true, - ["Claw"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 600 - --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 3000 - --"bleed_on_hit_base_duration" = 5000 - --"skill_can_fire_arrows" = ? - mod("BleedChance", "BASE", 100), - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { nil, }, - [2] = { 1.2, }, - [3] = { 2.4, }, - [4] = { 3.6, }, - [5] = { 4.8, }, - [6] = { 6, }, - [7] = { 7.2, }, - [8] = { 8.4, }, - [9] = { 9.6, }, - [10] = { 10.8, }, - [11] = { 12, }, - [12] = { 13.2, }, - [13] = { 14.4, }, - [14] = { 15.6, }, - [15] = { 16.8, }, - [16] = { 18, }, - [17] = { 19.2, }, - [18] = { 20.4, }, - [19] = { 21.6, }, - [20] = { 22.8, }, - [21] = { 24, }, - [22] = { 25.2, }, - [23] = { 26.4, }, - [24] = { 27.6, }, - [25] = { 28.8, }, - [26] = { 30, }, - [27] = { 31.2, }, - [28] = { 32.4, }, - [29] = { 33.6, }, - [30] = { 34.8, }, - }, -} -gems["Purity of Ice"] = { - aura = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 2, - baseFlags = { - spell = true, - aura = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_cold_damage_resistance_%" - [2] = mod("ColdResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 22, 0, 0, }, - [2] = { 23, 0, 3, }, - [3] = { 24, 0, 6, }, - [4] = { 25, 0, 9, }, - [5] = { 26, 1, 12, }, - [6] = { 27, 1, 15, }, - [7] = { 28, 1, 18, }, - [8] = { 29, 1, 21, }, - [9] = { 30, 1, 23, }, - [10] = { 31, 1, 25, }, - [11] = { 32, 2, 27, }, - [12] = { 33, 2, 29, }, - [13] = { 34, 2, 31, }, - [14] = { 35, 2, 33, }, - [15] = { 36, 2, 35, }, - [16] = { 37, 2, 36, }, - [17] = { 38, 3, 37, }, - [18] = { 39, 3, 38, }, - [19] = { 40, 3, 39, }, - [20] = { 41, 4, 40, }, - [21] = { 42, 4, 41, }, - [22] = { 43, 4, 42, }, - [23] = { 44, 5, 43, }, - [24] = { 45, 5, 44, }, - [25] = { 46, 5, 45, }, - [26] = { 47, 5, 46, }, - [27] = { 48, 5, 47, }, - [28] = { 49, 5, 48, }, - [29] = { 50, 5, 49, }, - [30] = { 51, 5, 50, }, - }, -} -gems["Rain of Arrows"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - }, - skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_is_projectile" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[3] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 7, 10, 0, }, - [2] = { 7, 11, 0, }, - [3] = { 7, 12, 0, }, - [4] = { 8, 13, 0, }, - [5] = { 8, 14, 1, }, - [6] = { 8, 15, 1, }, - [7] = { 8, 16, 1, }, - [8] = { 8, 17, 1, }, - [9] = { 9, 18, 1, }, - [10] = { 9, 19, 2, }, - [11] = { 9, 20, 2, }, - [12] = { 9, 21, 2, }, - [13] = { 9, 22, 2, }, - [14] = { 10, 23, 2, }, - [15] = { 10, 24, 3, }, - [16] = { 10, 25, 3, }, - [17] = { 10, 26, 3, }, - [18] = { 10, 27, 3, }, - [19] = { 11, 28, 3, }, - [20] = { 11, 29, 4, }, - [21] = { 11, 30, 4, }, - [22] = { 11, 31, 4, }, - [23] = { 11, 32, 4, }, - [24] = { 11, 33, 4, }, - [25] = { 11, 34, 5, }, - [26] = { 12, 35, 5, }, - [27] = { 12, 36, 5, }, - [28] = { 12, 37, 5, }, - [29] = { 12, 38, 5, }, - [30] = { 12, 39, 6, }, - }, -} -gems["Vaal Rain of Arrows"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - duration = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [12] = true, [43] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_is_projectile" = ? - --"is_area_damage" = ? - --"rain_of_arrows_pin" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 40, 3.4, 0, }, - [2] = { 41.5, 3.45, 1, }, - [3] = { 43, 3.5, 2, }, - [4] = { 44.5, 3.55, 3, }, - [5] = { 46, 3.6, 4, }, - [6] = { 47.5, 3.65, 5, }, - [7] = { 49, 3.7, 6, }, - [8] = { 50.5, 3.75, 7, }, - [9] = { 52, 3.8, 8, }, - [10] = { 53.5, 3.85, 9, }, - [11] = { 55, 3.9, 10, }, - [12] = { 56.5, 3.95, 11, }, - [13] = { 58, 4, 12, }, - [14] = { 59.5, 4.05, 13, }, - [15] = { 61, 4.1, 14, }, - [16] = { 62.5, 4.15, 15, }, - [17] = { 64, 4.2, 16, }, - [18] = { 65.5, 4.25, 17, }, - [19] = { 67, 4.3, 18, }, - [20] = { 68.5, 4.35, 19, }, - [21] = { 70, 4.4, 20, }, - [22] = { 71.5, 4.45, 21, }, - [23] = { 73, 4.5, 22, }, - [24] = { 74.5, 4.55, 23, }, - [25] = { 76, 4.6, 24, }, - [26] = { 77.5, 4.65, 25, }, - [27] = { 79, 4.7, 26, }, - [28] = { 80.5, 4.75, 27, }, - [29] = { 82, 4.8, 28, }, - [30] = { 83.5, 4.85, 29, }, - }, -} -gems["Reave"] = { - dexterity = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - --"reave_area_of_effect_+%_final_per_stage" = 50 - --"is_area_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - --[1] = "active_skill_base_radius_+" - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 0, nil, }, - [2] = { 0, 2, }, - [3] = { 0, 4, }, - [4] = { 0, 6, }, - [5] = { 1, 8, }, - [6] = { 1, 10, }, - [7] = { 1, 12, }, - [8] = { 1, 14, }, - [9] = { 1, 16, }, - [10] = { 2, 18, }, - [11] = { 2, 20, }, - [12] = { 2, 22, }, - [13] = { 2, 24, }, - [14] = { 2, 26, }, - [15] = { 3, 28, }, - [16] = { 3, 30, }, - [17] = { 3, 32, }, - [18] = { 3, 34, }, - [19] = { 3, 36, }, - [20] = { 4, 38, }, - [21] = { 4, 40, }, - [22] = { 4, 42, }, - [23] = { 4, 44, }, - [24] = { 4, 46, }, - [25] = { 5, 48, }, - [26] = { 5, 50, }, - [27] = { 5, 52, }, - [28] = { 5, 54, }, - [29] = { 5, 56, }, - [30] = { 6, 58, }, - }, -} -gems["Vaal Reave"] = { - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - area = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - --"reave_area_of_effect_+%_final_per_stage" = 50 - --"reave_rotation_on_repeat" = 135 - --"reave_additional_max_stacks" = 4 - --"base_attack_repeat_count" = 7 - mod("Speed", "MORE", 150, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 150 - --"reave_additional_starting_stacks" = 4 - --"is_area_damage" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - --[1] = "active_skill_base_radius_+" - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 0, nil, }, - [2] = { 0, 1.2, }, - [3] = { 0, 2.4, }, - [4] = { 0, 3.6, }, - [5] = { 1, 4.8, }, - [6] = { 1, 6, }, - [7] = { 1, 7.2, }, - [8] = { 1, 8.4, }, - [9] = { 1, 9.6, }, - [10] = { 2, 10.8, }, - [11] = { 2, 12, }, - [12] = { 2, 13.2, }, - [13] = { 2, 14.4, }, - [14] = { 2, 15.6, }, - [15] = { 3, 16.8, }, - [16] = { 3, 18, }, - [17] = { 3, 19.2, }, - [18] = { 3, 20.4, }, - [19] = { 3, 21.6, }, - [20] = { 4, 22.8, }, - [21] = { 4, 24, }, - [22] = { 4, 25.2, }, - [23] = { 4, 26.4, }, - [24] = { 4, 27.6, }, - [25] = { 5, 28.8, }, - [26] = { 5, 30, }, - [27] = { 5, 31.2, }, - [28] = { 5, 32.4, }, - [29] = { 5, 33.6, }, - [30] = { 6, 34.8, }, - }, -} -gems["Riposte"] = { - trigger = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [24] = true, [25] = true, [6] = true, [47] = true, [57] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"melee_counterattack_trigger_on_block_%" = 100 - --"attack_unusable_if_triggerable" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { nil, }, - [2] = { 2, }, - [3] = { 4, }, - [4] = { 6, }, - [5] = { 8, }, - [6] = { 10, }, - [7] = { 12, }, - [8] = { 14, }, - [9] = { 16, }, - [10] = { 18, }, - [11] = { 20, }, - [12] = { 22, }, - [13] = { 24, }, - [14] = { 26, }, - [15] = { 28, }, - [16] = { 30, }, - [17] = { 32, }, - [18] = { 34, }, - [19] = { 36, }, - [20] = { 38, }, - [21] = { 40, }, - [22] = { 42, }, - [23] = { 44, }, - [24] = { 46, }, - [25] = { 48, }, - [26] = { 50, }, - [27] = { 52, }, - [28] = { 54, }, - [29] = { 56, }, - [30] = { 58, }, - }, -} -gems["Shrapnel Shot"] = { - lightning = true, - dexterity = true, - active_skill = true, - attack = true, - area = true, - bow = true, - parts = { - { - name = "Arrow", - area = false, - }, - { - name = "Cone", - area = true, - }, - }, - color = 2, - baseFlags = { - attack = true, - projectile = true, - area = true, - lightning = true, - }, - skillTypes = { [1] = true, [3] = true, [11] = true, [22] = true, [17] = true, [19] = true, [35] = true, [48] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_arrow_pierce_%" = 100 - mod("Damage", "MORE", 0, ModFlag.Area), --"active_skill_area_damage_+%_final" = 0 - mod("PhysicalDamageConvertToLightning", "BASE", 40, 0, 0, nil), --"base_physical_damage_%_to_convert_to_lightning" = 40 - --"base_is_projectile" = ? - --"skill_can_fire_arrows" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[3] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, -20, 0, }, - [2] = { 6, -19, 0, }, - [3] = { 6, -18, 0, }, - [4] = { 7, -17, 1, }, - [5] = { 7, -16, 1, }, - [6] = { 7, -15, 1, }, - [7] = { 7, -14, 1, }, - [8] = { 8, -13, 2, }, - [9] = { 8, -12, 2, }, - [10] = { 8, -11, 2, }, - [11] = { 8, -10, 2, }, - [12] = { 8, -9, 3, }, - [13] = { 9, -8, 3, }, - [14] = { 9, -7, 3, }, - [15] = { 9, -6, 3, }, - [16] = { 9, -5, 4, }, - [17] = { 9, -4, 4, }, - [18] = { 10, -3, 4, }, - [19] = { 10, -2, 4, }, - [20] = { 10, -1, 5, }, - [21] = { 10, nil, 5, }, - [22] = { 10, 1, 5, }, - [23] = { 11, 2, 5, }, - [24] = { 11, 3, 6, }, - [25] = { 11, 4, 6, }, - [26] = { 11, 5, 6, }, - [27] = { 11, 6, 6, }, - [28] = { 12, 7, 7, }, - [29] = { 12, 8, 7, }, - [30] = { 12, 9, 7, }, - }, -} -gems["Siege Ballista"] = { - totem = true, - dexterity = true, - active_skill = true, - attack = true, - duration = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - totem = true, - duration = true, - }, - skillTypes = { [1] = true, [3] = true, [48] = true, [17] = true, [19] = true, [30] = true, [12] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - skillTotemId = 12, - baseMods = { - skill("castTime", 1), - mod("Speed", "MORE", -50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -50 - --"base_arrow_pierce_%" = 100 - --"base_totem_range" = 80 - --"base_totem_duration" = 8000 - --"base_is_projectile" = ? - --"base_skill_is_totemified" = ? - --"is_totem" = ? - --"skill_can_fire_arrows" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("TotemPlacementSpeed", "INC", 1), --"summon_totem_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" - }, - levels = { - [1] = { 8, 40, 4, }, - [2] = { 8, 41.6, 6, }, - [3] = { 8, 43.2, 9, }, - [4] = { 9, 44.8, 12, }, - [5] = { 9, 46.4, 16, }, - [6] = { 9, 48, 20, }, - [7] = { 9, 49.6, 24, }, - [8] = { 9, 51.2, 28, }, - [9] = { 9, 52.8, 32, }, - [10] = { 10, 54.4, 36, }, - [11] = { 10, 56, 40, }, - [12] = { 10, 57.6, 44, }, - [13] = { 10, 59.2, 48, }, - [14] = { 10, 60.8, 52, }, - [15] = { 11, 62.4, 55, }, - [16] = { 11, 64, 58, }, - [17] = { 12, 65.6, 61, }, - [18] = { 12, 67.2, 64, }, - [19] = { 12, 68.8, 67, }, - [20] = { 13, 70.4, 70, }, - [21] = { 13, 72, 72, }, - [22] = { 13, 73.6, 74, }, - [23] = { 14, 75.2, 76, }, - [24] = { 14, 76.8, 78, }, - [25] = { 14, 78.4, 80, }, - [26] = { 14, 80, 82, }, - [27] = { 14, 81.6, 84, }, - [28] = { 14, 83.2, 86, }, - [29] = { 15, 84.8, 88, }, - [30] = { 15, 86.4, 90, }, - }, -} -gems["Smoke Mine"] = { - mine = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - movement = true, - color = 2, - baseFlags = { - spell = true, - mine = true, - area = true, - duration = true, - movement = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [38] = true, [41] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_mine_duration" = 16000 - mod("MovementSpeed", "INC", 30, 0, 0, nil), --"base_movement_velocity_+%" = 30 - --"is_remote_mine" = ? - --"base_skill_is_mined" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 6, 4, }, - [2] = { 6, 4.1, }, - [3] = { 7, 4.2, }, - [4] = { 7, 4.3, }, - [5] = { 8, 4.4, }, - [6] = { 8, 4.5, }, - [7] = { 9, 4.6, }, - [8] = { 9, 4.7, }, - [9] = { 9, 4.8, }, - [10] = { 10, 4.9, }, - [11] = { 10, 5, }, - [12] = { 10, 5.1, }, - [13] = { 10, 5.2, }, - [14] = { 11, 5.3, }, - [15] = { 11, 5.4, }, - [16] = { 11, 5.5, }, - [17] = { 12, 5.6, }, - [18] = { 12, 5.7, }, - [19] = { 12, 5.8, }, - [20] = { 13, 5.9, }, - [21] = { 13, 6, }, - [22] = { 13, 6.1, }, - [23] = { 14, 6.2, }, - [24] = { 14, 6.3, }, - [25] = { 14, 6.4, }, - [26] = { 14, 6.5, }, - [27] = { 14, 6.6, }, - [28] = { 14, 6.7, }, - [29] = { 15, 6.8, }, - [30] = { 15, 6.9, }, - }, -} -gems["Spectral Throw"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 7, -46, }, - [2] = { 7, -44, }, - [3] = { 7, -42.1, }, - [4] = { 7, -40.2, }, - [5] = { 7, -38.3, }, - [6] = { 7, -36.4, }, - [7] = { 7, -34.4, }, - [8] = { 7, -32.5, }, - [9] = { 7, -30.6, }, - [10] = { 7, -28.7, }, - [11] = { 8, -26.8, }, - [12] = { 8, -24.8, }, - [13] = { 8, -22.9, }, - [14] = { 8, -21, }, - [15] = { 8, -19.1, }, - [16] = { 9, -17.2, }, - [17] = { 9, -15.2, }, - [18] = { 9, -13.3, }, - [19] = { 9, -11.4, }, - [20] = { 9, -9.5, }, - [21] = { 10, -7.6, }, - [22] = { 10, -5.6, }, - [23] = { 10, -3.7, }, - [24] = { 10, -1.8, }, - [25] = { 10, nil, }, - [26] = { 10, 2, }, - [27] = { 10, 3.9, }, - [28] = { 10, 5.8, }, - [29] = { 10, 7.7, }, - [30] = { 10, 9.6, }, - }, -} -gems["Vaal Spectral Throw"] = { - projectile = true, - dexterity = true, - active_skill = true, - vaal = true, - attack = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [43] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"projectiles_nova" = ? - --"base_is_projectile" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -30, }, - [2] = { -28.2, }, - [3] = { -26.4, }, - [4] = { -24.6, }, - [5] = { -22.8, }, - [6] = { -21, }, - [7] = { -19.2, }, - [8] = { -17.4, }, - [9] = { -15.6, }, - [10] = { -13.8, }, - [11] = { -12, }, - [12] = { -10.2, }, - [13] = { -8.4, }, - [14] = { -6.6, }, - [15] = { -4.8, }, - [16] = { -3, }, - [17] = { -1.2, }, - [18] = { 0.6, }, - [19] = { 2.4, }, - [20] = { 4.2, }, - [21] = { 6, }, - [22] = { 7.8, }, - [23] = { 9.6, }, - [24] = { 11.4, }, - [25] = { 13.2, }, - [26] = { 15, }, - [27] = { 16.8, }, - [28] = { 18.6, }, - [29] = { 20.4, }, - [30] = { 22.2, }, - }, -} -gems["Split Arrow"] = { - dexterity = true, - active_skill = true, - attack = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = mod("ProjectileCount", "BASE", nil), --"base_number_of_additional_arrows" - }, - levels = { - [1] = { 6, -10, 4, }, - [2] = { 6, -9, 4, }, - [3] = { 6, -8, 4, }, - [4] = { 7, -7, 4, }, - [5] = { 7, -6, 4, }, - [6] = { 7, -5, 4, }, - [7] = { 7, -4, 4, }, - [8] = { 8, -3, 5, }, - [9] = { 8, -2, 5, }, - [10] = { 8, -1, 5, }, - [11] = { 8, nil, 5, }, - [12] = { 8, 1, 5, }, - [13] = { 9, 2, 5, }, - [14] = { 9, 3, 5, }, - [15] = { 9, 4, 6, }, - [16] = { 9, 5, 6, }, - [17] = { 9, 6, 6, }, - [18] = { 10, 7, 6, }, - [19] = { 10, 8, 6, }, - [20] = { 10, 9, 6, }, - [21] = { 10, 10, 6, }, - [22] = { 10, 11, 7, }, - [23] = { 11, 12, 7, }, - [24] = { 11, 13, 7, }, - [25] = { 11, 14, 7, }, - [26] = { 11, 15, 7, }, - [27] = { 11, 16, 7, }, - [28] = { 12, 17, 7, }, - [29] = { 12, 18, 8, }, - [30] = { 12, 19, 8, }, - }, -} -gems["Summon Ice Golem"] = { - dexterity = true, - active_skill = true, - cold = true, - minion = true, - spell = true, - golem = true, - color = 2, - baseFlags = { - spell = true, - minion = true, - golem = true, - cold = true, - }, - skillTypes = { [36] = true, [34] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [60] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 6 - mod("Misc", "LIST", { type = "Condition", var = "HaveColdGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [3] = mod("CritChance", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_critical_strike_chance_+%" - [4] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_accuracy_+%" - [5] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - --[6] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 20, 20, 30, 34, }, - [2] = { 32, 1, 21, 21, 32, 36, }, - [3] = { 34, 1, 21, 21, 34, 38, }, - [4] = { 36, 2, 22, 22, 36, 40, }, - [5] = { 38, 2, 22, 22, 38, 42, }, - [6] = { 40, 3, 23, 23, 40, 44, }, - [7] = { 42, 3, 23, 23, 42, 46, }, - [8] = { 44, 4, 24, 24, 44, 48, }, - [9] = { 44, 4, 24, 24, 46, 50, }, - [10] = { 46, 5, 25, 25, 48, 52, }, - [11] = { 48, 5, 25, 25, 50, 54, }, - [12] = { 48, 6, 26, 26, 52, 56, }, - [13] = { 50, 6, 26, 26, 54, 58, }, - [14] = { 50, 7, 27, 27, 56, 60, }, - [15] = { 52, 7, 27, 27, 58, 62, }, - [16] = { 52, 8, 28, 28, 60, 64, }, - [17] = { 52, 8, 28, 28, 62, 66, }, - [18] = { 52, 9, 29, 29, 64, 68, }, - [19] = { 54, 9, 29, 29, 66, 69, }, - [20] = { 54, 10, 30, 30, 68, 70, }, - [21] = { 56, 10, 30, 30, 70, 72, }, - [22] = { 56, 11, 31, 31, 72, 74, }, - [23] = { 58, 11, 31, 31, 74, 76, }, - [24] = { 58, 12, 32, 32, 76, 78, }, - [25] = { 60, 12, 32, 32, 78, 80, }, - [26] = { 60, 13, 33, 33, 80, 82, }, - [27] = { 60, 13, 33, 33, 82, 84, }, - [28] = { 60, 14, 34, 34, 84, 86, }, - [29] = { 62, 14, 34, 34, 86, 88, }, - [30] = { 62, 15, 35, 35, 88, 90, }, - }, -} -gems["Temporal Chains"] = { - curse = true, - dexterity = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 2, - baseFlags = { - spell = true, - curse = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("BuffExpireFaster", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"buff_time_passed_-%" = 40 - --"curse_effect_+%_vs_players" = -40 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"temporal_chains_action_speed_+%_final" = -0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - --[4] = "temporal_chains_action_speed_+%_final" - }, - levels = { - [1] = { 24, 5, 0, -20, }, - [2] = { 26, 5.05, 4, -20, }, - [3] = { 27, 5.1, 8, -21, }, - [4] = { 29, 5.15, 12, -21, }, - [5] = { 30, 5.2, 16, -22, }, - [6] = { 32, 5.25, 20, -22, }, - [7] = { 34, 5.3, 24, -23, }, - [8] = { 35, 5.35, 28, -23, }, - [9] = { 37, 5.4, 32, -24, }, - [10] = { 38, 5.45, 36, -24, }, - [11] = { 39, 5.5, 40, -25, }, - [12] = { 40, 5.55, 44, -25, }, - [13] = { 42, 5.6, 48, -26, }, - [14] = { 43, 5.65, 52, -26, }, - [15] = { 44, 5.7, 56, -27, }, - [16] = { 45, 5.75, 60, -27, }, - [17] = { 46, 5.8, 64, -28, }, - [18] = { 47, 5.85, 68, -28, }, - [19] = { 48, 5.9, 72, -29, }, - [20] = { 50, 5.95, 76, -29, }, - [21] = { 51, 6, 80, -30, }, - [22] = { 52, 6.05, 84, -30, }, - [23] = { 53, 6.1, 88, -31, }, - [24] = { 54, 6.15, 92, -31, }, - [25] = { 56, 6.2, 96, -32, }, - [26] = { 57, 6.25, 100, -32, }, - [27] = { 58, 6.3, 104, -33, }, - [28] = { 59, 6.35, 108, -33, }, - [29] = { 60, 6.4, 112, -34, }, - [30] = { 61, 6.45, 116, -34, }, - }, -} -gems["Tornado Shot"] = { - dexterity = true, - active_skill = true, - attack = true, - bow = true, - color = 2, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [3] = true, [17] = true, [19] = true, [22] = true, [48] = true, }, - weaponTypes = { - ["Bow"] = true, - }, - baseMods = { - skill("castTime", 1), - --"tornado_shot_num_of_secondary_projectiles" = 3 - --"base_is_projectile" = ? - --"skill_can_fire_arrows" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 8, -10, }, - [2] = { 8, -9, }, - [3] = { 8, -8, }, - [4] = { 8, -7, }, - [5] = { 9, -6, }, - [6] = { 9, -5, }, - [7] = { 9, -4, }, - [8] = { 9, -3, }, - [9] = { 9, -2, }, - [10] = { 9, -1, }, - [11] = { 9, nil, }, - [12] = { 10, 1, }, - [13] = { 10, 2, }, - [14] = { 10, 3, }, - [15] = { 10, 4, }, - [16] = { 10, 5, }, - [17] = { 10, 6, }, - [18] = { 10, 7, }, - [19] = { 10, 8, }, - [20] = { 10, 9, }, - [21] = { 10, 10, }, - [22] = { 10, 11, }, - [23] = { 11, 12, }, - [24] = { 11, 13, }, - [25] = { 11, 14, }, - [26] = { 11, 15, }, - [27] = { 11, 16, }, - [28] = { 12, 17, }, - [29] = { 12, 18, }, - [30] = { 12, 19, }, - }, -} -gems["Viper Strike"] = { - dexterity = true, - active_skill = true, - attack = true, - duration = true, - melee = true, - chaos = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - duration = true, - chaos = true, - }, - skillTypes = { [1] = true, [6] = true, [12] = true, [28] = true, [24] = true, [25] = true, [40] = true, [50] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Claw"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - mod("PhysicalDamageConvertToChaos", "BASE", 25, 0, 0, nil), --"base_physical_damage_%_to_convert_to_chaos" = 25 - mod("PoisonChance", "BASE", 100), --"base_chance_to_poison_on_hit_%" = 100 - skill("duration", 8), --"base_skill_effect_duration" = 8000 - skill("poisonDurationIsSkillDuration", true), --"poison_duration_is_skill_duration" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, }, - [2] = { 32.6, }, - [3] = { 35.2, }, - [4] = { 37.8, }, - [5] = { 40.4, }, - [6] = { 43, }, - [7] = { 45.6, }, - [8] = { 48.2, }, - [9] = { 50.8, }, - [10] = { 53.4, }, - [11] = { 56, }, - [12] = { 58.6, }, - [13] = { 61.2, }, - [14] = { 63.8, }, - [15] = { 66.4, }, - [16] = { 69, }, - [17] = { 71.6, }, - [18] = { 74.2, }, - [19] = { 76.8, }, - [20] = { 79.4, }, - [21] = { 82, }, - [22] = { 84.6, }, - [23] = { 87.2, }, - [24] = { 89.8, }, - [25] = { 92.4, }, - [26] = { 95, }, - [27] = { 97.6, }, - [28] = { 100.2, }, - [29] = { 102.8, }, - [30] = { 105.4, }, - }, -} -gems["Whirling Blades"] = { - dexterity = true, - active_skill = true, - attack = true, - movement = true, - melee = true, - color = 2, - baseFlags = { - attack = true, - melee = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, - weaponTypes = { - ["Claw"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 2.6), - skill("manaCost", 15), - --"ignores_proximity_shield" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -20, }, - [2] = { -19, }, - [3] = { -18, }, - [4] = { -17, }, - [5] = { -16, }, - [6] = { -15, }, - [7] = { -14, }, - [8] = { -13, }, - [9] = { -12, }, - [10] = { -11, }, - [11] = { -10, }, - [12] = { -9, }, - [13] = { -8, }, - [14] = { -7, }, - [15] = { -6, }, - [16] = { -5, }, - [17] = { -4, }, - [18] = { -3, }, - [19] = { -2, }, - [20] = { -1, }, - [21] = { nil, }, - [22] = { 1, }, - [23] = { 2, }, - [24] = { 3, }, - [25] = { 4, }, - [26] = { 5, }, - [27] = { 6, }, - [28] = { 7, }, - [29] = { 8, }, - [30] = { 9, }, - }, -} -gems["Wild Strike"] = { - projectile = true, - dexterity = true, - active_skill = true, - attack = true, - melee = true, - lightning = true, - cold = true, - fire = true, - area = true, - chaining = true, - parts = { - { - name = "Fire hit", - melee = true, - projectile = false, - chaining = false, - area = false, - }, - { - name = "Fire explosion", - melee = false, - projectile = false, - chaining = false, - area = true, - }, - { - name = "Lightning hit", - melee = true, - projectile = false, - chaining = false, - area = false, - }, - { - name = "Lightning bolt", - melee = false, - projectile = false, - chaining = true, - area = false, - }, - { - name = "Cold hit", - melee = true, - projectile = false, - chaining = false, - area = false, - }, - { - name = "Icy wave", - melee = false, - projectile = true, - chaining = false, - area = false, - }, - }, - color = 2, - baseFlags = { - attack = true, - melee = true, - projectile = true, - chaining = true, - area = true, - lightning = true, - cold = true, - fire = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, [34] = true, [33] = true, [3] = true, [11] = true, [23] = true, [48] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - --"elemental_strike_physical_damage_%_to_convert" = 100 - --"fixed_projectile_spread" = 70 - mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 - --"show_number_of_projectiles" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), - mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 2 }), - mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 3 }), - mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 4 }), - mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 5 }), - mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 6 }), - }, - qualityMods = { - mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 30, 4, 0, }, - [2] = { 32.4, 4, 1, }, - [3] = { 34.8, 4, 2, }, - [4] = { 37.2, 4, 3, }, - [5] = { 39.6, 4, 4, }, - [6] = { 42, 4, 5, }, - [7] = { 44.4, 5, 6, }, - [8] = { 46.8, 5, 7, }, - [9] = { 49.2, 5, 8, }, - [10] = { 51.6, 5, 9, }, - [11] = { 54, 5, 10, }, - [12] = { 56.4, 5, 11, }, - [13] = { 58.8, 6, 12, }, - [14] = { 61.2, 6, 13, }, - [15] = { 63.6, 6, 14, }, - [16] = { 66, 6, 15, }, - [17] = { 68.4, 6, 16, }, - [18] = { 70.8, 6, 17, }, - [19] = { 73.2, 7, 18, }, - [20] = { 75.6, 7, 19, }, - [21] = { 78, 7, 20, }, - [22] = { 80.4, 7, 21, }, - [23] = { 82.8, 7, 22, }, - [24] = { 85.2, 7, 23, }, - [25] = { 87.6, 8, 24, }, - [26] = { 90, 8, 25, }, - [27] = { 92.4, 8, 26, }, - [28] = { 94.8, 8, 27, }, - [29] = { 97.2, 8, 28, }, - [30] = { 99.6, 8, 29, }, - }, -} diff --git a/Export/Gems/act_int.lua b/Export/Gems/act_int.lua deleted file mode 100644 index 3915c762..00000000 --- a/Export/Gems/act_int.lua +++ /dev/null @@ -1,4772 +0,0 @@ --- Path of Building --- --- Active Intelligence gems --- Skill gem data (c) Grinding Gear Games --- -local gems, mod, flag, skill = ... - -gems["Arc"] = { - intelligence = true, - active_skill = true, - spell = true, - chaining = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - chaining = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.7), - skill("critChance", 5), - mod("EnemyShockChance", "BASE", 10), --"base_chance_to_shock_%" = 10 - }, - qualityMods = { - mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [4] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" - }, - levels = { - [1] = { 9, 2, 35, 2, }, - [2] = { 10, 2, 44, 2, }, - [3] = { 11, 3, 58, 2, }, - [4] = { 12, 4, 76, 3, }, - [5] = { 13, 5, 97, 3, }, - [6] = { 14, 6, 123, 3, }, - [7] = { 16, 8, 154, 3, }, - [8] = { 16, 10, 182, 4, }, - [9] = { 17, 11, 214, 4, }, - [10] = { 18, 13, 250, 4, }, - [11] = { 19, 15, 292, 4, }, - [12] = { 20, 18, 340, 5, }, - [13] = { 21, 21, 395, 5, }, - [14] = { 22, 24, 458, 5, }, - [15] = { 23, 28, 529, 5, }, - [16] = { 24, 32, 610, 6, }, - [17] = { 24, 35, 671, 6, }, - [18] = { 25, 39, 736, 6, }, - [19] = { 25, 43, 808, 6, }, - [20] = { 26, 47, 886, 7, }, - [21] = { 26, 51, 971, 7, }, - [22] = { 26, 56, 1064, 7, }, - [23] = { 27, 61, 1164, 7, }, - [24] = { 28, 67, 1274, 8, }, - [25] = { 29, 73, 1393, 8, }, - [26] = { 30, 80, 1523, 8, }, - [27] = { 30, 88, 1663, 8, }, - [28] = { 30, 96, 1816, 9, }, - [29] = { 31, 104, 1983, 9, }, - [30] = { 32, 114, 2163, 9, }, - }, -} -gems["Vaal Arc"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - chaining = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.8), - skill("critChance", 5), - mod("EnemyShockChance", "BASE", 100), --"base_chance_to_shock_%" = 100 - mod("ChainCount", "BASE", 40), --"number_of_additional_projectiles_in_chain" = 40 - }, - qualityMods = { - mod("EnemyShockDuration", "INC", 1.5), --"shock_duration_+%" = 1.5 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 2, 35, }, - [2] = { 2, 44, }, - [3] = { 3, 59, }, - [4] = { 4, 77, }, - [5] = { 5, 99, }, - [6] = { 7, 125, }, - [7] = { 8, 158, }, - [8] = { 10, 187, }, - [9] = { 12, 220, }, - [10] = { 14, 259, }, - [11] = { 16, 303, }, - [12] = { 19, 353, }, - [13] = { 22, 411, }, - [14] = { 25, 478, }, - [15] = { 29, 554, }, - [16] = { 34, 641, }, - [17] = { 37, 706, }, - [18] = { 41, 777, }, - [19] = { 45, 854, }, - [20] = { 49, 938, }, - [21] = { 54, 1030, }, - [22] = { 60, 1131, }, - [23] = { 65, 1240, }, - [24] = { 72, 1359, }, - [25] = { 78, 1489, }, - [26] = { 86, 1631, }, - [27] = { 94, 1785, }, - [28] = { 103, 1953, }, - [29] = { 112, 2136, }, - [30] = { 123, 2335, }, - }, -} -gems["Arctic Breath"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - projectile = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [12] = true, [11] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("critChance", 5), - --"base_is_projectile" = 1 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 11, 52, 78, 0.88, }, - [2] = { 11, 64, 96, 0.94, }, - [3] = { 12, 77, 116, 0.99, }, - [4] = { 13, 93, 140, 1.05, }, - [5] = { 14, 112, 168, 1.1, }, - [6] = { 14, 126, 190, 1.16, }, - [7] = { 15, 143, 214, 1.21, }, - [8] = { 15, 160, 240, 1.27, }, - [9] = { 16, 180, 270, 1.32, }, - [10] = { 16, 202, 303, 1.35, }, - [11] = { 16, 227, 340, 1.38, }, - [12] = { 17, 254, 381, 1.4, }, - [13] = { 17, 284, 426, 1.43, }, - [14] = { 18, 317, 476, 1.46, }, - [15] = { 18, 354, 532, 1.49, }, - [16] = { 19, 395, 593, 1.51, }, - [17] = { 19, 441, 661, 1.54, }, - [18] = { 20, 491, 737, 1.57, }, - [19] = { 20, 547, 820, 1.6, }, - [20] = { 21, 608, 913, 1.65, }, - [21] = { 21, 677, 1015, 1.71, }, - [22] = { 22, 752, 1128, 1.76, }, - [23] = { 22, 835, 1252, 1.82, }, - [24] = { 23, 927, 1390, 1.87, }, - [25] = { 23, 1028, 1542, 1.93, }, - [26] = { 24, 1140, 1710, 1.98, }, - [27] = { 24, 1264, 1896, 2.04, }, - [28] = { 25, 1400, 2100, 2.09, }, - [29] = { 25, 1550, 2326, 2.15, }, - [30] = { 26, 1716, 2574, 2.2, }, - }, -} -gems["Assassin's Mark"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("SelfCritMultiplier", "INC", 20, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_critical_strike_multiplier_-%" = -20 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"chance_to_grant_power_charge_on_death_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("SelfExtraCritChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"additional_chance_to_take_critical_strike_%" - [5] = mod("SelfLifeOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_killed" - [6] = mod("SelfManaOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_killed" - --[7] = "chance_to_grant_power_charge_on_death_%" - }, - levels = { - [1] = { 24, 6, 0, 5, 16, 16, 21, }, - [2] = { 26, 6.2, 4, 5, 16, 16, 21, }, - [3] = { 27, 6.4, 8, 5, 17, 17, 22, }, - [4] = { 29, 6.6, 12, 6, 17, 17, 22, }, - [5] = { 30, 6.8, 16, 6, 18, 18, 23, }, - [6] = { 32, 7, 20, 6, 18, 18, 23, }, - [7] = { 34, 7.2, 24, 7, 19, 19, 24, }, - [8] = { 35, 7.4, 28, 7, 19, 19, 24, }, - [9] = { 37, 7.6, 32, 7, 20, 20, 25, }, - [10] = { 38, 7.8, 36, 8, 20, 20, 25, }, - [11] = { 39, 8, 40, 8, 21, 21, 26, }, - [12] = { 40, 8.2, 44, 8, 21, 21, 26, }, - [13] = { 42, 8.4, 48, 8, 22, 22, 27, }, - [14] = { 43, 8.6, 52, 8, 22, 22, 27, }, - [15] = { 44, 8.8, 56, 9, 23, 23, 28, }, - [16] = { 45, 9, 60, 9, 23, 23, 28, }, - [17] = { 46, 9.2, 64, 9, 24, 24, 29, }, - [18] = { 47, 9.4, 68, 9, 24, 24, 29, }, - [19] = { 48, 9.6, 72, 9, 25, 25, 30, }, - [20] = { 50, 9.8, 76, 9, 25, 25, 30, }, - [21] = { 51, 10, 80, 10, 26, 26, 31, }, - [22] = { 52, 10.2, 84, 10, 26, 26, 31, }, - [23] = { 53, 10.4, 88, 10, 27, 27, 32, }, - [24] = { 54, 10.6, 92, 10, 27, 27, 32, }, - [25] = { 56, 10.8, 96, 10, 28, 28, 33, }, - [26] = { 57, 11, 100, 11, 28, 28, 33, }, - [27] = { 58, 11.2, 104, 11, 29, 29, 34, }, - [28] = { 59, 11.4, 108, 11, 29, 29, 34, }, - [29] = { 60, 11.6, 112, 11, 30, 30, 35, }, - [30] = { 61, 11.8, 116, 11, 30, 30, 35, }, - }, -} -gems["Ball Lightning"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [11] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.2), - skill("critChance", 5), - --"active_skill_index" = 0 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 14, 2, 32, }, - [2] = { 15, 2, 38, }, - [3] = { 16, 2, 45, }, - [4] = { 17, 3, 53, }, - [5] = { 18, 3, 62, }, - [6] = { 19, 4, 69, }, - [7] = { 20, 4, 76, }, - [8] = { 21, 4, 84, }, - [9] = { 22, 5, 93, }, - [10] = { 23, 5, 103, }, - [11] = { 24, 6, 113, }, - [12] = { 25, 7, 124, }, - [13] = { 25, 7, 137, }, - [14] = { 25, 8, 150, }, - [15] = { 26, 9, 165, }, - [16] = { 26, 10, 181, }, - [17] = { 26, 10, 199, }, - [18] = { 26, 11, 217, }, - [19] = { 27, 13, 238, }, - [20] = { 27, 14, 260, }, - [21] = { 28, 15, 285, }, - [22] = { 28, 16, 311, }, - [23] = { 29, 18, 340, }, - [24] = { 29, 20, 371, }, - [25] = { 30, 21, 404, }, - [26] = { 30, 23, 441, }, - [27] = { 30, 25, 480, }, - [28] = { 30, 28, 523, }, - [29] = { 31, 30, 570, }, - [30] = { 31, 33, 620, }, - }, -} -gems["Blight"] = { - intelligence = true, - active_skill = true, - spell = true, - chaos = true, - area = true, - channelling = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - area = true, - chaos = true, - }, - skillTypes = { [2] = true, [50] = true, [11] = true, [18] = true, [58] = true, [12] = true, [40] = true, [59] = true, [52] = true, }, - baseMods = { - skill("castTime", 0.3), - skill("duration", 2.5), --"base_skill_effect_duration" = 2500 - --"base_secondary_skill_effect_duration" = 800 - mod("MovementSpeed", "INC", -80, 0, 0, nil), --"base_movement_velocity_+%" = -80 - --"display_max_blight_stacks" = 20 - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - --[3] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 2, 1.7333333333333, 0, }, - [2] = { 2, 1.9666666666667, 0, }, - [3] = { 2, 2.4666666666667, 0, }, - [4] = { 2, 3.3666666666667, 0, }, - [5] = { 2, 4.8333333333333, 1, }, - [6] = { 2, 7.2166666666667, 1, }, - [7] = { 2, 9.6833333333333, 1, }, - [8] = { 2, 12.75, 1, }, - [9] = { 2, 16.566666666667, 1, }, - [10] = { 2, 21.266666666667, 2, }, - [11] = { 2, 27.05, 2, }, - [12] = { 3, 34.133333333333, 2, }, - [13] = { 3, 42.816666666667, 2, }, - [14] = { 3, 53.4, 2, }, - [15] = { 3, 66.283333333333, 3, }, - [16] = { 3, 81.916666666667, 3, }, - [17] = { 3, 100.88333333333, 3, }, - [18] = { 4, 123.83333333333, 3, }, - [19] = { 4, 144.11666666667, 3, }, - [20] = { 4, 167.48333333333, 4, }, - [21] = { 4, 184.96666666667, 4, }, - [22] = { 4, 204.16666666667, 4, }, - [23] = { 4, 225.23333333333, 4, }, - [24] = { 5, 248.33333333333, 4, }, - [25] = { 5, 273.66666666667, 5, }, - [26] = { 5, 301.41666666667, 5, }, - [27] = { 5, 331.83333333333, 5, }, - [28] = { 5, 365.16666666667, 5, }, - [29] = { 5, 401.66666666667, 5, }, - [30] = { 5, 441.61666666667, 6, }, - }, -} -gems["Bone Offering"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"offering_skill_effect_duration_per_corpse" = 500 - --"base_deal_no_damage" = ? - skill("offering", true), - }, - qualityMods = { - mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("BlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"monster_base_block_%" - [3] = mod("SpellBlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_spell_block_%" - --[4] = "minion_recover_X_life_on_block" - }, - levels = { - [1] = { 16, 25, 25, 11, }, - [2] = { 17, 26, 25, 14, }, - [3] = { 18, 26, 26, 20, }, - [4] = { 19, 27, 26, 27, }, - [5] = { 20, 27, 27, 38, }, - [6] = { 21, 28, 27, 50, }, - [7] = { 22, 28, 28, 66, }, - [8] = { 23, 29, 28, 81, }, - [9] = { 24, 29, 29, 99, }, - [10] = { 25, 30, 29, 120, }, - [11] = { 26, 30, 30, 146, }, - [12] = { 27, 31, 30, 176, }, - [13] = { 28, 31, 31, 212, }, - [14] = { 29, 32, 31, 255, }, - [15] = { 29, 32, 32, 306, }, - [16] = { 30, 33, 32, 366, }, - [17] = { 30, 33, 33, 414, }, - [18] = { 31, 34, 33, 468, }, - [19] = { 32, 34, 34, 528, }, - [20] = { 33, 35, 34, 594, }, - [21] = { 34, 35, 35, 644, }, - [22] = { 34, 36, 35, 693, }, - [23] = { 35, 36, 36, 743, }, - [24] = { 36, 37, 36, 792, }, - [25] = { 37, 37, 37, 842, }, - [26] = { 38, 38, 37, 891, }, - [27] = { 38, 38, 38, 941, }, - [28] = { 39, 39, 38, 990, }, - [29] = { 40, 39, 39, 1040, }, - [30] = { 41, 40, 39, 1089, }, - }, -} -gems["Clarity"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_mana_regeneration_rate_per_minute" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 34, 2.9333333333333, 0, }, - [2] = { 48, 4.0333333333333, 3, }, - [3] = { 61, 5.0833333333333, 6, }, - [4] = { 76, 6.0833333333333, 9, }, - [5] = { 89, 7.0166666666667, 12, }, - [6] = { 102, 7.9166666666667, 15, }, - [7] = { 115, 8.75, 18, }, - [8] = { 129, 9.55, 21, }, - [9] = { 141, 10.316666666667, 23, }, - [10] = { 154, 11.05, 25, }, - [11] = { 166, 11.733333333333, 27, }, - [12] = { 178, 12.4, 29, }, - [13] = { 190, 13.033333333333, 31, }, - [14] = { 203, 13.65, 33, }, - [15] = { 214, 14.25, 35, }, - [16] = { 227, 14.85, 36, }, - [17] = { 239, 15.433333333333, 37, }, - [18] = { 251, 16.016666666667, 38, }, - [19] = { 265, 16.6, 39, }, - [20] = { 279, 17.183333333333, 40, }, - [21] = { 293, 17.766666666667, 41, }, - [22] = { 303, 18.366666666667, 42, }, - [23] = { 313, 18.966666666667, 43, }, - [24] = { 323, 19.566666666667, 44, }, - [25] = { 333, 20.166666666667, 45, }, - [26] = { 343, 20.766666666667, 46, }, - [27] = { 353, 21.366666666667, 47, }, - [28] = { 363, 21.983333333333, 48, }, - [29] = { 373, 22.6, 49, }, - [30] = { 383, 23.216666666667, 50, }, - }, -} -gems["Vaal Clarity"] = { - aura = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - mod("ManaCost", "MORE", -100, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"no_mana_cost" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 0, 8, }, - [2] = { 3, 8.1, }, - [3] = { 6, 8.2, }, - [4] = { 9, 8.3, }, - [5] = { 12, 8.4, }, - [6] = { 15, 8.5, }, - [7] = { 18, 8.6, }, - [8] = { 21, 8.7, }, - [9] = { 23, 8.8, }, - [10] = { 25, 8.9, }, - [11] = { 27, 9, }, - [12] = { 29, 9.1, }, - [13] = { 31, 9.2, }, - [14] = { 33, 9.3, }, - [15] = { 35, 9.4, }, - [16] = { 36, 9.5, }, - [17] = { 37, 9.6, }, - [18] = { 38, 9.7, }, - [19] = { 39, 9.8, }, - [20] = { 40, 9.9, }, - [21] = { 41, 10, }, - [22] = { 42, 10.1, }, - [23] = { 43, 10.2, }, - [24] = { 44, 10.3, }, - [25] = { 45, 10.4, }, - [26] = { 46, 10.5, }, - [27] = { 47, 10.6, }, - [28] = { 48, 10.7, }, - [29] = { 49, 10.8, }, - [30] = { 50, 10.9, }, - }, -} -gems["Cold Snap"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 1.2), - skill("critChance", 5), - mod("EnemyFreezeChance", "BASE", 30), --"base_chance_to_freeze_%" = 30 - mod("EnemyFreezeDuration", "INC", 30), --"freeze_duration_+%" = 30 - mod("EnemyChillDuration", "INC", 110), --"chill_duration_+%" = 110 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 11, 9, 13, 0, }, - [2] = { 12, 11, 16, 0, }, - [3] = { 13, 14, 21, 0, }, - [4] = { 14, 18, 27, 1, }, - [5] = { 15, 25, 37, 1, }, - [6] = { 16, 32, 49, 1, }, - [7] = { 17, 42, 63, 1, }, - [8] = { 18, 54, 81, 2, }, - [9] = { 19, 68, 102, 2, }, - [10] = { 20, 85, 128, 2, }, - [11] = { 21, 106, 159, 2, }, - [12] = { 22, 131, 196, 3, }, - [13] = { 23, 160, 240, 3, }, - [14] = { 24, 196, 294, 3, }, - [15] = { 25, 227, 341, 3, }, - [16] = { 26, 263, 394, 4, }, - [17] = { 26, 303, 455, 4, }, - [18] = { 27, 350, 524, 4, }, - [19] = { 27, 402, 603, 4, }, - [20] = { 28, 462, 693, 5, }, - [21] = { 28, 506, 759, 5, }, - [22] = { 29, 554, 832, 5, }, - [23] = { 29, 607, 910, 5, }, - [24] = { 30, 664, 996, 6, }, - [25] = { 30, 726, 1089, 6, }, - [26] = { 30, 794, 1191, 6, }, - [27] = { 30, 867, 1301, 6, }, - [28] = { 31, 947, 1420, 7, }, - [29] = { 31, 1033, 1550, 7, }, - [30] = { 32, 1127, 1691, 7, }, - }, -} -gems["Vaal Cold Snap"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - cold = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [12] = true, [43] = true, [34] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 1.4), - skill("critChance", 5), - skill("duration", 10), --"base_skill_effect_duration" = 10000 - mod("EnemyFreezeChance", "BASE", 100), --"base_chance_to_freeze_%" = 100 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [2] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 11, 17, }, - [2] = { 14, 21, }, - [3] = { 18, 28, }, - [4] = { 24, 35, }, - [5] = { 32, 48, }, - [6] = { 42, 63, }, - [7] = { 55, 82, }, - [8] = { 70, 105, }, - [9] = { 88, 132, }, - [10] = { 111, 166, }, - [11] = { 137, 206, }, - [12] = { 170, 255, }, - [13] = { 208, 313, }, - [14] = { 255, 382, }, - [15] = { 295, 443, }, - [16] = { 342, 512, }, - [17] = { 394, 591, }, - [18] = { 454, 682, }, - [19] = { 523, 784, }, - [20] = { 600, 901, }, - [21] = { 658, 987, }, - [22] = { 721, 1081, }, - [23] = { 789, 1184, }, - [24] = { 863, 1295, }, - [25] = { 944, 1416, }, - [26] = { 1032, 1548, }, - [27] = { 1127, 1691, }, - [28] = { 1231, 1846, }, - [29] = { 1343, 2015, }, - [30] = { 1466, 2199, }, - }, -} -gems["Conductivity"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("SelfShockDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_shock_duration_-%" = -1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_lightning_damage_resistance_%" - [5] = mod("SelfShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" - }, - levels = { - [1] = { 24, 9, 0, -25, 10, }, - [2] = { 26, 9.1, 4, -26, 10, }, - [3] = { 27, 9.2, 8, -27, 10, }, - [4] = { 29, 9.3, 12, -28, 10, }, - [5] = { 30, 9.4, 16, -29, 10, }, - [6] = { 32, 9.5, 20, -30, 11, }, - [7] = { 34, 9.6, 24, -31, 11, }, - [8] = { 35, 9.7, 28, -32, 11, }, - [9] = { 37, 9.8, 32, -33, 11, }, - [10] = { 38, 9.9, 36, -34, 11, }, - [11] = { 39, 10, 40, -35, 12, }, - [12] = { 40, 10.1, 44, -36, 12, }, - [13] = { 42, 10.2, 48, -37, 12, }, - [14] = { 43, 10.3, 52, -38, 12, }, - [15] = { 44, 10.4, 56, -39, 12, }, - [16] = { 45, 10.5, 60, -40, 13, }, - [17] = { 46, 10.6, 64, -41, 13, }, - [18] = { 47, 10.7, 68, -42, 13, }, - [19] = { 48, 10.8, 72, -43, 13, }, - [20] = { 50, 10.9, 76, -44, 14, }, - [21] = { 51, 11, 80, -45, 14, }, - [22] = { 52, 11.1, 84, -46, 14, }, - [23] = { 53, 11.2, 88, -47, 15, }, - [24] = { 54, 11.3, 92, -48, 15, }, - [25] = { 56, 11.4, 96, -49, 15, }, - [26] = { 57, 11.5, 100, -50, 16, }, - [27] = { 58, 11.6, 104, -51, 16, }, - [28] = { 59, 11.7, 108, -52, 16, }, - [29] = { 60, 11.8, 112, -53, 17, }, - [30] = { 61, 11.9, 116, -54, 17, }, - }, -} -gems["Contagion"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - chaos = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [40] = true, [50] = true, [26] = true, [36] = true, [19] = true, [52] = true, [59] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"is_area_damage" = ? - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - skill("debuff", true), - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - }, - levels = { - [1] = { 11, 3.1666666666667, }, - [2] = { 12, 3.9, }, - [3] = { 13, 5.15, }, - [4] = { 14, 6.65, }, - [5] = { 15, 9.0666666666667, }, - [6] = { 16, 12.066666666667, }, - [7] = { 17, 15.766666666667, }, - [8] = { 18, 20.3, }, - [9] = { 19, 25.866666666667, }, - [10] = { 20, 32.65, }, - [11] = { 21, 40.9, }, - [12] = { 22, 50.9, }, - [13] = { 23, 63, }, - [14] = { 24, 77.583333333333, }, - [15] = { 25, 90.466666666667, }, - [16] = { 26, 105.25, }, - [17] = { 26, 122.2, }, - [18] = { 27, 141.65, }, - [19] = { 27, 163.9, }, - [20] = { 28, 189.36666666667, }, - [21] = { 28, 208.35, }, - [22] = { 29, 229.08333333333, }, - [23] = { 29, 251.75, }, - [24] = { 30, 276.5, }, - [25] = { 30, 303.51666666667, }, - [26] = { 30, 333.03333333333, }, - [27] = { 30, 365.21666666667, }, - [28] = { 31, 400.35, }, - [29] = { 31, 438.66666666667, }, - [30] = { 32, 480.45, }, - }, -} -gems["Conversion Trap"] = { - trap = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - unsupported = true, -} -gems["Convocation"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - unsupported = true, -} -gems["Discharge"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - cold = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - lightning = true, - cold = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [36] = true, [45] = true, [33] = true, [34] = true, [35] = true, [60] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 1.5), - skill("critChance", 7), - --"skill_override_pvp_scaling_time_ms" = 1400 - mod("Damage", "MORE", -35, ModFlag.Spell, 0, { type = "Condition", var = "SkillIsTriggered" }), --"triggered_discharge_damage_+%_final" = -35 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_minimum_base_lightning_damage_per_power_charge" - [3] = skill("LightningMax", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_maximum_base_lightning_damage_per_power_charge" - [4] = skill("FireMin", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_minimum_base_fire_damage_per_endurance_charge" - [5] = skill("FireMax", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_maximum_base_fire_damage_per_endurance_charge" - [6] = skill("ColdMin", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_minimum_base_cold_damage_per_frenzy_charge" - [7] = skill("ColdMax", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_maximum_base_cold_damage_per_frenzy_charge" - }, - levels = { - [1] = { 24, 4, 77, 29, 43, 24, 36, }, - [2] = { 26, 5, 92, 34, 51, 28, 42, }, - [3] = { 27, 6, 108, 40, 60, 33, 49, }, - [4] = { 29, 7, 126, 47, 71, 39, 58, }, - [5] = { 31, 8, 147, 55, 83, 45, 68, }, - [6] = { 32, 9, 163, 61, 91, 50, 75, }, - [7] = { 33, 9, 180, 67, 101, 55, 82, }, - [8] = { 34, 10, 198, 74, 111, 61, 91, }, - [9] = { 35, 11, 218, 82, 122, 67, 100, }, - [10] = { 36, 13, 240, 90, 135, 73, 110, }, - [11] = { 37, 14, 263, 99, 148, 81, 121, }, - [12] = { 38, 15, 289, 108, 162, 88, 133, }, - [13] = { 39, 17, 317, 119, 178, 97, 146, }, - [14] = { 40, 18, 347, 130, 195, 106, 159, }, - [15] = { 41, 20, 380, 142, 213, 116, 174, }, - [16] = { 42, 22, 415, 155, 233, 127, 191, }, - [17] = { 44, 24, 454, 170, 255, 139, 208, }, - [18] = { 45, 26, 495, 185, 278, 152, 227, }, - [19] = { 46, 28, 540, 202, 303, 165, 248, }, - [20] = { 47, 31, 589, 220, 331, 180, 271, }, - [21] = { 48, 34, 642, 240, 360, 197, 295, }, - [22] = { 49, 37, 699, 262, 392, 214, 321, }, - [23] = { 50, 40, 761, 285, 427, 233, 349, }, - [24] = { 51, 44, 828, 310, 465, 253, 380, }, - [25] = { 52, 47, 900, 337, 505, 276, 413, }, - [26] = { 53, 51, 978, 366, 549, 299, 449, }, - [27] = { 54, 56, 1062, 397, 596, 325, 488, }, - [28] = { 55, 61, 1153, 431, 647, 353, 529, }, - [29] = { 57, 66, 1251, 468, 702, 383, 575, }, - [30] = { 58, 71, 1357, 508, 762, 416, 623, }, - }, -} -gems["Discipline"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("EnergyShield", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 60, 0, }, - [2] = { 70, 3, }, - [3] = { 78, 6, }, - [4] = { 89, 9, }, - [5] = { 100, 12, }, - [6] = { 111, 15, }, - [7] = { 125, 18, }, - [8] = { 139, 21, }, - [9] = { 154, 23, }, - [10] = { 165, 25, }, - [11] = { 173, 27, }, - [12] = { 187, 29, }, - [13] = { 201, 31, }, - [14] = { 213, 33, }, - [15] = { 227, 35, }, - [16] = { 239, 36, }, - [17] = { 253, 37, }, - [18] = { 269, 38, }, - [19] = { 281, 39, }, - [20] = { 303, 40, }, - [21] = { 315, 41, }, - [22] = { 330, 42, }, - [23] = { 340, 43, }, - [24] = { 357, 44, }, - [25] = { 374, 45, }, - [26] = { 384, 46, }, - [27] = { 406, 47, }, - [28] = { 425, 48, }, - [29] = { 450, 49, }, - [30] = { 455, 50, }, - }, -} -gems["Vaal Discipline"] = { - aura = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, - baseMods = { - skill("castTime", 0.6), - mod("EnergyShield", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" = 0 - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"energy_shield_recharge_not_delayed_by_damage" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 0, }, - [2] = { 3, }, - [3] = { 6, }, - [4] = { 9, }, - [5] = { 12, }, - [6] = { 15, }, - [7] = { 18, }, - [8] = { 21, }, - [9] = { 23, }, - [10] = { 25, }, - [11] = { 27, }, - [12] = { 29, }, - [13] = { 31, }, - [14] = { 33, }, - [15] = { 35, }, - [16] = { 36, }, - [17] = { 37, }, - [18] = { 38, }, - [19] = { 39, }, - [20] = { 40, }, - [21] = { 41, }, - [22] = { 42, }, - [23] = { 43, }, - [24] = { 44, }, - [25] = { 45, }, - [26] = { 46, }, - [27] = { 47, }, - [28] = { 48, }, - [29] = { 49, }, - [30] = { 50, }, - }, -} -gems["Elemental Weakness"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("ElementalResist", "BASE", -0.25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" = -0.25 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" - }, - levels = { - [1] = { 24, 9, 0, -20, }, - [2] = { 26, 9.1, 4, -21, }, - [3] = { 27, 9.2, 8, -22, }, - [4] = { 29, 9.3, 12, -23, }, - [5] = { 30, 9.4, 16, -24, }, - [6] = { 32, 9.5, 20, -25, }, - [7] = { 34, 9.6, 24, -26, }, - [8] = { 35, 9.7, 28, -27, }, - [9] = { 37, 9.8, 32, -28, }, - [10] = { 38, 9.9, 36, -29, }, - [11] = { 39, 10, 40, -30, }, - [12] = { 40, 10.1, 44, -31, }, - [13] = { 42, 10.2, 48, -32, }, - [14] = { 43, 10.3, 52, -33, }, - [15] = { 44, 10.4, 56, -34, }, - [16] = { 45, 10.5, 60, -35, }, - [17] = { 46, 10.6, 64, -36, }, - [18] = { 47, 10.7, 68, -37, }, - [19] = { 48, 10.8, 72, -38, }, - [20] = { 50, 10.9, 76, -39, }, - [21] = { 51, 11, 80, -40, }, - [22] = { 52, 11.1, 84, -41, }, - [23] = { 53, 11.2, 88, -42, }, - [24] = { 54, 11.3, 92, -43, }, - [25] = { 56, 11.4, 96, -44, }, - [26] = { 57, 11.5, 100, -45, }, - [27] = { 58, 11.6, 104, -46, }, - [28] = { 59, 11.7, 108, -47, }, - [29] = { 60, 11.8, 112, -48, }, - [30] = { 61, 11.9, 116, -49, }, - }, -} -gems["Enfeeble"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("CritChance", "INC", -25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -25 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("Accuracy", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -0.5 - mod("CritChance", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" - [5] = mod("Damage", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" - [6] = mod("CritMultiplier", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" - }, - levels = { - [1] = { 24, 9, 0, -18, -21, -21, }, - [2] = { 26, 9.1, 4, -19, -21, -21, }, - [3] = { 27, 9.2, 8, -20, -22, -22, }, - [4] = { 29, 9.3, 12, -21, -22, -22, }, - [5] = { 30, 9.4, 16, -22, -23, -23, }, - [6] = { 32, 9.5, 20, -23, -23, -23, }, - [7] = { 34, 9.6, 24, -24, -24, -24, }, - [8] = { 35, 9.7, 28, -25, -24, -24, }, - [9] = { 37, 9.8, 32, -26, -25, -25, }, - [10] = { 38, 9.9, 36, -27, -25, -25, }, - [11] = { 39, 10, 40, -28, -26, -26, }, - [12] = { 40, 10.1, 44, -29, -26, -26, }, - [13] = { 42, 10.2, 48, -30, -27, -27, }, - [14] = { 43, 10.3, 52, -31, -27, -27, }, - [15] = { 44, 10.4, 56, -32, -28, -28, }, - [16] = { 45, 10.5, 60, -33, -28, -28, }, - [17] = { 46, 10.6, 64, -34, -29, -29, }, - [18] = { 47, 10.7, 68, -35, -29, -29, }, - [19] = { 48, 10.8, 72, -36, -30, -30, }, - [20] = { 50, 10.9, 76, -37, -30, -30, }, - [21] = { 51, 11, 80, -38, -31, -31, }, - [22] = { 52, 11.1, 84, -39, -31, -31, }, - [23] = { 53, 11.2, 88, -40, -32, -32, }, - [24] = { 54, 11.3, 92, -41, -32, -32, }, - [25] = { 56, 11.4, 96, -42, -33, -33, }, - [26] = { 57, 11.5, 100, -43, -33, -33, }, - [27] = { 58, 11.6, 104, -44, -34, -34, }, - [28] = { 59, 11.7, 108, -45, -34, -34, }, - [29] = { 60, 11.8, 112, -46, -35, -35, }, - [30] = { 61, 11.9, 116, -47, -35, -35, }, - }, -} -gems["Essence Drain"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - chaos = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [3] = true, [12] = true, [18] = true, [26] = true, [40] = true, [50] = true, [10] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"siphon_life_leech_from_damage_permyriad" = 50 - skill("duration", 3.8), --"base_skill_effect_duration" = 3800 - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - --"base_is_projectile" = ? - skill("debuff", true), - skill("showAverage", true), - }, - qualityMods = { - mod("ChaosDamage", "INC", 1), --"chaos_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" - [3] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" - [4] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" - }, - levels = { - [1] = { 9, 21.483333333333, 6, 9, }, - [2] = { 10, 27.566666666667, 8, 12, }, - [3] = { 11, 37.6, 11, 16, }, - [4] = { 12, 50.3, 14, 22, }, - [5] = { 13, 66.266666666667, 19, 29, }, - [6] = { 14, 86.283333333333, 25, 37, }, - [7] = { 16, 111.26666666667, 32, 48, }, - [8] = { 16, 133.93333333333, 39, 58, }, - [9] = { 17, 160.58333333333, 46, 69, }, - [10] = { 18, 191.85, 55, 83, }, - [11] = { 19, 228.5, 66, 99, }, - [12] = { 20, 271.4, 78, 117, }, - [13] = { 21, 321.53333333333, 93, 139, }, - [14] = { 22, 380.05, 109, 164, }, - [15] = { 23, 448.3, 129, 194, }, - [16] = { 24, 527.78333333333, 152, 228, }, - [17] = { 24, 587.88333333333, 169, 254, }, - [18] = { 25, 654.35, 188, 283, }, - [19] = { 26, 727.81666666667, 210, 314, }, - [20] = { 27, 809, 233, 349, }, - [21] = { 28, 898.68333333333, 259, 388, }, - [22] = { 29, 997.7, 287, 431, }, - [23] = { 29, 1107, 319, 478, }, - [24] = { 30, 1227.6, 354, 530, }, - [25] = { 30, 1360.6333333333, 392, 588, }, - [26] = { 31, 1507.3333333333, 434, 651, }, - [27] = { 32, 1669.0666666667, 481, 721, }, - [28] = { 33, 1847.3, 532, 798, }, - [29] = { 33, 2043.6833333333, 589, 883, }, - [30] = { 34, 2260, 651, 976, }, - }, -} -gems["Fire Nova Mine"] = { - area = true, - mine = true, - intelligence = true, - active_skill = true, - spell = true, - fire = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - mine = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [36] = true, [11] = true, [33] = true, [26] = true, [41] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.4), - skill("damageEffectiveness", 0.3), - skill("critChance", 5), - --"base_mine_duration" = 16000 - skill("repeatCount", 3), --"base_spell_repeat_count" = 3 - --"base_skill_is_mined" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_remote_mine" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - --[4] = "fire_nova_damage_+%_per_repeat_final" - }, - levels = { - [1] = { 12, 6, 9, 20, }, - [2] = { 13, 7, 11, 20, }, - [3] = { 15, 10, 14, 21, }, - [4] = { 17, 12, 18, 21, }, - [5] = { 18, 16, 23, 22, }, - [6] = { 20, 20, 29, 22, }, - [7] = { 22, 24, 36, 23, }, - [8] = { 23, 28, 43, 23, }, - [9] = { 24, 33, 50, 24, }, - [10] = { 25, 39, 58, 24, }, - [11] = { 27, 45, 67, 25, }, - [12] = { 28, 52, 77, 25, }, - [13] = { 29, 60, 89, 26, }, - [14] = { 31, 68, 103, 26, }, - [15] = { 32, 79, 118, 27, }, - [16] = { 33, 90, 135, 27, }, - [17] = { 34, 98, 148, 28, }, - [18] = { 35, 107, 161, 28, }, - [19] = { 36, 117, 176, 29, }, - [20] = { 36, 128, 192, 29, }, - [21] = { 37, 140, 210, 30, }, - [22] = { 38, 152, 228, 30, }, - [23] = { 39, 166, 249, 31, }, - [24] = { 40, 181, 271, 31, }, - [25] = { 41, 197, 295, 32, }, - [26] = { 41, 214, 321, 32, }, - [27] = { 42, 232, 349, 33, }, - [28] = { 43, 253, 379, 33, }, - [29] = { 44, 274, 412, 34, }, - [30] = { 45, 298, 447, 34, }, - }, -} -gems["Fireball"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - parts = { - { - name = "Projectile", - area = false, - }, - { - name = "Explosion", - area = true, - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - fire = true, - }, - skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("critChance", 6), - --"base_is_projectile" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 0.5), --"base_chance_to_ignite_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = mod("EnemyIgniteChance", "BASE", nil), --"base_chance_to_ignite_%" - --[5] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 7, 10, 20, 0, }, - [2] = { 6, 8, 11, 21, 0, }, - [3] = { 7, 10, 14, 22, 0, }, - [4] = { 8, 13, 20, 23, 0, }, - [5] = { 9, 19, 29, 24, 0, }, - [6] = { 10, 29, 43, 25, 1, }, - [7] = { 11, 39, 58, 26, 1, }, - [8] = { 12, 52, 77, 27, 1, }, - [9] = { 13, 67, 101, 28, 1, }, - [10] = { 15, 87, 131, 29, 1, }, - [11] = { 16, 112, 168, 30, 1, }, - [12] = { 17, 142, 213, 31, 2, }, - [13] = { 18, 180, 270, 32, 2, }, - [14] = { 19, 226, 339, 33, 2, }, - [15] = { 21, 283, 424, 34, 2, }, - [16] = { 22, 352, 528, 35, 2, }, - [17] = { 23, 437, 655, 36, 2, }, - [18] = { 24, 540, 810, 37, 3, }, - [19] = { 25, 632, 948, 38, 3, }, - [20] = { 26, 739, 1109, 39, 3, }, - [21] = { 27, 819, 1229, 40, 3, }, - [22] = { 27, 908, 1362, 41, 3, }, - [23] = { 28, 1005, 1508, 42, 3, }, - [24] = { 28, 1113, 1669, 43, 4, }, - [25] = { 29, 1231, 1847, 44, 4, }, - [26] = { 30, 1361, 2042, 45, 4, }, - [27] = { 30, 1504, 2257, 46, 4, }, - [28] = { 31, 1662, 2493, 47, 4, }, - [29] = { 31, 1835, 2752, 48, 4, }, - [30] = { 32, 2025, 3038, 49, 5, }, - }, -} -gems["Vaal Fireball"] = { - projectile = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - fire = true, - parts = { - { - name = "Projectile", - area = false, - }, - { - name = "Explosion", - area = true, - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - fire = true, - vaal = true, - }, - skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 1.25), - skill("critChance", 6), - --"base_number_of_projectiles_in_spiral_nova" = 32 - --"projectile_spiral_nova_time_ms" = 2000 - --"projectile_spiral_nova_angle" = -720 - mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1.5), --"base_chance_to_ignite_%" = 1.5 - }, - levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 8, 11, }, - [2] = { 9, 13, }, - [3] = { 11, 16, }, - [4] = { 14, 22, }, - [5] = { 20, 30, }, - [6] = { 30, 45, }, - [7] = { 39, 59, }, - [8] = { 51, 76, }, - [9] = { 65, 98, }, - [10] = { 82, 124, }, - [11] = { 103, 155, }, - [12] = { 128, 192, }, - [13] = { 158, 238, }, - [14] = { 195, 292, }, - [15] = { 238, 357, }, - [16] = { 289, 434, }, - [17] = { 351, 526, }, - [18] = { 424, 636, }, - [19] = { 488, 732, }, - [20] = { 560, 841, }, - [21] = { 614, 921, }, - [22] = { 673, 1009, }, - [23] = { 736, 1105, }, - [24] = { 806, 1209, }, - [25] = { 881, 1322, }, - [26] = { 963, 1445, }, - [27] = { 1052, 1578, }, - [28] = { 1149, 1723, }, - [29] = { 1254, 1881, }, - [30] = { 1368, 2052, }, - }, -} -gems["Firestorm"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.9), - skill("damageEffectiveness", 0.3), - skill("critChance", 6), - skill("duration", 2), --"base_skill_effect_duration" = 2000 - --"fire_storm_fireball_delay_ms" = 100 - --"is_area_damage" = 1 - --"skill_override_pvp_scaling_time_ms" = 450 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 9, 4, 10, }, - [2] = { 10, 9, 13, }, - [3] = { 11, 11, 17, }, - [4] = { 12, 15, 22, }, - [5] = { 13, 19, 28, }, - [6] = { 14, 23, 35, }, - [7] = { 15, 29, 44, }, - [8] = { 16, 35, 52, }, - [9] = { 17, 40, 61, }, - [10] = { 18, 47, 71, }, - [11] = { 19, 55, 82, }, - [12] = { 20, 64, 95, }, - [13] = { 21, 74, 110, }, - [14] = { 22, 85, 127, }, - [15] = { 23, 98, 147, }, - [16] = { 24, 112, 169, }, - [17] = { 24, 123, 185, }, - [18] = { 25, 135, 203, }, - [19] = { 25, 148, 222, }, - [20] = { 26, 162, 243, }, - [21] = { 26, 177, 265, }, - [22] = { 27, 193, 290, }, - [23] = { 27, 211, 317, }, - [24] = { 28, 231, 346, }, - [25] = { 29, 251, 377, }, - [26] = { 30, 274, 411, }, - [27] = { 30, 299, 448, }, - [28] = { 30, 326, 488, }, - [29] = { 31, 355, 532, }, - [30] = { 32, 386, 579, }, - }, -} -gems["Flame Dash"] = { - intelligence = true, - active_skill = true, - spell = true, - movement = true, - duration = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - movement = true, - fire = true, - }, - skillTypes = { [2] = true, [38] = true, [10] = true, [40] = true, [12] = true, [18] = true, [36] = true, [33] = true, [17] = true, [19] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("critChance", 6), - skill("duration", 4), --"base_skill_effect_duration" = 4000 - --"is_area_damage" = ? - --"firestorm_use_server_effects" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - }, - levels = { - [1] = { 10, 6, 9, 10.9, }, - [2] = { 11, 8, 11, 14.3, }, - [3] = { 12, 11, 16, 20.016666666667, }, - [4] = { 13, 15, 22, 27.366666666667, }, - [5] = { 14, 20, 29, 36.816666666667, }, - [6] = { 15, 26, 39, 48.866666666667, }, - [7] = { 16, 34, 51, 64.15, }, - [8] = { 17, 42, 63, 78.233333333333, }, - [9] = { 18, 51, 76, 94.983333333333, }, - [10] = { 20, 61, 92, 114.9, }, - [11] = { 21, 74, 111, 138.5, }, - [12] = { 22, 89, 133, 166.48333333333, }, - [13] = { 24, 106, 160, 199.55, }, - [14] = { 25, 127, 191, 238.61666666667, }, - [15] = { 26, 152, 228, 284.7, }, - [16] = { 27, 181, 271, 339, }, - [17] = { 28, 215, 322, 402.9, }, - [18] = { 29, 255, 382, 478.05, }, - [19] = { 30, 285, 428, 535.3, }, - [20] = { 30, 319, 479, 599.01666666667, }, - [21] = { 31, 357, 536, 669.9, }, - [22] = { 32, 399, 599, 748.71666666667, }, - [23] = { 33, 446, 669, 836.35, }, - [24] = { 34, 498, 747, 933.7, }, - [25] = { 34, 556, 833, 1041.8666666667, }, - [26] = { 35, 620, 930, 1161.9666666667, }, - [27] = { 36, 691, 1036, 1295.3166666667, }, - [28] = { 37, 770, 1155, 1443.3, }, - [29] = { 38, 857, 1286, 1607.4833333333, }, - [30] = { 38, 954, 1432, 1789.6, }, - }, -} -gems["Flame Surge"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [11] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("critChance", 6), - mod("Damage", "MORE", 50, bit.bor(ModFlag.Spell, ModFlag.Hit), 0, { type = "Condition", var = "EnemyBurning" }), --"flame_whip_damage_+%_final_vs_burning_enemies" = 50 - flag("CannotIgnite"), --"never_ignite" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 5, 21, 31, }, - [2] = { 6, 26, 39, }, - [3] = { 6, 35, 52, }, - [4] = { 7, 45, 67, }, - [5] = { 7, 57, 86, }, - [6] = { 8, 73, 109, }, - [7] = { 9, 91, 137, }, - [8] = { 9, 107, 161, }, - [9] = { 10, 126, 189, }, - [10] = { 10, 147, 221, }, - [11] = { 11, 171, 257, }, - [12] = { 12, 199, 299, }, - [13] = { 12, 231, 346, }, - [14] = { 13, 267, 401, }, - [15] = { 13, 308, 462, }, - [16] = { 13, 355, 533, }, - [17] = { 13, 390, 585, }, - [18] = { 14, 428, 642, }, - [19] = { 15, 469, 703, }, - [20] = { 15, 514, 771, }, - [21] = { 15, 563, 844, }, - [22] = { 15, 616, 923, }, - [23] = { 16, 673, 1010, }, - [24] = { 16, 736, 1104, }, - [25] = { 17, 804, 1206, }, - [26] = { 18, 878, 1317, }, - [27] = { 18, 958, 1437, }, - [28] = { 18, 1045, 1567, }, - [29] = { 18, 1139, 1709, }, - [30] = { 19, 1242, 1863, }, - }, -} -gems["Flameblast"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - channelling = true, - parts = { - { - name = "1 Stage", - }, - { - name = "10 Stages", - }, - }, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [33] = true, [58] = true, }, - baseMods = { - skill("castTime", 0.2), - skill("damageEffectiveness", 0.5), - skill("critChance", 5), - --"charged_blast_spell_damage_+%_final_per_stack" = 110 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - mod("Damage", "MORE", 990, 0, 0, { type = "SkillPart", skillPart = 2 }), - skill("dpsMultiplier", 0.1, { type = "SkillPart", skillPart = 2 }), - skill("showAverage", false), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 6, 32, 48, }, - [2] = { 6, 38, 57, }, - [3] = { 6, 45, 67, }, - [4] = { 6, 52, 78, }, - [5] = { 7, 61, 91, }, - [6] = { 7, 67, 101, }, - [7] = { 7, 74, 111, }, - [8] = { 7, 82, 123, }, - [9] = { 7, 90, 135, }, - [10] = { 8, 99, 148, }, - [11] = { 8, 109, 163, }, - [12] = { 8, 119, 179, }, - [13] = { 8, 130, 196, }, - [14] = { 8, 143, 214, }, - [15] = { 9, 156, 234, }, - [16] = { 9, 171, 256, }, - [17] = { 9, 186, 279, }, - [18] = { 9, 203, 305, }, - [19] = { 9, 221, 332, }, - [20] = { 9, 241, 362, }, - [21] = { 10, 263, 394, }, - [22] = { 10, 286, 429, }, - [23] = { 10, 311, 466, }, - [24] = { 11, 338, 507, }, - [25] = { 11, 367, 550, }, - [26] = { 11, 398, 598, }, - [27] = { 12, 432, 649, }, - [28] = { 12, 469, 704, }, - [29] = { 12, 509, 763, }, - [30] = { 13, 551, 827, }, - }, -} -gems["Vaal Flameblast"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"charged_blast_spell_damage_+%_final_per_stack" = 110 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - mod("Damage", "MORE", 1100, ModFlag.Spell), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 39, 58, }, - [2] = { 46, 68, }, - [3] = { 53, 80, }, - [4] = { 62, 93, }, - [5] = { 71, 107, }, - [6] = { 78, 117, }, - [7] = { 86, 129, }, - [8] = { 94, 141, }, - [9] = { 103, 154, }, - [10] = { 113, 169, }, - [11] = { 123, 184, }, - [12] = { 134, 201, }, - [13] = { 146, 219, }, - [14] = { 159, 238, }, - [15] = { 173, 259, }, - [16] = { 188, 282, }, - [17] = { 204, 306, }, - [18] = { 221, 332, }, - [19] = { 240, 360, }, - [20] = { 260, 390, }, - [21] = { 281, 422, }, - [22] = { 305, 457, }, - [23] = { 329, 494, }, - [24] = { 356, 534, }, - [25] = { 385, 577, }, - [26] = { 416, 623, }, - [27] = { 449, 673, }, - [28] = { 484, 726, }, - [29] = { 522, 783, }, - [30] = { 563, 844, }, - }, -} -gems["Flammability"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("SelfIgniteDuration", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_ignite_duration_-%" = -0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_fire_damage_resistance_%" - [5] = mod("SelfIgniteChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" - }, - levels = { - [1] = { 24, 9, 0, -25, 10, }, - [2] = { 26, 9.1, 4, -26, 10, }, - [3] = { 27, 9.2, 8, -27, 10, }, - [4] = { 29, 9.3, 12, -28, 10, }, - [5] = { 30, 9.4, 16, -29, 10, }, - [6] = { 32, 9.5, 20, -30, 11, }, - [7] = { 34, 9.6, 24, -31, 11, }, - [8] = { 35, 9.7, 28, -32, 11, }, - [9] = { 37, 9.8, 32, -33, 11, }, - [10] = { 38, 9.9, 36, -34, 11, }, - [11] = { 39, 10, 40, -35, 12, }, - [12] = { 40, 10.1, 44, -36, 12, }, - [13] = { 42, 10.2, 48, -37, 12, }, - [14] = { 43, 10.3, 52, -38, 12, }, - [15] = { 44, 10.4, 56, -39, 12, }, - [16] = { 45, 10.5, 60, -40, 13, }, - [17] = { 46, 10.6, 64, -41, 13, }, - [18] = { 47, 10.7, 68, -42, 13, }, - [19] = { 48, 10.8, 72, -43, 13, }, - [20] = { 50, 10.9, 76, -44, 14, }, - [21] = { 51, 11, 80, -45, 14, }, - [22] = { 52, 11.1, 84, -46, 14, }, - [23] = { 53, 11.2, 88, -47, 15, }, - [24] = { 54, 11.3, 92, -48, 15, }, - [25] = { 56, 11.4, 96, -49, 15, }, - [26] = { 57, 11.5, 100, -50, 16, }, - [27] = { 58, 11.6, 104, -51, 16, }, - [28] = { 59, 11.7, 108, -52, 16, }, - [29] = { 60, 11.8, 112, -53, 17, }, - [30] = { 61, 11.9, 116, -54, 17, }, - }, -} -gems["Flesh Offering"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"offering_skill_effect_duration_per_corpse" = 500 - --"base_deal_no_damage" = ? - skill("offering", true), - }, - qualityMods = { - mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" - [4] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff" }), --"cast_speed_+%_from_haste_aura" - }, - levels = { - [1] = { 16, 20, 20, 20, }, - [2] = { 17, 21, 20, 21, }, - [3] = { 18, 21, 21, 21, }, - [4] = { 19, 22, 21, 22, }, - [5] = { 20, 22, 22, 22, }, - [6] = { 21, 23, 22, 23, }, - [7] = { 22, 23, 23, 23, }, - [8] = { 23, 24, 23, 24, }, - [9] = { 24, 24, 24, 24, }, - [10] = { 25, 25, 24, 25, }, - [11] = { 26, 25, 25, 25, }, - [12] = { 27, 26, 25, 26, }, - [13] = { 28, 26, 26, 26, }, - [14] = { 29, 27, 26, 27, }, - [15] = { 29, 27, 27, 27, }, - [16] = { 30, 28, 27, 28, }, - [17] = { 30, 28, 28, 28, }, - [18] = { 31, 29, 28, 29, }, - [19] = { 32, 29, 29, 29, }, - [20] = { 33, 30, 29, 30, }, - [21] = { 34, 30, 30, 30, }, - [22] = { 34, 31, 30, 31, }, - [23] = { 35, 31, 31, 31, }, - [24] = { 36, 32, 31, 32, }, - [25] = { 37, 32, 32, 32, }, - [26] = { 38, 33, 32, 33, }, - [27] = { 38, 33, 33, 33, }, - [28] = { 39, 34, 33, 34, }, - [29] = { 40, 34, 34, 34, }, - [30] = { 41, 35, 34, 35, }, - }, -} -gems["Freezing Pulse"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - cold = true, - setupFunc = function(env, output) - env.modDB:NewMod("Damage", "MORE", -100, "Skill:Freezing Pulse", ModFlag.Spell, { type = "DistanceRamp", ramp = {{0,0},{60*output.ProjectileSpeedMod,1}} }) - env.modDB:NewMod("EnemyFreezeChance", "BASE", 25, "Skill:Freezing Pulse", { type = "DistanceRamp", ramp = {{0,1},{15*output.ProjectileSpeedMod,0}} }) - end, - color = 3, - baseFlags = { - spell = true, - projectile = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.65), - skill("damageEffectiveness", 1.25), - skill("critChance", 6), - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" - }, - levels = { - [1] = { 4, 7, 11, 0, }, - [2] = { 5, 8, 13, 1, }, - [3] = { 6, 11, 16, 2, }, - [4] = { 7, 15, 23, 3, }, - [5] = { 8, 22, 33, 4, }, - [6] = { 9, 32, 49, 5, }, - [7] = { 10, 43, 65, 6, }, - [8] = { 11, 57, 85, 7, }, - [9] = { 12, 73, 110, 8, }, - [10] = { 13, 93, 140, 9, }, - [11] = { 14, 118, 176, 10, }, - [12] = { 14, 148, 221, 11, }, - [13] = { 15, 184, 276, 12, }, - [14] = { 16, 228, 342, 13, }, - [15] = { 17, 281, 421, 14, }, - [16] = { 18, 345, 517, 15, }, - [17] = { 18, 422, 633, 16, }, - [18] = { 18, 515, 772, 17, }, - [19] = { 18, 596, 894, 18, }, - [20] = { 18, 689, 1034, 19, }, - [21] = { 18, 759, 1138, 20, }, - [22] = { 19, 835, 1252, 21, }, - [23] = { 19, 918, 1377, 22, }, - [24] = { 19, 1009, 1513, 23, }, - [25] = { 20, 1108, 1662, 24, }, - [26] = { 20, 1216, 1824, 25, }, - [27] = { 20, 1335, 2002, 26, }, - [28] = { 21, 1464, 2196, 27, }, - [29] = { 21, 1605, 2407, 28, }, - [30] = { 21, 1759, 2638, 29, }, - }, -} -gems["Frost Bomb"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [34] = true, [10] = true, [26] = true, [18] = true, [17] = true, [19] = true, [36] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 1.3), - skill("critChance", 6), - skill("duration", 3.5), --"base_skill_effect_duration" = 3500 - --"base_secondary_skill_effect_duration" = 2000 - mod("ColdResist", "BASE", -20, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_cold_damage_resistance_%" = -20 - --"life_regeneration_rate_+%" = -75 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 6, 10, 14, }, - [2] = { 7, 12, 18, }, - [3] = { 8, 15, 23, }, - [4] = { 9, 20, 30, }, - [5] = { 10, 27, 40, }, - [6] = { 11, 36, 54, }, - [7] = { 12, 46, 70, }, - [8] = { 13, 59, 89, }, - [9] = { 13, 75, 113, }, - [10] = { 14, 94, 142, }, - [11] = { 14, 118, 176, }, - [12] = { 15, 145, 218, }, - [13] = { 16, 179, 268, }, - [14] = { 16, 219, 329, }, - [15] = { 17, 254, 382, }, - [16] = { 18, 295, 442, }, - [17] = { 18, 341, 511, }, - [18] = { 19, 393, 590, }, - [19] = { 19, 453, 679, }, - [20] = { 19, 521, 781, }, - [21] = { 20, 572, 857, }, - [22] = { 21, 627, 940, }, - [23] = { 21, 687, 1030, }, - [24] = { 21, 752, 1128, }, - [25] = { 22, 823, 1235, }, - [26] = { 23, 900, 1351, }, - [27] = { 23, 985, 1477, }, - [28] = { 23, 1076, 1614, }, - [29] = { 24, 1176, 1764, }, - [30] = { 24, 1284, 1926, }, - }, -} -gems["Frost Wall"] = { - intelligence = true, - active_skill = true, - spell = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.5), - --"wall_expand_delay_ms" = 150 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - --[3] = "wall_maximum_length" - [4] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [5] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 14, 3, 28, 8, 12, }, - [2] = { 16, 3.1, 28, 9, 16, }, - [3] = { 18, 3.2, 28, 14, 23, }, - [4] = { 20, 3.3, 28, 18, 27, }, - [5] = { 21, 3.4, 35, 25, 37, }, - [6] = { 23, 3.5, 35, 32, 49, }, - [7] = { 24, 3.6, 35, 42, 63, }, - [8] = { 25, 3.7, 35, 54, 81, }, - [9] = { 26, 3.8, 42, 68, 102, }, - [10] = { 27, 3.9, 42, 85, 128, }, - [11] = { 28, 4, 42, 106, 159, }, - [12] = { 29, 4.1, 42, 131, 196, }, - [13] = { 30, 4.2, 49, 160, 240, }, - [14] = { 31, 4.3, 49, 196, 294, }, - [15] = { 32, 4.4, 49, 227, 341, }, - [16] = { 33, 4.5, 49, 263, 394, }, - [17] = { 34, 4.6, 56, 303, 455, }, - [18] = { 35, 4.7, 56, 350, 524, }, - [19] = { 36, 4.8, 56, 402, 603, }, - [20] = { 37, 4.9, 56, 462, 693, }, - [21] = { 38, 5, 63, 506, 759, }, - [22] = { 38, 5.1, 63, 554, 832, }, - [23] = { 38, 5.2, 63, 607, 910, }, - [24] = { 39, 5.3, 63, 664, 996, }, - [25] = { 40, 5.4, 70, 726, 1089, }, - [26] = { 40, 5.5, 70, 794, 1191, }, - [27] = { 41, 5.6, 70, 867, 1301, }, - [28] = { 42, 5.7, 70, 947, 1420, }, - [29] = { 42, 5.8, 77, 1033, 1550, }, - [30] = { 42, 5.9, 77, 1127, 1691, }, - }, -} -gems["Frostbite"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.5), - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("SelfFreezeDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_freeze_duration_-%" = -1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_cold_damage_resistance_%" - [5] = mod("SelfFreezeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" - }, - levels = { - [1] = { 24, 9, 0, -25, 10, }, - [2] = { 26, 9.1, 4, -26, 10, }, - [3] = { 27, 9.2, 8, -27, 10, }, - [4] = { 29, 9.3, 12, -28, 10, }, - [5] = { 30, 9.4, 16, -29, 10, }, - [6] = { 32, 9.5, 20, -30, 11, }, - [7] = { 34, 9.6, 24, -31, 11, }, - [8] = { 35, 9.7, 28, -32, 11, }, - [9] = { 37, 9.8, 32, -33, 11, }, - [10] = { 38, 9.9, 36, -34, 11, }, - [11] = { 39, 10, 40, -35, 12, }, - [12] = { 40, 10.1, 44, -36, 12, }, - [13] = { 42, 10.2, 48, -37, 12, }, - [14] = { 43, 10.3, 52, -38, 12, }, - [15] = { 44, 10.4, 56, -39, 12, }, - [16] = { 45, 10.5, 60, -40, 13, }, - [17] = { 46, 10.6, 64, -41, 13, }, - [18] = { 47, 10.7, 68, -42, 13, }, - [19] = { 48, 10.8, 72, -43, 13, }, - [20] = { 50, 10.9, 76, -44, 14, }, - [21] = { 51, 11, 80, -45, 14, }, - [22] = { 52, 11.1, 84, -46, 14, }, - [23] = { 53, 11.2, 88, -47, 15, }, - [24] = { 54, 11.3, 92, -48, 15, }, - [25] = { 56, 11.4, 96, -49, 15, }, - [26] = { 57, 11.5, 100, -50, 16, }, - [27] = { 58, 11.6, 104, -51, 16, }, - [28] = { 59, 11.7, 108, -52, 16, }, - [29] = { 60, 11.8, 112, -53, 17, }, - [30] = { 61, 11.9, 116, -54, 17, }, - }, -} -gems["Frostbolt"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("critChance", 5), - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 6, 6, 10, }, - [2] = { 6, 7, 11, }, - [3] = { 7, 9, 14, }, - [4] = { 8, 13, 19, }, - [5] = { 9, 18, 27, }, - [6] = { 10, 28, 42, }, - [7] = { 11, 38, 57, }, - [8] = { 12, 50, 75, }, - [9] = { 13, 66, 99, }, - [10] = { 14, 86, 128, }, - [11] = { 14, 110, 165, }, - [12] = { 15, 141, 211, }, - [13] = { 16, 178, 268, }, - [14] = { 16, 225, 338, }, - [15] = { 17, 283, 424, }, - [16] = { 18, 354, 530, }, - [17] = { 18, 440, 661, }, - [18] = { 19, 547, 820, }, - [19] = { 19, 642, 963, }, - [20] = { 20, 752, 1129, }, - [21] = { 20, 836, 1254, }, - [22] = { 21, 928, 1392, }, - [23] = { 21, 1030, 1544, }, - [24] = { 21, 1142, 1713, }, - [25] = { 22, 1266, 1898, }, - [26] = { 23, 1402, 2103, }, - [27] = { 23, 1552, 2329, }, - [28] = { 23, 1718, 2577, }, - [29] = { 24, 1901, 2851, }, - [30] = { 24, 2102, 3153, }, - }, -} -gems["Glacial Cascade"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"upheaval_number_of_spikes" = 7 - --"is_area_damage" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - [4] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [5] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 13, 12, 19, 23, 35, }, - [2] = { 14, 15, 23, 28, 42, }, - [3] = { 15, 18, 27, 33, 50, }, - [4] = { 16, 21, 32, 39, 59, }, - [5] = { 17, 25, 38, 46, 69, }, - [6] = { 18, 27, 42, 51, 77, }, - [7] = { 18, 31, 47, 57, 85, }, - [8] = { 19, 34, 52, 63, 95, }, - [9] = { 19, 38, 58, 70, 105, }, - [10] = { 20, 42, 64, 77, 116, }, - [11] = { 21, 46, 71, 85, 129, }, - [12] = { 21, 51, 78, 94, 142, }, - [13] = { 22, 56, 86, 104, 157, }, - [14] = { 22, 62, 95, 115, 173, }, - [15] = { 23, 68, 105, 127, 191, }, - [16] = { 24, 75, 116, 139, 210, }, - [17] = { 24, 83, 127, 153, 231, }, - [18] = { 25, 91, 140, 169, 254, }, - [19] = { 25, 100, 154, 185, 280, }, - [20] = { 26, 110, 169, 203, 307, }, - [21] = { 27, 120, 185, 223, 337, }, - [22] = { 27, 132, 203, 245, 369, }, - [23] = { 28, 145, 223, 268, 405, }, - [24] = { 28, 158, 244, 294, 443, }, - [25] = { 29, 174, 267, 322, 485, }, - [26] = { 30, 190, 292, 352, 531, }, - [27] = { 30, 208, 319, 385, 581, }, - [28] = { 31, 227, 349, 421, 635, }, - [29] = { 31, 248, 382, 460, 694, }, - [30] = { 32, 271, 417, 502, 758, }, - }, -} -gems["Herald of Thunder"] = { - intelligence = true, - active_skill = true, - cast = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - cast = true, - duration = true, - lightning = true, - }, - skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [12] = true, [35] = true, [27] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 25), - skill("damageEffectiveness", 1.2), - skill("duration", 6), --"base_skill_effect_duration" = 6000 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - flag("CannotShock"), --"never_shock" = ? - --"display_skill_deals_secondary_damage" = ? - --"skill_can_add_multiple_charges_per_action" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_thunder_lightning_damage_+%" = 0.75 - }, - levelMods = { - [1] = mod("LightningMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_lightning_damage" - [2] = mod("LightningMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_lightning_damage" - [3] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_lightning_damage" - [4] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_lightning_damage" - [5] = skill("LightningMin", nil), --"secondary_minimum_base_lightning_damage" - [6] = skill("LightningMax", nil), --"secondary_maximum_base_lightning_damage" - }, - levels = { - [1] = { 2, 7, 2, 7, 1, 34, }, - [2] = { 2, 9, 2, 9, 1, 47, }, - [3] = { 3, 11, 3, 11, 1, 65, }, - [4] = { 3, 14, 3, 14, 2, 87, }, - [5] = { 4, 16, 4, 16, 2, 108, }, - [6] = { 5, 18, 5, 18, 3, 135, }, - [7] = { 5, 21, 5, 21, 3, 166, }, - [8] = { 6, 24, 6, 24, 4, 203, }, - [9] = { 7, 27, 7, 27, 5, 248, }, - [10] = { 8, 31, 8, 31, 6, 301, }, - [11] = { 9, 35, 9, 35, 8, 363, }, - [12] = { 10, 39, 10, 39, 9, 436, }, - [13] = { 11, 44, 11, 44, 11, 522, }, - [14] = { 12, 49, 12, 49, 13, 623, }, - [15] = { 13, 53, 13, 53, 15, 708, }, - [16] = { 14, 57, 14, 57, 17, 803, }, - [17] = { 15, 61, 15, 61, 19, 908, }, - [18] = { 16, 66, 16, 66, 21, 1026, }, - [19] = { 18, 71, 18, 71, 24, 1157, }, - [20] = { 19, 76, 19, 76, 27, 1303, }, - [21] = { 20, 81, 20, 81, 31, 1451, }, - [22] = { 22, 87, 22, 87, 34, 1615, }, - [23] = { 23, 94, 23, 94, 38, 1796, }, - [24] = { 25, 100, 25, 100, 43, 1995, }, - [25] = { 27, 107, 27, 107, 48, 2215, }, - [26] = { 29, 115, 29, 115, 54, 2457, }, - [27] = { 31, 123, 31, 123, 60, 2723, }, - [28] = { 33, 131, 33, 131, 67, 3016, }, - [29] = { 35, 140, 35, 140, 75, 3338, }, - [30] = { 37, 150, 37, 150, 83, 3692, }, - }, -} -gems["Ice Nova"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.7), - skill("critChance", 6), - --"skill_art_variation" = 0 - --"is_area_damage" = 1 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 10, 15, 21, }, - [2] = { 11, 17, 27, }, - [3] = { 13, 24, 37, }, - [4] = { 14, 31, 49, }, - [5] = { 16, 41, 64, }, - [6] = { 17, 53, 83, }, - [7] = { 19, 68, 106, }, - [8] = { 20, 81, 127, }, - [9] = { 21, 96, 151, }, - [10] = { 22, 115, 179, }, - [11] = { 23, 136, 212, }, - [12] = { 24, 160, 250, }, - [13] = { 25, 188, 294, }, - [14] = { 26, 221, 346, }, - [15] = { 27, 259, 405, }, - [16] = { 28, 304, 474, }, - [17] = { 29, 337, 526, }, - [18] = { 30, 373, 583, }, - [19] = { 30, 413, 646, }, - [20] = { 31, 458, 715, }, - [21] = { 32, 506, 791, }, - [22] = { 33, 560, 875, }, - [23] = { 34, 619, 966, }, - [24] = { 34, 683, 1067, }, - [25] = { 34, 754, 1178, }, - [26] = { 34, 832, 1300, }, - [27] = { 35, 917, 1433, }, - [28] = { 35, 1011, 1580, }, - [29] = { 35, 1114, 1740, }, - [30] = { 35, 1227, 1917, }, - }, -} -gems["Vaal Ice Nova"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - cold = true, - color = 3, - baseFlags = { - spell = true, - area = true, - cold = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [34] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.7), - skill("critChance", 6), - --"ice_nova_number_of_repeats" = 5 - --"ice_nova_radius_+%_per_repeat" = -20 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [2] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - }, - levels = { - [1] = { 11, 17, }, - [2] = { 14, 22, }, - [3] = { 18, 29, }, - [4] = { 24, 37, }, - [5] = { 31, 48, }, - [6] = { 39, 61, }, - [7] = { 49, 76, }, - [8] = { 57, 89, }, - [9] = { 67, 105, }, - [10] = { 78, 123, }, - [11] = { 91, 143, }, - [12] = { 106, 166, }, - [13] = { 123, 193, }, - [14] = { 143, 223, }, - [15] = { 164, 257, }, - [16] = { 189, 296, }, - [17] = { 208, 325, }, - [18] = { 228, 357, }, - [19] = { 250, 391, }, - [20] = { 274, 428, }, - [21] = { 300, 469, }, - [22] = { 328, 513, }, - [23] = { 359, 561, }, - [24] = { 393, 613, }, - [25] = { 429, 670, }, - [26] = { 468, 732, }, - [27] = { 511, 799, }, - [28] = { 558, 871, }, - [29] = { 608, 950, }, - [30] = { 663, 1035, }, - }, -} -gems["Ice Spear"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - cold = true, - parts = { - { - name = "First Form", - }, - { - name = "Second Form", - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - cold = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("damageEffectiveness", 0.8), - skill("critChance", 7), - --"base_is_projectile" = 1 - mod("CritChance", "INC", 600, 0, 0, { type = "SkillPart", skillPart = 2 }), --"ice_spear_second_form_critical_strike_chance_+%" = 600 - mod("PierceChance", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = mod("EnemyChillDuration", "INC", nil), --"chill_duration_+%" - }, - levels = { - [1] = { 9, 17, 26, 40, }, - [2] = { 10, 21, 31, 42, }, - [3] = { 11, 28, 42, 44, }, - [4] = { 12, 36, 53, 46, }, - [5] = { 13, 47, 70, 48, }, - [6] = { 14, 61, 91, 50, }, - [7] = { 16, 78, 117, 52, }, - [8] = { 16, 94, 140, 54, }, - [9] = { 17, 112, 168, 56, }, - [10] = { 18, 133, 200, 58, }, - [11] = { 19, 158, 237, 60, }, - [12] = { 20, 187, 281, 62, }, - [13] = { 21, 221, 332, 64, }, - [14] = { 22, 261, 391, 66, }, - [15] = { 23, 307, 460, 68, }, - [16] = { 24, 360, 540, 70, }, - [17] = { 24, 400, 600, 72, }, - [18] = { 25, 445, 667, 74, }, - [19] = { 26, 494, 741, 76, }, - [20] = { 27, 548, 822, 78, }, - [21] = { 28, 607, 911, 80, }, - [22] = { 29, 673, 1009, 82, }, - [23] = { 29, 745, 1118, 84, }, - [24] = { 30, 825, 1237, 86, }, - [25] = { 30, 912, 1369, 88, }, - [26] = { 31, 1009, 1513, 90, }, - [27] = { 32, 1115, 1672, 92, }, - [28] = { 33, 1232, 1847, 94, }, - [29] = { 33, 1360, 2040, 96, }, - [30] = { 34, 1501, 2251, 98, }, - }, -} -gems["Incinerate"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - fire = true, - channelling = true, - parts = { - { - name = "Base damage", - }, - { - name = "Fully charged", - }, - }, - color = 3, - baseFlags = { - spell = true, - projectile = true, - fire = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [18] = true, [33] = true, [58] = true, }, - baseMods = { - skill("castTime", 0.2), - skill("damageEffectiveness", 0.3), - --"flamethrower_damage_+%_per_stage_final" = 50 - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - --"skill_can_add_multiple_charges_per_action" = ? - mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - }, - levels = { - [1] = { 6, 6, 9, }, - [2] = { 6, 7, 11, }, - [3] = { 6, 10, 15, }, - [4] = { 6, 13, 19, }, - [5] = { 6, 16, 24, }, - [6] = { 6, 20, 31, }, - [7] = { 6, 25, 38, }, - [8] = { 6, 30, 45, }, - [9] = { 7, 35, 52, }, - [10] = { 7, 41, 61, }, - [11] = { 7, 47, 71, }, - [12] = { 7, 54, 82, }, - [13] = { 7, 63, 94, }, - [14] = { 7, 72, 108, }, - [15] = { 8, 83, 125, }, - [16] = { 8, 95, 143, }, - [17] = { 8, 104, 157, }, - [18] = { 8, 114, 171, }, - [19] = { 8, 125, 187, }, - [20] = { 9, 136, 204, }, - [21] = { 9, 149, 223, }, - [22] = { 9, 162, 244, }, - [23] = { 9, 177, 266, }, - [24] = { 9, 193, 289, }, - [25] = { 9, 210, 315, }, - [26] = { 10, 229, 343, }, - [27] = { 10, 249, 374, }, - [28] = { 10, 271, 406, }, - [29] = { 10, 295, 442, }, - [30] = { 10, 320, 480, }, - }, -} -gems["Kinetic Blast"] = { - intelligence = true, - active_skill = true, - attack = true, - area = true, - projectile = true, - parts = { - { - name = "Projectile", - area = false, - }, - { - name = "Explosions", - area = true, - }, - }, - color = 3, - baseFlags = { - attack = true, - projectile = true, - area = true, - }, - skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [11] = true, [17] = true, [19] = true, [22] = true, }, - weaponTypes = { - ["Wand"] = true, - }, - baseMods = { - skill("castTime", 1), - --"cluster_burst_spawn_amount" = 4 - mod("Damage", "MORE", -25, ModFlag.Area), --"active_skill_area_damage_+%_final" = -25 - --"base_is_projectile" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 15, 20, 0, }, - [2] = { 15, 21.4, 1, }, - [3] = { 15, 22.8, 2, }, - [4] = { 15, 24.2, 3, }, - [5] = { 15, 25.6, 4, }, - [6] = { 15, 27, 5, }, - [7] = { 15, 28.4, 6, }, - [8] = { 15, 29.8, 7, }, - [9] = { 16, 31.2, 8, }, - [10] = { 16, 32.6, 9, }, - [11] = { 16, 34, 10, }, - [12] = { 16, 35.4, 11, }, - [13] = { 16, 36.8, 12, }, - [14] = { 16, 38.2, 13, }, - [15] = { 16, 39.6, 14, }, - [16] = { 16, 41, 15, }, - [17] = { 16, 42.4, 16, }, - [18] = { 16, 43.8, 17, }, - [19] = { 16, 45.2, 18, }, - [20] = { 16, 46.6, 19, }, - [21] = { 16, 48, 20, }, - [22] = { 16, 49.4, 21, }, - [23] = { 16, 50.8, 22, }, - [24] = { 16, 52.2, 23, }, - [25] = { 17, 53.6, 24, }, - [26] = { 17, 55, 25, }, - [27] = { 17, 56.4, 26, }, - [28] = { 17, 57.8, 27, }, - [29] = { 17, 59.2, 28, }, - [30] = { 17, 60.6, 29, }, - }, -} -gems["Lightning Tendrils"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.8), - skill("damageEffectiveness", 0.35), - skill("critChance", 6), - --"base_skill_number_of_additional_hits" = 3 - --"is_area_damage" = ? - skill("dpsMultiplier", 4), - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 1, 3, 0, }, - [2] = { 7, 1, 4, 0, }, - [3] = { 8, 1, 5, 1, }, - [4] = { 9, 1, 7, 1, }, - [5] = { 10, 1, 10, 1, }, - [6] = { 11, 1, 16, 2, }, - [7] = { 12, 1, 21, 2, }, - [8] = { 13, 1, 28, 2, }, - [9] = { 14, 2, 38, 3, }, - [10] = { 16, 3, 49, 3, }, - [11] = { 18, 3, 64, 3, }, - [12] = { 19, 4, 82, 4, }, - [13] = { 20, 6, 105, 4, }, - [14] = { 21, 7, 133, 4, }, - [15] = { 22, 9, 168, 5, }, - [16] = { 23, 11, 212, 5, }, - [17] = { 24, 14, 265, 5, }, - [18] = { 25, 17, 332, 6, }, - [19] = { 26, 21, 392, 6, }, - [20] = { 26, 24, 461, 6, }, - [21] = { 27, 27, 514, 7, }, - [22] = { 27, 30, 573, 7, }, - [23] = { 28, 34, 638, 7, }, - [24] = { 28, 37, 710, 8, }, - [25] = { 29, 42, 790, 8, }, - [26] = { 29, 46, 878, 8, }, - [27] = { 30, 51, 975, 9, }, - [28] = { 30, 57, 1083, 9, }, - [29] = { 31, 63, 1202, 9, }, - [30] = { 31, 70, 1334, 10, }, - }, -} -gems["Lightning Trap"] = { - projectile = true, - trap = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - trap = true, - projectile = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.9), - skill("critChance", 5), - --"base_trap_duration" = 16000 - mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 - --"projectiles_nova" = ? - --"is_trap" = ? - --"base_skill_is_trapped" = ? - --"base_is_projectile" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - skill("trapCooldown", 2), - }, - qualityMods = { - mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 8, 3, 62, }, - [2] = { 9, 4, 77, }, - [3] = { 10, 5, 98, }, - [4] = { 10, 7, 124, }, - [5] = { 11, 8, 153, }, - [6] = { 12, 10, 188, }, - [7] = { 13, 12, 228, }, - [8] = { 14, 14, 263, }, - [9] = { 14, 16, 301, }, - [10] = { 16, 18, 344, }, - [11] = { 17, 21, 391, }, - [12] = { 18, 23, 444, }, - [13] = { 19, 26, 503, }, - [14] = { 20, 30, 568, }, - [15] = { 21, 34, 640, }, - [16] = { 22, 38, 720, }, - [17] = { 22, 41, 779, }, - [18] = { 23, 44, 841, }, - [19] = { 24, 48, 907, }, - [20] = { 24, 52, 979, }, - [21] = { 25, 56, 1055, }, - [22] = { 26, 60, 1136, }, - [23] = { 26, 64, 1223, }, - [24] = { 27, 69, 1316, }, - [25] = { 27, 74, 1415, }, - [26] = { 28, 80, 1521, }, - [27] = { 29, 86, 1634, }, - [28] = { 30, 92, 1755, }, - [29] = { 30, 99, 1884, }, - [30] = { 30, 106, 2021, }, - }, -} -gems["Vaal Lightning Trap"] = { - projectile = true, - trap = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - trap = true, - projectile = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.9), - skill("critChance", 5), - --"base_trap_duration" = 16000 - mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 - skill("duration", 4), --"base_skill_effect_duration" = 4000 - mod("PierceChance", "BASE", 100), --"pierce_%" = 100 - --"projectiles_nova" = ? - --"is_trap" = ? - --"base_skill_is_trapped" = ? - --"base_is_projectile" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"lightning_trap_projectiles_leave_shocking_ground" = ? - }, - qualityMods = { - mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 3, 62, }, - [2] = { 4, 77, }, - [3] = { 5, 98, }, - [4] = { 7, 124, }, - [5] = { 8, 153, }, - [6] = { 10, 188, }, - [7] = { 12, 228, }, - [8] = { 14, 263, }, - [9] = { 16, 301, }, - [10] = { 18, 344, }, - [11] = { 21, 391, }, - [12] = { 23, 444, }, - [13] = { 26, 503, }, - [14] = { 30, 568, }, - [15] = { 34, 640, }, - [16] = { 38, 720, }, - [17] = { 41, 779, }, - [18] = { 44, 841, }, - [19] = { 48, 907, }, - [20] = { 52, 979, }, - [21] = { 56, 1055, }, - [22] = { 60, 1136, }, - [23] = { 64, 1223, }, - [24] = { 69, 1316, }, - [25] = { 74, 1415, }, - [26] = { 80, 1521, }, - [27] = { 86, 1634, }, - [28] = { 92, 1755, }, - [29] = { 99, 1884, }, - [30] = { 106, 2021, }, - }, -} -gems["Lightning Warp"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - movement = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - movement = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [38] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"is_area_damage" = 1 - --"skill_override_pvp_scaling_time_ms" = 1000 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [4] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" - }, - levels = { - [1] = { 15, 1, 19, 0, }, - [2] = { 16, 1, 24, -2, }, - [3] = { 17, 2, 33, -4, }, - [4] = { 18, 2, 44, -6, }, - [5] = { 18, 3, 58, -8, }, - [6] = { 20, 4, 75, -10, }, - [7] = { 21, 5, 96, -12, }, - [8] = { 22, 6, 115, -14, }, - [9] = { 23, 7, 137, -16, }, - [10] = { 24, 9, 162, -18, }, - [11] = { 26, 10, 192, -20, }, - [12] = { 26, 12, 226, -22, }, - [13] = { 27, 14, 266, -24, }, - [14] = { 28, 16, 312, -26, }, - [15] = { 29, 19, 365, -28, }, - [16] = { 30, 22, 426, -30, }, - [17] = { 30, 26, 497, -32, }, - [18] = { 31, 30, 579, -34, }, - [19] = { 32, 34, 640, -36, }, - [20] = { 33, 37, 707, -38, }, - [21] = { 34, 41, 780, -40, }, - [22] = { 34, 45, 861, -42, }, - [23] = { 34, 50, 949, -44, }, - [24] = { 34, 55, 1046, -46, }, - [25] = { 35, 61, 1152, -48, }, - [26] = { 35, 67, 1269, -50, }, - [27] = { 36, 73, 1396, -52, }, - [28] = { 37, 81, 1536, -54, }, - [29] = { 37, 89, 1689, -56, }, - [30] = { 37, 98, 1856, -58, }, - }, -} -gems["Vaal Lightning Warp"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 1), - skill("damageEffectiveness", 0.5), - skill("critChance", 5), - --"is_area_damage" = 1 - --"skill_override_pvp_scaling_time_ms" = 1000 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [3] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" - }, - levels = { - [1] = { 1, 18, 0, }, - [2] = { 1, 24, -2, }, - [3] = { 2, 32, -4, }, - [4] = { 2, 42, -6, }, - [5] = { 3, 54, -8, }, - [6] = { 4, 70, -10, }, - [7] = { 5, 88, -12, }, - [8] = { 5, 104, -14, }, - [9] = { 6, 123, -16, }, - [10] = { 8, 145, -18, }, - [11] = { 9, 170, -20, }, - [12] = { 10, 199, -22, }, - [13] = { 12, 232, -24, }, - [14] = { 14, 270, -26, }, - [15] = { 17, 314, -28, }, - [16] = { 19, 364, -30, }, - [17] = { 22, 420, -32, }, - [18] = { 26, 485, -34, }, - [19] = { 28, 534, -36, }, - [20] = { 31, 586, -38, }, - [21] = { 34, 644, -40, }, - [22] = { 37, 707, -42, }, - [23] = { 41, 775, -44, }, - [24] = { 45, 850, -46, }, - [25] = { 49, 931, -48, }, - [26] = { 54, 1019, -50, }, - [27] = { 59, 1116, -52, }, - [28] = { 64, 1221, -54, }, - [29] = { 70, 1335, -56, }, - [30] = { 77, 1459, -58, }, - }, -} -gems["Magma Orb"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - chaining = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - area = true, - chaining = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [19] = true, [18] = true, [36] = true, [33] = true, [3] = true, [26] = true, [23] = true, }, - baseMods = { - skill("castTime", 0.7), - skill("damageEffectiveness", 1.25), - skill("critChance", 5), - --"is_area_damage" = ? - --"base_is_projectile" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [4] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" - }, - levels = { - [1] = { 5, 6, 9, 1, }, - [2] = { 6, 7, 10, 1, }, - [3] = { 6, 8, 12, 1, }, - [4] = { 7, 11, 17, 1, }, - [5] = { 7, 16, 24, 1, }, - [6] = { 8, 25, 37, 1, }, - [7] = { 9, 33, 50, 1, }, - [8] = { 10, 44, 66, 1, }, - [9] = { 11, 58, 87, 1, }, - [10] = { 12, 75, 112, 2, }, - [11] = { 13, 96, 144, 2, }, - [12] = { 14, 122, 183, 2, }, - [13] = { 15, 154, 232, 2, }, - [14] = { 16, 194, 291, 2, }, - [15] = { 18, 243, 365, 2, }, - [16] = { 19, 303, 454, 2, }, - [17] = { 20, 376, 564, 2, }, - [18] = { 21, 466, 698, 2, }, - [19] = { 21, 545, 818, 2, }, - [20] = { 22, 637, 956, 2, }, - [21] = { 23, 707, 1060, 3, }, - [22] = { 23, 784, 1175, 3, }, - [23] = { 24, 868, 1302, 3, }, - [24] = { 24, 961, 1442, 3, }, - [25] = { 25, 1063, 1595, 3, }, - [26] = { 26, 1176, 1764, 3, }, - [27] = { 26, 1300, 1950, 3, }, - [28] = { 27, 1437, 2155, 3, }, - [29] = { 27, 1587, 2380, 3, }, - [30] = { 28, 1752, 2628, 3, }, - }, -} -gems["Orb of Storms"] = { - lightning = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - area = true, - chaining = true, - color = 3, - baseFlags = { - spell = true, - area = true, - chaining = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [35] = true, [12] = true, [11] = true, [23] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.2), - skill("critChance", 5), - skill("duration", 6), --"base_skill_effect_duration" = 6000 - mod("ChainCount", "BASE", 0), --"number_of_additional_projectiles_in_chain" = 0 - --"storm_cloud_charged_damage_+%_final" = 0 - --"skill_can_add_multiple_charges_per_action" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - --[4] = "projectile_number_to_split" - }, - levels = { - [1] = { 11, 1, 3, 2, }, - [2] = { 12, 1, 3, 2, }, - [3] = { 13, 1, 4, 2, }, - [4] = { 14, 2, 6, 2, }, - [5] = { 15, 3, 8, 2, }, - [6] = { 16, 3, 10, 2, }, - [7] = { 17, 4, 13, 2, }, - [8] = { 18, 6, 17, 2, }, - [9] = { 19, 7, 22, 3, }, - [10] = { 20, 10, 29, 3, }, - [11] = { 21, 12, 36, 3, }, - [12] = { 22, 15, 45, 3, }, - [13] = { 23, 19, 56, 3, }, - [14] = { 24, 23, 70, 3, }, - [15] = { 25, 27, 82, 3, }, - [16] = { 26, 32, 96, 3, }, - [17] = { 26, 37, 112, 4, }, - [18] = { 27, 44, 131, 4, }, - [19] = { 27, 51, 152, 4, }, - [20] = { 28, 59, 177, 4, }, - [21] = { 28, 65, 195, 4, }, - [22] = { 29, 72, 215, 4, }, - [23] = { 29, 79, 238, 4, }, - [24] = { 30, 87, 262, 4, }, - [25] = { 30, 96, 289, 5, }, - [26] = { 30, 106, 318, 5, }, - [27] = { 30, 117, 350, 5, }, - [28] = { 31, 128, 385, 5, }, - [29] = { 31, 141, 424, 5, }, - [30] = { 32, 155, 466, 5, }, - }, -} -gems["Power Siphon"] = { - intelligence = true, - active_skill = true, - attack = true, - projectile = true, - color = 3, - baseFlags = { - attack = true, - projectile = true, - }, - skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["Wand"] = true, - }, - baseMods = { - skill("castTime", 1), - --"kill_enemy_on_hit_if_under_10%_life" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 13, 30, }, - [2] = { 13, 31.6, }, - [3] = { 13, 33.2, }, - [4] = { 13, 34.8, }, - [5] = { 13, 36.4, }, - [6] = { 13, 38, }, - [7] = { 13, 39.6, }, - [8] = { 14, 41.2, }, - [9] = { 14, 42.8, }, - [10] = { 14, 44.4, }, - [11] = { 14, 46, }, - [12] = { 14, 47.6, }, - [13] = { 14, 49.2, }, - [14] = { 14, 50.8, }, - [15] = { 14, 52.4, }, - [16] = { 14, 54, }, - [17] = { 14, 55.6, }, - [18] = { 14, 57.2, }, - [19] = { 15, 58.8, }, - [20] = { 15, 60.4, }, - [21] = { 15, 62, }, - [22] = { 15, 63.6, }, - [23] = { 15, 65.2, }, - [24] = { 15, 66.8, }, - [25] = { 15, 68.4, }, - [26] = { 16, 70, }, - [27] = { 16, 71.6, }, - [28] = { 16, 73.2, }, - [29] = { 16, 74.8, }, - [30] = { 16, 76.4, }, - }, -} -gems["Vaal Power Siphon"] = { - intelligence = true, - active_skill = true, - vaal = true, - attack = true, - projectile = true, - color = 3, - baseFlags = { - attack = true, - projectile = true, - vaal = true, - }, - skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [43] = true, }, - weaponTypes = { - ["Wand"] = true, - }, - baseMods = { - skill("castTime", 1), - --"power_siphon_fire_at_all_targets" = ? - --"skill_can_add_multiple_charges_per_action" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - --"kill_enemy_on_hit_if_under_10%_life" = ? - --"skill_can_fire_wand_projectiles" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 25, }, - [2] = { 26.6, }, - [3] = { 28.2, }, - [4] = { 29.8, }, - [5] = { 31.4, }, - [6] = { 33, }, - [7] = { 34.6, }, - [8] = { 36.2, }, - [9] = { 37.8, }, - [10] = { 39.4, }, - [11] = { 41, }, - [12] = { 42.6, }, - [13] = { 44.2, }, - [14] = { 45.8, }, - [15] = { 47.4, }, - [16] = { 49, }, - [17] = { 50.6, }, - [18] = { 52.2, }, - [19] = { 53.8, }, - [20] = { 55.4, }, - [21] = { 57, }, - [22] = { 58.6, }, - [23] = { 60.2, }, - [24] = { 61.8, }, - [25] = { 63.4, }, - [26] = { 65, }, - [27] = { 66.6, }, - [28] = { 68.2, }, - [29] = { 69.8, }, - [30] = { 71.4, }, - }, -} -gems["Purity of Elements"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - mod("FireResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" = 0 - mod("ColdResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" = 0 - mod("LightningResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" = 0 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_resist_all_elements_%" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 12, 0, }, - [2] = { 13, 3, }, - [3] = { 14, 6, }, - [4] = { 15, 9, }, - [5] = { 15, 12, }, - [6] = { 16, 15, }, - [7] = { 17, 18, }, - [8] = { 18, 21, }, - [9] = { 19, 23, }, - [10] = { 20, 25, }, - [11] = { 20, 27, }, - [12] = { 21, 29, }, - [13] = { 22, 31, }, - [14] = { 23, 33, }, - [15] = { 24, 35, }, - [16] = { 25, 36, }, - [17] = { 25, 37, }, - [18] = { 26, 38, }, - [19] = { 27, 39, }, - [20] = { 27, 40, }, - [21] = { 28, 41, }, - [22] = { 29, 42, }, - [23] = { 29, 43, }, - [24] = { 30, 44, }, - [25] = { 31, 45, }, - [26] = { 31, 46, }, - [27] = { 32, 47, }, - [28] = { 33, 48, }, - [29] = { 33, 49, }, - [30] = { 34, 50, }, - }, -} -gems["Purity of Lightning"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_lightning_damage_resistance_%" - [2] = mod("LightningResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 22, 0, 0, }, - [2] = { 23, 0, 3, }, - [3] = { 24, 0, 6, }, - [4] = { 25, 0, 9, }, - [5] = { 26, 1, 12, }, - [6] = { 27, 1, 15, }, - [7] = { 28, 1, 18, }, - [8] = { 29, 1, 21, }, - [9] = { 30, 1, 23, }, - [10] = { 31, 1, 25, }, - [11] = { 32, 2, 27, }, - [12] = { 33, 2, 29, }, - [13] = { 34, 2, 31, }, - [14] = { 35, 2, 33, }, - [15] = { 36, 2, 35, }, - [16] = { 37, 2, 36, }, - [17] = { 38, 3, 37, }, - [18] = { 39, 3, 38, }, - [19] = { 40, 3, 39, }, - [20] = { 41, 4, 40, }, - [21] = { 42, 4, 41, }, - [22] = { 43, 4, 42, }, - [23] = { 44, 5, 43, }, - [24] = { 45, 5, 44, }, - [25] = { 46, 5, 45, }, - [26] = { 47, 5, 46, }, - [27] = { 48, 5, 47, }, - [28] = { 49, 5, 48, }, - [29] = { 50, 5, 49, }, - [30] = { 51, 5, 50, }, - }, -} -gems["Raise Spectre"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, - baseMods = { - skill("castTime", 0.85), - --"base_number_of_spectres_allowed" = 1 - --"active_skill_minion_movement_velocity_+%_final" = 55 - --"movement_velocity_cap" = -89 - --"damage_taken_+%_from_arrow_traps_final" = -90 - --"minion_elemental_resistance_%" = 30 - }, - qualityMods = { - --"minion_movement_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "active_skill_minion_damage_+%_final" - --[3] = "active_skill_minion_life_+%_final" - --[4] = "active_skill_minion_energy_shield_+%_final" - }, - levels = { - [1] = { 21, -30, -20, -20, }, - [2] = { 23, -25, -19, -19, }, - [3] = { 24, -21, -18, -18, }, - [4] = { 26, -17, -17, -17, }, - [5] = { 27, -14, -16, -16, }, - [6] = { 28, -11, -15, -15, }, - [7] = { 29, -8, -14, -14, }, - [8] = { 30, -6, -13, -13, }, - [9] = { 31, -4, -12, -12, }, - [10] = { 32, -2, -11, -11, }, - [11] = { 33, 0, -10, -10, }, - [12] = { 34, 1, -9, -9, }, - [13] = { 35, 2, -8, -8, }, - [14] = { 36, 3, -7, -7, }, - [15] = { 37, 4, -6, -6, }, - [16] = { 38, 5, -5, -5, }, - [17] = { 39, 6, -4, -4, }, - [18] = { 40, 7, -3, -3, }, - [19] = { 41, 8, -2, -2, }, - [20] = { 42, 10, 0, 0, }, - [21] = { 43, 12, 2, 2, }, - [22] = { 44, 14, 4, 4, }, - [23] = { 44, 16, 6, 6, }, - [24] = { 45, 18, 8, 8, }, - [25] = { 46, 20, 10, 10, }, - [26] = { 47, 22, 12, 12, }, - [27] = { 48, 24, 14, 14, }, - [28] = { 49, 26, 16, 16, }, - [29] = { 50, 28, 18, 18, }, - [30] = { 51, 30, 20, 20, }, - }, -} -gems["Raise Zombie"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, - baseMods = { - skill("castTime", 0.85), - --"base_number_of_zombies_allowed" = 3 - --"active_skill_minion_damage_+%_final" = 0 - --"display_minion_monster_type" = 1 - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - --"minion_movement_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "display_minion_monster_level" - }, - levels = { - [1] = { 10, 2, }, - [2] = { 11, 3, }, - [3] = { 12, 5, }, - [4] = { 13, 8, }, - [5] = { 14, 12, }, - [6] = { 16, 16, }, - [7] = { 18, 20, }, - [8] = { 21, 24, }, - [9] = { 24, 28, }, - [10] = { 26, 32, }, - [11] = { 28, 36, }, - [12] = { 30, 40, }, - [13] = { 31, 44, }, - [14] = { 32, 48, }, - [15] = { 33, 52, }, - [16] = { 34, 56, }, - [17] = { 35, 60, }, - [18] = { 36, 64, }, - [19] = { 37, 67, }, - [20] = { 38, 70, }, - [21] = { 38, 72, }, - [22] = { 38, 74, }, - [23] = { 38, 76, }, - [24] = { 39, 78, }, - [25] = { 40, 80, }, - [26] = { 40, 82, }, - [27] = { 41, 84, }, - [28] = { 42, 86, }, - [29] = { 42, 88, }, - [30] = { 42, 90, }, - }, -} -gems["Righteous Fire"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - fire = true, - setupFunc = function(env, output) - if env.mainSkill.skillFlags.totem then - env.mainSkill.skillData.FireDot = output.TotemLife * 0.5 - else - env.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5 - end - end, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [29] = true, [36] = true, [40] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - --"base_righteous_fire_%_of_max_life_to_deal_to_nearby_per_minute" = 3000 - --"base_nonlethal_fire_damage_%_of_maximum_life_taken_per_minute" = 5400 - --"base_righteous_fire_%_of_max_energy_shield_to_deal_to_nearby_per_minute" = 3000 - --"base_nonlethal_fire_damage_%_of_maximum_energy_shield_taken_per_minute" = 4200 - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"righteous_fire_spell_damage_+%_final" - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 40, 0, }, - [2] = { 41, 0, }, - [3] = { 42, 0, }, - [4] = { 43, 1, }, - [5] = { 44, 1, }, - [6] = { 45, 1, }, - [7] = { 46, 1, }, - [8] = { 47, 2, }, - [9] = { 48, 2, }, - [10] = { 49, 2, }, - [11] = { 50, 2, }, - [12] = { 51, 3, }, - [13] = { 52, 3, }, - [14] = { 53, 3, }, - [15] = { 54, 3, }, - [16] = { 55, 4, }, - [17] = { 56, 4, }, - [18] = { 57, 4, }, - [19] = { 58, 4, }, - [20] = { 59, 5, }, - [21] = { 60, 5, }, - [22] = { 61, 5, }, - [23] = { 62, 5, }, - [24] = { 63, 6, }, - [25] = { 64, 6, }, - [26] = { 65, 6, }, - [27] = { 66, 6, }, - [28] = { 67, 7, }, - [29] = { 68, 7, }, - [30] = { 69, 7, }, - }, -} -gems["Vaal Righteous Fire"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - fire = true, - setupFunc = function(env, output) - env.mainSkill.skillData.FireMin = output.EnergyShield + output.Life - 1 - env.mainSkill.skillData.FireMax = output.EnergyShield + output.Life - 1 - end, - color = 3, - baseFlags = { - spell = true, - area = true, - fire = true, - vaal = true, - }, - skillTypes = { [2] = true, [11] = true, [10] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 1), - skill("critChance", 5), - --"damage_cannot_be_reflected" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, ModFlag.Spell, 0, nil), --"spell_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" - }, - levels = { - [1] = { 20, }, - [2] = { 21, }, - [3] = { 22, }, - [4] = { 23, }, - [5] = { 24, }, - [6] = { 25, }, - [7] = { 26, }, - [8] = { 27, }, - [9] = { 28, }, - [10] = { 29, }, - [11] = { 30, }, - [12] = { 31, }, - [13] = { 32, }, - [14] = { 33, }, - [15] = { 34, }, - [16] = { 35, }, - [17] = { 36, }, - [18] = { 37, }, - [19] = { 38, }, - [20] = { 39, }, - [21] = { 40, }, - [22] = { 41, }, - [23] = { 42, }, - [24] = { 43, }, - [25] = { 44, }, - [26] = { 45, }, - [27] = { 46, }, - [28] = { 47, }, - [29] = { 48, }, - [30] = { 49, }, - }, -} -gems["Scorching Ray"] = { - intelligence = true, - active_skill = true, - spell = true, - fire = true, - duration = true, - channelling = true, - parts = { - { - name = "1 Stage", - }, - { - name = "4 Stages", - }, - { - name = "8 Stages", - }, - }, - color = 3, - baseFlags = { - spell = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [18] = true, [40] = true, [33] = true, [29] = true, [12] = true, [58] = true, [59] = true, [52] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"fire_beam_additional_stack_damage_+%_final" = -40 - --"display_max_fire_beam_stacks" = 8 - mod("FireResist", "BASE", -3, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"fire_beam_enemy_fire_resistance_%_per_stack" = -3 - --"fire_beam_enemy_fire_resistance_%_maximum" = -24 - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - skill("stackCount", 4, { type = "SkillPart", skillPart = 2 }), - skill("stackCount", 8, { type = "SkillPart", skillPart = 3 }), - mod("Damage", "MORE", 180, 0, 0, { type = "SkillPart", skillPart = 2 }), - mod("Damage", "MORE", 420, 0, 0, { type = "SkillPart", skillPart = 3 }), - }, - qualityMods = { - --"fire_beam_length_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - }, - levels = { - [1] = { 4, 9.6833333333333, }, - [2] = { 4, 12.65, }, - [3] = { 4, 17.683333333333, }, - [4] = { 5, 24.233333333333, }, - [5] = { 5, 32.716666666667, }, - [6] = { 5, 43.666666666667, }, - [7] = { 6, 57.7, }, - [8] = { 6, 70.75, }, - [9] = { 6, 86.4, }, - [10] = { 7, 105.13333333333, }, - [11] = { 7, 127.55, }, - [12] = { 7, 154.3, }, - [13] = { 8, 186.2, }, - [14] = { 8, 224.16666666667, }, - [15] = { 8, 269.33333333333, }, - [16] = { 9, 322.96666666667, }, - [17] = { 9, 364.18333333333, }, - [18] = { 9, 410.36666666667, }, - [19] = { 10, 462.06666666667, }, - [20] = { 10, 519.93333333333, }, - [21] = { 10, 584.7, }, - [22] = { 11, 657.13333333333, }, - [23] = { 11, 738.1, }, - [24] = { 11, 828.61666666667, }, - [25] = { 12, 929.73333333333, }, - [26] = { 12, 1042.6833333333, }, - [27] = { 12, 1168.8, }, - [28] = { 13, 1309.5833333333, }, - [29] = { 13, 1466.6666666667, }, - [30] = { 13, 1641.9166666667, }, - }, -} -gems["Shock Nova"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - parts = { - { - name = "Ring", - }, - { - name = "Nova", - }, - }, - color = 3, - baseFlags = { - spell = true, - area = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, [43] = true, }, - baseMods = { - skill("castTime", 0.75), - skill("damageEffectiveness", 0.6), - skill("critChance", 6), - mod("Damage", "MORE", -80, 0, 0, { type = "SkillPart", skillPart = 1 }), --"newshocknova_first_ring_damage_+%_final" = -80 - mod("EnemyShockChance", "BASE", 20), --"base_chance_to_shock_%" = 20 - --"is_area_damage" = ? - }, - qualityMods = { - mod("EnemyShockDuration", "INC", 2), --"shock_duration_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 13, 26, 79, }, - [2] = { 14, 32, 95, }, - [3] = { 15, 38, 115, }, - [4] = { 16, 46, 137, }, - [5] = { 17, 55, 164, }, - [6] = { 18, 61, 184, }, - [7] = { 18, 69, 206, }, - [8] = { 19, 77, 231, }, - [9] = { 19, 86, 258, }, - [10] = { 20, 96, 288, }, - [11] = { 20, 107, 321, }, - [12] = { 21, 119, 358, }, - [13] = { 22, 133, 399, }, - [14] = { 22, 148, 443, }, - [15] = { 23, 164, 493, }, - [16] = { 23, 182, 547, }, - [17] = { 24, 202, 607, }, - [18] = { 25, 224, 673, }, - [19] = { 25, 248, 745, }, - [20] = { 26, 275, 825, }, - [21] = { 26, 304, 913, }, - [22] = { 27, 336, 1009, }, - [23] = { 28, 372, 1115, }, - [24] = { 28, 411, 1232, }, - [25] = { 29, 453, 1360, }, - [26] = { 29, 500, 1501, }, - [27] = { 30, 552, 1655, }, - [28] = { 31, 608, 1824, }, - [29] = { 31, 670, 2010, }, - [30] = { 32, 738, 2214, }, - }, -} -gems["Spark"] = { - projectile = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.65), - skill("damageEffectiveness", 0.7), - skill("critChance", 6), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - [4] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - }, - levels = { - [1] = { 5, 1, 20, 4, }, - [2] = { 6, 1, 22, 4, }, - [3] = { 7, 1, 27, 4, }, - [4] = { 8, 2, 36, 4, }, - [5] = { 9, 3, 49, 4, }, - [6] = { 10, 4, 69, 4, }, - [7] = { 11, 5, 88, 4, }, - [8] = { 12, 6, 110, 4, }, - [9] = { 14, 7, 136, 5, }, - [10] = { 16, 9, 167, 5, }, - [11] = { 17, 11, 202, 5, }, - [12] = { 18, 13, 243, 5, }, - [13] = { 19, 15, 291, 5, }, - [14] = { 20, 18, 345, 5, }, - [15] = { 21, 22, 409, 5, }, - [16] = { 22, 25, 481, 5, }, - [17] = { 22, 30, 565, 6, }, - [18] = { 22, 35, 661, 6, }, - [19] = { 22, 39, 742, 6, }, - [20] = { 23, 44, 832, 6, }, - [21] = { 23, 47, 897, 6, }, - [22] = { 24, 51, 967, 6, }, - [23] = { 24, 55, 1041, 6, }, - [24] = { 25, 59, 1120, 6, }, - [25] = { 25, 63, 1205, 7, }, - [26] = { 26, 68, 1296, 7, }, - [27] = { 26, 73, 1393, 7, }, - [28] = { 26, 79, 1496, 7, }, - [29] = { 26, 85, 1607, 7, }, - [30] = { 27, 91, 1725, 7, }, - }, -} -gems["Vaal Spark"] = { - projectile = true, - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - projectile = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.65), - skill("damageEffectiveness", 0.4), - skill("critChance", 5), - skill("duration", 2), --"base_skill_effect_duration" = 2000 - --"base_number_of_projectiles_in_spiral_nova" = 100 - --"projectile_spiral_nova_time_ms" = 3000 - --"projectile_spiral_nova_angle" = 0 - --"base_is_projectile" = ? - }, - qualityMods = { - mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 1, 11, }, - [2] = { 1, 12, }, - [3] = { 1, 15, }, - [4] = { 1, 19, }, - [5] = { 1, 27, }, - [6] = { 2, 37, }, - [7] = { 3, 48, }, - [8] = { 3, 60, }, - [9] = { 4, 74, }, - [10] = { 5, 91, }, - [11] = { 6, 110, }, - [12] = { 7, 133, }, - [13] = { 8, 159, }, - [14] = { 10, 188, }, - [15] = { 12, 223, }, - [16] = { 14, 263, }, - [17] = { 16, 308, }, - [18] = { 19, 361, }, - [19] = { 21, 405, }, - [20] = { 24, 454, }, - [21] = { 26, 489, }, - [22] = { 28, 527, }, - [23] = { 30, 568, }, - [24] = { 32, 611, }, - [25] = { 35, 658, }, - [26] = { 37, 707, }, - [27] = { 40, 760, }, - [28] = { 43, 816, }, - [29] = { 46, 877, }, - [30] = { 50, 941, }, - }, -} -gems["Spirit Offering"] = { - minion = true, - intelligence = true, - active_skill = true, - spell = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, - baseMods = { - skill("castTime", 1), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"offering_skill_effect_duration_per_corpse" = 500 - --"spirit_offering_life_%_added_as_base_maximum_energy_shield_per_corpse_consumed" = 2 - --"base_deal_no_damage" = ? - skill("offering", true), - }, - qualityMods = { - mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_chaos" - [3] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" - }, - levels = { - [1] = { 16, 20, 20, }, - [2] = { 17, 20, 21, }, - [3] = { 18, 21, 21, }, - [4] = { 19, 21, 22, }, - [5] = { 20, 22, 22, }, - [6] = { 21, 22, 23, }, - [7] = { 22, 23, 23, }, - [8] = { 23, 23, 24, }, - [9] = { 24, 24, 24, }, - [10] = { 25, 24, 25, }, - [11] = { 26, 25, 25, }, - [12] = { 27, 25, 26, }, - [13] = { 28, 26, 26, }, - [14] = { 29, 26, 27, }, - [15] = { 29, 27, 27, }, - [16] = { 30, 27, 28, }, - [17] = { 30, 28, 28, }, - [18] = { 31, 28, 29, }, - [19] = { 32, 29, 29, }, - [20] = { 33, 29, 30, }, - [21] = { 34, 30, 30, }, - [22] = { 34, 30, 31, }, - [23] = { 35, 31, 31, }, - [24] = { 36, 31, 32, }, - [25] = { 37, 32, 32, }, - [26] = { 38, 32, 33, }, - [27] = { 38, 33, 33, }, - [28] = { 39, 33, 34, }, - [29] = { 40, 34, 34, }, - [30] = { 41, 34, 35, }, - }, -} -gems["Storm Call"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [26] = true, [45] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.8), - skill("critChance", 6), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - --[4] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 6, 13, 24, 0, }, - [2] = { 7, 16, 30, 0, }, - [3] = { 8, 22, 40, 1, }, - [4] = { 9, 28, 53, 1, }, - [5] = { 10, 37, 68, 1, }, - [6] = { 11, 46, 86, 2, }, - [7] = { 12, 58, 108, 2, }, - [8] = { 13, 69, 128, 2, }, - [9] = { 13, 81, 151, 3, }, - [10] = { 14, 95, 177, 3, }, - [11] = { 14, 111, 206, 3, }, - [12] = { 15, 130, 241, 4, }, - [13] = { 16, 151, 280, 4, }, - [14] = { 16, 175, 325, 4, }, - [15] = { 17, 202, 376, 5, }, - [16] = { 18, 234, 434, 5, }, - [17] = { 18, 257, 478, 5, }, - [18] = { 19, 283, 525, 6, }, - [19] = { 19, 310, 577, 6, }, - [20] = { 19, 341, 633, 6, }, - [21] = { 20, 374, 694, 7, }, - [22] = { 21, 410, 761, 7, }, - [23] = { 21, 449, 834, 7, }, - [24] = { 21, 492, 914, 8, }, - [25] = { 22, 538, 1000, 8, }, - [26] = { 23, 589, 1094, 8, }, - [27] = { 23, 644, 1196, 9, }, - [28] = { 23, 704, 1308, 9, }, - [29] = { 24, 769, 1429, 9, }, - [30] = { 24, 840, 1560, 10, }, - }, -} -gems["Vaal Storm Call"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - lightning = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.8), - skill("critChance", 6), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"is_area_damage" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 13, 25, }, - [2] = { 17, 31, }, - [3] = { 22, 41, }, - [4] = { 29, 53, }, - [5] = { 36, 67, }, - [6] = { 46, 85, }, - [7] = { 57, 105, }, - [8] = { 67, 124, }, - [9] = { 78, 144, }, - [10] = { 90, 168, }, - [11] = { 105, 194, }, - [12] = { 121, 225, }, - [13] = { 140, 259, }, - [14] = { 161, 298, }, - [15] = { 184, 343, }, - [16] = { 211, 393, }, - [17] = { 231, 429, }, - [18] = { 253, 470, }, - [19] = { 276, 513, }, - [20] = { 302, 560, }, - [21] = { 329, 611, }, - [22] = { 359, 666, }, - [23] = { 391, 726, }, - [24] = { 426, 791, }, - [25] = { 464, 861, }, - [26] = { 504, 937, }, - [27] = { 549, 1019, }, - [28] = { 596, 1108, }, - [29] = { 648, 1204, }, - [30] = { 704, 1307, }, - }, -} -gems["Summon Chaos Golem"] = { - intelligence = true, - active_skill = true, - chaos = true, - minion = true, - spell = true, - golem = true, - color = 3, - baseFlags = { - spell = true, - minion = true, - golem = true, - chaos = true, - }, - skillTypes = { [36] = true, [50] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 5 - mod("Misc", "LIST", { type = "Condition", var = "HaveChaosGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - --[3] = "chaos_golem_grants_additional_physical_damage_reduction_%" - [4] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 3, 30, 34, }, - [2] = { 32, 1, 3, 32, 36, }, - [3] = { 34, 1, 3, 34, 38, }, - [4] = { 36, 2, 3, 36, 40, }, - [5] = { 38, 2, 3, 38, 42, }, - [6] = { 40, 3, 3, 40, 44, }, - [7] = { 42, 3, 3, 42, 46, }, - [8] = { 44, 4, 3, 44, 48, }, - [9] = { 44, 4, 3, 46, 50, }, - [10] = { 46, 5, 3, 48, 52, }, - [11] = { 48, 5, 3, 50, 54, }, - [12] = { 48, 6, 4, 52, 56, }, - [13] = { 50, 6, 4, 54, 58, }, - [14] = { 50, 7, 4, 56, 60, }, - [15] = { 52, 7, 4, 58, 62, }, - [16] = { 52, 8, 4, 60, 64, }, - [17] = { 52, 8, 4, 62, 66, }, - [18] = { 52, 9, 4, 64, 68, }, - [19] = { 54, 9, 4, 66, 69, }, - [20] = { 54, 10, 4, 68, 70, }, - [21] = { 56, 10, 4, 70, 72, }, - [22] = { 56, 11, 5, 72, 74, }, - [23] = { 58, 11, 5, 74, 76, }, - [24] = { 58, 12, 5, 76, 78, }, - [25] = { 60, 12, 5, 78, 80, }, - [26] = { 60, 13, 5, 80, 82, }, - [27] = { 60, 13, 5, 82, 84, }, - [28] = { 60, 14, 5, 84, 86, }, - [29] = { 62, 14, 5, 86, 88, }, - [30] = { 62, 15, 5, 88, 90, }, - }, -} -gems["Summon Lightning Golem"] = { - intelligence = true, - active_skill = true, - lightning = true, - minion = true, - spell = true, - golem = true, - color = 3, - baseFlags = { - spell = true, - minion = true, - golem = true, - lightning = true, - }, - skillTypes = { [36] = true, [35] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [45] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 11 - mod("Misc", "LIST", { type = "Condition", var = "HaveLightningGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [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" - }, - levels = { - [1] = { 30, 0, 6, 30, 34, }, - [2] = { 32, 1, 6, 32, 36, }, - [3] = { 34, 2, 6, 34, 38, }, - [4] = { 36, 3, 6, 36, 40, }, - [5] = { 38, 4, 6, 38, 42, }, - [6] = { 40, 5, 7, 40, 44, }, - [7] = { 42, 6, 7, 42, 46, }, - [8] = { 44, 7, 7, 44, 48, }, - [9] = { 44, 8, 7, 46, 50, }, - [10] = { 46, 9, 7, 48, 52, }, - [11] = { 48, 10, 8, 50, 54, }, - [12] = { 48, 11, 8, 52, 56, }, - [13] = { 50, 12, 8, 54, 58, }, - [14] = { 50, 13, 8, 56, 60, }, - [15] = { 52, 14, 8, 58, 62, }, - [16] = { 52, 15, 9, 60, 64, }, - [17] = { 52, 16, 9, 62, 66, }, - [18] = { 52, 17, 9, 64, 68, }, - [19] = { 54, 18, 9, 66, 69, }, - [20] = { 54, 19, 9, 68, 70, }, - [21] = { 56, 20, 10, 70, 72, }, - [22] = { 56, 21, 10, 72, 74, }, - [23] = { 58, 22, 10, 74, 76, }, - [24] = { 58, 23, 10, 76, 78, }, - [25] = { 60, 24, 10, 78, 80, }, - [26] = { 60, 25, 11, 80, 82, }, - [27] = { 60, 26, 11, 82, 84, }, - [28] = { 60, 27, 11, 84, 86, }, - [29] = { 62, 28, 11, 86, 88, }, - [30] = { 62, 29, 11, 88, 90, }, - }, -} -gems["Summon Raging Spirit"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - duration = true, - fire = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"base_number_of_raging_spirits_allowed" = 20 - --"active_skill_minion_added_damage_+%_final" = -30 - }, - qualityMods = { - --"minion_movement_speed_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - }, - levels = { - [1] = { 4, }, - [2] = { 4, }, - [3] = { 5, }, - [4] = { 5, }, - [5] = { 6, }, - [6] = { 6, }, - [7] = { 6, }, - [8] = { 7, }, - [9] = { 7, }, - [10] = { 8, }, - [11] = { 8, }, - [12] = { 9, }, - [13] = { 9, }, - [14] = { 10, }, - [15] = { 10, }, - [16] = { 10, }, - [17] = { 11, }, - [18] = { 11, }, - [19] = { 11, }, - [20] = { 12, }, - [21] = { 12, }, - [22] = { 13, }, - [23] = { 13, }, - [24] = { 13, }, - [25] = { 14, }, - [26] = { 14, }, - [27] = { 14, }, - [28] = { 15, }, - [29] = { 15, }, - [30] = { 15, }, - }, -} -gems["Summon Skeletons"] = { - intelligence = true, - active_skill = true, - spell = true, - minion = true, - duration = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, - baseMods = { - skill("castTime", 0.8), - --"number_of_melee_skeletons_to_summon" = 2 - skill("duration", 20), --"base_skill_effect_duration" = 20000 - --"active_skill_minion_added_damage_+%_final" = -50 - --"display_minion_monster_type" = 2 - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_number_of_skeletons_allowed" - --[3] = "display_minion_monster_level" - }, - levels = { - [1] = { 6, 4, 10, }, - [2] = { 7, 4, 13, }, - [3] = { 8, 4, 16, }, - [4] = { 9, 4, 19, }, - [5] = { 10, 4, 22, }, - [6] = { 11, 4, 25, }, - [7] = { 12, 4, 28, }, - [8] = { 12, 4, 32, }, - [9] = { 13, 5, 36, }, - [10] = { 14, 5, 40, }, - [11] = { 15, 5, 44, }, - [12] = { 15, 5, 47, }, - [13] = { 16, 5, 50, }, - [14] = { 17, 5, 53, }, - [15] = { 17, 5, 56, }, - [16] = { 18, 6, 59, }, - [17] = { 19, 6, 62, }, - [18] = { 20, 6, 64, }, - [19] = { 20, 6, 66, }, - [20] = { 21, 6, 68, }, - [21] = { 21, 6, 70, }, - [22] = { 22, 6, 72, }, - [23] = { 22, 6, 74, }, - [24] = { 22, 6, 76, }, - [25] = { 23, 6, 78, }, - [26] = { 23, 6, 80, }, - [27] = { 24, 6, 82, }, - [28] = { 24, 6, 84, }, - [29] = { 25, 6, 86, }, - [30] = { 25, 6, 88, }, - }, -} -gems["Vaal Summon Skeletons"] = { - intelligence = true, - active_skill = true, - vaal = true, - spell = true, - minion = true, - duration = true, - unsupported = true, - color = 3, - baseFlags = { - }, - skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, }, - baseMods = { - skill("castTime", 0.8), - --"number_of_leader_skeletons_to_summon" = 1 - skill("duration", 20), --"base_skill_effect_duration" = 20000 - --"display_minion_monster_type" = 2 - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - --[1] = "number_of_melee_skeletons_to_summon" - --[2] = "number_of_archer_skeletons_to_summon" - --[3] = "number_of_mage_skeletons_to_summon" - --[4] = "base_number_of_skeletons_allowed" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 14, 2, 0, 17, 10, }, - [2] = { 15, 2, 0, 18, 13, }, - [3] = { 15, 3, 0, 19, 16, }, - [4] = { 16, 3, 0, 20, 19, }, - [5] = { 16, 4, 0, 21, 22, }, - [6] = { 17, 4, 0, 22, 25, }, - [7] = { 17, 5, 0, 23, 28, }, - [8] = { 18, 5, 0, 24, 32, }, - [9] = { 18, 5, 1, 25, 36, }, - [10] = { 18, 6, 1, 26, 40, }, - [11] = { 18, 6, 2, 27, 44, }, - [12] = { 19, 6, 2, 28, 47, }, - [13] = { 19, 6, 3, 29, 50, }, - [14] = { 20, 6, 3, 30, 53, }, - [15] = { 20, 7, 3, 31, 56, }, - [16] = { 20, 7, 4, 32, 59, }, - [17] = { 20, 8, 4, 33, 62, }, - [18] = { 21, 8, 4, 34, 64, }, - [19] = { 21, 8, 5, 35, 66, }, - [20] = { 21, 9, 5, 36, 68, }, - [21] = { 22, 9, 5, 37, 70, }, - [22] = { 22, 9, 6, 38, 72, }, - [23] = { 22, 10, 6, 39, 74, }, - [24] = { 23, 10, 6, 40, 76, }, - [25] = { 23, 10, 7, 41, 78, }, - [26] = { 23, 11, 7, 42, 80, }, - [27] = { 24, 11, 7, 43, 82, }, - [28] = { 24, 11, 8, 44, 84, }, - [29] = { 25, 11, 8, 45, 86, }, - [30] = { 25, 12, 8, 46, 88, }, - }, -} -gems["Tempest Shield"] = { - intelligence = true, - active_skill = true, - spell = true, - lightning = true, - chaining = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - duration = true, - chaining = true, - lightning = true, - }, - skillTypes = { [2] = true, [10] = true, [13] = true, [27] = true, [35] = true, [23] = true, [45] = true, [36] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 0.6), - skill("critChance", 6), - mod("BlockChance", "BASE", 3, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"shield_block_%" = 3 - --"skill_override_pvp_scaling_time_ms" = 700 - mod("ChainCount", "BASE", 1), --"number_of_additional_projectiles_in_chain" = 1 - skill("duration", 12), --"base_skill_effect_duration" = 12000 - --"skill_can_add_multiple_charges_per_action" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" - }, - levels = { - [1] = { 17, 24, 36, }, - [2] = { 17, 31, 46, }, - [3] = { 17, 39, 58, }, - [4] = { 18, 48, 72, }, - [5] = { 18, 55, 83, }, - [6] = { 18, 64, 96, }, - [7] = { 18, 74, 111, }, - [8] = { 19, 85, 127, }, - [9] = { 19, 97, 145, }, - [10] = { 19, 110, 165, }, - [11] = { 20, 125, 187, }, - [12] = { 20, 141, 212, }, - [13] = { 20, 159, 239, }, - [14] = { 20, 180, 269, }, - [15] = { 20, 194, 291, }, - [16] = { 21, 210, 315, }, - [17] = { 21, 227, 340, }, - [18] = { 21, 245, 367, }, - [19] = { 21, 264, 396, }, - [20] = { 21, 284, 426, }, - [21] = { 22, 306, 459, }, - [22] = { 22, 330, 494, }, - [23] = { 22, 354, 532, }, - [24] = { 22, 381, 572, }, - [25] = { 22, 410, 614, }, - [26] = { 23, 440, 660, }, - [27] = { 23, 472, 708, }, - [28] = { 23, 507, 760, }, - [29] = { 23, 543, 815, }, - [30] = { 23, 583, 874, }, - }, -} -gems["Vortex"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - cold = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - cold = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [12] = true, [60] = true, }, - baseMods = { - skill("castTime", 0.9), - skill("critChance", 5), - skill("duration", 3), --"base_skill_effect_duration" = 3000 - --"is_area_damage" = ? - skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" - [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" - [4] = skill("ColdDot", nil), --"base_cold_damage_to_deal_per_minute" - }, - levels = { - [1] = { 11, 50, 75, 41.633333333333, }, - [2] = { 11, 60, 90, 51.983333333333, }, - [3] = { 12, 71, 107, 64.466666666667, }, - [4] = { 13, 85, 127, 79.45, }, - [5] = { 14, 100, 150, 97.383333333333, }, - [6] = { 14, 112, 168, 112.51666666667, }, - [7] = { 15, 124, 187, 129.65, }, - [8] = { 15, 138, 208, 149.01666666667, }, - [9] = { 16, 154, 231, 170.88333333333, }, - [10] = { 16, 171, 256, 195.53333333333, }, - [11] = { 16, 189, 284, 223.28333333333, }, - [12] = { 17, 209, 314, 254.5, }, - [13] = { 17, 232, 347, 289.53333333333, }, - [14] = { 18, 256, 384, 328.85, }, - [15] = { 18, 283, 424, 372.9, }, - [16] = { 19, 312, 468, 422.2, }, - [17] = { 19, 344, 516, 477.35, }, - [18] = { 20, 379, 568, 538.96666666667, }, - [19] = { 20, 417, 625, 607.75, }, - [20] = { 21, 458, 688, 684.46666666667, }, - [21] = { 21, 504, 756, 769.96666666667, }, - [22] = { 22, 554, 831, 865.18333333333, }, - [23] = { 22, 608, 912, 971.15, }, - [24] = { 23, 667, 1001, 1088.9833333333, }, - [25] = { 23, 732, 1098, 1219.9166666667, }, - [26] = { 24, 802, 1204, 1365.3333333333, }, - [27] = { 24, 879, 1319, 1526.7166666667, }, - [28] = { 25, 963, 1445, 1705.7166666667, }, - [29] = { 25, 1055, 1582, 1904.1333333333, }, - [30] = { 26, 1154, 1731, 2123.9666666667, }, - }, -} -gems["Vulnerability"] = { - curse = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 3, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - mod("DotTaken", "INC", 33, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 33 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - mod("PhysicalDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" - }, - levels = { - [1] = { 24, 9, 0, 20, }, - [2] = { 26, 9.1, 4, 20, }, - [3] = { 27, 9.2, 8, 21, }, - [4] = { 29, 9.3, 12, 21, }, - [5] = { 30, 9.4, 16, 22, }, - [6] = { 32, 9.5, 20, 22, }, - [7] = { 34, 9.6, 24, 23, }, - [8] = { 35, 9.7, 28, 23, }, - [9] = { 37, 9.8, 32, 24, }, - [10] = { 38, 9.9, 36, 24, }, - [11] = { 39, 10, 40, 25, }, - [12] = { 40, 10.1, 44, 25, }, - [13] = { 42, 10.2, 48, 26, }, - [14] = { 43, 10.3, 52, 26, }, - [15] = { 44, 10.4, 56, 27, }, - [16] = { 45, 10.5, 60, 27, }, - [17] = { 46, 10.6, 64, 28, }, - [18] = { 47, 10.7, 68, 28, }, - [19] = { 48, 10.8, 72, 29, }, - [20] = { 50, 10.9, 76, 29, }, - [21] = { 51, 11, 80, 30, }, - [22] = { 52, 11.1, 84, 30, }, - [23] = { 53, 11.2, 88, 31, }, - [24] = { 54, 11.3, 92, 31, }, - [25] = { 56, 11.4, 96, 32, }, - [26] = { 57, 11.5, 100, 32, }, - [27] = { 58, 11.6, 104, 33, }, - [28] = { 59, 11.7, 108, 33, }, - [29] = { 60, 11.8, 112, 34, }, - [30] = { 61, 11.9, 116, 34, }, - }, -} -gems["Wither"] = { - intelligence = true, - active_skill = true, - spell = true, - area = true, - duration = true, - chaos = true, - channelling = true, - parts = { - { - name = "1 Stack", - }, - { - name = "5 Stacks", - }, - { - name = "10 Stacks", - }, - { - name = "20 Stacks", - }, - }, - color = 3, - baseFlags = { - spell = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [18] = true, [50] = true, [58] = true, }, - baseMods = { - skill("castTime", 0.28), - mod("ChaosDamageTaken", "INC", 7, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"chaos_damage_taken_+%" = 7 - nil, --"base_skill_effect_duration" = 500 - skill("duration", 2), --"base_secondary_skill_effect_duration" = 2000 - skill("stackCount", 5, { type = "SkillPart", skillPart = 2 }), - skill("stackCount", 10, { type = "SkillPart", skillPart = 3 }), - skill("stackCount", 20, { type = "SkillPart", skillPart = 4 }), - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_movement_velocity_+%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 4, -30, 0, }, - [2] = { 4, -30, 1, }, - [3] = { 4, -30, 2, }, - [4] = { 5, -31, 3, }, - [5] = { 5, -31, 4, }, - [6] = { 5, -31, 5, }, - [7] = { 6, -32, 6, }, - [8] = { 6, -32, 7, }, - [9] = { 6, -32, 8, }, - [10] = { 7, -33, 9, }, - [11] = { 7, -33, 10, }, - [12] = { 7, -33, 11, }, - [13] = { 8, -34, 12, }, - [14] = { 8, -34, 13, }, - [15] = { 8, -34, 14, }, - [16] = { 9, -35, 15, }, - [17] = { 9, -35, 16, }, - [18] = { 9, -35, 17, }, - [19] = { 10, -36, 18, }, - [20] = { 10, -36, 19, }, - [21] = { 10, -36, 20, }, - [22] = { 11, -37, 21, }, - [23] = { 11, -37, 22, }, - [24] = { 11, -37, 23, }, - [25] = { 12, -38, 24, }, - [26] = { 12, -38, 25, }, - [27] = { 12, -38, 26, }, - [28] = { 13, -39, 27, }, - [29] = { 13, -39, 28, }, - [30] = { 13, -39, 29, }, - }, -} -gems["Wrath"] = { - aura = true, - intelligence = true, - active_skill = true, - spell = true, - area = true, - lightning = true, - color = 3, - baseFlags = { - spell = true, - aura = true, - area = true, - lightning = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_lightning_damage" - [2] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_lightning_damage" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("LightningDamage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"wrath_aura_spell_lightning_damage_+%_final" - }, - levels = { - [1] = { 2, 37, 0, 15, }, - [2] = { 3, 43, 3, 15, }, - [3] = { 3, 50, 6, 15, }, - [4] = { 4, 57, 9, 16, }, - [5] = { 4, 66, 12, 16, }, - [6] = { 5, 75, 15, 16, }, - [7] = { 5, 85, 18, 17, }, - [8] = { 6, 97, 21, 17, }, - [9] = { 7, 109, 23, 17, }, - [10] = { 7, 118, 25, 18, }, - [11] = { 8, 128, 27, 18, }, - [12] = { 9, 138, 29, 18, }, - [13] = { 9, 149, 31, 19, }, - [14] = { 10, 161, 33, 19, }, - [15] = { 11, 173, 35, 19, }, - [16] = { 12, 186, 36, 20, }, - [17] = { 13, 200, 37, 20, }, - [18] = { 13, 215, 38, 20, }, - [19] = { 14, 231, 39, 21, }, - [20] = { 16, 248, 40, 21, }, - [21] = { 17, 267, 41, 21, }, - [22] = { 18, 286, 42, 22, }, - [23] = { 19, 306, 43, 22, }, - [24] = { 20, 328, 44, 22, }, - [25] = { 22, 351, 45, 23, }, - [26] = { 23, 375, 46, 23, }, - [27] = { 25, 401, 47, 23, }, - [28] = { 27, 429, 48, 24, }, - [29] = { 29, 458, 49, 24, }, - [30] = { 31, 490, 50, 24, }, - }, -} diff --git a/Export/Gems/act_str.lua b/Export/Gems/act_str.lua deleted file mode 100644 index 7efbb2ce..00000000 --- a/Export/Gems/act_str.lua +++ /dev/null @@ -1,2890 +0,0 @@ --- Path of Building --- --- Active Strength gems --- Skill gem data (c) Grinding Gear Games --- -local gems, mod, flag, skill = ... - -gems["Abyssal Cry"] = { - warcry = true, - strength = true, - active_skill = true, - area = true, - duration = true, - chaos = true, - color = 1, - baseFlags = { - warcry = true, - area = true, - duration = true, - chaos = true, - }, - skillTypes = { [11] = true, [12] = true, [50] = true, [10] = true, }, - baseMods = { - skill("castTime", 0.25), - --"abyssal_cry_%_max_life_as_chaos_on_death" = 8 - skill("duration", 6), --"base_skill_effect_duration" = 6000 - --"damage_cannot_be_reflected" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"display_skill_deals_secondary_damage" = ? - --"is_warcry" = ? - }, - qualityMods = { - mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "abyssal_cry_movement_velocity_+%_per_one_hundred_nearby_enemies" - [3] = mod("MovementSpeed", "INC", nil, 0, 0, nil), --"base_movement_velocity_+%" - }, - levels = { - [1] = { 26, -60, -20, }, - [2] = { 28, -62, -20, }, - [3] = { 30, -62, -21, }, - [4] = { 32, -64, -21, }, - [5] = { 34, -66, -21, }, - [6] = { 36, -66, -22, }, - [7] = { 38, -68, -22, }, - [8] = { 40, -70, -22, }, - [9] = { 43, -70, -23, }, - [10] = { 45, -72, -23, }, - [11] = { 48, -74, -23, }, - [12] = { 49, -74, -24, }, - [13] = { 50, -76, -24, }, - [14] = { 51, -78, -24, }, - [15] = { 52, -78, -25, }, - [16] = { 53, -80, -25, }, - [17] = { 54, -82, -25, }, - [18] = { 54, -82, -26, }, - [19] = { 55, -84, -26, }, - [20] = { 56, -86, -26, }, - [21] = { 57, -86, -27, }, - [22] = { 58, -88, -27, }, - [23] = { 58, -90, -27, }, - [24] = { 59, -90, -28, }, - [25] = { 60, -92, -28, }, - [26] = { 61, -94, -28, }, - [27] = { 62, -94, -29, }, - [28] = { 62, -96, -29, }, - [29] = { 63, -98, -29, }, - [30] = { 64, -98, -30, }, - }, -} -gems["Ancestral Protector"] = { - totem = true, - strength = true, - active_skill = true, - attack = true, - duration = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - totem = true, - duration = true, - forceMainHand = true, - }, - skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [25] = true, [24] = true, [17] = true, [19] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - skillTotemId = 13, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - --"base_totem_duration" = 12000 - --"base_totem_range" = 50 - --"melee_range_+" = 16 - --"ancestor_totem_parent_activiation_range" = 70 - mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 - --"base_skill_is_totemified" = ? - --"is_totem" = ? - skill("allowTotemBuff", true), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"melee_ancestor_totem_grant_owner_attack_speed_+%_final" - }, - levels = { - [1] = { -20, 4, 10, }, - [2] = { -17.2, 6, 11, }, - [3] = { -14.4, 9, 11, }, - [4] = { -11.6, 12, 12, }, - [5] = { -8.8, 16, 12, }, - [6] = { -6, 20, 13, }, - [7] = { -3.2, 24, 13, }, - [8] = { -0.4, 28, 14, }, - [9] = { 2.4, 32, 14, }, - [10] = { 5.2, 36, 15, }, - [11] = { 8, 40, 15, }, - [12] = { 10.8, 44, 16, }, - [13] = { 13.6, 48, 16, }, - [14] = { 16.4, 52, 17, }, - [15] = { 19.2, 55, 17, }, - [16] = { 22, 58, 18, }, - [17] = { 24.8, 61, 18, }, - [18] = { 27.6, 64, 19, }, - [19] = { 30.4, 67, 19, }, - [20] = { 33.2, 70, 20, }, - [21] = { 36, 72, 20, }, - [22] = { 38.8, 74, 21, }, - [23] = { 41.6, 76, 21, }, - [24] = { 44.4, 78, 22, }, - [25] = { 47.2, 80, 22, }, - [26] = { 50, 82, 23, }, - [27] = { 52.8, 84, 23, }, - [28] = { 55.6, 86, 24, }, - [29] = { 58.4, 88, 24, }, - [30] = { 61.2, 90, 25, }, - }, -} -gems["Ancestral Warchief"] = { - totem = true, - strength = true, - active_skill = true, - attack = true, - duration = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - totem = true, - area = true, - duration = true, - forceMainHand = true, - }, - skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [24] = true, [17] = true, [19] = true, [11] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - skillTotemId = 15, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - --"base_totem_duration" = 12000 - --"base_totem_range" = 50 - --"ancestor_totem_parent_activiation_range" = 70 - mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 - mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 - --"melee_range_+" = 10 - --"is_area_damage" = ? - --"base_skill_is_totemified" = ? - --"is_totem" = ? - skill("allowTotemBuff", true), - }, - qualityMods = { - mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 - }, - levelMods = { - [1] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [2] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"slam_ancestor_totem_grant_owner_melee_damage_+%_final" - [3] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 28, 8, nil, }, - [2] = { 31, 8, 1.2, }, - [3] = { 34, 9, 2.4, }, - [4] = { 37, 10, 3.6, }, - [5] = { 40, 10, 4.8, }, - [6] = { 42, 10, 6, }, - [7] = { 44, 11, 7.2, }, - [8] = { 46, 12, 8.4, }, - [9] = { 48, 12, 9.6, }, - [10] = { 50, 12, 10.8, }, - [11] = { 52, 13, 12, }, - [12] = { 54, 14, 13.2, }, - [13] = { 56, 14, 14.4, }, - [14] = { 58, 14, 15.6, }, - [15] = { 60, 15, 16.8, }, - [16] = { 62, 16, 18, }, - [17] = { 64, 16, 19.2, }, - [18] = { 66, 16, 20.4, }, - [19] = { 68, 17, 21.6, }, - [20] = { 70, 18, 22.8, }, - [21] = { 72, 18, 24, }, - [22] = { 74, 18, 25.2, }, - [23] = { 76, 19, 26.4, }, - [24] = { 78, 20, 27.6, }, - [25] = { 80, 20, 28.8, }, - [26] = { 82, 20, 30, }, - [27] = { 84, 21, 31.2, }, - [28] = { 86, 22, 32.4, }, - [29] = { 88, 22, 33.6, }, - [30] = { 90, 22, 44.8, }, - }, -} -gems["Anger"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_fire_damage" - [2] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_fire_damage" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("FireMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_minimum_added_fire_damage" - [5] = mod("FireMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_maximum_added_fire_damage" - }, - levels = { - [1] = { 12, 21, 0, 10, 16, }, - [2] = { 14, 24, 3, 12, 19, }, - [3] = { 17, 28, 6, 14, 22, }, - [4] = { 19, 32, 9, 16, 26, }, - [5] = { 22, 37, 12, 18, 29, }, - [6] = { 25, 42, 15, 21, 33, }, - [7] = { 28, 47, 18, 24, 38, }, - [8] = { 32, 54, 21, 27, 43, }, - [9] = { 36, 61, 23, 30, 48, }, - [10] = { 39, 66, 25, 33, 53, }, - [11] = { 43, 71, 27, 35, 57, }, - [12] = { 46, 77, 29, 38, 61, }, - [13] = { 50, 83, 31, 41, 66, }, - [14] = { 54, 89, 33, 45, 71, }, - [15] = { 58, 96, 35, 48, 77, }, - [16] = { 62, 104, 36, 52, 83, }, - [17] = { 67, 111, 37, 56, 89, }, - [18] = { 72, 120, 38, 60, 96, }, - [19] = { 77, 129, 39, 64, 103, }, - [20] = { 83, 138, 40, 69, 110, }, - [21] = { 89, 148, 41, 74, 118, }, - [22] = { 95, 159, 42, 79, 127, }, - [23] = { 102, 170, 43, 85, 136, }, - [24] = { 109, 182, 44, 91, 146, }, - [25] = { 117, 195, 45, 97, 156, }, - [26] = { 125, 209, 46, 104, 167, }, - [27] = { 134, 223, 47, 112, 178, }, - [28] = { 143, 238, 48, 119, 191, }, - [29] = { 153, 255, 49, 127, 204, }, - [30] = { 163, 272, 50, 136, 218, }, - }, -} -gems["Animate Guardian"] = { - strength = true, - active_skill = true, - spell = true, - minion = true, - unsupported = true, -} -gems["Cleave"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [8] = true, [11] = true, [28] = true, [24] = true, [53] = true, }, - weaponTypes = { - ["Two Handed Axe"] = true, - ["One Handed Axe"] = true, - ["Two Handed Sword"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("Damage", "MORE", -40, 0, 0, { type = "Condition", var = "DualWielding" }), --"cleave_damage_+%_final_while_dual_wielding" = -40 - --"is_area_damage" = ? - skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? - }, - qualityMods = { - mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 10, 0, }, - [2] = { 12.8, 0, }, - [3] = { 15.6, 1, }, - [4] = { 18.4, 1, }, - [5] = { 21.2, 1, }, - [6] = { 24, 2, }, - [7] = { 26.8, 2, }, - [8] = { 29.6, 2, }, - [9] = { 32.4, 3, }, - [10] = { 35.2, 3, }, - [11] = { 38, 3, }, - [12] = { 40.8, 4, }, - [13] = { 43.6, 4, }, - [14] = { 46.4, 4, }, - [15] = { 49.2, 5, }, - [16] = { 52, 5, }, - [17] = { 54.8, 5, }, - [18] = { 57.6, 6, }, - [19] = { 60.4, 6, }, - [20] = { 63.2, 6, }, - [21] = { 66, 7, }, - [22] = { 68.8, 7, }, - [23] = { 71.6, 7, }, - [24] = { 74.4, 8, }, - [25] = { 77.2, 8, }, - [26] = { 80, 8, }, - [27] = { 82.8, 9, }, - [28] = { 85.6, 9, }, - [29] = { 88.4, 9, }, - [30] = { 91.2, 10, }, - }, -} -gems["Decoy Totem"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - area = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [17] = true, [12] = true, [19] = true, [11] = true, [30] = true, [26] = true, }, - skillTotemId = 6, - baseMods = { - skill("castTime", 1), - --"is_totem" = 1 - --"base_totem_duration" = 8000 - --"base_totem_range" = 60 - --"base_skill_is_totemified" = ? - --"base_deal_no_damage" = ? - --"totems_cannot_evade" = ? - --"totem_ignores_cooldown" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = mod("TotemLife", "INC", nil), --"totem_life_+%" - }, - levels = { - [1] = { 9, 4, 0, }, - [2] = { 10, 6, 2, }, - [3] = { 10, 9, 4, }, - [4] = { 12, 12, 6, }, - [5] = { 14, 15, 8, }, - [6] = { 17, 19, 10, }, - [7] = { 18, 23, 12, }, - [8] = { 19, 28, 14, }, - [9] = { 21, 33, 16, }, - [10] = { 24, 39, 18, }, - [11] = { 26, 43, 20, }, - [12] = { 28, 46, 22, }, - [13] = { 30, 49, 24, }, - [14] = { 30, 52, 26, }, - [15] = { 31, 55, 28, }, - [16] = { 33, 58, 30, }, - [17] = { 34, 61, 32, }, - [18] = { 34, 64, 34, }, - [19] = { 34, 66, 36, }, - [20] = { 35, 68, 38, }, - [21] = { 36, 70, 40, }, - [22] = { 37, 72, 42, }, - [23] = { 37, 74, 44, }, - [24] = { 38, 76, 46, }, - [25] = { 38, 78, 48, }, - [26] = { 39, 80, 50, }, - [27] = { 40, 82, 52, }, - [28] = { 40, 84, 54, }, - [29] = { 41, 86, 56, }, - [30] = { 42, 88, 58, }, - }, -} -gems["Determination"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 50), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("Armour", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"determination_aura_armour_+%_final" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 32, 0, }, - [2] = { 33, 3, }, - [3] = { 34, 6, }, - [4] = { 35, 9, }, - [5] = { 36, 12, }, - [6] = { 37, 15, }, - [7] = { 38, 18, }, - [8] = { 39, 21, }, - [9] = { 40, 23, }, - [10] = { 41, 25, }, - [11] = { 42, 27, }, - [12] = { 43, 29, }, - [13] = { 44, 31, }, - [14] = { 45, 33, }, - [15] = { 46, 35, }, - [16] = { 47, 36, }, - [17] = { 48, 37, }, - [18] = { 49, 38, }, - [19] = { 50, 39, }, - [20] = { 51, 40, }, - [21] = { 52, 41, }, - [22] = { 53, 42, }, - [23] = { 54, 43, }, - [24] = { 55, 44, }, - [25] = { 56, 45, }, - [26] = { 57, 46, }, - [27] = { 58, 47, }, - [28] = { 59, 48, }, - [29] = { 60, 49, }, - [30] = { 61, 50, }, - }, -} -gems["Devouring Totem"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - unsupported = true, -} -gems["Dominating Blow"] = { - strength = true, - active_skill = true, - attack = true, - minion = true, - duration = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - duration = true, - }, - skillTypes = { [1] = true, [6] = true, [9] = true, [12] = true, [21] = true, [25] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("duration", 20), --"base_skill_effect_duration" = 20000 - --"active_skill_minion_damage_+%_final" = -35 - --"is_dominated" = ? - }, - qualityMods = { - mod("Damage", "INC", 0.5, 0, 0, nil), --"damage_+%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 12, 25, }, - [2] = { 12, 27.1, }, - [3] = { 12, 29.2, }, - [4] = { 13, 31.3, }, - [5] = { 13, 33.4, }, - [6] = { 13, 35.5, }, - [7] = { 14, 37.6, }, - [8] = { 14, 39.7, }, - [9] = { 14, 41.8, }, - [10] = { 14, 43.9, }, - [11] = { 14, 46, }, - [12] = { 15, 48.1, }, - [13] = { 15, 50.2, }, - [14] = { 15, 52.3, }, - [15] = { 15, 54.4, }, - [16] = { 15, 56.5, }, - [17] = { 15, 58.6, }, - [18] = { 15, 60.7, }, - [19] = { 15, 62.8, }, - [20] = { 16, 64.9, }, - [21] = { 16, 67, }, - [22] = { 16, 69.1, }, - [23] = { 16, 71.2, }, - [24] = { 16, 73.3, }, - [25] = { 16, 75.4, }, - [26] = { 17, 77.5, }, - [27] = { 17, 79.6, }, - [28] = { 17, 81.7, }, - [29] = { 17, 83.8, }, - [30] = { 17, 85.9, }, - }, -} -gems["Earthquake"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - duration = true, - melee = true, - parts = { - { - name = "Initial impact", - }, - { - name = "Aftershock", - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [10] = true, [28] = true, [12] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 10), - skill("duration", 1.5), --"base_skill_effect_duration" = 1500 - mod("Damage", "MORE", 50, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"quake_slam_fully_charged_explosion_damage_+%_final" = 50 - --"is_area_damage" = ? - skill("showAverage", true, { type = "SkillPart", skillPart = 2 }), - }, - qualityMods = { - mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -10, }, - [2] = { -9, }, - [3] = { -8, }, - [4] = { -7, }, - [5] = { -6, }, - [6] = { -5, }, - [7] = { -4, }, - [8] = { -3, }, - [9] = { -2, }, - [10] = { -1, }, - [11] = { nil, }, - [12] = { 1, }, - [13] = { 2, }, - [14] = { 3, }, - [15] = { 4, }, - [16] = { 5, }, - [17] = { 6, }, - [18] = { 7, }, - [19] = { 8, }, - [20] = { 9, }, - [21] = { 10, }, - [22] = { 11, }, - [23] = { 12, }, - [24] = { 13, }, - [25] = { 14, }, - [26] = { 15, }, - [27] = { 16, }, - [28] = { 17, }, - [29] = { 18, }, - [30] = { 19, }, - }, -} -gems["Enduring Cry"] = { - warcry = true, - strength = true, - active_skill = true, - area = true, - duration = true, - color = 1, - baseFlags = { - warcry = true, - area = true, - duration = true, - }, - skillTypes = { [5] = true, [11] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.25), - skill("duration", 0.75), --"base_skill_effect_duration" = 750 - --"is_warcry" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 3), --"base_skill_area_of_effect_+%" = 3 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "endurance_charges_granted_per_one_hundred_nearby_enemies_during_endurance_warcry" - [3] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" - }, - levels = { - [1] = { 17, 8, 48, }, - [2] = { 17, 10, 62, }, - [3] = { 17, 12, 76, }, - [4] = { 17, 14, 94, }, - [5] = { 18, 16, 108, }, - [6] = { 18, 18, 122, }, - [7] = { 18, 20, 140, }, - [8] = { 19, 22, 158, }, - [9] = { 19, 24, 176, }, - [10] = { 19, 26, 196, }, - [11] = { 20, 27, 216, }, - [12] = { 20, 28, 238, }, - [13] = { 20, 29, 262, }, - [14] = { 20, 30, 286, }, - [15] = { 20, 31, 302, }, - [16] = { 21, 32, 320, }, - [17] = { 21, 33, 338, }, - [18] = { 21, 34, 356, }, - [19] = { 21, 35, 374, }, - [20] = { 21, 36, 394, }, - [21] = { 22, 37, 414, }, - [22] = { 22, 38, 434, }, - [23] = { 22, 39, 454, }, - [24] = { 22, 40, 476, }, - [25] = { 22, 41, 498, }, - [26] = { 23, 42, 520, }, - [27] = { 23, 43, 544, }, - [28] = { 23, 44, 566, }, - [29] = { 23, 45, 590, }, - [30] = { 23, 46, 614, }, - }, -} -gems["Flame Totem"] = { - projectile = true, - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - projectile = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, - skillTotemId = 8, - baseMods = { - skill("castTime", 0.25), - skill("damageEffectiveness", 0.25), - skill("critChance", 5), - --"base_totem_duration" = 8000 - --"base_totem_range" = 100 - --"is_totem" = ? - --"base_skill_is_totemified" = ? - --"base_is_projectile" = ? - mod("PierceChance", "BASE", 100), --"always_pierce" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [5] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" - }, - levels = { - [1] = { 12, 4, 1, 2, 0, }, - [2] = { 14, 6, 1, 3, 0, }, - [3] = { 16, 9, 2, 4, 0, }, - [4] = { 17, 12, 3, 5, 0, }, - [5] = { 19, 16, 4, 7, 1, }, - [6] = { 21, 20, 6, 10, 1, }, - [7] = { 23, 24, 9, 13, 1, }, - [8] = { 24, 28, 11, 17, 1, }, - [9] = { 26, 32, 14, 22, 2, }, - [10] = { 29, 36, 18, 28, 2, }, - [11] = { 31, 40, 24, 35, 2, }, - [12] = { 32, 44, 30, 45, 2, }, - [13] = { 33, 48, 37, 56, 2, }, - [14] = { 34, 52, 47, 70, 2, }, - [15] = { 36, 55, 55, 83, 2, }, - [16] = { 37, 58, 65, 97, 2, }, - [17] = { 39, 61, 76, 114, 2, }, - [18] = { 40, 64, 89, 134, 2, }, - [19] = { 41, 67, 105, 157, 2, }, - [20] = { 42, 70, 122, 183, 2, }, - [21] = { 43, 72, 136, 203, 2, }, - [22] = { 44, 74, 150, 225, 2, }, - [23] = { 45, 76, 166, 249, 2, }, - [24] = { 46, 78, 184, 276, 2, }, - [25] = { 47, 80, 204, 305, 2, }, - [26] = { 48, 82, 225, 338, 2, }, - [27] = { 49, 84, 249, 373, 2, }, - [28] = { 50, 86, 275, 412, 2, }, - [29] = { 51, 88, 303, 455, 2, }, - [30] = { 52, 90, 335, 502, 2, }, - }, -} -gems["Glacial Hammer"] = { - strength = true, - active_skill = true, - attack = true, - melee = true, - cold = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - cold = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [53] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 - mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 - mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 - }, - qualityMods = { - mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 - mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 40, }, - [2] = { 42.2, }, - [3] = { 44.4, }, - [4] = { 46.6, }, - [5] = { 48.8, }, - [6] = { 51, }, - [7] = { 53.2, }, - [8] = { 55.4, }, - [9] = { 57.6, }, - [10] = { 59.8, }, - [11] = { 62, }, - [12] = { 64.2, }, - [13] = { 66.4, }, - [14] = { 68.6, }, - [15] = { 70.8, }, - [16] = { 73, }, - [17] = { 75.2, }, - [18] = { 77.4, }, - [19] = { 79.6, }, - [20] = { 81.8, }, - [21] = { 84, }, - [22] = { 86.2, }, - [23] = { 88.4, }, - [24] = { 90.6, }, - [25] = { 92.8, }, - [26] = { 95, }, - [27] = { 97.2, }, - [28] = { 99.4, }, - [29] = { 101.6, }, - [30] = { 103.8, }, - }, -} -gems["Vaal Glacial Hammer"] = { - strength = true, - active_skill = true, - vaal = true, - attack = true, - melee = true, - duration = true, - area = true, - cold = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - cold = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [11] = true, [43] = true, [34] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 - mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 - mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 - }, - qualityMods = { - mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 - mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = skill("duration", nil), --"base_skill_effect_duration" - }, - levels = { - [1] = { 50, 3.4, }, - [2] = { 51.8, 3.45, }, - [3] = { 53.6, 3.5, }, - [4] = { 55.4, 3.55, }, - [5] = { 57.2, 3.6, }, - [6] = { 59, 3.65, }, - [7] = { 60.8, 3.7, }, - [8] = { 62.6, 3.75, }, - [9] = { 64.4, 3.8, }, - [10] = { 66.2, 3.85, }, - [11] = { 68, 3.9, }, - [12] = { 69.8, 3.95, }, - [13] = { 71.6, 4, }, - [14] = { 73.4, 4.05, }, - [15] = { 75.2, 4.1, }, - [16] = { 77, 4.15, }, - [17] = { 78.8, 4.2, }, - [18] = { 80.6, 4.25, }, - [19] = { 82.4, 4.3, }, - [20] = { 84.2, 4.35, }, - [21] = { 86, 4.4, }, - [22] = { 87.8, 4.45, }, - [23] = { 89.6, 4.5, }, - [24] = { 91.4, 4.55, }, - [25] = { 93.2, 4.6, }, - [26] = { 95, 4.65, }, - [27] = { 96.8, 4.7, }, - [28] = { 98.6, 4.75, }, - [29] = { 100.4, 4.8, }, - [30] = { 102.2, 4.85, }, - }, -} -gems["Ground Slam"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 - --"is_area_damage" = ? - }, - qualityMods = { - mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { -10, 0, }, - [2] = { -8.4, 0, }, - [3] = { -6.8, 1, }, - [4] = { -5.2, 1, }, - [5] = { -3.6, 1, }, - [6] = { -2, 2, }, - [7] = { -0.4, 2, }, - [8] = { 1.2, 2, }, - [9] = { 2.8, 3, }, - [10] = { 4.4, 3, }, - [11] = { 6, 3, }, - [12] = { 7.6, 4, }, - [13] = { 9.2, 4, }, - [14] = { 10.8, 4, }, - [15] = { 12.4, 5, }, - [16] = { 14, 5, }, - [17] = { 15.6, 5, }, - [18] = { 17.2, 6, }, - [19] = { 18.8, 6, }, - [20] = { 20.4, 6, }, - [21] = { 22, 7, }, - [22] = { 23.6, 7, }, - [23] = { 25.2, 7, }, - [24] = { 26.8, 8, }, - [25] = { 28.4, 8, }, - [26] = { 30, 8, }, - [27] = { 31.6, 9, }, - [28] = { 33.2, 9, }, - [29] = { 34.8, 9, }, - [30] = { 36.4, 10, }, - }, -} -gems["Vaal Ground Slam"] = { - strength = true, - active_skill = true, - vaal = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - vaal = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["One Handed Mace"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - --"knockback_distance_+%" = 100 - --"animation_effect_variation" = -1 - mod("AreaOfEffect", "INC", 20), --"base_skill_area_of_effect_+%" = 20 - --"always_stun" = ? - --"global_knockback" = ? - --"is_area_damage" = ? - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 60, }, - [2] = { 62, }, - [3] = { 64, }, - [4] = { 66, }, - [5] = { 68, }, - [6] = { 70, }, - [7] = { 72, }, - [8] = { 74, }, - [9] = { 76, }, - [10] = { 78, }, - [11] = { 80, }, - [12] = { 82, }, - [13] = { 84, }, - [14] = { 86, }, - [15] = { 88, }, - [16] = { 90, }, - [17] = { 92, }, - [18] = { 94, }, - [19] = { 96, }, - [20] = { 98, }, - [21] = { 100, }, - [22] = { 102, }, - [23] = { 104, }, - [24] = { 106, }, - [25] = { 108, }, - [26] = { 110, }, - [27] = { 112, }, - [28] = { 114, }, - [29] = { 116, }, - [30] = { 118, }, - }, -} -gems["Heavy Strike"] = { - strength = true, - active_skill = true, - attack = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Sword"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["One Handed Axe"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 5), - --"global_knockback" = 1 - mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 - }, - qualityMods = { - mod("EnemyStunDuration", "INC", 1), --"base_stun_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 50, }, - [2] = { 52.3, }, - [3] = { 54.6, }, - [4] = { 56.9, }, - [5] = { 59.2, }, - [6] = { 61.5, }, - [7] = { 63.8, }, - [8] = { 66.1, }, - [9] = { 68.4, }, - [10] = { 70.7, }, - [11] = { 73, }, - [12] = { 75.3, }, - [13] = { 77.6, }, - [14] = { 79.9, }, - [15] = { 82.2, }, - [16] = { 84.5, }, - [17] = { 86.8, }, - [18] = { 89.1, }, - [19] = { 91.4, }, - [20] = { 93.7, }, - [21] = { 96, }, - [22] = { 98.3, }, - [23] = { 100.6, }, - [24] = { 102.9, }, - [25] = { 105.2, }, - [26] = { 107.5, }, - [27] = { 109.8, }, - [28] = { 112.1, }, - [29] = { 114.4, }, - [30] = { 116.7, }, - }, -} -gems["Herald of Ash"] = { - strength = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [5] = true, [15] = true, [16] = true, [29] = true, [11] = true, [40] = true, [20] = true, [33] = true, [27] = true, }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 25), - mod("PhysicalDamageGainAsFire", "BASE", 15, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_fire" = 15 - --"is_area_damage" = ? - }, - qualityMods = { - mod("FireDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ash_fire_damage_+%" = 0.75 - }, - levelMods = { - --[1] = "herald_of_ash_%_overkill_dealt_as_ignite" - }, - levels = { - [1] = { 80, }, - [2] = { 83, }, - [3] = { 86, }, - [4] = { 89, }, - [5] = { 92, }, - [6] = { 95, }, - [7] = { 98, }, - [8] = { 101, }, - [9] = { 104, }, - [10] = { 107, }, - [11] = { 110, }, - [12] = { 113, }, - [13] = { 116, }, - [14] = { 119, }, - [15] = { 122, }, - [16] = { 125, }, - [17] = { 128, }, - [18] = { 131, }, - [19] = { 134, }, - [20] = { 137, }, - [21] = { 140, }, - [22] = { 143, }, - [23] = { 146, }, - [24] = { 149, }, - [25] = { 152, }, - [26] = { 155, }, - [27] = { 158, }, - [28] = { 161, }, - [29] = { 164, }, - [30] = { 167, }, - }, -} -gems["Ice Crash"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - cold = true, - melee = true, - parts = { - { - name = "First Hit", - }, - { - name = "Second Hit", - }, - { - name = "Third Hit", - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - cold = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [34] = true, }, - weaponTypes = { - ["None"] = true, - ["Two Handed Sword"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - mod("PhysicalDamageConvertToCold", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 50 - mod("Speed", "MORE", -20, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -20 - mod("Damage", "MORE", -10, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"ice_crash_second_hit_damage_+%_final" = -10 - mod("Damage", "MORE", -20, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"ice_crash_third_hit_damage_+%_final" = -20 - --"is_area_damage" = ? - }, - qualityMods = { - mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 70, }, - [2] = { 72, }, - [3] = { 74, }, - [4] = { 76, }, - [5] = { 78, }, - [6] = { 80, }, - [7] = { 82, }, - [8] = { 84, }, - [9] = { 86, }, - [10] = { 88, }, - [11] = { 90, }, - [12] = { 92, }, - [13] = { 94, }, - [14] = { 96, }, - [15] = { 98, }, - [16] = { 100, }, - [17] = { 102, }, - [18] = { 104, }, - [19] = { 106, }, - [20] = { 108, }, - [21] = { 110, }, - [22] = { 112, }, - [23] = { 114, }, - [24] = { 116, }, - [25] = { 118, }, - [26] = { 120, }, - [27] = { 122, }, - [28] = { 124, }, - [29] = { 116, }, - [30] = { 118, }, - }, -} -gems["Immortal Call"] = { - strength = true, - active_skill = true, - spell = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("duration", 0.4), --"base_skill_effect_duration" = 400 - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" - }, - levels = { - [1] = { 21, 100, }, - [2] = { 22, 103, }, - [3] = { 23, 106, }, - [4] = { 24, 109, }, - [5] = { 25, 112, }, - [6] = { 25, 115, }, - [7] = { 26, 118, }, - [8] = { 27, 121, }, - [9] = { 28, 124, }, - [10] = { 29, 127, }, - [11] = { 30, 130, }, - [12] = { 31, 133, }, - [13] = { 31, 136, }, - [14] = { 32, 139, }, - [15] = { 33, 142, }, - [16] = { 34, 145, }, - [17] = { 35, 148, }, - [18] = { 36, 151, }, - [19] = { 36, 154, }, - [20] = { 36, 157, }, - [21] = { 37, 160, }, - [22] = { 38, 163, }, - [23] = { 39, 166, }, - [24] = { 40, 169, }, - [25] = { 41, 172, }, - [26] = { 41, 175, }, - [27] = { 42, 178, }, - [28] = { 43, 181, }, - [29] = { 44, 184, }, - [30] = { 45, 187, }, - }, -} -gems["Vaal Immortal Call"] = { - strength = true, - active_skill = true, - vaal = true, - spell = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - duration = true, - vaal = true, - }, - skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [43] = true, }, - baseMods = { - skill("castTime", 0.85), - skill("duration", 0.4), --"base_skill_effect_duration" = 400 - --"immortal_call_prevent_all_damage" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 - }, - levelMods = { - [1] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" - }, - levels = { - [1] = { 100, }, - [2] = { 103, }, - [3] = { 106, }, - [4] = { 109, }, - [5] = { 112, }, - [6] = { 115, }, - [7] = { 118, }, - [8] = { 121, }, - [9] = { 124, }, - [10] = { 127, }, - [11] = { 130, }, - [12] = { 133, }, - [13] = { 136, }, - [14] = { 139, }, - [15] = { 142, }, - [16] = { 145, }, - [17] = { 148, }, - [18] = { 151, }, - [19] = { 154, }, - [20] = { 157, }, - [21] = { 160, }, - [22] = { 163, }, - [23] = { 166, }, - [24] = { 169, }, - [25] = { 172, }, - [26] = { 175, }, - [27] = { 178, }, - [28] = { 181, }, - [29] = { 184, }, - [30] = { 187, }, - }, -} -gems["Infernal Blow"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - fire = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - fire = true, - }, - skillTypes = { [1] = true, [6] = true, [11] = true, [25] = true, [28] = true, [24] = true, [33] = true, }, - weaponTypes = { - ["None"] = true, - ["Staff"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - skill("critChance", 5), - mod("SkillPhysicalDamageConvertToFire", "BASE", 50), --"skill_physical_damage_%_to_convert_to_fire" = 50 - skill("duration", 0.5), --"base_skill_effect_duration" = 500 - --"corpse_explosion_monster_life_%" = 10 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, }, - [2] = { 31.6, }, - [3] = { 33.2, }, - [4] = { 34.8, }, - [5] = { 36.4, }, - [6] = { 38, }, - [7] = { 39.6, }, - [8] = { 41.2, }, - [9] = { 42.8, }, - [10] = { 44.4, }, - [11] = { 46, }, - [12] = { 47.6, }, - [13] = { 49.2, }, - [14] = { 50.8, }, - [15] = { 52.4, }, - [16] = { 54, }, - [17] = { 55.6, }, - [18] = { 57.2, }, - [19] = { 58.8, }, - [20] = { 60.4, }, - [21] = { 62, }, - [22] = { 63.6, }, - [23] = { 65.2, }, - [24] = { 66.8, }, - [25] = { 68.4, }, - [26] = { 70, }, - [27] = { 71.6, }, - [28] = { 73.2, }, - [29] = { 74.8, }, - [30] = { 76.4, }, - }, -} -gems["Leap Slam"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - movement = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - movement = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [24] = true, [38] = true, }, - weaponTypes = { - ["Two Handed Sword"] = true, - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["One Handed Sword"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1.4), - skill("manaCost", 15), - --"base_global_chance_to_knockback_%" = 20 - --"is_area_damage" = ? - skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? - }, - qualityMods = { - --"base_global_chance_to_knockback_%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { nil, }, - [2] = { 1.2, }, - [3] = { 2.4, }, - [4] = { 3.6, }, - [5] = { 4.8, }, - [6] = { 6, }, - [7] = { 7.2, }, - [8] = { 8.4, }, - [9] = { 9.6, }, - [10] = { 10.8, }, - [11] = { 12, }, - [12] = { 13.2, }, - [13] = { 14.4, }, - [14] = { 15.6, }, - [15] = { 16.8, }, - [16] = { 18, }, - [17] = { 19.2, }, - [18] = { 20.4, }, - [19] = { 21.6, }, - [20] = { 22.8, }, - [21] = { 24, }, - [22] = { 25.2, }, - [23] = { 26.4, }, - [24] = { 27.6, }, - [25] = { 28.8, }, - [26] = { 30, }, - [27] = { 31.2, }, - [28] = { 32.4, }, - [29] = { 33.6, }, - [30] = { 34.8, }, - }, -} -gems["Molten Shell"] = { - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - area = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [36] = true, [26] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 2), - skill("critChance", 5), - mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 - --"is_area_damage" = 1 - skill("duration", 10), --"base_skill_effect_duration" = 10000 - --"skill_override_pvp_scaling_time_ms" = 1200 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - --[4] = "fire_shield_damage_threshold" - [5] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" - }, - levels = { - [1] = { 8, 14, 20, 26, 17, }, - [2] = { 9, 17, 26, 32, 20, }, - [3] = { 9, 24, 35, 41, 26, }, - [4] = { 10, 32, 47, 52, 33, }, - [5] = { 11, 45, 68, 70, 44, }, - [6] = { 12, 64, 96, 93, 58, }, - [7] = { 13, 88, 132, 120, 75, }, - [8] = { 14, 120, 180, 155, 97, }, - [9] = { 16, 161, 241, 197, 123, }, - [10] = { 17, 214, 321, 250, 156, }, - [11] = { 19, 283, 425, 313, 196, }, - [12] = { 20, 372, 558, 391, 245, }, - [13] = { 22, 486, 729, 487, 304, }, - [14] = { 23, 631, 947, 602, 376, }, - [15] = { 25, 766, 1149, 705, 440, }, - [16] = { 25, 928, 1392, 823, 515, }, - [17] = { 26, 1122, 1683, 960, 600, }, - [18] = { 27, 1354, 2031, 1118, 698, }, - [19] = { 27, 1631, 2447, 1299, 812, }, - [20] = { 28, 1962, 2943, 1508, 943, }, - [21] = { 29, 2217, 3326, 1664, 1040, }, - [22] = { 29, 2504, 3756, 1836, 1148, }, - [23] = { 29, 2827, 4240, 2024, 1265, }, - [24] = { 30, 3189, 4784, 2231, 1394, }, - [25] = { 30, 3596, 5394, 2457, 1536, }, - [26] = { 31, 4053, 6080, 2705, 1691, }, - [27] = { 31, 4566, 6849, 2977, 1861, }, - [28] = { 31, 5141, 7712, 3275, 2047, }, - [29] = { 32, 5787, 8680, 3601, 2251, }, - [30] = { 32, 6510, 9766, 3958, 2474, }, - }, -} -gems["Vaal Molten Shell"] = { - strength = true, - active_skill = true, - vaal = true, - spell = true, - area = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - area = true, - duration = true, - fire = true, - vaal = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [26] = true, [43] = true, [33] = true, }, - baseMods = { - skill("castTime", 0.5), - skill("damageEffectiveness", 2), - skill("critChance", 5), - mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 - --"is_area_damage" = 1 - skill("duration", 5), --"base_skill_effect_duration" = 5000 - --"skill_override_pvp_scaling_time_ms" = 1400 - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"molten_shell_explode_each_hit" = ? - }, - qualityMods = { - mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 - }, - levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" - [3] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" - }, - levels = { - [1] = { 9, 14, 17, }, - [2] = { 11, 17, 20, }, - [3] = { 15, 23, 26, }, - [4] = { 20, 30, 33, }, - [5] = { 27, 41, 44, }, - [6] = { 37, 56, 58, }, - [7] = { 49, 74, 75, }, - [8] = { 64, 96, 97, }, - [9] = { 83, 124, 123, }, - [10] = { 106, 159, 156, }, - [11] = { 135, 202, 196, }, - [12] = { 170, 256, 245, }, - [13] = { 214, 321, 304, }, - [14] = { 267, 401, 376, }, - [15] = { 315, 472, 440, }, - [16] = { 370, 556, 515, }, - [17] = { 435, 652, 600, }, - [18] = { 509, 764, 698, }, - [19] = { 596, 893, 812, }, - [20] = { 696, 1043, 943, }, - [21] = { 771, 1156, 1040, }, - [22] = { 854, 1280, 1148, }, - [23] = { 945, 1417, 1265, }, - [24] = { 1045, 1568, 1394, }, - [25] = { 1155, 1733, 1536, }, - [26] = { 1277, 1915, 1691, }, - [27] = { 1410, 2115, 1861, }, - [28] = { 1557, 2335, 2047, }, - [29] = { 1718, 2577, 2251, }, - [30] = { 1895, 2843, 2474, }, - }, -} -gems["Molten Strike"] = { - projectile = true, - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - fire = true, - parts = { - { - name = "Melee Hit", - melee = true, - projectile = false, - area = false, - }, - { - name = "Magma Balls", - melee = false, - projectile = true, - area = true, - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - projectile = true, - area = true, - fire = true, - }, - skillTypes = { [1] = true, [3] = true, [6] = true, [11] = true, [24] = true, [25] = true, [28] = true, [33] = true, [48] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("SkillPhysicalDamageConvertToFire", "BASE", 60), --"skill_physical_damage_%_to_convert_to_fire" = 60 - mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 - mod("Damage", "MORE", -40, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -40 - --"show_number_of_projectiles" = ? - }, - qualityMods = { - mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 20, }, - [2] = { 21.4, }, - [3] = { 22.8, }, - [4] = { 24.2, }, - [5] = { 25.6, }, - [6] = { 27, }, - [7] = { 28.4, }, - [8] = { 29.8, }, - [9] = { 31.2, }, - [10] = { 32.6, }, - [11] = { 34, }, - [12] = { 35.4, }, - [13] = { 36.8, }, - [14] = { 38.2, }, - [15] = { 39.6, }, - [16] = { 41, }, - [17] = { 42.4, }, - [18] = { 43.8, }, - [19] = { 45.2, }, - [20] = { 46.6, }, - [21] = { 48, }, - [22] = { 49.4, }, - [23] = { 50.8, }, - [24] = { 52.2, }, - [25] = { 53.6, }, - [26] = { 55, }, - [27] = { 56.4, }, - [28] = { 57.8, }, - [29] = { 59.2, }, - [30] = { 60.6, }, - }, -} -gems["Punishment"] = { - curse = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"newpunishment_applied_buff_duration_ms" = 4000 - }, - qualityMods = { - mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" = 0.25 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_melee_damage_+%_final" - [4] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" - [5] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 24, 9, 25, 10, 0, }, - [2] = { 26, 9.1, 26, 10, 4, }, - [3] = { 27, 9.2, 26, 11, 8, }, - [4] = { 29, 9.3, 27, 11, 12, }, - [5] = { 30, 9.4, 27, 12, 16, }, - [6] = { 32, 9.5, 28, 12, 20, }, - [7] = { 34, 9.6, 28, 13, 24, }, - [8] = { 35, 9.7, 29, 13, 28, }, - [9] = { 37, 9.8, 29, 14, 32, }, - [10] = { 38, 9.9, 30, 14, 36, }, - [11] = { 39, 10, 30, 15, 40, }, - [12] = { 40, 10.1, 31, 15, 44, }, - [13] = { 42, 10.2, 31, 16, 48, }, - [14] = { 43, 10.3, 32, 16, 52, }, - [15] = { 44, 10.4, 32, 17, 56, }, - [16] = { 45, 10.5, 33, 17, 60, }, - [17] = { 46, 10.6, 33, 18, 64, }, - [18] = { 47, 10.7, 34, 18, 68, }, - [19] = { 48, 10.8, 34, 19, 72, }, - [20] = { 50, 10.9, 35, 19, 76, }, - [21] = { 51, 11, 35, 20, 80, }, - [22] = { 52, 11.1, 36, 20, 84, }, - [23] = { 53, 11.2, 36, 21, 88, }, - [24] = { 54, 11.3, 37, 21, 92, }, - [25] = { 56, 11.4, 37, 22, 96, }, - [26] = { 57, 11.5, 38, 22, 100, }, - [27] = { 58, 11.6, 38, 23, 104, }, - [28] = { 59, 11.7, 39, 23, 108, }, - [29] = { 60, 11.8, 39, 24, 112, }, - [30] = { 61, 11.9, 40, 24, 116, }, - }, -} -gems["Purity of Fire"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - fire = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_fire_damage_resistance_%" - [2] = mod("FireResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 22, 0, 0, }, - [2] = { 23, 0, 3, }, - [3] = { 24, 0, 6, }, - [4] = { 25, 0, 9, }, - [5] = { 26, 1, 12, }, - [6] = { 27, 1, 15, }, - [7] = { 28, 1, 18, }, - [8] = { 29, 1, 21, }, - [9] = { 30, 1, 23, }, - [10] = { 31, 1, 25, }, - [11] = { 32, 2, 27, }, - [12] = { 33, 2, 29, }, - [13] = { 34, 2, 31, }, - [14] = { 35, 2, 33, }, - [15] = { 36, 2, 35, }, - [16] = { 37, 2, 36, }, - [17] = { 38, 3, 37, }, - [18] = { 39, 3, 38, }, - [19] = { 40, 3, 39, }, - [20] = { 41, 4, 40, }, - [21] = { 42, 4, 41, }, - [22] = { 43, 4, 42, }, - [23] = { 44, 5, 43, }, - [24] = { 45, 5, 44, }, - [25] = { 46, 5, 45, }, - [26] = { 47, 5, 46, }, - [27] = { 48, 5, 47, }, - [28] = { 49, 5, 48, }, - [29] = { 50, 5, 49, }, - [30] = { 51, 5, 50, }, - }, -} -gems["Rallying Cry"] = { - warcry = true, - strength = true, - active_skill = true, - area = true, - duration = true, - color = 1, - baseFlags = { - warcry = true, - area = true, - duration = true, - }, - skillTypes = { [5] = true, [11] = true, [12] = true, }, - baseMods = { - skill("castTime", 0.25), - skill("duration", 8), --"base_skill_effect_duration" = 8000 - --"base_deal_no_damage" = ? - --"is_warcry" = ? - }, - qualityMods = { - mod("Duration", "INC", 1.5), --"skill_effect_duration_+%" = 1.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "inspiring_cry_damage_+%_per_one_hundred_nearby_enemies" - [3] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"damage_+%" - [4] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_mana_regeneration_rate_per_minute" - }, - levels = { - [1] = { 8, 140, 10, 1.8, }, - [2] = { 10, 142, 10, 2.4, }, - [3] = { 12, 144, 11, 3.1, }, - [4] = { 13, 146, 11, 3.8, }, - [5] = { 14, 148, 11, 4.4, }, - [6] = { 15, 150, 12, 5.1, }, - [7] = { 16, 152, 12, 5.8, }, - [8] = { 17, 154, 12, 6.5, }, - [9] = { 18, 156, 13, 7.1, }, - [10] = { 20, 158, 13, 7.8, }, - [11] = { 21, 160, 13, 8.5, }, - [12] = { 22, 162, 14, 9.2, }, - [13] = { 24, 164, 14, 9.9, }, - [14] = { 25, 166, 14, 10.6, }, - [15] = { 26, 168, 15, 11.3, }, - [16] = { 26, 170, 15, 12, }, - [17] = { 26, 172, 15, 12.7, }, - [18] = { 26, 174, 16, 13.4, }, - [19] = { 27, 176, 16, 14.1, }, - [20] = { 27, 178, 16, 14.8, }, - [21] = { 28, 180, 17, 15.5, }, - [22] = { 28, 182, 17, 16.2, }, - [23] = { 29, 184, 17, 16.9, }, - [24] = { 29, 186, 18, 17.7, }, - [25] = { 30, 188, 18, 18.4, }, - [26] = { 30, 190, 18, 19.1, }, - [27] = { 30, 192, 19, 19.8, }, - [28] = { 30, 194, 19, 20.5, }, - [29] = { 31, 196, 19, 21.3, }, - [30] = { 31, 198, 20, 22, }, - }, -} -gems["Reckoning"] = { - trigger = true, - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - area = true, - melee = true, - }, - skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [47] = true, [57] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Claw"] = true, - ["One Handed Axe"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"melee_counterattack_trigger_on_block_%" = 100 - --"shield_counterattack_aoe_range" = 35 - --"attack_unusable_if_triggerable" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -30, }, - [2] = { -28, }, - [3] = { -26, }, - [4] = { -24, }, - [5] = { -22, }, - [6] = { -20, }, - [7] = { -18, }, - [8] = { -16, }, - [9] = { -14, }, - [10] = { -12, }, - [11] = { -10, }, - [12] = { -8, }, - [13] = { -6, }, - [14] = { -4, }, - [15] = { -2, }, - [16] = { nil, }, - [17] = { 2, }, - [18] = { 4, }, - [19] = { 6, }, - [20] = { 8, }, - [21] = { 10, }, - [22] = { 12, }, - [23] = { 14, }, - [24] = { 16, }, - [25] = { 18, }, - [26] = { 20, }, - [27] = { 22, }, - [28] = { 24, }, - [29] = { 26, }, - [30] = { 28, }, - }, -} -gems["Rejuvenation Totem"] = { - totem = true, - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - totem = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [5] = true, [11] = true, [12] = true, [15] = true, [27] = true, [17] = true, [19] = true, [30] = true, [44] = true, }, - skillTotemId = 4, - baseMods = { - skill("castTime", 0.6), - --"is_totem" = 1 - --"base_totem_duration" = 8000 - --"base_totem_range" = 10 - --"base_skill_is_totemified" = ? - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 3, 0, KeywordFlag.Aura), --"base_aura_area_of_effect_+%" = 3 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_life_regeneration_rate_per_minute" - [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" - }, - levels = { - [1] = { 13, 6.35, 4, }, - [2] = { 14, 8.6833333333333, 6, }, - [3] = { 15, 12.366666666667, 9, }, - [4] = { 16, 16, 12, }, - [5] = { 17, 21.033333333333, 16, }, - [6] = { 18, 26.3, 20, }, - [7] = { 19, 32.25, 24, }, - [8] = { 20, 39.366666666667, 28, }, - [9] = { 22, 46.116666666667, 32, }, - [10] = { 24, 53.7, 36, }, - [11] = { 26, 61.816666666667, 40, }, - [12] = { 27, 72.8, 44, }, - [13] = { 28, 82.716666666667, 48, }, - [14] = { 29, 92.666666666667, 52, }, - [15] = { 30, 102.85, 55, }, - [16] = { 30, 113.98333333333, 58, }, - [17] = { 31, 122.95, 61, }, - [18] = { 31, 135.6, 64, }, - [19] = { 32, 149.03333333333, 67, }, - [20] = { 32, 162.2, 70, }, - [21] = { 33, 168.61666666667, 72, }, - [22] = { 34, 177.03333333333, 74, }, - [23] = { 34, 182.1, 76, }, - [24] = { 35, 191.2, 78, }, - [25] = { 36, 200.66666666667, 80, }, - [26] = { 37, 206.03333333333, 82, }, - [27] = { 38, 217.43333333333, 84, }, - [28] = { 38, 227.95, 86, }, - [29] = { 39, 241.21666666667, 88, }, - [30] = { 40, 243.65, 90, }, - }, -} -gems["Searing Bond"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - duration = true, - fire = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - duration = true, - fire = true, - }, - skillTypes = { [2] = true, [40] = true, [12] = true, [17] = true, [19] = true, [27] = true, [29] = true, [30] = true, [36] = true, [33] = true, }, - skillTotemId = 9, - baseMods = { - skill("castTime", 1), - --"base_totem_duration" = 8000 - --"base_totem_range" = 100 - mod("ActiveTotemLimit", "BASE", 1), --"number_of_additional_totems_allowed" = 1 - --"is_totem" = ? - --"base_skill_is_totemified" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" - [3] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" - }, - levels = { - [1] = { 18, 12, 23.583333333333, }, - [2] = { 19, 15, 31.35, }, - [3] = { 20, 19, 44.816666666667, }, - [4] = { 21, 23, 62.833333333333, }, - [5] = { 23, 27, 86.783333333333, }, - [6] = { 25, 31, 118.43333333333, }, - [7] = { 27, 35, 160.06666666667, }, - [8] = { 29, 38, 199.58333333333, }, - [9] = { 31, 41, 247.88333333333, }, - [10] = { 33, 44, 306.76666666667, }, - [11] = { 35, 47, 378.48333333333, }, - [12] = { 37, 50, 465.65, }, - [13] = { 39, 53, 571.45, }, - [14] = { 40, 56, 699.7, }, - [15] = { 42, 59, 854.93333333333, }, - [16] = { 44, 62, 1042.6166666667, }, - [17] = { 46, 64, 1188.95, }, - [18] = { 48, 66, 1354.8333333333, }, - [19] = { 50, 68, 1542.7666666667, }, - [20] = { 51, 70, 1755.6333333333, }, - [21] = { 53, 72, 1996.5833333333, }, - [22] = { 53, 74, 2269.2666666667, }, - [23] = { 54, 76, 2577.7166666667, }, - [24] = { 56, 78, 2926.5, }, - [25] = { 58, 80, 3320.75, }, - [26] = { 59, 82, 3766.2333333333, }, - [27] = { 59, 84, 4269.4666666667, }, - [28] = { 61, 86, 4837.7333333333, }, - [29] = { 62, 88, 5479.2333333333, }, - [30] = { 64, 90, 6203.2333333333, }, - }, -} -gems["Shield Charge"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - movement = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - movement = true, - }, - skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [38] = true, }, - weaponTypes = { - ["None"] = true, - ["One Handed Mace"] = true, - ["Claw"] = true, - ["One Handed Axe"] = true, - ["Dagger"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - --"shield_charge_scaling_stun_threshold_reduction_+%_at_maximum_range" = 50 - mod("MovementSpeed", "INC", 75, 0, 0, nil), --"base_movement_velocity_+%" = 75 - --"shield_charge_damage_+%_maximum" = 200 - --"ignores_proximity_shield" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -50, }, - [2] = { -49.4, }, - [3] = { -48.8, }, - [4] = { -48.2, }, - [5] = { -47.6, }, - [6] = { -47, }, - [7] = { -46.4, }, - [8] = { -45.8, }, - [9] = { -45.2, }, - [10] = { -44.6, }, - [11] = { -44, }, - [12] = { -43.4, }, - [13] = { -42.8, }, - [14] = { -42.2, }, - [15] = { -41.6, }, - [16] = { -41, }, - [17] = { -40.4, }, - [18] = { -39.8, }, - [19] = { -39.2, }, - [20] = { -38.6, }, - [21] = { -38, }, - [22] = { -37.4, }, - [23] = { -36.8, }, - [24] = { -36.2, }, - [25] = { -35.6, }, - [26] = { -35, }, - [27] = { -34.4, }, - [28] = { -33.8, }, - [29] = { -33.2, }, - [30] = { -32.6, }, - }, -} -gems["Shockwave Totem"] = { - totem = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - totem = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [19] = true, [30] = true, [26] = true, }, - skillTotemId = 5, - baseMods = { - skill("castTime", 0.6), - skill("damageEffectiveness", 0.6), - skill("critChance", 5), - --"base_totem_duration" = 8000 - --"base_totem_range" = 100 - --"base_global_chance_to_knockback_%" = 25 - --"is_totem" = ? - --"is_area_damage" = ? - --"base_skill_is_totemified" = ? - }, - qualityMods = { - mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" - [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" - [4] = skill("totemLevel", nil), --"base_active_skill_totem_level" - }, - levels = { - [1] = { 24, 23, 46, 28, }, - [2] = { 26, 28, 51, 31, }, - [3] = { 28, 33, 62, 34, }, - [4] = { 31, 40, 74, 37, }, - [5] = { 33, 47, 88, 40, }, - [6] = { 34, 53, 98, 42, }, - [7] = { 36, 59, 110, 44, }, - [8] = { 39, 66, 123, 46, }, - [9] = { 43, 74, 137, 48, }, - [10] = { 46, 82, 153, 50, }, - [11] = { 49, 92, 170, 52, }, - [12] = { 51, 102, 189, 54, }, - [13] = { 53, 113, 210, 56, }, - [14] = { 53, 126, 233, 58, }, - [15] = { 55, 139, 259, 60, }, - [16] = { 55, 154, 287, 62, }, - [17] = { 57, 171, 318, 64, }, - [18] = { 57, 189, 351, 66, }, - [19] = { 58, 209, 389, 68, }, - [20] = { 58, 231, 429, 70, }, - [21] = { 59, 255, 474, 72, }, - [22] = { 60, 282, 524, 74, }, - [23] = { 61, 311, 578, 76, }, - [24] = { 62, 343, 637, 78, }, - [25] = { 62, 378, 702, 80, }, - [26] = { 63, 416, 773, 82, }, - [27] = { 64, 458, 851, 84, }, - [28] = { 65, 504, 936, 86, }, - [29] = { 66, 555, 1030, 88, }, - [30] = { 66, 610, 1132, 90, }, - }, -} -gems["Static Strike"] = { - strength = true, - active_skill = true, - attack = true, - melee = true, - area = true, - duration = true, - lightning = true, - parts = { - { - name = "Melee hit", - area = false, - }, - { - name = "Explosion", - area = true, - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - duration = true, - lightning = true, - }, - skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [11] = true, [12] = true, [35] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - mod("SkillPhysicalDamageConvertToLightning", "BASE", 60), --"skill_physical_damage_%_to_convert_to_lightning" = 60 - skill("duration", 0.75), --"base_skill_effect_duration" = 750 - mod("Damage", "MORE", -40, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"static_strike_explosion_damage_+%_final" = -40 - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 10, 0, }, - [2] = { 12.6, 0, }, - [3] = { 15.2, 0, }, - [4] = { 17.8, 0, }, - [5] = { 20.4, 1, }, - [6] = { 23, 1, }, - [7] = { 25.6, 1, }, - [8] = { 28.2, 1, }, - [9] = { 30.8, 1, }, - [10] = { 33.4, 2, }, - [11] = { 36, 2, }, - [12] = { 38.6, 2, }, - [13] = { 41.2, 2, }, - [14] = { 43.8, 2, }, - [15] = { 46.4, 3, }, - [16] = { 49, 3, }, - [17] = { 51.6, 3, }, - [18] = { 54.2, 3, }, - [19] = { 56.8, 3, }, - [20] = { 59.4, 4, }, - [21] = { 62, 4, }, - [22] = { 64.6, 4, }, - [23] = { 67.2, 4, }, - [24] = { 69.8, 4, }, - [25] = { 72.4, 5, }, - [26] = { 75, 5, }, - [27] = { 77.6, 5, }, - [28] = { 80.2, 5, }, - [29] = { 82.8, 5, }, - [30] = { 85.4, 6, }, - }, -} -gems["Summon Flame Golem"] = { - strength = true, - active_skill = true, - fire = true, - minion = true, - spell = true, - golem = true, - color = 1, - baseFlags = { - spell = true, - minion = true, - golem = true, - fire = true, - }, - skillTypes = { [36] = true, [33] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 7 - mod("Misc", "LIST", { type = "Condition", var = "HaveFireGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [3] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"fire_golem_grants_damage_+%" - [4] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 15, 30, 34, }, - [2] = { 32, 1, 15, 32, 36, }, - [3] = { 34, 1, 16, 34, 38, }, - [4] = { 36, 2, 16, 36, 40, }, - [5] = { 38, 2, 16, 38, 42, }, - [6] = { 40, 3, 16, 40, 44, }, - [7] = { 42, 3, 17, 42, 46, }, - [8] = { 44, 4, 17, 44, 48, }, - [9] = { 44, 4, 17, 46, 50, }, - [10] = { 46, 5, 17, 48, 52, }, - [11] = { 48, 5, 18, 50, 54, }, - [12] = { 48, 6, 18, 52, 56, }, - [13] = { 50, 6, 18, 54, 58, }, - [14] = { 50, 7, 18, 56, 60, }, - [15] = { 52, 7, 19, 58, 62, }, - [16] = { 52, 8, 19, 60, 64, }, - [17] = { 52, 8, 19, 62, 66, }, - [18] = { 52, 9, 19, 64, 68, }, - [19] = { 54, 9, 20, 66, 69, }, - [20] = { 54, 10, 20, 68, 70, }, - [21] = { 56, 10, 20, 70, 72, }, - [22] = { 56, 11, 20, 72, 74, }, - [23] = { 58, 11, 21, 74, 76, }, - [24] = { 58, 12, 21, 76, 78, }, - [25] = { 60, 12, 21, 78, 80, }, - [26] = { 60, 13, 21, 80, 82, }, - [27] = { 60, 13, 22, 82, 84, }, - [28] = { 60, 14, 22, 84, 86, }, - [29] = { 62, 14, 22, 86, 88, }, - [30] = { 62, 15, 22, 88, 90, }, - }, -} -gems["Summon Stone Golem"] = { - strength = true, - active_skill = true, - minion = true, - spell = true, - golem = true, - color = 1, - baseFlags = { - spell = true, - minion = true, - golem = true, - }, - skillTypes = { [36] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, - baseMods = { - skill("castTime", 1), - --"base_number_of_golems_allowed" = 1 - --"display_minion_monster_type" = 10 - mod("Misc", "LIST", { type = "Condition", var = "HavePhysicalGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), - }, - qualityMods = { - mod("MinionLife", "INC", 1), --"minion_maximum_life_+%" = 1 - mod("Damage", "INC", 1, 0, KeywordFlag.Minion), --"minion_damage_+%" = 1 - }, - levelMods = { - [1] = skill("manaCost", nil), - --[2] = "base_actor_scale_+%" - [3] = mod("MinionLife", "INC", nil), --"minion_maximum_life_+%" - [4] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"stone_golem_grants_base_life_regeneration_rate_per_minute" - --[5] = "display_minion_monster_level" - }, - levels = { - [1] = { 30, 0, 30, 33, 34, }, - [2] = { 32, 1, 32, 36, 36, }, - [3] = { 34, 1, 34, 39, 38, }, - [4] = { 36, 2, 36, 42, 40, }, - [5] = { 38, 2, 38, 45, 42, }, - [6] = { 40, 3, 40, 49, 44, }, - [7] = { 42, 3, 42, 52, 46, }, - [8] = { 44, 4, 44, 56, 48, }, - [9] = { 44, 4, 46, 60, 50, }, - [10] = { 46, 5, 48, 64, 52, }, - [11] = { 48, 5, 50, 68, 54, }, - [12] = { 48, 6, 52, 72, 56, }, - [13] = { 50, 6, 54, 76, 58, }, - [14] = { 50, 7, 56, 81, 60, }, - [15] = { 52, 7, 58, 85, 62, }, - [16] = { 52, 8, 60, 90, 64, }, - [17] = { 52, 8, 62, 95, 66, }, - [18] = { 52, 9, 64, 100, 68, }, - [19] = { 54, 9, 66, 103, 69, }, - [20] = { 54, 10, 68, 105, 70, }, - [21] = { 56, 10, 70, 110, 72, }, - [22] = { 56, 11, 72, 116, 74, }, - [23] = { 58, 11, 74, 121, 76, }, - [24] = { 58, 12, 76, 127, 78, }, - [25] = { 60, 12, 78, 133, 80, }, - [26] = { 60, 13, 80, 139, 82, }, - [27] = { 60, 13, 82, 145, 84, }, - [28] = { 60, 14, 84, 151, 86, }, - [29] = { 62, 14, 86, 157, 88, }, - [30] = { 62, 15, 88, 164, 90, }, - }, -} -gems["Sunder"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - parts = { - { - name = "Primary wave", - }, - { - name = "Shockwaves", - }, - }, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Staff"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 8), - mod("Damage", "MORE", -60, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"shockwave_slam_explosion_damage_+%_final" = -60 - mod("Speed", "MORE", -15, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -15 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - --[2] = "active_skill_base_radius_+" - }, - levels = { - [1] = { 40, 0, }, - [2] = { 42.2, 0, }, - [3] = { 44.4, 1, }, - [4] = { 46.6, 1, }, - [5] = { 48.8, 1, }, - [6] = { 51, 2, }, - [7] = { 53.2, 2, }, - [8] = { 55.4, 2, }, - [9] = { 57.6, 3, }, - [10] = { 59.8, 3, }, - [11] = { 62, 3, }, - [12] = { 64.2, 4, }, - [13] = { 66.4, 4, }, - [14] = { 68.6, 4, }, - [15] = { 70.8, 5, }, - [16] = { 73, 5, }, - [17] = { 75.2, 5, }, - [18] = { 77.4, 6, }, - [19] = { 79.6, 6, }, - [20] = { 81.8, 6, }, - [21] = { 84, 7, }, - [22] = { 86.2, 7, }, - [23] = { 88.4, 7, }, - [24] = { 90.6, 8, }, - [25] = { 92.8, 8, }, - [26] = { 95, 8, }, - [27] = { 97.2, 9, }, - [28] = { 99.4, 9, }, - [29] = { 101.6, 9, }, - [30] = { 103.8, 10, }, - }, -} -gems["Sweep"] = { - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [11] = true, [28] = true, [24] = true, }, - weaponTypes = { - ["Two Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - }, - baseMods = { - skill("castTime", 1.15), - skill("manaCost", 8), - mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 - --"is_area_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 - }, - levelMods = { - --[1] = "base_global_chance_to_knockback_%" - --[2] = "active_skill_base_radius_+" - [3] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { 30, 0, nil, }, - [2] = { 30, 0, 2, }, - [3] = { 31, 0, 4, }, - [4] = { 31, 0, 6, }, - [5] = { 32, 1, 8, }, - [6] = { 32, 1, 10, }, - [7] = { 33, 1, 12, }, - [8] = { 33, 1, 14, }, - [9] = { 34, 1, 16, }, - [10] = { 34, 2, 18, }, - [11] = { 35, 2, 20, }, - [12] = { 35, 2, 22, }, - [13] = { 36, 2, 24, }, - [14] = { 36, 2, 26, }, - [15] = { 37, 3, 28, }, - [16] = { 37, 3, 30, }, - [17] = { 38, 3, 32, }, - [18] = { 38, 3, 34, }, - [19] = { 39, 3, 36, }, - [20] = { 39, 4, 38, }, - [21] = { 40, 4, 40, }, - [22] = { 40, 4, 42, }, - [23] = { 41, 4, 44, }, - [24] = { 41, 4, 46, }, - [25] = { 42, 5, 48, }, - [26] = { 42, 5, 50, }, - [27] = { 43, 5, 52, }, - [28] = { 43, 5, 54, }, - [29] = { 44, 5, 56, }, - [30] = { 44, 6, 58, }, - }, -} -gems["Vengeance"] = { - trigger = true, - strength = true, - active_skill = true, - attack = true, - area = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - area = true, - }, - skillTypes = { [1] = true, [11] = true, [24] = true, [47] = true, [6] = true, [57] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - --"melee_counterattack_trigger_on_hit_%" = 30 - --"attack_unusable_if_triggerable" = ? - skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? - --"is_area_damage" = ? - }, - qualityMods = { - --"melee_counterattack_trigger_on_hit_%" = 0.5 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - }, - levels = { - [1] = { -25, }, - [2] = { -23, }, - [3] = { -21, }, - [4] = { -19, }, - [5] = { -17, }, - [6] = { -15, }, - [7] = { -13, }, - [8] = { -11, }, - [9] = { -9, }, - [10] = { -7, }, - [11] = { -5, }, - [12] = { -3, }, - [13] = { -1, }, - [14] = { 1, }, - [15] = { 3, }, - [16] = { 5, }, - [17] = { 7, }, - [18] = { 9, }, - [19] = { 11, }, - [20] = { 13, }, - [21] = { 15, }, - [22] = { 17, }, - [23] = { 19, }, - [24] = { 21, }, - [25] = { 23, }, - [26] = { 25, }, - [27] = { 27, }, - [28] = { 29, }, - [29] = { 31, }, - [30] = { 33, }, - }, -} -gems["Vigilant Strike"] = { - attack = true, - strength = true, - active_skill = true, - melee = true, - color = 1, - baseFlags = { - attack = true, - melee = true, - }, - skillTypes = { [1] = true, [5] = true, [24] = true, [6] = true, [28] = true, [25] = true, [53] = true, }, - weaponTypes = { - ["One Handed Mace"] = true, - ["Two Handed Sword"] = true, - ["Dagger"] = true, - ["Staff"] = true, - ["Two Handed Axe"] = true, - ["Two Handed Mace"] = true, - ["One Handed Axe"] = true, - ["Claw"] = true, - ["One Handed Sword"] = true, - }, - baseMods = { - skill("castTime", 1), - skill("manaCost", 6), - skill("cannotBeEvaded", true), --"global_always_hit" = ? - }, - qualityMods = { - mod("FortifyDuration", "INC", 1), --"fortify_duration_+%" = 1 - }, - levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Attack), - [2] = mod("FortifyDuration", "INC", nil), --"fortify_duration_+%" - }, - levels = { - [1] = { 65, 75, }, - [2] = { 67, 80, }, - [3] = { 69, 85, }, - [4] = { 71, 90, }, - [5] = { 73, 95, }, - [6] = { 75, 100, }, - [7] = { 77, 105, }, - [8] = { 79, 110, }, - [9] = { 81, 115, }, - [10] = { 83, 120, }, - [11] = { 85, 125, }, - [12] = { 87, 130, }, - [13] = { 89, 135, }, - [14] = { 91, 140, }, - [15] = { 93, 145, }, - [16] = { 95, 150, }, - [17] = { 97, 155, }, - [18] = { 99, 160, }, - [19] = { 101, 165, }, - [20] = { 103, 170, }, - [21] = { 105, 175, }, - [22] = { 107, 180, }, - [23] = { 109, 185, }, - [24] = { 111, 190, }, - [25] = { 113, 195, }, - [26] = { 115, 200, }, - [27] = { 117, 205, }, - [28] = { 119, 210, }, - [29] = { 121, 215, }, - [30] = { 123, 220, }, - }, -} -gems["Vitality"] = { - aura = true, - strength = true, - active_skill = true, - spell = true, - area = true, - color = 1, - baseFlags = { - spell = true, - aura = true, - area = true, - }, - skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, - baseMods = { - skill("castTime", 1.2), - skill("manaCost", 35), - --"base_deal_no_damage" = ? - }, - qualityMods = { - mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 - }, - levelMods = { - [1] = mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"life_regeneration_rate_per_minute_%" - [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - }, - levels = { - [1] = { 0.7, 0, }, - [2] = { 0.75, 3, }, - [3] = { 0.8, 6, }, - [4] = { 0.85, 9, }, - [5] = { 0.9, 12, }, - [6] = { 0.95, 15, }, - [7] = { 1, 18, }, - [8] = { 1.05, 21, }, - [9] = { 1.1, 23, }, - [10] = { 1.15, 25, }, - [11] = { 1.2, 27, }, - [12] = { 1.25, 29, }, - [13] = { 1.3, 31, }, - [14] = { 1.35, 33, }, - [15] = { 1.4, 35, }, - [16] = { 1.45, 36, }, - [17] = { 1.5, 37, }, - [18] = { 1.55, 38, }, - [19] = { 1.6, 39, }, - [20] = { 1.65, 40, }, - [21] = { 1.7, 41, }, - [22] = { 1.75, 42, }, - [23] = { 1.8, 43, }, - [24] = { 1.85, 44, }, - [25] = { 1.9, 45, }, - [26] = { 1.95, 46, }, - [27] = { 2, 47, }, - [28] = { 2.05, 48, }, - [29] = { 2.1, 49, }, - [30] = { 2.15, 50, }, - }, -} -gems["Warlord's Mark"] = { - curse = true, - strength = true, - active_skill = true, - spell = true, - area = true, - duration = true, - color = 1, - baseFlags = { - spell = true, - curse = true, - area = true, - duration = true, - }, - skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, - baseMods = { - skill("castTime", 0.5), - --"chance_to_be_stunned_%" = 10 - mod("SelfDamageLifeLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_leech_on_any_damage_when_hit_permyriad" = 200 - mod("SelfDamageManaLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_leech_on_any_damage_when_hit_permyriad" = 200 - --"base_deal_no_damage" = ? - skill("debuff", true), - }, - qualityMods = { - --"chance_to_grant_endurance_charge_on_death_%" = 0.5 - }, - levelMods = { - [1] = skill("manaCost", nil), - [2] = skill("duration", nil), --"base_skill_effect_duration" - [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" - [4] = mod("StunRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_stun_recovery_+%" - --[5] = "chance_to_grant_endurance_charge_on_death_%" - }, - levels = { - [1] = { 24, 6, 0, -21, 21, }, - [2] = { 26, 6.2, 4, -21, 21, }, - [3] = { 27, 6.4, 8, -22, 22, }, - [4] = { 29, 6.6, 12, -22, 22, }, - [5] = { 30, 6.8, 16, -23, 23, }, - [6] = { 32, 7, 20, -23, 23, }, - [7] = { 34, 7.2, 24, -24, 24, }, - [8] = { 35, 7.4, 28, -24, 24, }, - [9] = { 37, 7.6, 32, -25, 25, }, - [10] = { 38, 7.8, 36, -25, 25, }, - [11] = { 39, 8, 40, -26, 26, }, - [12] = { 40, 8.2, 44, -26, 26, }, - [13] = { 42, 8.4, 48, -27, 27, }, - [14] = { 43, 8.6, 52, -27, 27, }, - [15] = { 44, 8.8, 56, -28, 28, }, - [16] = { 45, 9, 60, -28, 28, }, - [17] = { 46, 9.2, 64, -29, 29, }, - [18] = { 47, 9.4, 68, -29, 29, }, - [19] = { 48, 9.6, 72, -30, 30, }, - [20] = { 50, 9.8, 76, -30, 30, }, - [21] = { 51, 10, 80, -31, 31, }, - [22] = { 52, 10.2, 84, -31, 31, }, - [23] = { 53, 10.4, 88, -32, 32, }, - [24] = { 54, 10.6, 92, -32, 32, }, - [25] = { 56, 10.8, 96, -33, 33, }, - [26] = { 57, 11, 100, -33, 33, }, - [27] = { 58, 11.2, 104, -34, 34, }, - [28] = { 59, 11.4, 108, -34, 34, }, - [29] = { 60, 11.6, 112, -35, 35, }, - [30] = { 61, 11.8, 116, -35, 35, }, - }, -} diff --git a/Export/Gems/other.txt b/Export/Gems/other.txt deleted file mode 100644 index 3e0dfdd5..00000000 --- a/Export/Gems/other.txt +++ /dev/null @@ -1,83 +0,0 @@ --- Path of Building --- --- Other active skills --- Skill gem data (c) Grinding Gear Games --- -local gems, mod, flag, skill = ... - -gems["_default"] = { -#skill Melee -#flags attack melee projectile -#mods -} -gems["Detonate Mines"] = { -#skill GemDetonateMines -#flags spell -#mods -} -gems["Portal"] = { -#skill Portal -#flags spell -#mods -} -gems["Abberath's Fury"] = { -#skill RepeatingShockwave -#flags spell area -#mods -} -gems["Bone Nova"] = { -#skill TriggeredBoneNova -#flags attack projectile -#mods -} -gems["Consecrate"] = { -#skill TriggeredConsecrate -#flags spell duration area -#mods -} -gems["Create Lesser Shrine"] = { -#skill TriggeredSummonLesserShrine -#flags spell duration -#mods -} -gems["Envy"] = { -#skill Envy -#flags spell aura area chaos -#mods -} -gems["Fire Burst"] = { -#skill FireBurstOnHit -#flags spell area fire -#mods -} -gems["Gluttony of Elements"] = { -#skill VaalAuraElementalDamageHealing -#flags spell aura area duration vaal -#mods -} -gems["Icestorm"] = { -#skill IcestormUniqueStaff12 -#flags spell area duration cold -#baseMod skill("duration", 0.15, { type = "PerStat", stat = "Int", div = 100, base = 1.5 }) -#mods -} -gems["Illusory Warp"] = { -#skill MerveilWarp -#flags spell area duration movement cold -#mods -} -gems["Lightning Bolt"] = { -#skill LightningSpell -#flags spell area lightning -#mods -} -gems["Molten Burst"] = { -#skill TriggeredMoltenStrike -#flags attack projectile area fire -#mods -} -gems["Shock Ground"] = { -#skill TriggeredShockedGround -#flags spell area duration lightning -#mods -} diff --git a/Export/Minions/Spectres.lua b/Export/Minions/Spectres.lua new file mode 100644 index 00000000..e6ef4e7a --- /dev/null +++ b/Export/Minions/Spectres.lua @@ -0,0 +1,1340 @@ +-- Path of Building +-- +-- Spectre Data +-- Monster data (c) Grinding Gear Games +-- +local minions, mod = ... + +-- Blackguard +minions["Metadata/Monsters/Axis/AxisCaster"] = { + name = "Blackguard Mage", + life = 0.9, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.305, + weaponType1 = "Wand", + weaponType2 = "Shield", + skillList = { + "Melee", + "SkeletonSpark", + "MonsterLightningThorns", + "AxisClaimSoldierMinions", + }, + modList = { + -- MonsterCastsSparkText + -- MonsterCastsLightningThornsText + }, +} +minions["Metadata/Monsters/Axis/AxisCasterArc"] = { + name = "Blackguard Arcmage", + life = 0.9, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.305, + weaponType1 = "Wand", + weaponType2 = "Shield", + skillList = { + "Melee", + "MonsterLightningThorns", + "MonsterArc", + "AxisClaimSoldierMinions", + }, + modList = { + -- MonsterCastsArcText + -- MonsterCastsLightningThornsText + }, +} +minions["Metadata/Monsters/Axis/AxisExperimenter"] = { + name = "Mortality Experimenter", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 75, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Wand", + skillList = { + "Melee", + "SkeletonTemporalChains", + "ExperimenterDetonateDead", + }, + modList = { + -- MonsterCastsTemporalChainsText + -- MonsterDetonatesCorpsesText + }, +} +minions["Metadata/Monsters/Axis/AxisExperimenter2"] = { + name = "Flesh Sculptor", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 75, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Wand", + skillList = { + "ExperimenterDetonateDead", + "Melee", + "MonsterEnfeeble", + "MonsterProjectileWeakness", + }, + modList = { + -- MonsterDetonatesCorpsesText + -- MonsterCastsEnfeebleCurseText + -- MonsterCastsProjectileWeaknessCurseText + }, +} +minions["Metadata/Monsters/Axis/AxisExperimenterRaiseZombie"] = { + name = "Reanimator", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 75, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Wand", + skillList = { + "Melee", + "MonsterEnfeeble", + "NecromancerRaiseZombie", + }, + modList = { + -- MonsterCastsEnfeebleCurseText + -- MonsterRaisesZombiesText + }, +} +-- Bandit +minions["Metadata/Monsters/Bandits/BanditBowPoisonArrow"] = { + name = "Alira's Deadeye", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterCausticArrow", + }, + modList = { + -- MonsterFiresCausticArrowsText + }, +} +minions["Metadata/Monsters/Bandits/BanditMeleeWarlordsMarkMaul"] = { + name = "Oak's Devoted", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.35, + weaponType1 = "Two Handed Mace", + skillList = { + "Melee", + "MonsterWarlordsMark", + }, + modList = { + -- MonsterCastsWarlordsMarkCurseText + }, +} +-- Beast +minions["Metadata/Monsters/Beasts/BeastCaveDegenAura"] = { + name = "Shaggy Monstrosity", + life = 2.1, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "Melee", + "ChaosDegenAura", + }, + modList = { + mod("Damage", "MORE", -33), -- MonsterSpeedAndDamageFixupComplete + mod("Speed", "MORE", 33), -- MonsterSpeedAndDamageFixupComplete + }, +} +minions["Metadata/Monsters/Beasts/BeastCleaveEnduringCry"] = { + name = "Hairy Bonecruncher", + life = 2.1, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "Melee", + "MonsterEnduringCry", + "BeastCleave", + }, + modList = { + mod("Damage", "MORE", -33), -- MonsterSpeedAndDamageFixupComplete + mod("Speed", "MORE", 33), -- MonsterSpeedAndDamageFixupComplete + -- MonsterUsesEnduringCryText + -- MonsterCleavesText + }, +} +-- Blood apes +minions["Metadata/Monsters/BloodChieftain/MonkeyChiefBloodEnrage"] = { + name = "Carnage Chieftain", + life = 1.5, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.395, + weaponType1 = "One Handed Mace", + skillList = { + "Melee", + "BloodChieftainSummonMonkeys", + "MassFrenzy", + }, + modList = { + mod("Damage", "MORE", -22), -- MonsterSpeedAndDamageFixupLarge + mod("Speed", "MORE", 22), -- MonsterSpeedAndDamageFixupLarge + -- MonsterSummonsMonkeysText + -- MonsterCastsMassFrenzyText + }, +} +-- Goatmen +minions["Metadata/Monsters/Goatman/GoatmanLeapSlam"] = { + name = "Goatman", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + "GoatmanWait", + "GoatmanWait2", + }, + modList = { + -- MonsterLeapsOntoEnemiesText + }, +} +minions["Metadata/Monsters/Goatman/GoatmanLightningLeapSlamMaps"] = { + name = "Bearded Devil", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.8, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + "GoatmanWait", + "GoatmanWait2", + }, + modList = { + mod("PhysicalDamageGainAsLightning", "BASE", 100), -- MonsterPhysicalAddedAsLightningSkeletonMaps + -- MonsterLeapsOntoEnemiesText + }, +} +minions["Metadata/Monsters/Goatman/GoatmanShamanFireball"] = { + name = "Goatman Shaman", + life = 1, + energyShield = 0.2, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + weaponType1 = "Staff", + skillList = { + "MonsterFireball", + "GoatmanMoltenShell", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "INC", -50, ModFlag.Cast), -- MonsterGoatmanShamanCastSpeed + -- MonsterCastsFireballText + -- MonsterCastsMoltenShellText + }, +} +minions["Metadata/Monsters/Goatman/GoatmanShamanLightning"] = { + name = "Bearded Shaman", + life = 1, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + weaponType1 = "Staff", + skillList = { + "Melee", + "MonsterShockNova", + "MonsterSpark", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "INC", -50, ModFlag.Cast), -- MonsterGoatmanShamanCastSpeed + -- MonsterCastsShockNovaText + -- MonsterCastsSparkText + }, +} +-- Miscreation +minions["Metadata/Monsters/DemonFemale/DemonFemale"] = { + name = "Whipping Miscreation", + life = 0.99, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.88, + damageSpread = 0.2, + attackTime = 2.445, + skillList = { + "Melee", + }, + modList = { + -- MonsterChanceToVulnerabilityOnHit2 + }, +} +minions["Metadata/Monsters/DemonModular/DemonFemaleRanged"] = { + name = "Tentacle Miscreation", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.84, + damageSpread = 0.2, + attackTime = 3, + skillList = { + "DemonFemaleRangedProjectile", + }, + modList = { + mod("PhysicalDamageConvertToFire", "BASE", 50), -- MonsterConvertToFireDamage2 + }, +} +minions["Metadata/Monsters/DemonModular/DemonModularFire"] = { + name = "Burned Miscreation", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "MonsterRighteousFire", + "MonsterRighteousFireWhileSpectred", + }, + modList = { + -- MonsterCastsUnholyFireText + }, +} +-- Maw +minions["Metadata/Monsters/Frog/Frog"] = { + name = "Fetid Maw", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + }, + modList = { + -- MonsterLeapsOntoEnemiesText + }, +} +minions["Metadata/Monsters/Frog/Frog2"] = { + name = "Murk Fiend", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.455, + skillList = { + "MonsterLeapSlam", + "Melee", + }, + modList = { + -- MonsterLeapsOntoEnemiesText + }, +} +-- Chimeral +minions["Metadata/Monsters/GemMonster/Iguana"] = { + name = "Plumed Chimeral", + life = 1.25, + energyShield = 0.2, + fireResist = 52, + coldResist = 52, + lightningResist = 0, + chaosResist = 0, + damage = 2.12, + damageSpread = 0.2, + attackTime = 1.005, + skillList = { + "IguanaProjectile", + "Melee", + }, + modList = { + -- MonsterSuppressingFire + -- DisplayMonsterSuppressingFire + }, +} +-- Ghost pirate +minions["Metadata/Monsters/GhostPirates/GhostPirateBlackBowMaps"] = { + name = "Spectral Bowman", + life = 0.96, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.48, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + mod("PhysicalDamageGainAsLightning", "BASE", 100), -- MonsterPhysicalAddedAsLightningSkeletonMaps + -- MonsterCastsPunctureText + }, +} +minions["Metadata/Monsters/GhostPirates/GhostPirateBlackFlickerStrikeMaps"] = { + name = "Cursed Mariner", + life = 1, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.8, + damageSpread = 0.2, + attackTime = 1.65, + weaponType1 = "One Handed Sword", + weaponType2 = "Shield", + skillList = { + "Melee", + "MonsterFlickerStrike", + }, + modList = { + mod("PhysicalDamageGainAsLightning", "BASE", 100), -- MonsterPhysicalAddedAsLightningSkeletonMaps + -- MonsterUsesFlickerStrikeText + }, +} +-- Undying grappler +minions["Metadata/Monsters/Grappler/Grappler"] = { + name = "Undying Grappler", + life = 1, + fireResist = 20, + coldResist = 20, + lightningResist = 20, + chaosResist = 20, + damage = 2, + damageSpread = 0.2, + attackTime = 1.245, + skillList = { + "Melee", + "MonsterFlickerStrike", + "MonsterDischarge", + }, + modList = { + -- MonsterGainsPowerChargeOnKinDeath + -- MonsterUsesFlickerStrikeText + -- MonsterCastsDischargeText + }, +} +-- Ribbon +minions["Metadata/Monsters/Guardians/GuardianFire"] = { + name = "Flame Sentinel", + life = 1.8, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "MonsterMultiFireball", + "MonsterSplitFireball", + "MonsterLesserMultiFireball", + "MonsterMultiFireballSpectre", + "MonsterSplitFireballSpectre", + "MonsterLesserMultiFireballSpectre", + }, + modList = { + -- MonsterCastsAugmentedFireballsText + }, +} +minions["Metadata/Monsters/Guardians/GuardianLightning"] = { + name = "Galvanic Ribbon", + life = 1.8, + energyShield = 0.4, + fireResist = 0, + coldResist = 85, + lightningResist = 0, + chaosResist = 0, + damage = 2.2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "GuardianArc", + }, + modList = { + -- MonsterChannelsLightningText + }, +} +-- Gut flayer +minions["Metadata/Monsters/HalfSkeleton/HalfSkeleton"] = { + name = "Gut Flayer", + life = 1.32, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.1, + damageSpread = 0.3, + attackTime = 1.5, + weaponType1 = "Dagger", + skillList = { + "Melee", + "HalfSkeletonPuncture", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +-- Construct +minions["Metadata/Monsters/incaminion/Fragment"] = { + name = "Ancient Construct", + life = 0.7, + energyShield = 0.2, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 40, + damage = 1.84, + damageSpread = 0.2, + attackTime = 1.995, + skillList = { + "IncaMinionProjectile", + }, + modList = { + }, +} +-- Carrion queen +minions["Metadata/Monsters/InsectSpawner/InsectSpawner"] = { + name = "Carrion Queen", + life = 2.45, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.91, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "InsectSpawnerSpit", + "InsectSpawnerSpawn", + }, + modList = { + mod("PhysicalDamageConvertToFire", "BASE", 50), -- MonsterConvertToFireDamage2 + }, +} +-- Birdman +minions["Metadata/Monsters/Kiweth/Kiweth"] = { + name = "Avian Retch", + life = 1.54, + energyShield = 0.2, + fireResist = 0, + coldResist = 40, + lightningResist = 0, + chaosResist = 0, + damage = 2.68, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "BirdmanConsumeCorpse", + "BirdmanBloodProjectile", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterLesserFarShot + }, +} +minions["Metadata/Monsters/Kiweth/KiwethSeagull"] = { + name = "Gluttonous Gull", + life = 1.3, + energyShield = 0.12, + fireResist = 0, + coldResist = 40, + lightningResist = 0, + chaosResist = 0, + damage = 2.56, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "BirdmanConsumeCorpse", + "BirdmanBloodProjectile", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterLesserFarShot + }, +} +-- Helion +minions["Metadata/Monsters/Lion/LionDesertSkinPuncture"] = { + name = "Dune Hellion", + life = 1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +-- Knitted horror +minions["Metadata/Monsters/MassSkeleton/MassSkeleton"] = { + name = "Knitted Horror", + life = 2.25, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "SkeletonMassBowProjectile", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +-- Voidbearer +minions["Metadata/Monsters/Monkeys/FlameBearer"] = { + name = "Voidbearer", + life = 1.1, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.1, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "FlamebearerFlameBlue", + }, + modList = { + }, +} +-- Stone golem +minions["Metadata/Monsters/MossMonster/FireMonster"] = { + name = "Cinder Elemental", + life = 2.7, + fireResist = 0, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2.5, + damageSpread = 0.2, + attackTime = 1.695, + skillList = { + "Melee", + "FireMonsterWhirlingBlades", + }, + modList = { + mod("Damage", "MORE", -33), -- MonsterSpeedAndDamageFixupComplete + mod("Speed", "MORE", 33), -- MonsterSpeedAndDamageFixupComplete + -- MonsterRollsOverEnemiesText + -- ImmuneToLavaDamage + }, +} +-- Necromancer +minions["Metadata/Monsters/Necromancer/NecromancerConductivity"] = { + name = "Sin Lord", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerConductivity", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsConductivityText + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerEnfeebleCurse"] = { + name = "Diabolist", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerEnfeeble", + }, + modList = { + -- MonsterRaisesUndeadText + -- MonsterCastsEnfeebleCurseText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerFlamability"] = { + name = "Ash Prophet", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerFlammability", + }, + modList = { + -- MonsterRaisesUndeadText + -- MonsterCastsFlammabilityText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- ImmuneToLavaDamage + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerFrostbite"] = { + name = "Death Bishop", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerFrostbite", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsFrostbiteText + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerElementalWeakness"] = { + name = "Defiler", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerElementalWeakness", + }, + modList = { + -- MonsterRaisesUndeadText + -- MonsterCastsElementralWeaknessCurseText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerProjectileWeakness"] = { + name = "Necromancer", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerProjectileWeakness", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsProjectileWeaknessCurseText + }, +} +minions["Metadata/Monsters/Necromancer/NecromancerVulnerability"] = { + name = "Necromancer", + life = 1.86, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 1.98, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "NecromancerReviveSkeleton", + "NecromancerVulnerability", + }, + modList = { + -- MonsterRaisesUndeadText + mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse), -- MonsterCurseCastSpeedPenalty + -- MonsterCastsVulnerabilityCurseText + }, +} +-- Undying bomber +minions["Metadata/Monsters/Pyromaniac/PyromaniacFire"] = { + name = "Undying Incinerator", + life = 1, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "PyroFireball", + "PyroSuicideExplosion", + "MonsterFireBomb", + }, + modList = { + -- MonsterThrowsFireBombsText + -- MonsterExplodesOnItsTargetOnLowLifeText + -- ImmuneToLavaDamage + }, +} +minions["Metadata/Monsters/Pyromaniac/PyromaniacPoison"] = { + name = "Undying Alchemist", + life = 1, + fireResist = 75, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "Melee", + "MonsterCausticBomb", + "PyroChaosFireball", + }, + modList = { + -- MonsterThrowsPoisonBombsText + }, +} +-- Stygian revenant +minions["Metadata/Monsters/Revenant/Revenant"] = { + name = "Stygian Revenant", + life = 1.82, + fireResist = 0, + coldResist = 0, + lightningResist = 75, + chaosResist = 0, + damage = 2.4, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "RevenantReviveUndead", + "RevenantSpellProjectile", + "Melee", + "RevenantSpellProjectileSpectre", + }, + modList = { + }, +} +-- Sea witch +minions["Metadata/Monsters/Seawitch/SeaWitchScreech"] = { + name = "Singing Siren", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SeaWitchScreech", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + }, +} +minions["Metadata/Monsters/Seawitch/SeaWitchSpawnExploding"] = { + name = "Merveil's Attendant", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SummonExplodingSpawn", + "SeaWitchScreech", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterSummonsExplodingSpawnText + }, +} +minions["Metadata/Monsters/Seawitch/SeaWitchSpawnTemporalChains"] = { + name = "Merveil's Chosen", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SkeletonTemporalChains", + "SummonSpawn", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterSummonsSpawnText + -- MonsterCastsTemporalChainsText + }, +} +minions["Metadata/Monsters/Seawitch/SeaWitchVulnerabilityCurse"] = { + name = "Merveil's Chosen", + life = 1.02, + energyShield = 0.4, + fireResist = 0, + coldResist = 75, + lightningResist = 0, + chaosResist = 0, + damage = 2.02, + damageSpread = 0.2, + attackTime = 1.5, + skillList = { + "SeaWitchWave", + "Melee", + "SkeletonVulnerability", + }, + modList = { + mod("Damage", "MORE", -11), -- MonsterSpeedAndDamageFixupSmall + mod("Speed", "MORE", 11), -- MonsterSpeedAndDamageFixupSmall + -- MonsterCastsVulnerabilityCurseText + }, +} +-- Skeleton +minions["Metadata/Monsters/Skeletons/SkeletonBowPuncture"] = { + name = "Brittle Bleeder", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterCastsPunctureText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning"] = { + name = "Brittle Poacher", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonMeleeLarge"] = { + name = "Colossal Bonestalker", + life = 1.98, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2.8, + damageSpread = 0.2, + attackTime = 2.25, + weaponType1 = "One Handed Mace", + skillList = { + "Melee", + }, + modList = { + -- MonsterNecromancerRaisable + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning3"] = { + name = "Flayed Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonCasterColdMultipleProjectiles"] = { + name = "Frost Harbinger", + life = 0.84, + energyShield = 0.4, + fireResist = 0, + coldResist = 40, + lightningResist = 0, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "SkeletonProjectileCold", + }, + modList = { + mod("ProjectileCount", "BASE", 2), -- MonsterMultipleProjectilesImplicit1 + -- MonsterNecromancerRaisable + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonCasterFireMultipleProjectiles2"] = { + name = "Incinerated Mage", + life = 0.84, + energyShield = 0.4, + fireResist = 40, + coldResist = 0, + lightningResist = 0, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "SkeletonProjectileFire", + }, + modList = { + -- MonsterNecromancerRaisable + mod("ProjectileCount", "BASE", 2), -- MonsterMultipleProjectilesImplicit1 + -- ImmuneToLavaDamage + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowPoison"] = { + name = "Plagued Bowman", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterCausticArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresCausticArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning2"] = { + name = "Restless Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowLightning4"] = { + name = "Sin Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterLightningArrow", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterFiresLightningArrowsText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonCasterLightningSpark"] = { + name = "Sparking Mage", + life = 0.84, + energyShield = 0.4, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.605, + skillList = { + "SkeletonProjectileLightning", + "SkeletonSpark", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterCastsSparkText + }, +} +minions["Metadata/Monsters/Skeletons/SkeletonBowProjectileWeaknessCurse"] = { + name = "Vexing Archer", + life = 0.96, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 1.6, + damageSpread = 0.2, + attackTime = 1.995, + weaponType1 = "Bow", + skillList = { + "Melee", + "MonsterProjectileWeakness", + }, + modList = { + -- MonsterNecromancerRaisable + -- MonsterCastsProjectileWeaknessCurseText + }, +} +-- Snake +minions["Metadata/Monsters/Snake/SnakeScorpionMultiShot"] = { + name = "Barb Serpent", + life = 0.94, + fireResist = 30, + coldResist = 0, + lightningResist = 0, + chaosResist = 30, + damage = 1.75, + damageSpread = 0.2, + attackTime = 1.65, + skillList = { + "Melee", + "SnakeSpineProjectile", + }, + modList = { + mod("PhysicalDamageConvertToChaos", "BASE", 30), -- MonsterSnakeChaos + mod("ProjectileCount", "BASE", 2), -- MonsterMultipleProjectilesImplicit1 + }, +} +-- Spider +minions["Metadata/Monsters/Spiders/SpiderThornFlickerStrike"] = { + name = "Leaping Spider", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.44, + skillList = { + "Melee", + "MonsterFlickerStrike", + }, + modList = { + -- MonsterUsesFlickerStrikeText + }, +} +-- Undying +minions["Metadata/Monsters/Undying/CityStalkerMaleCasterArmour"] = { + name = "Undying Evangelist", + life = 1.2, + fireResist = 37, + coldResist = 37, + lightningResist = 37, + chaosResist = 0, + damage = 2.2, + damageSpread = 0.2, + attackTime = 1.245, + skillList = { + "Melee", + "DelayedBlast", + "MonsterProximityShield", + "DelayedBlastSpectre", + }, + modList = { + }, +} +minions["Metadata/Monsters/Undying/UndyingOutcastPuncture"] = { + name = "Undying Impaler", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.65, + skillList = { + "Melee", + "MonsterPuncture", + }, + modList = { + -- MonsterCastsPunctureText + }, +} +minions["Metadata/Monsters/Undying/UndyingOutcastWhirlingBlades"] = { + name = "Undying Outcast", + life = 1, + fireResist = 0, + coldResist = 0, + lightningResist = 40, + chaosResist = 0, + damage = 2, + damageSpread = 0.2, + attackTime = 1.65, + skillList = { + "Melee", + "UndyingWhirlingBlades", + }, + modList = { + }, +} diff --git a/Export/Minions/Spectres.txt b/Export/Minions/Spectres.txt new file mode 100644 index 00000000..f2d8f67c --- /dev/null +++ b/Export/Minions/Spectres.txt @@ -0,0 +1,98 @@ +-- Path of Building +-- +-- Spectre Data +-- Monster data (c) Grinding Gear Games +-- +local minions, mod = ... + +-- Blackguard +#monster Metadata/Monsters/Axis/AxisCaster +#monster Metadata/Monsters/Axis/AxisCasterArc +#monster Metadata/Monsters/Axis/AxisExperimenter +#monster Metadata/Monsters/Axis/AxisExperimenter2 +#monster Metadata/Monsters/Axis/AxisExperimenterRaiseZombie +-- Bandit +#monster Metadata/Monsters/Bandits/BanditBowPoisonArrow +#monster Metadata/Monsters/Bandits/BanditMeleeWarlordsMarkMaul +-- Beast +#monster Metadata/Monsters/Beasts/BeastCaveDegenAura +#monster Metadata/Monsters/Beasts/BeastCleaveEnduringCry +-- Blood apes +#monster Metadata/Monsters/BloodChieftain/MonkeyChiefBloodEnrage +-- Goatmen +#monster Metadata/Monsters/Goatman/GoatmanLeapSlam +#monster Metadata/Monsters/Goatman/GoatmanLightningLeapSlamMaps +#monster Metadata/Monsters/Goatman/GoatmanShamanFireball +#monster Metadata/Monsters/Goatman/GoatmanShamanLightning +-- Miscreation +#monster Metadata/Monsters/DemonFemale/DemonFemale +#monster Metadata/Monsters/DemonModular/DemonFemaleRanged +#monster Metadata/Monsters/DemonModular/DemonModularFire +-- Maw +#monster Metadata/Monsters/Frog/Frog +#monster Metadata/Monsters/Frog/Frog2 +-- Chimeral +#monster Metadata/Monsters/GemMonster/Iguana +-- Ghost pirate +#monster Metadata/Monsters/GhostPirates/GhostPirateBlackBowMaps +#monster Metadata/Monsters/GhostPirates/GhostPirateBlackFlickerStrikeMaps +-- Undying grappler +#monster Metadata/Monsters/Grappler/Grappler +-- Ribbon +#monster Metadata/Monsters/Guardians/GuardianFire +#monster Metadata/Monsters/Guardians/GuardianLightning +-- Gut flayer +#monster Metadata/Monsters/HalfSkeleton/HalfSkeleton +-- Construct +#monster Metadata/Monsters/incaminion/Fragment +-- Carrion queen +#monster Metadata/Monsters/InsectSpawner/InsectSpawner +-- Birdman +#monster Metadata/Monsters/Kiweth/Kiweth +#monster Metadata/Monsters/Kiweth/KiwethSeagull +-- Helion +#monster Metadata/Monsters/Lion/LionDesertSkinPuncture +-- Knitted horror +#monster Metadata/Monsters/MassSkeleton/MassSkeleton +-- Voidbearer +#monster Metadata/Monsters/Monkeys/FlameBearer +-- Stone golem +#monster Metadata/Monsters/MossMonster/FireMonster +-- Necromancer +#monster Metadata/Monsters/Necromancer/NecromancerConductivity +#monster Metadata/Monsters/Necromancer/NecromancerEnfeebleCurse +#monster Metadata/Monsters/Necromancer/NecromancerFlamability +#monster Metadata/Monsters/Necromancer/NecromancerFrostbite +#monster Metadata/Monsters/Necromancer/NecromancerElementalWeakness +#monster Metadata/Monsters/Necromancer/NecromancerProjectileWeakness +#monster Metadata/Monsters/Necromancer/NecromancerVulnerability +-- Undying bomber +#monster Metadata/Monsters/Pyromaniac/PyromaniacFire +#monster Metadata/Monsters/Pyromaniac/PyromaniacPoison +-- Stygian revenant +#monster Metadata/Monsters/Revenant/Revenant +-- Sea witch +#monster Metadata/Monsters/Seawitch/SeaWitchScreech +#monster Metadata/Monsters/Seawitch/SeaWitchSpawnExploding +#monster Metadata/Monsters/Seawitch/SeaWitchSpawnTemporalChains +#monster Metadata/Monsters/Seawitch/SeaWitchVulnerabilityCurse +-- Skeleton +#monster Metadata/Monsters/Skeletons/SkeletonBowPuncture +#monster Metadata/Monsters/Skeletons/SkeletonBowLightning +#monster Metadata/Monsters/Skeletons/SkeletonMeleeLarge +#monster Metadata/Monsters/Skeletons/SkeletonBowLightning3 +#monster Metadata/Monsters/Skeletons/SkeletonCasterColdMultipleProjectiles +#monster Metadata/Monsters/Skeletons/SkeletonCasterFireMultipleProjectiles2 +#monster Metadata/Monsters/Skeletons/SkeletonBowPoison +#monster Metadata/Monsters/Skeletons/SkeletonBowLightning2 +#monster Metadata/Monsters/Skeletons/SkeletonBowLightning4 +#monster Metadata/Monsters/Skeletons/SkeletonCasterLightningSpark +#monster Metadata/Monsters/Skeletons/SkeletonBowProjectileWeaknessCurse +-- Snake +#monster Metadata/Monsters/Snake/SnakeScorpionMultiShot +-- Spider +#monster Metadata/Monsters/Spiders/SpiderThornFlickerStrike +-- Undying +#monster Metadata/Monsters/Undying/CityStalkerMaleCasterArmour +#monster Metadata/Monsters/Undying/UndyingOutcastPuncture +#monster Metadata/Monsters/Undying/UndyingOutcastWhirlingBlades diff --git a/Export/Minions/modmap.ini b/Export/Minions/modmap.ini new file mode 100644 index 00000000..259692a7 --- /dev/null +++ b/Export/Minions/modmap.ini @@ -0,0 +1,24 @@ +# General +[MonsterSpeedAndDamageFixupSmall] +mod("Damage", "MORE", -11) +mod("Speed", "MORE", 11) +[MonsterSpeedAndDamageFixupLarge] +mod("Damage", "MORE", -22) +mod("Speed", "MORE", 22) +[MonsterSpeedAndDamageFixupComplete] +mod("Damage", "MORE", -33) +mod("Speed", "MORE", 33) +[MonsterMultipleProjectilesImplicit1] +mod("ProjectileCount", "BASE", 2) +[MonsterConvertToFireDamage2] +mod("PhysicalDamageConvertToFire", "BASE", 50) +[MonsterCurseCastSpeedPenalty] +mod("Speed", "INC", -80, ModFlag.Cast, KeywordFlag.Curse) + +# Type-specific +[MonsterSnakeChaos] +mod("PhysicalDamageConvertToChaos", "BASE", 30) +[MonsterPhysicalAddedAsLightningSkeletonMaps] +mod("PhysicalDamageGainAsLightning", "BASE", 100) +[MonsterGoatmanShamanCastSpeed] +mod("Speed", "INC", -50, ModFlag.Cast) \ No newline at end of file diff --git a/Export/Skills/act_dex.lua b/Export/Skills/act_dex.lua new file mode 100644 index 00000000..c975ab92 --- /dev/null +++ b/Export/Skills/act_dex.lua @@ -0,0 +1,4730 @@ +-- Path of Building +-- +-- Active Dexterity skill gems +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["AnimateWeapon"] = { + name = "Animate Weapon", + gemTags = { + dexterity = true, + active_skill = true, + duration = true, + minion = true, + spell = true, + }, + unsupported = true, + color = 2, + baseFlags = { + }, + skillTypes = { [36] = true, [12] = true, [9] = true, [21] = true, [2] = true, [18] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [54] = true, [56] = true, }, + baseMods = { + skill("castTime", 0.8), + --"emerge_speed_+%" = 0 + skill("duration", 37.5), --"base_skill_effect_duration" = 37500 + --"number_of_animated_weapons_allowed" = 50 + }, + qualityMods = { + mod("MovementSpeed", "INC", 2, 0, 0, nil), --"base_movement_velocity_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "animate_item_maximum_level_requirement" + [4] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" + [5] = mod("Speed", "INC", nil, ModFlag.Attack, 0, nil), --"attack_speed_+%" + [6] = mod("PhysicalMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_physical_damage" + [7] = mod("PhysicalMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_physical_damage" + }, + levels = { + [1] = { 4, 9, 9, 0, 0, 4, 6, }, + [2] = { 6, 10, 11, 8, 2, 5, 8, }, + [3] = { 9, 11, 14, 16, 4, 7, 10, }, + [4] = { 12, 12, 18, 24, 6, 8, 12, }, + [5] = { 16, 14, 22, 32, 8, 10, 15, }, + [6] = { 20, 15, 26, 40, 10, 12, 18, }, + [7] = { 24, 16, 31, 48, 12, 14, 21, }, + [8] = { 28, 18, 35, 56, 14, 17, 25, }, + [9] = { 32, 20, 40, 64, 16, 19, 29, }, + [10] = { 36, 22, 44, 72, 18, 22, 34, }, + [11] = { 40, 25, 49, 80, 20, 24, 37, }, + [12] = { 44, 26, 53, 88, 22, 26, 39, }, + [13] = { 48, 27, 58, 96, 24, 28, 41, }, + [14] = { 52, 29, 62, 104, 26, 29, 44, }, + [15] = { 55, 30, 66, 112, 28, 31, 46, }, + [16] = { 58, 31, 70, 120, 30, 32, 49, }, + [17] = { 61, 33, 74, 128, 32, 34, 51, }, + [18] = { 64, 34, 78, 136, 34, 36, 53, }, + [19] = { 67, 34, 82, 144, 36, 37, 55, }, + [20] = { 70, 36, 100, 152, 38, 38, 56, }, + [21] = { 72, 37, 100, 160, 40, 39, 58, }, + [22] = { 74, 38, 100, 168, 42, 40, 60, }, + [23] = { 76, 38, 100, 176, 44, 41, 61, }, + [24] = { 78, 39, 100, 184, 46, 42, 63, }, + [25] = { 80, 40, 100, 192, 48, 43, 64, }, + [26] = { 82, 41, 100, 200, 50, 44, 66, }, + [27] = { 84, 42, 100, 208, 52, 45, 67, }, + [28] = { 86, 42, 100, 216, 54, 46, 69, }, + [29] = { 88, 44, 100, 224, 56, 47, 71, }, + [30] = { 90, 45, 100, 232, 58, 48, 72, }, + }, +} +skills["NewArcticArmour"] = { + name = "Arctic Armour", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + duration = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [5] = true, [18] = true, [12] = true, [15] = true, [27] = true, [34] = true, [16] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 25), + skill("cooldown", 0.5), + --"chill_enemy_when_hit_duration_ms" = 500 + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "new_arctic_armour_physical_damage_taken_when_hit_+%_final" + --[3] = "new_arctic_armour_fire_damage_taken_when_hit_+%_final" + [4] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 16, -8, -8, 2.5, }, + [2] = { 20, -8, -8, 2.6, }, + [3] = { 24, -9, -8, 2.7, }, + [4] = { 28, -9, -8, 2.8, }, + [5] = { 31, -9, -9, 2.9, }, + [6] = { 34, -9, -9, 3, }, + [7] = { 37, -10, -9, 3.1, }, + [8] = { 40, -10, -9, 3.2, }, + [9] = { 43, -10, -10, 3.3, }, + [10] = { 46, -10, -10, 3.4, }, + [11] = { 49, -11, -10, 3.5, }, + [12] = { 52, -11, -10, 3.6, }, + [13] = { 55, -11, -11, 3.7, }, + [14] = { 58, -11, -11, 3.8, }, + [15] = { 60, -12, -11, 3.9, }, + [16] = { 62, -12, -11, 4, }, + [17] = { 64, -12, -12, 4.1, }, + [18] = { 66, -12, -12, 4.2, }, + [19] = { 68, -13, -12, 4.3, }, + [20] = { 70, -13, -12, 4.4, }, + [21] = { 72, -13, -13, 4.5, }, + [22] = { 74, -13, -13, 4.6, }, + [23] = { 76, -14, -13, 4.7, }, + [24] = { 78, -14, -13, 4.8, }, + [25] = { 80, -14, -14, 4.9, }, + [26] = { 82, -14, -14, 5, }, + [27] = { 84, -15, -14, 5.1, }, + [28] = { 86, -15, -14, 5.2, }, + [29] = { 88, -15, -15, 5.3, }, + [30] = { 90, -15, -15, 5.4, }, + }, +} +skills["Barrage"] = { + name = "Barrage", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + bow = true, + }, + parts = { + { + name = "1 Arrow", + }, + { + name = "All Arrows", + }, + }, + setupFunc = function(actor, output) + if actor.mainSkill.skillPart == 2 then + actor.mainSkill.skillData.dpsMultiplier = output.ProjectileCount + end + end, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Wand"] = true, + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("ProjectileCount", "BASE", 3), --"number_of_additional_projectiles" = 3 + --"skill_can_fire_arrows" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 0.5, ModFlag.Projectile), --"projectile_damage_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 7, -50, }, + [2] = { 15, 7, -49.4, }, + [3] = { 19, 7, -48.8, }, + [4] = { 23, 8, -48.2, }, + [5] = { 27, 8, -47.6, }, + [6] = { 31, 8, -47, }, + [7] = { 35, 8, -46.4, }, + [8] = { 38, 8, -45.8, }, + [9] = { 41, 9, -45.2, }, + [10] = { 44, 9, -44.6, }, + [11] = { 47, 9, -44, }, + [12] = { 50, 9, -43.4, }, + [13] = { 53, 9, -42.8, }, + [14] = { 56, 10, -42.2, }, + [15] = { 59, 10, -41.6, }, + [16] = { 62, 10, -41, }, + [17] = { 64, 10, -40.4, }, + [18] = { 66, 10, -39.8, }, + [19] = { 68, 11, -39.2, }, + [20] = { 70, 11, -38.6, }, + [21] = { 72, 11, -38, }, + [22] = { 74, 11, -37.4, }, + [23] = { 76, 11, -36.8, }, + [24] = { 78, 11, -36.2, }, + [25] = { 80, 11, -35.6, }, + [26] = { 82, 12, -35, }, + [27] = { 84, 12, -34.4, }, + [28] = { 86, 12, -33.8, }, + [29] = { 88, 12, -33.2, }, + [30] = { 90, 12, -32.6, }, + }, +} +skills["BearTrap"] = { + name = "Bear Trap", + gemTags = { + trap = true, + dexterity = true, + active_skill = true, + duration = true, + cast = true, + }, + color = 2, + baseFlags = { + cast = true, + trap = true, + duration = true, + }, + skillTypes = { [12] = true, [19] = true, [37] = true, [39] = true, [10] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 2), + skill("critChance", 5), + skill("cooldown", 3), + --"is_trap" = 1 + --"base_trap_duration" = 16000 + mod("MovementSpeed", "INC", -300, 0, 0, nil), --"base_movement_velocity_+%" = -300 + --"trap_override_pvp_scaling_time_ms" = 750 + --"base_skill_is_trapped" = ? + --"display_skill_deals_secondary_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("trapCooldown", 3), + }, + qualityMods = { + mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"secondary_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"secondary_maximum_base_physical_damage" + }, + levels = { + [1] = { 4, 11, 16, 22, }, + [2] = { 6, 13, 20, 28, }, + [3] = { 9, 15, 27, 38, }, + [4] = { 12, 17, 35, 49, }, + [5] = { 16, 20, 49, 69, }, + [6] = { 20, 22, 67, 94, }, + [7] = { 24, 24, 90, 126, }, + [8] = { 28, 26, 119, 167, }, + [9] = { 32, 28, 156, 218, }, + [10] = { 36, 32, 202, 282, }, + [11] = { 40, 35, 259, 363, }, + [12] = { 44, 38, 331, 463, }, + [13] = { 48, 39, 420, 587, }, + [14] = { 52, 41, 530, 742, }, + [15] = { 55, 42, 630, 881, }, + [16] = { 58, 43, 746, 1045, }, + [17] = { 61, 44, 883, 1236, }, + [18] = { 64, 45, 1043, 1460, }, + [19] = { 67, 46, 1230, 1721, }, + [20] = { 70, 46, 1447, 2026, }, + [21] = { 72, 47, 1613, 2258, }, + [22] = { 74, 48, 1795, 2514, }, + [23] = { 76, 49, 1998, 2797, }, + [24] = { 78, 50, 2222, 3111, }, + [25] = { 80, 50, 2470, 3458, }, + [26] = { 82, 51, 2744, 3842, }, + [27] = { 84, 52, 3047, 4266, }, + [28] = { 86, 53, 3382, 4735, }, + [29] = { 88, 54, 3753, 5254, }, + [30] = { 90, 54, 4162, 5826, }, + }, +} +skills["ChargedAttack"] = { + name = "Blade Flurry", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + channelling = true, + melee = true, + }, + parts = { + { + name = "1 Stage", + }, + { + name = "6 Stages", + }, + { + name = "Release at 6 Stages", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, [6] = true, [58] = true, [24] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 4), + mod("Speed", "MORE", 60, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 60 + --"charged_attack_damage_per_stack_+%_final" = 20 + --"is_area_damage" = ? + nil, --"base_skill_show_average_damage_instead_of_dps" = ? + --"skill_can_add_multiple_charges_per_action" = ? + mod("Damage", "MORE", 120, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), + skill("dpsMultiplier", 3, { type = "SkillPart", skillPart = 3 }), + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -55, }, + [2] = { 31, -54.4, }, + [3] = { 34, -53.8, }, + [4] = { 37, -53.2, }, + [5] = { 40, -52.6, }, + [6] = { 42, -52, }, + [7] = { 44, -51.4, }, + [8] = { 46, -50.8, }, + [9] = { 48, -50.2, }, + [10] = { 50, -49.6, }, + [11] = { 52, -49, }, + [12] = { 54, -48.4, }, + [13] = { 56, -47.8, }, + [14] = { 58, -47.2, }, + [15] = { 60, -46.6, }, + [16] = { 62, -46, }, + [17] = { 64, -45.4, }, + [18] = { 66, -44.8, }, + [19] = { 68, -44.2, }, + [20] = { 70, -43.6, }, + [21] = { 72, -43, }, + [22] = { 74, -42.4, }, + [23] = { 76, -41.8, }, + [24] = { 78, -41.2, }, + [25] = { 80, -40.6, }, + [26] = { 82, -40, }, + [27] = { 84, -39.4, }, + [28] = { 86, -38.8, }, + [29] = { 88, -38.2, }, + [30] = { 90, -37.6, }, + }, +} +skills["BladeVortex"] = { + name = "Blade Vortex", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + parts = { + { + name = "0 Blades", + }, + { + name = "5 Blades", + }, + { + name = "10 Blades", + }, + { + name = "20 Blades", + }, + }, + color = 2, + baseFlags = { + spell = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [26] = true, [36] = true, [27] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.3), + skill("critChance", 6), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"maximum_number_of_spinning_blades" = 20 + --"base_blade_vortex_hit_rate_ms" = 600 + --"blade_vortex_hit_rate_+%_per_blade" = 10 + --"blade_vortex_damage_+%_per_blade_final" = 30 + --"is_area_damage" = ? + --"skill_can_add_multiple_charges_per_action" = ? + --"action_ignores_crit_tracking" = ? + nil, --"base_skill_show_average_damage_instead_of_dps" = ? + skill("deliciouslyOverpowered", true), + mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), + mod("Damage", "MORE", 300, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 3 }), + mod("Damage", "MORE", 600, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 4 }), + skill("hitTimeOverride", 0.6, { type = "SkillPart", skillPart = 1 }), + skill("hitTimeOverride", 0.4, { type = "SkillPart", skillPart = 2 }), + skill("hitTimeOverride", 0.3, { type = "SkillPart", skillPart = 3 }), + skill("hitTimeOverride", 0.2, { type = "SkillPart", skillPart = 4 }), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 6, 7, 10, 0, }, + [2] = { 15, 7, 8, 12, 0, }, + [3] = { 19, 8, 11, 16, 0, }, + [4] = { 23, 9, 14, 20, 0, }, + [5] = { 27, 10, 17, 25, 1, }, + [6] = { 31, 11, 21, 32, 1, }, + [7] = { 35, 12, 26, 39, 1, }, + [8] = { 38, 13, 30, 45, 1, }, + [9] = { 41, 13, 35, 52, 1, }, + [10] = { 44, 14, 40, 60, 2, }, + [11] = { 47, 14, 46, 69, 2, }, + [12] = { 50, 15, 53, 79, 2, }, + [13] = { 53, 16, 60, 90, 2, }, + [14] = { 56, 16, 68, 103, 2, }, + [15] = { 59, 17, 78, 117, 3, }, + [16] = { 62, 18, 88, 133, 3, }, + [17] = { 64, 18, 96, 144, 3, }, + [18] = { 66, 19, 104, 157, 3, }, + [19] = { 68, 19, 113, 170, 3, }, + [20] = { 70, 19, 123, 185, 4, }, + [21] = { 72, 20, 133, 200, 4, }, + [22] = { 74, 21, 145, 217, 4, }, + [23] = { 76, 21, 157, 235, 4, }, + [24] = { 78, 21, 170, 254, 4, }, + [25] = { 80, 22, 183, 275, 5, }, + [26] = { 82, 23, 198, 298, 5, }, + [27] = { 84, 23, 214, 322, 5, }, + [28] = { 86, 23, 232, 347, 5, }, + [29] = { 88, 24, 250, 375, 5, }, + [30] = { 90, 24, 270, 405, 6, }, + }, +} +skills["Bladefall"] = { + name = "Bladefall", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + area = true, + }, + color = 2, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [17] = true, [19] = true, [18] = true, [10] = true, [36] = true, [26] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.9), + skill("critChance", 5), + --"bladefall_damage_per_stage_+%_final" = -6 + mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 28, 13, 44, 65, }, + [2] = { 31, 14, 52, 78, }, + [3] = { 34, 15, 62, 93, }, + [4] = { 37, 16, 73, 110, }, + [5] = { 40, 17, 86, 129, }, + [6] = { 42, 18, 96, 144, }, + [7] = { 44, 18, 107, 160, }, + [8] = { 46, 19, 118, 177, }, + [9] = { 48, 19, 131, 197, }, + [10] = { 50, 20, 145, 218, }, + [11] = { 52, 21, 160, 241, }, + [12] = { 54, 21, 177, 266, }, + [13] = { 56, 22, 195, 293, }, + [14] = { 58, 22, 215, 323, }, + [15] = { 60, 23, 237, 356, }, + [16] = { 62, 24, 261, 392, }, + [17] = { 64, 24, 287, 431, }, + [18] = { 66, 25, 315, 473, }, + [19] = { 68, 25, 346, 519, }, + [20] = { 70, 26, 380, 570, }, + [21] = { 72, 27, 417, 625, }, + [22] = { 74, 27, 457, 685, }, + [23] = { 76, 28, 500, 750, }, + [24] = { 78, 28, 548, 821, }, + [25] = { 80, 29, 599, 899, }, + [26] = { 82, 30, 655, 983, }, + [27] = { 84, 30, 716, 1074, }, + [28] = { 86, 31, 782, 1174, }, + [29] = { 88, 31, 854, 1282, }, + [30] = { 90, 32, 933, 1399, }, + }, +} +skills["BlastRain"] = { + name = "Blast Rain", + gemTags = { + fire = true, + dexterity = true, + active_skill = true, + attack = true, + area = true, + bow = true, + }, + parts = { + { + name = "1 explosion", + }, + { + name = "4 explosions", + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [1] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [33] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 + mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 + --"blast_rain_number_of_blasts" = 4 + --"blast_rain_arrow_delay_ms" = 80 + --"base_is_projectile" = ? + --"is_area_damage" = ? + skill("dpsMultiplier", 4, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 8, -60, }, + [2] = { 31, 8, -59.6, }, + [3] = { 34, 8, -59.2, }, + [4] = { 37, 8, -58.8, }, + [5] = { 40, 9, -58.4, }, + [6] = { 42, 9, -58, }, + [7] = { 44, 9, -57.6, }, + [8] = { 46, 9, -57.2, }, + [9] = { 48, 9, -56.8, }, + [10] = { 50, 9, -56.4, }, + [11] = { 52, 9, -56, }, + [12] = { 54, 10, -55.6, }, + [13] = { 56, 10, -55.2, }, + [14] = { 58, 10, -54.8, }, + [15] = { 60, 10, -54.4, }, + [16] = { 62, 10, -54, }, + [17] = { 64, 10, -53.6, }, + [18] = { 66, 10, -53.2, }, + [19] = { 68, 10, -52.8, }, + [20] = { 70, 10, -52.4, }, + [21] = { 72, 10, -52, }, + [22] = { 74, 10, -51.6, }, + [23] = { 76, 11, -51.2, }, + [24] = { 78, 11, -50.8, }, + [25] = { 80, 11, -50.4, }, + [26] = { 82, 11, -50, }, + [27] = { 84, 11, -49.6, }, + [28] = { 86, 12, -49.2, }, + [29] = { 88, 12, -48.8, }, + [30] = { 90, 12, -48.4, }, + }, +} +skills["BlinkArrow"] = { + name = "Blink Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + minion = true, + duration = true, + movement = true, + bow = true, + }, + minionList = { + "Clone", + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + minion = true, + movement = true, + duration = true, + }, + skillTypes = { [14] = true, [1] = true, [9] = true, [48] = true, [21] = true, [12] = true, [22] = true, [17] = true, [19] = true, [38] = true, }, + minionSkillTypes = { [1] = true, [3] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"number_of_monsters_to_summon" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", 75) }), --"active_skill_minion_damage_+%_final" = 75 + --"display_minion_monster_type" = 4 + --"base_is_projectile" = ? + skill("minionUseBowAndQuiver", true), + }, + qualityMods = { + --"base_arrow_speed_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", nil) }), --"minion_damage_+%" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [5] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 14, 0, 0, 24, }, + [2] = { 13, 14, 6, 3, 27, }, + [3] = { 17, 15, 12, 6, 30, }, + [4] = { 21, 15, 18, 9, 33, }, + [5] = { 25, 15, 24, 12, 35, }, + [6] = { 29, 16, 30, 15, 38, }, + [7] = { 33, 16, 36, 18, 40, }, + [8] = { 36, 16, 42, 21, 43, }, + [9] = { 39, 16, 48, 24, 46, }, + [10] = { 42, 17, 54, 27, 48, }, + [11] = { 45, 17, 60, 30, 50, }, + [12] = { 48, 17, 66, 33, 52, }, + [13] = { 51, 17, 72, 36, 54, }, + [14] = { 54, 18, 78, 39, 56, }, + [15] = { 57, 18, 84, 42, 58, }, + [16] = { 60, 18, 90, 45, 60, }, + [17] = { 63, 19, 96, 48, 62, }, + [18] = { 66, 19, 102, 51, 64, }, + [19] = { 68, 20, 108, 54, 66, }, + [20] = { 70, 20, 114, 57, 68, }, + [21] = { 72, 21, 120, 60, 70, }, + [22] = { 74, 21, 126, 63, 72, }, + [23] = { 76, 22, 132, 66, 74, }, + [24] = { 78, 22, 138, 69, 76, }, + [25] = { 80, 22, 144, 72, 78, }, + [26] = { 82, 23, 150, 75, 80, }, + [27] = { 84, 23, 156, 78, 82, }, + [28] = { 86, 23, 162, 81, 84, }, + [29] = { 88, 23, 168, 84, 86, }, + [30] = { 90, 24, 174, 87, 88, }, + }, +} +skills["BloodRage"] = { + name = "Blood Rage", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 1), + --"life_leech_from_physical_attack_damage_permyriad" = 120 + --"base_physical_damage_%_of_maximum_life_to_deal_per_minute" = 240 + --"base_physical_damage_%_of_maximum_energy_shield_to_deal_per_minute" = 240 + --"add_frenzy_charge_on_kill_%_chance" = 25 + }, + qualityMods = { + mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" = 0.25 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" + [4] = skill("duration", nil), --"base_skill_effect_duration" + --[5] = "skill_level" + }, + levels = { + [1] = { 16, 17, 5, 7, 1, }, + [2] = { 20, 17, 6, 7.2, 2, }, + [3] = { 24, 17, 6, 7.4, 3, }, + [4] = { 28, 18, 7, 7.6, 4, }, + [5] = { 31, 18, 7, 7.8, 5, }, + [6] = { 34, 18, 8, 8, 6, }, + [7] = { 37, 18, 8, 8.2, 7, }, + [8] = { 40, 19, 9, 8.4, 8, }, + [9] = { 43, 19, 9, 8.6, 9, }, + [10] = { 46, 19, 10, 8.8, 10, }, + [11] = { 49, 20, 10, 9, 11, }, + [12] = { 52, 20, 11, 9.2, 12, }, + [13] = { 55, 20, 11, 9.4, 13, }, + [14] = { 58, 20, 12, 9.6, 14, }, + [15] = { 60, 20, 12, 9.8, 15, }, + [16] = { 62, 21, 13, 10, 16, }, + [17] = { 64, 21, 13, 10.2, 17, }, + [18] = { 66, 21, 14, 10.4, 18, }, + [19] = { 68, 21, 14, 10.6, 19, }, + [20] = { 70, 21, 15, 10.8, 20, }, + [21] = { 72, 22, 15, 11, 21, }, + [22] = { 74, 22, 16, 11.2, 22, }, + [23] = { 76, 22, 16, 11.4, 23, }, + [24] = { 78, 22, 17, 11.6, 24, }, + [25] = { 80, 22, 17, 11.8, 25, }, + [26] = { 82, 23, 18, 12, 26, }, + [27] = { 84, 23, 18, 12.2, 27, }, + [28] = { 86, 23, 19, 12.4, 28, }, + [29] = { 88, 23, 19, 12.6, 29, }, + [30] = { 90, 23, 20, 12.8, 30, }, + }, +} +skills["BurningArrow"] = { + name = "Burning Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + fire = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + fire = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [33] = true, [53] = true, [55] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 + mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" + }, + levels = { + [1] = { 1, 5, 50, 10, }, + [2] = { 2, 5, 51.8, 11, }, + [3] = { 4, 5, 53.6, 12, }, + [4] = { 7, 5, 55.4, 13, }, + [5] = { 11, 5, 57.2, 14, }, + [6] = { 16, 6, 59, 15, }, + [7] = { 20, 6, 60.8, 16, }, + [8] = { 24, 6, 62.6, 17, }, + [9] = { 28, 6, 64.4, 18, }, + [10] = { 32, 6, 66.2, 19, }, + [11] = { 36, 7, 68, 20, }, + [12] = { 40, 7, 69.8, 21, }, + [13] = { 44, 7, 71.6, 22, }, + [14] = { 48, 7, 73.4, 23, }, + [15] = { 52, 7, 75.2, 24, }, + [16] = { 56, 8, 77, 25, }, + [17] = { 60, 8, 78.8, 26, }, + [18] = { 64, 8, 80.6, 27, }, + [19] = { 67, 8, 82.4, 28, }, + [20] = { 70, 8, 84.2, 29, }, + [21] = { 72, 9, 86, 30, }, + [22] = { 74, 9, 87.8, 31, }, + [23] = { 76, 9, 89.6, 32, }, + [24] = { 78, 9, 91.4, 33, }, + [25] = { 80, 9, 93.2, 34, }, + [26] = { 82, 10, 95, 35, }, + [27] = { 84, 10, 96.8, 36, }, + [28] = { 86, 10, 98.6, 37, }, + [29] = { 88, 10, 100.4, 38, }, + [30] = { 90, 10, 102.2, 39, }, + }, +} +skills["VaalBurningArrow"] = { + name = "Vaal Burning Arrow", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + fire = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + fire = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, [11] = true, [43] = true, [33] = true, [55] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("EnemyIgniteChance", "BASE", 20), --"base_chance_to_ignite_%" = 20 + mod("PhysicalDamageConvertToFire", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_fire" = 50 + --"vaal_burning_arrow_explode_on_hit" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("EnemyIgniteDuration", "INC", 3), --"ignite_duration_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("FireDamage", "INC", nil, ModFlag.Dot), --"burn_damage_+%" + }, + levels = { + [1] = { 1, 60, 10, }, + [2] = { 2, 62, 11, }, + [3] = { 4, 64, 12, }, + [4] = { 7, 66, 13, }, + [5] = { 11, 68, 14, }, + [6] = { 16, 70, 15, }, + [7] = { 20, 72, 16, }, + [8] = { 24, 74, 17, }, + [9] = { 28, 76, 18, }, + [10] = { 32, 78, 19, }, + [11] = { 36, 80, 20, }, + [12] = { 40, 82, 21, }, + [13] = { 44, 84, 22, }, + [14] = { 48, 86, 23, }, + [15] = { 52, 88, 24, }, + [16] = { 56, 90, 25, }, + [17] = { 60, 92, 26, }, + [18] = { 64, 94, 27, }, + [19] = { 67, 96, 28, }, + [20] = { 70, 98, 29, }, + [21] = { 72, 100, 30, }, + [22] = { 74, 102, 31, }, + [23] = { 76, 104, 32, }, + [24] = { 78, 106, 33, }, + [25] = { 80, 108, 34, }, + [26] = { 82, 110, 35, }, + [27] = { 84, 112, 36, }, + [28] = { 86, 114, 37, }, + [29] = { 88, 116, 38, }, + [30] = { 90, 118, 39, }, + }, +} +skills["PoisonArrow"] = { + name = "Caustic Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + duration = true, + chaos = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + duration = true, + chaos = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [17] = true, [19] = true, [22] = true, [40] = true, [50] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"skill_can_fire_arrows" = ? + skill("dotIsArea", true), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + [5] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, nil), --"physical_damage_%_to_add_as_chaos" + --[6] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 4, 8, 2.8, 5.2, 30, 0, }, + [2] = { 6, 8, 2.9, 6.5166666666667, 31, 0, }, + [3] = { 9, 8, 3, 8.8333333333333, 32, 0, }, + [4] = { 12, 9, 3.1, 11.7, 33, 0, }, + [5] = { 16, 9, 3.2, 16.516666666667, 34, 1, }, + [6] = { 20, 9, 3.3, 22.75, 35, 1, }, + [7] = { 24, 10, 3.4, 30.766666666667, 36, 1, }, + [8] = { 28, 10, 3.5, 41.033333333333, 37, 1, }, + [9] = { 32, 10, 3.6, 54.116666666667, 38, 1, }, + [10] = { 36, 11, 3.7, 70.716666666667, 39, 2, }, + [11] = { 40, 11, 3.9, 91.683333333333, 40, 2, }, + [12] = { 44, 12, 4, 118.13333333333, 41, 2, }, + [13] = { 48, 12, 4.1, 151.35, 42, 2, }, + [14] = { 52, 13, 4.2, 192.96666666667, 43, 2, }, + [15] = { 55, 13, 4.3, 230.91666666667, 44, 3, }, + [16] = { 58, 14, 4.4, 275.7, 45, 3, }, + [17] = { 61, 14, 4.5, 328.55, 46, 3, }, + [18] = { 64, 15, 4.6, 390.81666666667, 47, 3, }, + [19] = { 67, 15, 4.7, 464.13333333333, 48, 3, }, + [20] = { 70, 16, 4.8, 550.33333333333, 49, 4, }, + [21] = { 72, 16, 5, 616.05, 50, 4, }, + [22] = { 74, 17, 5.1, 689.2, 51, 4, }, + [23] = { 76, 17, 5.2, 770.58333333333, 52, 4, }, + [24] = { 78, 18, 5.3, 861.11666666667, 53, 4, }, + [25] = { 80, 18, 5.4, 961.78333333333, 54, 5, }, + [26] = { 82, 19, 5.5, 1073.6833333333, 55, 5, }, + [27] = { 84, 19, 5.6, 1198.05, 56, 5, }, + [28] = { 86, 20, 5.7, 1336.2, 57, 5, }, + [29] = { 88, 20, 5.8, 1489.6166666667, 58, 5, }, + [30] = { 90, 21, 5.9, 1659.9833333333, 59, 6, }, + }, +} +skills["Cyclone"] = { + name = "Cyclone", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + movement = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 12), + mod("Speed", "MORE", 50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 50 + mod("MovementSpeed", "MORE", -30), --"cyclone_movement_speed_+%_final" = -30 + --"base_skill_number_of_additional_hits" = 1 + --"cyclone_first_hit_damage_+%_final" = -50 + --"is_area_damage" = ? + skill("dpsMultiplier", 2), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -55, }, + [2] = { 31, -54.4, }, + [3] = { 34, -53.8, }, + [4] = { 37, -53.2, }, + [5] = { 40, -52.6, }, + [6] = { 42, -52, }, + [7] = { 44, -51.4, }, + [8] = { 46, -50.8, }, + [9] = { 48, -50.2, }, + [10] = { 50, -49.6, }, + [11] = { 52, -49, }, + [12] = { 54, -48.4, }, + [13] = { 56, -47.8, }, + [14] = { 58, -47.2, }, + [15] = { 60, -46.6, }, + [16] = { 62, -46, }, + [17] = { 64, -45.4, }, + [18] = { 66, -44.8, }, + [19] = { 68, -44.2, }, + [20] = { 70, -43.6, }, + [21] = { 72, -43, }, + [22] = { 74, -42.4, }, + [23] = { 76, -41.8, }, + [24] = { 78, -41.2, }, + [25] = { 80, -40.6, }, + [26] = { 82, -40, }, + [27] = { 84, -39.4, }, + [28] = { 86, -38.8, }, + [29] = { 88, -38.2, }, + [30] = { 90, -37.6, }, + }, +} +skills["VaalCyclone"] = { + name = "Vaal Cyclone", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + duration = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [12] = true, [43] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("Speed", "MORE", 100, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 100 + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"base_skill_number_of_additional_hits" = 1 + mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 + --"is_area_damage" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -50, }, + [2] = { 31, -49.4, }, + [3] = { 34, -48.8, }, + [4] = { 37, -48.2, }, + [5] = { 40, -47.6, }, + [6] = { 42, -47, }, + [7] = { 44, -46.4, }, + [8] = { 46, -45.8, }, + [9] = { 48, -45.2, }, + [10] = { 50, -44.6, }, + [11] = { 52, -44, }, + [12] = { 54, -43.4, }, + [13] = { 56, -42.8, }, + [14] = { 58, -42.2, }, + [15] = { 60, -41.6, }, + [16] = { 62, -41, }, + [17] = { 64, -40.4, }, + [18] = { 66, -39.8, }, + [19] = { 68, -39.2, }, + [20] = { 70, -38.6, }, + [21] = { 72, -38, }, + [22] = { 74, -37.4, }, + [23] = { 76, -36.8, }, + [24] = { 78, -36.2, }, + [25] = { 80, -35.6, }, + [26] = { 82, -35, }, + [27] = { 84, -34.4, }, + [28] = { 86, -33.8, }, + [29] = { 88, -33.2, }, + [30] = { 90, -32.6, }, + }, +} +skills["Desecrate"] = { + name = "Desecrate", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + chaos = true, + }, + color = 2, + baseFlags = { + spell = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [40] = true, [26] = true, [50] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 5), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"desecrate_number_of_corpses_to_create" = 3 + --"is_area_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + --[4] = "desecrate_corpse_level" + }, + levels = { + [1] = { 16, 8, 8.1666666666667, 20, }, + [2] = { 20, 8, 11.316666666667, 24, }, + [3] = { 24, 9, 15.383333333333, 26, }, + [4] = { 28, 9, 20.633333333333, 29, }, + [5] = { 31, 10, 25.533333333333, 32, }, + [6] = { 34, 11, 31.416666666667, 35, }, + [7] = { 37, 12, 38.466666666667, 38, }, + [8] = { 40, 12, 46.916666666667, 41, }, + [9] = { 43, 13, 57.016666666667, 44, }, + [10] = { 46, 14, 69.05, 47, }, + [11] = { 49, 15, 83.4, 50, }, + [12] = { 52, 16, 100.46666666667, 53, }, + [13] = { 55, 17, 120.73333333333, 56, }, + [14] = { 58, 18, 144.76666666667, 59, }, + [15] = { 60, 18, 163.23333333333, 63, }, + [16] = { 62, 18, 183.88333333333, 67, }, + [17] = { 64, 19, 207, 71, }, + [18] = { 66, 19, 232.83333333333, 75, }, + [19] = { 68, 20, 261.71666666667, 100, }, + [20] = { 70, 20, 294, 100, }, + [21] = { 72, 21, 330.05, 100, }, + [22] = { 74, 22, 370.3, 100, }, + [23] = { 76, 22, 415.21666666667, 100, }, + [24] = { 78, 22, 465.33333333333, 100, }, + [25] = { 80, 23, 521.21666666667, 100, }, + [26] = { 82, 23, 583.53333333333, 100, }, + [27] = { 84, 24, 652.98333333333, 100, }, + [28] = { 86, 25, 730.38333333333, 100, }, + [29] = { 88, 25, 816.58333333333, 100, }, + [30] = { 90, 26, 912.58333333333, 100, }, + }, +} +skills["DetonateDead"] = { + name = "Detonate Dead", + gemTags = { + dexterity = true, + active_skill = true, + cast = true, + area = true, + fire = true, + }, + color = 2, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"corpse_explosion_monster_life_%" = 6 + --"is_area_damage" = 1 + --"display_skill_deals_secondary_damage" = ? + --"damage_cannot_be_reflected" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 4, 7, 4, 5, }, + [2] = { 6, 8, 5, 8, }, + [3] = { 9, 9, 8, 11, }, + [4] = { 12, 10, 9, 14, }, + [5] = { 16, 11, 13, 19, }, + [6] = { 20, 12, 17, 25, }, + [7] = { 24, 14, 22, 33, }, + [8] = { 28, 15, 28, 43, }, + [9] = { 32, 17, 36, 54, }, + [10] = { 36, 19, 46, 69, }, + [11] = { 40, 21, 58, 87, }, + [12] = { 44, 22, 72, 108, }, + [13] = { 48, 23, 90, 135, }, + [14] = { 52, 24, 111, 167, }, + [15] = { 55, 25, 130, 195, }, + [16] = { 58, 26, 152, 227, }, + [17] = { 61, 27, 176, 265, }, + [18] = { 64, 28, 205, 308, }, + [19] = { 67, 29, 238, 357, }, + [20] = { 70, 30, 276, 414, }, + [21] = { 72, 31, 304, 456, }, + [22] = { 74, 32, 335, 502, }, + [23] = { 76, 33, 369, 553, }, + [24] = { 78, 34, 406, 609, }, + [25] = { 80, 34, 446, 669, }, + [26] = { 82, 35, 491, 736, }, + [27] = { 84, 36, 539, 809, }, + [28] = { 86, 37, 592, 888, }, + [29] = { 88, 38, 650, 975, }, + [30] = { 90, 38, 713, 1070, }, + }, +} +skills["VaalDetonateDead"] = { + name = "Vaal Detonate Dead", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + cast = true, + area = true, + fire = true, + }, + color = 2, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"corpse_explosion_monster_life_%" = 8 + --"is_area_damage" = 1 + --"display_skill_deals_secondary_damage" = ? + --"detonate_dead_chain_explode" = ? + --"damage_cannot_be_reflected" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 4, 3, 5, }, + [2] = { 6, 5, 7, }, + [3] = { 9, 7, 10, }, + [4] = { 12, 8, 12, }, + [5] = { 16, 11, 17, }, + [6] = { 20, 15, 23, }, + [7] = { 24, 20, 30, }, + [8] = { 28, 26, 39, }, + [9] = { 32, 33, 50, }, + [10] = { 36, 42, 63, }, + [11] = { 40, 53, 79, }, + [12] = { 44, 66, 99, }, + [13] = { 48, 82, 122, }, + [14] = { 52, 101, 151, }, + [15] = { 55, 118, 177, }, + [16] = { 58, 138, 207, }, + [17] = { 61, 160, 241, }, + [18] = { 64, 186, 280, }, + [19] = { 67, 216, 325, }, + [20] = { 70, 251, 376, }, + [21] = { 72, 276, 415, }, + [22] = { 74, 304, 457, }, + [23] = { 76, 335, 503, }, + [24] = { 78, 369, 553, }, + [25] = { 80, 406, 609, }, + [26] = { 82, 446, 669, }, + [27] = { 84, 490, 735, }, + [28] = { 86, 538, 807, }, + [29] = { 88, 591, 886, }, + [30] = { 90, 649, 973, }, + }, +} +skills["DoubleStrike"] = { + name = "Double Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + --"base_skill_number_of_additional_hits" = 1 + skill("dpsMultiplier", 2), + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, -30, }, + [2] = { 2, -28.6, }, + [3] = { 4, -27.2, }, + [4] = { 7, -25.8, }, + [5] = { 11, -24.4, }, + [6] = { 16, -23, }, + [7] = { 20, -21.6, }, + [8] = { 24, -20.2, }, + [9] = { 28, -18.8, }, + [10] = { 32, -17.4, }, + [11] = { 36, -16, }, + [12] = { 40, -14.6, }, + [13] = { 44, -13.2, }, + [14] = { 48, -11.8, }, + [15] = { 52, -10.4, }, + [16] = { 56, -9, }, + [17] = { 60, -7.6, }, + [18] = { 64, -6.2, }, + [19] = { 67, -4.8, }, + [20] = { 70, -3.4, }, + [21] = { 72, -2, }, + [22] = { 74, -0.6, }, + [23] = { 76, 0.8, }, + [24] = { 78, 2.2, }, + [25] = { 80, 3.6, }, + [26] = { 82, 5, }, + [27] = { 84, 6.4, }, + [28] = { 86, 7.8, }, + [29] = { 88, 9.2, }, + [30] = { 90, 10.6, }, + }, +} +skills["VaalDoubleStrike"] = { + name = "Vaal Double Strike", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + melee = true, + duration = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + duration = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_skill_number_of_additional_hits" = 1 + --"number_of_monsters_to_summon" = 1 + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 1, -30, 3.6, }, + [2] = { 2, -29.2, 3.7, }, + [3] = { 4, -28.4, 3.8, }, + [4] = { 7, -27.6, 3.9, }, + [5] = { 11, -26.8, 4, }, + [6] = { 16, -26, 4.1, }, + [7] = { 20, -25.2, 4.2, }, + [8] = { 24, -24.4, 4.3, }, + [9] = { 28, -23.6, 4.4, }, + [10] = { 32, -22.8, 4.5, }, + [11] = { 36, -22, 4.6, }, + [12] = { 40, -21.2, 4.7, }, + [13] = { 44, -20.4, 4.8, }, + [14] = { 48, -19.6, 4.9, }, + [15] = { 52, -18.8, 5, }, + [16] = { 56, -18, 5.1, }, + [17] = { 60, -17.2, 5.2, }, + [18] = { 64, -16.4, 5.3, }, + [19] = { 67, -15.6, 5.4, }, + [20] = { 70, -14.8, 5.5, }, + [21] = { 72, -14, 5.6, }, + [22] = { 74, -13.2, 5.7, }, + [23] = { 76, -12.4, 5.8, }, + [24] = { 78, -11.6, 5.9, }, + [25] = { 80, -10.8, 6, }, + [26] = { 82, -10, 6.1, }, + [27] = { 84, -9.2, 6.2, }, + [28] = { 86, -8.4, 6.3, }, + [29] = { 88, -7.6, 6.4, }, + [30] = { 90, -6.8, 6.5, }, + }, +} +skills["DualStrike"] = { + name = "Dual Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [4] = true, [25] = true, [28] = true, [24] = true, [53] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Axe"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, -15, }, + [2] = { 2, -14, }, + [3] = { 4, -13, }, + [4] = { 7, -12, }, + [5] = { 11, -11, }, + [6] = { 16, -10, }, + [7] = { 20, -9, }, + [8] = { 24, -8, }, + [9] = { 28, -7, }, + [10] = { 32, -6, }, + [11] = { 36, -5, }, + [12] = { 40, -4, }, + [13] = { 44, -3, }, + [14] = { 48, -2, }, + [15] = { 52, -1, }, + [16] = { 56, nil, }, + [17] = { 60, 1, }, + [18] = { 64, 2, }, + [19] = { 67, 3, }, + [20] = { 70, 4, }, + [21] = { 72, 5, }, + [22] = { 74, 6, }, + [23] = { 76, 7, }, + [24] = { 78, 8, }, + [25] = { 80, 9, }, + [26] = { 82, 10, }, + [27] = { 84, 11, }, + [28] = { 86, 12, }, + [29] = { 88, 13, }, + [30] = { 90, 14, }, + }, +} +skills["ElementalHit"] = { + name = "Elemental Hit", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + fire = true, + cold = true, + lightning = true, + bow = true, + }, + parts = { + { + name = "Added fire", + }, + { + name = "Added cold", + }, + { + name = "Added lightning", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + cold = true, + fire = true, + lightning = true, + }, + skillTypes = { [1] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, [33] = true, [34] = true, [35] = true, [48] = true, }, + baseMods = { + skill("castTime", 1), + --"chance_to_freeze_shock_ignite_%" = 10 + --"skill_can_fire_arrows" = ? + --"skill_can_fire_wand_projectiles" = ? + mod("EnemyFreezeChance", "BASE", 10), + mod("EnemyShockChance", "BASE", 10), + mod("EnemyIgniteChance", "BASE", 10), + }, + qualityMods = { + mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_minimum_base_fire_damage_for_elemental_hit" + [4] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 1 }), --"attack_maximum_base_fire_damage_for_elemental_hit" + [5] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_minimum_base_cold_damage_for_elemental_hit" + [6] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"attack_maximum_base_cold_damage_for_elemental_hit" + [7] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_minimum_base_lightning_damage_for_elemental_hit" + [8] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"attack_maximum_base_lightning_damage_for_elemental_hit" + }, + levels = { + [1] = { 1, 6, 4, 8, 3, 6, 1, 13, }, + [2] = { 2, 6, 5, 9, 4, 7, 1, 14, }, + [3] = { 4, 6, 6, 11, 5, 9, 1, 17, }, + [4] = { 7, 7, 7, 14, 6, 11, 1, 23, }, + [5] = { 11, 7, 10, 19, 8, 16, 2, 31, }, + [6] = { 16, 7, 14, 27, 12, 22, 2, 44, }, + [7] = { 20, 8, 18, 34, 15, 28, 3, 56, }, + [8] = { 24, 8, 23, 43, 19, 35, 4, 70, }, + [9] = { 28, 8, 28, 53, 23, 43, 5, 87, }, + [10] = { 32, 9, 35, 64, 28, 53, 6, 106, }, + [11] = { 36, 9, 42, 78, 34, 64, 7, 128, }, + [12] = { 40, 9, 50, 93, 41, 76, 8, 153, }, + [13] = { 44, 10, 60, 111, 49, 91, 10, 183, }, + [14] = { 48, 10, 71, 132, 58, 108, 11, 217, }, + [15] = { 52, 10, 84, 156, 69, 127, 13, 256, }, + [16] = { 56, 11, 99, 183, 81, 150, 16, 301, }, + [17] = { 60, 11, 115, 214, 94, 175, 19, 352, }, + [18] = { 64, 11, 135, 250, 110, 205, 22, 411, }, + [19] = { 67, 11, 151, 280, 123, 229, 24, 461, }, + [20] = { 70, 12, 169, 314, 138, 257, 27, 516, }, + [21] = { 72, 12, 182, 338, 149, 276, 29, 555, }, + [22] = { 74, 12, 196, 364, 160, 297, 31, 598, }, + [23] = { 76, 12, 211, 391, 172, 320, 34, 643, }, + [24] = { 78, 13, 226, 420, 185, 344, 36, 691, }, + [25] = { 80, 13, 243, 452, 199, 370, 39, 743, }, + [26] = { 82, 13, 261, 485, 214, 397, 42, 798, }, + [27] = { 84, 13, 281, 521, 230, 426, 45, 857, }, + [28] = { 86, 14, 301, 559, 246, 457, 48, 919, }, + [29] = { 88, 14, 323, 600, 264, 491, 52, 986, }, + [30] = { 90, 14, 346, 643, 283, 526, 56, 1057, }, + }, +} +skills["EtherealKnives"] = { + name = "Ethereal Knives", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + spell = true, + }, + color = 2, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.6), + skill("critChance", 6), + mod("ProjectileCount", "BASE", 9), --"number_of_additional_projectiles" = 9 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + [5] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" + }, + levels = { + [1] = { 1, 5, 4, 6, 0, }, + [2] = { 2, 6, 5, 7, 1, }, + [3] = { 4, 7, 6, 9, 2, }, + [4] = { 7, 8, 8, 12, 3, }, + [5] = { 11, 9, 12, 18, 4, }, + [6] = { 16, 10, 18, 27, 5, }, + [7] = { 20, 11, 24, 37, 6, }, + [8] = { 24, 12, 32, 49, 7, }, + [9] = { 28, 13, 42, 64, 8, }, + [10] = { 32, 14, 55, 82, 9, }, + [11] = { 36, 16, 70, 105, 10, }, + [12] = { 40, 17, 89, 134, 11, }, + [13] = { 44, 18, 112, 169, 12, }, + [14] = { 48, 18, 141, 212, 13, }, + [15] = { 52, 19, 176, 265, 14, }, + [16] = { 56, 20, 219, 329, 15, }, + [17] = { 60, 21, 272, 408, 16, }, + [18] = { 64, 22, 336, 504, 17, }, + [19] = { 67, 22, 393, 590, 18, }, + [20] = { 70, 23, 459, 688, 19, }, + [21] = { 72, 24, 509, 763, 20, }, + [22] = { 74, 24, 563, 845, 21, }, + [23] = { 76, 25, 623, 935, 22, }, + [24] = { 78, 25, 690, 1034, 23, }, + [25] = { 80, 26, 762, 1144, 24, }, + [26] = { 82, 26, 842, 1264, 25, }, + [27] = { 84, 27, 931, 1396, 26, }, + [28] = { 86, 27, 1027, 1541, 27, }, + [29] = { 88, 28, 1134, 1701, 28, }, + [30] = { 90, 29, 1251, 1876, 29, }, + }, +} +skills["ExplosiveArrow"] = { + name = "Explosive Arrow", + gemTags = { + fire = true, + dexterity = true, + active_skill = true, + attack = true, + area = true, + duration = true, + bow = true, + }, + parts = { + { + name = "Explosion", + attack = false, + cast = true, + }, + { + name = "Arrow", + attack = true, + cast = false, + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [33] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("critChance", 6), + skill("duration", 1), --"base_skill_effect_duration" = 1000 + --"fuse_arrow_explosion_radius_+_per_fuse_arrow_orb" = 2 + --"active_skill_attack_damage_+%_final" = 0 + --"skill_can_fire_arrows" = 1 + --"base_is_projectile" = 1 + skill("showAverage", true, { type = "SkillPart", skillPart = 1 }), + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"minimum_fire_damage_per_fuse_arrow_orb" + [4] = skill("FireMax", nil), --"maximum_fire_damage_per_fuse_arrow_orb" + }, + levels = { + [1] = { 28, 18, 44, 66, }, + [2] = { 31, 19, 54, 81, }, + [3] = { 34, 20, 66, 99, }, + [4] = { 37, 21, 80, 121, }, + [5] = { 40, 21, 98, 146, }, + [6] = { 42, 22, 111, 166, }, + [7] = { 44, 22, 126, 189, }, + [8] = { 46, 23, 142, 214, }, + [9] = { 48, 23, 161, 242, }, + [10] = { 50, 24, 182, 273, }, + [11] = { 52, 24, 205, 308, }, + [12] = { 54, 24, 232, 347, }, + [13] = { 56, 26, 261, 391, }, + [14] = { 58, 26, 293, 440, }, + [15] = { 60, 26, 330, 495, }, + [16] = { 62, 26, 371, 556, }, + [17] = { 64, 26, 416, 624, }, + [18] = { 66, 27, 467, 700, }, + [19] = { 68, 27, 523, 785, }, + [20] = { 70, 27, 586, 879, }, + [21] = { 72, 28, 656, 984, }, + [22] = { 74, 28, 734, 1100, }, + [23] = { 76, 29, 820, 1230, }, + [24] = { 78, 29, 917, 1375, }, + [25] = { 80, 30, 1024, 1536, }, + [26] = { 82, 30, 1143, 1714, }, + [27] = { 84, 30, 1275, 1913, }, + [28] = { 86, 30, 1422, 2134, }, + [29] = { 88, 31, 1586, 2379, }, + [30] = { 90, 31, 1767, 2651, }, + }, +} +skills["FireTrap"] = { + name = "Fire Trap", + gemTags = { + trap = true, + dexterity = true, + active_skill = true, + spell = true, + duration = true, + area = true, + fire = true, + }, + color = 2, + baseFlags = { + spell = true, + trap = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [29] = true, [37] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 6), + skill("cooldown", 3), + --"is_trap" = 1 + --"base_trap_duration" = 16000 + skill("duration", 8), --"base_skill_effect_duration" = 8000 + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("trapCooldown", 3), + }, + qualityMods = { + mod("FireDamage", "INC", 1.5, ModFlag.Dot), --"burn_damage_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + --[6] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 7, 2, 4, 3.6166666666667, 0, }, + [2] = { 2, 8, 3, 5, 4.1, 0, }, + [3] = { 4, 9, 4, 6, 5.2, 1, }, + [4] = { 7, 10, 6, 8, 7.1833333333333, 1, }, + [5] = { 11, 11, 8, 12, 10.6, 1, }, + [6] = { 16, 12, 13, 19, 16.416666666667, 2, }, + [7] = { 20, 13, 18, 27, 22.566666666667, 2, }, + [8] = { 24, 14, 25, 37, 30.466666666667, 2, }, + [9] = { 28, 14, 34, 50, 40.533333333333, 3, }, + [10] = { 32, 16, 45, 67, 53.333333333333, 3, }, + [11] = { 36, 17, 59, 89, 69.5, 3, }, + [12] = { 40, 18, 78, 117, 89.866666666667, 4, }, + [13] = { 44, 19, 101, 152, 115.41666666667, 4, }, + [14] = { 48, 20, 132, 197, 147.36666666667, 4, }, + [15] = { 52, 21, 170, 255, 187.21666666667, 5, }, + [16] = { 56, 22, 219, 328, 236.78333333333, 5, }, + [17] = { 60, 22, 280, 420, 298.28333333333, 5, }, + [18] = { 64, 23, 358, 536, 374.41666666667, 6, }, + [19] = { 67, 24, 429, 643, 441.11666666667, 6, }, + [20] = { 70, 24, 513, 770, 518.76666666667, 6, }, + [21] = { 72, 25, 578, 867, 573.95, 7, }, + [22] = { 74, 26, 651, 976, 634.4, 7, }, + [23] = { 76, 26, 732, 1098, 700.6, 7, }, + [24] = { 78, 27, 823, 1235, 772.98333333333, 8, }, + [25] = { 80, 27, 925, 1388, 852.1, 8, }, + [26] = { 82, 28, 1040, 1559, 938.5, 8, }, + [27] = { 84, 29, 1167, 1751, 1032.75, 9, }, + [28] = { 86, 30, 1310, 1965, 1135.4666666667, 9, }, + [29] = { 88, 30, 1470, 2205, 1247.3166666667, 9, }, + [30] = { 90, 30, 1648, 2472, 1368.9833333333, 10, }, + }, +} +skills["FlickerStrike"] = { + name = "Flicker Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + movement = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [25] = true, [28] = true, [38] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + skill("cooldown", 2), + mod("Speed", "MORE", 20, ModFlag.Attack), --"flicker_strike_more_attack_speed_+%_final" = 20 + mod("Speed", "INC", 10, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 10 + --"ignores_proximity_shield" = ? + nil, --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, 30, }, + [2] = { 13, 31.6, }, + [3] = { 17, 33.2, }, + [4] = { 21, 34.8, }, + [5] = { 25, 36.4, }, + [6] = { 29, 38, }, + [7] = { 33, 39.6, }, + [8] = { 36, 41.2, }, + [9] = { 39, 42.8, }, + [10] = { 42, 44.4, }, + [11] = { 45, 46, }, + [12] = { 48, 47.6, }, + [13] = { 51, 49.2, }, + [14] = { 54, 50.8, }, + [15] = { 57, 52.4, }, + [16] = { 60, 54, }, + [17] = { 63, 55.6, }, + [18] = { 66, 57.2, }, + [19] = { 68, 58.8, }, + [20] = { 70, 60.4, }, + [21] = { 72, 62, }, + [22] = { 74, 63.6, }, + [23] = { 76, 65.2, }, + [24] = { 78, 66.8, }, + [25] = { 80, 68.4, }, + [26] = { 82, 70, }, + [27] = { 84, 71.6, }, + [28] = { 86, 73.2, }, + [29] = { 88, 74.8, }, + [30] = { 90, 76.4, }, + }, +} +skills["FreezeMine"] = { + name = "Freeze Mine", + gemTags = { + mine = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + mine = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [41] = true, [34] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.5), + --"freeze_mine_cold_resistance_+_while_frozen" = -15 + --"base_mine_duration" = 16000 + --"base_skill_is_mined" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_remote_mine" = ? + --"always_freeze" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + --[5] = "freeze_as_though_dealt_damage_+%" + }, + levels = { + [1] = { 10, 6, 7, 10, 200, }, + [2] = { 13, 8, 9, 13, 210, }, + [3] = { 17, 10, 12, 17, 220, }, + [4] = { 21, 10, 15, 23, 230, }, + [5] = { 25, 11, 19, 29, 240, }, + [6] = { 29, 12, 24, 37, 250, }, + [7] = { 33, 13, 30, 46, 260, }, + [8] = { 36, 14, 36, 54, 270, }, + [9] = { 39, 14, 42, 63, 280, }, + [10] = { 42, 16, 49, 73, 290, }, + [11] = { 45, 18, 57, 85, 300, }, + [12] = { 48, 18, 66, 99, 310, }, + [13] = { 51, 19, 76, 114, 320, }, + [14] = { 54, 20, 88, 131, 330, }, + [15] = { 57, 21, 101, 151, 340, }, + [16] = { 60, 21, 116, 173, 350, }, + [17] = { 63, 21, 132, 199, 360, }, + [18] = { 66, 21, 151, 227, 370, }, + [19] = { 68, 22, 165, 248, 380, }, + [20] = { 70, 22, 181, 271, 390, }, + [21] = { 72, 22, 197, 296, 400, }, + [22] = { 74, 22, 215, 322, 410, }, + [23] = { 76, 23, 234, 351, 420, }, + [24] = { 78, 23, 255, 383, 430, }, + [25] = { 80, 24, 278, 417, 440, }, + [26] = { 82, 24, 302, 454, 450, }, + [27] = { 84, 24, 329, 493, 460, }, + [28] = { 86, 24, 358, 536, 470, }, + [29] = { 88, 25, 389, 583, 480, }, + [30] = { 90, 25, 422, 633, 490, }, + }, +} +skills["Frenzy"] = { + name = "Frenzy", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + melee = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [22] = true, [17] = true, [19] = true, [25] = true, [28] = true, [24] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + mod("PhysicalDamage", "INC", 5, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"physical_damage_+%_per_frenzy_charge" = 5 + mod("Speed", "INC", 5, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 5 + --"skill_can_fire_arrows" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 16, 10, }, + [2] = { 20, 11.4, }, + [3] = { 24, 12.8, }, + [4] = { 28, 14.2, }, + [5] = { 31, 15.6, }, + [6] = { 34, 17, }, + [7] = { 37, 18.4, }, + [8] = { 40, 19.8, }, + [9] = { 43, 21.2, }, + [10] = { 46, 22.6, }, + [11] = { 49, 24, }, + [12] = { 52, 25.4, }, + [13] = { 55, 26.8, }, + [14] = { 58, 28.2, }, + [15] = { 60, 29.6, }, + [16] = { 62, 31, }, + [17] = { 64, 32.4, }, + [18] = { 66, 33.8, }, + [19] = { 68, 35.2, }, + [20] = { 70, 36.6, }, + [21] = { 72, 38, }, + [22] = { 74, 39.4, }, + [23] = { 76, 40.8, }, + [24] = { 78, 42.2, }, + [25] = { 80, 43.6, }, + [26] = { 82, 45, }, + [27] = { 84, 46.4, }, + [28] = { 86, 47.8, }, + [29] = { 88, 49.2, }, + [30] = { 90, 50.6, }, + }, +} +skills["FrostBlades"] = { + name = "Frost Blades", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + cold = true, + }, + parts = { + { + name = "Melee hit", + melee = true, + projectile = false, + }, + { + name = "Icy blades", + melee = false, + projectile = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + cold = true, + }, + skillTypes = { [1] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [48] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("PhysicalDamageConvertToCold", "BASE", 60, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 60 + --"total_projectile_spread_angle_override" = 110 + --"show_number_of_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + --[3] = "melee_weapon_range_+" + [4] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" + [5] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 4, 18, 0, nil, }, + [2] = { 2, 4, 18, 1, 2.2, }, + [3] = { 4, 4, 18, 2, 4.4, }, + [4] = { 7, 4, 18, 3, 6.6, }, + [5] = { 11, 4, 18, 4, 8.8, }, + [6] = { 16, 5, 19, 5, 11, }, + [7] = { 20, 5, 19, 6, 13.2, }, + [8] = { 24, 5, 19, 7, 15.4, }, + [9] = { 28, 5, 19, 8, 17.6, }, + [10] = { 32, 5, 19, 9, 19.8, }, + [11] = { 36, 6, 20, 10, 22, }, + [12] = { 40, 6, 20, 11, 24.2, }, + [13] = { 44, 6, 20, 12, 26.4, }, + [14] = { 48, 6, 20, 13, 28.6, }, + [15] = { 52, 6, 20, 14, 30.8, }, + [16] = { 56, 7, 21, 15, 33, }, + [17] = { 60, 7, 21, 16, 35.2, }, + [18] = { 64, 7, 21, 17, 37.4, }, + [19] = { 67, 7, 21, 18, 39.6, }, + [20] = { 70, 7, 21, 19, 41.8, }, + [21] = { 72, 8, 22, 20, 44, }, + [22] = { 74, 8, 22, 21, 46.2, }, + [23] = { 76, 8, 22, 22, 48.4, }, + [24] = { 78, 8, 22, 23, 50.6, }, + [25] = { 80, 8, 22, 24, 52.8, }, + [26] = { 82, 9, 23, 25, 55, }, + [27] = { 84, 9, 23, 26, 57.2, }, + [28] = { 86, 9, 23, 27, 59.4, }, + [29] = { 88, 9, 23, 28, 61.6, }, + [30] = { 90, 9, 23, 29, 63.8, }, + }, +} +skills["Grace"] = { + name = "Grace", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Evasion", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_evasion_rating" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 227, 0, }, + [2] = { 27, 271, 3, }, + [3] = { 30, 322, 6, }, + [4] = { 33, 379, 9, }, + [5] = { 36, 444, 12, }, + [6] = { 39, 528, 15, }, + [7] = { 42, 621, 18, }, + [8] = { 45, 722, 21, }, + [9] = { 48, 845, 23, }, + [10] = { 50, 940, 25, }, + [11] = { 52, 1043, 27, }, + [12] = { 54, 1155, 29, }, + [13] = { 56, 1283, 31, }, + [14] = { 58, 1413, 33, }, + [15] = { 60, 1567, 35, }, + [16] = { 62, 1732, 36, }, + [17] = { 64, 1914, 37, }, + [18] = { 66, 2115, 38, }, + [19] = { 68, 2335, 39, }, + [20] = { 70, 2575, 40, }, + [21] = { 72, 2700, 41, }, + [22] = { 74, 2835, 42, }, + [23] = { 76, 2979, 43, }, + [24] = { 78, 3124, 44, }, + [25] = { 80, 3279, 45, }, + [26] = { 82, 3444, 46, }, + [27] = { 84, 3611, 47, }, + [28] = { 86, 3795, 48, }, + [29] = { 88, 3982, 49, }, + [30] = { 90, 4179, 50, }, + }, +} +skills["VaalGrace"] = { + name = "Vaal Grace", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("AttackDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_%" + [3] = mod("SpellDodgeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_chance_to_dodge_spells_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 24, 24, 0, }, + [2] = { 27, 25, 25, 3, }, + [3] = { 30, 25, 25, 6, }, + [4] = { 33, 26, 26, 9, }, + [5] = { 36, 26, 26, 12, }, + [6] = { 39, 27, 27, 15, }, + [7] = { 42, 27, 27, 18, }, + [8] = { 45, 28, 28, 21, }, + [9] = { 48, 28, 28, 23, }, + [10] = { 50, 29, 29, 25, }, + [11] = { 52, 29, 29, 27, }, + [12] = { 54, 30, 30, 29, }, + [13] = { 56, 30, 30, 31, }, + [14] = { 58, 31, 31, 33, }, + [15] = { 60, 31, 31, 35, }, + [16] = { 62, 32, 32, 36, }, + [17] = { 64, 32, 32, 37, }, + [18] = { 66, 33, 33, 38, }, + [19] = { 68, 33, 33, 39, }, + [20] = { 70, 34, 34, 40, }, + [21] = { 72, 34, 34, 41, }, + [22] = { 74, 35, 35, 42, }, + [23] = { 76, 35, 35, 43, }, + [24] = { 78, 36, 36, 44, }, + [25] = { 80, 36, 36, 45, }, + [26] = { 82, 37, 37, 46, }, + [27] = { 84, 37, 37, 47, }, + [28] = { 86, 38, 38, 48, }, + [29] = { 88, 38, 38, 49, }, + [30] = { 90, 39, 39, 50, }, + }, +} +skills["Haste"] = { + name = "Haste", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" + [3] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" + [5] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 9, 9, 4, 0, }, + [2] = { 27, 10, 9, 4, 3, }, + [3] = { 30, 10, 10, 4, 6, }, + [4] = { 33, 10, 10, 5, 9, }, + [5] = { 36, 11, 10, 5, 12, }, + [6] = { 39, 11, 11, 5, 15, }, + [7] = { 42, 11, 11, 6, 18, }, + [8] = { 45, 12, 11, 6, 21, }, + [9] = { 48, 12, 12, 6, 23, }, + [10] = { 50, 12, 12, 7, 25, }, + [11] = { 52, 13, 12, 7, 27, }, + [12] = { 54, 13, 13, 7, 29, }, + [13] = { 56, 13, 13, 8, 31, }, + [14] = { 58, 14, 13, 8, 33, }, + [15] = { 60, 14, 14, 8, 35, }, + [16] = { 62, 15, 14, 8, 36, }, + [17] = { 64, 15, 15, 8, 37, }, + [18] = { 66, 16, 15, 8, 38, }, + [19] = { 68, 16, 16, 8, 39, }, + [20] = { 70, 16, 16, 9, 40, }, + [21] = { 72, 17, 16, 9, 41, }, + [22] = { 74, 17, 17, 9, 42, }, + [23] = { 76, 17, 17, 10, 43, }, + [24] = { 78, 18, 17, 10, 44, }, + [25] = { 80, 18, 18, 10, 45, }, + [26] = { 82, 18, 18, 11, 46, }, + [27] = { 84, 19, 18, 11, 47, }, + [28] = { 86, 19, 19, 11, 48, }, + [29] = { 88, 19, 19, 12, 49, }, + [30] = { 90, 20, 19, 12, 50, }, + }, +} +skills["VaalHaste"] = { + name = "Vaal Haste", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_speed_+%" + [3] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Aura" }), --"cast_speed_+%_from_haste_aura" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_movement_velocity_+%" + [5] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 25, 24, 10, 0, }, + [2] = { 27, 25, 25, 10, 3, }, + [3] = { 30, 25, 25, 10, 6, }, + [4] = { 33, 26, 25, 10, 9, }, + [5] = { 36, 26, 26, 10, 12, }, + [6] = { 39, 26, 26, 11, 15, }, + [7] = { 42, 27, 26, 11, 18, }, + [8] = { 45, 27, 27, 11, 21, }, + [9] = { 48, 27, 27, 11, 23, }, + [10] = { 50, 28, 27, 11, 25, }, + [11] = { 52, 28, 28, 12, 27, }, + [12] = { 54, 28, 28, 12, 29, }, + [13] = { 56, 29, 28, 12, 31, }, + [14] = { 58, 29, 29, 12, 33, }, + [15] = { 60, 29, 29, 12, 35, }, + [16] = { 62, 30, 29, 13, 36, }, + [17] = { 64, 30, 30, 13, 37, }, + [18] = { 66, 30, 30, 13, 38, }, + [19] = { 68, 31, 30, 13, 39, }, + [20] = { 70, 31, 31, 13, 40, }, + [21] = { 72, 31, 31, 14, 41, }, + [22] = { 74, 32, 31, 14, 42, }, + [23] = { 76, 32, 32, 14, 43, }, + [24] = { 78, 32, 32, 14, 44, }, + [25] = { 80, 33, 32, 14, 45, }, + [26] = { 82, 33, 33, 15, 46, }, + [27] = { 84, 33, 33, 15, 47, }, + [28] = { 86, 34, 33, 15, 48, }, + [29] = { 88, 34, 34, 15, 49, }, + [30] = { 90, 34, 34, 15, 50, }, + }, +} +skills["Hatred"] = { + name = "Hatred", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("PhysicalDamageGainAsCold", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"physical_damage_%_to_add_as_cold" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 26, 0, }, + [2] = { 27, 26, 3, }, + [3] = { 30, 27, 6, }, + [4] = { 33, 27, 9, }, + [5] = { 36, 28, 12, }, + [6] = { 39, 28, 15, }, + [7] = { 42, 29, 18, }, + [8] = { 45, 29, 21, }, + [9] = { 48, 30, 23, }, + [10] = { 50, 30, 25, }, + [11] = { 52, 31, 27, }, + [12] = { 54, 31, 29, }, + [13] = { 56, 32, 31, }, + [14] = { 58, 32, 33, }, + [15] = { 60, 33, 35, }, + [16] = { 62, 34, 36, }, + [17] = { 64, 34, 37, }, + [18] = { 66, 35, 38, }, + [19] = { 68, 35, 39, }, + [20] = { 70, 36, 40, }, + [21] = { 72, 36, 41, }, + [22] = { 74, 37, 42, }, + [23] = { 76, 37, 43, }, + [24] = { 78, 38, 44, }, + [25] = { 80, 38, 45, }, + [26] = { 82, 39, 46, }, + [27] = { 84, 39, 47, }, + [28] = { 86, 40, 48, }, + [29] = { 88, 40, 49, }, + [30] = { 90, 41, 50, }, + }, +} +skills["HeraldOfIce"] = { + name = "Herald of Ice", + gemTags = { + dexterity = true, + active_skill = true, + cast = true, + area = true, + cold = true, + }, + color = 2, + baseFlags = { + cast = true, + area = true, + cold = true, + }, + skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [34] = true, [27] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 25), + skill("damageEffectiveness", 0.8), + skill("cooldown", 1), + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"display_skill_deals_secondary_damage" = ? + --"damage_cannot_be_reflected" = ? + --"skill_can_add_multiple_charges_per_action" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ice_cold_damage_+%" = 0.75 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ColdMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_cold_damage" + [3] = mod("ColdMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_cold_damage" + [4] = mod("ColdMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_cold_damage" + [5] = mod("ColdMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_cold_damage" + [6] = skill("ColdMin", nil), --"secondary_minimum_base_cold_damage" + [7] = skill("ColdMax", nil), --"secondary_maximum_base_cold_damage" + }, + levels = { + [1] = { 16, 4, 5, 4, 5, 18, 26, }, + [2] = { 20, 5, 7, 5, 7, 23, 35, }, + [3] = { 24, 6, 8, 6, 8, 30, 45, }, + [4] = { 28, 7, 10, 7, 10, 38, 57, }, + [5] = { 31, 8, 12, 8, 12, 45, 67, }, + [6] = { 34, 9, 14, 9, 14, 53, 80, }, + [7] = { 37, 10, 16, 10, 16, 62, 94, }, + [8] = { 40, 12, 18, 12, 18, 73, 110, }, + [9] = { 43, 13, 20, 13, 20, 85, 128, }, + [10] = { 46, 15, 23, 15, 23, 99, 149, }, + [11] = { 49, 17, 26, 17, 26, 115, 173, }, + [12] = { 52, 19, 29, 19, 29, 134, 200, }, + [13] = { 55, 22, 33, 22, 33, 154, 232, }, + [14] = { 58, 24, 37, 24, 37, 178, 267, }, + [15] = { 60, 26, 39, 26, 39, 195, 293, }, + [16] = { 62, 28, 42, 28, 42, 214, 321, }, + [17] = { 64, 30, 46, 30, 46, 235, 352, }, + [18] = { 66, 33, 49, 33, 49, 257, 386, }, + [19] = { 68, 35, 53, 35, 53, 282, 422, }, + [20] = { 70, 38, 56, 38, 56, 308, 462, }, + [21] = { 72, 40, 61, 40, 61, 337, 505, }, + [22] = { 74, 43, 65, 43, 65, 368, 552, }, + [23] = { 76, 46, 70, 46, 70, 402, 603, }, + [24] = { 78, 50, 75, 50, 75, 438, 658, }, + [25] = { 80, 53, 80, 53, 80, 478, 717, }, + [26] = { 82, 57, 85, 57, 85, 521, 782, }, + [27] = { 84, 61, 91, 61, 91, 568, 852, }, + [28] = { 86, 65, 98, 65, 98, 619, 928, }, + [29] = { 88, 69, 104, 69, 104, 674, 1010, }, + [30] = { 90, 74, 111, 74, 111, 733, 1100, }, + }, +} +skills["IceShot"] = { + name = "Ice Shot", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + duration = true, + cold = true, + bow = true, + }, + parts = { + { + name = "Arrow", + area = false, + }, + { + name = "Cone", + area = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [22] = true, [17] = true, [19] = true, [34] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToCold", "BASE", 60), --"skill_physical_damage_%_to_convert_to_cold" = 60 + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"skill_can_fire_arrows" = ? + mod("SkillPhysicalDamageConvertToCold", "BASE", 40, 0, 0, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 6, 20, }, + [2] = { 2, 6, 21.4, }, + [3] = { 4, 6, 22.8, }, + [4] = { 7, 7, 24.2, }, + [5] = { 11, 7, 25.6, }, + [6] = { 16, 7, 27, }, + [7] = { 20, 7, 28.4, }, + [8] = { 24, 8, 29.8, }, + [9] = { 28, 8, 31.2, }, + [10] = { 32, 8, 32.6, }, + [11] = { 36, 8, 34, }, + [12] = { 40, 8, 35.4, }, + [13] = { 44, 9, 36.8, }, + [14] = { 48, 9, 38.2, }, + [15] = { 52, 9, 39.6, }, + [16] = { 56, 9, 41, }, + [17] = { 60, 9, 42.4, }, + [18] = { 64, 10, 43.8, }, + [19] = { 67, 10, 45.2, }, + [20] = { 70, 10, 46.6, }, + [21] = { 72, 10, 48, }, + [22] = { 74, 10, 49.4, }, + [23] = { 76, 11, 50.8, }, + [24] = { 78, 11, 52.2, }, + [25] = { 80, 11, 53.6, }, + [26] = { 82, 11, 55, }, + [27] = { 84, 11, 56.4, }, + [28] = { 86, 12, 57.8, }, + [29] = { 88, 12, 59.2, }, + [30] = { 90, 12, 60.6, }, + }, +} +skills["IceTrap"] = { + name = "Ice Trap", + gemTags = { + trap = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + cold = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + trap = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [19] = true, [11] = true, [37] = true, [34] = true, [12] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 1.1), + skill("critChance", 5), + skill("cooldown", 2), + --"base_trap_duration" = 16000 + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_trap" = ? + skill("trapCooldown", 2), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 28, 13, 60, 90, }, + [2] = { 31, 14, 72, 108, }, + [3] = { 34, 15, 85, 128, }, + [4] = { 37, 15, 101, 151, }, + [5] = { 40, 16, 119, 178, }, + [6] = { 42, 17, 132, 198, }, + [7] = { 44, 17, 147, 220, }, + [8] = { 46, 18, 163, 244, }, + [9] = { 48, 19, 180, 270, }, + [10] = { 50, 19, 199, 299, }, + [11] = { 52, 20, 220, 330, }, + [12] = { 54, 20, 243, 364, }, + [13] = { 56, 21, 268, 402, }, + [14] = { 58, 21, 295, 442, }, + [15] = { 60, 22, 325, 487, }, + [16] = { 62, 23, 357, 536, }, + [17] = { 64, 23, 392, 589, }, + [18] = { 66, 24, 431, 646, }, + [19] = { 68, 24, 473, 709, }, + [20] = { 70, 25, 519, 778, }, + [21] = { 72, 26, 568, 853, }, + [22] = { 74, 26, 623, 934, }, + [23] = { 76, 27, 681, 1022, }, + [24] = { 78, 27, 746, 1118, }, + [25] = { 80, 28, 815, 1223, }, + [26] = { 82, 28, 891, 1337, }, + [27] = { 84, 29, 973, 1460, }, + [28] = { 86, 30, 1063, 1595, }, + [29] = { 88, 30, 1160, 1740, }, + [30] = { 90, 31, 1266, 1899, }, + }, +} +skills["DoubleSlash"] = { + name = "Lacerate", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + parts = { + { + name = "One slash", + }, + { + name = "Both slashes", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["Two Handed Axe"] = true, + ["Two Handed Sword"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + mod("Speed", "MORE", -25, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -25 + --"is_area_damage" = ? + skill("dpsMultiplier", 2, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, -5, 0, }, + [2] = { 15, -3.8, 0, }, + [3] = { 19, -2.6, 0, }, + [4] = { 23, -1.4, 1, }, + [5] = { 27, -0.2, 1, }, + [6] = { 31, 1, 1, }, + [7] = { 35, 2.2, 1, }, + [8] = { 38, 3.4, 2, }, + [9] = { 41, 4.6, 2, }, + [10] = { 44, 5.8, 2, }, + [11] = { 47, 7, 2, }, + [12] = { 50, 8.2, 3, }, + [13] = { 53, 9.4, 3, }, + [14] = { 56, 10.6, 3, }, + [15] = { 59, 11.8, 3, }, + [16] = { 62, 13, 4, }, + [17] = { 64, 14.2, 4, }, + [18] = { 66, 15.4, 4, }, + [19] = { 68, 16.6, 4, }, + [20] = { 70, 17.8, 5, }, + [21] = { 72, 19, 5, }, + [22] = { 74, 20.2, 5, }, + [23] = { 76, 21.4, 5, }, + [24] = { 78, 22.6, 6, }, + [25] = { 80, 23.8, 6, }, + [26] = { 82, 25, 6, }, + [27] = { 84, 26.2, 6, }, + [28] = { 86, 27.4, 7, }, + [29] = { 88, 28.6, 7, }, + [30] = { 90, 29.8, 7, }, + }, +} +skills["LightningArrow"] = { + name = "Lightning Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + lightning = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + lightning = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [3] = true, [22] = true, [17] = true, [19] = true, [35] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + --"lightning_arrow_maximum_number_of_extra_targets" = 3 + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 7, nil, }, + [2] = { 15, 7, 1, }, + [3] = { 19, 7, 2, }, + [4] = { 23, 8, 3, }, + [5] = { 27, 8, 4, }, + [6] = { 31, 8, 5, }, + [7] = { 35, 8, 6, }, + [8] = { 38, 8, 7, }, + [9] = { 41, 9, 8, }, + [10] = { 44, 9, 9, }, + [11] = { 47, 9, 10, }, + [12] = { 50, 9, 11, }, + [13] = { 53, 9, 12, }, + [14] = { 56, 10, 13, }, + [15] = { 59, 10, 14, }, + [16] = { 62, 10, 15, }, + [17] = { 64, 10, 16, }, + [18] = { 66, 10, 17, }, + [19] = { 68, 11, 18, }, + [20] = { 70, 11, 19, }, + [21] = { 72, 11, 20, }, + [22] = { 74, 11, 21, }, + [23] = { 76, 11, 22, }, + [24] = { 78, 11, 23, }, + [25] = { 80, 11, 24, }, + [26] = { 82, 12, 25, }, + [27] = { 84, 12, 26, }, + [28] = { 86, 12, 27, }, + [29] = { 88, 12, 28, }, + [30] = { 90, 12, 29, }, + }, +} +skills["LightningStrike"] = { + name = "Lightning Strike", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + lightning = true, + }, + parts = { + { + name = "Melee hit", + melee = true, + projectile = false, + }, + { + name = "Projectiles", + melee = false, + projectile = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + lightning = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + mod("Damage", "MORE", -25, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -25 + --"total_projectile_spread_angle_override" = 70 + --"show_number_of_projectiles" = ? + }, + qualityMods = { + mod("PierceChance", "BASE", 2), --"pierce_%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 12, 30, 4, }, + [2] = { 15, 32.4, 4, }, + [3] = { 19, 34.8, 4, }, + [4] = { 23, 37.2, 4, }, + [5] = { 27, 39.6, 4, }, + [6] = { 31, 42, 5, }, + [7] = { 35, 44.4, 5, }, + [8] = { 38, 46.8, 5, }, + [9] = { 41, 49.2, 5, }, + [10] = { 44, 51.6, 5, }, + [11] = { 47, 54, 6, }, + [12] = { 50, 56.4, 6, }, + [13] = { 53, 58.8, 6, }, + [14] = { 56, 61.2, 6, }, + [15] = { 59, 63.6, 6, }, + [16] = { 62, 66, 7, }, + [17] = { 64, 68.4, 7, }, + [18] = { 66, 70.8, 7, }, + [19] = { 68, 73.2, 7, }, + [20] = { 70, 75.6, 7, }, + [21] = { 72, 78, 8, }, + [22] = { 74, 80.4, 8, }, + [23] = { 76, 82.8, 8, }, + [24] = { 78, 85.2, 8, }, + [25] = { 80, 87.6, 8, }, + [26] = { 82, 90, 9, }, + [27] = { 84, 92.4, 9, }, + [28] = { 86, 94.8, 9, }, + [29] = { 88, 97.2, 9, }, + [30] = { 90, 99.6, 9, }, + }, +} +skills["VaalLightningStrike"] = { + name = "Vaal Lightning Strike", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + melee = true, + duration = true, + lightning = true, + }, + parts = { + { + name = "Strike", + }, + { + name = "Beams", + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [43] = true, [35] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + mod("Damage", "MORE", -50, 0, 0, { type = "SkillPart", skillPart = 2 }), --"vaal_lightning_strike_beam_damage_+%_final" = -50 + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("duration", nil), --"base_skill_effect_duration" + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 5, nil, }, + [2] = { 15, 5.2, 1.2, }, + [3] = { 19, 5.4, 2.4, }, + [4] = { 23, 5.6, 3.6, }, + [5] = { 27, 5.8, 4.8, }, + [6] = { 31, 6, 6, }, + [7] = { 35, 6.2, 7.2, }, + [8] = { 38, 6.4, 8.4, }, + [9] = { 41, 6.6, 9.6, }, + [10] = { 44, 6.8, 10.8, }, + [11] = { 47, 7, 12, }, + [12] = { 50, 7.2, 13.2, }, + [13] = { 53, 7.4, 14.4, }, + [14] = { 56, 7.6, 15.6, }, + [15] = { 59, 7.8, 16.8, }, + [16] = { 62, 8, 18, }, + [17] = { 64, 8.2, 19.2, }, + [18] = { 66, 8.4, 20.4, }, + [19] = { 68, 8.6, 21.6, }, + [20] = { 70, 8.8, 22.8, }, + [21] = { 72, 9, 24, }, + [22] = { 74, 9.2, 25.2, }, + [23] = { 76, 9.4, 26.4, }, + [24] = { 78, 9.6, 27.6, }, + [25] = { 80, 9.8, 28.8, }, + [26] = { 82, 10, 30, }, + [27] = { 84, 10.2, 31.2, }, + [28] = { 86, 10.4, 32.4, }, + [29] = { 88, 10.6, 33.6, }, + [30] = { 90, 10.8, 34.8, }, + }, +} +skills["MirrorArrow"] = { + name = "Mirror Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + minion = true, + duration = true, + bow = true, + }, + minionList = { + "Clone", + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + minion = true, + movement = true, + duration = true, + }, + skillTypes = { [14] = true, [1] = true, [9] = true, [48] = true, [21] = true, [12] = true, [22] = true, [17] = true, [19] = true, }, + minionSkillTypes = { [1] = true, [3] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"number_of_monsters_to_summon" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", 75) }), --"active_skill_minion_damage_+%_final" = 75 + --"display_minion_monster_type" = 4 + --"base_is_projectile" = ? + skill("minionUseBowAndQuiver", true), + }, + qualityMods = { + --"base_arrow_speed_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", nil) }), --"minion_damage_+%" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [5] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 14, 0, 0, 24, }, + [2] = { 13, 14, 6, 3, 27, }, + [3] = { 17, 15, 12, 6, 30, }, + [4] = { 21, 15, 18, 9, 33, }, + [5] = { 25, 15, 24, 12, 35, }, + [6] = { 29, 16, 30, 15, 38, }, + [7] = { 33, 16, 36, 18, 40, }, + [8] = { 36, 16, 42, 21, 43, }, + [9] = { 39, 16, 48, 24, 46, }, + [10] = { 42, 17, 54, 27, 48, }, + [11] = { 45, 17, 60, 30, 50, }, + [12] = { 48, 17, 66, 33, 52, }, + [13] = { 51, 17, 72, 36, 54, }, + [14] = { 54, 18, 78, 39, 56, }, + [15] = { 57, 18, 84, 42, 58, }, + [16] = { 60, 18, 90, 45, 60, }, + [17] = { 63, 19, 96, 48, 62, }, + [18] = { 66, 19, 102, 51, 64, }, + [19] = { 68, 20, 108, 54, 66, }, + [20] = { 70, 20, 114, 57, 68, }, + [21] = { 72, 21, 120, 60, 70, }, + [22] = { 74, 21, 126, 63, 72, }, + [23] = { 76, 22, 132, 66, 74, }, + [24] = { 78, 22, 138, 69, 76, }, + [25] = { 80, 22, 144, 72, 78, }, + [26] = { 82, 23, 150, 75, 80, }, + [27] = { 84, 23, 156, 78, 82, }, + [28] = { 86, 23, 162, 81, 84, }, + [29] = { 88, 23, 168, 84, 86, }, + [30] = { 90, 24, 174, 87, 88, }, + }, +} +skills["NewPhaseRun"] = { + name = "Phase Run", + gemTags = { + dexterity = true, + active_skill = true, + spell = true, + duration = true, + movement = true, + }, + color = 2, + baseFlags = { + spell = true, + duration = true, + movement = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [38] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("cooldown", 4), + --"enemy_aggro_radius_+%" = -80 + skill("duration", 1.8), --"base_skill_effect_duration" = 1800 + --"base_secondary_skill_effect_duration" = 200 + mod("Duration", "INC", 100, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"skill_effect_duration_+%_per_frenzy_charge" = 100 + --"phase_through_objects" = ? + }, + qualityMods = { + mod("MovementSpeed", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" + [4] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"phase_run_melee_physical_damage_+%_final" + }, + levels = { + [1] = { 34, 11, 30, 20, }, + [2] = { 36, 11, 30, 21, }, + [3] = { 38, 11, 31, 21, }, + [4] = { 40, 11, 31, 22, }, + [5] = { 42, 11, 32, 22, }, + [6] = { 44, 12, 32, 23, }, + [7] = { 46, 12, 33, 23, }, + [8] = { 48, 12, 33, 24, }, + [9] = { 50, 12, 34, 24, }, + [10] = { 52, 12, 34, 25, }, + [11] = { 54, 12, 35, 25, }, + [12] = { 56, 12, 35, 26, }, + [13] = { 58, 13, 36, 26, }, + [14] = { 60, 13, 36, 27, }, + [15] = { 62, 13, 37, 27, }, + [16] = { 64, 13, 37, 28, }, + [17] = { 66, 13, 38, 28, }, + [18] = { 68, 13, 38, 29, }, + [19] = { 69, 14, 39, 29, }, + [20] = { 70, 14, 39, 30, }, + [21] = { 72, 14, 40, 30, }, + [22] = { 74, 14, 40, 31, }, + [23] = { 76, 14, 41, 31, }, + [24] = { 78, 14, 41, 32, }, + [25] = { 80, 14, 42, 32, }, + [26] = { 82, 14, 42, 33, }, + [27] = { 84, 14, 43, 33, }, + [28] = { 86, 14, 43, 34, }, + [29] = { 88, 14, 44, 34, }, + [30] = { 90, 14, 44, 35, }, + }, +} +skills["PoachersMark"] = { + name = "Poacher's Mark", + gemTags = { + curse = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"monster_slain_flask_charges_granted_+%" = 100 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"chance_to_grant_frenzy_charge_on_death_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("Evasion", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse"}), --"evasion_rating_+%_final_from_poachers_mark" + [6] = mod("SelfLifeOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_hit_by_attacks" + [7] = mod("SelfManaOnHit", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_hit_by_attacks" + --[8] = "chance_to_grant_frenzy_charge_on_death_%" + }, + levels = { + [1] = { 24, 24, 6, 0, -30, 5, 5, 21, }, + [2] = { 27, 26, 6.2, 4, -31, 6, 6, 21, }, + [3] = { 30, 27, 6.4, 8, -32, 7, 6, 22, }, + [4] = { 33, 29, 6.6, 12, -33, 8, 6, 22, }, + [5] = { 36, 30, 6.8, 16, -34, 9, 7, 23, }, + [6] = { 39, 32, 7, 20, -35, 10, 7, 23, }, + [7] = { 42, 34, 7.2, 24, -36, 11, 7, 24, }, + [8] = { 45, 35, 7.4, 28, -37, 12, 8, 24, }, + [9] = { 48, 37, 7.6, 32, -38, 13, 8, 25, }, + [10] = { 50, 38, 7.8, 36, -39, 14, 8, 25, }, + [11] = { 52, 39, 8, 40, -40, 15, 9, 26, }, + [12] = { 54, 40, 8.2, 44, -41, 16, 9, 26, }, + [13] = { 56, 42, 8.4, 48, -42, 17, 9, 27, }, + [14] = { 58, 43, 8.6, 52, -43, 18, 10, 27, }, + [15] = { 60, 44, 8.8, 56, -44, 19, 10, 28, }, + [16] = { 62, 45, 9, 60, -45, 20, 10, 28, }, + [17] = { 64, 46, 9.2, 64, -46, 21, 11, 29, }, + [18] = { 66, 47, 9.4, 68, -47, 22, 11, 29, }, + [19] = { 68, 48, 9.6, 72, -48, 23, 11, 30, }, + [20] = { 70, 50, 9.8, 76, -49, 24, 12, 30, }, + [21] = { 72, 51, 10, 80, -50, 25, 12, 31, }, + [22] = { 74, 52, 10.2, 84, -51, 26, 12, 31, }, + [23] = { 76, 53, 10.4, 88, -52, 27, 13, 32, }, + [24] = { 78, 54, 10.6, 92, -53, 28, 13, 32, }, + [25] = { 80, 56, 10.8, 96, -54, 29, 13, 33, }, + [26] = { 82, 57, 11, 100, -55, 30, 14, 33, }, + [27] = { 84, 58, 11.2, 104, -56, 31, 14, 34, }, + [28] = { 86, 59, 11.4, 108, -57, 32, 14, 34, }, + [29] = { 88, 60, 11.6, 112, -58, 33, 15, 35, }, + [30] = { 90, 61, 11.8, 116, -59, 34, 15, 35, }, + }, +} +skills["ProjectileWeakness"] = { + name = "Projectile Weakness", + gemTags = { + curse = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("SelfPierceChance", "BASE", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" = 50 + --"chance_to_be_knocked_back_%" = 25 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("ProjectileDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" + }, + levels = { + [1] = { 24, 24, 9, 0, 25, }, + [2] = { 27, 26, 9.1, 4, 26, }, + [3] = { 30, 27, 9.2, 8, 27, }, + [4] = { 33, 29, 9.3, 12, 28, }, + [5] = { 36, 30, 9.4, 16, 29, }, + [6] = { 39, 32, 9.5, 20, 30, }, + [7] = { 42, 34, 9.6, 24, 31, }, + [8] = { 45, 35, 9.7, 28, 32, }, + [9] = { 48, 37, 9.8, 32, 33, }, + [10] = { 50, 38, 9.9, 36, 34, }, + [11] = { 52, 39, 10, 40, 35, }, + [12] = { 54, 40, 10.1, 44, 36, }, + [13] = { 56, 42, 10.2, 48, 37, }, + [14] = { 58, 43, 10.3, 52, 38, }, + [15] = { 60, 44, 10.4, 56, 39, }, + [16] = { 62, 45, 10.5, 60, 40, }, + [17] = { 64, 46, 10.6, 64, 41, }, + [18] = { 66, 47, 10.7, 68, 42, }, + [19] = { 68, 48, 10.8, 72, 43, }, + [20] = { 70, 50, 10.9, 76, 44, }, + [21] = { 72, 51, 11, 80, 45, }, + [22] = { 74, 52, 11.1, 84, 46, }, + [23] = { 76, 53, 11.2, 88, 47, }, + [24] = { 78, 54, 11.3, 92, 48, }, + [25] = { 80, 56, 11.4, 96, 49, }, + [26] = { 82, 57, 11.5, 100, 50, }, + [27] = { 84, 58, 11.6, 104, 51, }, + [28] = { 86, 59, 11.7, 108, 52, }, + [29] = { 88, 60, 11.8, 112, 53, }, + [30] = { 90, 61, 11.9, 116, 54, }, + }, +} +skills["Puncture"] = { + name = "Puncture", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + duration = true, + melee = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + duration = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, + weaponTypes = { + ["Bow"] = true, + ["Claw"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + skill("bleedBasePercent", 10), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 600 + --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 3000 + --"bleed_on_hit_base_duration" = 5000 + --"skill_can_fire_arrows" = ? + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 4, nil, }, + [2] = { 6, 1.2, }, + [3] = { 9, 2.4, }, + [4] = { 12, 3.6, }, + [5] = { 16, 4.8, }, + [6] = { 20, 6, }, + [7] = { 24, 7.2, }, + [8] = { 28, 8.4, }, + [9] = { 32, 9.6, }, + [10] = { 36, 10.8, }, + [11] = { 40, 12, }, + [12] = { 44, 13.2, }, + [13] = { 48, 14.4, }, + [14] = { 52, 15.6, }, + [15] = { 55, 16.8, }, + [16] = { 58, 18, }, + [17] = { 61, 19.2, }, + [18] = { 64, 20.4, }, + [19] = { 67, 21.6, }, + [20] = { 70, 22.8, }, + [21] = { 72, 24, }, + [22] = { 74, 25.2, }, + [23] = { 76, 26.4, }, + [24] = { 78, 27.6, }, + [25] = { 80, 28.8, }, + [26] = { 82, 30, }, + [27] = { 84, 31.2, }, + [28] = { 86, 32.4, }, + [29] = { 88, 33.6, }, + [30] = { 90, 34.8, }, + }, +} +skills["ColdResistAura"] = { + name = "Purity of Ice", + gemTags = { + aura = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 2, + baseFlags = { + spell = true, + aura = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [34] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_cold_damage_resistance_%" + [3] = mod("ColdResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 22, 0, 0, }, + [2] = { 27, 23, 0, 3, }, + [3] = { 30, 24, 0, 6, }, + [4] = { 33, 25, 0, 9, }, + [5] = { 36, 26, 1, 12, }, + [6] = { 39, 27, 1, 15, }, + [7] = { 42, 28, 1, 18, }, + [8] = { 45, 29, 1, 21, }, + [9] = { 48, 30, 1, 23, }, + [10] = { 50, 31, 1, 25, }, + [11] = { 52, 32, 2, 27, }, + [12] = { 54, 33, 2, 29, }, + [13] = { 56, 34, 2, 31, }, + [14] = { 58, 35, 2, 33, }, + [15] = { 60, 36, 2, 35, }, + [16] = { 62, 37, 2, 36, }, + [17] = { 64, 38, 3, 37, }, + [18] = { 66, 39, 3, 38, }, + [19] = { 68, 40, 3, 39, }, + [20] = { 70, 41, 4, 40, }, + [21] = { 72, 42, 4, 41, }, + [22] = { 74, 43, 4, 42, }, + [23] = { 76, 44, 5, 43, }, + [24] = { 78, 45, 5, 44, }, + [25] = { 80, 46, 5, 45, }, + [26] = { 82, 47, 5, 46, }, + [27] = { 84, 48, 5, 47, }, + [28] = { 86, 49, 5, 48, }, + [29] = { 88, 50, 5, 49, }, + [30] = { 90, 51, 5, 50, }, + }, +} +skills["RainOfArrows"] = { + name = "Rain of Arrows", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[4] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 7, 10, 0, }, + [2] = { 15, 7, 11, 0, }, + [3] = { 19, 7, 12, 0, }, + [4] = { 23, 8, 13, 0, }, + [5] = { 27, 8, 14, 1, }, + [6] = { 31, 8, 15, 1, }, + [7] = { 35, 8, 16, 1, }, + [8] = { 38, 8, 17, 1, }, + [9] = { 41, 9, 18, 1, }, + [10] = { 44, 9, 19, 2, }, + [11] = { 47, 9, 20, 2, }, + [12] = { 50, 9, 21, 2, }, + [13] = { 53, 9, 22, 2, }, + [14] = { 56, 10, 23, 2, }, + [15] = { 59, 10, 24, 3, }, + [16] = { 62, 10, 25, 3, }, + [17] = { 64, 10, 26, 3, }, + [18] = { 66, 10, 27, 3, }, + [19] = { 68, 11, 28, 3, }, + [20] = { 70, 11, 29, 4, }, + [21] = { 72, 11, 30, 4, }, + [22] = { 74, 11, 31, 4, }, + [23] = { 76, 11, 32, 4, }, + [24] = { 78, 11, 33, 4, }, + [25] = { 80, 11, 34, 5, }, + [26] = { 82, 12, 35, 5, }, + [27] = { 84, 12, 36, 5, }, + [28] = { 86, 12, 37, 5, }, + [29] = { 88, 12, 38, 5, }, + [30] = { 90, 12, 39, 6, }, + }, +} +skills["VaalRainOfArrows"] = { + name = "Vaal Rain of Arrows", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + duration = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [14] = true, [22] = true, [17] = true, [19] = true, [12] = true, [43] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = ? + --"is_area_damage" = ? + --"rain_of_arrows_pin" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 12, 40, 3.4, 0, }, + [2] = { 15, 41.5, 3.45, 1, }, + [3] = { 19, 43, 3.5, 2, }, + [4] = { 23, 44.5, 3.55, 3, }, + [5] = { 27, 46, 3.6, 4, }, + [6] = { 31, 47.5, 3.65, 5, }, + [7] = { 35, 49, 3.7, 6, }, + [8] = { 38, 50.5, 3.75, 7, }, + [9] = { 41, 52, 3.8, 8, }, + [10] = { 44, 53.5, 3.85, 9, }, + [11] = { 47, 55, 3.9, 10, }, + [12] = { 50, 56.5, 3.95, 11, }, + [13] = { 53, 58, 4, 12, }, + [14] = { 56, 59.5, 4.05, 13, }, + [15] = { 59, 61, 4.1, 14, }, + [16] = { 62, 62.5, 4.15, 15, }, + [17] = { 64, 64, 4.2, 16, }, + [18] = { 66, 65.5, 4.25, 17, }, + [19] = { 68, 67, 4.3, 18, }, + [20] = { 70, 68.5, 4.35, 19, }, + [21] = { 72, 70, 4.4, 20, }, + [22] = { 74, 71.5, 4.45, 21, }, + [23] = { 76, 73, 4.5, 22, }, + [24] = { 78, 74.5, 4.55, 23, }, + [25] = { 80, 76, 4.6, 24, }, + [26] = { 82, 77.5, 4.65, 25, }, + [27] = { 84, 79, 4.7, 26, }, + [28] = { 86, 80.5, 4.75, 27, }, + [29] = { 88, 82, 4.8, 28, }, + [30] = { 90, 83.5, 4.85, 29, }, + }, +} +skills["Reave"] = { + name = "Reave", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + --"reave_area_of_effect_+%_final_per_stage" = 50 + --"is_area_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "active_skill_base_radius_+" + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 0, nil, }, + [2] = { 15, 0, 2, }, + [3] = { 19, 0, 4, }, + [4] = { 23, 0, 6, }, + [5] = { 27, 1, 8, }, + [6] = { 31, 1, 10, }, + [7] = { 35, 1, 12, }, + [8] = { 38, 1, 14, }, + [9] = { 41, 1, 16, }, + [10] = { 44, 2, 18, }, + [11] = { 47, 2, 20, }, + [12] = { 50, 2, 22, }, + [13] = { 53, 2, 24, }, + [14] = { 56, 2, 26, }, + [15] = { 59, 3, 28, }, + [16] = { 62, 3, 30, }, + [17] = { 64, 3, 32, }, + [18] = { 66, 3, 34, }, + [19] = { 68, 3, 36, }, + [20] = { 70, 4, 38, }, + [21] = { 72, 4, 40, }, + [22] = { 74, 4, 42, }, + [23] = { 76, 4, 44, }, + [24] = { 78, 4, 46, }, + [25] = { 80, 5, 48, }, + [26] = { 82, 5, 50, }, + [27] = { 84, 5, 52, }, + [28] = { 86, 5, 54, }, + [29] = { 88, 5, 56, }, + [30] = { 90, 6, 58, }, + }, +} +skills["VaalReave"] = { + name = "Vaal Reave", + gemTags = { + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + area = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + --"reave_area_of_effect_+%_final_per_stage" = 50 + --"reave_rotation_on_repeat" = 135 + --"reave_additional_max_stacks" = 4 + --"base_attack_repeat_count" = 7 + mod("Speed", "MORE", 150, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = 150 + --"reave_additional_starting_stacks" = 4 + --"is_area_damage" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "active_skill_base_radius_+" + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 0, nil, }, + [2] = { 15, 0, 1.2, }, + [3] = { 19, 0, 2.4, }, + [4] = { 23, 0, 3.6, }, + [5] = { 27, 1, 4.8, }, + [6] = { 31, 1, 6, }, + [7] = { 35, 1, 7.2, }, + [8] = { 38, 1, 8.4, }, + [9] = { 41, 1, 9.6, }, + [10] = { 44, 2, 10.8, }, + [11] = { 47, 2, 12, }, + [12] = { 50, 2, 13.2, }, + [13] = { 53, 2, 14.4, }, + [14] = { 56, 2, 15.6, }, + [15] = { 59, 3, 16.8, }, + [16] = { 62, 3, 18, }, + [17] = { 64, 3, 19.2, }, + [18] = { 66, 3, 20.4, }, + [19] = { 68, 3, 21.6, }, + [20] = { 70, 4, 22.8, }, + [21] = { 72, 4, 24, }, + [22] = { 74, 4, 25.2, }, + [23] = { 76, 4, 26.4, }, + [24] = { 78, 4, 27.6, }, + [25] = { 80, 5, 28.8, }, + [26] = { 82, 5, 30, }, + [27] = { 84, 5, 31.2, }, + [28] = { 86, 5, 32.4, }, + [29] = { 88, 5, 33.6, }, + [30] = { 90, 6, 34.8, }, + }, +} +skills["Riposte"] = { + name = "Riposte", + gemTags = { + trigger = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [24] = true, [25] = true, [6] = true, [47] = true, [57] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 0.8), + --"melee_counterattack_trigger_on_block_%" = 100 + --"attack_unusable_if_triggerable" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 4, nil, }, + [2] = { 6, 2, }, + [3] = { 9, 4, }, + [4] = { 12, 6, }, + [5] = { 16, 8, }, + [6] = { 20, 10, }, + [7] = { 24, 12, }, + [8] = { 28, 14, }, + [9] = { 32, 16, }, + [10] = { 36, 18, }, + [11] = { 40, 20, }, + [12] = { 44, 22, }, + [13] = { 48, 24, }, + [14] = { 52, 26, }, + [15] = { 55, 28, }, + [16] = { 58, 30, }, + [17] = { 61, 32, }, + [18] = { 64, 34, }, + [19] = { 67, 36, }, + [20] = { 70, 38, }, + [21] = { 72, 40, }, + [22] = { 74, 42, }, + [23] = { 76, 44, }, + [24] = { 78, 46, }, + [25] = { 80, 48, }, + [26] = { 82, 50, }, + [27] = { 84, 52, }, + [28] = { 86, 54, }, + [29] = { 88, 56, }, + [30] = { 90, 58, }, + }, +} +skills["ShrapnelShot"] = { + name = "Shrapnel Shot", + gemTags = { + lightning = true, + dexterity = true, + active_skill = true, + attack = true, + area = true, + bow = true, + }, + parts = { + { + name = "Arrow", + area = false, + }, + { + name = "Cone", + area = true, + }, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + lightning = true, + }, + skillTypes = { [1] = true, [3] = true, [11] = true, [22] = true, [17] = true, [19] = true, [35] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_arrow_pierce_%" = 100 + mod("Damage", "MORE", 0, ModFlag.Area), --"active_skill_area_damage_+%_final" = 0 + mod("PhysicalDamageConvertToLightning", "BASE", 40, 0, 0, nil), --"base_physical_damage_%_to_convert_to_lightning" = 40 + --"base_is_projectile" = ? + --"skill_can_fire_arrows" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[4] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 6, -20, 0, }, + [2] = { 2, 6, -19, 0, }, + [3] = { 4, 6, -18, 0, }, + [4] = { 7, 7, -17, 1, }, + [5] = { 11, 7, -16, 1, }, + [6] = { 16, 7, -15, 1, }, + [7] = { 20, 7, -14, 1, }, + [8] = { 24, 8, -13, 2, }, + [9] = { 28, 8, -12, 2, }, + [10] = { 32, 8, -11, 2, }, + [11] = { 36, 8, -10, 2, }, + [12] = { 40, 8, -9, 3, }, + [13] = { 44, 9, -8, 3, }, + [14] = { 48, 9, -7, 3, }, + [15] = { 52, 9, -6, 3, }, + [16] = { 56, 9, -5, 4, }, + [17] = { 60, 9, -4, 4, }, + [18] = { 64, 10, -3, 4, }, + [19] = { 67, 10, -2, 4, }, + [20] = { 70, 10, -1, 5, }, + [21] = { 72, 10, nil, 5, }, + [22] = { 74, 10, 1, 5, }, + [23] = { 76, 11, 2, 5, }, + [24] = { 78, 11, 3, 6, }, + [25] = { 80, 11, 4, 6, }, + [26] = { 82, 11, 5, 6, }, + [27] = { 84, 11, 6, 6, }, + [28] = { 86, 12, 7, 7, }, + [29] = { 88, 12, 8, 7, }, + [30] = { 90, 12, 9, 7, }, + }, +} +skills["SiegeBallista"] = { + name = "Siege Ballista", + gemTags = { + totem = true, + dexterity = true, + active_skill = true, + attack = true, + duration = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + totem = true, + duration = true, + }, + skillTypes = { [1] = true, [3] = true, [48] = true, [17] = true, [19] = true, [30] = true, [12] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + skillTotemId = 12, + baseMods = { + skill("castTime", 1), + mod("Speed", "MORE", -50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -50 + --"base_arrow_pierce_%" = 100 + --"base_totem_range" = 80 + --"base_totem_duration" = 8000 + --"base_is_projectile" = ? + --"base_skill_is_totemified" = ? + --"is_totem" = ? + --"skill_can_fire_arrows" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("TotemPlacementSpeed", "INC", 1), --"summon_totem_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = skill("totemLevel", nil), --"base_active_skill_totem_level" + }, + levels = { + [1] = { 4, 8, 40, 4, }, + [2] = { 6, 8, 41.6, 6, }, + [3] = { 9, 8, 43.2, 9, }, + [4] = { 12, 9, 44.8, 12, }, + [5] = { 16, 9, 46.4, 16, }, + [6] = { 20, 9, 48, 20, }, + [7] = { 24, 9, 49.6, 24, }, + [8] = { 28, 9, 51.2, 28, }, + [9] = { 32, 9, 52.8, 32, }, + [10] = { 36, 10, 54.4, 36, }, + [11] = { 40, 10, 56, 40, }, + [12] = { 44, 10, 57.6, 44, }, + [13] = { 48, 10, 59.2, 48, }, + [14] = { 52, 10, 60.8, 52, }, + [15] = { 55, 11, 62.4, 55, }, + [16] = { 58, 11, 64, 58, }, + [17] = { 61, 12, 65.6, 61, }, + [18] = { 64, 12, 67.2, 64, }, + [19] = { 67, 12, 68.8, 67, }, + [20] = { 70, 13, 70.4, 70, }, + [21] = { 72, 13, 72, 72, }, + [22] = { 74, 13, 73.6, 74, }, + [23] = { 76, 14, 75.2, 76, }, + [24] = { 78, 14, 76.8, 78, }, + [25] = { 80, 14, 78.4, 80, }, + [26] = { 82, 14, 80, 82, }, + [27] = { 84, 14, 81.6, 84, }, + [28] = { 86, 14, 83.2, 86, }, + [29] = { 88, 15, 84.8, 88, }, + [30] = { 90, 15, 86.4, 90, }, + }, +} +skills["SmokeMine"] = { + name = "Smoke Mine", + gemTags = { + mine = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + movement = true, + }, + color = 2, + baseFlags = { + spell = true, + mine = true, + area = true, + duration = true, + movement = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [38] = true, [41] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_mine_duration" = 16000 + mod("MovementSpeed", "INC", 30, 0, 0, nil), --"base_movement_velocity_+%" = 30 + --"is_remote_mine" = ? + --"base_skill_is_mined" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 10, 6, 4, }, + [2] = { 13, 6, 4.1, }, + [3] = { 17, 7, 4.2, }, + [4] = { 21, 7, 4.3, }, + [5] = { 25, 8, 4.4, }, + [6] = { 29, 8, 4.5, }, + [7] = { 33, 9, 4.6, }, + [8] = { 36, 9, 4.7, }, + [9] = { 39, 9, 4.8, }, + [10] = { 42, 10, 4.9, }, + [11] = { 45, 10, 5, }, + [12] = { 48, 10, 5.1, }, + [13] = { 51, 10, 5.2, }, + [14] = { 54, 11, 5.3, }, + [15] = { 57, 11, 5.4, }, + [16] = { 60, 11, 5.5, }, + [17] = { 63, 12, 5.6, }, + [18] = { 66, 12, 5.7, }, + [19] = { 68, 12, 5.8, }, + [20] = { 70, 13, 5.9, }, + [21] = { 72, 13, 6, }, + [22] = { 74, 13, 6.1, }, + [23] = { 76, 14, 6.2, }, + [24] = { 78, 14, 6.3, }, + [25] = { 80, 14, 6.4, }, + [26] = { 82, 14, 6.5, }, + [27] = { 84, 14, 6.6, }, + [28] = { 86, 14, 6.7, }, + [29] = { 88, 15, 6.8, }, + [30] = { 90, 15, 6.9, }, + }, +} +skills["ThrownWeapon"] = { + name = "Spectral Throw", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 7, -46, }, + [2] = { 2, 7, -44, }, + [3] = { 4, 7, -42.1, }, + [4] = { 7, 7, -40.2, }, + [5] = { 11, 7, -38.3, }, + [6] = { 16, 7, -36.4, }, + [7] = { 20, 7, -34.4, }, + [8] = { 24, 7, -32.5, }, + [9] = { 28, 7, -30.6, }, + [10] = { 32, 7, -28.7, }, + [11] = { 36, 8, -26.8, }, + [12] = { 40, 8, -24.8, }, + [13] = { 44, 8, -22.9, }, + [14] = { 48, 8, -21, }, + [15] = { 52, 8, -19.1, }, + [16] = { 56, 9, -17.2, }, + [17] = { 60, 9, -15.2, }, + [18] = { 64, 9, -13.3, }, + [19] = { 67, 9, -11.4, }, + [20] = { 70, 9, -9.5, }, + [21] = { 72, 10, -7.6, }, + [22] = { 74, 10, -5.6, }, + [23] = { 76, 10, -3.7, }, + [24] = { 78, 10, -1.8, }, + [25] = { 80, 10, nil, }, + [26] = { 82, 10, 2, }, + [27] = { 84, 10, 3.9, }, + [28] = { 86, 10, 5.8, }, + [29] = { 88, 10, 7.7, }, + [30] = { 90, 10, 9.6, }, + }, +} +skills["VaalThrownWeapon"] = { + name = "Vaal Spectral Throw", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + vaal = true, + attack = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [43] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"projectiles_nova" = ? + --"base_is_projectile" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, -30, }, + [2] = { 2, -28.2, }, + [3] = { 4, -26.4, }, + [4] = { 7, -24.6, }, + [5] = { 11, -22.8, }, + [6] = { 16, -21, }, + [7] = { 20, -19.2, }, + [8] = { 24, -17.4, }, + [9] = { 28, -15.6, }, + [10] = { 32, -13.8, }, + [11] = { 36, -12, }, + [12] = { 40, -10.2, }, + [13] = { 44, -8.4, }, + [14] = { 48, -6.6, }, + [15] = { 52, -4.8, }, + [16] = { 56, -3, }, + [17] = { 60, -1.2, }, + [18] = { 64, 0.6, }, + [19] = { 67, 2.4, }, + [20] = { 70, 4.2, }, + [21] = { 72, 6, }, + [22] = { 74, 7.8, }, + [23] = { 76, 9.6, }, + [24] = { 78, 11.4, }, + [25] = { 80, 13.2, }, + [26] = { 82, 15, }, + [27] = { 84, 16.8, }, + [28] = { 86, 18.6, }, + [29] = { 88, 20.4, }, + [30] = { 90, 22.2, }, + }, +} +skills["SplitArrow"] = { + name = "Split Arrow", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = mod("ProjectileCount", "BASE", nil), --"base_number_of_additional_arrows" + }, + levels = { + [1] = { 1, 6, -10, 4, }, + [2] = { 2, 6, -9, 4, }, + [3] = { 4, 6, -8, 4, }, + [4] = { 7, 7, -7, 4, }, + [5] = { 11, 7, -6, 4, }, + [6] = { 16, 7, -5, 4, }, + [7] = { 20, 7, -4, 4, }, + [8] = { 24, 8, -3, 5, }, + [9] = { 28, 8, -2, 5, }, + [10] = { 32, 8, -1, 5, }, + [11] = { 36, 8, nil, 5, }, + [12] = { 40, 8, 1, 5, }, + [13] = { 44, 9, 2, 5, }, + [14] = { 48, 9, 3, 5, }, + [15] = { 52, 9, 4, 6, }, + [16] = { 56, 9, 5, 6, }, + [17] = { 60, 9, 6, 6, }, + [18] = { 64, 10, 7, 6, }, + [19] = { 67, 10, 8, 6, }, + [20] = { 70, 10, 9, 6, }, + [21] = { 72, 10, 10, 6, }, + [22] = { 74, 10, 11, 7, }, + [23] = { 76, 11, 12, 7, }, + [24] = { 78, 11, 13, 7, }, + [25] = { 80, 11, 14, 7, }, + [26] = { 82, 11, 15, 7, }, + [27] = { 84, 11, 16, 7, }, + [28] = { 86, 12, 17, 7, }, + [29] = { 88, 12, 18, 8, }, + [30] = { 90, 12, 19, 8, }, + }, +} +skills["SummonIceGolem"] = { + name = "Summon Ice Golem", + gemTags = { + dexterity = true, + active_skill = true, + cold = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedIceGolem", + }, + color = 2, + baseFlags = { + spell = true, + minion = true, + golem = true, + cold = true, + }, + skillTypes = { [36] = true, [34] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [60] = true, [62] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [3] = true, [2] = true, [10] = true, [38] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 6 + mod("Misc", "LIST", { type = "Condition", var = "HaveColdGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("CritChance", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_critical_strike_chance_+%" + [5] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"ice_golem_grants_accuracy_+%" + [6] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [7] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 20, 20, 30, 34, }, + [2] = { 36, 32, 1, 21, 21, 32, 36, }, + [3] = { 38, 34, 1, 21, 21, 34, 38, }, + [4] = { 40, 36, 2, 22, 22, 36, 40, }, + [5] = { 42, 38, 2, 22, 22, 38, 42, }, + [6] = { 44, 40, 3, 23, 23, 40, 44, }, + [7] = { 46, 42, 3, 23, 23, 42, 46, }, + [8] = { 48, 44, 4, 24, 24, 44, 48, }, + [9] = { 50, 44, 4, 24, 24, 46, 50, }, + [10] = { 52, 46, 5, 25, 25, 48, 52, }, + [11] = { 54, 48, 5, 25, 25, 50, 54, }, + [12] = { 56, 48, 6, 26, 26, 52, 56, }, + [13] = { 58, 50, 6, 26, 26, 54, 58, }, + [14] = { 60, 50, 7, 27, 27, 56, 60, }, + [15] = { 62, 52, 7, 27, 27, 58, 62, }, + [16] = { 64, 52, 8, 28, 28, 60, 64, }, + [17] = { 66, 52, 8, 28, 28, 62, 66, }, + [18] = { 68, 52, 9, 29, 29, 64, 68, }, + [19] = { 69, 54, 9, 29, 29, 66, 69, }, + [20] = { 70, 54, 10, 30, 30, 68, 70, }, + [21] = { 72, 56, 10, 30, 30, 70, 72, }, + [22] = { 74, 56, 11, 31, 31, 72, 74, }, + [23] = { 76, 58, 11, 31, 31, 74, 76, }, + [24] = { 78, 58, 12, 32, 32, 76, 78, }, + [25] = { 80, 60, 12, 32, 32, 78, 80, }, + [26] = { 82, 60, 13, 33, 33, 80, 82, }, + [27] = { 84, 60, 13, 33, 33, 82, 84, }, + [28] = { 86, 60, 14, 34, 34, 84, 86, }, + [29] = { 88, 62, 14, 34, 34, 86, 88, }, + [30] = { 90, 62, 15, 35, 35, 88, 90, }, + }, +} +skills["TemporalChains"] = { + name = "Temporal Chains", + gemTags = { + curse = true, + dexterity = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("BuffExpireFaster", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"buff_time_passed_-%" = 40 + --"curse_effect_+%_vs_players" = -40 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"temporal_chains_action_speed_+%_final" = -0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + --[5] = "temporal_chains_action_speed_+%_final" + }, + levels = { + [1] = { 24, 24, 5, 0, -20, }, + [2] = { 27, 26, 5.05, 4, -20, }, + [3] = { 30, 27, 5.1, 8, -21, }, + [4] = { 33, 29, 5.15, 12, -21, }, + [5] = { 36, 30, 5.2, 16, -22, }, + [6] = { 39, 32, 5.25, 20, -22, }, + [7] = { 42, 34, 5.3, 24, -23, }, + [8] = { 45, 35, 5.35, 28, -23, }, + [9] = { 48, 37, 5.4, 32, -24, }, + [10] = { 50, 38, 5.45, 36, -24, }, + [11] = { 52, 39, 5.5, 40, -25, }, + [12] = { 54, 40, 5.55, 44, -25, }, + [13] = { 56, 42, 5.6, 48, -26, }, + [14] = { 58, 43, 5.65, 52, -26, }, + [15] = { 60, 44, 5.7, 56, -27, }, + [16] = { 62, 45, 5.75, 60, -27, }, + [17] = { 64, 46, 5.8, 64, -28, }, + [18] = { 66, 47, 5.85, 68, -28, }, + [19] = { 68, 48, 5.9, 72, -29, }, + [20] = { 70, 50, 5.95, 76, -29, }, + [21] = { 72, 51, 6, 80, -30, }, + [22] = { 74, 52, 6.05, 84, -30, }, + [23] = { 76, 53, 6.1, 88, -31, }, + [24] = { 78, 54, 6.15, 92, -31, }, + [25] = { 80, 56, 6.2, 96, -32, }, + [26] = { 82, 57, 6.25, 100, -32, }, + [27] = { 84, 58, 6.3, 104, -33, }, + [28] = { 86, 59, 6.35, 108, -33, }, + [29] = { 88, 60, 6.4, 112, -34, }, + [30] = { 90, 61, 6.45, 116, -34, }, + }, +} +skills["TornadoShot"] = { + name = "Tornado Shot", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + bow = true, + }, + color = 2, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [3] = true, [17] = true, [19] = true, [22] = true, [48] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + --"tornado_shot_num_of_secondary_projectiles" = 3 + --"base_is_projectile" = ? + --"skill_can_fire_arrows" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Projectile), --"projectile_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 8, -10, }, + [2] = { 31, 8, -9, }, + [3] = { 34, 8, -8, }, + [4] = { 37, 8, -7, }, + [5] = { 40, 9, -6, }, + [6] = { 42, 9, -5, }, + [7] = { 44, 9, -4, }, + [8] = { 46, 9, -3, }, + [9] = { 48, 9, -2, }, + [10] = { 50, 9, -1, }, + [11] = { 52, 9, nil, }, + [12] = { 54, 10, 1, }, + [13] = { 56, 10, 2, }, + [14] = { 58, 10, 3, }, + [15] = { 60, 10, 4, }, + [16] = { 62, 10, 5, }, + [17] = { 64, 10, 6, }, + [18] = { 66, 10, 7, }, + [19] = { 68, 10, 8, }, + [20] = { 70, 10, 9, }, + [21] = { 72, 10, 10, }, + [22] = { 74, 10, 11, }, + [23] = { 76, 11, 12, }, + [24] = { 78, 11, 13, }, + [25] = { 80, 11, 14, }, + [26] = { 82, 11, 15, }, + [27] = { 84, 11, 16, }, + [28] = { 86, 12, 17, }, + [29] = { 88, 12, 18, }, + [30] = { 90, 12, 19, }, + }, +} +skills["ViperStrike"] = { + name = "Viper Strike", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + duration = true, + melee = true, + chaos = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + duration = true, + chaos = true, + }, + skillTypes = { [1] = true, [6] = true, [12] = true, [28] = true, [24] = true, [25] = true, [40] = true, [50] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Claw"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + mod("PhysicalDamageConvertToChaos", "BASE", 25, 0, 0, nil), --"base_physical_damage_%_to_convert_to_chaos" = 25 + mod("PoisonChance", "BASE", 100), --"base_chance_to_poison_on_hit_%" = 100 + skill("duration", 8), --"base_skill_effect_duration" = 8000 + skill("poisonDurationIsSkillDuration", true), --"poison_duration_is_skill_duration" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 30, }, + [2] = { 2, 32.6, }, + [3] = { 4, 35.2, }, + [4] = { 7, 37.8, }, + [5] = { 11, 40.4, }, + [6] = { 16, 43, }, + [7] = { 20, 45.6, }, + [8] = { 24, 48.2, }, + [9] = { 28, 50.8, }, + [10] = { 32, 53.4, }, + [11] = { 36, 56, }, + [12] = { 40, 58.6, }, + [13] = { 44, 61.2, }, + [14] = { 48, 63.8, }, + [15] = { 52, 66.4, }, + [16] = { 56, 69, }, + [17] = { 60, 71.6, }, + [18] = { 64, 74.2, }, + [19] = { 67, 76.8, }, + [20] = { 70, 79.4, }, + [21] = { 72, 82, }, + [22] = { 74, 84.6, }, + [23] = { 76, 87.2, }, + [24] = { 78, 89.8, }, + [25] = { 80, 92.4, }, + [26] = { 82, 95, }, + [27] = { 84, 97.6, }, + [28] = { 86, 100.2, }, + [29] = { 88, 102.8, }, + [30] = { 90, 105.4, }, + }, +} +skills["WhirlingBlades"] = { + name = "Whirling Blades", + gemTags = { + dexterity = true, + active_skill = true, + attack = true, + movement = true, + melee = true, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("manaCost", 15), + --"ignores_proximity_shield" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, -20, }, + [2] = { 13, -19, }, + [3] = { 17, -18, }, + [4] = { 21, -17, }, + [5] = { 25, -16, }, + [6] = { 29, -15, }, + [7] = { 33, -14, }, + [8] = { 36, -13, }, + [9] = { 39, -12, }, + [10] = { 42, -11, }, + [11] = { 45, -10, }, + [12] = { 48, -9, }, + [13] = { 51, -8, }, + [14] = { 54, -7, }, + [15] = { 57, -6, }, + [16] = { 60, -5, }, + [17] = { 63, -4, }, + [18] = { 66, -3, }, + [19] = { 68, -2, }, + [20] = { 70, -1, }, + [21] = { 72, nil, }, + [22] = { 74, 1, }, + [23] = { 76, 2, }, + [24] = { 78, 3, }, + [25] = { 80, 4, }, + [26] = { 82, 5, }, + [27] = { 84, 6, }, + [28] = { 86, 7, }, + [29] = { 88, 8, }, + [30] = { 90, 9, }, + }, +} +skills["WildStrike"] = { + name = "Wild Strike", + gemTags = { + projectile = true, + dexterity = true, + active_skill = true, + attack = true, + melee = true, + lightning = true, + cold = true, + fire = true, + area = true, + chaining = true, + }, + parts = { + { + name = "Fire hit", + melee = true, + projectile = false, + chaining = false, + area = false, + }, + { + name = "Fire explosion", + melee = false, + projectile = false, + chaining = false, + area = true, + }, + { + name = "Lightning hit", + melee = true, + projectile = false, + chaining = false, + area = false, + }, + { + name = "Lightning bolt", + melee = false, + projectile = false, + chaining = true, + area = false, + }, + { + name = "Cold hit", + melee = true, + projectile = false, + chaining = false, + area = false, + }, + { + name = "Icy wave", + melee = false, + projectile = true, + chaining = false, + area = false, + }, + }, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + chaining = true, + area = true, + lightning = true, + cold = true, + fire = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [35] = true, [34] = true, [33] = true, [3] = true, [11] = true, [23] = true, [48] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + --"elemental_strike_physical_damage_%_to_convert" = 100 + --"fixed_projectile_spread" = 70 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + --"show_number_of_projectiles" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), + mod("PhysicalDamageConvertToFire", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 2 }), + mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 3 }), + mod("PhysicalDamageConvertToLightning", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 4 }), + mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 5 }), + mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 6 }), + }, + qualityMods = { + mod("ElementalDamage", "INC", 1), --"elemental_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 28, 30, 4, 0, }, + [2] = { 31, 32.4, 4, 1, }, + [3] = { 34, 34.8, 4, 2, }, + [4] = { 37, 37.2, 4, 3, }, + [5] = { 40, 39.6, 4, 4, }, + [6] = { 42, 42, 4, 5, }, + [7] = { 44, 44.4, 5, 6, }, + [8] = { 46, 46.8, 5, 7, }, + [9] = { 48, 49.2, 5, 8, }, + [10] = { 50, 51.6, 5, 9, }, + [11] = { 52, 54, 5, 10, }, + [12] = { 54, 56.4, 5, 11, }, + [13] = { 56, 58.8, 6, 12, }, + [14] = { 58, 61.2, 6, 13, }, + [15] = { 60, 63.6, 6, 14, }, + [16] = { 62, 66, 6, 15, }, + [17] = { 64, 68.4, 6, 16, }, + [18] = { 66, 70.8, 6, 17, }, + [19] = { 68, 73.2, 7, 18, }, + [20] = { 70, 75.6, 7, 19, }, + [21] = { 72, 78, 7, 20, }, + [22] = { 74, 80.4, 7, 21, }, + [23] = { 76, 82.8, 7, 22, }, + [24] = { 78, 85.2, 7, 23, }, + [25] = { 80, 87.6, 8, 24, }, + [26] = { 82, 90, 8, 25, }, + [27] = { 84, 92.4, 8, 26, }, + [28] = { 86, 94.8, 8, 27, }, + [29] = { 88, 97.2, 8, 28, }, + [30] = { 90, 99.6, 8, 29, }, + }, +} \ No newline at end of file diff --git a/Export/Gems/act_dex.txt b/Export/Skills/act_dex.txt similarity index 80% rename from Export/Gems/act_dex.txt rename to Export/Skills/act_dex.txt index c2fd229b..82db4612 100644 --- a/Export/Gems/act_dex.txt +++ b/Export/Skills/act_dex.txt @@ -1,20 +1,18 @@ -- Path of Building -- --- Active Dexterity gems --- Skill gem data (c) Grinding Gear Games +-- Active Dexterity skill gems +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Animate Weapon"] = { #skill AnimateWeapon unsupported = true, -} -gems["Arctic Armour"] = { +#mods + #skill NewArcticArmour #flags spell duration cold #mods -} -gems["Barrage"] = { + #skill Barrage #flags attack projectile parts = { @@ -25,20 +23,18 @@ gems["Barrage"] = { name = "All Arrows", }, }, - setupFunc = function(env, output) - if env.mainSkill.skillPart == 2 then - env.mainSkill.skillData.dpsMultiplier = output.ProjectileCount + setupFunc = function(actor, output) + if actor.mainSkill.skillPart == 2 then + actor.mainSkill.skillData.dpsMultiplier = output.ProjectileCount end end, #mods -} -gems["Bear Trap"] = { + #skill BearTrap #flags cast trap duration #baseMod skill("trapCooldown", 3) #mods -} -gems["Blade Flurry"] = { + #skill ChargedAttack #flags attack melee area parts = { @@ -56,8 +52,7 @@ gems["Blade Flurry"] = { #baseMod mod("Damage", "MORE", 120, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }) #baseMod skill("dpsMultiplier", 3, { type = "SkillPart", skillPart = 3 }) #mods -} -gems["Blade Vortex"] = { + #skill BladeVortex #flags spell area duration parts = { @@ -84,13 +79,11 @@ gems["Blade Vortex"] = { #baseMod skill("hitTimeOverride", 0.2, { type = "SkillPart", skillPart = 4 }) #setMod base_skill_show_average_damage_instead_of_dps==nil #mods -} -gems["Bladefall"] = { + #skill Bladefall #flags spell area #mods -} -gems["Blast Rain"] = { + #skill BlastRain #flags attack projectile area fire parts = { @@ -103,75 +96,66 @@ gems["Blast Rain"] = { }, #baseMod skill("dpsMultiplier", 4, { type = "SkillPart", skillPart = 2 }) #mods -} -gems["Blink Arrow"] = { + #skill BlinkArrow - unsupported = true, -} -gems["Blood Rage"] = { +#flags attack projectile minion movement duration + minionList = { + "Clone", + }, +#baseMod skill("minionUseBowAndQuiver", true) +#mods + #skill BloodRage #flags spell duration #mods -} -gems["Burning Arrow"] = { + #skill BurningArrow #flags attack projectile fire #mods -} -gems["Vaal Burning Arrow"] = { + #skill VaalBurningArrow #flags attack projectile area fire vaal #mods -} -gems["Caustic Arrow"] = { + #skill PoisonArrow #flags attack projectile duration chaos #baseMod skill("dotIsArea", true) #mods -} -gems["Cyclone"] = { + #skill Cyclone #flags attack melee area movement #baseMod skill("dpsMultiplier", 2) #mods -} -gems["Vaal Cyclone"] = { + #skill VaalCyclone #flags attack melee area duration vaal #mods -} -gems["Desecrate"] = { + #skill Desecrate #flags spell area duration chaos #mods -} -gems["Detonate Dead"] = { + #skill DetonateDead #flags cast area fire #mods -} -gems["Vaal Detonate Dead"] = { + #skill VaalDetonateDead #flags cast area fire #mods -} -gems["Double Strike"] = { + #skill DoubleStrike #flags attack melee #baseMod skill("dpsMultiplier", 2) #mods -} -gems["Vaal Double Strike"] = { + #skill VaalDoubleStrike #flags attack melee duration vaal #mods -} -gems["Dual Strike"] = { + #skill DualStrike #flags attack melee #mods -} -gems["Elemental Hit"] = { + #skill ElementalHit #flags attack melee projectile cold fire lightning parts = { @@ -189,13 +173,11 @@ gems["Elemental Hit"] = { #baseMod mod("EnemyShockChance", "BASE", 10) #baseMod mod("EnemyIgniteChance", "BASE", 10) #mods -} -gems["Ethereal Knives"] = { + #skill EtherealKnives #flags spell projectile #mods -} -gems["Explosive Arrow"] = { + #skill ExplosiveArrow #flags attack projectile area duration fire parts = { @@ -212,30 +194,25 @@ gems["Explosive Arrow"] = { }, #baseMod skill("showAverage", true, { type = "SkillPart", skillPart = 1 }) #mods -} -gems["Fire Trap"] = { + #skill FireTrap #flags spell trap area duration fire #baseMod skill("trapCooldown", 3) #mods -} -gems["Flicker Strike"] = { + #skill FlickerStrike #flags attack melee movement #setMod base_skill_show_average_damage_instead_of_dps==nil #mods -} -gems["Freeze Mine"] = { + #skill FreezeMine #flags spell mine area cold #mods -} -gems["Frenzy"] = { + #skill Frenzy #flags attack melee projectile #mods -} -gems["Frost Blades"] = { + #skill FrostBlades #flags attack melee projectile cold parts = { @@ -251,38 +228,31 @@ gems["Frost Blades"] = { }, }, #mods -} -gems["Grace"] = { + #skill Grace #flags spell aura area #mods -} -gems["Vaal Grace"] = { + #skill VaalGrace #flags spell aura area duration vaal #mods -} -gems["Haste"] = { + #skill Haste #flags spell aura area #mods -} -gems["Vaal Haste"] = { + #skill VaalHaste #flags spell aura area duration vaal #mods -} -gems["Hatred"] = { + #skill Hatred #flags spell aura area cold #mods -} -gems["Herald of Ice"] = { + #skill HeraldOfIce #flags cast area cold #mods -} -gems["Ice Shot"] = { + #skill IceShot #flags attack projectile area duration cold parts = { @@ -297,14 +267,12 @@ gems["Ice Shot"] = { }, #baseMod mod("SkillPhysicalDamageConvertToCold", "BASE", 40, 0, 0, { type = "SkillPart", skillPart = 2 }) #mods -} -gems["Ice Trap"] = { + #skill IceTrap #flags spell trap area cold #baseMod skill("trapCooldown", 2) #mods -} -gems["Lacerate"] = { + #skill DoubleSlash #flags attack melee area parts = { @@ -317,13 +285,11 @@ gems["Lacerate"] = { }, #baseMod skill("dpsMultiplier", 2, { type = "SkillPart", skillPart = 2 }) #mods -} -gems["Lightning Arrow"] = { + #skill LightningArrow #flags attack projectile lightning #mods -} -gems["Lightning Strike"] = { + #skill LightningStrike #flags attack melee projectile lightning parts = { @@ -339,8 +305,7 @@ gems["Lightning Strike"] = { }, }, #mods -} -gems["Vaal Lightning Strike"] = { + #skill VaalLightningStrike #flags attack melee duration lightning vaal parts = { @@ -352,65 +317,58 @@ gems["Vaal Lightning Strike"] = { }, }, #mods -} -gems["Mirror Arrow"] = { + #skill MirrorArrow - unsupported = true, -} -gems["Phase Run"] = { +#flags attack projectile minion movement duration + minionList = { + "Clone", + }, +#baseMod skill("minionUseBowAndQuiver", true) +#mods + #skill NewPhaseRun #flags spell duration movement #mods -} -gems["Poacher's Mark"] = { + #skill PoachersMark #flags spell curse area duration #baseMod skill("debuff", true) #mods -} -gems["Projectile Weakness"] = { + #skill ProjectileWeakness #flags spell curse area duration #baseMod skill("debuff", true) #mods -} -gems["Puncture"] = { + #skill Puncture #flags attack melee projectile duration #baseMod mod("BleedChance", "BASE", 100) #mods -} -gems["Purity of Ice"] = { + #skill ColdResistAura #flags spell aura area cold #mods -} -gems["Rain of Arrows"] = { + #skill RainOfArrows #flags attack projectile area #mods -} -gems["Vaal Rain of Arrows"] = { + #skill VaalRainOfArrows #flags attack projectile area duration vaal #mods -} -gems["Reave"] = { + #skill Reave #flags attack melee area #mods -} -gems["Vaal Reave"] = { + #skill VaalReave #flags attack melee area vaal #mods -} -gems["Riposte"] = { + #skill Riposte #flags attack melee #mods -} -gems["Shrapnel Shot"] = { + #skill ShrapnelShot #flags attack projectile area lightning parts = { @@ -424,61 +382,53 @@ gems["Shrapnel Shot"] = { }, }, #mods -} -gems["Siege Ballista"] = { + #skill SiegeBallista #flags attack projectile totem duration #mods -} -gems["Smoke Mine"] = { + #skill SmokeMine #flags spell mine area duration movement #mods -} -gems["Spectral Throw"] = { + #skill ThrownWeapon #flags attack projectile #baseMod mod("PierceChance", "BASE", 100) #mods -} -gems["Vaal Spectral Throw"] = { + #skill VaalThrownWeapon #flags attack projectile vaal #mods -} -gems["Split Arrow"] = { + #skill SplitArrow #flags attack projectile #mods -} -gems["Summon Ice Golem"] = { + #skill SummonIceGolem #flags spell minion golem cold #baseMod mod("Misc", "LIST", { type = "Condition", var = "HaveColdGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }) + minionList = { + "SummonedIceGolem", + }, #mods -} -gems["Temporal Chains"] = { + #skill TemporalChains #flags spell curse area #baseMod skill("debuff", true) #mods -} -gems["Tornado Shot"] = { + #skill TornadoShot #flags attack projectile #mods -} -gems["Viper Strike"] = { + #skill ViperStrike #flags attack melee duration chaos #mods -} -gems["Whirling Blades"] = { + #skill WhirlingBlades #flags attack melee movement #mods -} -gems["Wild Strike"] = { + #skill WildStrike #flags attack melee projectile chaining area lightning cold fire parts = { @@ -532,4 +482,3 @@ gems["Wild Strike"] = { #baseMod mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 5 }) #baseMod mod("PhysicalDamageConvertToCold", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 6 }) #mods -} diff --git a/Export/Skills/act_int.lua b/Export/Skills/act_int.lua new file mode 100644 index 00000000..9528895d --- /dev/null +++ b/Export/Skills/act_int.lua @@ -0,0 +1,5227 @@ +-- Path of Building +-- +-- Active Intelligence skill gems +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["Arc"] = { + name = "Arc", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + chaining = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + chaining = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 10), --"base_chance_to_shock_%" = 10 + }, + qualityMods = { + mod("EnemyShockChance", "BASE", 0.5), --"base_chance_to_shock_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" + }, + levels = { + [1] = { 12, 9, 2, 35, 2, }, + [2] = { 15, 10, 2, 44, 2, }, + [3] = { 19, 11, 3, 58, 2, }, + [4] = { 23, 12, 4, 76, 3, }, + [5] = { 27, 13, 5, 97, 3, }, + [6] = { 31, 14, 6, 123, 3, }, + [7] = { 35, 16, 8, 154, 3, }, + [8] = { 38, 16, 10, 182, 4, }, + [9] = { 41, 17, 11, 214, 4, }, + [10] = { 44, 18, 13, 250, 4, }, + [11] = { 47, 19, 15, 292, 4, }, + [12] = { 50, 20, 18, 340, 5, }, + [13] = { 53, 21, 21, 395, 5, }, + [14] = { 56, 22, 24, 458, 5, }, + [15] = { 59, 23, 28, 529, 5, }, + [16] = { 62, 24, 32, 610, 6, }, + [17] = { 64, 24, 35, 671, 6, }, + [18] = { 66, 25, 39, 736, 6, }, + [19] = { 68, 25, 43, 808, 6, }, + [20] = { 70, 26, 47, 886, 7, }, + [21] = { 72, 26, 51, 971, 7, }, + [22] = { 74, 26, 56, 1064, 7, }, + [23] = { 76, 27, 61, 1164, 7, }, + [24] = { 78, 28, 67, 1274, 8, }, + [25] = { 80, 29, 73, 1393, 8, }, + [26] = { 82, 30, 80, 1523, 8, }, + [27] = { 84, 30, 88, 1663, 8, }, + [28] = { 86, 30, 96, 1816, 9, }, + [29] = { 88, 31, 104, 1983, 9, }, + [30] = { 90, 32, 114, 2163, 9, }, + }, +} +skills["VaalArcChain"] = { + name = "Vaal Arc", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + chaining = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.8), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 100), --"base_chance_to_shock_%" = 100 + mod("ChainCount", "BASE", 40), --"number_of_additional_projectiles_in_chain" = 40 + }, + qualityMods = { + mod("EnemyShockDuration", "INC", 1.5), --"shock_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 2, 35, }, + [2] = { 15, 2, 44, }, + [3] = { 19, 3, 59, }, + [4] = { 23, 4, 77, }, + [5] = { 27, 5, 99, }, + [6] = { 31, 7, 125, }, + [7] = { 35, 8, 158, }, + [8] = { 38, 10, 187, }, + [9] = { 41, 12, 220, }, + [10] = { 44, 14, 259, }, + [11] = { 47, 16, 303, }, + [12] = { 50, 19, 353, }, + [13] = { 53, 22, 411, }, + [14] = { 56, 25, 478, }, + [15] = { 59, 29, 554, }, + [16] = { 62, 34, 641, }, + [17] = { 64, 37, 706, }, + [18] = { 66, 41, 777, }, + [19] = { 68, 45, 854, }, + [20] = { 70, 49, 938, }, + [21] = { 72, 54, 1030, }, + [22] = { 74, 60, 1131, }, + [23] = { 76, 65, 1240, }, + [24] = { 78, 72, 1359, }, + [25] = { 80, 78, 1489, }, + [26] = { 82, 86, 1631, }, + [27] = { 84, 94, 1785, }, + [28] = { 86, 103, 1953, }, + [29] = { 88, 112, 2136, }, + [30] = { 90, 123, 2335, }, + }, +} +skills["ArcticBreath"] = { + name = "Arctic Breath", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + projectile = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [12] = true, [11] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"base_is_projectile" = 1 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 28, 11, 52, 78, 0.88, }, + [2] = { 31, 11, 64, 96, 0.94, }, + [3] = { 34, 12, 77, 116, 0.99, }, + [4] = { 37, 13, 93, 140, 1.05, }, + [5] = { 40, 14, 112, 168, 1.1, }, + [6] = { 42, 14, 126, 190, 1.16, }, + [7] = { 44, 15, 143, 214, 1.21, }, + [8] = { 46, 15, 160, 240, 1.27, }, + [9] = { 48, 16, 180, 270, 1.32, }, + [10] = { 50, 16, 202, 303, 1.35, }, + [11] = { 52, 16, 227, 340, 1.38, }, + [12] = { 54, 17, 254, 381, 1.4, }, + [13] = { 56, 17, 284, 426, 1.43, }, + [14] = { 58, 18, 317, 476, 1.46, }, + [15] = { 60, 18, 354, 532, 1.49, }, + [16] = { 62, 19, 395, 593, 1.51, }, + [17] = { 64, 19, 441, 661, 1.54, }, + [18] = { 66, 20, 491, 737, 1.57, }, + [19] = { 68, 20, 547, 820, 1.6, }, + [20] = { 70, 21, 608, 913, 1.65, }, + [21] = { 72, 21, 677, 1015, 1.71, }, + [22] = { 74, 22, 752, 1128, 1.76, }, + [23] = { 76, 22, 835, 1252, 1.82, }, + [24] = { 78, 23, 927, 1390, 1.87, }, + [25] = { 80, 23, 1028, 1542, 1.93, }, + [26] = { 82, 24, 1140, 1710, 1.98, }, + [27] = { 84, 24, 1264, 1896, 2.04, }, + [28] = { 86, 25, 1400, 2100, 2.09, }, + [29] = { 88, 25, 1550, 2326, 2.15, }, + [30] = { 90, 26, 1716, 2574, 2.2, }, + }, +} +skills["AssassinsMark"] = { + name = "Assassin's Mark", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("SelfCritMultiplier", "INC", 20, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_critical_strike_multiplier_-%" = -20 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"chance_to_grant_power_charge_on_death_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("SelfExtraCritChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"additional_chance_to_take_critical_strike_%" + [6] = mod("SelfLifeOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_granted_when_killed" + [7] = mod("SelfManaOnKill", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_granted_when_killed" + --[8] = "chance_to_grant_power_charge_on_death_%" + }, + levels = { + [1] = { 24, 24, 6, 0, 5, 16, 16, 21, }, + [2] = { 27, 26, 6.2, 4, 5, 16, 16, 21, }, + [3] = { 30, 27, 6.4, 8, 5, 17, 17, 22, }, + [4] = { 33, 29, 6.6, 12, 6, 17, 17, 22, }, + [5] = { 36, 30, 6.8, 16, 6, 18, 18, 23, }, + [6] = { 39, 32, 7, 20, 6, 18, 18, 23, }, + [7] = { 42, 34, 7.2, 24, 7, 19, 19, 24, }, + [8] = { 45, 35, 7.4, 28, 7, 19, 19, 24, }, + [9] = { 48, 37, 7.6, 32, 7, 20, 20, 25, }, + [10] = { 50, 38, 7.8, 36, 8, 20, 20, 25, }, + [11] = { 52, 39, 8, 40, 8, 21, 21, 26, }, + [12] = { 54, 40, 8.2, 44, 8, 21, 21, 26, }, + [13] = { 56, 42, 8.4, 48, 8, 22, 22, 27, }, + [14] = { 58, 43, 8.6, 52, 8, 22, 22, 27, }, + [15] = { 60, 44, 8.8, 56, 9, 23, 23, 28, }, + [16] = { 62, 45, 9, 60, 9, 23, 23, 28, }, + [17] = { 64, 46, 9.2, 64, 9, 24, 24, 29, }, + [18] = { 66, 47, 9.4, 68, 9, 24, 24, 29, }, + [19] = { 68, 48, 9.6, 72, 9, 25, 25, 30, }, + [20] = { 70, 50, 9.8, 76, 9, 25, 25, 30, }, + [21] = { 72, 51, 10, 80, 10, 26, 26, 31, }, + [22] = { 74, 52, 10.2, 84, 10, 26, 26, 31, }, + [23] = { 76, 53, 10.4, 88, 10, 27, 27, 32, }, + [24] = { 78, 54, 10.6, 92, 10, 27, 27, 32, }, + [25] = { 80, 56, 10.8, 96, 10, 28, 28, 33, }, + [26] = { 82, 57, 11, 100, 11, 28, 28, 33, }, + [27] = { 84, 58, 11.2, 104, 11, 29, 29, 34, }, + [28] = { 86, 59, 11.4, 108, 11, 29, 29, 34, }, + [29] = { 88, 60, 11.6, 112, 11, 30, 30, 35, }, + [30] = { 90, 61, 11.8, 116, 11, 30, 30, 35, }, + }, +} +skills["BallLightning"] = { + name = "Ball Lightning", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [11] = true, [18] = true, [17] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.2), + skill("critChance", 5), + --"active_skill_index" = 0 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 28, 14, 2, 32, }, + [2] = { 31, 15, 2, 38, }, + [3] = { 34, 16, 2, 45, }, + [4] = { 37, 17, 3, 53, }, + [5] = { 40, 18, 3, 62, }, + [6] = { 42, 19, 4, 69, }, + [7] = { 44, 20, 4, 76, }, + [8] = { 46, 21, 4, 84, }, + [9] = { 48, 22, 5, 93, }, + [10] = { 50, 23, 5, 103, }, + [11] = { 52, 24, 6, 113, }, + [12] = { 54, 25, 7, 124, }, + [13] = { 56, 25, 7, 137, }, + [14] = { 58, 25, 8, 150, }, + [15] = { 60, 26, 9, 165, }, + [16] = { 62, 26, 10, 181, }, + [17] = { 64, 26, 10, 199, }, + [18] = { 66, 26, 11, 217, }, + [19] = { 68, 27, 13, 238, }, + [20] = { 70, 27, 14, 260, }, + [21] = { 72, 28, 15, 285, }, + [22] = { 74, 28, 16, 311, }, + [23] = { 76, 29, 18, 340, }, + [24] = { 78, 29, 20, 371, }, + [25] = { 80, 30, 21, 404, }, + [26] = { 82, 30, 23, 441, }, + [27] = { 84, 30, 25, 480, }, + [28] = { 86, 30, 28, 523, }, + [29] = { 88, 31, 30, 570, }, + [30] = { 90, 31, 33, 620, }, + }, +} +skills["Blight"] = { + name = "Blight", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + chaos = true, + area = true, + channelling = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + area = true, + chaos = true, + }, + skillTypes = { [2] = true, [50] = true, [11] = true, [18] = true, [58] = true, [12] = true, [40] = true, [59] = true, [52] = true, }, + baseMods = { + skill("castTime", 0.3), + skill("duration", 2.5), --"base_skill_effect_duration" = 2500 + --"base_secondary_skill_effect_duration" = 800 + mod("MovementSpeed", "INC", -80, 0, 0, nil), --"base_movement_velocity_+%" = -80 + --"display_max_blight_stacks" = 20 + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + --[4] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 2, 1.7333333333333, 0, }, + [2] = { 2, 2, 1.9666666666667, 0, }, + [3] = { 4, 2, 2.4666666666667, 0, }, + [4] = { 7, 2, 3.3666666666667, 0, }, + [5] = { 11, 2, 4.8333333333333, 1, }, + [6] = { 16, 2, 7.2166666666667, 1, }, + [7] = { 20, 2, 9.6833333333333, 1, }, + [8] = { 24, 2, 12.75, 1, }, + [9] = { 28, 2, 16.566666666667, 1, }, + [10] = { 32, 2, 21.266666666667, 2, }, + [11] = { 36, 2, 27.05, 2, }, + [12] = { 40, 3, 34.133333333333, 2, }, + [13] = { 44, 3, 42.816666666667, 2, }, + [14] = { 48, 3, 53.4, 2, }, + [15] = { 52, 3, 66.283333333333, 3, }, + [16] = { 56, 3, 81.916666666667, 3, }, + [17] = { 60, 3, 100.88333333333, 3, }, + [18] = { 64, 4, 123.83333333333, 3, }, + [19] = { 67, 4, 144.11666666667, 3, }, + [20] = { 70, 4, 167.48333333333, 4, }, + [21] = { 72, 4, 184.96666666667, 4, }, + [22] = { 74, 4, 204.16666666667, 4, }, + [23] = { 76, 4, 225.23333333333, 4, }, + [24] = { 78, 5, 248.33333333333, 4, }, + [25] = { 80, 5, 273.66666666667, 5, }, + [26] = { 82, 5, 301.41666666667, 5, }, + [27] = { 84, 5, 331.83333333333, 5, }, + [28] = { 86, 5, 365.16666666667, 5, }, + [29] = { 88, 5, 401.66666666667, 5, }, + [30] = { 90, 5, 441.61666666667, 6, }, + }, +} +skills["BoneOffering"] = { + name = "Bone Offering", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"offering_skill_effect_duration_per_corpse" = 500 + --"base_deal_no_damage" = ? + skill("offering", true), + }, + qualityMods = { + mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("BlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"monster_base_block_%" + [4] = mod("SpellBlockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_spell_block_%" + --[5] = "minion_recover_X_life_on_block" + }, + levels = { + [1] = { 12, 16, 25, 25, 11, }, + [2] = { 15, 17, 26, 25, 14, }, + [3] = { 19, 18, 26, 26, 20, }, + [4] = { 23, 19, 27, 26, 27, }, + [5] = { 27, 20, 27, 27, 38, }, + [6] = { 31, 21, 28, 27, 50, }, + [7] = { 35, 22, 28, 28, 66, }, + [8] = { 38, 23, 29, 28, 81, }, + [9] = { 41, 24, 29, 29, 99, }, + [10] = { 44, 25, 30, 29, 120, }, + [11] = { 47, 26, 30, 30, 146, }, + [12] = { 50, 27, 31, 30, 176, }, + [13] = { 53, 28, 31, 31, 212, }, + [14] = { 56, 29, 32, 31, 255, }, + [15] = { 59, 29, 32, 32, 306, }, + [16] = { 62, 30, 33, 32, 366, }, + [17] = { 64, 30, 33, 33, 414, }, + [18] = { 66, 31, 34, 33, 468, }, + [19] = { 68, 32, 34, 34, 528, }, + [20] = { 70, 33, 35, 34, 594, }, + [21] = { 72, 34, 35, 35, 644, }, + [22] = { 74, 34, 36, 35, 693, }, + [23] = { 76, 35, 36, 36, 743, }, + [24] = { 78, 36, 37, 36, 792, }, + [25] = { 80, 37, 37, 37, 842, }, + [26] = { 82, 38, 38, 37, 891, }, + [27] = { 84, 38, 38, 38, 941, }, + [28] = { 86, 39, 39, 38, 990, }, + [29] = { 88, 40, 39, 39, 1040, }, + [30] = { 90, 41, 40, 39, 1089, }, + }, +} +skills["Clarity"] = { + name = "Clarity", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_mana_regeneration_rate_per_minute" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 10, 34, 2.9333333333333, 0, }, + [2] = { 13, 48, 4.0333333333333, 3, }, + [3] = { 17, 61, 5.0833333333333, 6, }, + [4] = { 21, 76, 6.0833333333333, 9, }, + [5] = { 25, 89, 7.0166666666667, 12, }, + [6] = { 29, 102, 7.9166666666667, 15, }, + [7] = { 33, 115, 8.75, 18, }, + [8] = { 36, 129, 9.55, 21, }, + [9] = { 39, 141, 10.316666666667, 23, }, + [10] = { 42, 154, 11.05, 25, }, + [11] = { 45, 166, 11.733333333333, 27, }, + [12] = { 48, 178, 12.4, 29, }, + [13] = { 51, 190, 13.033333333333, 31, }, + [14] = { 54, 203, 13.65, 33, }, + [15] = { 57, 214, 14.25, 35, }, + [16] = { 60, 227, 14.85, 36, }, + [17] = { 63, 239, 15.433333333333, 37, }, + [18] = { 66, 251, 16.016666666667, 38, }, + [19] = { 68, 265, 16.6, 39, }, + [20] = { 70, 279, 17.183333333333, 40, }, + [21] = { 72, 293, 17.766666666667, 41, }, + [22] = { 74, 303, 18.366666666667, 42, }, + [23] = { 76, 313, 18.966666666667, 43, }, + [24] = { 78, 323, 19.566666666667, 44, }, + [25] = { 80, 333, 20.166666666667, 45, }, + [26] = { 82, 343, 20.766666666667, 46, }, + [27] = { 84, 353, 21.366666666667, 47, }, + [28] = { 86, 363, 21.983333333333, 48, }, + [29] = { 88, 373, 22.6, 49, }, + [30] = { 90, 383, 23.216666666667, 50, }, + }, +} +skills["VaalClarity"] = { + name = "Vaal Clarity", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + mod("ManaCost", "MORE", -100, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"no_mana_cost" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 10, 0, 8, }, + [2] = { 13, 3, 8.1, }, + [3] = { 17, 6, 8.2, }, + [4] = { 21, 9, 8.3, }, + [5] = { 25, 12, 8.4, }, + [6] = { 29, 15, 8.5, }, + [7] = { 33, 18, 8.6, }, + [8] = { 36, 21, 8.7, }, + [9] = { 39, 23, 8.8, }, + [10] = { 42, 25, 8.9, }, + [11] = { 45, 27, 9, }, + [12] = { 48, 29, 9.1, }, + [13] = { 51, 31, 9.2, }, + [14] = { 54, 33, 9.3, }, + [15] = { 57, 35, 9.4, }, + [16] = { 60, 36, 9.5, }, + [17] = { 63, 37, 9.6, }, + [18] = { 66, 38, 9.7, }, + [19] = { 68, 39, 9.8, }, + [20] = { 70, 40, 9.9, }, + [21] = { 72, 41, 10, }, + [22] = { 74, 42, 10.1, }, + [23] = { 76, 43, 10.2, }, + [24] = { 78, 44, 10.3, }, + [25] = { 80, 45, 10.4, }, + [26] = { 82, 46, 10.5, }, + [27] = { 84, 47, 10.6, }, + [28] = { 86, 48, 10.7, }, + [29] = { 88, 49, 10.8, }, + [30] = { 90, 50, 10.9, }, + }, +} +skills["ColdSnap"] = { + name = "Cold Snap", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 1.2), + skill("critChance", 5), + skill("cooldown", 4), + mod("EnemyFreezeChance", "BASE", 30), --"base_chance_to_freeze_%" = 30 + mod("EnemyFreezeDuration", "INC", 30), --"freeze_duration_+%" = 30 + mod("EnemyChillDuration", "INC", 110), --"chill_duration_+%" = 110 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 4, 11, 9, 13, 0, }, + [2] = { 6, 12, 11, 16, 0, }, + [3] = { 9, 13, 14, 21, 0, }, + [4] = { 12, 14, 18, 27, 1, }, + [5] = { 16, 15, 25, 37, 1, }, + [6] = { 20, 16, 32, 49, 1, }, + [7] = { 24, 17, 42, 63, 1, }, + [8] = { 28, 18, 54, 81, 2, }, + [9] = { 32, 19, 68, 102, 2, }, + [10] = { 36, 20, 85, 128, 2, }, + [11] = { 40, 21, 106, 159, 2, }, + [12] = { 44, 22, 131, 196, 3, }, + [13] = { 48, 23, 160, 240, 3, }, + [14] = { 52, 24, 196, 294, 3, }, + [15] = { 55, 25, 227, 341, 3, }, + [16] = { 58, 26, 263, 394, 4, }, + [17] = { 61, 26, 303, 455, 4, }, + [18] = { 64, 27, 350, 524, 4, }, + [19] = { 67, 27, 402, 603, 4, }, + [20] = { 70, 28, 462, 693, 5, }, + [21] = { 72, 28, 506, 759, 5, }, + [22] = { 74, 29, 554, 832, 5, }, + [23] = { 76, 29, 607, 910, 5, }, + [24] = { 78, 30, 664, 996, 6, }, + [25] = { 80, 30, 726, 1089, 6, }, + [26] = { 82, 30, 794, 1191, 6, }, + [27] = { 84, 30, 867, 1301, 6, }, + [28] = { 86, 31, 947, 1420, 7, }, + [29] = { 88, 31, 1033, 1550, 7, }, + [30] = { 90, 32, 1127, 1691, 7, }, + }, +} +skills["VaalColdSnap"] = { + name = "Vaal Cold Snap", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + cold = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [12] = true, [43] = true, [34] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 1.4), + skill("critChance", 5), + skill("duration", 10), --"base_skill_effect_duration" = 10000 + mod("EnemyFreezeChance", "BASE", 100), --"base_chance_to_freeze_%" = 100 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 11, 17, }, + [2] = { 6, 14, 21, }, + [3] = { 9, 18, 28, }, + [4] = { 12, 24, 35, }, + [5] = { 16, 32, 48, }, + [6] = { 20, 42, 63, }, + [7] = { 24, 55, 82, }, + [8] = { 28, 70, 105, }, + [9] = { 32, 88, 132, }, + [10] = { 36, 111, 166, }, + [11] = { 40, 137, 206, }, + [12] = { 44, 170, 255, }, + [13] = { 48, 208, 313, }, + [14] = { 52, 255, 382, }, + [15] = { 55, 295, 443, }, + [16] = { 58, 342, 512, }, + [17] = { 61, 394, 591, }, + [18] = { 64, 454, 682, }, + [19] = { 67, 523, 784, }, + [20] = { 70, 600, 901, }, + [21] = { 72, 658, 987, }, + [22] = { 74, 721, 1081, }, + [23] = { 76, 789, 1184, }, + [24] = { 78, 863, 1295, }, + [25] = { 80, 944, 1416, }, + [26] = { 82, 1032, 1548, }, + [27] = { 84, 1127, 1691, }, + [28] = { 86, 1231, 1846, }, + [29] = { 88, 1343, 2015, }, + [30] = { 90, 1466, 2199, }, + }, +} +skills["Conductivity"] = { + name = "Conductivity", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("SelfShockDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_shock_duration_-%" = -1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_lightning_damage_resistance_%" + [6] = mod("SelfShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -25, 10, }, + [2] = { 27, 26, 9.1, 4, -26, 10, }, + [3] = { 30, 27, 9.2, 8, -27, 10, }, + [4] = { 33, 29, 9.3, 12, -28, 10, }, + [5] = { 36, 30, 9.4, 16, -29, 10, }, + [6] = { 39, 32, 9.5, 20, -30, 11, }, + [7] = { 42, 34, 9.6, 24, -31, 11, }, + [8] = { 45, 35, 9.7, 28, -32, 11, }, + [9] = { 48, 37, 9.8, 32, -33, 11, }, + [10] = { 50, 38, 9.9, 36, -34, 11, }, + [11] = { 52, 39, 10, 40, -35, 12, }, + [12] = { 54, 40, 10.1, 44, -36, 12, }, + [13] = { 56, 42, 10.2, 48, -37, 12, }, + [14] = { 58, 43, 10.3, 52, -38, 12, }, + [15] = { 60, 44, 10.4, 56, -39, 12, }, + [16] = { 62, 45, 10.5, 60, -40, 13, }, + [17] = { 64, 46, 10.6, 64, -41, 13, }, + [18] = { 66, 47, 10.7, 68, -42, 13, }, + [19] = { 68, 48, 10.8, 72, -43, 13, }, + [20] = { 70, 50, 10.9, 76, -44, 14, }, + [21] = { 72, 51, 11, 80, -45, 14, }, + [22] = { 74, 52, 11.1, 84, -46, 14, }, + [23] = { 76, 53, 11.2, 88, -47, 15, }, + [24] = { 78, 54, 11.3, 92, -48, 15, }, + [25] = { 80, 56, 11.4, 96, -49, 15, }, + [26] = { 82, 57, 11.5, 100, -50, 16, }, + [27] = { 84, 58, 11.6, 104, -51, 16, }, + [28] = { 86, 59, 11.7, 108, -52, 16, }, + [29] = { 88, 60, 11.8, 112, -53, 17, }, + [30] = { 90, 61, 11.9, 116, -54, 17, }, + }, +} +skills["Contagion"] = { + name = "Contagion", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + chaos = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [40] = true, [50] = true, [26] = true, [36] = true, [19] = true, [52] = true, [59] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"is_area_damage" = ? + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + skill("debuff", true), + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 4, 11, 3.1666666666667, }, + [2] = { 6, 12, 3.9, }, + [3] = { 9, 13, 5.15, }, + [4] = { 12, 14, 6.65, }, + [5] = { 16, 15, 9.0666666666667, }, + [6] = { 20, 16, 12.066666666667, }, + [7] = { 24, 17, 15.766666666667, }, + [8] = { 28, 18, 20.3, }, + [9] = { 32, 19, 25.866666666667, }, + [10] = { 36, 20, 32.65, }, + [11] = { 40, 21, 40.9, }, + [12] = { 44, 22, 50.9, }, + [13] = { 48, 23, 63, }, + [14] = { 52, 24, 77.583333333333, }, + [15] = { 55, 25, 90.466666666667, }, + [16] = { 58, 26, 105.25, }, + [17] = { 61, 26, 122.2, }, + [18] = { 64, 27, 141.65, }, + [19] = { 67, 27, 163.9, }, + [20] = { 70, 28, 189.36666666667, }, + [21] = { 72, 28, 208.35, }, + [22] = { 74, 29, 229.08333333333, }, + [23] = { 76, 29, 251.75, }, + [24] = { 78, 30, 276.5, }, + [25] = { 80, 30, 303.51666666667, }, + [26] = { 82, 30, 333.03333333333, }, + [27] = { 84, 30, 365.21666666667, }, + [28] = { 86, 31, 400.35, }, + [29] = { 88, 31, 438.66666666667, }, + [30] = { 90, 32, 480.45, }, + }, +} +skills["ConversionTrap"] = { + name = "Conversion Trap", + gemTags = { + trap = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + unsupported = true, + color = 3, + baseFlags = { + }, + skillTypes = { [2] = true, [12] = true, [19] = true, [37] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 8), + --"is_trap" = 1 + --"base_trap_duration" = 16000 + --"base_skill_is_trapped" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 4, 16, 5.3, }, + [2] = { 6, 17, 5.5, }, + [3] = { 9, 18, 5.8, }, + [4] = { 12, 19, 6, }, + [5] = { 16, 20, 6.3, }, + [6] = { 20, 21, 6.5, }, + [7] = { 24, 22, 6.8, }, + [8] = { 28, 23, 7, }, + [9] = { 32, 25, 7.3, }, + [10] = { 36, 27, 7.5, }, + [11] = { 40, 29, 7.8, }, + [12] = { 44, 30, 8, }, + [13] = { 48, 31, 8.3, }, + [14] = { 52, 32, 8.5, }, + [15] = { 55, 33, 8.8, }, + [16] = { 58, 34, 9, }, + [17] = { 61, 34, 9.3, }, + [18] = { 64, 35, 9.5, }, + [19] = { 67, 36, 9.8, }, + [20] = { 70, 37, 10, }, + [21] = { 72, 38, 10.3, }, + [22] = { 74, 38, 10.5, }, + [23] = { 76, 39, 10.8, }, + [24] = { 78, 40, 11, }, + [25] = { 80, 41, 11.3, }, + [26] = { 82, 42, 11.5, }, + [27] = { 84, 42, 11.8, }, + [28] = { 86, 43, 12, }, + [29] = { 88, 44, 12.3, }, + [30] = { 90, 45, 12.5, }, + }, +} +skills["Convocation"] = { + name = "Convocation", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + unsupported = true, + color = 3, + baseFlags = { + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("cooldown", 8), + skill("duration", 2), --"base_skill_effect_duration" = 2000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" + }, + levels = { + [1] = { 24, 9, 19.25, }, + [2] = { 27, 9, 22.983333333333, }, + [3] = { 30, 9, 27.383333333333, }, + [4] = { 33, 9, 32.2, }, + [5] = { 36, 9, 37.6, }, + [6] = { 39, 9, 43.583333333333, }, + [7] = { 42, 10, 50.4, }, + [8] = { 45, 10, 57.816666666667, }, + [9] = { 48, 10, 66.033333333333, }, + [10] = { 50, 10, 70.85, }, + [11] = { 52, 10, 75.816666666667, }, + [12] = { 54, 10, 80.833333333333, }, + [13] = { 56, 11, 85.85, }, + [14] = { 58, 11, 90.883333333333, }, + [15] = { 60, 11, 95.833333333333, }, + [16] = { 62, 11, 100.55, }, + [17] = { 64, 12, 105.1, }, + [18] = { 66, 12, 109.26666666667, }, + [19] = { 68, 12, 112.95, }, + [20] = { 70, 13, 115.98333333333, }, + [21] = { 72, 13, 128.71666666667, }, + [22] = { 74, 13, 142.83333333333, }, + [23] = { 76, 14, 158.31666666667, }, + [24] = { 78, 14, 175.41666666667, }, + [25] = { 80, 14, 194.28333333333, }, + [26] = { 82, 14, 215.01666666667, }, + [27] = { 84, 14, 237.85, }, + [28] = { 86, 14, 262.93333333333, }, + [29] = { 88, 15, 290.61666666667, }, + [30] = { 90, 15, 321, }, + }, +} +skills["Discharge"] = { + name = "Discharge", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + cold = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + cold = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [36] = true, [45] = true, [33] = true, [34] = true, [35] = true, [60] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 1.5), + skill("critChance", 7), + --"skill_override_pvp_scaling_time_ms" = 1400 + mod("Damage", "MORE", -35, ModFlag.Spell, 0, { type = "Condition", var = "SkillIsTriggered" }), --"triggered_discharge_damage_+%_final" = -35 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_minimum_base_lightning_damage_per_power_charge" + [4] = skill("LightningMax", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_maximum_base_lightning_damage_per_power_charge" + [5] = skill("FireMin", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_minimum_base_fire_damage_per_endurance_charge" + [6] = skill("FireMax", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_maximum_base_fire_damage_per_endurance_charge" + [7] = skill("ColdMin", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_minimum_base_cold_damage_per_frenzy_charge" + [8] = skill("ColdMax", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_maximum_base_cold_damage_per_frenzy_charge" + }, + levels = { + [1] = { 28, 24, 4, 77, 29, 43, 24, 36, }, + [2] = { 31, 26, 5, 92, 34, 51, 28, 42, }, + [3] = { 34, 27, 6, 108, 40, 60, 33, 49, }, + [4] = { 37, 29, 7, 126, 47, 71, 39, 58, }, + [5] = { 40, 31, 8, 147, 55, 83, 45, 68, }, + [6] = { 42, 32, 9, 163, 61, 91, 50, 75, }, + [7] = { 44, 33, 9, 180, 67, 101, 55, 82, }, + [8] = { 46, 34, 10, 198, 74, 111, 61, 91, }, + [9] = { 48, 35, 11, 218, 82, 122, 67, 100, }, + [10] = { 50, 36, 13, 240, 90, 135, 73, 110, }, + [11] = { 52, 37, 14, 263, 99, 148, 81, 121, }, + [12] = { 54, 38, 15, 289, 108, 162, 88, 133, }, + [13] = { 56, 39, 17, 317, 119, 178, 97, 146, }, + [14] = { 58, 40, 18, 347, 130, 195, 106, 159, }, + [15] = { 60, 41, 20, 380, 142, 213, 116, 174, }, + [16] = { 62, 42, 22, 415, 155, 233, 127, 191, }, + [17] = { 64, 44, 24, 454, 170, 255, 139, 208, }, + [18] = { 66, 45, 26, 495, 185, 278, 152, 227, }, + [19] = { 68, 46, 28, 540, 202, 303, 165, 248, }, + [20] = { 70, 47, 31, 589, 220, 331, 180, 271, }, + [21] = { 72, 48, 34, 642, 240, 360, 197, 295, }, + [22] = { 74, 49, 37, 699, 262, 392, 214, 321, }, + [23] = { 76, 50, 40, 761, 285, 427, 233, 349, }, + [24] = { 78, 51, 44, 828, 310, 465, 253, 380, }, + [25] = { 80, 52, 47, 900, 337, 505, 276, 413, }, + [26] = { 82, 53, 51, 978, 366, 549, 299, 449, }, + [27] = { 84, 54, 56, 1062, 397, 596, 325, 488, }, + [28] = { 86, 55, 61, 1153, 431, 647, 353, 529, }, + [29] = { 88, 57, 66, 1251, 468, 702, 383, 575, }, + [30] = { 90, 58, 71, 1357, 508, 762, 416, 623, }, + }, +} +skills["Discipline"] = { + name = "Discipline", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("EnergyShield", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 60, 0, }, + [2] = { 27, 70, 3, }, + [3] = { 30, 78, 6, }, + [4] = { 33, 89, 9, }, + [5] = { 36, 100, 12, }, + [6] = { 39, 111, 15, }, + [7] = { 42, 125, 18, }, + [8] = { 45, 139, 21, }, + [9] = { 48, 154, 23, }, + [10] = { 50, 165, 25, }, + [11] = { 52, 173, 27, }, + [12] = { 54, 187, 29, }, + [13] = { 56, 201, 31, }, + [14] = { 58, 213, 33, }, + [15] = { 60, 227, 35, }, + [16] = { 62, 239, 36, }, + [17] = { 64, 253, 37, }, + [18] = { 66, 269, 38, }, + [19] = { 68, 281, 39, }, + [20] = { 70, 303, 40, }, + [21] = { 72, 315, 41, }, + [22] = { 74, 330, 42, }, + [23] = { 76, 340, 43, }, + [24] = { 78, 357, 44, }, + [25] = { 80, 374, 45, }, + [26] = { 82, 384, 46, }, + [27] = { 84, 406, 47, }, + [28] = { 86, 425, 48, }, + [29] = { 88, 450, 49, }, + [30] = { 90, 455, 50, }, + }, +} +skills["VaalDiscipline"] = { + name = "Vaal Discipline", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [27] = true, [12] = true, [43] = true, [44] = true, }, + baseMods = { + skill("castTime", 0.6), + mod("EnergyShield", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_energy_shield" = 0 + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"energy_shield_recharge_not_delayed_by_damage" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 0, }, + [2] = { 27, 3, }, + [3] = { 30, 6, }, + [4] = { 33, 9, }, + [5] = { 36, 12, }, + [6] = { 39, 15, }, + [7] = { 42, 18, }, + [8] = { 45, 21, }, + [9] = { 48, 23, }, + [10] = { 50, 25, }, + [11] = { 52, 27, }, + [12] = { 54, 29, }, + [13] = { 56, 31, }, + [14] = { 58, 33, }, + [15] = { 60, 35, }, + [16] = { 62, 36, }, + [17] = { 64, 37, }, + [18] = { 66, 38, }, + [19] = { 68, 39, }, + [20] = { 70, 40, }, + [21] = { 72, 41, }, + [22] = { 74, 42, }, + [23] = { 76, 43, }, + [24] = { 78, 44, }, + [25] = { 80, 45, }, + [26] = { 82, 46, }, + [27] = { 84, 47, }, + [28] = { 86, 48, }, + [29] = { 88, 49, }, + [30] = { 90, 50, }, + }, +} +skills["ElementalWeakness"] = { + name = "Elemental Weakness", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("ElementalResist", "BASE", -0.25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" = -0.25 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -20, }, + [2] = { 27, 26, 9.1, 4, -21, }, + [3] = { 30, 27, 9.2, 8, -22, }, + [4] = { 33, 29, 9.3, 12, -23, }, + [5] = { 36, 30, 9.4, 16, -24, }, + [6] = { 39, 32, 9.5, 20, -25, }, + [7] = { 42, 34, 9.6, 24, -26, }, + [8] = { 45, 35, 9.7, 28, -27, }, + [9] = { 48, 37, 9.8, 32, -28, }, + [10] = { 50, 38, 9.9, 36, -29, }, + [11] = { 52, 39, 10, 40, -30, }, + [12] = { 54, 40, 10.1, 44, -31, }, + [13] = { 56, 42, 10.2, 48, -32, }, + [14] = { 58, 43, 10.3, 52, -33, }, + [15] = { 60, 44, 10.4, 56, -34, }, + [16] = { 62, 45, 10.5, 60, -35, }, + [17] = { 64, 46, 10.6, 64, -36, }, + [18] = { 66, 47, 10.7, 68, -37, }, + [19] = { 68, 48, 10.8, 72, -38, }, + [20] = { 70, 50, 10.9, 76, -39, }, + [21] = { 72, 51, 11, 80, -40, }, + [22] = { 74, 52, 11.1, 84, -41, }, + [23] = { 76, 53, 11.2, 88, -42, }, + [24] = { 78, 54, 11.3, 92, -43, }, + [25] = { 80, 56, 11.4, 96, -44, }, + [26] = { 82, 57, 11.5, 100, -45, }, + [27] = { 84, 58, 11.6, 104, -46, }, + [28] = { 86, 59, 11.7, 108, -47, }, + [29] = { 88, 60, 11.8, 112, -48, }, + [30] = { 90, 61, 11.9, 116, -49, }, + }, +} +skills["Enfeeble"] = { + name = "Enfeeble", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("CritChance", "INC", -25, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -25 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("Accuracy", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -0.5 + mod("CritChance", "INC", -0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("Accuracy", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" + [6] = mod("Damage", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" + [7] = mod("CritMultiplier", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" + }, + levels = { + [1] = { 24, 24, 9, 0, -18, -21, -21, }, + [2] = { 27, 26, 9.1, 4, -19, -21, -21, }, + [3] = { 30, 27, 9.2, 8, -20, -22, -22, }, + [4] = { 33, 29, 9.3, 12, -21, -22, -22, }, + [5] = { 36, 30, 9.4, 16, -22, -23, -23, }, + [6] = { 39, 32, 9.5, 20, -23, -23, -23, }, + [7] = { 42, 34, 9.6, 24, -24, -24, -24, }, + [8] = { 45, 35, 9.7, 28, -25, -24, -24, }, + [9] = { 48, 37, 9.8, 32, -26, -25, -25, }, + [10] = { 50, 38, 9.9, 36, -27, -25, -25, }, + [11] = { 52, 39, 10, 40, -28, -26, -26, }, + [12] = { 54, 40, 10.1, 44, -29, -26, -26, }, + [13] = { 56, 42, 10.2, 48, -30, -27, -27, }, + [14] = { 58, 43, 10.3, 52, -31, -27, -27, }, + [15] = { 60, 44, 10.4, 56, -32, -28, -28, }, + [16] = { 62, 45, 10.5, 60, -33, -28, -28, }, + [17] = { 64, 46, 10.6, 64, -34, -29, -29, }, + [18] = { 66, 47, 10.7, 68, -35, -29, -29, }, + [19] = { 68, 48, 10.8, 72, -36, -30, -30, }, + [20] = { 70, 50, 10.9, 76, -37, -30, -30, }, + [21] = { 72, 51, 11, 80, -38, -31, -31, }, + [22] = { 74, 52, 11.1, 84, -39, -31, -31, }, + [23] = { 76, 53, 11.2, 88, -40, -32, -32, }, + [24] = { 78, 54, 11.3, 92, -41, -32, -32, }, + [25] = { 80, 56, 11.4, 96, -42, -33, -33, }, + [26] = { 82, 57, 11.5, 100, -43, -33, -33, }, + [27] = { 84, 58, 11.6, 104, -44, -34, -34, }, + [28] = { 86, 59, 11.7, 108, -45, -34, -34, }, + [29] = { 88, 60, 11.8, 112, -46, -35, -35, }, + [30] = { 90, 61, 11.9, 116, -47, -35, -35, }, + }, +} +skills["EssenceDrain"] = { + name = "Essence Drain", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + chaos = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [3] = true, [12] = true, [18] = true, [26] = true, [40] = true, [50] = true, [10] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"siphon_life_leech_from_damage_permyriad" = 50 + skill("duration", 3.8), --"base_skill_effect_duration" = 3800 + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + --"base_is_projectile" = ? + skill("debuff", true), + skill("showAverage", true), + }, + qualityMods = { + mod("ChaosDamage", "INC", 1), --"chaos_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + [4] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [5] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + }, + levels = { + [1] = { 12, 9, 21.483333333333, 6, 9, }, + [2] = { 15, 10, 27.566666666667, 8, 12, }, + [3] = { 19, 11, 37.6, 11, 16, }, + [4] = { 23, 12, 50.3, 14, 22, }, + [5] = { 27, 13, 66.266666666667, 19, 29, }, + [6] = { 31, 14, 86.283333333333, 25, 37, }, + [7] = { 35, 16, 111.26666666667, 32, 48, }, + [8] = { 38, 16, 133.93333333333, 39, 58, }, + [9] = { 41, 17, 160.58333333333, 46, 69, }, + [10] = { 44, 18, 191.85, 55, 83, }, + [11] = { 47, 19, 228.5, 66, 99, }, + [12] = { 50, 20, 271.4, 78, 117, }, + [13] = { 53, 21, 321.53333333333, 93, 139, }, + [14] = { 56, 22, 380.05, 109, 164, }, + [15] = { 59, 23, 448.3, 129, 194, }, + [16] = { 62, 24, 527.78333333333, 152, 228, }, + [17] = { 64, 24, 587.88333333333, 169, 254, }, + [18] = { 66, 25, 654.35, 188, 283, }, + [19] = { 68, 26, 727.81666666667, 210, 314, }, + [20] = { 70, 27, 809, 233, 349, }, + [21] = { 72, 28, 898.68333333333, 259, 388, }, + [22] = { 74, 29, 997.7, 287, 431, }, + [23] = { 76, 29, 1107, 319, 478, }, + [24] = { 78, 30, 1227.6, 354, 530, }, + [25] = { 80, 30, 1360.6333333333, 392, 588, }, + [26] = { 82, 31, 1507.3333333333, 434, 651, }, + [27] = { 84, 32, 1669.0666666667, 481, 721, }, + [28] = { 86, 33, 1847.3, 532, 798, }, + [29] = { 88, 33, 2043.6833333333, 589, 883, }, + [30] = { 90, 34, 2260, 651, 976, }, + }, +} +skills["FireNovaMine"] = { + name = "Fire Nova Mine", + gemTags = { + area = true, + mine = true, + intelligence = true, + active_skill = true, + spell = true, + fire = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + mine = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [36] = true, [11] = true, [33] = true, [26] = true, [41] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.4), + skill("damageEffectiveness", 0.3), + skill("critChance", 5), + --"base_mine_duration" = 16000 + skill("repeatCount", 3), --"base_spell_repeat_count" = 3 + --"base_skill_is_mined" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_remote_mine" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[5] = "fire_nova_damage_+%_per_repeat_final" + }, + levels = { + [1] = { 12, 12, 6, 9, 20, }, + [2] = { 15, 13, 7, 11, 20, }, + [3] = { 19, 15, 10, 14, 21, }, + [4] = { 23, 17, 12, 18, 21, }, + [5] = { 27, 18, 16, 23, 22, }, + [6] = { 31, 20, 20, 29, 22, }, + [7] = { 35, 22, 24, 36, 23, }, + [8] = { 38, 23, 28, 43, 23, }, + [9] = { 41, 24, 33, 50, 24, }, + [10] = { 44, 25, 39, 58, 24, }, + [11] = { 47, 27, 45, 67, 25, }, + [12] = { 50, 28, 52, 77, 25, }, + [13] = { 53, 29, 60, 89, 26, }, + [14] = { 56, 31, 68, 103, 26, }, + [15] = { 59, 32, 79, 118, 27, }, + [16] = { 62, 33, 90, 135, 27, }, + [17] = { 64, 34, 98, 148, 28, }, + [18] = { 66, 35, 107, 161, 28, }, + [19] = { 68, 36, 117, 176, 29, }, + [20] = { 70, 36, 128, 192, 29, }, + [21] = { 72, 37, 140, 210, 30, }, + [22] = { 74, 38, 152, 228, 30, }, + [23] = { 76, 39, 166, 249, 31, }, + [24] = { 78, 40, 181, 271, 31, }, + [25] = { 80, 41, 197, 295, 32, }, + [26] = { 82, 41, 214, 321, 32, }, + [27] = { 84, 42, 232, 349, 33, }, + [28] = { 86, 43, 253, 379, 33, }, + [29] = { 88, 44, 274, 412, 34, }, + [30] = { 90, 45, 298, 447, 34, }, + }, +} +skills["Fireball"] = { + name = "Fireball", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + parts = { + { + name = "Projectile", + area = false, + }, + { + name = "Explosion", + area = true, + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 0.5), --"base_chance_to_ignite_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = mod("EnemyIgniteChance", "BASE", nil), --"base_chance_to_ignite_%" + --[6] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 6, 7, 10, 20, 0, }, + [2] = { 2, 6, 8, 11, 21, 0, }, + [3] = { 4, 7, 10, 14, 22, 0, }, + [4] = { 7, 8, 13, 20, 23, 0, }, + [5] = { 11, 9, 19, 29, 24, 0, }, + [6] = { 16, 10, 29, 43, 25, 1, }, + [7] = { 20, 11, 39, 58, 26, 1, }, + [8] = { 24, 12, 52, 77, 27, 1, }, + [9] = { 28, 13, 67, 101, 28, 1, }, + [10] = { 32, 15, 87, 131, 29, 1, }, + [11] = { 36, 16, 112, 168, 30, 1, }, + [12] = { 40, 17, 142, 213, 31, 2, }, + [13] = { 44, 18, 180, 270, 32, 2, }, + [14] = { 48, 19, 226, 339, 33, 2, }, + [15] = { 52, 21, 283, 424, 34, 2, }, + [16] = { 56, 22, 352, 528, 35, 2, }, + [17] = { 60, 23, 437, 655, 36, 2, }, + [18] = { 64, 24, 540, 810, 37, 3, }, + [19] = { 67, 25, 632, 948, 38, 3, }, + [20] = { 70, 26, 739, 1109, 39, 3, }, + [21] = { 72, 27, 819, 1229, 40, 3, }, + [22] = { 74, 27, 908, 1362, 41, 3, }, + [23] = { 76, 28, 1005, 1508, 42, 3, }, + [24] = { 78, 28, 1113, 1669, 43, 4, }, + [25] = { 80, 29, 1231, 1847, 44, 4, }, + [26] = { 82, 30, 1361, 2042, 45, 4, }, + [27] = { 84, 30, 1504, 2257, 46, 4, }, + [28] = { 86, 31, 1662, 2493, 47, 4, }, + [29] = { 88, 31, 1835, 2752, 48, 4, }, + [30] = { 90, 32, 2025, 3038, 49, 5, }, + }, +} +skills["VaalFireballSpiralNova"] = { + name = "Vaal Fireball", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + fire = true, + }, + parts = { + { + name = "Projectile", + area = false, + }, + { + name = "Explosion", + area = true, + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + fire = true, + vaal = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 1.25), + skill("critChance", 6), + --"base_number_of_projectiles_in_spiral_nova" = 32 + --"projectile_spiral_nova_time_ms" = 2000 + --"projectile_spiral_nova_angle" = -720 + mod("AreaOfEffect", "INC", 50), --"base_skill_area_of_effect_+%" = 50 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1.5), --"base_chance_to_ignite_%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 1, 8, 11, }, + [2] = { 2, 9, 13, }, + [3] = { 4, 11, 16, }, + [4] = { 7, 14, 22, }, + [5] = { 11, 20, 30, }, + [6] = { 16, 30, 45, }, + [7] = { 20, 39, 59, }, + [8] = { 24, 51, 76, }, + [9] = { 28, 65, 98, }, + [10] = { 32, 82, 124, }, + [11] = { 36, 103, 155, }, + [12] = { 40, 128, 192, }, + [13] = { 44, 158, 238, }, + [14] = { 48, 195, 292, }, + [15] = { 52, 238, 357, }, + [16] = { 56, 289, 434, }, + [17] = { 60, 351, 526, }, + [18] = { 64, 424, 636, }, + [19] = { 67, 488, 732, }, + [20] = { 70, 560, 841, }, + [21] = { 72, 614, 921, }, + [22] = { 74, 673, 1009, }, + [23] = { 76, 736, 1105, }, + [24] = { 78, 806, 1209, }, + [25] = { 80, 881, 1322, }, + [26] = { 82, 963, 1445, }, + [27] = { 84, 1052, 1578, }, + [28] = { 86, 1149, 1723, }, + [29] = { 88, 1254, 1881, }, + [30] = { 90, 1368, 2052, }, + }, +} +skills["Firestorm"] = { + name = "Firestorm", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.9), + skill("damageEffectiveness", 0.3), + skill("critChance", 6), + skill("duration", 2), --"base_skill_effect_duration" = 2000 + --"fire_storm_fireball_delay_ms" = 100 + --"is_area_damage" = 1 + --"skill_override_pvp_scaling_time_ms" = 450 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 12, 9, 4, 10, }, + [2] = { 15, 10, 9, 13, }, + [3] = { 19, 11, 11, 17, }, + [4] = { 23, 12, 15, 22, }, + [5] = { 27, 13, 19, 28, }, + [6] = { 31, 14, 23, 35, }, + [7] = { 35, 15, 29, 44, }, + [8] = { 38, 16, 35, 52, }, + [9] = { 41, 17, 40, 61, }, + [10] = { 44, 18, 47, 71, }, + [11] = { 47, 19, 55, 82, }, + [12] = { 50, 20, 64, 95, }, + [13] = { 53, 21, 74, 110, }, + [14] = { 56, 22, 85, 127, }, + [15] = { 59, 23, 98, 147, }, + [16] = { 62, 24, 112, 169, }, + [17] = { 64, 24, 123, 185, }, + [18] = { 66, 25, 135, 203, }, + [19] = { 68, 25, 148, 222, }, + [20] = { 70, 26, 162, 243, }, + [21] = { 72, 26, 177, 265, }, + [22] = { 74, 27, 193, 290, }, + [23] = { 76, 27, 211, 317, }, + [24] = { 78, 28, 231, 346, }, + [25] = { 80, 29, 251, 377, }, + [26] = { 82, 30, 274, 411, }, + [27] = { 84, 30, 299, 448, }, + [28] = { 86, 30, 326, 488, }, + [29] = { 88, 31, 355, 532, }, + [30] = { 90, 32, 386, 579, }, + }, +} +skills["FlameDash"] = { + name = "Flame Dash", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + movement = true, + duration = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + movement = true, + fire = true, + }, + skillTypes = { [2] = true, [38] = true, [10] = true, [40] = true, [12] = true, [18] = true, [36] = true, [33] = true, [17] = true, [19] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("critChance", 6), + skill("cooldown", 3), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"is_area_damage" = ? + --"firestorm_use_server_effects" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 10, 10, 6, 9, 10.9, }, + [2] = { 13, 11, 8, 11, 14.3, }, + [3] = { 17, 12, 11, 16, 20.016666666667, }, + [4] = { 21, 13, 15, 22, 27.366666666667, }, + [5] = { 25, 14, 20, 29, 36.816666666667, }, + [6] = { 29, 15, 26, 39, 48.866666666667, }, + [7] = { 33, 16, 34, 51, 64.15, }, + [8] = { 36, 17, 42, 63, 78.233333333333, }, + [9] = { 39, 18, 51, 76, 94.983333333333, }, + [10] = { 42, 20, 61, 92, 114.9, }, + [11] = { 45, 21, 74, 111, 138.5, }, + [12] = { 48, 22, 89, 133, 166.48333333333, }, + [13] = { 51, 24, 106, 160, 199.55, }, + [14] = { 54, 25, 127, 191, 238.61666666667, }, + [15] = { 57, 26, 152, 228, 284.7, }, + [16] = { 60, 27, 181, 271, 339, }, + [17] = { 63, 28, 215, 322, 402.9, }, + [18] = { 66, 29, 255, 382, 478.05, }, + [19] = { 68, 30, 285, 428, 535.3, }, + [20] = { 70, 30, 319, 479, 599.01666666667, }, + [21] = { 72, 31, 357, 536, 669.9, }, + [22] = { 74, 32, 399, 599, 748.71666666667, }, + [23] = { 76, 33, 446, 669, 836.35, }, + [24] = { 78, 34, 498, 747, 933.7, }, + [25] = { 80, 34, 556, 833, 1041.8666666667, }, + [26] = { 82, 35, 620, 930, 1161.9666666667, }, + [27] = { 84, 36, 691, 1036, 1295.3166666667, }, + [28] = { 86, 37, 770, 1155, 1443.3, }, + [29] = { 88, 38, 857, 1286, 1607.4833333333, }, + [30] = { 90, 38, 954, 1432, 1789.6, }, + }, +} +skills["FlameWhip"] = { + name = "Flame Surge", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [11] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("critChance", 6), + mod("Damage", "MORE", 50, bit.bor(ModFlag.Spell, ModFlag.Hit), 0, { type = "EnemyCondition", var = "Burning" }), --"flame_whip_damage_+%_final_vs_burning_enemies" = 50 + flag("CannotIgnite"), --"never_ignite" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Cast), --"base_cast_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 12, 5, 21, 31, }, + [2] = { 15, 6, 26, 39, }, + [3] = { 19, 6, 35, 52, }, + [4] = { 23, 7, 45, 67, }, + [5] = { 27, 7, 57, 86, }, + [6] = { 31, 8, 73, 109, }, + [7] = { 35, 9, 91, 137, }, + [8] = { 38, 9, 107, 161, }, + [9] = { 41, 10, 126, 189, }, + [10] = { 44, 10, 147, 221, }, + [11] = { 47, 11, 171, 257, }, + [12] = { 50, 12, 199, 299, }, + [13] = { 53, 12, 231, 346, }, + [14] = { 56, 13, 267, 401, }, + [15] = { 59, 13, 308, 462, }, + [16] = { 62, 13, 355, 533, }, + [17] = { 64, 13, 390, 585, }, + [18] = { 66, 14, 428, 642, }, + [19] = { 68, 15, 469, 703, }, + [20] = { 70, 15, 514, 771, }, + [21] = { 72, 15, 563, 844, }, + [22] = { 74, 15, 616, 923, }, + [23] = { 76, 16, 673, 1010, }, + [24] = { 78, 16, 736, 1104, }, + [25] = { 80, 17, 804, 1206, }, + [26] = { 82, 18, 878, 1317, }, + [27] = { 84, 18, 958, 1437, }, + [28] = { 86, 18, 1045, 1567, }, + [29] = { 88, 18, 1139, 1709, }, + [30] = { 90, 19, 1242, 1863, }, + }, +} +skills["Flameblast"] = { + name = "Flameblast", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + channelling = true, + }, + parts = { + { + name = "1 Stage", + }, + { + name = "10 Stages", + }, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [33] = true, [58] = true, }, + baseMods = { + skill("castTime", 0.2), + skill("damageEffectiveness", 0.5), + skill("critChance", 5), + --"charged_blast_spell_damage_+%_final_per_stack" = 110 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + mod("Damage", "MORE", 990, 0, 0, { type = "SkillPart", skillPart = 2 }), + skill("dpsMultiplier", 0.1, { type = "SkillPart", skillPart = 2 }), + skill("showAverage", false), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 28, 6, 32, 48, }, + [2] = { 31, 6, 38, 57, }, + [3] = { 34, 6, 45, 67, }, + [4] = { 37, 6, 52, 78, }, + [5] = { 40, 7, 61, 91, }, + [6] = { 42, 7, 67, 101, }, + [7] = { 44, 7, 74, 111, }, + [8] = { 46, 7, 82, 123, }, + [9] = { 48, 7, 90, 135, }, + [10] = { 50, 8, 99, 148, }, + [11] = { 52, 8, 109, 163, }, + [12] = { 54, 8, 119, 179, }, + [13] = { 56, 8, 130, 196, }, + [14] = { 58, 8, 143, 214, }, + [15] = { 60, 9, 156, 234, }, + [16] = { 62, 9, 171, 256, }, + [17] = { 64, 9, 186, 279, }, + [18] = { 66, 9, 203, 305, }, + [19] = { 68, 9, 221, 332, }, + [20] = { 70, 9, 241, 362, }, + [21] = { 72, 10, 263, 394, }, + [22] = { 74, 10, 286, 429, }, + [23] = { 76, 10, 311, 466, }, + [24] = { 78, 11, 338, 507, }, + [25] = { 80, 11, 367, 550, }, + [26] = { 82, 11, 398, 598, }, + [27] = { 84, 12, 432, 649, }, + [28] = { 86, 12, 469, 704, }, + [29] = { 88, 12, 509, 763, }, + [30] = { 90, 13, 551, 827, }, + }, +} +skills["VaalFlameblast"] = { + name = "Vaal Flameblast", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"charged_blast_spell_damage_+%_final_per_stack" = 110 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + mod("Damage", "MORE", 1100, ModFlag.Spell), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 28, 39, 58, }, + [2] = { 31, 46, 68, }, + [3] = { 34, 53, 80, }, + [4] = { 37, 62, 93, }, + [5] = { 40, 71, 107, }, + [6] = { 42, 78, 117, }, + [7] = { 44, 86, 129, }, + [8] = { 46, 94, 141, }, + [9] = { 48, 103, 154, }, + [10] = { 50, 113, 169, }, + [11] = { 52, 123, 184, }, + [12] = { 54, 134, 201, }, + [13] = { 56, 146, 219, }, + [14] = { 58, 159, 238, }, + [15] = { 60, 173, 259, }, + [16] = { 62, 188, 282, }, + [17] = { 64, 204, 306, }, + [18] = { 66, 221, 332, }, + [19] = { 68, 240, 360, }, + [20] = { 70, 260, 390, }, + [21] = { 72, 281, 422, }, + [22] = { 74, 305, 457, }, + [23] = { 76, 329, 494, }, + [24] = { 78, 356, 534, }, + [25] = { 80, 385, 577, }, + [26] = { 82, 416, 623, }, + [27] = { 84, 449, 673, }, + [28] = { 86, 484, 726, }, + [29] = { 88, 522, 783, }, + [30] = { 90, 563, 844, }, + }, +} +skills["Flammability"] = { + name = "Flammability", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("SelfIgniteDuration", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_ignite_duration_-%" = -0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_fire_damage_resistance_%" + [6] = mod("SelfIgniteChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -25, 10, }, + [2] = { 27, 26, 9.1, 4, -26, 10, }, + [3] = { 30, 27, 9.2, 8, -27, 10, }, + [4] = { 33, 29, 9.3, 12, -28, 10, }, + [5] = { 36, 30, 9.4, 16, -29, 10, }, + [6] = { 39, 32, 9.5, 20, -30, 11, }, + [7] = { 42, 34, 9.6, 24, -31, 11, }, + [8] = { 45, 35, 9.7, 28, -32, 11, }, + [9] = { 48, 37, 9.8, 32, -33, 11, }, + [10] = { 50, 38, 9.9, 36, -34, 11, }, + [11] = { 52, 39, 10, 40, -35, 12, }, + [12] = { 54, 40, 10.1, 44, -36, 12, }, + [13] = { 56, 42, 10.2, 48, -37, 12, }, + [14] = { 58, 43, 10.3, 52, -38, 12, }, + [15] = { 60, 44, 10.4, 56, -39, 12, }, + [16] = { 62, 45, 10.5, 60, -40, 13, }, + [17] = { 64, 46, 10.6, 64, -41, 13, }, + [18] = { 66, 47, 10.7, 68, -42, 13, }, + [19] = { 68, 48, 10.8, 72, -43, 13, }, + [20] = { 70, 50, 10.9, 76, -44, 14, }, + [21] = { 72, 51, 11, 80, -45, 14, }, + [22] = { 74, 52, 11.1, 84, -46, 14, }, + [23] = { 76, 53, 11.2, 88, -47, 15, }, + [24] = { 78, 54, 11.3, 92, -48, 15, }, + [25] = { 80, 56, 11.4, 96, -49, 15, }, + [26] = { 82, 57, 11.5, 100, -50, 16, }, + [27] = { 84, 58, 11.6, 104, -51, 16, }, + [28] = { 86, 59, 11.7, 108, -52, 16, }, + [29] = { 88, 60, 11.8, 112, -53, 17, }, + [30] = { 90, 61, 11.9, 116, -54, 17, }, + }, +} +skills["FleshOffering"] = { + name = "Flesh Offering", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"offering_skill_effect_duration_per_corpse" = 500 + --"base_deal_no_damage" = ? + skill("offering", true), + }, + qualityMods = { + mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_speed_+%" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_movement_velocity_+%" + [5] = mod("Speed", "INC", nil, ModFlag.Cast, 0, { type = "GlobalEffect", effectType = "Buff" }), --"cast_speed_+%_from_haste_aura" + }, + levels = { + [1] = { 12, 16, 20, 20, 20, }, + [2] = { 15, 17, 21, 20, 21, }, + [3] = { 19, 18, 21, 21, 21, }, + [4] = { 23, 19, 22, 21, 22, }, + [5] = { 27, 20, 22, 22, 22, }, + [6] = { 31, 21, 23, 22, 23, }, + [7] = { 35, 22, 23, 23, 23, }, + [8] = { 38, 23, 24, 23, 24, }, + [9] = { 41, 24, 24, 24, 24, }, + [10] = { 44, 25, 25, 24, 25, }, + [11] = { 47, 26, 25, 25, 25, }, + [12] = { 50, 27, 26, 25, 26, }, + [13] = { 53, 28, 26, 26, 26, }, + [14] = { 56, 29, 27, 26, 27, }, + [15] = { 59, 29, 27, 27, 27, }, + [16] = { 62, 30, 28, 27, 28, }, + [17] = { 64, 30, 28, 28, 28, }, + [18] = { 66, 31, 29, 28, 29, }, + [19] = { 68, 32, 29, 29, 29, }, + [20] = { 70, 33, 30, 29, 30, }, + [21] = { 72, 34, 30, 30, 30, }, + [22] = { 74, 34, 31, 30, 31, }, + [23] = { 76, 35, 31, 31, 31, }, + [24] = { 78, 36, 32, 31, 32, }, + [25] = { 80, 37, 32, 32, 32, }, + [26] = { 82, 38, 33, 32, 33, }, + [27] = { 84, 38, 33, 33, 33, }, + [28] = { 86, 39, 34, 33, 34, }, + [29] = { 88, 40, 34, 34, 34, }, + [30] = { 90, 41, 35, 34, 35, }, + }, +} +skills["FreezingPulse"] = { + name = "Freezing Pulse", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + cold = true, + }, + setupFunc = function(env, output) + env.modDB:NewMod("Damage", "MORE", -100, "Skill:Freezing Pulse", ModFlag.Spell, { type = "DistanceRamp", ramp = {{0,0},{60*output.ProjectileSpeedMod,1}} }) + env.modDB:NewMod("EnemyFreezeChance", "BASE", 25, "Skill:Freezing Pulse", { type = "DistanceRamp", ramp = {{0,1},{15*output.ProjectileSpeedMod,0}} }) + end, + color = 3, + baseFlags = { + spell = true, + projectile = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 1.25), + skill("critChance", 6), + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = mod("ProjectileSpeed", "INC", nil), --"base_projectile_speed_+%" + }, + levels = { + [1] = { 1, 4, 7, 11, 0, }, + [2] = { 2, 5, 8, 13, 1, }, + [3] = { 4, 6, 11, 16, 2, }, + [4] = { 7, 7, 15, 23, 3, }, + [5] = { 11, 8, 22, 33, 4, }, + [6] = { 16, 9, 32, 49, 5, }, + [7] = { 20, 10, 43, 65, 6, }, + [8] = { 24, 11, 57, 85, 7, }, + [9] = { 28, 12, 73, 110, 8, }, + [10] = { 32, 13, 93, 140, 9, }, + [11] = { 36, 14, 118, 176, 10, }, + [12] = { 40, 14, 148, 221, 11, }, + [13] = { 44, 15, 184, 276, 12, }, + [14] = { 48, 16, 228, 342, 13, }, + [15] = { 52, 17, 281, 421, 14, }, + [16] = { 56, 18, 345, 517, 15, }, + [17] = { 60, 18, 422, 633, 16, }, + [18] = { 64, 18, 515, 772, 17, }, + [19] = { 67, 18, 596, 894, 18, }, + [20] = { 70, 18, 689, 1034, 19, }, + [21] = { 72, 18, 759, 1138, 20, }, + [22] = { 74, 19, 835, 1252, 21, }, + [23] = { 76, 19, 918, 1377, 22, }, + [24] = { 78, 19, 1009, 1513, 23, }, + [25] = { 80, 20, 1108, 1662, 24, }, + [26] = { 82, 20, 1216, 1824, 25, }, + [27] = { 84, 20, 1335, 2002, 26, }, + [28] = { 86, 21, 1464, 2196, 27, }, + [29] = { 88, 21, 1605, 2407, 28, }, + [30] = { 90, 21, 1759, 2638, 29, }, + }, +} +skills["FrostBomb"] = { + name = "Frost Bomb", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [34] = true, [10] = true, [26] = true, [18] = true, [17] = true, [19] = true, [36] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 1.3), + skill("critChance", 6), + skill("cooldown", 2.5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + --"base_secondary_skill_effect_duration" = 2000 + mod("ColdResist", "BASE", -20, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_cold_damage_resistance_%" = -20 + --"life_regeneration_rate_+%" = -75 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 6, 10, 14, }, + [2] = { 6, 7, 12, 18, }, + [3] = { 9, 8, 15, 23, }, + [4] = { 12, 9, 20, 30, }, + [5] = { 16, 10, 27, 40, }, + [6] = { 20, 11, 36, 54, }, + [7] = { 24, 12, 46, 70, }, + [8] = { 28, 13, 59, 89, }, + [9] = { 32, 13, 75, 113, }, + [10] = { 36, 14, 94, 142, }, + [11] = { 40, 14, 118, 176, }, + [12] = { 44, 15, 145, 218, }, + [13] = { 48, 16, 179, 268, }, + [14] = { 52, 16, 219, 329, }, + [15] = { 55, 17, 254, 382, }, + [16] = { 58, 18, 295, 442, }, + [17] = { 61, 18, 341, 511, }, + [18] = { 64, 19, 393, 590, }, + [19] = { 67, 19, 453, 679, }, + [20] = { 70, 19, 521, 781, }, + [21] = { 72, 20, 572, 857, }, + [22] = { 74, 21, 627, 940, }, + [23] = { 76, 21, 687, 1030, }, + [24] = { 78, 21, 752, 1128, }, + [25] = { 80, 22, 823, 1235, }, + [26] = { 82, 23, 900, 1351, }, + [27] = { 84, 23, 985, 1477, }, + [28] = { 86, 23, 1076, 1614, }, + [29] = { 88, 24, 1176, 1764, }, + [30] = { 90, 24, 1284, 1926, }, + }, +} +skills["FrostWall"] = { + name = "Frost Wall", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("cooldown", 3), + --"wall_expand_delay_ms" = 150 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + --[4] = "wall_maximum_length" + [5] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [6] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 14, 3, 28, 8, 12, }, + [2] = { 6, 16, 3.1, 28, 9, 16, }, + [3] = { 9, 18, 3.2, 28, 14, 23, }, + [4] = { 12, 20, 3.3, 28, 18, 27, }, + [5] = { 16, 21, 3.4, 35, 25, 37, }, + [6] = { 20, 23, 3.5, 35, 32, 49, }, + [7] = { 24, 24, 3.6, 35, 42, 63, }, + [8] = { 28, 25, 3.7, 35, 54, 81, }, + [9] = { 32, 26, 3.8, 42, 68, 102, }, + [10] = { 36, 27, 3.9, 42, 85, 128, }, + [11] = { 40, 28, 4, 42, 106, 159, }, + [12] = { 44, 29, 4.1, 42, 131, 196, }, + [13] = { 48, 30, 4.2, 49, 160, 240, }, + [14] = { 52, 31, 4.3, 49, 196, 294, }, + [15] = { 55, 32, 4.4, 49, 227, 341, }, + [16] = { 58, 33, 4.5, 49, 263, 394, }, + [17] = { 61, 34, 4.6, 56, 303, 455, }, + [18] = { 64, 35, 4.7, 56, 350, 524, }, + [19] = { 67, 36, 4.8, 56, 402, 603, }, + [20] = { 70, 37, 4.9, 56, 462, 693, }, + [21] = { 72, 38, 5, 63, 506, 759, }, + [22] = { 74, 38, 5.1, 63, 554, 832, }, + [23] = { 76, 38, 5.2, 63, 607, 910, }, + [24] = { 78, 39, 5.3, 63, 664, 996, }, + [25] = { 80, 40, 5.4, 70, 726, 1089, }, + [26] = { 82, 40, 5.5, 70, 794, 1191, }, + [27] = { 84, 41, 5.6, 70, 867, 1301, }, + [28] = { 86, 42, 5.7, 70, 947, 1420, }, + [29] = { 88, 42, 5.8, 77, 1033, 1550, }, + [30] = { 90, 42, 5.9, 77, 1127, 1691, }, + }, +} +skills["Frostbite"] = { + name = "Frostbite", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("SelfFreezeDuration", "INC", 1, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_self_freeze_duration_-%" = -1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_cold_damage_resistance_%" + [6] = mod("SelfFreezeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" + }, + levels = { + [1] = { 24, 24, 9, 0, -25, 10, }, + [2] = { 27, 26, 9.1, 4, -26, 10, }, + [3] = { 30, 27, 9.2, 8, -27, 10, }, + [4] = { 33, 29, 9.3, 12, -28, 10, }, + [5] = { 36, 30, 9.4, 16, -29, 10, }, + [6] = { 39, 32, 9.5, 20, -30, 11, }, + [7] = { 42, 34, 9.6, 24, -31, 11, }, + [8] = { 45, 35, 9.7, 28, -32, 11, }, + [9] = { 48, 37, 9.8, 32, -33, 11, }, + [10] = { 50, 38, 9.9, 36, -34, 11, }, + [11] = { 52, 39, 10, 40, -35, 12, }, + [12] = { 54, 40, 10.1, 44, -36, 12, }, + [13] = { 56, 42, 10.2, 48, -37, 12, }, + [14] = { 58, 43, 10.3, 52, -38, 12, }, + [15] = { 60, 44, 10.4, 56, -39, 12, }, + [16] = { 62, 45, 10.5, 60, -40, 13, }, + [17] = { 64, 46, 10.6, 64, -41, 13, }, + [18] = { 66, 47, 10.7, 68, -42, 13, }, + [19] = { 68, 48, 10.8, 72, -43, 13, }, + [20] = { 70, 50, 10.9, 76, -44, 14, }, + [21] = { 72, 51, 11, 80, -45, 14, }, + [22] = { 74, 52, 11.1, 84, -46, 14, }, + [23] = { 76, 53, 11.2, 88, -47, 15, }, + [24] = { 78, 54, 11.3, 92, -48, 15, }, + [25] = { 80, 56, 11.4, 96, -49, 15, }, + [26] = { 82, 57, 11.5, 100, -50, 16, }, + [27] = { 84, 58, 11.6, 104, -51, 16, }, + [28] = { 86, 59, 11.7, 108, -52, 16, }, + [29] = { 88, 60, 11.8, 112, -53, 17, }, + [30] = { 90, 61, 11.9, 116, -54, 17, }, + }, +} +skills["FrostBolt"] = { + name = "Frostbolt", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("critChance", 5), + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 1, 6, 6, 10, }, + [2] = { 2, 6, 7, 11, }, + [3] = { 4, 7, 9, 14, }, + [4] = { 7, 8, 13, 19, }, + [5] = { 11, 9, 18, 27, }, + [6] = { 16, 10, 28, 42, }, + [7] = { 20, 11, 38, 57, }, + [8] = { 24, 12, 50, 75, }, + [9] = { 28, 13, 66, 99, }, + [10] = { 32, 14, 86, 128, }, + [11] = { 36, 14, 110, 165, }, + [12] = { 40, 15, 141, 211, }, + [13] = { 44, 16, 178, 268, }, + [14] = { 48, 16, 225, 338, }, + [15] = { 52, 17, 283, 424, }, + [16] = { 56, 18, 354, 530, }, + [17] = { 60, 18, 440, 661, }, + [18] = { 64, 19, 547, 820, }, + [19] = { 67, 19, 642, 963, }, + [20] = { 70, 20, 752, 1129, }, + [21] = { 72, 20, 836, 1254, }, + [22] = { 74, 21, 928, 1392, }, + [23] = { 76, 21, 1030, 1544, }, + [24] = { 78, 21, 1142, 1713, }, + [25] = { 80, 22, 1266, 1898, }, + [26] = { 82, 23, 1402, 2103, }, + [27] = { 84, 23, 1552, 2329, }, + [28] = { 86, 23, 1718, 2577, }, + [29] = { 88, 24, 1901, 2851, }, + [30] = { 90, 24, 2102, 3153, }, + }, +} +skills["GlacialCascade"] = { + name = "Glacial Cascade", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"upheaval_number_of_spikes" = 7 + --"is_area_damage" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + [5] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [6] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 28, 13, 12, 19, 23, 35, }, + [2] = { 31, 14, 15, 23, 28, 42, }, + [3] = { 34, 15, 18, 27, 33, 50, }, + [4] = { 37, 16, 21, 32, 39, 59, }, + [5] = { 40, 17, 25, 38, 46, 69, }, + [6] = { 42, 18, 27, 42, 51, 77, }, + [7] = { 44, 18, 31, 47, 57, 85, }, + [8] = { 46, 19, 34, 52, 63, 95, }, + [9] = { 48, 19, 38, 58, 70, 105, }, + [10] = { 50, 20, 42, 64, 77, 116, }, + [11] = { 52, 21, 46, 71, 85, 129, }, + [12] = { 54, 21, 51, 78, 94, 142, }, + [13] = { 56, 22, 56, 86, 104, 157, }, + [14] = { 58, 22, 62, 95, 115, 173, }, + [15] = { 60, 23, 68, 105, 127, 191, }, + [16] = { 62, 24, 75, 116, 139, 210, }, + [17] = { 64, 24, 83, 127, 153, 231, }, + [18] = { 66, 25, 91, 140, 169, 254, }, + [19] = { 68, 25, 100, 154, 185, 280, }, + [20] = { 70, 26, 110, 169, 203, 307, }, + [21] = { 72, 27, 120, 185, 223, 337, }, + [22] = { 74, 27, 132, 203, 245, 369, }, + [23] = { 76, 28, 145, 223, 268, 405, }, + [24] = { 78, 28, 158, 244, 294, 443, }, + [25] = { 80, 29, 174, 267, 322, 485, }, + [26] = { 82, 30, 190, 292, 352, 531, }, + [27] = { 84, 30, 208, 319, 385, 581, }, + [28] = { 86, 31, 227, 349, 421, 635, }, + [29] = { 88, 31, 248, 382, 460, 694, }, + [30] = { 90, 32, 271, 417, 502, 758, }, + }, +} +skills["HeraldOfThunder"] = { + name = "Herald of Thunder", + gemTags = { + intelligence = true, + active_skill = true, + cast = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + cast = true, + duration = true, + lightning = true, + }, + skillTypes = { [39] = true, [5] = true, [15] = true, [16] = true, [10] = true, [11] = true, [12] = true, [35] = true, [27] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 25), + skill("damageEffectiveness", 1.2), + skill("cooldown", 1), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + flag("CannotShock"), --"never_shock" = ? + --"display_skill_deals_secondary_damage" = ? + --"skill_can_add_multiple_charges_per_action" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_thunder_lightning_damage_+%" = 0.75 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_minimum_added_lightning_damage" + [3] = mod("LightningMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_maximum_added_lightning_damage" + [4] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_minimum_added_lightning_damage" + [5] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"attack_maximum_added_lightning_damage" + [6] = skill("LightningMin", nil), --"secondary_minimum_base_lightning_damage" + [7] = skill("LightningMax", nil), --"secondary_maximum_base_lightning_damage" + }, + levels = { + [1] = { 16, 2, 7, 2, 7, 1, 34, }, + [2] = { 20, 2, 9, 2, 9, 1, 47, }, + [3] = { 24, 3, 11, 3, 11, 1, 65, }, + [4] = { 28, 3, 14, 3, 14, 2, 87, }, + [5] = { 31, 4, 16, 4, 16, 2, 108, }, + [6] = { 34, 5, 18, 5, 18, 3, 135, }, + [7] = { 37, 5, 21, 5, 21, 3, 166, }, + [8] = { 40, 6, 24, 6, 24, 4, 203, }, + [9] = { 43, 7, 27, 7, 27, 5, 248, }, + [10] = { 46, 8, 31, 8, 31, 6, 301, }, + [11] = { 49, 9, 35, 9, 35, 8, 363, }, + [12] = { 52, 10, 39, 10, 39, 9, 436, }, + [13] = { 55, 11, 44, 11, 44, 11, 522, }, + [14] = { 58, 12, 49, 12, 49, 13, 623, }, + [15] = { 60, 13, 53, 13, 53, 15, 708, }, + [16] = { 62, 14, 57, 14, 57, 17, 803, }, + [17] = { 64, 15, 61, 15, 61, 19, 908, }, + [18] = { 66, 16, 66, 16, 66, 21, 1026, }, + [19] = { 68, 18, 71, 18, 71, 24, 1157, }, + [20] = { 70, 19, 76, 19, 76, 27, 1303, }, + [21] = { 72, 20, 81, 20, 81, 31, 1451, }, + [22] = { 74, 22, 87, 22, 87, 34, 1615, }, + [23] = { 76, 23, 94, 23, 94, 38, 1796, }, + [24] = { 78, 25, 100, 25, 100, 43, 1995, }, + [25] = { 80, 27, 107, 27, 107, 48, 2215, }, + [26] = { 82, 29, 115, 29, 115, 54, 2457, }, + [27] = { 84, 31, 123, 31, 123, 60, 2723, }, + [28] = { 86, 33, 131, 33, 131, 67, 3016, }, + [29] = { 88, 35, 140, 35, 140, 75, 3338, }, + [30] = { 90, 37, 150, 37, 150, 83, 3692, }, + }, +} +skills["IceNova"] = { + name = "Ice Nova", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 6), + --"skill_art_variation" = 0 + --"is_area_damage" = 1 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 12, 10, 15, 21, }, + [2] = { 15, 11, 17, 27, }, + [3] = { 19, 13, 24, 37, }, + [4] = { 23, 14, 31, 49, }, + [5] = { 27, 16, 41, 64, }, + [6] = { 31, 17, 53, 83, }, + [7] = { 35, 19, 68, 106, }, + [8] = { 38, 20, 81, 127, }, + [9] = { 41, 21, 96, 151, }, + [10] = { 44, 22, 115, 179, }, + [11] = { 47, 23, 136, 212, }, + [12] = { 50, 24, 160, 250, }, + [13] = { 53, 25, 188, 294, }, + [14] = { 56, 26, 221, 346, }, + [15] = { 59, 27, 259, 405, }, + [16] = { 62, 28, 304, 474, }, + [17] = { 64, 29, 337, 526, }, + [18] = { 66, 30, 373, 583, }, + [19] = { 68, 30, 413, 646, }, + [20] = { 70, 31, 458, 715, }, + [21] = { 72, 32, 506, 791, }, + [22] = { 74, 33, 560, 875, }, + [23] = { 76, 34, 619, 966, }, + [24] = { 78, 34, 683, 1067, }, + [25] = { 80, 34, 754, 1178, }, + [26] = { 82, 34, 832, 1300, }, + [27] = { 84, 35, 917, 1433, }, + [28] = { 86, 35, 1011, 1580, }, + [29] = { 88, 35, 1114, 1740, }, + [30] = { 90, 35, 1227, 1917, }, + }, +} +skills["VaalIceNova"] = { + name = "Vaal Ice Nova", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + cold = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [34] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 6), + --"ice_nova_number_of_repeats" = 5 + --"ice_nova_radius_+%_per_repeat" = -20 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 12, 11, 17, }, + [2] = { 15, 14, 22, }, + [3] = { 19, 18, 29, }, + [4] = { 23, 24, 37, }, + [5] = { 27, 31, 48, }, + [6] = { 31, 39, 61, }, + [7] = { 35, 49, 76, }, + [8] = { 38, 57, 89, }, + [9] = { 41, 67, 105, }, + [10] = { 44, 78, 123, }, + [11] = { 47, 91, 143, }, + [12] = { 50, 106, 166, }, + [13] = { 53, 123, 193, }, + [14] = { 56, 143, 223, }, + [15] = { 59, 164, 257, }, + [16] = { 62, 189, 296, }, + [17] = { 64, 208, 325, }, + [18] = { 66, 228, 357, }, + [19] = { 68, 250, 391, }, + [20] = { 70, 274, 428, }, + [21] = { 72, 300, 469, }, + [22] = { 74, 328, 513, }, + [23] = { 76, 359, 561, }, + [24] = { 78, 393, 613, }, + [25] = { 80, 429, 670, }, + [26] = { 82, 468, 732, }, + [27] = { 84, 511, 799, }, + [28] = { 86, 558, 871, }, + [29] = { 88, 608, 950, }, + [30] = { 90, 663, 1035, }, + }, +} +skills["IceSpear"] = { + name = "Ice Spear", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + cold = true, + }, + parts = { + { + name = "First Form", + }, + { + name = "Second Form", + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + cold = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("damageEffectiveness", 0.8), + skill("critChance", 7), + --"base_is_projectile" = 1 + mod("CritChance", "INC", 600, 0, 0, { type = "SkillPart", skillPart = 2 }), --"ice_spear_second_form_critical_strike_chance_+%" = 600 + mod("PierceChance", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }), + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = mod("EnemyChillDuration", "INC", nil), --"chill_duration_+%" + }, + levels = { + [1] = { 12, 9, 17, 26, 40, }, + [2] = { 15, 10, 21, 31, 42, }, + [3] = { 19, 11, 28, 42, 44, }, + [4] = { 23, 12, 36, 53, 46, }, + [5] = { 27, 13, 47, 70, 48, }, + [6] = { 31, 14, 61, 91, 50, }, + [7] = { 35, 16, 78, 117, 52, }, + [8] = { 38, 16, 94, 140, 54, }, + [9] = { 41, 17, 112, 168, 56, }, + [10] = { 44, 18, 133, 200, 58, }, + [11] = { 47, 19, 158, 237, 60, }, + [12] = { 50, 20, 187, 281, 62, }, + [13] = { 53, 21, 221, 332, 64, }, + [14] = { 56, 22, 261, 391, 66, }, + [15] = { 59, 23, 307, 460, 68, }, + [16] = { 62, 24, 360, 540, 70, }, + [17] = { 64, 24, 400, 600, 72, }, + [18] = { 66, 25, 445, 667, 74, }, + [19] = { 68, 26, 494, 741, 76, }, + [20] = { 70, 27, 548, 822, 78, }, + [21] = { 72, 28, 607, 911, 80, }, + [22] = { 74, 29, 673, 1009, 82, }, + [23] = { 76, 29, 745, 1118, 84, }, + [24] = { 78, 30, 825, 1237, 86, }, + [25] = { 80, 30, 912, 1369, 88, }, + [26] = { 82, 31, 1009, 1513, 90, }, + [27] = { 84, 32, 1115, 1672, 92, }, + [28] = { 86, 33, 1232, 1847, 94, }, + [29] = { 88, 33, 1360, 2040, 96, }, + [30] = { 90, 34, 1501, 2251, 98, }, + }, +} +skills["Incinerate"] = { + name = "Incinerate", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + fire = true, + channelling = true, + }, + parts = { + { + name = "Base damage", + }, + { + name = "Fully charged", + }, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [18] = true, [33] = true, [58] = true, }, + baseMods = { + skill("castTime", 0.2), + skill("damageEffectiveness", 0.3), + --"flamethrower_damage_+%_per_stage_final" = 50 + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + --"skill_can_add_multiple_charges_per_action" = ? + mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 2), --"base_projectile_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 12, 6, 6, 9, }, + [2] = { 15, 6, 7, 11, }, + [3] = { 19, 6, 10, 15, }, + [4] = { 23, 6, 13, 19, }, + [5] = { 27, 6, 16, 24, }, + [6] = { 31, 6, 20, 31, }, + [7] = { 35, 6, 25, 38, }, + [8] = { 38, 6, 30, 45, }, + [9] = { 41, 7, 35, 52, }, + [10] = { 44, 7, 41, 61, }, + [11] = { 47, 7, 47, 71, }, + [12] = { 50, 7, 54, 82, }, + [13] = { 53, 7, 63, 94, }, + [14] = { 56, 7, 72, 108, }, + [15] = { 59, 8, 83, 125, }, + [16] = { 62, 8, 95, 143, }, + [17] = { 64, 8, 104, 157, }, + [18] = { 66, 8, 114, 171, }, + [19] = { 68, 8, 125, 187, }, + [20] = { 70, 9, 136, 204, }, + [21] = { 72, 9, 149, 223, }, + [22] = { 74, 9, 162, 244, }, + [23] = { 76, 9, 177, 266, }, + [24] = { 78, 9, 193, 289, }, + [25] = { 80, 9, 210, 315, }, + [26] = { 82, 10, 229, 343, }, + [27] = { 84, 10, 249, 374, }, + [28] = { 86, 10, 271, 406, }, + [29] = { 88, 10, 295, 442, }, + [30] = { 90, 10, 320, 480, }, + }, +} +skills["ClusterBurst"] = { + name = "Kinetic Blast", + gemTags = { + intelligence = true, + active_skill = true, + attack = true, + area = true, + projectile = true, + }, + parts = { + { + name = "Projectile", + area = false, + }, + { + name = "Explosions", + area = true, + }, + }, + color = 3, + baseFlags = { + attack = true, + projectile = true, + area = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [11] = true, [17] = true, [19] = true, [22] = true, }, + weaponTypes = { + ["Wand"] = true, + }, + baseMods = { + skill("castTime", 1), + --"cluster_burst_spawn_amount" = 4 + mod("Damage", "MORE", -25, ModFlag.Area), --"active_skill_area_damage_+%_final" = -25 + --"base_is_projectile" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 28, 15, 20, 0, }, + [2] = { 31, 15, 21.4, 1, }, + [3] = { 34, 15, 22.8, 2, }, + [4] = { 37, 15, 24.2, 3, }, + [5] = { 40, 15, 25.6, 4, }, + [6] = { 42, 15, 27, 5, }, + [7] = { 44, 15, 28.4, 6, }, + [8] = { 46, 15, 29.8, 7, }, + [9] = { 48, 16, 31.2, 8, }, + [10] = { 50, 16, 32.6, 9, }, + [11] = { 52, 16, 34, 10, }, + [12] = { 54, 16, 35.4, 11, }, + [13] = { 56, 16, 36.8, 12, }, + [14] = { 58, 16, 38.2, 13, }, + [15] = { 60, 16, 39.6, 14, }, + [16] = { 62, 16, 41, 15, }, + [17] = { 64, 16, 42.4, 16, }, + [18] = { 66, 16, 43.8, 17, }, + [19] = { 68, 16, 45.2, 18, }, + [20] = { 70, 16, 46.6, 19, }, + [21] = { 72, 16, 48, 20, }, + [22] = { 74, 16, 49.4, 21, }, + [23] = { 76, 16, 50.8, 22, }, + [24] = { 78, 16, 52.2, 23, }, + [25] = { 80, 17, 53.6, 24, }, + [26] = { 82, 17, 55, 25, }, + [27] = { 84, 17, 56.4, 26, }, + [28] = { 86, 17, 57.8, 27, }, + [29] = { 88, 17, 59.2, 28, }, + [30] = { 90, 17, 60.6, 29, }, + }, +} +skills["LightningTendrils"] = { + name = "Lightning Tendrils", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.35), + skill("critChance", 6), + --"base_skill_number_of_additional_hits" = 3 + --"is_area_damage" = ? + skill("dpsMultiplier", 4), + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 6, 1, 3, 0, }, + [2] = { 2, 7, 1, 4, 0, }, + [3] = { 4, 8, 1, 5, 1, }, + [4] = { 7, 9, 1, 7, 1, }, + [5] = { 11, 10, 1, 10, 1, }, + [6] = { 16, 11, 1, 16, 2, }, + [7] = { 20, 12, 1, 21, 2, }, + [8] = { 24, 13, 1, 28, 2, }, + [9] = { 28, 14, 2, 38, 3, }, + [10] = { 32, 16, 3, 49, 3, }, + [11] = { 36, 18, 3, 64, 3, }, + [12] = { 40, 19, 4, 82, 4, }, + [13] = { 44, 20, 6, 105, 4, }, + [14] = { 48, 21, 7, 133, 4, }, + [15] = { 52, 22, 9, 168, 5, }, + [16] = { 56, 23, 11, 212, 5, }, + [17] = { 60, 24, 14, 265, 5, }, + [18] = { 64, 25, 17, 332, 6, }, + [19] = { 67, 26, 21, 392, 6, }, + [20] = { 70, 26, 24, 461, 6, }, + [21] = { 72, 27, 27, 514, 7, }, + [22] = { 74, 27, 30, 573, 7, }, + [23] = { 76, 28, 34, 638, 7, }, + [24] = { 78, 28, 37, 710, 8, }, + [25] = { 80, 29, 42, 790, 8, }, + [26] = { 82, 29, 46, 878, 8, }, + [27] = { 84, 30, 51, 975, 9, }, + [28] = { 86, 30, 57, 1083, 9, }, + [29] = { 88, 31, 63, 1202, 9, }, + [30] = { 90, 31, 70, 1334, 10, }, + }, +} +skills["LightningTrap"] = { + name = "Lightning Trap", + gemTags = { + projectile = true, + trap = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + trap = true, + projectile = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.9), + skill("critChance", 5), + skill("cooldown", 2), + --"base_trap_duration" = 16000 + mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 + --"projectiles_nova" = ? + --"is_trap" = ? + --"base_skill_is_trapped" = ? + --"base_is_projectile" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + skill("trapCooldown", 2), + }, + qualityMods = { + mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 8, 3, 62, }, + [2] = { 15, 9, 4, 77, }, + [3] = { 19, 10, 5, 98, }, + [4] = { 23, 10, 7, 124, }, + [5] = { 27, 11, 8, 153, }, + [6] = { 31, 12, 10, 188, }, + [7] = { 35, 13, 12, 228, }, + [8] = { 38, 14, 14, 263, }, + [9] = { 41, 14, 16, 301, }, + [10] = { 44, 16, 18, 344, }, + [11] = { 47, 17, 21, 391, }, + [12] = { 50, 18, 23, 444, }, + [13] = { 53, 19, 26, 503, }, + [14] = { 56, 20, 30, 568, }, + [15] = { 59, 21, 34, 640, }, + [16] = { 62, 22, 38, 720, }, + [17] = { 64, 22, 41, 779, }, + [18] = { 66, 23, 44, 841, }, + [19] = { 68, 24, 48, 907, }, + [20] = { 70, 24, 52, 979, }, + [21] = { 72, 25, 56, 1055, }, + [22] = { 74, 26, 60, 1136, }, + [23] = { 76, 26, 64, 1223, }, + [24] = { 78, 27, 69, 1316, }, + [25] = { 80, 27, 74, 1415, }, + [26] = { 82, 28, 80, 1521, }, + [27] = { 84, 29, 86, 1634, }, + [28] = { 86, 30, 92, 1755, }, + [29] = { 88, 30, 99, 1884, }, + [30] = { 90, 30, 106, 2021, }, + }, +} +skills["VaalLightningTrap"] = { + name = "Vaal Lightning Trap", + gemTags = { + projectile = true, + trap = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + trap = true, + projectile = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [3] = true, [37] = true, [19] = true, [12] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.9), + skill("critChance", 5), + --"base_trap_duration" = 16000 + mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 + skill("duration", 4), --"base_skill_effect_duration" = 4000 + mod("PierceChance", "BASE", 100), --"pierce_%" = 100 + --"projectiles_nova" = ? + --"is_trap" = ? + --"base_skill_is_trapped" = ? + --"base_is_projectile" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"lightning_trap_projectiles_leave_shocking_ground" = ? + }, + qualityMods = { + mod("TrapThrowingSpeed", "INC", 0.5), --"trap_throwing_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 3, 62, }, + [2] = { 15, 4, 77, }, + [3] = { 19, 5, 98, }, + [4] = { 23, 7, 124, }, + [5] = { 27, 8, 153, }, + [6] = { 31, 10, 188, }, + [7] = { 35, 12, 228, }, + [8] = { 38, 14, 263, }, + [9] = { 41, 16, 301, }, + [10] = { 44, 18, 344, }, + [11] = { 47, 21, 391, }, + [12] = { 50, 23, 444, }, + [13] = { 53, 26, 503, }, + [14] = { 56, 30, 568, }, + [15] = { 59, 34, 640, }, + [16] = { 62, 38, 720, }, + [17] = { 64, 41, 779, }, + [18] = { 66, 44, 841, }, + [19] = { 68, 48, 907, }, + [20] = { 70, 52, 979, }, + [21] = { 72, 56, 1055, }, + [22] = { 74, 60, 1136, }, + [23] = { 76, 64, 1223, }, + [24] = { 78, 69, 1316, }, + [25] = { 80, 74, 1415, }, + [26] = { 82, 80, 1521, }, + [27] = { 84, 86, 1634, }, + [28] = { 86, 92, 1755, }, + [29] = { 88, 99, 1884, }, + [30] = { 90, 106, 2021, }, + }, +} +skills["LightningWarp"] = { + name = "Lightning Warp", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + movement = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + movement = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [38] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"is_area_damage" = 1 + --"skill_override_pvp_scaling_time_ms" = 1000 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" + }, + levels = { + [1] = { 10, 15, 1, 19, 0, }, + [2] = { 13, 16, 1, 24, -2, }, + [3] = { 17, 17, 2, 33, -4, }, + [4] = { 21, 18, 2, 44, -6, }, + [5] = { 25, 18, 3, 58, -8, }, + [6] = { 29, 20, 4, 75, -10, }, + [7] = { 33, 21, 5, 96, -12, }, + [8] = { 36, 22, 6, 115, -14, }, + [9] = { 39, 23, 7, 137, -16, }, + [10] = { 42, 24, 9, 162, -18, }, + [11] = { 45, 26, 10, 192, -20, }, + [12] = { 48, 26, 12, 226, -22, }, + [13] = { 51, 27, 14, 266, -24, }, + [14] = { 54, 28, 16, 312, -26, }, + [15] = { 57, 29, 19, 365, -28, }, + [16] = { 60, 30, 22, 426, -30, }, + [17] = { 63, 30, 26, 497, -32, }, + [18] = { 66, 31, 30, 579, -34, }, + [19] = { 68, 32, 34, 640, -36, }, + [20] = { 70, 33, 37, 707, -38, }, + [21] = { 72, 34, 41, 780, -40, }, + [22] = { 74, 34, 45, 861, -42, }, + [23] = { 76, 34, 50, 949, -44, }, + [24] = { 78, 34, 55, 1046, -46, }, + [25] = { 80, 35, 61, 1152, -48, }, + [26] = { 82, 35, 67, 1269, -50, }, + [27] = { 84, 36, 73, 1396, -52, }, + [28] = { 86, 37, 81, 1536, -54, }, + [29] = { 88, 37, 89, 1689, -56, }, + [30] = { 90, 37, 98, 1856, -58, }, + }, +} +skills["VaalLightningWarpInstant"] = { + name = "Vaal Lightning Warp", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 0.5), + skill("critChance", 5), + --"is_area_damage" = 1 + --"skill_override_pvp_scaling_time_ms" = 1000 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("Speed", "INC", 1, ModFlag.Cast), --"base_cast_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [4] = mod("Duration", "INC", nil), --"skill_effect_duration_+%" + }, + levels = { + [1] = { 10, 1, 18, 0, }, + [2] = { 13, 1, 24, -2, }, + [3] = { 17, 2, 32, -4, }, + [4] = { 21, 2, 42, -6, }, + [5] = { 25, 3, 54, -8, }, + [6] = { 29, 4, 70, -10, }, + [7] = { 33, 5, 88, -12, }, + [8] = { 36, 5, 104, -14, }, + [9] = { 39, 6, 123, -16, }, + [10] = { 42, 8, 145, -18, }, + [11] = { 45, 9, 170, -20, }, + [12] = { 48, 10, 199, -22, }, + [13] = { 51, 12, 232, -24, }, + [14] = { 54, 14, 270, -26, }, + [15] = { 57, 17, 314, -28, }, + [16] = { 60, 19, 364, -30, }, + [17] = { 63, 22, 420, -32, }, + [18] = { 66, 26, 485, -34, }, + [19] = { 68, 28, 534, -36, }, + [20] = { 70, 31, 586, -38, }, + [21] = { 72, 34, 644, -40, }, + [22] = { 74, 37, 707, -42, }, + [23] = { 76, 41, 775, -44, }, + [24] = { 78, 45, 850, -46, }, + [25] = { 80, 49, 931, -48, }, + [26] = { 82, 54, 1019, -50, }, + [27] = { 84, 59, 1116, -52, }, + [28] = { 86, 64, 1221, -54, }, + [29] = { 88, 70, 1335, -56, }, + [30] = { 90, 77, 1459, -58, }, + }, +} +skills["MagmaOrb"] = { + name = "Magma Orb", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + chaining = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + chaining = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [19] = true, [18] = true, [36] = true, [33] = true, [3] = true, [26] = true, [23] = true, }, + baseMods = { + skill("castTime", 0.7), + skill("damageEffectiveness", 1.25), + skill("critChance", 5), + --"is_area_damage" = ? + --"base_is_projectile" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [5] = mod("ChainCount", "BASE", nil), --"number_of_additional_projectiles_in_chain" + }, + levels = { + [1] = { 1, 5, 6, 9, 1, }, + [2] = { 2, 6, 7, 10, 1, }, + [3] = { 4, 6, 8, 12, 1, }, + [4] = { 7, 7, 11, 17, 1, }, + [5] = { 11, 7, 16, 24, 1, }, + [6] = { 16, 8, 25, 37, 1, }, + [7] = { 20, 9, 33, 50, 1, }, + [8] = { 24, 10, 44, 66, 1, }, + [9] = { 28, 11, 58, 87, 1, }, + [10] = { 32, 12, 75, 112, 2, }, + [11] = { 36, 13, 96, 144, 2, }, + [12] = { 40, 14, 122, 183, 2, }, + [13] = { 44, 15, 154, 232, 2, }, + [14] = { 48, 16, 194, 291, 2, }, + [15] = { 52, 18, 243, 365, 2, }, + [16] = { 56, 19, 303, 454, 2, }, + [17] = { 60, 20, 376, 564, 2, }, + [18] = { 64, 21, 466, 698, 2, }, + [19] = { 67, 21, 545, 818, 2, }, + [20] = { 70, 22, 637, 956, 2, }, + [21] = { 72, 23, 707, 1060, 3, }, + [22] = { 74, 23, 784, 1175, 3, }, + [23] = { 76, 24, 868, 1302, 3, }, + [24] = { 78, 24, 961, 1442, 3, }, + [25] = { 80, 25, 1063, 1595, 3, }, + [26] = { 82, 26, 1176, 1764, 3, }, + [27] = { 84, 26, 1300, 1950, 3, }, + [28] = { 86, 27, 1437, 2155, 3, }, + [29] = { 88, 27, 1587, 2380, 3, }, + [30] = { 90, 28, 1752, 2628, 3, }, + }, +} +skills["OrbOfStorms"] = { + name = "Orb of Storms", + gemTags = { + lightning = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + area = true, + chaining = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + chaining = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [35] = true, [12] = true, [11] = true, [23] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.2), + skill("critChance", 5), + skill("cooldown", 0.5), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + mod("ChainCount", "BASE", 0), --"number_of_additional_projectiles_in_chain" = 0 + --"storm_cloud_charged_damage_+%_final" = 0 + --"skill_can_add_multiple_charges_per_action" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + --[5] = "projectile_number_to_split" + }, + levels = { + [1] = { 4, 11, 1, 3, 2, }, + [2] = { 6, 12, 1, 3, 2, }, + [3] = { 9, 13, 1, 4, 2, }, + [4] = { 12, 14, 2, 6, 2, }, + [5] = { 16, 15, 3, 8, 2, }, + [6] = { 20, 16, 3, 10, 2, }, + [7] = { 24, 17, 4, 13, 2, }, + [8] = { 28, 18, 6, 17, 2, }, + [9] = { 32, 19, 7, 22, 3, }, + [10] = { 36, 20, 10, 29, 3, }, + [11] = { 40, 21, 12, 36, 3, }, + [12] = { 44, 22, 15, 45, 3, }, + [13] = { 48, 23, 19, 56, 3, }, + [14] = { 52, 24, 23, 70, 3, }, + [15] = { 55, 25, 27, 82, 3, }, + [16] = { 58, 26, 32, 96, 3, }, + [17] = { 61, 26, 37, 112, 4, }, + [18] = { 64, 27, 44, 131, 4, }, + [19] = { 67, 27, 51, 152, 4, }, + [20] = { 70, 28, 59, 177, 4, }, + [21] = { 72, 28, 65, 195, 4, }, + [22] = { 74, 29, 72, 215, 4, }, + [23] = { 76, 29, 79, 238, 4, }, + [24] = { 78, 30, 87, 262, 4, }, + [25] = { 80, 30, 96, 289, 5, }, + [26] = { 82, 30, 106, 318, 5, }, + [27] = { 84, 30, 117, 350, 5, }, + [28] = { 86, 31, 128, 385, 5, }, + [29] = { 88, 31, 141, 424, 5, }, + [30] = { 90, 32, 155, 466, 5, }, + }, +} +skills["PowerSiphon"] = { + name = "Power Siphon", + gemTags = { + intelligence = true, + active_skill = true, + attack = true, + projectile = true, + }, + color = 3, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["Wand"] = true, + }, + baseMods = { + skill("castTime", 1), + --"kill_enemy_on_hit_if_under_10%_life" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 13, 30, }, + [2] = { 15, 13, 31.6, }, + [3] = { 19, 13, 33.2, }, + [4] = { 23, 13, 34.8, }, + [5] = { 27, 13, 36.4, }, + [6] = { 31, 13, 38, }, + [7] = { 35, 13, 39.6, }, + [8] = { 38, 14, 41.2, }, + [9] = { 41, 14, 42.8, }, + [10] = { 44, 14, 44.4, }, + [11] = { 47, 14, 46, }, + [12] = { 50, 14, 47.6, }, + [13] = { 53, 14, 49.2, }, + [14] = { 56, 14, 50.8, }, + [15] = { 59, 14, 52.4, }, + [16] = { 62, 14, 54, }, + [17] = { 64, 14, 55.6, }, + [18] = { 66, 14, 57.2, }, + [19] = { 68, 15, 58.8, }, + [20] = { 70, 15, 60.4, }, + [21] = { 72, 15, 62, }, + [22] = { 74, 15, 63.6, }, + [23] = { 76, 15, 65.2, }, + [24] = { 78, 15, 66.8, }, + [25] = { 80, 15, 68.4, }, + [26] = { 82, 16, 70, }, + [27] = { 84, 16, 71.6, }, + [28] = { 86, 16, 73.2, }, + [29] = { 88, 16, 74.8, }, + [30] = { 90, 16, 76.4, }, + }, +} +skills["VaalPowerSiphon"] = { + name = "Vaal Power Siphon", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + attack = true, + projectile = true, + }, + color = 3, + baseFlags = { + attack = true, + projectile = true, + vaal = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [22] = true, [17] = true, [19] = true, [43] = true, }, + weaponTypes = { + ["Wand"] = true, + }, + baseMods = { + skill("castTime", 1), + --"power_siphon_fire_at_all_targets" = ? + --"skill_can_add_multiple_charges_per_action" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + --"kill_enemy_on_hit_if_under_10%_life" = ? + --"skill_can_fire_wand_projectiles" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 25, }, + [2] = { 15, 26.6, }, + [3] = { 19, 28.2, }, + [4] = { 23, 29.8, }, + [5] = { 27, 31.4, }, + [6] = { 31, 33, }, + [7] = { 35, 34.6, }, + [8] = { 38, 36.2, }, + [9] = { 41, 37.8, }, + [10] = { 44, 39.4, }, + [11] = { 47, 41, }, + [12] = { 50, 42.6, }, + [13] = { 53, 44.2, }, + [14] = { 56, 45.8, }, + [15] = { 59, 47.4, }, + [16] = { 62, 49, }, + [17] = { 64, 50.6, }, + [18] = { 66, 52.2, }, + [19] = { 68, 53.8, }, + [20] = { 70, 55.4, }, + [21] = { 72, 57, }, + [22] = { 74, 58.6, }, + [23] = { 76, 60.2, }, + [24] = { 78, 61.8, }, + [25] = { 80, 63.4, }, + [26] = { 82, 65, }, + [27] = { 84, 66.6, }, + [28] = { 86, 68.2, }, + [29] = { 88, 69.8, }, + [30] = { 90, 71.4, }, + }, +} +skills["Purity"] = { + name = "Purity of Elements", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + mod("FireResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" = 0 + mod("ColdResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_cold_damage_resistance_%" = 0 + mod("LightningResistMax", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" = 0 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_resist_all_elements_%" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 12, 0, }, + [2] = { 27, 13, 3, }, + [3] = { 30, 14, 6, }, + [4] = { 33, 15, 9, }, + [5] = { 36, 15, 12, }, + [6] = { 39, 16, 15, }, + [7] = { 42, 17, 18, }, + [8] = { 45, 18, 21, }, + [9] = { 48, 19, 23, }, + [10] = { 50, 20, 25, }, + [11] = { 52, 20, 27, }, + [12] = { 54, 21, 29, }, + [13] = { 56, 22, 31, }, + [14] = { 58, 23, 33, }, + [15] = { 60, 24, 35, }, + [16] = { 62, 25, 36, }, + [17] = { 64, 25, 37, }, + [18] = { 66, 26, 38, }, + [19] = { 68, 27, 39, }, + [20] = { 70, 27, 40, }, + [21] = { 72, 28, 41, }, + [22] = { 74, 29, 42, }, + [23] = { 76, 29, 43, }, + [24] = { 78, 30, 44, }, + [25] = { 80, 31, 45, }, + [26] = { 82, 31, 46, }, + [27] = { 84, 32, 47, }, + [28] = { 86, 33, 48, }, + [29] = { 88, 33, 49, }, + [30] = { 90, 34, 50, }, + }, +} +skills["LightningResistAura"] = { + name = "Purity of Lightning", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_lightning_damage_resistance_%" + [3] = mod("LightningResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_lightning_damage_resistance_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 22, 0, 0, }, + [2] = { 27, 23, 0, 3, }, + [3] = { 30, 24, 0, 6, }, + [4] = { 33, 25, 0, 9, }, + [5] = { 36, 26, 1, 12, }, + [6] = { 39, 27, 1, 15, }, + [7] = { 42, 28, 1, 18, }, + [8] = { 45, 29, 1, 21, }, + [9] = { 48, 30, 1, 23, }, + [10] = { 50, 31, 1, 25, }, + [11] = { 52, 32, 2, 27, }, + [12] = { 54, 33, 2, 29, }, + [13] = { 56, 34, 2, 31, }, + [14] = { 58, 35, 2, 33, }, + [15] = { 60, 36, 2, 35, }, + [16] = { 62, 37, 2, 36, }, + [17] = { 64, 38, 3, 37, }, + [18] = { 66, 39, 3, 38, }, + [19] = { 68, 40, 3, 39, }, + [20] = { 70, 41, 4, 40, }, + [21] = { 72, 42, 4, 41, }, + [22] = { 74, 43, 4, 42, }, + [23] = { 76, 44, 5, 43, }, + [24] = { 78, 45, 5, 44, }, + [25] = { 80, 46, 5, 45, }, + [26] = { 82, 47, 5, 46, }, + [27] = { 84, 48, 5, 47, }, + [28] = { 86, 49, 5, 48, }, + [29] = { 88, 50, 5, 49, }, + [30] = { 90, 51, 5, 50, }, + }, +} +skills["RaiseSpectre"] = { + name = "Raise Spectre", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + }, + minionList = { + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + spectre = true, + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [2] = true, [10] = true, [11] = true, [3] = true, [23] = true, [12] = true, [30] = true, [37] = true, [41] = true, [40] = true, [58] = true, [32] = true, [48] = true, }, + baseMods = { + skill("castTime", 0.85), + mod("ActiveSpectreLimit", "BASE", 1), --"base_number_of_spectres_allowed" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "MORE", 55) }), --"active_skill_minion_movement_velocity_+%_final" = 55 + --"movement_velocity_cap" = -89 + --"damage_taken_+%_from_arrow_traps_final" = -90 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("ElementalResist", "BASE", 30) }), --"minion_elemental_resistance_%" = 30 + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 1) }), --"minion_movement_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", nil) }), --"active_skill_minion_damage_+%_final" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "MORE", nil) }), --"active_skill_minion_life_+%_final" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("EnergyShield", "MORE", nil) }), --"active_skill_minion_energy_shield_+%_final" + }, + levels = { + [1] = { 28, 21, -30, -20, -20, }, + [2] = { 31, 23, -25, -19, -19, }, + [3] = { 34, 24, -21, -18, -18, }, + [4] = { 37, 26, -17, -17, -17, }, + [5] = { 40, 27, -14, -16, -16, }, + [6] = { 42, 28, -11, -15, -15, }, + [7] = { 44, 29, -8, -14, -14, }, + [8] = { 46, 30, -6, -13, -13, }, + [9] = { 48, 31, -4, -12, -12, }, + [10] = { 50, 32, -2, -11, -11, }, + [11] = { 52, 33, 0, -10, -10, }, + [12] = { 54, 34, 1, -9, -9, }, + [13] = { 56, 35, 2, -8, -8, }, + [14] = { 58, 36, 3, -7, -7, }, + [15] = { 60, 37, 4, -6, -6, }, + [16] = { 62, 38, 5, -5, -5, }, + [17] = { 64, 39, 6, -4, -4, }, + [18] = { 66, 40, 7, -3, -3, }, + [19] = { 68, 41, 8, -2, -2, }, + [20] = { 70, 42, 10, 0, 0, }, + [21] = { 72, 43, 12, 2, 2, }, + [22] = { 74, 44, 14, 4, 4, }, + [23] = { 76, 44, 16, 6, 6, }, + [24] = { 78, 45, 18, 8, 8, }, + [25] = { 80, 46, 20, 10, 10, }, + [26] = { 82, 47, 22, 12, 12, }, + [27] = { 84, 48, 24, 14, 14, }, + [28] = { 86, 49, 26, 16, 16, }, + [29] = { 88, 50, 28, 18, 18, }, + [30] = { 90, 51, 30, 20, 20, }, + }, +} +skills["RaiseZombie"] = { + name = "Raise Zombie", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + }, + minionList = { + "RaisedZombie", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [11] = true, }, + baseMods = { + skill("castTime", 0.85), + mod("ActiveZombieLimit", "BASE", 3), --"base_number_of_zombies_allowed" = 3 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", 0) }), --"active_skill_minion_damage_+%_final" = 0 + --"display_minion_monster_type" = 1 + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 1) }), --"minion_movement_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 1, 10, 2, }, + [2] = { 2, 11, 3, }, + [3] = { 4, 12, 5, }, + [4] = { 7, 13, 8, }, + [5] = { 11, 14, 12, }, + [6] = { 16, 16, 16, }, + [7] = { 20, 18, 20, }, + [8] = { 24, 21, 24, }, + [9] = { 28, 24, 28, }, + [10] = { 32, 26, 32, }, + [11] = { 36, 28, 36, }, + [12] = { 40, 30, 40, }, + [13] = { 44, 31, 44, }, + [14] = { 48, 32, 48, }, + [15] = { 52, 33, 52, }, + [16] = { 56, 34, 56, }, + [17] = { 60, 35, 60, }, + [18] = { 64, 36, 64, }, + [19] = { 67, 37, 67, }, + [20] = { 70, 38, 70, }, + [21] = { 72, 38, 72, }, + [22] = { 74, 38, 74, }, + [23] = { 76, 38, 76, }, + [24] = { 78, 39, 78, }, + [25] = { 80, 40, 80, }, + [26] = { 82, 40, 82, }, + [27] = { 84, 41, 84, }, + [28] = { 86, 42, 86, }, + [29] = { 88, 42, 88, }, + [30] = { 90, 42, 90, }, + }, +} +skills["RighteousFire"] = { + name = "Righteous Fire", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + setupFunc = function(actor, output) + if actor.mainSkill.skillFlags.totem then + actor.mainSkill.skillData.FireDot = output.TotemLife * 0.5 + else + actor.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5 + end + end, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [29] = true, [36] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + --"base_righteous_fire_%_of_max_life_to_deal_to_nearby_per_minute" = 3000 + --"base_nonlethal_fire_damage_%_of_maximum_life_taken_per_minute" = 5400 + --"base_righteous_fire_%_of_max_energy_shield_to_deal_to_nearby_per_minute" = 3000 + --"base_nonlethal_fire_damage_%_of_maximum_energy_shield_taken_per_minute" = 4200 + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"spell_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Buff" }), --"righteous_fire_spell_damage_+%_final" + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 16, 40, 0, }, + [2] = { 20, 41, 0, }, + [3] = { 24, 42, 0, }, + [4] = { 28, 43, 1, }, + [5] = { 31, 44, 1, }, + [6] = { 34, 45, 1, }, + [7] = { 37, 46, 1, }, + [8] = { 40, 47, 2, }, + [9] = { 43, 48, 2, }, + [10] = { 46, 49, 2, }, + [11] = { 49, 50, 2, }, + [12] = { 52, 51, 3, }, + [13] = { 55, 52, 3, }, + [14] = { 58, 53, 3, }, + [15] = { 60, 54, 3, }, + [16] = { 62, 55, 4, }, + [17] = { 64, 56, 4, }, + [18] = { 66, 57, 4, }, + [19] = { 68, 58, 4, }, + [20] = { 70, 59, 5, }, + [21] = { 72, 60, 5, }, + [22] = { 74, 61, 5, }, + [23] = { 76, 62, 5, }, + [24] = { 78, 63, 6, }, + [25] = { 80, 64, 6, }, + [26] = { 82, 65, 6, }, + [27] = { 84, 66, 6, }, + [28] = { 86, 67, 7, }, + [29] = { 88, 68, 7, }, + [30] = { 90, 69, 7, }, + }, +} +skills["VaalRighteousFire"] = { + name = "Vaal Righteous Fire", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + fire = true, + }, + setupFunc = function(actor, output) + actor.mainSkill.skillData.FireMin = output.EnergyShield + output.Life - 1 + actor.mainSkill.skillData.FireMax = output.EnergyShield + output.Life - 1 + end, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + vaal = true, + }, + skillTypes = { [2] = true, [11] = true, [10] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + --"damage_cannot_be_reflected" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, ModFlag.Spell, 0, nil), --"spell_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" + }, + levels = { + [1] = { 16, 20, }, + [2] = { 20, 21, }, + [3] = { 24, 22, }, + [4] = { 28, 23, }, + [5] = { 31, 24, }, + [6] = { 34, 25, }, + [7] = { 37, 26, }, + [8] = { 40, 27, }, + [9] = { 43, 28, }, + [10] = { 46, 29, }, + [11] = { 49, 30, }, + [12] = { 52, 31, }, + [13] = { 55, 32, }, + [14] = { 58, 33, }, + [15] = { 60, 34, }, + [16] = { 62, 35, }, + [17] = { 64, 36, }, + [18] = { 66, 37, }, + [19] = { 68, 38, }, + [20] = { 70, 39, }, + [21] = { 72, 40, }, + [22] = { 74, 41, }, + [23] = { 76, 42, }, + [24] = { 78, 43, }, + [25] = { 80, 44, }, + [26] = { 82, 45, }, + [27] = { 84, 46, }, + [28] = { 86, 47, }, + [29] = { 88, 48, }, + [30] = { 90, 49, }, + }, +} +skills["FireBeam"] = { + name = "Scorching Ray", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + fire = true, + duration = true, + channelling = true, + }, + parts = { + { + name = "1 Stage", + }, + { + name = "4 Stages", + }, + { + name = "8 Stages", + }, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [18] = true, [40] = true, [33] = true, [29] = true, [12] = true, [58] = true, [59] = true, [52] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"fire_beam_additional_stack_damage_+%_final" = -40 + --"display_max_fire_beam_stacks" = 8 + mod("FireResist", "BASE", -3, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"fire_beam_enemy_fire_resistance_%_per_stack" = -3 + --"fire_beam_enemy_fire_resistance_%_maximum" = -24 + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + skill("stackCount", 4, { type = "SkillPart", skillPart = 2 }), + skill("stackCount", 8, { type = "SkillPart", skillPart = 3 }), + mod("Damage", "MORE", 180, 0, 0, { type = "SkillPart", skillPart = 2 }), + mod("Damage", "MORE", 420, 0, 0, { type = "SkillPart", skillPart = 3 }), + }, + qualityMods = { + --"fire_beam_length_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 12, 4, 9.6833333333333, }, + [2] = { 15, 4, 12.65, }, + [3] = { 19, 4, 17.683333333333, }, + [4] = { 23, 5, 24.233333333333, }, + [5] = { 27, 5, 32.716666666667, }, + [6] = { 31, 5, 43.666666666667, }, + [7] = { 35, 6, 57.7, }, + [8] = { 38, 6, 70.75, }, + [9] = { 41, 6, 86.4, }, + [10] = { 44, 7, 105.13333333333, }, + [11] = { 47, 7, 127.55, }, + [12] = { 50, 7, 154.3, }, + [13] = { 53, 8, 186.2, }, + [14] = { 56, 8, 224.16666666667, }, + [15] = { 59, 8, 269.33333333333, }, + [16] = { 62, 9, 322.96666666667, }, + [17] = { 64, 9, 364.18333333333, }, + [18] = { 66, 9, 410.36666666667, }, + [19] = { 68, 10, 462.06666666667, }, + [20] = { 70, 10, 519.93333333333, }, + [21] = { 72, 10, 584.7, }, + [22] = { 74, 11, 657.13333333333, }, + [23] = { 76, 11, 738.1, }, + [24] = { 78, 11, 828.61666666667, }, + [25] = { 80, 12, 929.73333333333, }, + [26] = { 82, 12, 1042.6833333333, }, + [27] = { 84, 12, 1168.8, }, + [28] = { 86, 13, 1309.5833333333, }, + [29] = { 88, 13, 1466.6666666667, }, + [30] = { 90, 13, 1641.9166666667, }, + }, +} +skills["ShockNova"] = { + name = "Shock Nova", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + parts = { + { + name = "Ring", + }, + { + name = "Nova", + }, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, [43] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("damageEffectiveness", 0.6), + skill("critChance", 6), + mod("Damage", "MORE", -80, 0, 0, { type = "SkillPart", skillPart = 1 }), --"newshocknova_first_ring_damage_+%_final" = -80 + mod("EnemyShockChance", "BASE", 20), --"base_chance_to_shock_%" = 20 + --"is_area_damage" = ? + }, + qualityMods = { + mod("EnemyShockDuration", "INC", 2), --"shock_duration_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 28, 13, 26, 79, }, + [2] = { 31, 14, 32, 95, }, + [3] = { 34, 15, 38, 115, }, + [4] = { 37, 16, 46, 137, }, + [5] = { 40, 17, 55, 164, }, + [6] = { 42, 18, 61, 184, }, + [7] = { 44, 18, 69, 206, }, + [8] = { 46, 19, 77, 231, }, + [9] = { 48, 19, 86, 258, }, + [10] = { 50, 20, 96, 288, }, + [11] = { 52, 20, 107, 321, }, + [12] = { 54, 21, 119, 358, }, + [13] = { 56, 22, 133, 399, }, + [14] = { 58, 22, 148, 443, }, + [15] = { 60, 23, 164, 493, }, + [16] = { 62, 23, 182, 547, }, + [17] = { 64, 24, 202, 607, }, + [18] = { 66, 25, 224, 673, }, + [19] = { 68, 25, 248, 745, }, + [20] = { 70, 26, 275, 825, }, + [21] = { 72, 26, 304, 913, }, + [22] = { 74, 27, 336, 1009, }, + [23] = { 76, 28, 372, 1115, }, + [24] = { 78, 28, 411, 1232, }, + [25] = { 80, 29, 453, 1360, }, + [26] = { 82, 29, 500, 1501, }, + [27] = { 84, 30, 552, 1655, }, + [28] = { 86, 31, 608, 1824, }, + [29] = { 88, 31, 670, 2010, }, + [30] = { 90, 32, 738, 2214, }, + }, +} +skills["Spark"] = { + name = "Spark", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.7), + skill("critChance", 6), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 1, 5, 1, 20, 4, }, + [2] = { 2, 6, 1, 22, 4, }, + [3] = { 4, 7, 1, 27, 4, }, + [4] = { 7, 8, 2, 36, 4, }, + [5] = { 11, 9, 3, 49, 4, }, + [6] = { 16, 10, 4, 69, 4, }, + [7] = { 20, 11, 5, 88, 4, }, + [8] = { 24, 12, 6, 110, 4, }, + [9] = { 28, 14, 7, 136, 5, }, + [10] = { 32, 16, 9, 167, 5, }, + [11] = { 36, 17, 11, 202, 5, }, + [12] = { 40, 18, 13, 243, 5, }, + [13] = { 44, 19, 15, 291, 5, }, + [14] = { 48, 20, 18, 345, 5, }, + [15] = { 52, 21, 22, 409, 5, }, + [16] = { 56, 22, 25, 481, 5, }, + [17] = { 60, 22, 30, 565, 6, }, + [18] = { 64, 22, 35, 661, 6, }, + [19] = { 67, 22, 39, 742, 6, }, + [20] = { 70, 23, 44, 832, 6, }, + [21] = { 72, 23, 47, 897, 6, }, + [22] = { 74, 24, 51, 967, 6, }, + [23] = { 76, 24, 55, 1041, 6, }, + [24] = { 78, 25, 59, 1120, 6, }, + [25] = { 80, 25, 63, 1205, 7, }, + [26] = { 82, 26, 68, 1296, 7, }, + [27] = { 84, 26, 73, 1393, 7, }, + [28] = { 86, 26, 79, 1496, 7, }, + [29] = { 88, 26, 85, 1607, 7, }, + [30] = { 90, 27, 91, 1725, 7, }, + }, +} +skills["VaalSparkSpiralNova"] = { + name = "Vaal Spark", + gemTags = { + projectile = true, + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.4), + skill("critChance", 5), + skill("duration", 2), --"base_skill_effect_duration" = 2000 + --"base_number_of_projectiles_in_spiral_nova" = 100 + --"projectile_spiral_nova_time_ms" = 3000 + --"projectile_spiral_nova_angle" = 0 + --"base_is_projectile" = ? + }, + qualityMods = { + mod("ProjectileSpeed", "INC", 1), --"base_projectile_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 1, 1, 11, }, + [2] = { 2, 1, 12, }, + [3] = { 4, 1, 15, }, + [4] = { 7, 1, 19, }, + [5] = { 11, 1, 27, }, + [6] = { 16, 2, 37, }, + [7] = { 20, 3, 48, }, + [8] = { 24, 3, 60, }, + [9] = { 28, 4, 74, }, + [10] = { 32, 5, 91, }, + [11] = { 36, 6, 110, }, + [12] = { 40, 7, 133, }, + [13] = { 44, 8, 159, }, + [14] = { 48, 10, 188, }, + [15] = { 52, 12, 223, }, + [16] = { 56, 14, 263, }, + [17] = { 60, 16, 308, }, + [18] = { 64, 19, 361, }, + [19] = { 67, 21, 405, }, + [20] = { 70, 24, 454, }, + [21] = { 72, 26, 489, }, + [22] = { 74, 28, 527, }, + [23] = { 76, 30, 568, }, + [24] = { 78, 32, 611, }, + [25] = { 80, 35, 658, }, + [26] = { 82, 37, 707, }, + [27] = { 84, 40, 760, }, + [28] = { 86, 43, 816, }, + [29] = { 88, 46, 877, }, + [30] = { 90, 50, 941, }, + }, +} +skills["SpiritOffering"] = { + name = "Spirit Offering", + gemTags = { + minion = true, + intelligence = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [36] = true, [9] = true, [49] = true, [17] = true, [19] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"offering_skill_effect_duration_per_corpse" = 500 + --"spirit_offering_life_%_added_as_base_maximum_energy_shield_per_corpse_consumed" = 2 + --"base_deal_no_damage" = ? + skill("offering", true), + }, + qualityMods = { + mod("Duration", "INC", 0.5), --"skill_effect_duration_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("PhysicalDamageGainAsChaos", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_chaos" + [4] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" + }, + levels = { + [1] = { 12, 16, 20, 20, }, + [2] = { 15, 17, 20, 21, }, + [3] = { 19, 18, 21, 21, }, + [4] = { 23, 19, 21, 22, }, + [5] = { 27, 20, 22, 22, }, + [6] = { 31, 21, 22, 23, }, + [7] = { 35, 22, 23, 23, }, + [8] = { 38, 23, 23, 24, }, + [9] = { 41, 24, 24, 24, }, + [10] = { 44, 25, 24, 25, }, + [11] = { 47, 26, 25, 25, }, + [12] = { 50, 27, 25, 26, }, + [13] = { 53, 28, 26, 26, }, + [14] = { 56, 29, 26, 27, }, + [15] = { 59, 29, 27, 27, }, + [16] = { 62, 30, 27, 28, }, + [17] = { 64, 30, 28, 28, }, + [18] = { 66, 31, 28, 29, }, + [19] = { 68, 32, 29, 29, }, + [20] = { 70, 33, 29, 30, }, + [21] = { 72, 34, 30, 30, }, + [22] = { 74, 34, 30, 31, }, + [23] = { 76, 35, 31, 31, }, + [24] = { 78, 36, 31, 32, }, + [25] = { 80, 37, 32, 32, }, + [26] = { 82, 38, 32, 33, }, + [27] = { 84, 38, 33, 33, }, + [28] = { 86, 39, 33, 34, }, + [29] = { 88, 40, 34, 34, }, + [30] = { 90, 41, 34, 35, }, + }, +} +skills["StormCall"] = { + name = "Storm Call", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [36] = true, [26] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.8), + skill("critChance", 6), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + --[5] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 6, 13, 24, 0, }, + [2] = { 15, 7, 16, 30, 0, }, + [3] = { 19, 8, 22, 40, 1, }, + [4] = { 23, 9, 28, 53, 1, }, + [5] = { 27, 10, 37, 68, 1, }, + [6] = { 31, 11, 46, 86, 2, }, + [7] = { 35, 12, 58, 108, 2, }, + [8] = { 38, 13, 69, 128, 2, }, + [9] = { 41, 13, 81, 151, 3, }, + [10] = { 44, 14, 95, 177, 3, }, + [11] = { 47, 14, 111, 206, 3, }, + [12] = { 50, 15, 130, 241, 4, }, + [13] = { 53, 16, 151, 280, 4, }, + [14] = { 56, 16, 175, 325, 4, }, + [15] = { 59, 17, 202, 376, 5, }, + [16] = { 62, 18, 234, 434, 5, }, + [17] = { 64, 18, 257, 478, 5, }, + [18] = { 66, 19, 283, 525, 6, }, + [19] = { 68, 19, 310, 577, 6, }, + [20] = { 70, 19, 341, 633, 6, }, + [21] = { 72, 20, 374, 694, 7, }, + [22] = { 74, 21, 410, 761, 7, }, + [23] = { 76, 21, 449, 834, 7, }, + [24] = { 78, 21, 492, 914, 8, }, + [25] = { 80, 22, 538, 1000, 8, }, + [26] = { 82, 23, 589, 1094, 8, }, + [27] = { 84, 23, 644, 1196, 9, }, + [28] = { 86, 23, 704, 1308, 9, }, + [29] = { 88, 24, 769, 1429, 9, }, + [30] = { 90, 24, 840, 1560, 10, }, + }, +} +skills["VaalStormCall"] = { + name = "Vaal Storm Call", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + lightning = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.8), + skill("critChance", 6), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"is_area_damage" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 12, 13, 25, }, + [2] = { 15, 17, 31, }, + [3] = { 19, 22, 41, }, + [4] = { 23, 29, 53, }, + [5] = { 27, 36, 67, }, + [6] = { 31, 46, 85, }, + [7] = { 35, 57, 105, }, + [8] = { 38, 67, 124, }, + [9] = { 41, 78, 144, }, + [10] = { 44, 90, 168, }, + [11] = { 47, 105, 194, }, + [12] = { 50, 121, 225, }, + [13] = { 53, 140, 259, }, + [14] = { 56, 161, 298, }, + [15] = { 59, 184, 343, }, + [16] = { 62, 211, 393, }, + [17] = { 64, 231, 429, }, + [18] = { 66, 253, 470, }, + [19] = { 68, 276, 513, }, + [20] = { 70, 302, 560, }, + [21] = { 72, 329, 611, }, + [22] = { 74, 359, 666, }, + [23] = { 76, 391, 726, }, + [24] = { 78, 426, 791, }, + [25] = { 80, 464, 861, }, + [26] = { 82, 504, 937, }, + [27] = { 84, 549, 1019, }, + [28] = { 86, 596, 1108, }, + [29] = { 88, 648, 1204, }, + [30] = { 90, 704, 1307, }, + }, +} +skills["SummonChaosGolem"] = { + name = "Summon Chaos Golem", + gemTags = { + intelligence = true, + active_skill = true, + chaos = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedChaosGolem", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + golem = true, + chaos = true, + }, + skillTypes = { [36] = true, [50] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [12] = true, [2] = true, [10] = true, [11] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 5 + mod("Misc", "LIST", { type = "Condition", var = "HaveChaosGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + --[4] = "chaos_golem_grants_additional_physical_damage_reduction_%" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 3, 30, 34, }, + [2] = { 36, 32, 1, 3, 32, 36, }, + [3] = { 38, 34, 1, 3, 34, 38, }, + [4] = { 40, 36, 2, 3, 36, 40, }, + [5] = { 42, 38, 2, 3, 38, 42, }, + [6] = { 44, 40, 3, 3, 40, 44, }, + [7] = { 46, 42, 3, 3, 42, 46, }, + [8] = { 48, 44, 4, 3, 44, 48, }, + [9] = { 50, 44, 4, 3, 46, 50, }, + [10] = { 52, 46, 5, 3, 48, 52, }, + [11] = { 54, 48, 5, 3, 50, 54, }, + [12] = { 56, 48, 6, 4, 52, 56, }, + [13] = { 58, 50, 6, 4, 54, 58, }, + [14] = { 60, 50, 7, 4, 56, 60, }, + [15] = { 62, 52, 7, 4, 58, 62, }, + [16] = { 64, 52, 8, 4, 60, 64, }, + [17] = { 66, 52, 8, 4, 62, 66, }, + [18] = { 68, 52, 9, 4, 64, 68, }, + [19] = { 69, 54, 9, 4, 66, 69, }, + [20] = { 70, 54, 10, 4, 68, 70, }, + [21] = { 72, 56, 10, 4, 70, 72, }, + [22] = { 74, 56, 11, 5, 72, 74, }, + [23] = { 76, 58, 11, 5, 74, 76, }, + [24] = { 78, 58, 12, 5, 76, 78, }, + [25] = { 80, 60, 12, 5, 78, 80, }, + [26] = { 82, 60, 13, 5, 80, 82, }, + [27] = { 84, 60, 13, 5, 82, 84, }, + [28] = { 86, 60, 14, 5, 84, 86, }, + [29] = { 88, 62, 14, 5, 86, 88, }, + [30] = { 90, 62, 15, 5, 88, 90, }, + }, +} +skills["SummonLightningGolem"] = { + name = "Summon Lightning Golem", + gemTags = { + intelligence = true, + active_skill = true, + lightning = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedLightningGolem", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + golem = true, + lightning = true, + }, + skillTypes = { [36] = true, [35] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [45] = true, [62] = true, }, + minionSkillTypes = { [10] = true, [11] = true, [44] = true, [3] = true, [12] = true, [2] = true, [5] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 11 + mod("Misc", "LIST", { type = "Condition", var = "HaveLightningGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("Speed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"lightning_golem_grants_attack_and_cast_speed_+%" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 6, 30, 34, }, + [2] = { 36, 32, 1, 6, 32, 36, }, + [3] = { 38, 34, 2, 6, 34, 38, }, + [4] = { 40, 36, 3, 6, 36, 40, }, + [5] = { 42, 38, 4, 6, 38, 42, }, + [6] = { 44, 40, 5, 7, 40, 44, }, + [7] = { 46, 42, 6, 7, 42, 46, }, + [8] = { 48, 44, 7, 7, 44, 48, }, + [9] = { 50, 44, 8, 7, 46, 50, }, + [10] = { 52, 46, 9, 7, 48, 52, }, + [11] = { 54, 48, 10, 8, 50, 54, }, + [12] = { 56, 48, 11, 8, 52, 56, }, + [13] = { 58, 50, 12, 8, 54, 58, }, + [14] = { 60, 50, 13, 8, 56, 60, }, + [15] = { 62, 52, 14, 8, 58, 62, }, + [16] = { 64, 52, 15, 9, 60, 64, }, + [17] = { 66, 52, 16, 9, 62, 66, }, + [18] = { 68, 52, 17, 9, 64, 68, }, + [19] = { 69, 54, 18, 9, 66, 69, }, + [20] = { 70, 54, 19, 9, 68, 70, }, + [21] = { 72, 56, 20, 10, 70, 72, }, + [22] = { 74, 56, 21, 10, 72, 74, }, + [23] = { 76, 58, 22, 10, 74, 76, }, + [24] = { 78, 58, 23, 10, 76, 78, }, + [25] = { 80, 60, 24, 10, 78, 80, }, + [26] = { 82, 60, 25, 11, 80, 82, }, + [27] = { 84, 60, 26, 11, 82, 84, }, + [28] = { 86, 60, 27, 11, 84, 86, }, + [29] = { 88, 62, 28, 11, 86, 88, }, + [30] = { 90, 62, 29, 11, 88, 90, }, + }, +} +skills["SummonRagingSpirit"] = { + name = "Summon Raging Spirit", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + duration = true, + fire = true, + }, + minionList = { + "SummonedRagingSpirit", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, [33] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + mod("ActiveRagingSpiritLimit", "BASE", 20), --"base_number_of_raging_spirits_allowed" = 20 + skill("minionDamageEffectiveness", -30), --"active_skill_minion_added_damage_+%_final" = -30 + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 1) }), --"minion_movement_speed_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + }, + levels = { + [1] = { 4, 4, }, + [2] = { 6, 4, }, + [3] = { 9, 5, }, + [4] = { 12, 5, }, + [5] = { 16, 6, }, + [6] = { 20, 6, }, + [7] = { 24, 6, }, + [8] = { 28, 7, }, + [9] = { 32, 7, }, + [10] = { 36, 8, }, + [11] = { 40, 8, }, + [12] = { 44, 9, }, + [13] = { 48, 9, }, + [14] = { 52, 10, }, + [15] = { 55, 10, }, + [16] = { 58, 10, }, + [17] = { 61, 11, }, + [18] = { 64, 11, }, + [19] = { 67, 11, }, + [20] = { 70, 12, }, + [21] = { 72, 12, }, + [22] = { 74, 13, }, + [23] = { 76, 13, }, + [24] = { 78, 13, }, + [25] = { 80, 14, }, + [26] = { 82, 14, }, + [27] = { 84, 14, }, + [28] = { 86, 15, }, + [29] = { 88, 15, }, + [30] = { 90, 15, }, + }, +} +skills["SummonSkeletons"] = { + name = "Summon Skeletons", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + minion = true, + duration = true, + }, + minionList = { + "RaisedSkeleton", + "RaisedSkeletonCaster", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + duration = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [54] = true, [28] = true, }, + baseMods = { + skill("castTime", 0.8), + --"number_of_melee_skeletons_to_summon" = 2 + skill("duration", 20), --"base_skill_effect_duration" = 20000 + skill("minionDamageEffectiveness", -50), --"active_skill_minion_added_damage_+%_final" = -50 + --"display_minion_monster_type" = 2 + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("ActiveSkeletonLimit", "BASE", nil), --"base_number_of_skeletons_allowed" + [4] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 6, 4, 10, }, + [2] = { 13, 7, 4, 13, }, + [3] = { 17, 8, 4, 16, }, + [4] = { 21, 9, 4, 19, }, + [5] = { 25, 10, 4, 22, }, + [6] = { 29, 11, 4, 25, }, + [7] = { 33, 12, 4, 28, }, + [8] = { 36, 12, 4, 32, }, + [9] = { 39, 13, 5, 36, }, + [10] = { 42, 14, 5, 40, }, + [11] = { 45, 15, 5, 44, }, + [12] = { 48, 15, 5, 47, }, + [13] = { 51, 16, 5, 50, }, + [14] = { 54, 17, 5, 53, }, + [15] = { 57, 17, 5, 56, }, + [16] = { 60, 18, 6, 59, }, + [17] = { 63, 19, 6, 62, }, + [18] = { 66, 20, 6, 64, }, + [19] = { 68, 20, 6, 66, }, + [20] = { 70, 21, 6, 68, }, + [21] = { 72, 21, 6, 70, }, + [22] = { 74, 22, 6, 72, }, + [23] = { 76, 22, 6, 74, }, + [24] = { 78, 22, 6, 76, }, + [25] = { 80, 23, 6, 78, }, + [26] = { 82, 23, 6, 80, }, + [27] = { 84, 24, 6, 82, }, + [28] = { 86, 24, 6, 84, }, + [29] = { 88, 25, 6, 86, }, + [30] = { 90, 25, 6, 88, }, + }, +} +skills["VaalSummonSkeletons"] = { + name = "Vaal Summon Skeletons", + gemTags = { + intelligence = true, + active_skill = true, + vaal = true, + spell = true, + minion = true, + duration = true, + }, + minionList = { + "RaisedSkeleton", + "RaisedSkeletonCaster", + "RaisedSkeletonArcher", + }, + color = 3, + baseFlags = { + spell = true, + minion = true, + duration = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [43] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [3] = true, [48] = true, [28] = true, [2] = true, [11] = true, }, + baseMods = { + skill("castTime", 0.8), + --"number_of_leader_skeletons_to_summon" = 1 + skill("duration", 20), --"base_skill_effect_duration" = 20000 + --"display_minion_monster_type" = 2 + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "number_of_melee_skeletons_to_summon" + --[3] = "number_of_archer_skeletons_to_summon" + --[4] = "number_of_mage_skeletons_to_summon" + [5] = mod("ActiveSkeletonLimit", "BASE", nil), --"base_number_of_skeletons_allowed" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 10, 14, 2, 0, 17, 10, }, + [2] = { 13, 15, 2, 0, 18, 13, }, + [3] = { 17, 15, 3, 0, 19, 16, }, + [4] = { 21, 16, 3, 0, 20, 19, }, + [5] = { 25, 16, 4, 0, 21, 22, }, + [6] = { 29, 17, 4, 0, 22, 25, }, + [7] = { 33, 17, 5, 0, 23, 28, }, + [8] = { 36, 18, 5, 0, 24, 32, }, + [9] = { 39, 18, 5, 1, 25, 36, }, + [10] = { 42, 18, 6, 1, 26, 40, }, + [11] = { 45, 18, 6, 2, 27, 44, }, + [12] = { 48, 19, 6, 2, 28, 47, }, + [13] = { 51, 19, 6, 3, 29, 50, }, + [14] = { 54, 20, 6, 3, 30, 53, }, + [15] = { 57, 20, 7, 3, 31, 56, }, + [16] = { 60, 20, 7, 4, 32, 59, }, + [17] = { 63, 20, 8, 4, 33, 62, }, + [18] = { 66, 21, 8, 4, 34, 64, }, + [19] = { 68, 21, 8, 5, 35, 66, }, + [20] = { 70, 21, 9, 5, 36, 68, }, + [21] = { 72, 22, 9, 5, 37, 70, }, + [22] = { 74, 22, 9, 6, 38, 72, }, + [23] = { 76, 22, 10, 6, 39, 74, }, + [24] = { 78, 23, 10, 6, 40, 76, }, + [25] = { 80, 23, 10, 7, 41, 78, }, + [26] = { 82, 23, 11, 7, 42, 80, }, + [27] = { 84, 24, 11, 7, 43, 82, }, + [28] = { 86, 24, 11, 8, 44, 84, }, + [29] = { 88, 25, 11, 8, 45, 86, }, + [30] = { 90, 25, 12, 8, 46, 88, }, + }, +} +skills["TempestShield"] = { + name = "Tempest Shield", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + lightning = true, + chaining = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + duration = true, + chaining = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [13] = true, [27] = true, [35] = true, [23] = true, [45] = true, [36] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 0.6), + skill("critChance", 6), + mod("BlockChance", "BASE", 3, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"shield_block_%" = 3 + --"skill_override_pvp_scaling_time_ms" = 700 + mod("ChainCount", "BASE", 1), --"number_of_additional_projectiles_in_chain" = 1 + skill("duration", 12), --"base_skill_effect_duration" = 12000 + --"skill_can_add_multiple_charges_per_action" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("LightningDamage", "INC", 1), --"lightning_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 16, 17, 24, 36, }, + [2] = { 20, 17, 31, 46, }, + [3] = { 24, 17, 39, 58, }, + [4] = { 28, 18, 48, 72, }, + [5] = { 31, 18, 55, 83, }, + [6] = { 34, 18, 64, 96, }, + [7] = { 37, 18, 74, 111, }, + [8] = { 40, 19, 85, 127, }, + [9] = { 43, 19, 97, 145, }, + [10] = { 46, 19, 110, 165, }, + [11] = { 49, 20, 125, 187, }, + [12] = { 52, 20, 141, 212, }, + [13] = { 55, 20, 159, 239, }, + [14] = { 58, 20, 180, 269, }, + [15] = { 60, 20, 194, 291, }, + [16] = { 62, 21, 210, 315, }, + [17] = { 64, 21, 227, 340, }, + [18] = { 66, 21, 245, 367, }, + [19] = { 68, 21, 264, 396, }, + [20] = { 70, 21, 284, 426, }, + [21] = { 72, 22, 306, 459, }, + [22] = { 74, 22, 330, 494, }, + [23] = { 76, 22, 354, 532, }, + [24] = { 78, 22, 381, 572, }, + [25] = { 80, 22, 410, 614, }, + [26] = { 82, 23, 440, 660, }, + [27] = { 84, 23, 472, 708, }, + [28] = { 86, 23, 507, 760, }, + [29] = { 88, 23, 543, 815, }, + [30] = { 90, 23, 583, 874, }, + }, +} +skills["FrostBoltNova"] = { + name = "Vortex", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + cold = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [34] = true, [36] = true, [12] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.9), + skill("critChance", 5), + skill("duration", 3), --"base_skill_effect_duration" = 3000 + --"is_area_damage" = ? + skill("dotIsSpell", true), --"spell_damage_modifiers_apply_to_damage_over_time" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + [5] = skill("ColdDot", nil), --"base_cold_damage_to_deal_per_minute" + }, + levels = { + [1] = { 28, 11, 50, 75, 41.633333333333, }, + [2] = { 31, 11, 60, 90, 51.983333333333, }, + [3] = { 34, 12, 71, 107, 64.466666666667, }, + [4] = { 37, 13, 85, 127, 79.45, }, + [5] = { 40, 14, 100, 150, 97.383333333333, }, + [6] = { 42, 14, 112, 168, 112.51666666667, }, + [7] = { 44, 15, 124, 187, 129.65, }, + [8] = { 46, 15, 138, 208, 149.01666666667, }, + [9] = { 48, 16, 154, 231, 170.88333333333, }, + [10] = { 50, 16, 171, 256, 195.53333333333, }, + [11] = { 52, 16, 189, 284, 223.28333333333, }, + [12] = { 54, 17, 209, 314, 254.5, }, + [13] = { 56, 17, 232, 347, 289.53333333333, }, + [14] = { 58, 18, 256, 384, 328.85, }, + [15] = { 60, 18, 283, 424, 372.9, }, + [16] = { 62, 19, 312, 468, 422.2, }, + [17] = { 64, 19, 344, 516, 477.35, }, + [18] = { 66, 20, 379, 568, 538.96666666667, }, + [19] = { 68, 20, 417, 625, 607.75, }, + [20] = { 70, 21, 458, 688, 684.46666666667, }, + [21] = { 72, 21, 504, 756, 769.96666666667, }, + [22] = { 74, 22, 554, 831, 865.18333333333, }, + [23] = { 76, 22, 608, 912, 971.15, }, + [24] = { 78, 23, 667, 1001, 1088.9833333333, }, + [25] = { 80, 23, 732, 1098, 1219.9166666667, }, + [26] = { 82, 24, 802, 1204, 1365.3333333333, }, + [27] = { 84, 24, 879, 1319, 1526.7166666667, }, + [28] = { 86, 25, 963, 1445, 1705.7166666667, }, + [29] = { 88, 25, 1055, 1582, 1904.1333333333, }, + [30] = { 90, 26, 1154, 1731, 2123.9666666667, }, + }, +} +skills["Vulnerability"] = { + name = "Vulnerability", + gemTags = { + curse = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + mod("DotTaken", "INC", 33, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 33 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + mod("PhysicalDamageTaken", "INC", 0.5, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" + }, + levels = { + [1] = { 24, 24, 9, 0, 20, }, + [2] = { 27, 26, 9.1, 4, 20, }, + [3] = { 30, 27, 9.2, 8, 21, }, + [4] = { 33, 29, 9.3, 12, 21, }, + [5] = { 36, 30, 9.4, 16, 22, }, + [6] = { 39, 32, 9.5, 20, 22, }, + [7] = { 42, 34, 9.6, 24, 23, }, + [8] = { 45, 35, 9.7, 28, 23, }, + [9] = { 48, 37, 9.8, 32, 24, }, + [10] = { 50, 38, 9.9, 36, 24, }, + [11] = { 52, 39, 10, 40, 25, }, + [12] = { 54, 40, 10.1, 44, 25, }, + [13] = { 56, 42, 10.2, 48, 26, }, + [14] = { 58, 43, 10.3, 52, 26, }, + [15] = { 60, 44, 10.4, 56, 27, }, + [16] = { 62, 45, 10.5, 60, 27, }, + [17] = { 64, 46, 10.6, 64, 28, }, + [18] = { 66, 47, 10.7, 68, 28, }, + [19] = { 68, 48, 10.8, 72, 29, }, + [20] = { 70, 50, 10.9, 76, 29, }, + [21] = { 72, 51, 11, 80, 30, }, + [22] = { 74, 52, 11.1, 84, 30, }, + [23] = { 76, 53, 11.2, 88, 31, }, + [24] = { 78, 54, 11.3, 92, 31, }, + [25] = { 80, 56, 11.4, 96, 32, }, + [26] = { 82, 57, 11.5, 100, 32, }, + [27] = { 84, 58, 11.6, 104, 33, }, + [28] = { 86, 59, 11.7, 108, 33, }, + [29] = { 88, 60, 11.8, 112, 34, }, + [30] = { 90, 61, 11.9, 116, 34, }, + }, +} +skills["Wither"] = { + name = "Wither", + gemTags = { + intelligence = true, + active_skill = true, + spell = true, + area = true, + duration = true, + chaos = true, + channelling = true, + }, + parts = { + { + name = "1 Stack", + }, + { + name = "5 Stacks", + }, + { + name = "10 Stacks", + }, + { + name = "20 Stacks", + }, + }, + color = 3, + baseFlags = { + spell = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [18] = true, [50] = true, [58] = true, }, + baseMods = { + skill("castTime", 0.28), + mod("ChaosDamageTaken", "INC", 7, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"chaos_damage_taken_+%" = 7 + nil, --"base_skill_effect_duration" = 500 + skill("duration", 2), --"base_secondary_skill_effect_duration" = 2000 + skill("stackCount", 5, { type = "SkillPart", skillPart = 2 }), + skill("stackCount", 10, { type = "SkillPart", skillPart = 3 }), + skill("stackCount", 20, { type = "SkillPart", skillPart = 4 }), + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("MovementSpeed", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_movement_velocity_+%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 10, 4, -30, 0, }, + [2] = { 13, 4, -30, 1, }, + [3] = { 17, 4, -30, 2, }, + [4] = { 21, 5, -31, 3, }, + [5] = { 25, 5, -31, 4, }, + [6] = { 29, 5, -31, 5, }, + [7] = { 33, 6, -32, 6, }, + [8] = { 36, 6, -32, 7, }, + [9] = { 39, 6, -32, 8, }, + [10] = { 42, 7, -33, 9, }, + [11] = { 45, 7, -33, 10, }, + [12] = { 48, 7, -33, 11, }, + [13] = { 51, 8, -34, 12, }, + [14] = { 54, 8, -34, 13, }, + [15] = { 57, 8, -34, 14, }, + [16] = { 60, 9, -35, 15, }, + [17] = { 63, 9, -35, 16, }, + [18] = { 66, 9, -35, 17, }, + [19] = { 68, 10, -36, 18, }, + [20] = { 70, 10, -36, 19, }, + [21] = { 72, 10, -36, 20, }, + [22] = { 74, 11, -37, 21, }, + [23] = { 76, 11, -37, 22, }, + [24] = { 78, 11, -37, 23, }, + [25] = { 80, 12, -38, 24, }, + [26] = { 82, 12, -38, 25, }, + [27] = { 84, 12, -38, 26, }, + [28] = { 86, 13, -39, 27, }, + [29] = { 88, 13, -39, 28, }, + [30] = { 90, 13, -39, 29, }, + }, +} +skills["Wrath"] = { + name = "Wrath", + gemTags = { + aura = true, + intelligence = true, + active_skill = true, + spell = true, + area = true, + lightning = true, + }, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [35] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_lightning_damage" + [3] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_lightning_damage" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("LightningDamage", "MORE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"wrath_aura_spell_lightning_damage_+%_final" + }, + levels = { + [1] = { 24, 2, 37, 0, 15, }, + [2] = { 27, 3, 43, 3, 15, }, + [3] = { 30, 3, 50, 6, 15, }, + [4] = { 33, 4, 57, 9, 16, }, + [5] = { 36, 4, 66, 12, 16, }, + [6] = { 39, 5, 75, 15, 16, }, + [7] = { 42, 5, 85, 18, 17, }, + [8] = { 45, 6, 97, 21, 17, }, + [9] = { 48, 7, 109, 23, 17, }, + [10] = { 50, 7, 118, 25, 18, }, + [11] = { 52, 8, 128, 27, 18, }, + [12] = { 54, 9, 138, 29, 18, }, + [13] = { 56, 9, 149, 31, 19, }, + [14] = { 58, 10, 161, 33, 19, }, + [15] = { 60, 11, 173, 35, 19, }, + [16] = { 62, 12, 186, 36, 20, }, + [17] = { 64, 13, 200, 37, 20, }, + [18] = { 66, 13, 215, 38, 20, }, + [19] = { 68, 14, 231, 39, 21, }, + [20] = { 70, 16, 248, 40, 21, }, + [21] = { 72, 17, 267, 41, 21, }, + [22] = { 74, 18, 286, 42, 22, }, + [23] = { 76, 19, 306, 43, 22, }, + [24] = { 78, 20, 328, 44, 22, }, + [25] = { 80, 22, 351, 45, 23, }, + [26] = { 82, 23, 375, 46, 23, }, + [27] = { 84, 25, 401, 47, 23, }, + [28] = { 86, 27, 429, 48, 24, }, + [29] = { 88, 29, 458, 49, 24, }, + [30] = { 90, 31, 490, 50, 24, }, + }, +} \ No newline at end of file diff --git a/Export/Gems/act_int.txt b/Export/Skills/act_int.txt similarity index 73% rename from Export/Gems/act_int.txt rename to Export/Skills/act_int.txt index 2d526ff3..6b23f88d 100644 --- a/Export/Gems/act_int.txt +++ b/Export/Skills/act_int.txt @@ -1,127 +1,106 @@ -- Path of Building -- --- Active Intelligence gems --- Skill gem data (c) Grinding Gear Games +-- Active Intelligence skill gems +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Arc"] = { #skill Arc #flags spell chaining lightning #mods -} -gems["Vaal Arc"] = { + #skill VaalArcChain #flags spell lightning vaal #mods -} -gems["Arctic Breath"] = { + #skill ArcticBreath #flags spell area projectile duration cold #mods -} -gems["Assassin's Mark"] = { + #skill AssassinsMark #flags spell curse area duration #baseMod skill("debuff", true) #mods -} -gems["Ball Lightning"] = { + #skill BallLightning #flags spell projectile lightning #mods -} -gems["Blight"] = { + #skill Blight #flags spell duration area chaos #mods -} -gems["Bone Offering"] = { + #skill BoneOffering #flags spell duration #baseMod skill("offering", true) #mods -} -gems["Clarity"] = { + #skill Clarity #flags spell aura area #mods -} -gems["Vaal Clarity"] = { + #skill VaalClarity #flags spell aura area duration vaal #mods -} -gems["Cold Snap"] = { + #skill ColdSnap #flags spell area cold #mods -} -gems["Vaal Cold Snap"] = { + #skill VaalColdSnap #flags spell area duration cold vaal #mods -} -gems["Conductivity"] = { + #skill Conductivity #flags spell curse area duration lightning #baseMod skill("debuff", true) #mods -} -gems["Contagion"] = { + #skill Contagion #flags spell area duration chaos #baseMod skill("debuff", true) #mods -} -gems["Conversion Trap"] = { + #skill ConversionTrap unsupported = true, -} -gems["Convocation"] = { +#mods + #skill Convocation unsupported = true, -} -gems["Discharge"] = { +#mods + #skill Discharge #flags spell area lightning cold fire #mods -} -gems["Discipline"] = { + #skill Discipline #flags spell aura area #mods -} -gems["Vaal Discipline"] = { + #skill VaalDiscipline #flags spell aura area duration vaal #mods -} -gems["Elemental Weakness"] = { + #skill ElementalWeakness #flags spell curse area duration #baseMod skill("debuff", true) #mods -} -gems["Enfeeble"] = { + #skill Enfeeble #flags spell curse area duration #baseMod skill("debuff", true) #mods -} -gems["Essence Drain"] = { + #skill EssenceDrain #flags spell projectile duration chaos #baseMod skill("debuff", true) #baseMod skill("showAverage", true) #mods -} -gems["Fire Nova Mine"] = { + #skill FireNovaMine #flags spell mine area duration fire #mods -} -gems["Fireball"] = { + #skill Fireball #flags spell projectile fire parts = { @@ -135,8 +114,7 @@ gems["Fireball"] = { }, }, #mods -} -gems["Vaal Fireball"] = { + #skill VaalFireballSpiralNova #flags spell projectile fire vaal parts = { @@ -150,23 +128,19 @@ gems["Vaal Fireball"] = { }, }, #mods -} -gems["Firestorm"] = { + #skill Firestorm #flags spell area duration fire #mods -} -gems["Flame Dash"] = { + #skill FlameDash #flags spell area duration movement fire #mods -} -gems["Flame Surge"] = { + #skill FlameWhip #flags spell area fire #mods -} -gems["Flameblast"] = { + #skill Flameblast #flags spell area fire parts = { @@ -181,26 +155,22 @@ gems["Flameblast"] = { #baseMod skill("dpsMultiplier", 0.1, { type = "SkillPart", skillPart = 2 }) #baseMod skill("showAverage", false) #mods -} -gems["Vaal Flameblast"] = { + #skill VaalFlameblast #flags spell area fire vaal #baseMod mod("Damage", "MORE", 1100, ModFlag.Spell) #mods -} -gems["Flammability"] = { + #skill Flammability #flags spell curse area duration fire #baseMod skill("debuff", true) #mods -} -gems["Flesh Offering"] = { + #skill FleshOffering #flags spell duration #baseMod skill("offering", true) #mods -} -gems["Freezing Pulse"] = { + #skill FreezingPulse #flags spell projectile cold setupFunc = function(env, output) @@ -208,50 +178,41 @@ gems["Freezing Pulse"] = { env.modDB:NewMod("EnemyFreezeChance", "BASE", 25, "Skill:Freezing Pulse", { type = "DistanceRamp", ramp = {{0,1},{15*output.ProjectileSpeedMod,0}} }) end, #mods -} -gems["Frost Bomb"] = { + #skill FrostBomb #flags spell area duration cold #global Debuff #mods -} -gems["Frost Wall"] = { + #skill FrostWall #flags spell duration cold #mods -} -gems["Frostbite"] = { + #skill Frostbite #flags spell curse area duration cold #baseMod skill("debuff", true) #mods -} -gems["Frostbolt"] = { + #skill FrostBolt #flags spell projectile cold #mods -} -gems["Glacial Cascade"] = { + #skill GlacialCascade #flags spell area cold #mods -} -gems["Herald of Thunder"] = { + #skill HeraldOfThunder #flags cast duration lightning #mods -} -gems["Ice Nova"] = { + #skill IceNova #flags spell area cold #mods -} -gems["Vaal Ice Nova"] = { + #skill VaalIceNova #flags spell area cold vaal #mods -} -gems["Ice Spear"] = { + #skill IceSpear #flags spell projectile cold parts = { @@ -264,8 +225,7 @@ gems["Ice Spear"] = { }, #baseMod mod("PierceChance", "BASE", 100, 0, 0, { type = "SkillPart", skillPart = 1 }) #mods -} -gems["Incinerate"] = { + #skill Incinerate #flags spell projectile fire parts = { @@ -278,8 +238,7 @@ gems["Incinerate"] = { }, #baseMod mod("Damage", "MORE", 150, ModFlag.Spell, 0, { type = "SkillPart", skillPart = 2 }) #mods -} -gems["Kinetic Blast"] = { + #skill ClusterBurst #flags attack projectile area parts = { @@ -293,96 +252,85 @@ gems["Kinetic Blast"] = { }, }, #mods -} -gems["Lightning Tendrils"] = { + #skill LightningTendrils #flags spell area lightning #baseMod skill("dpsMultiplier", 4) #mods -} -gems["Lightning Trap"] = { + #skill LightningTrap #flags spell trap projectile lightning #baseMod skill("trapCooldown", 2) #mods -} -gems["Vaal Lightning Trap"] = { + #skill VaalLightningTrap #flags spell trap projectile duration lightning vaal #mods -} -gems["Lightning Warp"] = { + #skill LightningWarp #flags spell area duration movement lightning #mods -} -gems["Vaal Lightning Warp"] = { + #skill VaalLightningWarpInstant #flags spell area duration lightning vaal #mods -} -gems["Magma Orb"] = { + #skill MagmaOrb #flags spell projectile area chaining fire #mods -} -gems["Orb of Storms"] = { + #skill OrbOfStorms #flags spell area chaining duration lightning #mods -} -gems["Power Siphon"] = { + #skill PowerSiphon #flags attack projectile #mods -} -gems["Vaal Power Siphon"] = { + #skill VaalPowerSiphon #flags attack projectile vaal #mods -} -gems["Purity of Elements"] = { + #skill Purity #flags spell aura area #mods -} -gems["Purity of Lightning"] = { + #skill LightningResistAura #flags spell aura area #mods -} -gems["Raise Spectre"] = { + #skill RaiseSpectre - unsupported = true, +#flags spell minion spectre + minionList = { + }, #mods -} -gems["Raise Zombie"] = { + #skill RaiseZombie - unsupported = true, +#flags spell minion + minionList = { + "RaisedZombie", + }, #mods -} -gems["Righteous Fire"] = { + #skill RighteousFire #flags spell area fire - setupFunc = function(env, output) - if env.mainSkill.skillFlags.totem then - env.mainSkill.skillData.FireDot = output.TotemLife * 0.5 + setupFunc = function(actor, output) + if actor.mainSkill.skillFlags.totem then + actor.mainSkill.skillData.FireDot = output.TotemLife * 0.5 else - env.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5 + actor.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5 end end, #mods -} -gems["Vaal Righteous Fire"] = { + #skill VaalRighteousFire #flags spell area fire vaal - setupFunc = function(env, output) - env.mainSkill.skillData.FireMin = output.EnergyShield + output.Life - 1 - env.mainSkill.skillData.FireMax = output.EnergyShield + output.Life - 1 + setupFunc = function(actor, output) + actor.mainSkill.skillData.FireMin = output.EnergyShield + output.Life - 1 + actor.mainSkill.skillData.FireMax = output.EnergyShield + output.Life - 1 end, #mods -} -gems["Scorching Ray"] = { + #skill FireBeam #flags spell duration fire parts = { @@ -402,8 +350,7 @@ gems["Scorching Ray"] = { #baseMod mod("Damage", "MORE", 180, 0, 0, { type = "SkillPart", skillPart = 2 }) #baseMod mod("Damage", "MORE", 420, 0, 0, { type = "SkillPart", skillPart = 3 }) #mods -} -gems["Shock Nova"] = { + #skill ShockNova #flags spell area lightning parts = { @@ -415,78 +362,82 @@ gems["Shock Nova"] = { }, }, #mods -} -gems["Spark"] = { + #skill Spark #flags spell projectile duration lightning #mods -} -gems["Vaal Spark"] = { + #skill VaalSparkSpiralNova #flags spell projectile duration lightning vaal #mods -} -gems["Spirit Offering"] = { + #skill SpiritOffering #flags spell duration #baseMod skill("offering", true) #mods -} -gems["Storm Call"] = { + #skill StormCall #flags spell area duration lightning #mods -} -gems["Vaal Storm Call"] = { + #skill VaalStormCall #flags spell area duration lightning vaal #mods -} -gems["Summon Chaos Golem"] = { + #skill SummonChaosGolem #flags spell minion golem chaos #baseMod mod("Misc", "LIST", { type = "Condition", var = "HaveChaosGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }) + minionList = { + "SummonedChaosGolem", + }, #mods -} -gems["Summon Lightning Golem"] = { + #skill SummonLightningGolem #flags spell minion golem lightning #baseMod mod("Misc", "LIST", { type = "Condition", var = "HaveLightningGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }) + minionList = { + "SummonedLightningGolem", + }, #mods -} -gems["Summon Raging Spirit"] = { + #skill SummonRagingSpirit - unsupported = true, +#flags spell minion duration fire + minionList = { + "SummonedRagingSpirit", + }, #mods -} -gems["Summon Skeletons"] = { + #skill SummonSkeletons - unsupported = true, +#flags spell minion duration + minionList = { + "RaisedSkeleton", + "RaisedSkeletonCaster", + }, #mods -} -gems["Vaal Summon Skeletons"] = { + #skill VaalSummonSkeletons - unsupported = true, +#flags spell minion duration + minionList = { + "RaisedSkeleton", + "RaisedSkeletonCaster", + "RaisedSkeletonArcher", + }, #mods -} -gems["Tempest Shield"] = { + #skill TempestShield #flags spell duration chaining lightning #setMod shield_block_%==mod("BlockChance", "BASE", {val}, 0, 0, { type = "GlobalEffect", effectType = "Buff" }) #mods -} -gems["Vortex"] = { + #skill FrostBoltNova #flags spell area duration cold #mods -} -gems["Vulnerability"] = { + #skill Vulnerability #flags spell curse area duration #baseMod skill("debuff", true) #mods -} -gems["Wither"] = { + #skill Wither #flags spell area duration chaos parts = { @@ -510,9 +461,7 @@ gems["Wither"] = { #setMod base_skill_effect_duration==nil #setMod base_secondary_skill_effect_duration==skill("duration", {val});div=1000 #mods -} -gems["Wrath"] = { + #skill Wrath #flags spell aura area lightning -#mods -} +#mods \ No newline at end of file diff --git a/Export/Skills/act_str.lua b/Export/Skills/act_str.lua new file mode 100644 index 00000000..7c8a5693 --- /dev/null +++ b/Export/Skills/act_str.lua @@ -0,0 +1,3199 @@ +-- Path of Building +-- +-- Active Strength skill gems +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["AbyssalCry"] = { + name = "Abyssal Cry", + gemTags = { + warcry = true, + strength = true, + active_skill = true, + area = true, + duration = true, + chaos = true, + }, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [11] = true, [12] = true, [50] = true, [10] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + --"abyssal_cry_%_max_life_as_chaos_on_death" = 8 + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"damage_cannot_be_reflected" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"display_skill_deals_secondary_damage" = ? + --"is_warcry" = ? + }, + qualityMods = { + mod("Duration", "INC", 1), --"skill_effect_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "abyssal_cry_movement_velocity_+%_per_one_hundred_nearby_enemies" + [4] = mod("MovementSpeed", "INC", nil, 0, 0, nil), --"base_movement_velocity_+%" + }, + levels = { + [1] = { 34, 26, -60, -20, }, + [2] = { 36, 28, -62, -20, }, + [3] = { 38, 30, -62, -21, }, + [4] = { 40, 32, -64, -21, }, + [5] = { 42, 34, -66, -21, }, + [6] = { 44, 36, -66, -22, }, + [7] = { 46, 38, -68, -22, }, + [8] = { 48, 40, -70, -22, }, + [9] = { 50, 43, -70, -23, }, + [10] = { 52, 45, -72, -23, }, + [11] = { 54, 48, -74, -23, }, + [12] = { 56, 49, -74, -24, }, + [13] = { 58, 50, -76, -24, }, + [14] = { 60, 51, -78, -24, }, + [15] = { 62, 52, -78, -25, }, + [16] = { 64, 53, -80, -25, }, + [17] = { 66, 54, -82, -25, }, + [18] = { 68, 54, -82, -26, }, + [19] = { 69, 55, -84, -26, }, + [20] = { 70, 56, -86, -26, }, + [21] = { 72, 57, -86, -27, }, + [22] = { 74, 58, -88, -27, }, + [23] = { 76, 58, -90, -27, }, + [24] = { 78, 59, -90, -28, }, + [25] = { 80, 60, -92, -28, }, + [26] = { 82, 61, -94, -28, }, + [27] = { 84, 62, -94, -29, }, + [28] = { 86, 62, -96, -29, }, + [29] = { 88, 63, -98, -29, }, + [30] = { 90, 64, -98, -30, }, + }, +} +skills["TotemMelee"] = { + name = "Ancestral Protector", + gemTags = { + totem = true, + strength = true, + active_skill = true, + attack = true, + duration = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + totem = true, + duration = true, + forceMainHand = true, + }, + skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [25] = true, [24] = true, [17] = true, [19] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + skillTotemId = 13, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + --"base_totem_duration" = 12000 + --"base_totem_range" = 50 + --"melee_range_+" = 16 + --"ancestor_totem_parent_activiation_range" = 70 + mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 + --"base_skill_is_totemified" = ? + --"is_totem" = ? + skill("allowTotemBuff", true), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = mod("Speed", "MORE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff" }), --"melee_ancestor_totem_grant_owner_attack_speed_+%_final" + }, + levels = { + [1] = { 4, -20, 4, 10, }, + [2] = { 6, -17.2, 6, 11, }, + [3] = { 9, -14.4, 9, 11, }, + [4] = { 12, -11.6, 12, 12, }, + [5] = { 16, -8.8, 16, 12, }, + [6] = { 20, -6, 20, 13, }, + [7] = { 24, -3.2, 24, 13, }, + [8] = { 28, -0.4, 28, 14, }, + [9] = { 32, 2.4, 32, 14, }, + [10] = { 36, 5.2, 36, 15, }, + [11] = { 40, 8, 40, 15, }, + [12] = { 44, 10.8, 44, 16, }, + [13] = { 48, 13.6, 48, 16, }, + [14] = { 52, 16.4, 52, 17, }, + [15] = { 55, 19.2, 55, 17, }, + [16] = { 58, 22, 58, 18, }, + [17] = { 61, 24.8, 61, 18, }, + [18] = { 64, 27.6, 64, 19, }, + [19] = { 67, 30.4, 67, 19, }, + [20] = { 70, 33.2, 70, 20, }, + [21] = { 72, 36, 72, 20, }, + [22] = { 74, 38.8, 74, 21, }, + [23] = { 76, 41.6, 76, 21, }, + [24] = { 78, 44.4, 78, 22, }, + [25] = { 80, 47.2, 80, 22, }, + [26] = { 82, 50, 82, 23, }, + [27] = { 84, 52.8, 84, 23, }, + [28] = { 86, 55.6, 86, 24, }, + [29] = { 88, 58.4, 88, 24, }, + [30] = { 90, 61.2, 90, 25, }, + }, +} +skills["AncestorTotemSlam"] = { + name = "Ancestral Warchief", + gemTags = { + totem = true, + strength = true, + active_skill = true, + attack = true, + duration = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + totem = true, + area = true, + duration = true, + forceMainHand = true, + }, + skillTypes = { [1] = true, [30] = true, [12] = true, [6] = true, [24] = true, [17] = true, [19] = true, [11] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + skillTotemId = 15, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + --"base_totem_duration" = 12000 + --"base_totem_range" = 50 + --"ancestor_totem_parent_activiation_range" = 70 + mod("TotemPlacementSpeed", "INC", 50), --"summon_totem_cast_speed_+%" = 50 + mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 + --"melee_range_+" = 10 + --"is_area_damage" = ? + --"base_skill_is_totemified" = ? + --"is_totem" = ? + skill("allowTotemBuff", true), + }, + qualityMods = { + mod("Damage", "INC", 1, 0, KeywordFlag.Totem), --"totem_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [3] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff" }), --"slam_ancestor_totem_grant_owner_melee_damage_+%_final" + [4] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 28, 8, nil, }, + [2] = { 31, 31, 8, 1.2, }, + [3] = { 34, 34, 9, 2.4, }, + [4] = { 37, 37, 10, 3.6, }, + [5] = { 40, 40, 10, 4.8, }, + [6] = { 42, 42, 10, 6, }, + [7] = { 44, 44, 11, 7.2, }, + [8] = { 46, 46, 12, 8.4, }, + [9] = { 48, 48, 12, 9.6, }, + [10] = { 50, 50, 12, 10.8, }, + [11] = { 52, 52, 13, 12, }, + [12] = { 54, 54, 14, 13.2, }, + [13] = { 56, 56, 14, 14.4, }, + [14] = { 58, 58, 14, 15.6, }, + [15] = { 60, 60, 15, 16.8, }, + [16] = { 62, 62, 16, 18, }, + [17] = { 64, 64, 16, 19.2, }, + [18] = { 66, 66, 16, 20.4, }, + [19] = { 68, 68, 17, 21.6, }, + [20] = { 70, 70, 18, 22.8, }, + [21] = { 72, 72, 18, 24, }, + [22] = { 74, 74, 18, 25.2, }, + [23] = { 76, 76, 19, 26.4, }, + [24] = { 78, 78, 20, 27.6, }, + [25] = { 80, 80, 20, 28.8, }, + [26] = { 82, 82, 20, 30, }, + [27] = { 84, 84, 21, 31.2, }, + [28] = { 86, 86, 22, 32.4, }, + [29] = { 88, 88, 22, 33.6, }, + [30] = { 90, 90, 22, 44.8, }, + }, +} +skills["Anger"] = { + name = "Anger", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_fire_damage" + [3] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_fire_damage" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("FireMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_minimum_added_fire_damage" + [6] = mod("FireMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_maximum_added_fire_damage" + }, + levels = { + [1] = { 24, 12, 21, 0, 10, 16, }, + [2] = { 27, 14, 24, 3, 12, 19, }, + [3] = { 30, 17, 28, 6, 14, 22, }, + [4] = { 33, 19, 32, 9, 16, 26, }, + [5] = { 36, 22, 37, 12, 18, 29, }, + [6] = { 39, 25, 42, 15, 21, 33, }, + [7] = { 42, 28, 47, 18, 24, 38, }, + [8] = { 45, 32, 54, 21, 27, 43, }, + [9] = { 48, 36, 61, 23, 30, 48, }, + [10] = { 50, 39, 66, 25, 33, 53, }, + [11] = { 52, 43, 71, 27, 35, 57, }, + [12] = { 54, 46, 77, 29, 38, 61, }, + [13] = { 56, 50, 83, 31, 41, 66, }, + [14] = { 58, 54, 89, 33, 45, 71, }, + [15] = { 60, 58, 96, 35, 48, 77, }, + [16] = { 62, 62, 104, 36, 52, 83, }, + [17] = { 64, 67, 111, 37, 56, 89, }, + [18] = { 66, 72, 120, 38, 60, 96, }, + [19] = { 68, 77, 129, 39, 64, 103, }, + [20] = { 70, 83, 138, 40, 69, 110, }, + [21] = { 72, 89, 148, 41, 74, 118, }, + [22] = { 74, 95, 159, 42, 79, 127, }, + [23] = { 76, 102, 170, 43, 85, 136, }, + [24] = { 78, 109, 182, 44, 91, 146, }, + [25] = { 80, 117, 195, 45, 97, 156, }, + [26] = { 82, 125, 209, 46, 104, 167, }, + [27] = { 84, 134, 223, 47, 112, 178, }, + [28] = { 86, 143, 238, 48, 119, 191, }, + [29] = { 88, 153, 255, 49, 127, 204, }, + [30] = { 90, 163, 272, 50, 136, 218, }, + }, +} +skills["AnimateArmour"] = { + name = "Animate Guardian", + gemTags = { + strength = true, + active_skill = true, + spell = true, + minion = true, + }, + unsupported = true, + color = 1, + baseFlags = { + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [18] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, }, + baseMods = { + skill("castTime", 0.6), + --"emerge_speed_+%" = 100 + --"display_minion_monster_type" = 3 + }, + qualityMods = { + mod("MovementSpeed", "INC", 2, 0, 0, nil), --"base_movement_velocity_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "animate_item_maximum_level_requirement" + --[4] = "maximum_life_+%" + [5] = mod("PhysicalDamage", "INC", nil, ModFlag.Melee), --"melee_physical_damage_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + [7] = mod("PhysicalMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_physical_damage" + [8] = mod("PhysicalMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_physical_damage" + }, + levels = { + [1] = { 28, 19, 33, 0, 0, 28, 22, 34, }, + [2] = { 31, 20, 36, 4, 4, 31, 25, 37, }, + [3] = { 34, 21, 39, 8, 8, 34, 27, 41, }, + [4] = { 37, 23, 43, 12, 12, 37, 30, 44, }, + [5] = { 40, 24, 46, 16, 16, 40, 32, 48, }, + [6] = { 42, 25, 48, 20, 20, 42, 34, 50, }, + [7] = { 44, 25, 51, 24, 24, 44, 35, 53, }, + [8] = { 46, 26, 53, 28, 28, 46, 37, 55, }, + [9] = { 48, 27, 56, 32, 32, 48, 38, 58, }, + [10] = { 50, 28, 58, 36, 36, 50, 40, 60, }, + [11] = { 52, 29, 61, 40, 40, 52, 42, 62, }, + [12] = { 54, 30, 63, 44, 44, 54, 43, 65, }, + [13] = { 56, 31, 66, 48, 48, 56, 45, 67, }, + [14] = { 58, 31, 68, 52, 52, 58, 46, 70, }, + [15] = { 60, 32, 71, 56, 56, 60, 48, 72, }, + [16] = { 62, 33, 73, 60, 60, 62, 50, 74, }, + [17] = { 64, 34, 76, 64, 64, 64, 51, 77, }, + [18] = { 66, 35, 79, 68, 68, 66, 53, 79, }, + [19] = { 68, 36, 82, 72, 72, 68, 54, 82, }, + [20] = { 70, 36, 100, 76, 76, 70, 56, 84, }, + [21] = { 72, 37, 100, 80, 80, 72, 58, 86, }, + [22] = { 74, 38, 100, 84, 84, 74, 59, 89, }, + [23] = { 76, 39, 100, 88, 88, 76, 61, 91, }, + [24] = { 78, 40, 100, 92, 92, 78, 62, 94, }, + [25] = { 80, 41, 100, 96, 96, 80, 64, 96, }, + [26] = { 82, 41, 100, 100, 100, 82, 66, 98, }, + [27] = { 84, 42, 100, 104, 104, 84, 67, 101, }, + [28] = { 86, 43, 100, 108, 108, 86, 69, 103, }, + [29] = { 88, 44, 100, 112, 112, 88, 70, 106, }, + [30] = { 90, 45, 100, 116, 116, 90, 72, 108, }, + }, +} +skills["Cleave"] = { + name = "Cleave", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [8] = true, [11] = true, [28] = true, [24] = true, [53] = true, }, + weaponTypes = { + ["Two Handed Axe"] = true, + ["One Handed Axe"] = true, + ["Two Handed Sword"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("Damage", "MORE", -40, 0, 0, { type = "Condition", var = "DualWielding" }), --"cleave_damage_+%_final_while_dual_wielding" = -40 + --"is_area_damage" = ? + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = ? + }, + qualityMods = { + mod("Speed", "INC", 0.5, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, 10, 0, }, + [2] = { 2, 12.8, 0, }, + [3] = { 4, 15.6, 1, }, + [4] = { 7, 18.4, 1, }, + [5] = { 11, 21.2, 1, }, + [6] = { 16, 24, 2, }, + [7] = { 20, 26.8, 2, }, + [8] = { 24, 29.6, 2, }, + [9] = { 28, 32.4, 3, }, + [10] = { 32, 35.2, 3, }, + [11] = { 36, 38, 3, }, + [12] = { 40, 40.8, 4, }, + [13] = { 44, 43.6, 4, }, + [14] = { 48, 46.4, 4, }, + [15] = { 52, 49.2, 5, }, + [16] = { 56, 52, 5, }, + [17] = { 60, 54.8, 5, }, + [18] = { 64, 57.6, 6, }, + [19] = { 67, 60.4, 6, }, + [20] = { 70, 63.2, 6, }, + [21] = { 72, 66, 7, }, + [22] = { 74, 68.8, 7, }, + [23] = { 76, 71.6, 7, }, + [24] = { 78, 74.4, 8, }, + [25] = { 80, 77.2, 8, }, + [26] = { 82, 80, 8, }, + [27] = { 84, 82.8, 9, }, + [28] = { 86, 85.6, 9, }, + [29] = { 88, 88.4, 9, }, + [30] = { 90, 91.2, 10, }, + }, +} +skills["DecoyTotem"] = { + name = "Decoy Totem", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + area = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [17] = true, [12] = true, [19] = true, [11] = true, [30] = true, [26] = true, }, + skillTotemId = 6, + baseMods = { + skill("castTime", 1), + skill("cooldown", 4), + --"is_totem" = 1 + --"base_totem_duration" = 8000 + --"base_totem_range" = 60 + --"base_skill_is_totemified" = ? + --"base_deal_no_damage" = ? + --"totems_cannot_evade" = ? + --"totem_ignores_cooldown" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = mod("TotemLife", "INC", nil), --"totem_life_+%" + }, + levels = { + [1] = { 4, 9, 4, 0, }, + [2] = { 6, 10, 6, 2, }, + [3] = { 9, 10, 9, 4, }, + [4] = { 12, 12, 12, 6, }, + [5] = { 16, 14, 15, 8, }, + [6] = { 20, 17, 19, 10, }, + [7] = { 24, 18, 23, 12, }, + [8] = { 28, 19, 28, 14, }, + [9] = { 32, 21, 33, 16, }, + [10] = { 36, 24, 39, 18, }, + [11] = { 40, 26, 43, 20, }, + [12] = { 44, 28, 46, 22, }, + [13] = { 48, 30, 49, 24, }, + [14] = { 52, 30, 52, 26, }, + [15] = { 55, 31, 55, 28, }, + [16] = { 58, 33, 58, 30, }, + [17] = { 61, 34, 61, 32, }, + [18] = { 64, 34, 64, 34, }, + [19] = { 67, 34, 66, 36, }, + [20] = { 70, 35, 68, 38, }, + [21] = { 72, 36, 70, 40, }, + [22] = { 74, 37, 72, 42, }, + [23] = { 76, 37, 74, 44, }, + [24] = { 78, 38, 76, 46, }, + [25] = { 80, 38, 78, 48, }, + [26] = { 82, 39, 80, 50, }, + [27] = { 84, 40, 82, 52, }, + [28] = { 86, 40, 84, 54, }, + [29] = { 88, 41, 86, 56, }, + [30] = { 90, 42, 88, 58, }, + }, +} +skills["Determination"] = { + name = "Determination", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 50), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Armour", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"determination_aura_armour_+%_final" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 32, 0, }, + [2] = { 27, 33, 3, }, + [3] = { 30, 34, 6, }, + [4] = { 33, 35, 9, }, + [5] = { 36, 36, 12, }, + [6] = { 39, 37, 15, }, + [7] = { 42, 38, 18, }, + [8] = { 45, 39, 21, }, + [9] = { 48, 40, 23, }, + [10] = { 50, 41, 25, }, + [11] = { 52, 42, 27, }, + [12] = { 54, 43, 29, }, + [13] = { 56, 44, 31, }, + [14] = { 58, 45, 33, }, + [15] = { 60, 46, 35, }, + [16] = { 62, 47, 36, }, + [17] = { 64, 48, 37, }, + [18] = { 66, 49, 38, }, + [19] = { 68, 50, 39, }, + [20] = { 70, 51, 40, }, + [21] = { 72, 52, 41, }, + [22] = { 74, 53, 42, }, + [23] = { 76, 54, 43, }, + [24] = { 78, 55, 44, }, + [25] = { 80, 56, 45, }, + [26] = { 82, 57, 46, }, + [27] = { 84, 58, 47, }, + [28] = { 86, 59, 48, }, + [29] = { 88, 60, 49, }, + [30] = { 90, 61, 50, }, + }, +} +skills["DevouringTotem"] = { + name = "Devouring Totem", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + }, + unsupported = true, + color = 1, + baseFlags = { + }, + skillTypes = { [2] = true, [17] = true, [12] = true, [19] = true, [30] = true, }, + skillTotemId = 7, + baseMods = { + skill("castTime", 1), + --"is_totem" = 1 + --"base_totem_duration" = 8000 + --"base_totem_range" = 60 + --"base_skill_is_totemified" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + --[4] = "corpse_consumption_life_to_gain" + --[5] = "corpse_consumption_mana_to_gain" + }, + levels = { + [1] = { 4, 20, 4, 30, 9, }, + [2] = { 6, 22, 6, 39, 12, }, + [3] = { 9, 23, 9, 45, 14, }, + [4] = { 12, 25, 12, 53, 17, }, + [5] = { 16, 26, 16, 61, 19, }, + [6] = { 20, 28, 20, 70, 22, }, + [7] = { 24, 30, 24, 79, 24, }, + [8] = { 28, 31, 28, 90, 27, }, + [9] = { 32, 33, 32, 102, 29, }, + [10] = { 36, 34, 36, 115, 32, }, + [11] = { 40, 36, 40, 129, 34, }, + [12] = { 44, 37, 44, 144, 37, }, + [13] = { 48, 38, 48, 157, 40, }, + [14] = { 52, 39, 52, 173, 42, }, + [15] = { 55, 40, 55, 191, 45, }, + [16] = { 58, 41, 58, 211, 47, }, + [17] = { 61, 42, 61, 231, 50, }, + [18] = { 64, 42, 64, 253, 53, }, + [19] = { 67, 43, 67, 275, 56, }, + [20] = { 70, 44, 70, 299, 59, }, + [21] = { 72, 45, 72, 325, 62, }, + [22] = { 74, 45, 74, 352, 66, }, + [23] = { 76, 46, 76, 382, 69, }, + [24] = { 78, 46, 78, 413, 73, }, + [25] = { 80, 47, 80, 447, 76, }, + [26] = { 82, 48, 82, 483, 80, }, + [27] = { 84, 49, 84, 522, 84, }, + [28] = { 86, 50, 86, 563, 88, }, + [29] = { 88, 50, 88, 606, 92, }, + [30] = { 90, 51, 90, 652, 96, }, + }, +} +skills["DominatingBlow"] = { + name = "Dominating Blow", + gemTags = { + strength = true, + active_skill = true, + attack = true, + minion = true, + duration = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + duration = true, + }, + skillTypes = { [1] = true, [6] = true, [9] = true, [12] = true, [21] = true, [25] = true, [28] = true, [24] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [2] = true, [10] = true, [11] = true, [3] = true, [23] = true, [12] = true, [30] = true, [37] = true, [41] = true, [40] = true, [58] = true, [32] = true, [48] = true, [26] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("duration", 20), --"base_skill_effect_duration" = 20000 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", -35) }), --"active_skill_minion_damage_+%_final" = -35 + --"is_dominated" = ? + }, + qualityMods = { + mod("Damage", "INC", 0.5, 0, 0, nil), --"damage_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 12, 25, }, + [2] = { 31, 12, 27.1, }, + [3] = { 34, 12, 29.2, }, + [4] = { 37, 13, 31.3, }, + [5] = { 40, 13, 33.4, }, + [6] = { 42, 13, 35.5, }, + [7] = { 44, 14, 37.6, }, + [8] = { 46, 14, 39.7, }, + [9] = { 48, 14, 41.8, }, + [10] = { 50, 14, 43.9, }, + [11] = { 52, 14, 46, }, + [12] = { 54, 15, 48.1, }, + [13] = { 56, 15, 50.2, }, + [14] = { 58, 15, 52.3, }, + [15] = { 60, 15, 54.4, }, + [16] = { 62, 15, 56.5, }, + [17] = { 64, 15, 58.6, }, + [18] = { 66, 15, 60.7, }, + [19] = { 68, 15, 62.8, }, + [20] = { 70, 16, 64.9, }, + [21] = { 72, 16, 67, }, + [22] = { 74, 16, 69.1, }, + [23] = { 76, 16, 71.2, }, + [24] = { 78, 16, 73.3, }, + [25] = { 80, 16, 75.4, }, + [26] = { 82, 17, 77.5, }, + [27] = { 84, 17, 79.6, }, + [28] = { 86, 17, 81.7, }, + [29] = { 88, 17, 83.8, }, + [30] = { 90, 17, 85.9, }, + }, +} +skills["Earthquake"] = { + name = "Earthquake", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + duration = true, + melee = true, + }, + parts = { + { + name = "Initial impact", + }, + { + name = "Aftershock", + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [10] = true, [28] = true, [12] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 10), + skill("duration", 1.5), --"base_skill_effect_duration" = 1500 + mod("Damage", "MORE", 50, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"quake_slam_fully_charged_explosion_damage_+%_final" = 50 + --"is_area_damage" = ? + skill("showAverage", true, { type = "SkillPart", skillPart = 2 }), + }, + qualityMods = { + mod("PhysicalDamage", "INC", 1), --"physical_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, -10, }, + [2] = { 31, -9, }, + [3] = { 34, -8, }, + [4] = { 37, -7, }, + [5] = { 40, -6, }, + [6] = { 42, -5, }, + [7] = { 44, -4, }, + [8] = { 46, -3, }, + [9] = { 48, -2, }, + [10] = { 50, -1, }, + [11] = { 52, nil, }, + [12] = { 54, 1, }, + [13] = { 56, 2, }, + [14] = { 58, 3, }, + [15] = { 60, 4, }, + [16] = { 62, 5, }, + [17] = { 64, 6, }, + [18] = { 66, 7, }, + [19] = { 68, 8, }, + [20] = { 70, 9, }, + [21] = { 72, 10, }, + [22] = { 74, 11, }, + [23] = { 76, 12, }, + [24] = { 78, 13, }, + [25] = { 80, 14, }, + [26] = { 82, 15, }, + [27] = { 84, 16, }, + [28] = { 86, 17, }, + [29] = { 88, 18, }, + [30] = { 90, 19, }, + }, +} +skills["EnduringCry"] = { + name = "Enduring Cry", + gemTags = { + warcry = true, + strength = true, + active_skill = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + }, + skillTypes = { [5] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + skill("duration", 0.75), --"base_skill_effect_duration" = 750 + --"is_warcry" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 3), --"base_skill_area_of_effect_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "endurance_charges_granted_per_one_hundred_nearby_enemies_during_endurance_warcry" + [4] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" + }, + levels = { + [1] = { 16, 17, 8, 48, }, + [2] = { 20, 17, 10, 62, }, + [3] = { 24, 17, 12, 76, }, + [4] = { 28, 17, 14, 94, }, + [5] = { 31, 18, 16, 108, }, + [6] = { 34, 18, 18, 122, }, + [7] = { 37, 18, 20, 140, }, + [8] = { 40, 19, 22, 158, }, + [9] = { 43, 19, 24, 176, }, + [10] = { 46, 19, 26, 196, }, + [11] = { 49, 20, 27, 216, }, + [12] = { 52, 20, 28, 238, }, + [13] = { 55, 20, 29, 262, }, + [14] = { 58, 20, 30, 286, }, + [15] = { 60, 20, 31, 302, }, + [16] = { 62, 21, 32, 320, }, + [17] = { 64, 21, 33, 338, }, + [18] = { 66, 21, 34, 356, }, + [19] = { 68, 21, 35, 374, }, + [20] = { 70, 21, 36, 394, }, + [21] = { 72, 22, 37, 414, }, + [22] = { 74, 22, 38, 434, }, + [23] = { 76, 22, 39, 454, }, + [24] = { 78, 22, 40, 476, }, + [25] = { 80, 22, 41, 498, }, + [26] = { 82, 23, 42, 520, }, + [27] = { 84, 23, 43, 544, }, + [28] = { 86, 23, 44, 566, }, + [29] = { 88, 23, 45, 590, }, + [30] = { 90, 23, 46, 614, }, + }, +} +skills["FlameTotem"] = { + name = "Flame Totem", + gemTags = { + projectile = true, + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + projectile = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, + skillTotemId = 8, + baseMods = { + skill("castTime", 0.25), + skill("damageEffectiveness", 0.25), + skill("critChance", 5), + --"base_totem_duration" = 8000 + --"base_totem_range" = 100 + --"is_totem" = ? + --"base_skill_is_totemified" = ? + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [5] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [6] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 4, 12, 4, 1, 2, 0, }, + [2] = { 6, 14, 6, 1, 3, 0, }, + [3] = { 9, 16, 9, 2, 4, 0, }, + [4] = { 12, 17, 12, 3, 5, 0, }, + [5] = { 16, 19, 16, 4, 7, 1, }, + [6] = { 20, 21, 20, 6, 10, 1, }, + [7] = { 24, 23, 24, 9, 13, 1, }, + [8] = { 28, 24, 28, 11, 17, 1, }, + [9] = { 32, 26, 32, 14, 22, 2, }, + [10] = { 36, 29, 36, 18, 28, 2, }, + [11] = { 40, 31, 40, 24, 35, 2, }, + [12] = { 44, 32, 44, 30, 45, 2, }, + [13] = { 48, 33, 48, 37, 56, 2, }, + [14] = { 52, 34, 52, 47, 70, 2, }, + [15] = { 55, 36, 55, 55, 83, 2, }, + [16] = { 58, 37, 58, 65, 97, 2, }, + [17] = { 61, 39, 61, 76, 114, 2, }, + [18] = { 64, 40, 64, 89, 134, 2, }, + [19] = { 67, 41, 67, 105, 157, 2, }, + [20] = { 70, 42, 70, 122, 183, 2, }, + [21] = { 72, 43, 72, 136, 203, 2, }, + [22] = { 74, 44, 74, 150, 225, 2, }, + [23] = { 76, 45, 76, 166, 249, 2, }, + [24] = { 78, 46, 78, 184, 276, 2, }, + [25] = { 80, 47, 80, 204, 305, 2, }, + [26] = { 82, 48, 82, 225, 338, 2, }, + [27] = { 84, 49, 84, 249, 373, 2, }, + [28] = { 86, 50, 86, 275, 412, 2, }, + [29] = { 88, 51, 88, 303, 455, 2, }, + [30] = { 90, 52, 90, 335, 502, 2, }, + }, +} +skills["GlacialHammer"] = { + name = "Glacial Hammer", + gemTags = { + strength = true, + active_skill = true, + attack = true, + melee = true, + cold = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + cold = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [34] = true, [53] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 + mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 + mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 + }, + qualityMods = { + mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 + mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 40, }, + [2] = { 2, 42.2, }, + [3] = { 4, 44.4, }, + [4] = { 7, 46.6, }, + [5] = { 11, 48.8, }, + [6] = { 16, 51, }, + [7] = { 20, 53.2, }, + [8] = { 24, 55.4, }, + [9] = { 28, 57.6, }, + [10] = { 32, 59.8, }, + [11] = { 36, 62, }, + [12] = { 40, 64.2, }, + [13] = { 44, 66.4, }, + [14] = { 48, 68.6, }, + [15] = { 52, 70.8, }, + [16] = { 56, 73, }, + [17] = { 60, 75.2, }, + [18] = { 64, 77.4, }, + [19] = { 67, 79.6, }, + [20] = { 70, 81.8, }, + [21] = { 72, 84, }, + [22] = { 74, 86.2, }, + [23] = { 76, 88.4, }, + [24] = { 78, 90.6, }, + [25] = { 80, 92.8, }, + [26] = { 82, 95, }, + [27] = { 84, 97.2, }, + [28] = { 86, 99.4, }, + [29] = { 88, 101.6, }, + [30] = { 90, 103.8, }, + }, +} +skills["VaalGlacialHammer"] = { + name = "Vaal Glacial Hammer", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + attack = true, + melee = true, + duration = true, + area = true, + cold = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + cold = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [12] = true, [11] = true, [43] = true, [34] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("SkillPhysicalDamageConvertToCold", "BASE", 50), --"skill_physical_damage_%_to_convert_to_cold" = 50 + mod("EnemyFreezeChance", "BASE", 25), --"base_chance_to_freeze_%" = 25 + mod("EnemyChillDuration", "INC", 35), --"chill_duration_+%" = 35 + }, + qualityMods = { + mod("EnemyChillDuration", "INC", 2), --"chill_duration_+%" = 2 + mod("EnemyFreezeDuration", "INC", 1), --"freeze_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = skill("duration", nil), --"base_skill_effect_duration" + }, + levels = { + [1] = { 1, 50, 3.4, }, + [2] = { 2, 51.8, 3.45, }, + [3] = { 4, 53.6, 3.5, }, + [4] = { 7, 55.4, 3.55, }, + [5] = { 11, 57.2, 3.6, }, + [6] = { 16, 59, 3.65, }, + [7] = { 20, 60.8, 3.7, }, + [8] = { 24, 62.6, 3.75, }, + [9] = { 28, 64.4, 3.8, }, + [10] = { 32, 66.2, 3.85, }, + [11] = { 36, 68, 3.9, }, + [12] = { 40, 69.8, 3.95, }, + [13] = { 44, 71.6, 4, }, + [14] = { 48, 73.4, 4.05, }, + [15] = { 52, 75.2, 4.1, }, + [16] = { 56, 77, 4.15, }, + [17] = { 60, 78.8, 4.2, }, + [18] = { 64, 80.6, 4.25, }, + [19] = { 67, 82.4, 4.3, }, + [20] = { 70, 84.2, 4.35, }, + [21] = { 72, 86, 4.4, }, + [22] = { 74, 87.8, 4.45, }, + [23] = { 76, 89.6, 4.5, }, + [24] = { 78, 91.4, 4.55, }, + [25] = { 80, 93.2, 4.6, }, + [26] = { 82, 95, 4.65, }, + [27] = { 84, 96.8, 4.7, }, + [28] = { 86, 98.6, 4.75, }, + [29] = { 88, 100.4, 4.8, }, + [30] = { 90, 102.2, 4.85, }, + }, +} +skills["GroundSlam"] = { + name = "Ground Slam", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 + --"is_area_damage" = ? + }, + qualityMods = { + mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 1, -10, 0, }, + [2] = { 2, -8.4, 0, }, + [3] = { 4, -6.8, 1, }, + [4] = { 7, -5.2, 1, }, + [5] = { 11, -3.6, 1, }, + [6] = { 16, -2, 2, }, + [7] = { 20, -0.4, 2, }, + [8] = { 24, 1.2, 2, }, + [9] = { 28, 2.8, 3, }, + [10] = { 32, 4.4, 3, }, + [11] = { 36, 6, 3, }, + [12] = { 40, 7.6, 4, }, + [13] = { 44, 9.2, 4, }, + [14] = { 48, 10.8, 4, }, + [15] = { 52, 12.4, 5, }, + [16] = { 56, 14, 5, }, + [17] = { 60, 15.6, 5, }, + [18] = { 64, 17.2, 6, }, + [19] = { 67, 18.8, 6, }, + [20] = { 70, 20.4, 6, }, + [21] = { 72, 22, 7, }, + [22] = { 74, 23.6, 7, }, + [23] = { 76, 25.2, 7, }, + [24] = { 78, 26.8, 8, }, + [25] = { 80, 28.4, 8, }, + [26] = { 82, 30, 8, }, + [27] = { 84, 31.6, 9, }, + [28] = { 86, 33.2, 9, }, + [29] = { 88, 34.8, 9, }, + [30] = { 90, 36.4, 10, }, + }, +} +skills["VaalGroundSlam"] = { + name = "Vaal Ground Slam", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + vaal = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, [43] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["One Handed Mace"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + --"knockback_distance_+%" = 100 + --"animation_effect_variation" = -1 + mod("AreaOfEffect", "INC", 20), --"base_skill_area_of_effect_+%" = 20 + --"always_stun" = ? + --"global_knockback" = ? + --"is_area_damage" = ? + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("EnemyStunDuration", "INC", 1.5), --"base_stun_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 60, }, + [2] = { 2, 62, }, + [3] = { 4, 64, }, + [4] = { 7, 66, }, + [5] = { 11, 68, }, + [6] = { 16, 70, }, + [7] = { 20, 72, }, + [8] = { 24, 74, }, + [9] = { 28, 76, }, + [10] = { 32, 78, }, + [11] = { 36, 80, }, + [12] = { 40, 82, }, + [13] = { 44, 84, }, + [14] = { 48, 86, }, + [15] = { 52, 88, }, + [16] = { 56, 90, }, + [17] = { 60, 92, }, + [18] = { 64, 94, }, + [19] = { 67, 96, }, + [20] = { 70, 98, }, + [21] = { 72, 100, }, + [22] = { 74, 102, }, + [23] = { 76, 104, }, + [24] = { 78, 106, }, + [25] = { 80, 108, }, + [26] = { 82, 110, }, + [27] = { 84, 112, }, + [28] = { 86, 114, }, + [29] = { 88, 116, }, + [30] = { 90, 118, }, + }, +} +skills["HeavyStrike"] = { + name = "Heavy Strike", + gemTags = { + strength = true, + active_skill = true, + attack = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["One Handed Axe"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 5), + --"global_knockback" = 1 + mod("EnemyStunThreshold", "INC", -25), --"base_stun_threshold_reduction_+%" = 25 + }, + qualityMods = { + mod("EnemyStunDuration", "INC", 1), --"base_stun_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 50, }, + [2] = { 2, 52.3, }, + [3] = { 4, 54.6, }, + [4] = { 7, 56.9, }, + [5] = { 11, 59.2, }, + [6] = { 16, 61.5, }, + [7] = { 20, 63.8, }, + [8] = { 24, 66.1, }, + [9] = { 28, 68.4, }, + [10] = { 32, 70.7, }, + [11] = { 36, 73, }, + [12] = { 40, 75.3, }, + [13] = { 44, 77.6, }, + [14] = { 48, 79.9, }, + [15] = { 52, 82.2, }, + [16] = { 56, 84.5, }, + [17] = { 60, 86.8, }, + [18] = { 64, 89.1, }, + [19] = { 67, 91.4, }, + [20] = { 70, 93.7, }, + [21] = { 72, 96, }, + [22] = { 74, 98.3, }, + [23] = { 76, 100.6, }, + [24] = { 78, 102.9, }, + [25] = { 80, 105.2, }, + [26] = { 82, 107.5, }, + [27] = { 84, 109.8, }, + [28] = { 86, 112.1, }, + [29] = { 88, 114.4, }, + [30] = { 90, 116.7, }, + }, +} +skills["HeraldOfAsh"] = { + name = "Herald of Ash", + gemTags = { + strength = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [5] = true, [15] = true, [16] = true, [29] = true, [11] = true, [40] = true, [20] = true, [33] = true, [27] = true, }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 25), + skill("cooldown", 1), + mod("PhysicalDamageGainAsFire", "BASE", 15, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"physical_damage_%_to_add_as_fire" = 15 + --"is_area_damage" = ? + }, + qualityMods = { + mod("FireDamage", "INC", 0.75, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"herald_of_ash_fire_damage_+%" = 0.75 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "herald_of_ash_%_overkill_dealt_as_ignite" + }, + levels = { + [1] = { 16, 80, }, + [2] = { 20, 83, }, + [3] = { 24, 86, }, + [4] = { 28, 89, }, + [5] = { 31, 92, }, + [6] = { 34, 95, }, + [7] = { 37, 98, }, + [8] = { 40, 101, }, + [9] = { 43, 104, }, + [10] = { 46, 107, }, + [11] = { 49, 110, }, + [12] = { 52, 113, }, + [13] = { 55, 116, }, + [14] = { 58, 119, }, + [15] = { 60, 122, }, + [16] = { 62, 125, }, + [17] = { 64, 128, }, + [18] = { 66, 131, }, + [19] = { 68, 134, }, + [20] = { 70, 137, }, + [21] = { 72, 140, }, + [22] = { 74, 143, }, + [23] = { 76, 146, }, + [24] = { 78, 149, }, + [25] = { 80, 152, }, + [26] = { 82, 155, }, + [27] = { 84, 158, }, + [28] = { 86, 161, }, + [29] = { 88, 164, }, + [30] = { 90, 167, }, + }, +} +skills["IceCrash"] = { + name = "Ice Crash", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + cold = true, + melee = true, + }, + parts = { + { + name = "First Hit", + }, + { + name = "Second Hit", + }, + { + name = "Third Hit", + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + cold = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [7] = true, [34] = true, }, + weaponTypes = { + ["None"] = true, + ["Two Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + mod("PhysicalDamageConvertToCold", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_cold" = 50 + mod("Speed", "MORE", -20, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -20 + mod("Damage", "MORE", -10, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"ice_crash_second_hit_damage_+%_final" = -10 + mod("Damage", "MORE", -20, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 3 }), --"ice_crash_third_hit_damage_+%_final" = -20 + --"is_area_damage" = ? + }, + qualityMods = { + mod("ColdDamage", "INC", 1), --"cold_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 28, 70, }, + [2] = { 31, 72, }, + [3] = { 34, 74, }, + [4] = { 37, 76, }, + [5] = { 40, 78, }, + [6] = { 42, 80, }, + [7] = { 44, 82, }, + [8] = { 46, 84, }, + [9] = { 48, 86, }, + [10] = { 50, 88, }, + [11] = { 52, 90, }, + [12] = { 54, 92, }, + [13] = { 56, 94, }, + [14] = { 58, 96, }, + [15] = { 60, 98, }, + [16] = { 62, 100, }, + [17] = { 64, 102, }, + [18] = { 66, 104, }, + [19] = { 68, 106, }, + [20] = { 70, 108, }, + [21] = { 72, 110, }, + [22] = { 74, 112, }, + [23] = { 76, 114, }, + [24] = { 78, 116, }, + [25] = { 80, 118, }, + [26] = { 82, 120, }, + [27] = { 84, 122, }, + [28] = { 86, 124, }, + [29] = { 88, 116, }, + [30] = { 90, 118, }, + }, +} +skills["ImmortalCall"] = { + name = "Immortal Call", + gemTags = { + strength = true, + active_skill = true, + spell = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("cooldown", 3), + skill("duration", 0.4), --"base_skill_effect_duration" = 400 + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" + }, + levels = { + [1] = { 34, 21, 100, }, + [2] = { 36, 22, 103, }, + [3] = { 38, 23, 106, }, + [4] = { 40, 24, 109, }, + [5] = { 42, 25, 112, }, + [6] = { 44, 25, 115, }, + [7] = { 46, 26, 118, }, + [8] = { 48, 27, 121, }, + [9] = { 50, 28, 124, }, + [10] = { 52, 29, 127, }, + [11] = { 54, 30, 130, }, + [12] = { 56, 31, 133, }, + [13] = { 58, 31, 136, }, + [14] = { 60, 32, 139, }, + [15] = { 62, 33, 142, }, + [16] = { 64, 34, 145, }, + [17] = { 66, 35, 148, }, + [18] = { 68, 36, 151, }, + [19] = { 69, 36, 154, }, + [20] = { 70, 36, 157, }, + [21] = { 72, 37, 160, }, + [22] = { 74, 38, 163, }, + [23] = { 76, 39, 166, }, + [24] = { 78, 40, 169, }, + [25] = { 80, 41, 172, }, + [26] = { 82, 41, 175, }, + [27] = { 84, 42, 178, }, + [28] = { 86, 43, 181, }, + [29] = { 88, 44, 184, }, + [30] = { 90, 45, 187, }, + }, +} +skills["VaalImmortalCall"] = { + name = "Vaal Immortal Call", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + spell = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + duration = true, + vaal = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [18] = true, [43] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("cooldown", 3), + skill("duration", 0.4), --"base_skill_effect_duration" = 400 + --"immortal_call_prevent_all_damage" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("Speed", "INC", 2, ModFlag.Cast), --"base_cast_speed_+%" = 2 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Duration", "INC", nil, 0, 0, { type = "Multiplier", var = "EnduranceCharge" }), --"buff_effect_duration_+%_per_endurance_charge" + }, + levels = { + [1] = { 34, 100, }, + [2] = { 36, 103, }, + [3] = { 38, 106, }, + [4] = { 40, 109, }, + [5] = { 42, 112, }, + [6] = { 44, 115, }, + [7] = { 46, 118, }, + [8] = { 48, 121, }, + [9] = { 50, 124, }, + [10] = { 52, 127, }, + [11] = { 54, 130, }, + [12] = { 56, 133, }, + [13] = { 58, 136, }, + [14] = { 60, 139, }, + [15] = { 62, 142, }, + [16] = { 64, 145, }, + [17] = { 66, 148, }, + [18] = { 68, 151, }, + [19] = { 69, 154, }, + [20] = { 70, 157, }, + [21] = { 72, 160, }, + [22] = { 74, 163, }, + [23] = { 76, 166, }, + [24] = { 78, 169, }, + [25] = { 80, 172, }, + [26] = { 82, 175, }, + [27] = { 84, 178, }, + [28] = { 86, 181, }, + [29] = { 88, 184, }, + [30] = { 90, 187, }, + }, +} +skills["InfernalBlow"] = { + name = "Infernal Blow", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + fire = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + fire = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [25] = true, [28] = true, [24] = true, [33] = true, }, + weaponTypes = { + ["None"] = true, + ["Staff"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + skill("critChance", 5), + mod("SkillPhysicalDamageConvertToFire", "BASE", 50), --"skill_physical_damage_%_to_convert_to_fire" = 50 + skill("duration", 0.5), --"base_skill_effect_duration" = 500 + --"corpse_explosion_monster_life_%" = 10 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 30, }, + [2] = { 2, 31.6, }, + [3] = { 4, 33.2, }, + [4] = { 7, 34.8, }, + [5] = { 11, 36.4, }, + [6] = { 16, 38, }, + [7] = { 20, 39.6, }, + [8] = { 24, 41.2, }, + [9] = { 28, 42.8, }, + [10] = { 32, 44.4, }, + [11] = { 36, 46, }, + [12] = { 40, 47.6, }, + [13] = { 44, 49.2, }, + [14] = { 48, 50.8, }, + [15] = { 52, 52.4, }, + [16] = { 56, 54, }, + [17] = { 60, 55.6, }, + [18] = { 64, 57.2, }, + [19] = { 67, 58.8, }, + [20] = { 70, 60.4, }, + [21] = { 72, 62, }, + [22] = { 74, 63.6, }, + [23] = { 76, 65.2, }, + [24] = { 78, 66.8, }, + [25] = { 80, 68.4, }, + [26] = { 82, 70, }, + [27] = { 84, 71.6, }, + [28] = { 86, 73.2, }, + [29] = { 88, 74.8, }, + [30] = { 90, 76.4, }, + }, +} +skills["LeapSlam"] = { + name = "Leap Slam", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + movement = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Two Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1.4), + skill("manaCost", 15), + --"base_global_chance_to_knockback_%" = 20 + --"is_area_damage" = ? + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + }, + qualityMods = { + --"base_global_chance_to_knockback_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, nil, }, + [2] = { 13, 1.2, }, + [3] = { 17, 2.4, }, + [4] = { 21, 3.6, }, + [5] = { 25, 4.8, }, + [6] = { 29, 6, }, + [7] = { 33, 7.2, }, + [8] = { 36, 8.4, }, + [9] = { 39, 9.6, }, + [10] = { 42, 10.8, }, + [11] = { 45, 12, }, + [12] = { 48, 13.2, }, + [13] = { 51, 14.4, }, + [14] = { 54, 15.6, }, + [15] = { 57, 16.8, }, + [16] = { 60, 18, }, + [17] = { 63, 19.2, }, + [18] = { 66, 20.4, }, + [19] = { 68, 21.6, }, + [20] = { 70, 22.8, }, + [21] = { 72, 24, }, + [22] = { 74, 25.2, }, + [23] = { 76, 26.4, }, + [24] = { 78, 27.6, }, + [25] = { 80, 28.8, }, + [26] = { 82, 30, }, + [27] = { 84, 31.2, }, + [28] = { 86, 32.4, }, + [29] = { 88, 33.6, }, + [30] = { 90, 34.8, }, + }, +} +skills["MoltenShell"] = { + name = "Molten Shell", + gemTags = { + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [36] = true, [26] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 2), + skill("critChance", 5), + mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 + --"is_area_damage" = 1 + skill("duration", 10), --"base_skill_effect_duration" = 10000 + --"skill_override_pvp_scaling_time_ms" = 1200 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[5] = "fire_shield_damage_threshold" + [6] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" + }, + levels = { + [1] = { 4, 8, 14, 20, 26, 17, }, + [2] = { 6, 9, 17, 26, 32, 20, }, + [3] = { 9, 9, 24, 35, 41, 26, }, + [4] = { 12, 10, 32, 47, 52, 33, }, + [5] = { 16, 11, 45, 68, 70, 44, }, + [6] = { 20, 12, 64, 96, 93, 58, }, + [7] = { 24, 13, 88, 132, 120, 75, }, + [8] = { 28, 14, 120, 180, 155, 97, }, + [9] = { 32, 16, 161, 241, 197, 123, }, + [10] = { 36, 17, 214, 321, 250, 156, }, + [11] = { 40, 19, 283, 425, 313, 196, }, + [12] = { 44, 20, 372, 558, 391, 245, }, + [13] = { 48, 22, 486, 729, 487, 304, }, + [14] = { 52, 23, 631, 947, 602, 376, }, + [15] = { 55, 25, 766, 1149, 705, 440, }, + [16] = { 58, 25, 928, 1392, 823, 515, }, + [17] = { 61, 26, 1122, 1683, 960, 600, }, + [18] = { 64, 27, 1354, 2031, 1118, 698, }, + [19] = { 67, 27, 1631, 2447, 1299, 812, }, + [20] = { 70, 28, 1962, 2943, 1508, 943, }, + [21] = { 72, 29, 2217, 3326, 1664, 1040, }, + [22] = { 74, 29, 2504, 3756, 1836, 1148, }, + [23] = { 76, 29, 2827, 4240, 2024, 1265, }, + [24] = { 78, 30, 3189, 4784, 2231, 1394, }, + [25] = { 80, 30, 3596, 5394, 2457, 1536, }, + [26] = { 82, 31, 4053, 6080, 2705, 1691, }, + [27] = { 84, 31, 4566, 6849, 2977, 1861, }, + [28] = { 86, 31, 5141, 7712, 3275, 2047, }, + [29] = { 88, 32, 5787, 8680, 3601, 2251, }, + [30] = { 90, 32, 6510, 9766, 3958, 2474, }, + }, +} +skills["VaalMoltenShell"] = { + name = "Vaal Molten Shell", + gemTags = { + strength = true, + active_skill = true, + vaal = true, + spell = true, + area = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + vaal = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [26] = true, [43] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 2), + skill("critChance", 5), + mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 + --"is_area_damage" = 1 + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"skill_override_pvp_scaling_time_ms" = 1400 + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"molten_shell_explode_each_hit" = ? + }, + qualityMods = { + mod("EnemyIgniteChance", "BASE", 1), --"base_chance_to_ignite_%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [4] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" + }, + levels = { + [1] = { 4, 9, 14, 17, }, + [2] = { 6, 11, 17, 20, }, + [3] = { 9, 15, 23, 26, }, + [4] = { 12, 20, 30, 33, }, + [5] = { 16, 27, 41, 44, }, + [6] = { 20, 37, 56, 58, }, + [7] = { 24, 49, 74, 75, }, + [8] = { 28, 64, 96, 97, }, + [9] = { 32, 83, 124, 123, }, + [10] = { 36, 106, 159, 156, }, + [11] = { 40, 135, 202, 196, }, + [12] = { 44, 170, 256, 245, }, + [13] = { 48, 214, 321, 304, }, + [14] = { 52, 267, 401, 376, }, + [15] = { 55, 315, 472, 440, }, + [16] = { 58, 370, 556, 515, }, + [17] = { 61, 435, 652, 600, }, + [18] = { 64, 509, 764, 698, }, + [19] = { 67, 596, 893, 812, }, + [20] = { 70, 696, 1043, 943, }, + [21] = { 72, 771, 1156, 1040, }, + [22] = { 74, 854, 1280, 1148, }, + [23] = { 76, 945, 1417, 1265, }, + [24] = { 78, 1045, 1568, 1394, }, + [25] = { 80, 1155, 1733, 1536, }, + [26] = { 82, 1277, 1915, 1691, }, + [27] = { 84, 1410, 2115, 1861, }, + [28] = { 86, 1557, 2335, 2047, }, + [29] = { 88, 1718, 2577, 2251, }, + [30] = { 90, 1895, 2843, 2474, }, + }, +} +skills["MoltenStrike"] = { + name = "Molten Strike", + gemTags = { + projectile = true, + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + fire = true, + }, + parts = { + { + name = "Melee Hit", + melee = true, + projectile = false, + area = false, + }, + { + name = "Magma Balls", + melee = false, + projectile = true, + area = true, + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [1] = true, [3] = true, [6] = true, [11] = true, [24] = true, [25] = true, [28] = true, [33] = true, [48] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("SkillPhysicalDamageConvertToFire", "BASE", 60), --"skill_physical_damage_%_to_convert_to_fire" = 60 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + mod("Damage", "MORE", -40, ModFlag.Projectile), --"active_skill_projectile_damage_+%_final" = -40 + --"show_number_of_projectiles" = ? + }, + qualityMods = { + mod("FireDamage", "INC", 1), --"fire_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 1, 20, }, + [2] = { 2, 21.4, }, + [3] = { 4, 22.8, }, + [4] = { 7, 24.2, }, + [5] = { 11, 25.6, }, + [6] = { 16, 27, }, + [7] = { 20, 28.4, }, + [8] = { 24, 29.8, }, + [9] = { 28, 31.2, }, + [10] = { 32, 32.6, }, + [11] = { 36, 34, }, + [12] = { 40, 35.4, }, + [13] = { 44, 36.8, }, + [14] = { 48, 38.2, }, + [15] = { 52, 39.6, }, + [16] = { 56, 41, }, + [17] = { 60, 42.4, }, + [18] = { 64, 43.8, }, + [19] = { 67, 45.2, }, + [20] = { 70, 46.6, }, + [21] = { 72, 48, }, + [22] = { 74, 49.4, }, + [23] = { 76, 50.8, }, + [24] = { 78, 52.2, }, + [25] = { 80, 53.6, }, + [26] = { 82, 55, }, + [27] = { 84, 56.4, }, + [28] = { 86, 57.8, }, + [29] = { 88, 59.2, }, + [30] = { 90, 60.6, }, + }, +} +skills["Punishment"] = { + name = "Punishment", + gemTags = { + curse = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"newpunishment_applied_buff_duration_ms" = 4000 + }, + qualityMods = { + mod("Speed", "INC", 0.25, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" = 0.25 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("Damage", "MORE", nil, ModFlag.Melee, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_melee_damage_+%_final" + [5] = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Buff"}), --"newpunishment_attack_speed_+%" + [6] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 24, 9, 25, 10, 0, }, + [2] = { 27, 26, 9.1, 26, 10, 4, }, + [3] = { 30, 27, 9.2, 26, 11, 8, }, + [4] = { 33, 29, 9.3, 27, 11, 12, }, + [5] = { 36, 30, 9.4, 27, 12, 16, }, + [6] = { 39, 32, 9.5, 28, 12, 20, }, + [7] = { 42, 34, 9.6, 28, 13, 24, }, + [8] = { 45, 35, 9.7, 29, 13, 28, }, + [9] = { 48, 37, 9.8, 29, 14, 32, }, + [10] = { 50, 38, 9.9, 30, 14, 36, }, + [11] = { 52, 39, 10, 30, 15, 40, }, + [12] = { 54, 40, 10.1, 31, 15, 44, }, + [13] = { 56, 42, 10.2, 31, 16, 48, }, + [14] = { 58, 43, 10.3, 32, 16, 52, }, + [15] = { 60, 44, 10.4, 32, 17, 56, }, + [16] = { 62, 45, 10.5, 33, 17, 60, }, + [17] = { 64, 46, 10.6, 33, 18, 64, }, + [18] = { 66, 47, 10.7, 34, 18, 68, }, + [19] = { 68, 48, 10.8, 34, 19, 72, }, + [20] = { 70, 50, 10.9, 35, 19, 76, }, + [21] = { 72, 51, 11, 35, 20, 80, }, + [22] = { 74, 52, 11.1, 36, 20, 84, }, + [23] = { 76, 53, 11.2, 36, 21, 88, }, + [24] = { 78, 54, 11.3, 37, 21, 92, }, + [25] = { 80, 56, 11.4, 37, 22, 96, }, + [26] = { 82, 57, 11.5, 38, 22, 100, }, + [27] = { 84, 58, 11.6, 38, 23, 104, }, + [28] = { 86, 59, 11.7, 39, 23, 108, }, + [29] = { 88, 60, 11.8, 39, 24, 112, }, + [30] = { 90, 61, 11.9, 40, 24, 116, }, + }, +} +skills["FireResistAura"] = { + name = "Purity of Fire", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [33] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_fire_damage_resistance_%" + [3] = mod("FireResistMax", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_maximum_fire_damage_resistance_%" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 22, 0, 0, }, + [2] = { 27, 23, 0, 3, }, + [3] = { 30, 24, 0, 6, }, + [4] = { 33, 25, 0, 9, }, + [5] = { 36, 26, 1, 12, }, + [6] = { 39, 27, 1, 15, }, + [7] = { 42, 28, 1, 18, }, + [8] = { 45, 29, 1, 21, }, + [9] = { 48, 30, 1, 23, }, + [10] = { 50, 31, 1, 25, }, + [11] = { 52, 32, 2, 27, }, + [12] = { 54, 33, 2, 29, }, + [13] = { 56, 34, 2, 31, }, + [14] = { 58, 35, 2, 33, }, + [15] = { 60, 36, 2, 35, }, + [16] = { 62, 37, 2, 36, }, + [17] = { 64, 38, 3, 37, }, + [18] = { 66, 39, 3, 38, }, + [19] = { 68, 40, 3, 39, }, + [20] = { 70, 41, 4, 40, }, + [21] = { 72, 42, 4, 41, }, + [22] = { 74, 43, 4, 42, }, + [23] = { 76, 44, 5, 43, }, + [24] = { 78, 45, 5, 44, }, + [25] = { 80, 46, 5, 45, }, + [26] = { 82, 47, 5, 46, }, + [27] = { 84, 48, 5, 47, }, + [28] = { 86, 49, 5, 48, }, + [29] = { 88, 50, 5, 49, }, + [30] = { 90, 51, 5, 50, }, + }, +} +skills["RallyingCry"] = { + name = "Rallying Cry", + gemTags = { + warcry = true, + strength = true, + active_skill = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + }, + skillTypes = { [5] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + skill("duration", 8), --"base_skill_effect_duration" = 8000 + --"base_deal_no_damage" = ? + --"is_warcry" = ? + }, + qualityMods = { + mod("Duration", "INC", 1.5), --"skill_effect_duration_+%" = 1.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "inspiring_cry_damage_+%_per_one_hundred_nearby_enemies" + [4] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"damage_+%" + [5] = mod("ManaRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_mana_regeneration_rate_per_minute" + }, + levels = { + [1] = { 10, 8, 140, 10, 1.8, }, + [2] = { 13, 10, 142, 10, 2.4, }, + [3] = { 17, 12, 144, 11, 3.1, }, + [4] = { 21, 13, 146, 11, 3.8, }, + [5] = { 25, 14, 148, 11, 4.4, }, + [6] = { 29, 15, 150, 12, 5.1, }, + [7] = { 33, 16, 152, 12, 5.8, }, + [8] = { 36, 17, 154, 12, 6.5, }, + [9] = { 39, 18, 156, 13, 7.1, }, + [10] = { 42, 20, 158, 13, 7.8, }, + [11] = { 45, 21, 160, 13, 8.5, }, + [12] = { 48, 22, 162, 14, 9.2, }, + [13] = { 51, 24, 164, 14, 9.9, }, + [14] = { 54, 25, 166, 14, 10.6, }, + [15] = { 57, 26, 168, 15, 11.3, }, + [16] = { 60, 26, 170, 15, 12, }, + [17] = { 63, 26, 172, 15, 12.7, }, + [18] = { 66, 26, 174, 16, 13.4, }, + [19] = { 68, 27, 176, 16, 14.1, }, + [20] = { 70, 27, 178, 16, 14.8, }, + [21] = { 72, 28, 180, 17, 15.5, }, + [22] = { 74, 28, 182, 17, 16.2, }, + [23] = { 76, 29, 184, 17, 16.9, }, + [24] = { 78, 29, 186, 18, 17.7, }, + [25] = { 80, 30, 188, 18, 18.4, }, + [26] = { 82, 30, 190, 18, 19.1, }, + [27] = { 84, 30, 192, 19, 19.8, }, + [28] = { 86, 30, 194, 19, 20.5, }, + [29] = { 88, 31, 196, 19, 21.3, }, + [30] = { 90, 31, 198, 20, 22, }, + }, +} +skills["Reckoning"] = { + name = "Reckoning", + gemTags = { + trigger = true, + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + area = true, + melee = true, + }, + skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [47] = true, [57] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Claw"] = true, + ["One Handed Axe"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 0.4), + --"melee_counterattack_trigger_on_block_%" = 100 + --"shield_counterattack_aoe_range" = 35 + --"attack_unusable_if_triggerable" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 4, -30, }, + [2] = { 6, -28, }, + [3] = { 9, -26, }, + [4] = { 12, -24, }, + [5] = { 16, -22, }, + [6] = { 20, -20, }, + [7] = { 24, -18, }, + [8] = { 28, -16, }, + [9] = { 32, -14, }, + [10] = { 36, -12, }, + [11] = { 40, -10, }, + [12] = { 44, -8, }, + [13] = { 48, -6, }, + [14] = { 52, -4, }, + [15] = { 55, -2, }, + [16] = { 58, nil, }, + [17] = { 61, 2, }, + [18] = { 64, 4, }, + [19] = { 67, 6, }, + [20] = { 70, 8, }, + [21] = { 72, 10, }, + [22] = { 74, 12, }, + [23] = { 76, 14, }, + [24] = { 78, 16, }, + [25] = { 80, 18, }, + [26] = { 82, 20, }, + [27] = { 84, 22, }, + [28] = { 86, 24, }, + [29] = { 88, 26, }, + [30] = { 90, 28, }, + }, +} +skills["RejuvenationTotem"] = { + name = "Rejuvenation Totem", + gemTags = { + totem = true, + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + totem = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [12] = true, [15] = true, [27] = true, [17] = true, [19] = true, [30] = true, [44] = true, }, + skillTotemId = 4, + baseMods = { + skill("castTime", 0.6), + --"is_totem" = 1 + --"base_totem_duration" = 8000 + --"base_totem_range" = 10 + --"base_skill_is_totemified" = ? + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 3, 0, KeywordFlag.Aura), --"base_aura_area_of_effect_+%" = 3 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"base_life_regeneration_rate_per_minute" + [4] = skill("totemLevel", nil), --"base_active_skill_totem_level" + }, + levels = { + [1] = { 4, 13, 6.35, 4, }, + [2] = { 6, 14, 8.6833333333333, 6, }, + [3] = { 9, 15, 12.366666666667, 9, }, + [4] = { 12, 16, 16, 12, }, + [5] = { 16, 17, 21.033333333333, 16, }, + [6] = { 20, 18, 26.3, 20, }, + [7] = { 24, 19, 32.25, 24, }, + [8] = { 28, 20, 39.366666666667, 28, }, + [9] = { 32, 22, 46.116666666667, 32, }, + [10] = { 36, 24, 53.7, 36, }, + [11] = { 40, 26, 61.816666666667, 40, }, + [12] = { 44, 27, 72.8, 44, }, + [13] = { 48, 28, 82.716666666667, 48, }, + [14] = { 52, 29, 92.666666666667, 52, }, + [15] = { 55, 30, 102.85, 55, }, + [16] = { 58, 30, 113.98333333333, 58, }, + [17] = { 61, 31, 122.95, 61, }, + [18] = { 64, 31, 135.6, 64, }, + [19] = { 67, 32, 149.03333333333, 67, }, + [20] = { 70, 32, 162.2, 70, }, + [21] = { 72, 33, 168.61666666667, 72, }, + [22] = { 74, 34, 177.03333333333, 74, }, + [23] = { 76, 34, 182.1, 76, }, + [24] = { 78, 35, 191.2, 78, }, + [25] = { 80, 36, 200.66666666667, 80, }, + [26] = { 82, 37, 206.03333333333, 82, }, + [27] = { 84, 38, 217.43333333333, 84, }, + [28] = { 86, 38, 227.95, 86, }, + [29] = { 88, 39, 241.21666666667, 88, }, + [30] = { 90, 40, 243.65, 90, }, + }, +} +skills["SearingBond"] = { + name = "Searing Bond", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + duration = true, + fire = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [40] = true, [12] = true, [17] = true, [19] = true, [27] = true, [29] = true, [30] = true, [36] = true, [33] = true, }, + skillTotemId = 9, + baseMods = { + skill("castTime", 1), + --"base_totem_duration" = 8000 + --"base_totem_range" = 100 + mod("ActiveTotemLimit", "BASE", 1), --"number_of_additional_totems_allowed" = 1 + --"is_totem" = ? + --"base_skill_is_totemified" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("totemLevel", nil), --"base_active_skill_totem_level" + [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 12, 18, 12, 23.583333333333, }, + [2] = { 15, 19, 15, 31.35, }, + [3] = { 19, 20, 19, 44.816666666667, }, + [4] = { 23, 21, 23, 62.833333333333, }, + [5] = { 27, 23, 27, 86.783333333333, }, + [6] = { 31, 25, 31, 118.43333333333, }, + [7] = { 35, 27, 35, 160.06666666667, }, + [8] = { 38, 29, 38, 199.58333333333, }, + [9] = { 41, 31, 41, 247.88333333333, }, + [10] = { 44, 33, 44, 306.76666666667, }, + [11] = { 47, 35, 47, 378.48333333333, }, + [12] = { 50, 37, 50, 465.65, }, + [13] = { 53, 39, 53, 571.45, }, + [14] = { 56, 40, 56, 699.7, }, + [15] = { 59, 42, 59, 854.93333333333, }, + [16] = { 62, 44, 62, 1042.6166666667, }, + [17] = { 64, 46, 64, 1188.95, }, + [18] = { 66, 48, 66, 1354.8333333333, }, + [19] = { 68, 50, 68, 1542.7666666667, }, + [20] = { 70, 51, 70, 1755.6333333333, }, + [21] = { 72, 53, 72, 1996.5833333333, }, + [22] = { 74, 53, 74, 2269.2666666667, }, + [23] = { 76, 54, 76, 2577.7166666667, }, + [24] = { 78, 56, 78, 2926.5, }, + [25] = { 80, 58, 80, 3320.75, }, + [26] = { 82, 59, 82, 3766.2333333333, }, + [27] = { 84, 59, 84, 4269.4666666667, }, + [28] = { 86, 61, 86, 4837.7333333333, }, + [29] = { 88, 62, 88, 5479.2333333333, }, + [30] = { 90, 64, 90, 6203.2333333333, }, + }, +} +skills["NewShieldCharge"] = { + name = "Shield Charge", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + movement = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + movement = true, + }, + skillTypes = { [1] = true, [7] = true, [13] = true, [24] = true, [11] = true, [38] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Claw"] = true, + ["One Handed Axe"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + --"shield_charge_scaling_stun_threshold_reduction_+%_at_maximum_range" = 50 + mod("MovementSpeed", "INC", 75, 0, 0, nil), --"base_movement_velocity_+%" = 75 + --"shield_charge_damage_+%_maximum" = 200 + --"ignores_proximity_shield" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + mod("Damage", "INC", 1, 0, 0, nil), --"damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 10, -50, }, + [2] = { 13, -49.4, }, + [3] = { 17, -48.8, }, + [4] = { 21, -48.2, }, + [5] = { 25, -47.6, }, + [6] = { 29, -47, }, + [7] = { 33, -46.4, }, + [8] = { 36, -45.8, }, + [9] = { 39, -45.2, }, + [10] = { 42, -44.6, }, + [11] = { 45, -44, }, + [12] = { 48, -43.4, }, + [13] = { 51, -42.8, }, + [14] = { 54, -42.2, }, + [15] = { 57, -41.6, }, + [16] = { 60, -41, }, + [17] = { 63, -40.4, }, + [18] = { 66, -39.8, }, + [19] = { 68, -39.2, }, + [20] = { 70, -38.6, }, + [21] = { 72, -38, }, + [22] = { 74, -37.4, }, + [23] = { 76, -36.8, }, + [24] = { 78, -36.2, }, + [25] = { 80, -35.6, }, + [26] = { 82, -35, }, + [27] = { 84, -34.4, }, + [28] = { 86, -33.8, }, + [29] = { 88, -33.2, }, + [30] = { 90, -32.6, }, + }, +} +skills["ShockwaveTotem"] = { + name = "Shockwave Totem", + gemTags = { + totem = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + totem = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [19] = true, [30] = true, [26] = true, }, + skillTotemId = 5, + baseMods = { + skill("castTime", 0.6), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + --"base_totem_duration" = 8000 + --"base_totem_range" = 100 + --"base_global_chance_to_knockback_%" = 25 + --"is_totem" = ? + --"is_area_damage" = ? + --"base_skill_is_totemified" = ? + }, + qualityMods = { + mod("TotemLife", "INC", 1), --"totem_life_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [4] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + [5] = skill("totemLevel", nil), --"base_active_skill_totem_level" + }, + levels = { + [1] = { 28, 24, 23, 46, 28, }, + [2] = { 31, 26, 28, 51, 31, }, + [3] = { 34, 28, 33, 62, 34, }, + [4] = { 37, 31, 40, 74, 37, }, + [5] = { 40, 33, 47, 88, 40, }, + [6] = { 42, 34, 53, 98, 42, }, + [7] = { 44, 36, 59, 110, 44, }, + [8] = { 46, 39, 66, 123, 46, }, + [9] = { 48, 43, 74, 137, 48, }, + [10] = { 50, 46, 82, 153, 50, }, + [11] = { 52, 49, 92, 170, 52, }, + [12] = { 54, 51, 102, 189, 54, }, + [13] = { 56, 53, 113, 210, 56, }, + [14] = { 58, 53, 126, 233, 58, }, + [15] = { 60, 55, 139, 259, 60, }, + [16] = { 62, 55, 154, 287, 62, }, + [17] = { 64, 57, 171, 318, 64, }, + [18] = { 66, 57, 189, 351, 66, }, + [19] = { 68, 58, 209, 389, 68, }, + [20] = { 70, 58, 231, 429, 70, }, + [21] = { 72, 59, 255, 474, 72, }, + [22] = { 74, 60, 282, 524, 74, }, + [23] = { 76, 61, 311, 578, 76, }, + [24] = { 78, 62, 343, 637, 78, }, + [25] = { 80, 62, 378, 702, 80, }, + [26] = { 82, 63, 416, 773, 82, }, + [27] = { 84, 64, 458, 851, 84, }, + [28] = { 86, 65, 504, 936, 86, }, + [29] = { 88, 66, 555, 1030, 88, }, + [30] = { 90, 66, 610, 1132, 90, }, + }, +} +skills["StaticStrike"] = { + name = "Static Strike", + gemTags = { + strength = true, + active_skill = true, + attack = true, + melee = true, + area = true, + duration = true, + lightning = true, + }, + parts = { + { + name = "Melee hit", + area = false, + }, + { + name = "Explosion", + area = true, + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [1] = true, [6] = true, [25] = true, [28] = true, [24] = true, [11] = true, [12] = true, [35] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 60), --"skill_physical_damage_%_to_convert_to_lightning" = 60 + skill("duration", 0.75), --"base_skill_effect_duration" = 750 + mod("Damage", "MORE", -40, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"static_strike_explosion_damage_+%_final" = -40 + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 10, 0, }, + [2] = { 15, 12.6, 0, }, + [3] = { 19, 15.2, 0, }, + [4] = { 23, 17.8, 0, }, + [5] = { 27, 20.4, 1, }, + [6] = { 31, 23, 1, }, + [7] = { 35, 25.6, 1, }, + [8] = { 38, 28.2, 1, }, + [9] = { 41, 30.8, 1, }, + [10] = { 44, 33.4, 2, }, + [11] = { 47, 36, 2, }, + [12] = { 50, 38.6, 2, }, + [13] = { 53, 41.2, 2, }, + [14] = { 56, 43.8, 2, }, + [15] = { 59, 46.4, 3, }, + [16] = { 62, 49, 3, }, + [17] = { 64, 51.6, 3, }, + [18] = { 66, 54.2, 3, }, + [19] = { 68, 56.8, 3, }, + [20] = { 70, 59.4, 4, }, + [21] = { 72, 62, 4, }, + [22] = { 74, 64.6, 4, }, + [23] = { 76, 67.2, 4, }, + [24] = { 78, 69.8, 4, }, + [25] = { 80, 72.4, 5, }, + [26] = { 82, 75, 5, }, + [27] = { 84, 77.6, 5, }, + [28] = { 86, 80.2, 5, }, + [29] = { 88, 82.8, 5, }, + [30] = { 90, 85.4, 6, }, + }, +} +skills["SummonFireGolem"] = { + name = "Summon Flame Golem", + gemTags = { + strength = true, + active_skill = true, + fire = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedFlameGolem", + }, + color = 1, + baseFlags = { + spell = true, + minion = true, + golem = true, + fire = true, + }, + skillTypes = { [36] = true, [33] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, + minionSkillTypes = { [10] = true, [11] = true, [3] = true, [2] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 7 + mod("Misc", "LIST", { type = "Condition", var = "HaveFireGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("Damage", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"fire_golem_grants_damage_+%" + [5] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 15, 30, 34, }, + [2] = { 36, 32, 1, 15, 32, 36, }, + [3] = { 38, 34, 1, 16, 34, 38, }, + [4] = { 40, 36, 2, 16, 36, 40, }, + [5] = { 42, 38, 2, 16, 38, 42, }, + [6] = { 44, 40, 3, 16, 40, 44, }, + [7] = { 46, 42, 3, 17, 42, 46, }, + [8] = { 48, 44, 4, 17, 44, 48, }, + [9] = { 50, 44, 4, 17, 46, 50, }, + [10] = { 52, 46, 5, 17, 48, 52, }, + [11] = { 54, 48, 5, 18, 50, 54, }, + [12] = { 56, 48, 6, 18, 52, 56, }, + [13] = { 58, 50, 6, 18, 54, 58, }, + [14] = { 60, 50, 7, 18, 56, 60, }, + [15] = { 62, 52, 7, 19, 58, 62, }, + [16] = { 64, 52, 8, 19, 60, 64, }, + [17] = { 66, 52, 8, 19, 62, 66, }, + [18] = { 68, 52, 9, 19, 64, 68, }, + [19] = { 69, 54, 9, 20, 66, 69, }, + [20] = { 70, 54, 10, 20, 68, 70, }, + [21] = { 72, 56, 10, 20, 70, 72, }, + [22] = { 74, 56, 11, 20, 72, 74, }, + [23] = { 76, 58, 11, 21, 74, 76, }, + [24] = { 78, 58, 12, 21, 76, 78, }, + [25] = { 80, 60, 12, 21, 78, 80, }, + [26] = { 82, 60, 13, 21, 80, 82, }, + [27] = { 84, 60, 13, 22, 82, 84, }, + [28] = { 86, 60, 14, 22, 84, 86, }, + [29] = { 88, 62, 14, 22, 86, 88, }, + [30] = { 90, 62, 15, 22, 88, 90, }, + }, +} +skills["SummonRockGolem"] = { + name = "Summon Stone Golem", + gemTags = { + strength = true, + active_skill = true, + minion = true, + spell = true, + golem = true, + }, + minionList = { + "SummonedStoneGolem", + }, + color = 1, + baseFlags = { + spell = true, + minion = true, + golem = true, + }, + skillTypes = { [36] = true, [19] = true, [9] = true, [21] = true, [26] = true, [2] = true, [18] = true, [17] = true, [49] = true, [62] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [38] = true, [11] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 6), + mod("ActiveGolemLimit", "BASE", 1), --"base_number_of_golems_allowed" = 1 + --"display_minion_monster_type" = 10 + mod("Misc", "LIST", { type = "Condition", var = "HavePhysicalGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 1) }), --"minion_maximum_life_+%" = 1 + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 1) }), --"minion_damage_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + --[3] = "base_actor_scale_+%" + [4] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + [5] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"stone_golem_grants_base_life_regeneration_rate_per_minute" + [6] = skill("minionLevel", nil), --"display_minion_monster_level" + }, + levels = { + [1] = { 34, 30, 0, 30, 33, 34, }, + [2] = { 36, 32, 1, 32, 36, 36, }, + [3] = { 38, 34, 1, 34, 39, 38, }, + [4] = { 40, 36, 2, 36, 42, 40, }, + [5] = { 42, 38, 2, 38, 45, 42, }, + [6] = { 44, 40, 3, 40, 49, 44, }, + [7] = { 46, 42, 3, 42, 52, 46, }, + [8] = { 48, 44, 4, 44, 56, 48, }, + [9] = { 50, 44, 4, 46, 60, 50, }, + [10] = { 52, 46, 5, 48, 64, 52, }, + [11] = { 54, 48, 5, 50, 68, 54, }, + [12] = { 56, 48, 6, 52, 72, 56, }, + [13] = { 58, 50, 6, 54, 76, 58, }, + [14] = { 60, 50, 7, 56, 81, 60, }, + [15] = { 62, 52, 7, 58, 85, 62, }, + [16] = { 64, 52, 8, 60, 90, 64, }, + [17] = { 66, 52, 8, 62, 95, 66, }, + [18] = { 68, 52, 9, 64, 100, 68, }, + [19] = { 69, 54, 9, 66, 103, 69, }, + [20] = { 70, 54, 10, 68, 105, 70, }, + [21] = { 72, 56, 10, 70, 110, 72, }, + [22] = { 74, 56, 11, 72, 116, 74, }, + [23] = { 76, 58, 11, 74, 121, 76, }, + [24] = { 78, 58, 12, 76, 127, 78, }, + [25] = { 80, 60, 12, 78, 133, 80, }, + [26] = { 82, 60, 13, 80, 139, 82, }, + [27] = { 84, 60, 13, 82, 145, 84, }, + [28] = { 86, 60, 14, 84, 151, 86, }, + [29] = { 88, 62, 14, 86, 157, 88, }, + [30] = { 90, 62, 15, 88, 164, 90, }, + }, +} +skills["Sunder"] = { + name = "Sunder", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + parts = { + { + name = "Primary wave", + }, + { + name = "Shockwaves", + }, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 8), + mod("Damage", "MORE", -60, ModFlag.Attack, 0, { type = "SkillPart", skillPart = 2 }), --"shockwave_slam_explosion_damage_+%_final" = -60 + mod("Speed", "MORE", -15, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -15 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + --[3] = "active_skill_base_radius_+" + }, + levels = { + [1] = { 12, 40, 0, }, + [2] = { 15, 42.2, 0, }, + [3] = { 19, 44.4, 1, }, + [4] = { 23, 46.6, 1, }, + [5] = { 27, 48.8, 1, }, + [6] = { 31, 51, 2, }, + [7] = { 35, 53.2, 2, }, + [8] = { 38, 55.4, 2, }, + [9] = { 41, 57.6, 3, }, + [10] = { 44, 59.8, 3, }, + [11] = { 47, 62, 3, }, + [12] = { 50, 64.2, 4, }, + [13] = { 53, 66.4, 4, }, + [14] = { 56, 68.6, 4, }, + [15] = { 59, 70.8, 5, }, + [16] = { 62, 73, 5, }, + [17] = { 64, 75.2, 5, }, + [18] = { 66, 77.4, 6, }, + [19] = { 68, 79.6, 6, }, + [20] = { 70, 81.8, 6, }, + [21] = { 72, 84, 7, }, + [22] = { 74, 86.2, 7, }, + [23] = { 76, 88.4, 7, }, + [24] = { 78, 90.6, 8, }, + [25] = { 80, 92.8, 8, }, + [26] = { 82, 95, 8, }, + [27] = { 84, 97.2, 9, }, + [28] = { 86, 99.4, 9, }, + [29] = { 88, 101.6, 9, }, + [30] = { 90, 103.8, 10, }, + }, +} +skills["Sweep"] = { + name = "Sweep", + gemTags = { + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, [28] = true, [24] = true, }, + weaponTypes = { + ["Two Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + }, + baseMods = { + skill("castTime", 1.15), + skill("manaCost", 8), + mod("Speed", "MORE", -10, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -10 + --"is_area_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 0.5), --"base_skill_area_of_effect_+%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "base_global_chance_to_knockback_%" + --[3] = "active_skill_base_radius_+" + [4] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 12, 30, 0, nil, }, + [2] = { 15, 30, 0, 2, }, + [3] = { 19, 31, 0, 4, }, + [4] = { 23, 31, 0, 6, }, + [5] = { 27, 32, 1, 8, }, + [6] = { 31, 32, 1, 10, }, + [7] = { 35, 33, 1, 12, }, + [8] = { 38, 33, 1, 14, }, + [9] = { 41, 34, 1, 16, }, + [10] = { 44, 34, 2, 18, }, + [11] = { 47, 35, 2, 20, }, + [12] = { 50, 35, 2, 22, }, + [13] = { 53, 36, 2, 24, }, + [14] = { 56, 36, 2, 26, }, + [15] = { 59, 37, 3, 28, }, + [16] = { 62, 37, 3, 30, }, + [17] = { 64, 38, 3, 32, }, + [18] = { 66, 38, 3, 34, }, + [19] = { 68, 39, 3, 36, }, + [20] = { 70, 39, 4, 38, }, + [21] = { 72, 40, 4, 40, }, + [22] = { 74, 40, 4, 42, }, + [23] = { 76, 41, 4, 44, }, + [24] = { 78, 41, 4, 46, }, + [25] = { 80, 42, 5, 48, }, + [26] = { 82, 42, 5, 50, }, + [27] = { 84, 43, 5, 52, }, + [28] = { 86, 43, 5, 54, }, + [29] = { 88, 44, 5, 56, }, + [30] = { 90, 44, 6, 58, }, + }, +} +skills["Vengeance"] = { + name = "Vengeance", + gemTags = { + trigger = true, + strength = true, + active_skill = true, + attack = true, + area = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, [24] = true, [47] = true, [6] = true, [57] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 1.2), + --"melee_counterattack_trigger_on_hit_%" = 30 + --"attack_unusable_if_triggerable" = ? + skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? + --"is_area_damage" = ? + }, + qualityMods = { + --"melee_counterattack_trigger_on_hit_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + }, + levels = { + [1] = { 24, -25, }, + [2] = { 27, -23, }, + [3] = { 30, -21, }, + [4] = { 33, -19, }, + [5] = { 36, -17, }, + [6] = { 39, -15, }, + [7] = { 42, -13, }, + [8] = { 45, -11, }, + [9] = { 48, -9, }, + [10] = { 50, -7, }, + [11] = { 52, -5, }, + [12] = { 54, -3, }, + [13] = { 56, -1, }, + [14] = { 58, 1, }, + [15] = { 60, 3, }, + [16] = { 62, 5, }, + [17] = { 64, 7, }, + [18] = { 66, 9, }, + [19] = { 68, 11, }, + [20] = { 70, 13, }, + [21] = { 72, 15, }, + [22] = { 74, 17, }, + [23] = { 76, 19, }, + [24] = { 78, 21, }, + [25] = { 80, 23, }, + [26] = { 82, 25, }, + [27] = { 84, 27, }, + [28] = { 86, 29, }, + [29] = { 88, 31, }, + [30] = { 90, 33, }, + }, +} +skills["VigilantStrike"] = { + name = "Vigilant Strike", + gemTags = { + attack = true, + strength = true, + active_skill = true, + melee = true, + }, + color = 1, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [5] = true, [24] = true, [6] = true, [28] = true, [25] = true, [53] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("manaCost", 6), + skill("cooldown", 4), + skill("cannotBeEvaded", true), --"global_always_hit" = ? + }, + qualityMods = { + mod("FortifyDuration", "INC", 1), --"fortify_duration_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Attack), + [3] = mod("FortifyDuration", "INC", nil), --"fortify_duration_+%" + }, + levels = { + [1] = { 4, 65, 75, }, + [2] = { 6, 67, 80, }, + [3] = { 9, 69, 85, }, + [4] = { 12, 71, 90, }, + [5] = { 16, 73, 95, }, + [6] = { 20, 75, 100, }, + [7] = { 24, 77, 105, }, + [8] = { 28, 79, 110, }, + [9] = { 32, 81, 115, }, + [10] = { 36, 83, 120, }, + [11] = { 40, 85, 125, }, + [12] = { 44, 87, 130, }, + [13] = { 48, 89, 135, }, + [14] = { 52, 91, 140, }, + [15] = { 55, 93, 145, }, + [16] = { 58, 95, 150, }, + [17] = { 61, 97, 155, }, + [18] = { 64, 99, 160, }, + [19] = { 67, 101, 165, }, + [20] = { 70, 103, 170, }, + [21] = { 72, 105, 175, }, + [22] = { 74, 107, 180, }, + [23] = { 76, 109, 185, }, + [24] = { 78, 111, 190, }, + [25] = { 80, 113, 195, }, + [26] = { 82, 115, 200, }, + [27] = { 84, 117, 205, }, + [28] = { 86, 119, 210, }, + [29] = { 88, 121, 215, }, + [30] = { 90, 123, 220, }, + }, +} +skills["Vitality"] = { + name = "Vitality", + gemTags = { + aura = true, + strength = true, + active_skill = true, + spell = true, + area = true, + }, + color = 1, + baseFlags = { + spell = true, + aura = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, }, + baseMods = { + skill("castTime", 1.2), + skill("manaCost", 35), + skill("cooldown", 1.2), + --"base_deal_no_damage" = ? + }, + qualityMods = { + mod("AreaOfEffect", "INC", 1), --"base_skill_area_of_effect_+%" = 1 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LifeRegenPercent", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Aura" }), --"life_regeneration_rate_per_minute_%" + [3] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + }, + levels = { + [1] = { 24, 0.7, 0, }, + [2] = { 27, 0.75, 3, }, + [3] = { 30, 0.8, 6, }, + [4] = { 33, 0.85, 9, }, + [5] = { 36, 0.9, 12, }, + [6] = { 39, 0.95, 15, }, + [7] = { 42, 1, 18, }, + [8] = { 45, 1.05, 21, }, + [9] = { 48, 1.1, 23, }, + [10] = { 50, 1.15, 25, }, + [11] = { 52, 1.2, 27, }, + [12] = { 54, 1.25, 29, }, + [13] = { 56, 1.3, 31, }, + [14] = { 58, 1.35, 33, }, + [15] = { 60, 1.4, 35, }, + [16] = { 62, 1.45, 36, }, + [17] = { 64, 1.5, 37, }, + [18] = { 66, 1.55, 38, }, + [19] = { 68, 1.6, 39, }, + [20] = { 70, 1.65, 40, }, + [21] = { 72, 1.7, 41, }, + [22] = { 74, 1.75, 42, }, + [23] = { 76, 1.8, 43, }, + [24] = { 78, 1.85, 44, }, + [25] = { 80, 1.9, 45, }, + [26] = { 82, 1.95, 46, }, + [27] = { 84, 2, 47, }, + [28] = { 86, 2.05, 48, }, + [29] = { 88, 2.1, 49, }, + [30] = { 90, 2.15, 50, }, + }, +} +skills["WarlordsMark"] = { + name = "Warlord's Mark", + gemTags = { + curse = true, + strength = true, + active_skill = true, + spell = true, + area = true, + duration = true, + }, + color = 1, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"chance_to_be_stunned_%" = 10 + mod("SelfDamageLifeLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_leech_on_any_damage_when_hit_permyriad" = 200 + mod("SelfDamageManaLeech", "BASE", 200, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_leech_on_any_damage_when_hit_permyriad" = 200 + --"base_deal_no_damage" = ? + skill("debuff", true), + }, + qualityMods = { + --"chance_to_grant_endurance_charge_on_death_%" = 0.5 + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = mod("AreaOfEffect", "INC", nil), --"base_skill_area_of_effect_+%" + [5] = mod("StunRecovery", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_stun_recovery_+%" + --[6] = "chance_to_grant_endurance_charge_on_death_%" + }, + levels = { + [1] = { 24, 24, 6, 0, -21, 21, }, + [2] = { 27, 26, 6.2, 4, -21, 21, }, + [3] = { 30, 27, 6.4, 8, -22, 22, }, + [4] = { 33, 29, 6.6, 12, -22, 22, }, + [5] = { 36, 30, 6.8, 16, -23, 23, }, + [6] = { 39, 32, 7, 20, -23, 23, }, + [7] = { 42, 34, 7.2, 24, -24, 24, }, + [8] = { 45, 35, 7.4, 28, -24, 24, }, + [9] = { 48, 37, 7.6, 32, -25, 25, }, + [10] = { 50, 38, 7.8, 36, -25, 25, }, + [11] = { 52, 39, 8, 40, -26, 26, }, + [12] = { 54, 40, 8.2, 44, -26, 26, }, + [13] = { 56, 42, 8.4, 48, -27, 27, }, + [14] = { 58, 43, 8.6, 52, -27, 27, }, + [15] = { 60, 44, 8.8, 56, -28, 28, }, + [16] = { 62, 45, 9, 60, -28, 28, }, + [17] = { 64, 46, 9.2, 64, -29, 29, }, + [18] = { 66, 47, 9.4, 68, -29, 29, }, + [19] = { 68, 48, 9.6, 72, -30, 30, }, + [20] = { 70, 50, 9.8, 76, -30, 30, }, + [21] = { 72, 51, 10, 80, -31, 31, }, + [22] = { 74, 52, 10.2, 84, -31, 31, }, + [23] = { 76, 53, 10.4, 88, -32, 32, }, + [24] = { 78, 54, 10.6, 92, -32, 32, }, + [25] = { 80, 56, 10.8, 96, -33, 33, }, + [26] = { 82, 57, 11, 100, -33, 33, }, + [27] = { 84, 58, 11.2, 104, -34, 34, }, + [28] = { 86, 59, 11.4, 108, -34, 34, }, + [29] = { 88, 60, 11.6, 112, -35, 35, }, + [30] = { 90, 61, 11.8, 116, -35, 35, }, + }, +} \ No newline at end of file diff --git a/Export/Gems/act_str.txt b/Export/Skills/act_str.txt similarity index 72% rename from Export/Gems/act_str.txt rename to Export/Skills/act_str.txt index a8656189..0dd56d5f 100644 --- a/Export/Gems/act_str.txt +++ b/Export/Skills/act_str.txt @@ -1,61 +1,52 @@ -- Path of Building -- --- Active Strength gems --- Skill gem data (c) Grinding Gear Games +-- Active Strength skill gems +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Abyssal Cry"] = { #skill AbyssalCry #flags warcry area duration chaos #mods -} -gems["Ancestral Protector"] = { + #skill TotemMelee #flags attack melee totem duration forceMainHand #baseMod skill("allowTotemBuff", true) #mods -} -gems["Ancestral Warchief"] = { + #skill AncestorTotemSlam #flags attack melee totem area duration forceMainHand #baseMod skill("allowTotemBuff", true) #mods -} -gems["Anger"] = { + #skill Anger #flags spell aura area fire #mods -} -gems["Animate Guardian"] = { + #skill AnimateArmour unsupported = true, -} -gems["Cleave"] = { +#mods + #skill Cleave #flags attack melee area #mods -} -gems["Decoy Totem"] = { + #skill DecoyTotem #flags spell totem area duration #mods -} -gems["Determination"] = { + #skill Determination #flags spell aura area #mods -} -gems["Devouring Totem"] = { + #skill DevouringTotem unsupported = true, -} -gems["Dominating Blow"] = { +#mods + #skill DominatingBlow #flags attack melee duration #mods -} -gems["Earthquake"] = { + #skill Earthquake #flags attack melee area duration parts = { @@ -68,48 +59,39 @@ gems["Earthquake"] = { }, #baseMod skill("showAverage", true, { type = "SkillPart", skillPart = 2 }) #mods -} -gems["Enduring Cry"] = { + #skill EnduringCry #flags warcry area duration #mods -} -gems["Flame Totem"] = { + #skill FlameTotem #flags spell totem projectile duration fire #mods -} -gems["Glacial Hammer"] = { + #skill GlacialHammer #flags attack melee cold #mods -} -gems["Vaal Glacial Hammer"] = { + #skill VaalGlacialHammer #flags attack melee area duration cold vaal #mods -} -gems["Ground Slam"] = { + #skill GroundSlam #flags attack melee area #mods -} -gems["Vaal Ground Slam"] = { + #skill VaalGroundSlam #flags attack melee area vaal #mods -} -gems["Heavy Strike"] = { + #skill HeavyStrike #flags attack melee #mods -} -gems["Herald of Ash"] = { + #skill HeraldOfAsh #flags spell area fire #mods -} -gems["Ice Crash"] = { + #skill IceCrash #flags attack melee area cold parts = { @@ -124,38 +106,31 @@ gems["Ice Crash"] = { }, }, #mods -} -gems["Immortal Call"] = { + #skill ImmortalCall #flags spell duration #mods -} -gems["Vaal Immortal Call"] = { + #skill VaalImmortalCall #flags spell duration vaal #mods -} -gems["Infernal Blow"] = { + #skill InfernalBlow #flags attack melee area fire #mods -} -gems["Leap Slam"] = { + #skill LeapSlam #flags attack melee area movement #mods -} -gems["Molten Shell"] = { + #skill MoltenShell #flags spell area duration fire #mods -} -gems["Vaal Molten Shell"] = { + #skill VaalMoltenShell #flags spell area duration fire vaal #mods -} -gems["Molten Strike"] = { + #skill MoltenStrike #flags attack melee projectile area fire parts = { @@ -173,48 +148,39 @@ gems["Molten Strike"] = { }, }, #mods -} -gems["Punishment"] = { + #skill Punishment #flags spell curse area duration #mods -} -gems["Purity of Fire"] = { + #skill FireResistAura #flags spell aura area fire #mods -} -gems["Rallying Cry"] = { + #skill RallyingCry #flags warcry area duration #mods -} -gems["Reckoning"] = { + #skill Reckoning #flags attack area melee #mods -} -gems["Rejuvenation Totem"] = { + #skill RejuvenationTotem #flags spell aura totem area duration #mods -} -gems["Searing Bond"] = { + #skill SearingBond #flags spell totem duration fire #mods -} -gems["Shield Charge"] = { + #skill NewShieldCharge #flags attack melee area movement #mods -} -gems["Shockwave Totem"] = { + #skill ShockwaveTotem #flags spell totem area duration #mods -} -gems["Static Strike"] = { + #skill StaticStrike #flags attack melee area duration lightning parts = { @@ -228,20 +194,23 @@ gems["Static Strike"] = { }, }, #mods -} -gems["Summon Flame Golem"] = { + #skill SummonFireGolem #flags spell minion golem fire #baseMod mod("Misc", "LIST", { type = "Condition", var = "HaveFireGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }) + minionList = { + "SummonedFlameGolem", + }, #mods -} -gems["Summon Stone Golem"] = { + #skill SummonRockGolem #flags spell minion golem #baseMod mod("Misc", "LIST", { type = "Condition", var = "HavePhysicalGolem" }, 0, 0, { type = "GlobalEffect", effectType = "Buff" }) + minionList = { + "SummonedStoneGolem", + }, #mods -} -gems["Sunder"] = { + #skill Sunder #flags attack melee area parts = { @@ -253,30 +222,24 @@ gems["Sunder"] = { }, }, #mods -} -gems["Sweep"] = { + #skill Sweep #flags attack melee area #mods -} -gems["Vengeance"] = { + #skill Vengeance #flags attack melee area #mods -} -gems["Vigilant Strike"] = { + #skill VigilantStrike #flags attack melee #mods -} -gems["Vitality"] = { + #skill Vitality #flags spell aura area #mods -} -gems["Warlord's Mark"] = { + #skill WarlordsMark #flags spell curse area duration #baseMod skill("debuff", true) #mods -} diff --git a/Export/Skills/minion.lua b/Export/Skills/minion.lua new file mode 100644 index 00000000..5bbd5290 --- /dev/null +++ b/Export/Skills/minion.lua @@ -0,0 +1,993 @@ +-- Path of Building +-- +-- Minion active skills +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["ChaosElementalCascadeSummoned"] = { + name = "Cascade", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + cold = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.6), + skill("cooldown", 3.5), + --"upheaval_number_of_spikes" = 6 + mod("Speed", "INC", 0, ModFlag.Cast), --"base_cast_speed_+%" = 0 + --"skill_art_variation" = 3 + mod("PhysicalDamageConvertToChaos", "BASE", 50, 0, 0, nil), --"base_physical_damage_%_to_convert_to_chaos" = 50 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 4, 9, 13, }, + [2] = { 7, 12, 18, }, + [3] = { 9, 14, 22, }, + [4] = { 12, 19, 28, }, + [5] = { 16, 26, 39, }, + [6] = { 20, 35, 52, }, + [7] = { 27, 55, 83, }, + [8] = { 28, 59, 89, }, + [9] = { 29, 63, 94, }, + [10] = { 32, 76, 114, }, + [11] = { 36, 96, 145, }, + [12] = { 40, 122, 182, }, + [13] = { 45, 161, 242, }, + [14] = { 49, 201, 301, }, + [15] = { 50, 212, 318, }, + [16] = { 52, 236, 354, }, + [17] = { 56, 292, 438, }, + [18] = { 60, 360, 539, }, + [19] = { 64, 441, 662, }, + [20] = { 65, 464, 696, }, + [21] = { 66, 488, 733, }, + [22] = { 67, 514, 770, }, + [23] = { 68, 540, 810, }, + [24] = { 69, 568, 852, }, + [25] = { 70, 597, 895, }, + [26] = { 71, 627, 941, }, + [27] = { 72, 659, 989, }, + [28] = { 73, 693, 1039, }, + [29] = { 74, 728, 1091, }, + [30] = { 75, 764, 1146, }, + [31] = { 76, 803, 1204, }, + [32] = { 77, 843, 1264, }, + [33] = { 78, 885, 1328, }, + [34] = { 79, 929, 1394, }, + [35] = { 80, 975, 1463, }, + [36] = { 81, 1024, 1535, }, + [37] = { 82, 1074, 1611, }, + }, +} +skills["SandstormChaosElementalSummoned"] = { + name = "Chaos Aura", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 8), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 2 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 14.533333333333, }, + [2] = { 5, 17.383333333333, }, + [3] = { 8, 21.95, }, + [4] = { 11, 26.95, }, + [5] = { 15, 34.3, }, + [6] = { 20, 44.75, }, + [7] = { 24, 54.183333333333, }, + [8] = { 28, 64.7, }, + [9] = { 29, 67.516666666667, }, + [10] = { 32, 76.383333333333, }, + [11] = { 36, 89.366666666667, }, + [12] = { 40, 103.75, }, + [13] = { 45, 123.9, }, + [14] = { 49, 141.93333333333, }, + [15] = { 50, 146.73333333333, }, + [16] = { 52, 156.7, }, + [17] = { 56, 178.11666666667, }, + [18] = { 60, 201.73333333333, }, + [19] = { 64, 227.73333333333, }, + [20] = { 65, 234.63333333333, }, + [21] = { 66, 241.68333333333, }, + [22] = { 67, 248.91666666667, }, + [23] = { 68, 256.31666666667, }, + [24] = { 69, 263.9, }, + [25] = { 70, 271.65, }, + [26] = { 71, 279.6, }, + [27] = { 72, 287.73333333333, }, + [28] = { 73, 296.05, }, + [29] = { 74, 304.58333333333, }, + [30] = { 75, 313.3, }, + [31] = { 76, 322.21666666667, }, + [32] = { 77, 331.35, }, + [33] = { 78, 340.7, }, + [34] = { 79, 350.26666666667, }, + [35] = { 80, 360.06666666667, }, + [36] = { 81, 370.08333333333, }, + [37] = { 82, 380.33333333333, }, + }, +} +skills["FireElementalFlameRedSummoned"] = { + name = "Immolate", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, + skillTotemId = 8, + baseMods = { + skill("castTime", 0.25), + skill("damageEffectiveness", 0.2), + --"skill_art_variation" = 4 + mod("Speed", "MORE", -89, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = -89 + --"spell_maximum_action_distance_+%" = -77 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 6, 8, }, + [2] = { 5, 7, 11, }, + [3] = { 8, 10, 14, }, + [4] = { 12, 14, 21, }, + [5] = { 15, 18, 27, }, + [6] = { 19, 24, 37, }, + [7] = { 20, 26, 39, }, + [8] = { 21, 28, 42, }, + [9] = { 26, 40, 61, }, + [10] = { 30, 53, 79, }, + [11] = { 34, 69, 103, }, + [12] = { 38, 88, 133, }, + [13] = { 43, 120, 180, }, + [14] = { 45, 135, 203, }, + [15] = { 53, 215, 323, }, + [16] = { 58, 285, 428, }, + [17] = { 62, 356, 534, }, + [18] = { 63, 376, 565, }, + [19] = { 66, 443, 665, }, + [20] = { 67, 468, 702, }, + [21] = { 68, 494, 741, }, + [22] = { 69, 522, 782, }, + [23] = { 70, 550, 825, }, + [24] = { 71, 581, 871, }, + [25] = { 72, 612, 919, }, + [26] = { 73, 646, 969, }, + [27] = { 74, 681, 1022, }, + [28] = { 75, 718, 1078, }, + [29] = { 76, 757, 1136, }, + [30] = { 77, 798, 1198, }, + [31] = { 78, 841, 1262, }, + [32] = { 79, 887, 1330, }, + [33] = { 80, 934, 1402, }, + [34] = { 81, 985, 1477, }, + [35] = { 82, 1037, 1556, }, + }, +} +skills["FireElementalMortarSummoned"] = { + name = "Magma Ball", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + area = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + skill("cooldown", 6), + --"monster_projectile_variation" = 3 + --"projectile_spread_radius" = 15 + --"spell_maximum_action_distance_+%" = -33 + --"is_area_damage" = ? + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 34, 152, 228, }, + [2] = { 36, 170, 254, }, + [3] = { 38, 188, 283, }, + [4] = { 40, 209, 314, }, + [5] = { 42, 232, 347, }, + [6] = { 44, 256, 384, }, + [7] = { 46, 283, 425, }, + [8] = { 48, 312, 468, }, + [9] = { 50, 344, 516, }, + [10] = { 52, 379, 568, }, + [11] = { 54, 416, 625, }, + [12] = { 56, 457, 686, }, + [13] = { 58, 502, 753, }, + [14] = { 60, 550, 826, }, + [15] = { 62, 603, 904, }, + [16] = { 64, 660, 990, }, + [17] = { 66, 722, 1083, }, + [18] = { 68, 789, 1184, }, + [19] = { 69, 825, 1237, }, + [20] = { 70, 862, 1293, }, + [21] = { 72, 941, 1412, }, + [22] = { 74, 1027, 1540, }, + [23] = { 76, 1120, 1680, }, + [24] = { 78, 1220, 1831, }, + [25] = { 80, 1329, 1994, }, + [26] = { 82, 1447, 2171, }, + [27] = { 84, 1575, 2363, }, + [28] = { 86, 1713, 2570, }, + [29] = { 88, 1863, 2794, }, + [30] = { 90, 2025, 3037, }, + }, +} +skills["FireElementalConeSummoned"] = { + name = "Flame Wave", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.935), + skill("critChance", 10), + skill("cooldown", 2), + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 34, 106, 165, }, + [2] = { 36, 117, 184, }, + [3] = { 38, 131, 204, }, + [4] = { 40, 145, 226, }, + [5] = { 42, 160, 250, }, + [6] = { 44, 177, 277, }, + [7] = { 46, 196, 306, }, + [8] = { 48, 216, 337, }, + [9] = { 50, 237, 371, }, + [10] = { 52, 261, 408, }, + [11] = { 54, 287, 448, }, + [12] = { 56, 315, 492, }, + [13] = { 58, 346, 540, }, + [14] = { 60, 379, 592, }, + [15] = { 62, 415, 648, }, + [16] = { 64, 454, 709, }, + [17] = { 66, 496, 775, }, + [18] = { 68, 542, 847, }, + [19] = { 69, 566, 885, }, + [20] = { 70, 592, 924, }, + [21] = { 72, 645, 1008, }, + [22] = { 74, 704, 1100, }, + [23] = { 76, 767, 1198, }, + [24] = { 78, 835, 1305, }, + [25] = { 80, 909, 1421, }, + [26] = { 82, 990, 1546, }, + [27] = { 84, 1076, 1682, }, + [28] = { 86, 1170, 1828, }, + [29] = { 88, 1271, 1987, }, + [30] = { 90, 1381, 2158, }, + }, +} +skills["IceElementalIceCyclone"] = { + name = "Cyclone", + hidden = true, + color = 2, + baseFlags = { + attack = true, + area = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["None"] = true, + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 6), + --"skill_art_variation" = 4 + mod("MovementSpeed", "MORE", 75), --"cyclone_movement_speed_+%_final" = 75 + --"cyclone_extra_distance" = 40 + mod("Damage", "MORE", -20, ModFlag.Hit), --"active_skill_damage_+%_final" = -20 + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"is_area_damage" = ? + --"cyclone_places_ground_ice" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["IceElementalSpearSummoned"] = { + name = "Ice Spear", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [3] = true, [2] = true, [17] = true, [18] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 4), + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 25 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 3, 10, 15, }, + [2] = { 5, 12, 18, }, + [3] = { 8, 16, 24, }, + [4] = { 11, 21, 31, }, + [5] = { 15, 28, 42, }, + [6] = { 20, 40, 60, }, + [7] = { 24, 51, 77, }, + [8] = { 28, 65, 97, }, + [9] = { 29, 69, 103, }, + [10] = { 32, 81, 122, }, + [11] = { 36, 101, 152, }, + [12] = { 40, 125, 187, }, + [13] = { 45, 161, 241, }, + [14] = { 49, 196, 293, }, + [15] = { 50, 205, 308, }, + [16] = { 52, 226, 339, }, + [17] = { 56, 273, 409, }, + [18] = { 60, 328, 493, }, + [19] = { 64, 394, 591, }, + [20] = { 65, 412, 618, }, + [21] = { 66, 431, 646, }, + [22] = { 67, 450, 676, }, + [23] = { 68, 471, 706, }, + [24] = { 69, 492, 738, }, + [25] = { 70, 514, 772, }, + [26] = { 71, 537, 806, }, + [27] = { 72, 562, 842, }, + [28] = { 73, 587, 880, }, + [29] = { 74, 613, 919, }, + [30] = { 75, 640, 960, }, + [31] = { 76, 668, 1002, }, + [32] = { 77, 698, 1046, }, + [33] = { 78, 728, 1092, }, + [34] = { 79, 760, 1140, }, + [35] = { 80, 793, 1190, }, + [36] = { 81, 828, 1241, }, + [37] = { 82, 864, 1295, }, + }, +} +skills["LightningGolemArcSummoned"] = { + name = "Storm Orb", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + lightning = true, + duration = true, + }, + skillTypes = { [12] = true, [35] = true, [3] = true, [14] = true, [2] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.6), + skill("critChance", 5), + skill("cooldown", 8), + skill("duration", 8), --"base_skill_effect_duration" = 8000 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 1, 1, 8, }, + [2] = { 2, 1, 9, }, + [3] = { 4, 1, 11, }, + [4] = { 7, 2, 14, }, + [5] = { 10, 2, 18, }, + [6] = { 13, 2, 22, }, + [7] = { 16, 3, 27, }, + [8] = { 19, 4, 32, }, + [9] = { 22, 4, 39, }, + [10] = { 25, 5, 46, }, + [11] = { 28, 6, 54, }, + [12] = { 31, 7, 62, }, + [13] = { 34, 8, 72, }, + [14] = { 36, 9, 80, }, + [15] = { 38, 10, 88, }, + [16] = { 40, 11, 96, }, + [17] = { 42, 12, 105, }, + [18] = { 44, 13, 115, }, + [19] = { 46, 14, 126, }, + [20] = { 48, 15, 137, }, + [21] = { 50, 17, 149, }, + [22] = { 52, 18, 162, }, + [23] = { 54, 20, 176, }, + [24] = { 56, 21, 191, }, + [25] = { 58, 23, 208, }, + [26] = { 60, 25, 225, }, + [27] = { 62, 27, 244, }, + [28] = { 64, 29, 264, }, + [29] = { 66, 32, 285, }, + [30] = { 68, 34, 308, }, + [31] = { 69, 36, 320, }, + [32] = { 70, 37, 333, }, + [33] = { 72, 40, 359, }, + [34] = { 74, 43, 387, }, + [35] = { 76, 46, 417, }, + [36] = { 78, 50, 449, }, + [37] = { 80, 54, 484, }, + [38] = { 82, 58, 521, }, + [39] = { 84, 62, 560, }, + [40] = { 86, 67, 602, }, + [41] = { 88, 72, 647, }, + [42] = { 90, 77, 695, }, + }, +} +skills["MonsterProjectileSpellLightningGolemSummoned"] = { + name = "Lightning Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [3] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + --"monster_projectile_variation" = 11 + mod("Speed", "MORE", -15, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = -15 + --"spell_maximum_action_distance_+%" = -40 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 1, 2, 18, }, + [2] = { 2, 2, 21, }, + [3] = { 4, 3, 26, }, + [4] = { 7, 4, 35, }, + [5] = { 10, 5, 45, }, + [6] = { 13, 6, 58, }, + [7] = { 16, 8, 72, }, + [8] = { 19, 10, 89, }, + [9] = { 22, 12, 108, }, + [10] = { 25, 15, 131, }, + [11] = { 28, 17, 157, }, + [12] = { 31, 21, 187, }, + [13] = { 34, 25, 221, }, + [14] = { 36, 27, 247, }, + [15] = { 38, 31, 275, }, + [16] = { 40, 34, 306, }, + [17] = { 42, 38, 340, }, + [18] = { 44, 42, 378, }, + [19] = { 46, 46, 418, }, + [20] = { 48, 51, 463, }, + [21] = { 50, 57, 511, }, + [22] = { 52, 63, 565, }, + [23] = { 54, 69, 623, }, + [24] = { 56, 76, 686, }, + [25] = { 58, 84, 755, }, + [26] = { 60, 92, 830, }, + [27] = { 62, 101, 912, }, + [28] = { 64, 111, 1001, }, + [29] = { 66, 122, 1098, }, + [30] = { 68, 134, 1204, }, + [31] = { 69, 140, 1261, }, + [32] = { 70, 147, 1319, }, + [33] = { 72, 161, 1445, }, + [34] = { 74, 176, 1581, }, + [35] = { 76, 192, 1729, }, + [36] = { 78, 210, 1889, }, + [37] = { 80, 229, 2064, }, + [38] = { 82, 250, 2254, }, + [39] = { 84, 273, 2460, }, + [40] = { 86, 298, 2683, }, + [41] = { 88, 325, 2926, }, + [42] = { 90, 354, 3189, }, + }, +} +skills["LightningGolemWrath"] = { + name = "Wrath", + hidden = true, + color = 3, + baseFlags = { + spell = true, + aura = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [5] = true, [16] = true, [44] = true, [35] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("cooldown", 12), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"base_deal_no_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningMin", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_lightning_damage" + [3] = mod("LightningMax", "BASE", nil, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_lightning_damage" + [4] = mod("LightningMin", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_minimum_added_lightning_damage" + [5] = mod("LightningMax", "BASE", nil, ModFlag.Spell, 0, { type = "GlobalEffect", effectType = "Aura" }), --"spell_maximum_added_lightning_damage" + }, + levels = { + [1] = { 1, 1, 1, 1, 1, }, + [2] = { 8, 1, 2, 1, 1, }, + [3] = { 16, 1, 4, 1, 2, }, + [4] = { 24, 1, 6, 1, 3, }, + [5] = { 34, 1, 9, 1, 5, }, + [6] = { 36, 1, 10, 1, 6, }, + [7] = { 38, 1, 10, 1, 6, }, + [8] = { 40, 1, 11, 1, 7, }, + [9] = { 42, 1, 12, 1, 7, }, + [10] = { 44, 1, 13, 1, 8, }, + [11] = { 46, 2, 14, 1, 9, }, + [12] = { 48, 2, 15, 1, 9, }, + [13] = { 50, 2, 17, 1, 10, }, + [14] = { 52, 2, 18, 1, 11, }, + [15] = { 54, 2, 19, 1, 12, }, + [16] = { 56, 2, 21, 1, 12, }, + [17] = { 58, 2, 22, 1, 13, }, + [18] = { 60, 3, 24, 2, 14, }, + [19] = { 62, 3, 25, 2, 15, }, + [20] = { 64, 3, 27, 2, 16, }, + [21] = { 66, 3, 29, 2, 17, }, + [22] = { 68, 3, 31, 2, 19, }, + [23] = { 69, 4, 32, 2, 19, }, + [24] = { 70, 4, 33, 2, 20, }, + [25] = { 72, 4, 35, 2, 21, }, + [26] = { 74, 4, 37, 2, 22, }, + [27] = { 76, 4, 40, 3, 24, }, + [28] = { 78, 5, 42, 3, 25, }, + [29] = { 80, 5, 45, 3, 27, }, + [30] = { 82, 5, 48, 3, 29, }, + [31] = { 84, 6, 51, 3, 31, }, + [32] = { 86, 6, 54, 4, 33, }, + [33] = { 88, 6, 58, 4, 35, }, + [34] = { 90, 7, 61, 4, 37, }, + }, +} +skills["PlayerRagingSpiritMeleeAttack"] = { + name = "Melee Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + }, + skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [25] = true, [28] = true, [24] = true, }, + baseMods = { + skill("castTime", 1), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("Damage", "MORE", nil, ModFlag.Hit), --"active_skill_damage_+%_final" + }, + levels = { + [1] = { 4, 76, }, + [2] = { 6, 75, }, + [3] = { 9, 74, }, + [4] = { 12, 73, }, + [5] = { 15, 72, }, + [6] = { 19, 71, }, + [7] = { 23, 70, }, + [8] = { 28, 69, }, + [9] = { 33, 68, }, + [10] = { 39, 67, }, + [11] = { 43, 66, }, + [12] = { 46, 65, }, + [13] = { 49, 64, }, + [14] = { 52, 63, }, + [15] = { 55, 62, }, + [16] = { 58, 61, }, + [17] = { 61, 60, }, + [18] = { 64, 59, }, + [19] = { 66, 58, }, + [20] = { 68, 57, }, + [21] = { 70, 56, }, + [22] = { 72, 55, }, + [23] = { 74, 54, }, + [24] = { 76, 53, }, + [25] = { 78, 52, }, + [26] = { 80, 51, }, + [27] = { 82, 50, }, + [28] = { 84, 49, }, + [29] = { 86, 48, }, + [30] = { 88, 47, }, + }, +} +skills["SkeletonProjectileCold"] = { + name = "Cold Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, [3] = true, }, + baseMods = { + skill("castTime", 1.95), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [4] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 5, 3, 5, }, + [2] = { 7, 5, 4, 6, }, + [3] = { 10, 5, 6, 8, }, + [4] = { 15, 5, 8, 13, }, + [5] = { 19, 4, 11, 17, }, + [6] = { 20, 4, 12, 18, }, + [7] = { 25, 4, 17, 26, }, + [8] = { 28, 4, 21, 32, }, + [9] = { 29, 4, 22, 34, }, + [10] = { 30, 4, 24, 36, }, + [11] = { 33, 4, 29, 43, }, + [12] = { 34, 4, 31, 46, }, + [13] = { 37, 4, 37, 55, }, + [14] = { 39, 4, 42, 62, }, + [15] = { 43, 4, 53, 79, }, + [16] = { 44, 4, 56, 84, }, + [17] = { 47, 4, 66, 99, }, + [18] = { 48, 4, 70, 105, }, + [19] = { 51, 4, 82, 124, }, + [20] = { 58, 4, 121, 181, }, + [21] = { 61, 4, 141, 212, }, + [22] = { 62, 4, 149, 223, }, + [23] = { 63, 4, 157, 236, }, + [24] = { 64, 4, 165, 248, }, + [25] = { 65, 4, 174, 261, }, + [26] = { 66, 4, 184, 275, }, + [27] = { 67, 4, 193, 290, }, + [28] = { 68, 4, 687, 1071, }, + [29] = { 69, 4, 723, 1128, }, + [30] = { 70, 4, 761, 1187, }, + [31] = { 71, 4, 801, 1249, }, + [32] = { 72, 4, 843, 1315, }, + [33] = { 73, 4, 887, 1383, }, + [34] = { 74, 4, 933, 1455, }, + [35] = { 75, 4, 981, 1530, }, + [36] = { 76, 4, 1032, 1609, }, + [37] = { 77, 4, 1085, 1692, }, + [38] = { 78, 4, 1141, 1779, }, + [39] = { 79, 4, 1200, 1870, }, + [40] = { 80, 4, 1261, 1966, }, + [41] = { 81, 4, 1325, 2066, }, + [42] = { 82, 4, 1393, 2171, }, + }, +} +skills["SkeletonProjectileFire"] = { + name = "Fire Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, [3] = true, }, + baseMods = { + skill("castTime", 1.95), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 4, 5, 4, 6, }, + [2] = { 7, 5, 5, 8, }, + [3] = { 10, 5, 7, 10, }, + [4] = { 15, 5, 10, 15, }, + [5] = { 19, 4, 14, 21, }, + [6] = { 20, 4, 15, 22, }, + [7] = { 25, 4, 21, 32, }, + [8] = { 28, 4, 26, 39, }, + [9] = { 29, 4, 27, 41, }, + [10] = { 30, 4, 29, 44, }, + [11] = { 33, 4, 35, 53, }, + [12] = { 34, 4, 38, 56, }, + [13] = { 37, 4, 45, 68, }, + [14] = { 39, 4, 51, 76, }, + [15] = { 43, 4, 64, 96, }, + [16] = { 44, 4, 68, 102, }, + [17] = { 47, 4, 81, 121, }, + [18] = { 48, 4, 85, 128, }, + [19] = { 51, 4, 101, 151, }, + [20] = { 58, 4, 147, 221, }, + [21] = { 61, 4, 173, 259, }, + [22] = { 62, 4, 182, 273, }, + [23] = { 63, 4, 192, 288, }, + [24] = { 64, 4, 202, 303, }, + [25] = { 65, 4, 213, 320, }, + [26] = { 66, 4, 224, 337, }, + [27] = { 67, 4, 236, 354, }, + [28] = { 68, 4, 840, 1309, }, + [29] = { 69, 4, 884, 1378, }, + [30] = { 70, 4, 930, 1451, }, + [31] = { 71, 4, 979, 1527, }, + [32] = { 72, 4, 1030, 1607, }, + [33] = { 73, 4, 1084, 1690, }, + [34] = { 74, 4, 1140, 1778, }, + [35] = { 75, 4, 1200, 1870, }, + [36] = { 76, 4, 1262, 1967, }, + [37] = { 77, 4, 1327, 2068, }, + [38] = { 78, 4, 1395, 2175, }, + [39] = { 79, 4, 1466, 2286, }, + [40] = { 80, 4, 1541, 2403, }, + [41] = { 81, 4, 1620, 2525, }, + [42] = { 82, 4, 1702, 2654, }, + }, +} +skills["SkeletonProjectileLightning"] = { + name = "Lightning Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, [3] = true, }, + baseMods = { + skill("castTime", 1.95), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 4, 5, 3, 8, }, + [2] = { 7, 5, 4, 11, }, + [3] = { 10, 5, 5, 14, }, + [4] = { 15, 5, 7, 22, }, + [5] = { 19, 4, 10, 29, }, + [6] = { 20, 4, 10, 31, }, + [7] = { 25, 4, 15, 45, }, + [8] = { 28, 4, 18, 54, }, + [9] = { 29, 4, 19, 58, }, + [10] = { 30, 4, 21, 62, }, + [11] = { 31, 4, 22, 66, }, + [12] = { 34, 4, 26, 79, }, + [13] = { 37, 4, 32, 95, }, + [14] = { 39, 4, 36, 107, }, + [15] = { 43, 4, 45, 136, }, + [16] = { 44, 4, 48, 144, }, + [17] = { 47, 4, 57, 170, }, + [18] = { 48, 4, 60, 180, }, + [19] = { 51, 4, 71, 213, }, + [20] = { 52, 4, 75, 225, }, + [21] = { 58, 4, 104, 311, }, + [22] = { 62, 4, 128, 384, }, + [23] = { 63, 4, 135, 405, }, + [24] = { 64, 4, 142, 427, }, + [25] = { 65, 4, 150, 449, }, + [26] = { 66, 4, 158, 473, }, + [27] = { 67, 4, 166, 498, }, + [28] = { 68, 4, 409, 1221, }, + [29] = { 69, 4, 431, 1285, }, + [30] = { 70, 4, 454, 1353, }, + [31] = { 71, 4, 477, 1424, }, + [32] = { 72, 4, 502, 1498, }, + [33] = { 73, 4, 529, 1577, }, + [34] = { 74, 4, 556, 1658, }, + [35] = { 75, 4, 585, 1744, }, + [36] = { 76, 4, 615, 1834, }, + [37] = { 77, 4, 647, 1929, }, + [38] = { 78, 4, 680, 2028, }, + [39] = { 79, 4, 715, 2132, }, + [40] = { 80, 4, 751, 2241, }, + [41] = { 81, 4, 790, 2355, }, + [42] = { 82, 4, 830, 2475, }, + }, +} +skills["RockGolemSlam"] = { + name = "Slam", + hidden = true, + color = 1, + baseFlags = { + attack = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 1), + mod("Damage", "MORE", 75, ModFlag.Attack), + skill("cooldown", 6), + mod("Speed", "MORE", -20, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -20 + --"chance_to_taunt_on_hit_%" = 33 + --"skill_art_variation" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["RockGolemWhirlingBlades"] = { + name = "Roll", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("levelRequirement", 1), + --"skill_sound_variation" = 1 + mod("Speed", "MORE", -50, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -50 + --"monster_flurry" = 1 + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["ZombieSlam"] = { + name = "Slam", + hidden = true, + color = 4, + baseFlags = { + attack = true, + area = true, + }, + skillTypes = { [1] = true, [11] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 5), + mod("Speed", "MORE", -22, ModFlag.Attack), --"active_skill_attack_speed_+%_final" = -22 + mod("Damage", "MORE", 45, ModFlag.Hit), --"active_skill_damage_+%_final" = 45 + skill("duration", 0.28), --"base_skill_effect_duration" = 280 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MinionInstability"] = { + name = "Minion Instability", + hidden = true, + color = 4, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [10] = true, }, + baseMods = { + skill("FireMin", 1, { type = "PerStat", stat = "Life", div = 1/.33 }), + skill("FireMax", 1, { type = "PerStat", stat = "Life", div = 1/.33 }), + skill("showAverage", true), + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} diff --git a/Export/Skills/minion.txt b/Export/Skills/minion.txt new file mode 100644 index 00000000..ab638781 --- /dev/null +++ b/Export/Skills/minion.txt @@ -0,0 +1,98 @@ +-- Path of Building +-- +-- Minion active skills +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +#skill ChaosElementalCascadeSummoned Cascade +#flags spell area cold +#mods + +#skill SandstormChaosElementalSummoned Chaos Aura +#flags spell duration area +#mods + +#skill FireElementalFlameRedSummoned Immolate +#flags spell projectile fire +#mods + +#skill FireElementalMortarSummoned Magma Ball +#flags spell projectile area +#mods + +#skill FireElementalConeSummoned Flame Wave +#flags spell area fire +#mods + +#skill IceElementalIceCyclone Cyclone +#flags attack area melee movement +#mods + +#skill IceElementalSpearSummoned Ice Spear +#flags spell projectile +#mods + +#skill LightningGolemArcSummoned Storm Orb +#flags spell projectile lightning duration +#mods + +#skill MonsterProjectileSpellLightningGolemSummoned Lightning Projectile +#flags spell projectile +#mods + +#skill LightningGolemWrath Wrath +#flags spell aura area duration lightning +#mods + +#skill PlayerRagingSpiritMeleeAttack Melee Attack +#flags attack melee +#mods + +#skill SkeletonProjectileCold Cold Projectile +#flags spell projectile +#mods + +#skill SkeletonProjectileFire Fire Projectile +#flags spell projectile +#mods + +#skill SkeletonProjectileLightning Lightning Projectile +#flags spell projectile +#mods + +#skill RockGolemSlam Slam +#flags attack area +#mods + +#skill RockGolemWhirlingBlades Roll +#flags attack melee movement +#mods + +#skill ZombieSlam Slam +#flags attack area +#mods + +skills["MinionInstability"] = { + name = "Minion Instability", + hidden = true, + color = 4, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [10] = true, }, + baseMods = { + skill("FireMin", 1, { type = "PerStat", stat = "Life", div = 1/.33 }), + skill("FireMax", 1, { type = "PerStat", stat = "Life", div = 1/.33 }), + skill("showAverage", true), + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} \ No newline at end of file diff --git a/Data/Gems/other.lua b/Export/Skills/other.lua similarity index 65% rename from Data/Gems/other.lua rename to Export/Skills/other.lua index 65ac5a56..1a438d9a 100644 --- a/Data/Gems/other.lua +++ b/Export/Skills/other.lua @@ -1,12 +1,14 @@ -- Path of Building -- -- Other active skills --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["_default"] = { +skills["Melee"] = { + name = "Default Attack", hidden = true, + other = true, color = 4, baseFlags = { attack = true, @@ -16,6 +18,7 @@ gems["_default"] = { skillTypes = { [1] = true, [48] = true, [6] = true, [3] = true, [25] = true, [28] = true, [24] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), --"skill_can_fire_arrows" = 1 --"skill_can_fire_wand_projectiles" = 1 }, @@ -27,10 +30,13 @@ gems["_default"] = { [1] = { }, }, } -gems["Detonate Mines"] = { - low_max_level = true, - active_skill = true, - spell = true, +skills["GemDetonateMines"] = { + name = "Detonate Mines", + gemTags = { + low_max_level = true, + active_skill = true, + spell = true, + }, color = 4, baseFlags = { spell = true, @@ -38,6 +44,7 @@ gems["Detonate Mines"] = { skillTypes = { [2] = true, [17] = true, [18] = true, [36] = true, }, baseMods = { skill("castTime", 0.2), + skill("levelRequirement", 8), --"base_deal_no_damage" = ? }, qualityMods = { @@ -58,10 +65,13 @@ gems["Detonate Mines"] = { [10] = { }, }, } -gems["Portal"] = { - low_max_level = true, - active_skill = true, - spell = true, +skills["Portal"] = { + name = "Portal", + gemTags = { + low_max_level = true, + active_skill = true, + spell = true, + }, color = 4, baseFlags = { spell = true, @@ -69,6 +79,7 @@ gems["Portal"] = { skillTypes = { [2] = true, [17] = true, [18] = true, [19] = true, [36] = true, [27] = true, }, baseMods = { skill("castTime", 2.5), + skill("levelRequirement", 10), --"base_deal_no_damage" = ? }, qualityMods = { @@ -89,8 +100,10 @@ gems["Portal"] = { [10] = { }, }, } -gems["Abberath's Fury"] = { +skills["RepeatingShockwave"] = { + name = "Abberath's Fury", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -99,6 +112,7 @@ gems["Abberath's Fury"] = { skillTypes = { [11] = true, [36] = true, [42] = true, [2] = true, [10] = true, [61] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), skill("critChance", 5), skill("FireMin", 50), --"spell_minimum_base_fire_damage" = 50 skill("FireMax", 75), --"spell_maximum_base_fire_damage" = 75 @@ -117,8 +131,10 @@ gems["Abberath's Fury"] = { [7] = { }, }, } -gems["Bone Nova"] = { +skills["TriggeredBoneNova"] = { + name = "Bone Nova", hidden = true, + other = true, color = 4, baseFlags = { attack = true, @@ -127,6 +143,8 @@ gems["Bone Nova"] = { skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, [47] = true, [61] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 0.5), mod("ProjectileCount", "BASE", 8), --"number_of_additional_projectiles" = 8 --"attack_trigger_on_killing_bleeding_enemy_%" = 100 --"monster_projectile_variation" = 15 @@ -143,8 +161,10 @@ gems["Bone Nova"] = { [20] = { }, }, } -gems["Consecrate"] = { +skills["TriggeredConsecrate"] = { + name = "Consecrate", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -154,6 +174,8 @@ gems["Consecrate"] = { skillTypes = { [2] = true, [12] = true, [36] = true, [11] = true, [42] = true, [61] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 5), skill("duration", 5), --"base_skill_effect_duration" = 5000 mod("LifeRegenPercent", "BASE", 4, 0, 0, nil), --"life_regeneration_rate_per_minute_%" = 240 --"cast_on_crit_%" = 100 @@ -167,8 +189,10 @@ gems["Consecrate"] = { [10] = { }, }, } -gems["Create Lesser Shrine"] = { +skills["TriggeredSummonLesserShrine"] = { + name = "Create Lesser Shrine", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -177,6 +201,8 @@ gems["Create Lesser Shrine"] = { skillTypes = { [2] = true, [36] = true, [42] = true, [61] = true, [12] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 20), --"chance_to_cast_on_kill_%" = 100 skill("duration", 10), --"base_skill_effect_duration" = 10000 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? @@ -189,8 +215,10 @@ gems["Create Lesser Shrine"] = { [1] = { }, }, } -gems["Envy"] = { +skills["Envy"] = { + name = "Envy", hidden = true, + other = true, color = 3, baseFlags = { spell = true, @@ -201,7 +229,9 @@ gems["Envy"] = { skillTypes = { [2] = true, [11] = true, [5] = true, [15] = true, [27] = true, [16] = true, [18] = true, [44] = true, [50] = true, }, baseMods = { skill("castTime", 1.2), + skill("levelRequirement", 60), skill("manaCost", 50), + skill("cooldown", 1.2), mod("ChaosMin", "BASE", 58, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_minimum_added_chaos_damage" = 58 mod("ChaosMax", "BASE", 81, ModFlag.Attack, 0, { type = "GlobalEffect", effectType = "Aura" }), --"attack_maximum_added_chaos_damage" = 81 mod("AreaOfEffect", "INC", 0), --"base_skill_area_of_effect_+%" = 0 @@ -217,8 +247,10 @@ gems["Envy"] = { [15] = { }, }, } -gems["Fire Burst"] = { +skills["FireBurstOnHit"] = { + name = "Fire Burst", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -230,6 +262,7 @@ gems["Fire Burst"] = { skill("castTime", 1), skill("damageEffectiveness", 0.5), skill("critChance", 5), + skill("cooldown", 0.5), --"cast_on_hit_%" = 10 --"is_area_damage" = ? skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? @@ -237,44 +270,47 @@ gems["Fire Burst"] = { qualityMods = { }, levelMods = { - [1] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" - [2] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" }, levels = { - [1] = { 7, 11, }, - [2] = { 8, 12, }, - [3] = { 10, 16, }, - [4] = { 14, 21, }, - [5] = { 20, 30, }, - [6] = { 30, 46, }, - [7] = { 41, 61, }, - [8] = { 54, 80, }, - [9] = { 70, 104, }, - [10] = { 89, 134, }, - [11] = { 114, 170, }, - [12] = { 143, 215, }, - [13] = { 180, 270, }, - [14] = { 224, 336, }, - [15] = { 278, 418, }, - [16] = { 344, 516, }, - [17] = { 424, 636, }, - [18] = { 520, 780, }, - [19] = { 605, 908, }, - [20] = { 703, 1055, }, - [21] = { 777, 1165, }, - [22] = { 858, 1286, }, - [23] = { 946, 1419, }, - [24] = { 1043, 1564, }, - [25] = { 1149, 1724, }, - [26] = { 1266, 1899, }, - [27] = { 1394, 2091, }, - [28] = { 1534, 2301, }, - [29] = { 1687, 2530, }, - [30] = { 1855, 2782, }, + [1] = { 1, 7, 11, }, + [2] = { 2, 8, 12, }, + [3] = { 4, 10, 16, }, + [4] = { 7, 14, 21, }, + [5] = { 11, 20, 30, }, + [6] = { 16, 30, 46, }, + [7] = { 20, 41, 61, }, + [8] = { 24, 54, 80, }, + [9] = { 28, 70, 104, }, + [10] = { 32, 89, 134, }, + [11] = { 36, 114, 170, }, + [12] = { 40, 143, 215, }, + [13] = { 44, 180, 270, }, + [14] = { 48, 224, 336, }, + [15] = { 52, 278, 418, }, + [16] = { 56, 344, 516, }, + [17] = { 60, 424, 636, }, + [18] = { 64, 520, 780, }, + [19] = { 67, 605, 908, }, + [20] = { 70, 703, 1055, }, + [21] = { 72, 777, 1165, }, + [22] = { 74, 858, 1286, }, + [23] = { 76, 946, 1419, }, + [24] = { 78, 1043, 1564, }, + [25] = { 80, 1149, 1724, }, + [26] = { 82, 1266, 1899, }, + [27] = { 84, 1394, 2091, }, + [28] = { 86, 1534, 2301, }, + [29] = { 88, 1687, 2530, }, + [30] = { 90, 1855, 2782, }, }, } -gems["Gluttony of Elements"] = { +skills["VaalAuraElementalDamageHealing"] = { + name = "Gluttony of Elements", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -286,6 +322,7 @@ gems["Gluttony of Elements"] = { skillTypes = { [2] = true, [5] = true, [11] = true, [12] = true, [18] = true, [43] = true, [44] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), skill("duration", 6), --"base_skill_effect_duration" = 6000 --"base_elemental_damage_heals" = ? }, @@ -297,8 +334,10 @@ gems["Gluttony of Elements"] = { [20] = { }, }, } -gems["Icestorm"] = { +skills["IcestormUniqueStaff12"] = { + name = "Icestorm", hidden = true, + other = true, color = 3, baseFlags = { spell = true, @@ -309,6 +348,7 @@ gems["Icestorm"] = { skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [34] = true, [60] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), skill("manaCost", 22), skill("damageEffectiveness", 0.3), skill("critChance", 5), @@ -332,8 +372,10 @@ gems["Icestorm"] = { [1] = { }, }, } -gems["Illusory Warp"] = { +skills["MerveilWarp"] = { + name = "Illusory Warp", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -345,7 +387,9 @@ gems["Illusory Warp"] = { skillTypes = { [2] = true, [38] = true, [12] = true, [34] = true, [11] = true, }, baseMods = { skill("castTime", 0.6), + skill("levelRequirement", 1), skill("manaCost", 20), + skill("cooldown", 3), skill("duration", 1.5), --"base_skill_effect_duration" = 1500 }, qualityMods = { @@ -356,8 +400,10 @@ gems["Illusory Warp"] = { [20] = { }, }, } -gems["Lightning Bolt"] = { +skills["LightningSpell"] = { + name = "Lightning Bolt", hidden = true, + other = true, color = 3, baseFlags = { spell = true, @@ -368,6 +414,7 @@ gems["Lightning Bolt"] = { baseMods = { skill("castTime", 1), skill("critChance", 6), + skill("cooldown", 0.5), --"cast_on_crit_%" = 100 --"is_area_damage" = ? skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? @@ -375,44 +422,47 @@ gems["Lightning Bolt"] = { qualityMods = { }, levelMods = { - [1] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" - [2] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" }, levels = { - [1] = { 10, 29, }, - [2] = { 11, 33, }, - [3] = { 14, 41, }, - [4] = { 18, 54, }, - [5] = { 25, 75, }, - [6] = { 36, 109, }, - [7] = { 47, 141, }, - [8] = { 60, 180, }, - [9] = { 76, 227, }, - [10] = { 94, 282, }, - [11] = { 116, 348, }, - [12] = { 142, 426, }, - [13] = { 173, 518, }, - [14] = { 209, 626, }, - [15] = { 251, 754, }, - [16] = { 301, 903, }, - [17] = { 359, 1078, }, - [18] = { 428, 1283, }, - [19] = { 486, 1459, }, - [20] = { 552, 1657, }, - [21] = { 601, 1802, }, - [22] = { 653, 1959, }, - [23] = { 709, 2127, }, - [24] = { 770, 2310, }, - [25] = { 835, 2506, }, - [26] = { 906, 2718, }, - [27] = { 982, 2946, }, - [28] = { 1064, 3192, }, - [29] = { 1153, 3458, }, - [30] = { 1248, 3743, }, + [1] = { 1, 10, 29, }, + [2] = { 2, 11, 33, }, + [3] = { 4, 14, 41, }, + [4] = { 7, 18, 54, }, + [5] = { 11, 25, 75, }, + [6] = { 16, 36, 109, }, + [7] = { 20, 47, 141, }, + [8] = { 24, 60, 180, }, + [9] = { 28, 76, 227, }, + [10] = { 32, 94, 282, }, + [11] = { 36, 116, 348, }, + [12] = { 40, 142, 426, }, + [13] = { 44, 173, 518, }, + [14] = { 48, 209, 626, }, + [15] = { 52, 251, 754, }, + [16] = { 56, 301, 903, }, + [17] = { 60, 359, 1078, }, + [18] = { 64, 428, 1283, }, + [19] = { 67, 486, 1459, }, + [20] = { 70, 552, 1657, }, + [21] = { 72, 601, 1802, }, + [22] = { 74, 653, 1959, }, + [23] = { 76, 709, 2127, }, + [24] = { 78, 770, 2310, }, + [25] = { 80, 835, 2506, }, + [26] = { 82, 906, 2718, }, + [27] = { 84, 982, 2946, }, + [28] = { 86, 1064, 3192, }, + [29] = { 88, 1153, 3458, }, + [30] = { 90, 1248, 3743, }, }, } -gems["Molten Burst"] = { +skills["TriggeredMoltenStrike"] = { + name = "Molten Burst", hidden = true, + other = true, color = 1, baseFlags = { attack = true, @@ -423,6 +473,8 @@ gems["Molten Burst"] = { skillTypes = { [3] = true, [1] = true, [11] = true, [33] = true, [57] = true, [47] = true, [48] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 0.15), mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 --"attack_trigger_on_melee_hit_%" = 20 --"show_number_of_projectiles" = ? @@ -438,8 +490,10 @@ gems["Molten Burst"] = { [16] = { }, }, } -gems["Shock Ground"] = { +skills["TriggeredShockedGround"] = { + name = "Shock Ground", hidden = true, + other = true, color = 4, baseFlags = { spell = true, @@ -450,6 +504,8 @@ gems["Shock Ground"] = { skillTypes = { [2] = true, [11] = true, [36] = true, [12] = true, [42] = true, [45] = true, [61] = true, [35] = true, }, baseMods = { skill("castTime", 1), + skill("levelRequirement", 1), + skill("cooldown", 5), --"cast_when_hit_%" = 100 --"skill_art_variation" = 7 skill("duration", 5), --"base_skill_effect_duration" = 5000 @@ -463,3 +519,36 @@ gems["Shock Ground"] = { [1] = { }, }, } +skills["SummonRigwaldsPack"] = { + name = "Summon Spectral Wolf", + hidden = true, + other = true, + minionList = { + "SummonedSpectralWolf", + }, + color = 4, + baseFlags = { + spell = true, + minion = true, + duration = true, + }, + skillTypes = { [2] = true, [9] = true, [12] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, [42] = true, [61] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 66), + skill("duration", 30), --"base_skill_effect_duration" = 30000 + mod("ActiveWolfLimit", "BASE", 20), --"number_of_wolves_allowed" = 20 + --"chance_to_cast_on_kill_%_target_self" = 10 + --"display_minion_monster_type" = 8 + skill("minionLevel", 65), --"display_minion_monster_level" = 65 + skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [18] = { }, + }, +} \ No newline at end of file diff --git a/Export/Skills/other.txt b/Export/Skills/other.txt new file mode 100644 index 00000000..5af1da23 --- /dev/null +++ b/Export/Skills/other.txt @@ -0,0 +1,74 @@ +-- Path of Building +-- +-- Other active skills +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +#skill Melee Default Attack +#flags attack melee projectile +#mods + +#skill GemDetonateMines +#flags spell +#mods + +#skill Portal +#flags spell +#mods + +#skill RepeatingShockwave Abberath's Fury +#flags spell area +#mods + +#skill TriggeredBoneNova Bone Nova +#flags attack projectile +#mods + +#skill TriggeredConsecrate Consecrate +#flags spell duration area +#mods + +#skill TriggeredSummonLesserShrine Create Lesser Shrine +#flags spell duration +#mods + +#skill Envy +#flags spell aura area chaos +#mods + +#skill FireBurstOnHit Fire Burst +#flags spell area fire +#mods + +#skill VaalAuraElementalDamageHealing Gluttony of Elements +#flags spell aura area duration vaal +#mods + +#skill IcestormUniqueStaff12 Icestorm +#flags spell area duration cold +#baseMod skill("duration", 0.15, { type = "PerStat", stat = "Int", div = 100, base = 1.5 }) +#mods + +#skill MerveilWarp Illusory Warp +#flags spell area duration movement cold +#mods + +#skill LightningSpell Lightning Bolt +#flags spell area lightning +#mods + +#skill TriggeredMoltenStrike Molten Burst +#flags attack projectile area fire +#mods + +#skill TriggeredShockedGround Shock Ground +#flags spell area duration lightning +#mods + +#skill SummonRigwaldsPack Summon Spectral Wolf +#flags spell minion duration + minionList = { + "SummonedSpectralWolf", + }, +#mods \ No newline at end of file diff --git a/Export/Skills/spectre.lua b/Export/Skills/spectre.lua new file mode 100644 index 00000000..53e1d53e --- /dev/null +++ b/Export/Skills/spectre.lua @@ -0,0 +1,2865 @@ +-- Path of Building +-- +-- Spectre active skills +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +skills["BeastCleave"] = { + name = "Cleave", + hidden = true, + color = 1, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [8] = true, [11] = true, [28] = true, [24] = true, [53] = true, }, + weaponTypes = { + ["Two Handed Axe"] = true, + ["One Handed Axe"] = true, + ["Two Handed Sword"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 4), + skill("manaCost", 14), + mod("Damage", "MORE", -40, 0, 0, { type = "Condition", var = "DualWielding" }), --"cleave_damage_+%_final_while_dual_wielding" = -40 + --"is_area_damage" = 1 + mod("PhysicalDamage", "INC", 52), --"physical_damage_+%" = 52 + skill("doubleHitsWhenDualWielding", true), --"skill_double_hits_when_dual_wielding" = 1 + mod("Speed", "INC", -30, ModFlag.Attack, 0, nil), --"attack_speed_+%" = -30 + --"skill_sound_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["BirdmanBloodProjectile"] = { + name = "Blood Projectile", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, }, + baseMods = { + skill("castTime", 1), + mod("Speed", "INC", 100, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 100 + mod("Damage", "MORE", 10, ModFlag.Hit), --"active_skill_damage_+%_final" = 10 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"projectile_spread_radius" = 15 + --"base_is_projectile" = ? + --"spell_maximum_action_distance_+%" = -15 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + }, + levels = { + [1] = { 4, }, + [2] = { 13, }, + [3] = { 33, }, + [4] = { 39, }, + [5] = { 55, }, + [6] = { 66, }, + }, +} +skills["BirdmanConsumeCorpse"] = { + name = "Consume Corpse", + hidden = true, + color = 4, + baseFlags = { + spell = true, + }, + skillTypes = { [2] = true, }, + baseMods = { + skill("castTime", 2.67), + skill("levelRequirement", 0), + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["ChaosDegenAura"] = { + name = "Chaos Aura", + hidden = true, + color = 4, + baseFlags = { + spell = true, + aura = true, + area = true, + chaos = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [15] = true, [40] = true, [44] = true, [50] = true, }, + baseMods = { + skill("castTime", 1), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 1.2833333333333, }, + [2] = { 5, 1.6, }, + [3] = { 8, 2.1333333333333, }, + [4] = { 10, 2.55, }, + [5] = { 12, 3.0166666666667, }, + [6] = { 14, 3.5333333333333, }, + [7] = { 17, 4.4333333333333, }, + [8] = { 20, 5.5, }, + [9] = { 24, 7.2, }, + [10] = { 30, 10.516666666667, }, + [11] = { 31, 11.166666666667, }, + [12] = { 36, 15, }, + [13] = { 41, 19.9, }, + [14] = { 44, 23.466666666667, }, + [15] = { 51, 34.083333333333, }, + [16] = { 52, 35.916666666667, }, + [17] = { 57, 46.433333333333, }, + [18] = { 60, 54.033333333333, }, + [19] = { 65, 69.283333333333, }, + [20] = { 66, 72.766666666667, }, + [21] = { 67, 76.416666666667, }, + [22] = { 68, 80.233333333333, }, + [23] = { 69, 84.233333333333, }, + [24] = { 70, 88.416666666667, }, + [25] = { 71, 92.8, }, + [26] = { 72, 97.366666666667, }, + [27] = { 73, 102.16666666667, }, + [28] = { 74, 107.16666666667, }, + [29] = { 75, 112.4, }, + [30] = { 76, 117.88333333333, }, + [31] = { 77, 123.6, }, + [32] = { 78, 129.6, }, + [33] = { 79, 135.85, }, + [34] = { 80, 142.4, }, + [35] = { 81, 149.25, }, + [36] = { 82, 156.4, }, + }, +} +skills["DelayedBlastSpectre"] = { + name = "Delayed Blast", + hidden = true, + color = 4, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 1.3), + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [3] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 3, 3, 5, }, + [2] = { 5, 4, 6, }, + [3] = { 8, 5, 8, }, + [4] = { 10, 6, 9, }, + [5] = { 12, 8, 11, }, + [6] = { 14, 9, 13, }, + [7] = { 17, 11, 17, }, + [8] = { 20, 14, 21, }, + [9] = { 24, 19, 28, }, + [10] = { 30, 28, 42, }, + [11] = { 31, 30, 45, }, + [12] = { 36, 41, 61, }, + [13] = { 41, 55, 82, }, + [14] = { 44, 65, 98, }, + [15] = { 51, 97, 146, }, + [16] = { 52, 103, 154, }, + [17] = { 57, 135, 202, }, + [18] = { 60, 159, 238, }, + [19] = { 65, 207, 310, }, + [20] = { 66, 218, 327, }, + [21] = { 67, 230, 345, }, + [22] = { 68, 242, 363, }, + [23] = { 69, 255, 382, }, + [24] = { 70, 269, 403, }, + [25] = { 71, 283, 424, }, + [26] = { 72, 298, 447, }, + [27] = { 73, 313, 470, }, + [28] = { 74, 330, 495, }, + [29] = { 75, 347, 521, }, + [30] = { 76, 365, 548, }, + [31] = { 77, 384, 577, }, + [32] = { 78, 404, 607, }, + [33] = { 79, 425, 638, }, + [34] = { 80, 447, 671, }, + [35] = { 81, 470, 706, }, + [36] = { 82, 495, 742, }, + }, +} +skills["DemonFemaleRangedProjectile"] = { + name = "Ranged Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, }, + baseMods = { + skill("castTime", 2), + skill("levelRequirement", 30), + --"spell_maximum_action_distance_+%" = -60 + mod("Damage", "MORE", -60, ModFlag.Hit), --"active_skill_damage_+%_final" = -60 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 30 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["ExperimenterDetonateDead"] = { + name = "Detonate Dead", + hidden = true, + color = 4, + baseFlags = { + cast = true, + area = true, + fire = true, + }, + skillTypes = { [39] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("critChance", 5), + --"is_area_damage" = 1 + --"spell_maximum_action_distance_+%" = -70 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "corpse_explosion_monster_life_%" + [3] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 7, 6, 9, }, + [2] = { 5, 7, 7, 10, }, + [3] = { 8, 7, 9, 13, }, + [4] = { 12, 7, 11, 17, }, + [5] = { 16, 7, 14, 21, }, + [6] = { 20, 7, 17, 25, }, + [7] = { 25, 7, 21, 32, }, + [8] = { 32, 7, 28, 42, }, + [9] = { 33, 5, 29, 44, }, + [10] = { 34, 5, 30, 46, }, + [11] = { 45, 5, 45, 67, }, + [12] = { 53, 5, 57, 86, }, + [13] = { 54, 5, 59, 88, }, + [14] = { 60, 4, 70, 105, }, + [15] = { 66, 4, 83, 125, }, + [16] = { 67, 4, 85, 128, }, + [17] = { 68, 4, 88, 132, }, + [18] = { 69, 4, 90, 135, }, + [19] = { 70, 4, 93, 139, }, + [20] = { 71, 4, 95, 143, }, + [21] = { 72, 4, 98, 146, }, + [22] = { 73, 4, 100, 150, }, + [23] = { 74, 4, 103, 154, }, + [24] = { 75, 4, 106, 158, }, + [25] = { 76, 4, 108, 163, }, + [26] = { 77, 4, 111, 167, }, + [27] = { 78, 4, 114, 171, }, + [28] = { 79, 4, 117, 176, }, + [29] = { 80, 4, 120, 180, }, + [30] = { 81, 4, 123, 185, }, + [31] = { 82, 4, 126, 189, }, + }, +} +skills["FireMonsterWhirlingBlades"] = { + name = "Fire Roll", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + duration = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + mod("Speed", "INC", -50, ModFlag.Attack, 0, nil), --"attack_speed_+%" = -50 + --"monster_flurry" = 1 + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireDot", nil), --"whirling_blades_base_ground_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 1.5833333333333, }, + [2] = { 5, 2.0666666666667, }, + [3] = { 8, 3, }, + [4] = { 11, 4.2333333333333, }, + [5] = { 15, 6.4833333333333, }, + [6] = { 19, 9.6833333333333, }, + [7] = { 23, 14.166666666667, }, + [8] = { 27, 20.4, }, + [9] = { 28, 22.316666666667, }, + [10] = { 32, 31.7, }, + [11] = { 40, 62.316666666667, }, + [12] = { 47, 110.18333333333, }, + [13] = { 50, 139.96666666667, }, + [14] = { 55, 207.4, }, + [15] = { 60, 305.51666666667, }, + [16] = { 64, 414.95, }, + [17] = { 65, 447.75, }, + [18] = { 66, 483.03333333333, }, + [19] = { 67, 521.03333333333, }, + [20] = { 68, 561.91666666667, }, + [21] = { 69, 605.9, }, + [22] = { 70, 653.23333333333, }, + [23] = { 71, 704.15, }, + [24] = { 72, 758.91666666667, }, + [25] = { 73, 817.81666666667, }, + [26] = { 74, 881.16666666667, }, + [27] = { 75, 949.28333333333, }, + [28] = { 76, 1022.5333333333, }, + [29] = { 77, 1101.2833333333, }, + [30] = { 78, 1185.9333333333, }, + [31] = { 79, 1276.9166666667, }, + [32] = { 80, 1374.7166666667, }, + [33] = { 81, 1479.8333333333, }, + [34] = { 82, 1592.7833333333, }, + }, +} +skills["FlamebearerFlameBlue"] = { + name = "Blue Flame", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [19] = true, [30] = true, [33] = true, }, + skillTotemId = 8, + baseMods = { + skill("castTime", 0.25), + skill("damageEffectiveness", 0.25), + skill("cooldown", 4), + --"skill_repeat_count" = 25 + --"skill_art_variation" = 1 + mod("Speed", "MORE", 25, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = 25 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"base_is_projectile" = ? + mod("PierceChance", "BASE", 100), --"always_pierce" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[4] = "spell_maximum_action_distance_+%" + }, + levels = { + [1] = { 4, 2, 3, -78, }, + [2] = { 8, 3, 5, -75, }, + [3] = { 16, 7, 10, -75, }, + [4] = { 20, 9, 13, -75, }, + [5] = { 29, 17, 25, -75, }, + [6] = { 34, 23, 34, -75, }, + [7] = { 39, 31, 47, -75, }, + [8] = { 45, 45, 67, -75, }, + [9] = { 51, 63, 95, -75, }, + [10] = { 58, 93, 140, -75, }, + [11] = { 62, 116, 174, -75, }, + [12] = { 64, 129, 194, -75, }, + [13] = { 66, 144, 216, -75, }, + [14] = { 67, 152, 228, -75, }, + [15] = { 68, 248, 372, -75, }, + [16] = { 69, 261, 392, -75, }, + [17] = { 70, 276, 413, -75, }, + [18] = { 71, 291, 436, -75, }, + [19] = { 72, 306, 459, -75, }, + [20] = { 73, 323, 484, -75, }, + [21] = { 74, 340, 510, -75, }, + [22] = { 75, 358, 537, -75, }, + [23] = { 76, 377, 566, -75, }, + [24] = { 77, 397, 596, -75, }, + [25] = { 78, 418, 627, -75, }, + [26] = { 79, 440, 660, -75, }, + [27] = { 80, 464, 695, -75, }, + [28] = { 81, 488, 732, -75, }, + [29] = { 82, 514, 770, -75, }, + }, +} +skills["GoatmanMoltenShell"] = { + name = "Molten Shell", + hidden = true, + color = 1, + baseFlags = { + spell = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [12] = true, [18] = true, [31] = true, [36] = true, [26] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("damageEffectiveness", 2), + mod("ElementalResist", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_resist_all_elements_%" = 0 + --"skill_art_variation" = 1 + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"is_area_damage" = ? + skill("critChance", 5), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [4] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + --[5] = "fire_shield_damage_threshold" + [6] = mod("Armour", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_physical_damage_reduction_rating" + }, + levels = { + [1] = { 3, 200, 17, 25, 20, 335, }, + [2] = { 5, 200, 21, 32, 25, 649, }, + [3] = { 8, 190, 29, 43, 36, 1000, }, + [4] = { 12, 180, 41, 62, 49, 1633, }, + [5] = { 15, 180, 53, 79, 64, 2075, }, + [6] = { 19, 175, 72, 107, 91, 2573, }, + [7] = { 22, 175, 89, 133, 116, 3094, }, + [8] = { 26, 166, 117, 175, 160, 3641, }, + [9] = { 30, 160, 152, 228, 209, 4352, }, + [10] = { 36, 160, 222, 332, 315, 5313, }, + [11] = { 39, 160, 266, 398, 374, 5890, }, + [12] = { 40, 160, 282, 423, 377, 6189, }, + [13] = { 45, 160, 377, 566, 565, 7030, }, + [14] = { 50, 160, 501, 752, 752, 7870, }, + [15] = { 57, 160, 737, 1105, 1194, 9159, }, + [16] = { 60, 160, 866, 1299, 1403, 9867, }, + [17] = { 66, 160, 1190, 1784, 2091, 11090, }, + [18] = { 67, 160, 1253, 1880, 2211, 11524, }, + [19] = { 68, 160, 1321, 1981, 2334, 11966, }, + [20] = { 69, 160, 1391, 2087, 2456, 12428, }, + [21] = { 70, 160, 1465, 2198, 2579, 12894, }, + [22] = { 71, 160, 1543, 2314, 2746, 13369, }, + [23] = { 72, 160, 1624, 2437, 2912, 13857, }, + [24] = { 73, 160, 1710, 2565, 3074, 14358, }, + [25] = { 74, 160, 1800, 2700, 3237, 14875, }, + [26] = { 75, 160, 1894, 2841, 3397, 15397, }, + [27] = { 76, 160, 1993, 2990, 3552, 15931, }, + [28] = { 77, 160, 2097, 3146, 3703, 16480, }, + [29] = { 78, 160, 2206, 3309, 3847, 17039, }, + [30] = { 79, 160, 2321, 3481, 3981, 17613, }, + [31] = { 80, 160, 2441, 3661, 4110, 18195, }, + [32] = { 81, 160, 2566, 3850, 4230, 18790, }, + [33] = { 82, 160, 2698, 4048, 4334, 19399, }, + }, +} +skills["GuardianArc"] = { + name = "Arc", + hidden = true, + color = 3, + baseFlags = { + spell = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 5), --"base_chance_to_shock_%" = 5 + mod("ChainCount", "BASE", 0), --"number_of_additional_projectiles_in_chain" = 0 + mod("Speed", "MORE", -80, ModFlag.Cast), --"active_skill_cast_speed_+%_final" = -80 + --"spell_maximum_action_distance_+%" = -50 + --"skill_art_variation" = 1 + mod("Speed", "INC", -80, ModFlag.Cast), --"base_cast_speed_+%" = -80 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 2, 2, 6, }, + [2] = { 4, 2, 7, }, + [3] = { 8, 3, 10, }, + [4] = { 12, 5, 14, }, + [5] = { 15, 6, 17, }, + [6] = { 18, 7, 21, }, + [7] = { 21, 9, 26, }, + [8] = { 25, 11, 32, }, + [9] = { 28, 13, 39, }, + [10] = { 32, 16, 48, }, + [11] = { 38, 22, 66, }, + [12] = { 46, 32, 97, }, + [13] = { 51, 41, 122, }, + [14] = { 56, 51, 154, }, + [15] = { 62, 67, 200, }, + [16] = { 64, 73, 218, }, + [17] = { 66, 79, 238, }, + [18] = { 67, 83, 248, }, + [19] = { 68, 86, 259, }, + [20] = { 69, 90, 270, }, + [21] = { 70, 113, 338, }, + [22] = { 71, 118, 353, }, + [23] = { 72, 123, 368, }, + [24] = { 73, 128, 383, }, + [25] = { 74, 133, 400, }, + [26] = { 75, 139, 416, }, + [27] = { 76, 145, 434, }, + [28] = { 77, 151, 452, }, + [29] = { 78, 157, 471, }, + [30] = { 79, 164, 491, }, + [31] = { 80, 170, 511, }, + [32] = { 81, 177, 532, }, + [33] = { 82, 185, 554, }, + [34] = { 83, 192, 577, }, + [35] = { 84, 200, 601, }, + }, +} +skills["HalfSkeletonPuncture"] = { + name = "Puncture", + hidden = true, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, + weaponTypes = { + ["Bow"] = true, + ["Claw"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 7.5), + skill("bleedBasePercent", 14.5), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 870 + --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 4370 + --"bleed_on_hit_base_duration" = 5000 + --"melee_range_+" = 20 + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + }, + levels = { + [1] = { 2, }, + [2] = { 6, }, + [3] = { 10, }, + [4] = { 14, }, + [5] = { 18, }, + [6] = { 22, }, + [7] = { 26, }, + [8] = { 30, }, + [9] = { 34, }, + [10] = { 38, }, + [11] = { 42, }, + [12] = { 46, }, + [13] = { 50, }, + [14] = { 54, }, + [15] = { 58, }, + [16] = { 61, }, + [17] = { 63, }, + [18] = { 66, }, + [19] = { 67, }, + [20] = { 68, }, + [21] = { 69, }, + [22] = { 70, }, + [23] = { 71, }, + [24] = { 72, }, + [25] = { 73, }, + [26] = { 74, }, + [27] = { 75, }, + [28] = { 76, }, + [29] = { 77, }, + [30] = { 78, }, + [31] = { 79, }, + [32] = { 80, }, + [33] = { 81, }, + [34] = { 82, }, + }, +} +skills["IguanaProjectile"] = { + name = "Ranged Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, }, + baseMods = { + skill("castTime", 1.5), + skill("levelRequirement", 1), + skill("cooldown", 3.5), + --"monster_projectile_variation" = 4 + --"skill_repeat_count" = 0 + --"spell_maximum_action_distance_+%" = -60 + mod("Damage", "MORE", -60, ModFlag.Hit), --"active_skill_damage_+%_final" = -60 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 30 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["IncaMinionProjectile"] = { + name = "Chaos Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [10] = true, }, + baseMods = { + skill("castTime", 1.65), + skill("critChance", 5), + --"base_is_projectile" = 1 + --"skill_range_+%" = -75 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [4] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + [5] = skill("PhysicalMin", nil), --"spell_minimum_base_physical_damage" + [6] = skill("PhysicalMax", nil), --"spell_maximum_base_physical_damage" + }, + levels = { + [1] = { 4, 5, 2, 3, 3, 5, }, + [2] = { 9, 5, 3, 5, 5, 7, }, + [3] = { 13, 5, 4, 6, 6, 9, }, + [4] = { 17, 5, 5, 8, 8, 12, }, + [5] = { 21, 4, 7, 10, 10, 15, }, + [6] = { 22, 4, 7, 10, 10, 15, }, + [7] = { 25, 4, 8, 12, 12, 18, }, + [8] = { 32, 4, 11, 16, 16, 24, }, + [9] = { 39, 4, 14, 22, 22, 33, }, + [10] = { 45, 4, 18, 27, 27, 41, }, + [11] = { 47, 4, 20, 29, 29, 44, }, + [12] = { 48, 4, 20, 30, 30, 46, }, + [13] = { 52, 4, 23, 35, 35, 53, }, + [14] = { 56, 4, 27, 40, 40, 60, }, + [15] = { 63, 4, 34, 51, 51, 76, }, + [16] = { 64, 4, 35, 53, 53, 79, }, + [17] = { 65, 4, 36, 54, 54, 81, }, + [18] = { 66, 4, 37, 56, 56, 84, }, + [19] = { 67, 4, 39, 58, 58, 87, }, + [20] = { 68, 4, 101, 151, 151, 227, }, + [21] = { 69, 4, 104, 156, 156, 234, }, + [22] = { 70, 4, 107, 161, 161, 242, }, + [23] = { 71, 4, 110, 166, 166, 249, }, + [24] = { 72, 4, 114, 172, 171, 257, }, + [25] = { 73, 4, 118, 177, 176, 265, }, + [26] = { 74, 4, 121, 182, 182, 274, }, + [27] = { 75, 4, 125, 188, 188, 282, }, + [28] = { 76, 4, 129, 194, 193, 291, }, + [29] = { 77, 4, 133, 200, 199, 300, }, + [30] = { 78, 4, 137, 206, 205, 309, }, + [31] = { 79, 4, 141, 212, 212, 319, }, + [32] = { 80, 4, 145, 219, 218, 328, }, + [33] = { 81, 4, 150, 226, 225, 338, }, + [34] = { 82, 4, 154, 232, 232, 349, }, + }, +} +skills["InsectSpawnerSpit"] = { + name = "Spit", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [3] = true, }, + baseMods = { + skill("castTime", 1), + --"base_is_projectile" = 1 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 30 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_fire_damage" + [3] = mod("FireMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_fire_damage" + [4] = mod("PhysicalMin", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_minimum_added_physical_damage" + [5] = mod("PhysicalMax", "BASE", nil, ModFlag.Attack, 0, nil), --"attack_maximum_added_physical_damage" + }, + levels = { + [1] = { 2, 1, 1, 2, 3, }, + [2] = { 5, 1, 2, 3, 4, }, + [3] = { 8, 2, 2, 4, 6, }, + [4] = { 11, 2, 3, 6, 7, }, + [5] = { 15, 3, 4, 8, 10, }, + [6] = { 18, 3, 5, 9, 12, }, + [7] = { 22, 4, 7, 12, 15, }, + [8] = { 26, 6, 8, 15, 19, }, + [9] = { 28, 6, 9, 17, 21, }, + [10] = { 34, 9, 13, 24, 29, }, + [11] = { 41, 12, 19, 34, 42, }, + [12] = { 49, 18, 27, 49, 62, }, + [13] = { 50, 19, 29, 52, 65, }, + [14] = { 55, 24, 36, 65, 81, }, + [15] = { 60, 30, 45, 81, 101, }, + [16] = { 64, 36, 54, 97, 121, }, + [17] = { 65, 37, 56, 101, 126, }, + [18] = { 66, 39, 58, 105, 131, }, + [19] = { 67, 41, 61, 110, 137, }, + [20] = { 68, 42, 64, 115, 143, }, + [21] = { 69, 44, 66, 119, 149, }, + [22] = { 70, 46, 69, 125, 156, }, + [23] = { 71, 48, 72, 130, 162, }, + [24] = { 72, 50, 75, 136, 169, }, + [25] = { 73, 52, 78, 141, 177, }, + [26] = { 74, 55, 82, 147, 184, }, + [27] = { 75, 57, 85, 154, 192, }, + [28] = { 76, 59, 89, 160, 200, }, + [29] = { 77, 62, 93, 167, 208, }, + [30] = { 78, 64, 96, 174, 217, }, + [31] = { 79, 67, 101, 181, 226, }, + [32] = { 80, 70, 105, 188, 236, }, + [33] = { 81, 73, 109, 196, 245, }, + [34] = { 82, 76, 114, 204, 255, }, + }, +} +skills["MassFrenzy"] = { + name = "Mass Frenzy", + hidden = true, + color = 4, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, }, + baseMods = { + skill("castTime", 2), + skill("levelRequirement", 0), + skill("manaCost", 100), + skill("cooldown", 6), + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterArc"] = { + name = "Arc", + hidden = true, + color = 3, + baseFlags = { + spell = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [17] = true, [18] = true, [19] = true, [23] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.8), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + mod("EnemyShockChance", "BASE", 10), --"base_chance_to_shock_%" = 10 + mod("ChainCount", "BASE", 1), --"number_of_additional_projectiles_in_chain" = 1 + --"skill_range_+%" = -50 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 3, 20, 2, 7, }, + [2] = { 5, 20, 3, 9, }, + [3] = { 8, 19, 4, 12, }, + [4] = { 12, 18, 6, 17, }, + [5] = { 15, 18, 8, 23, }, + [6] = { 18, 18, 10, 29, }, + [7] = { 21, 18, 12, 37, }, + [8] = { 25, 17, 17, 50, }, + [9] = { 32, 16, 27, 82, }, + [10] = { 38, 16, 41, 123, }, + [11] = { 46, 16, 68, 205, }, + [12] = { 52, 16, 99, 298, }, + [13] = { 56, 16, 127, 380, }, + [14] = { 62, 16, 181, 542, }, + [15] = { 66, 16, 229, 686, }, + [16] = { 67, 16, 242, 727, }, + [17] = { 68, 16, 257, 770, }, + [18] = { 69, 16, 272, 816, }, + [19] = { 70, 16, 288, 864, }, + [20] = { 71, 16, 305, 915, }, + [21] = { 72, 16, 323, 969, }, + [22] = { 73, 16, 342, 1026, }, + [23] = { 74, 16, 362, 1086, }, + [24] = { 75, 16, 383, 1150, }, + [25] = { 76, 16, 406, 1217, }, + [26] = { 77, 16, 429, 1288, }, + [27] = { 78, 16, 454, 1362, }, + [28] = { 79, 16, 480, 1441, }, + [29] = { 80, 16, 508, 1525, }, + [30] = { 81, 16, 537, 1612, }, + [31] = { 82, 16, 568, 1705, }, + [32] = { 83, 16, 601, 1803, }, + [33] = { 84, 16, 635, 1906, }, + }, +} +skills["MonsterCausticArrow"] = { + name = "Caustic Arrow", + hidden = true, + color = 2, + baseFlags = { + attack = true, + projectile = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [11] = true, [12] = true, [17] = true, [19] = true, [22] = true, [40] = true, [50] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + mod("PhysicalDamageGainAsChaos", "BASE", 34, 0, 0, nil), --"physical_damage_%_to_add_as_chaos" = 34 + --"skill_can_fire_arrows" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"ground_caustic_art_variation" = 2 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("duration", nil), --"base_skill_effect_duration" + [4] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 10, 1.2, 1.4833333333333, }, + [2] = { 5, 10, 1.2, 1.85, }, + [3] = { 8, 10, 1.2, 2.5, }, + [4] = { 12, 9, 1.2, 3.5833333333333, }, + [5] = { 15, 9, 1.2, 4.5833333333333, }, + [6] = { 19, 9, 1.2, 6.2166666666667, }, + [7] = { 20, 9, 1.2, 6.7, }, + [8] = { 21, 9, 1.2, 7.2, }, + [9] = { 26, 8, 1.2, 10.183333333333, }, + [10] = { 30, 8, 1.2, 13.25, }, + [11] = { 34, 8, 1.2, 17.05, }, + [12] = { 38, 8, 1.2, 21.766666666667, }, + [13] = { 43, 8, 1.2, 29.25, }, + [14] = { 45, 8, 1.2, 32.85, }, + [15] = { 53, 8, 1.2, 51.516666666667, }, + [16] = { 58, 8, 1.2, 67.666666666667, }, + [17] = { 62, 8, 1.2, 83.833333333333, }, + [18] = { 63, 8, 1.2, 88.4, }, + [19] = { 66, 8, 1.2, 103.53333333333, }, + [20] = { 67, 8, 1.2, 109.1, }, + [21] = { 68, 8, 2.4, 160.91666666667, }, + [22] = { 69, 8, 2.5, 169.5, }, + [23] = { 70, 8, 2.6, 178.51666666667, }, + [24] = { 71, 8, 2.7, 187.98333333333, }, + [25] = { 72, 8, 2.8, 197.91666666667, }, + [26] = { 73, 8, 2.9, 208.35, }, + [27] = { 74, 8, 3, 219.3, }, + [28] = { 75, 8, 3, 230.8, }, + [29] = { 76, 8, 3, 242.86666666667, }, + [30] = { 77, 8, 3, 255.51666666667, }, + [31] = { 78, 8, 3, 268.8, }, + [32] = { 79, 8, 3, 282.75, }, + [33] = { 80, 8, 3, 297.36666666667, }, + [34] = { 81, 8, 3, 312.7, }, + [35] = { 82, 8, 3, 328.8, }, + }, +} +skills["MonsterCausticBomb"] = { + name = "Caustic Bomb", + hidden = true, + color = 4, + baseFlags = { + spell = true, + trap = true, + area = true, + duration = true, + chaos = true, + }, + skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [37] = true, [40] = true, [50] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + skill("cooldown", 4), + --"base_trap_duration" = 2500 + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"trap_variation" = 2 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"ground_caustic_art_variation" = 2 + --"is_trap" = ? + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [3] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + [4] = skill("ChaosDot", nil), --"base_chaos_damage_to_deal_per_minute" + }, + levels = { + [1] = { 4, 4, 5, 3.5, }, + [2] = { 7, 5, 7, 4.7833333333333, }, + [3] = { 9, 6, 8, 5.7666666666667, }, + [4] = { 12, 8, 11, 7.4833333333333, }, + [5] = { 16, 11, 15, 10.3, }, + [6] = { 20, 15, 20, 13.85, }, + [7] = { 27, 24, 32, 22.283333333333, }, + [8] = { 28, 26, 34, 23.766666666667, }, + [9] = { 29, 27, 36, 25.333333333333, }, + [10] = { 32, 33, 44, 30.566666666667, }, + [11] = { 36, 42, 56, 38.966666666667, }, + [12] = { 40, 53, 71, 49.283333333333, }, + [13] = { 45, 71, 94, 65.5, }, + [14] = { 49, 88, 118, 81.75, }, + [15] = { 50, 93, 124, 86.333333333333, }, + [16] = { 52, 104, 139, 96.233333333333, }, + [17] = { 56, 129, 172, 119.16666666667, }, + [18] = { 60, 159, 212, 147.03333333333, }, + [19] = { 64, 195, 260, 180.83333333333, }, + [20] = { 65, 206, 274, 190.33333333333, }, + [21] = { 66, 216, 288, 200.3, }, + [22] = { 67, 228, 303, 210.76666666667, }, + [23] = { 68, 239, 319, 221.73333333333, }, + [24] = { 69, 252, 336, 233.21666666667, }, + [25] = { 70, 265, 353, 245.28333333333, }, + [26] = { 71, 279, 371, 257.91666666667, }, + [27] = { 72, 293, 390, 271.15, }, + [28] = { 73, 308, 410, 285.03333333333, }, + [29] = { 74, 324, 431, 299.58333333333, }, + [30] = { 75, 340, 453, 314.83333333333, }, + [31] = { 76, 357, 476, 330.81666666667, }, + [32] = { 77, 375, 500, 347.55, }, + [33] = { 78, 394, 526, 365.1, }, + [34] = { 79, 414, 552, 383.46666666667, }, + [35] = { 80, 435, 580, 402.71666666667, }, + [36] = { 81, 457, 609, 422.88333333333, }, + [37] = { 82, 480, 639, 444, }, + }, +} +skills["MonsterDischarge"] = { + name = "Discharge", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + cold = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [18] = true, [26] = true, [36] = true, [45] = true, [33] = true, [34] = true, [35] = true, [60] = true, }, + baseMods = { + skill("castTime", 1), + skill("damageEffectiveness", 1.5), + skill("critChance", 4), + --"spell_maximum_action_distance_+%" = -75 + --"skill_art_variation" = 1 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_minimum_base_lightning_damage_per_power_charge" + [3] = skill("LightningMax", nil, { type = "Multiplier", var = "PowerCharge" }), --"spell_maximum_base_lightning_damage_per_power_charge" + [4] = skill("FireMin", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_minimum_base_fire_damage_per_endurance_charge" + [5] = skill("FireMax", nil, { type = "Multiplier", var = "EnduranceCharge" }), --"spell_maximum_base_fire_damage_per_endurance_charge" + [6] = skill("ColdMin", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_minimum_base_cold_damage_per_frenzy_charge" + [7] = skill("ColdMax", nil, { type = "Multiplier", var = "FrenzyCharge" }), --"spell_maximum_base_cold_damage_per_frenzy_charge" + }, + levels = { + [1] = { 4, 7, 20, 10, 14, 8, 12, }, + [2] = { 7, 9, 27, 13, 19, 10, 16, }, + [3] = { 10, 11, 34, 16, 24, 13, 20, }, + [4] = { 12, 13, 40, 19, 28, 15, 23, }, + [5] = { 15, 16, 49, 23, 35, 19, 29, }, + [6] = { 20, 23, 68, 32, 49, 26, 40, }, + [7] = { 27, 34, 103, 49, 73, 40, 60, }, + [8] = { 28, 36, 108, 51, 77, 42, 63, }, + [9] = { 29, 38, 115, 54, 81, 44, 67, }, + [10] = { 32, 45, 134, 64, 95, 52, 78, }, + [11] = { 36, 55, 165, 78, 117, 64, 96, }, + [12] = { 40, 67, 200, 95, 142, 78, 116, }, + [13] = { 45, 85, 254, 120, 180, 98, 148, }, + [14] = { 49, 101, 304, 144, 217, 118, 177, }, + [15] = { 50, 106, 318, 151, 226, 124, 185, }, + [16] = { 52, 116, 348, 165, 248, 135, 203, }, + [17] = { 64, 194, 582, 276, 414, 226, 339, }, + [18] = { 65, 202, 607, 288, 432, 236, 353, }, + [19] = { 66, 211, 633, 300, 450, 245, 368, }, + [20] = { 67, 220, 659, 313, 469, 256, 384, }, + [21] = { 68, 252, 756, 358, 537, 293, 440, }, + [22] = { 69, 262, 787, 373, 560, 305, 458, }, + [23] = { 70, 273, 820, 389, 583, 318, 477, }, + [24] = { 71, 285, 854, 405, 607, 331, 497, }, + [25] = { 72, 296, 889, 422, 632, 345, 517, }, + [26] = { 73, 309, 926, 439, 658, 359, 539, }, + [27] = { 74, 321, 964, 457, 685, 374, 561, }, + [28] = { 75, 334, 1003, 475, 713, 389, 584, }, + [29] = { 76, 348, 1044, 495, 742, 405, 607, }, + [30] = { 77, 362, 1086, 515, 772, 421, 632, }, + [31] = { 78, 377, 1130, 536, 803, 438, 657, }, + [32] = { 79, 392, 1175, 557, 836, 456, 684, }, + [33] = { 80, 407, 1222, 579, 869, 474, 711, }, + [34] = { 81, 424, 1271, 603, 904, 493, 740, }, + [35] = { 82, 441, 1322, 627, 940, 513, 769, }, + }, +} +skills["MonsterEnduringCry"] = { + name = "Enduring Cry", + hidden = true, + color = 1, + baseFlags = { + warcry = true, + area = true, + duration = true, + }, + skillTypes = { [5] = true, [11] = true, [12] = true, }, + baseMods = { + skill("castTime", 0.25), + skill("cooldown", 4), + --"endurance_charges_granted_per_one_hundred_nearby_enemies_during_endurance_warcry" = 300 + skill("duration", 0.75), --"base_skill_effect_duration" = 750 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LifeRegen", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), --"base_life_regeneration_rate_per_minute" + }, + levels = { + [1] = { 4, 5, }, + [2] = { 7, 7.6, }, + [3] = { 10, 11, }, + [4] = { 14, 17, }, + [5] = { 18, 25.2, }, + [6] = { 22, 36.4, }, + [7] = { 24, 43.4, }, + [8] = { 28, 60.8, }, + [9] = { 32, 84.4, }, + [10] = { 36, 115.4, }, + [11] = { 40, 156.6, }, + [12] = { 44, 211, }, + [13] = { 48, 282.2, }, + [14] = { 52, 375.6, }, + [15] = { 56, 497.2, }, + [16] = { 60, 655.8, }, + [17] = { 63, 805, }, + [18] = { 66, 986.4, }, + [19] = { 67, 1055.2, }, + [20] = { 68, 1128.4, }, + [21] = { 69, 1206.6, }, + [22] = { 70, 1289.8, }, + [23] = { 71, 1378.8, }, + [24] = { 72, 1473.4, }, + [25] = { 73, 1574.4, }, + [26] = { 74, 1682, }, + [27] = { 75, 1796.8, }, + [28] = { 76, 1919, }, + [29] = { 77, 2049.2, }, + [30] = { 78, 2188, }, + [31] = { 79, 2335.8, }, + [32] = { 80, 2493.2, }, + [33] = { 81, 2660.8, }, + [34] = { 82, 2839.6, }, + }, +} +skills["MonsterEnfeeble"] = { + name = "Enfeeble", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 4), + skill("manaCost", 35), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("Accuracy", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -40 + mod("CritChance", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -40 + mod("Damage", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" = -40 + mod("CritMultiplier", "BASE", -60, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" = -60 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterFireball"] = { + name = "Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 5, 7, }, + [2] = { 5, 6, 9, }, + [3] = { 8, 8, 12, }, + [4] = { 10, 10, 14, }, + [5] = { 12, 11, 17, }, + [6] = { 14, 13, 20, }, + [7] = { 17, 17, 26, }, + [8] = { 20, 21, 32, }, + [9] = { 25, 30, 45, }, + [10] = { 28, 37, 55, }, + [11] = { 31, 45, 67, }, + [12] = { 36, 61, 91, }, + [13] = { 41, 82, 122, }, + [14] = { 46, 109, 163, }, + [15] = { 51, 144, 216, }, + [16] = { 52, 152, 228, }, + [17] = { 57, 199, 299, }, + [18] = { 65, 304, 456, }, + [19] = { 66, 320, 480, }, + [20] = { 67, 337, 506, }, + [21] = { 68, 861, 1336, }, + [22] = { 69, 906, 1406, }, + [23] = { 70, 954, 1480, }, + [24] = { 71, 1004, 1557, }, + [25] = { 72, 1056, 1639, }, + [26] = { 73, 1111, 1724, }, + [27] = { 74, 1169, 1814, }, + [28] = { 75, 1230, 1908, }, + [29] = { 76, 1293, 2006, }, + [30] = { 77, 1360, 2110, }, + [31] = { 78, 1430, 2218, }, + [32] = { 79, 1503, 2332, }, + [33] = { 80, 1580, 2451, }, + [34] = { 81, 1660, 2576, }, + [35] = { 82, 1745, 2707, }, + }, +} +skills["MonsterFireBomb"] = { + name = "Fire Bomb", + hidden = true, + color = 4, + baseFlags = { + spell = true, + trap = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [12] = true, [10] = true, [19] = true, [11] = true, [29] = true, [37] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + skill("critChance", 5), + --"base_trap_duration" = 2500 + skill("duration", 4.5), --"base_skill_effect_duration" = 4500 + --"trap_variation" = 1 + --"monster_penalty_against_minions_damage_+%_final_vs_player_minions" = -25 + --"is_trap" = ? + --"is_area_damage" = ? + --"base_skill_is_trapped" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [4] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 4, 4, 7, 3.0333333333333, }, + [2] = { 7, 6, 9, 4.3, }, + [3] = { 10, 8, 13, 5.9, }, + [4] = { 12, 10, 16, 7.2, }, + [5] = { 16, 15, 23, 10.433333333333, }, + [6] = { 20, 21, 32, 14.75, }, + [7] = { 27, 37, 56, 25.983333333333, }, + [8] = { 28, 40, 61, 28.066666666667, }, + [9] = { 34, 63, 95, 44.083333333333, }, + [10] = { 40, 98, 147, 67.95, }, + [11] = { 45, 139, 208, 96.35, }, + [12] = { 49, 182, 274, 126.63333333333, }, + [13] = { 50, 195, 293, 135.48333333333, }, + [14] = { 54, 255, 382, 177.03333333333, }, + [15] = { 58, 332, 498, 230.43333333333, }, + [16] = { 62, 430, 646, 298.88333333333, }, + [17] = { 64, 490, 734, 339.98333333333, }, + [18] = { 65, 522, 783, 362.51666666667, }, + [19] = { 66, 557, 835, 386.46666666667, }, + [20] = { 67, 593, 890, 411.91666666667, }, + [21] = { 68, 885, 1328, 614.58333333333, }, + [22] = { 69, 943, 1414, 654.85, }, + [23] = { 70, 1005, 1507, 697.65, }, + [24] = { 71, 1070, 1605, 743.13333333333, }, + [25] = { 72, 1140, 1710, 791.45, }, + [26] = { 73, 1214, 1820, 842.78333333333, }, + [27] = { 74, 1292, 1938, 897.31666666667, }, + [28] = { 75, 1376, 2063, 955.25, }, + [29] = { 76, 1464, 2196, 1016.7666666667, }, + [30] = { 77, 1558, 2337, 1082.1166666667, }, + [31] = { 78, 1658, 2487, 1151.5, }, + [32] = { 79, 1764, 2646, 1225.1833333333, }, + [33] = { 80, 1877, 2815, 1303.4, }, + [34] = { 81, 1996, 2995, 1386.45, }, + [35] = { 82, 2123, 3185, 1474.6166666667, }, + }, +} +skills["MonsterFlickerStrike"] = { + name = "Flicker Strike", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [25] = true, [28] = true, [38] = true, }, + weaponTypes = { + ["One Handed Mace"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["Staff"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["Claw"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 13), + skill("manaCost", 18), + skill("cooldown", 2), + mod("Speed", "INC", 30, ModFlag.Attack, 0, nil), --"attack_speed_+%" = 30 + mod("Speed", "INC", 10, ModFlag.Attack, 0, { type = "Multiplier", var = "FrenzyCharge" }), --"base_attack_speed_+%_per_frenzy_charge" = 10 + mod("PhysicalDamage", "INC", 0), --"physical_damage_+%" = 0 + mod("Damage", "MORE", 10, ModFlag.Hit), --"active_skill_damage_+%_final" = 10 + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterLeapSlam"] = { + name = "Leap Slam", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + area = true, + }, + skillTypes = { [1] = true, [6] = true, [7] = true, [11] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Two Handed Sword"] = true, + ["One Handed Mace"] = true, + ["Two Handed Axe"] = true, + ["Two Handed Mace"] = true, + ["One Handed Axe"] = true, + ["One Handed Sword"] = true, + ["Staff"] = true, + }, + baseMods = { + skill("castTime", 1.4), + skill("levelRequirement", 2), + mod("Damage", "MORE", 50, ModFlag.Attack), + --"skill_art_variation" = 1 + --"is_area_damage" = ? + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterLesserMultiFireballSpectre"] = { + name = "Lesser Multi Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + mod("ProjectileCount", "BASE", 1), --"number_of_additional_projectiles" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 4, 5, }, + [2] = { 5, 4, 7, }, + [3] = { 8, 6, 9, }, + [4] = { 12, 9, 13, }, + [5] = { 15, 11, 16, }, + [6] = { 19, 15, 22, }, + [7] = { 20, 16, 24, }, + [8] = { 21, 17, 26, }, + [9] = { 26, 24, 36, }, + [10] = { 30, 31, 47, }, + [11] = { 34, 40, 60, }, + [12] = { 38, 51, 77, }, + [13] = { 43, 69, 103, }, + [14] = { 45, 77, 115, }, + [15] = { 53, 120, 180, }, + [16] = { 58, 157, 236, }, + [17] = { 62, 194, 291, }, + [18] = { 63, 205, 307, }, + [19] = { 66, 239, 359, }, + [20] = { 67, 252, 378, }, + [21] = { 68, 584, 876, }, + [22] = { 69, 615, 922, }, + [23] = { 70, 647, 970, }, + [24] = { 71, 681, 1021, }, + [25] = { 72, 716, 1075, }, + [26] = { 73, 754, 1131, }, + [27] = { 74, 793, 1189, }, + [28] = { 75, 834, 1251, }, + [29] = { 76, 877, 1316, }, + [30] = { 77, 922, 1384, }, + [31] = { 78, 970, 1455, }, + [32] = { 79, 1019, 1529, }, + [33] = { 80, 1072, 1607, }, + [34] = { 81, 1126, 1689, }, + [35] = { 82, 1183, 1775, }, + }, +} +skills["MonsterLightningArrow"] = { + name = "Lightning Arrow", + hidden = true, + color = 2, + baseFlags = { + attack = true, + projectile = true, + lightning = true, + }, + skillTypes = { [1] = true, [48] = true, [11] = true, [3] = true, [22] = true, [17] = true, [19] = true, [35] = true, }, + weaponTypes = { + ["Bow"] = true, + }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 9), + mod("SkillPhysicalDamageConvertToLightning", "BASE", 50), --"skill_physical_damage_%_to_convert_to_lightning" = 50 + --"lightning_arrow_maximum_number_of_extra_targets" = 4 + mod("EnemyShockChance", "BASE", 25), --"base_chance_to_shock_%" = 25 + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterLightningThorns"] = { + name = "Lightning Thorns", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [5] = true, [12] = true, [35] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3.5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + --[2] = "minimum_lightning_damage_to_return_when_hit" + --[3] = "maximum_lightning_damage_to_return_when_hit" + }, + levels = { + [1] = { 3, 3, 10, }, + [2] = { 5, 4, 13, }, + [3] = { 8, 6, 17, }, + [4] = { 12, 8, 24, }, + [5] = { 16, 11, 32, }, + [6] = { 24, 18, 55, }, + [7] = { 28, 23, 70, }, + [8] = { 29, 25, 74, }, + [9] = { 32, 29, 88, }, + [10] = { 38, 41, 123, }, + [11] = { 44, 57, 170, }, + [12] = { 50, 77, 231, }, + [13] = { 51, 81, 243, }, + [14] = { 52, 85, 255, }, + [15] = { 56, 103, 310, }, + [16] = { 60, 125, 376, }, + [17] = { 63, 145, 434, }, + [18] = { 65, 159, 476, }, + [19] = { 66, 166, 499, }, + [20] = { 67, 174, 523, }, + [21] = { 68, 183, 548, }, + [22] = { 69, 191, 574, }, + [23] = { 70, 200, 601, }, + [24] = { 71, 210, 629, }, + [25] = { 72, 219, 658, }, + [26] = { 73, 230, 689, }, + [27] = { 74, 240, 721, }, + [28] = { 75, 252, 755, }, + [29] = { 76, 263, 790, }, + [30] = { 77, 275, 826, }, + [31] = { 78, 288, 864, }, + [32] = { 79, 301, 903, }, + [33] = { 80, 315, 945, }, + [34] = { 81, 329, 988, }, + [35] = { 82, 344, 1032, }, + }, +} +skills["MonsterMultiFireballSpectre"] = { + name = "Multi Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 3, 5, }, + [2] = { 5, 4, 6, }, + [3] = { 8, 5, 8, }, + [4] = { 12, 7, 11, }, + [5] = { 15, 10, 14, }, + [6] = { 19, 13, 19, }, + [7] = { 20, 14, 21, }, + [8] = { 21, 15, 22, }, + [9] = { 26, 21, 32, }, + [10] = { 30, 27, 41, }, + [11] = { 34, 35, 53, }, + [12] = { 38, 45, 67, }, + [13] = { 43, 60, 90, }, + [14] = { 45, 67, 101, }, + [15] = { 53, 105, 157, }, + [16] = { 58, 137, 206, }, + [17] = { 62, 170, 255, }, + [18] = { 63, 179, 269, }, + [19] = { 66, 209, 314, }, + [20] = { 67, 221, 331, }, + [21] = { 68, 511, 766, }, + [22] = { 69, 538, 807, }, + [23] = { 70, 566, 849, }, + [24] = { 71, 596, 894, }, + [25] = { 72, 627, 940, }, + [26] = { 73, 660, 989, }, + [27] = { 74, 694, 1041, }, + [28] = { 75, 730, 1095, }, + [29] = { 76, 768, 1151, }, + [30] = { 77, 807, 1211, }, + [31] = { 78, 849, 1273, }, + [32] = { 79, 892, 1338, }, + [33] = { 80, 938, 1406, }, + [34] = { 81, 985, 1478, }, + [35] = { 82, 1035, 1553, }, + }, +} +skills["MonsterProjectileWeakness"] = { + name = "Projectile Weakness", + hidden = true, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("duration", nil), --"base_skill_effect_duration" + [3] = mod("SelfPierceChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" + --[4] = "chance_to_be_knocked_back_%" + [5] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" + }, + levels = { + [1] = { 25, 10.4, 54, 22, 32, }, + [2] = { 36, 10.4, 54, 22, 32, }, + [3] = { 47, 10.4, 54, 22, 32, }, + [4] = { 55, 10.9, 70, 24, 34, }, + [5] = { 60, 10.9, 95, 24, 34, }, + }, +} +skills["MonsterProximityShield"] = { + name = "Proximity Shield", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("levelRequirement", 0), + skill("cooldown", 18), + skill("duration", 8), --"base_skill_effect_duration" = 8000 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["MonsterPuncture"] = { + name = "Puncture", + hidden = true, + color = 2, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [6] = true, [12] = true, [17] = true, [19] = true, [22] = true, [25] = true, [28] = true, [24] = true, [40] = true, }, + weaponTypes = { + ["Bow"] = true, + ["Claw"] = true, + ["Two Handed Sword"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 1), + --"bleed_on_hit_base_duration" = 5000 + --"skill_can_fire_arrows" = ? + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("bleedBasePercent", nil), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" + --[3] = "base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" + }, + levels = { + [1] = { 9, 14.5, 4370, }, + [2] = { 30, 20.666666666667, 6210, }, + [3] = { 60, 25.833333333333, 7730, }, + }, +} +skills["MonsterRighteousFireWhileSpectred"] = { + name = "Unrighteous Fire", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + fire = true, + }, + skillTypes = { [2] = true, [5] = true, [11] = true, [18] = true, [29] = true, [36] = true, [40] = true, [33] = true, }, + baseMods = { + skill("castTime", 1), + --"skill_art_variation" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireDot", nil), --"base_fire_damage_to_deal_per_minute" + }, + levels = { + [1] = { 3, 1.5833333333333, }, + [2] = { 5, 2.05, }, + [3] = { 8, 2.9, }, + [4] = { 10, 3.6, }, + [5] = { 12, 4.4166666666667, }, + [6] = { 14, 5.3666666666667, }, + [7] = { 17, 7.1166666666667, }, + [8] = { 20, 9.3333333333333, }, + [9] = { 24, 13.15, }, + [10] = { 27, 16.866666666667, }, + [11] = { 28, 18.3, }, + [12] = { 31, 23.25, }, + [13] = { 36, 34.283333333333, }, + [14] = { 41, 49.933333333333, }, + [15] = { 44, 62.266666666667, }, + [16] = { 48, 83.183333333333, }, + [17] = { 50, 95.983333333333, }, + [18] = { 52, 110.61666666667, }, + [19] = { 57, 157, }, + [20] = { 63, 237.28333333333, }, + [21] = { 64, 254.01666666667, }, + [22] = { 65, 271.86666666667, }, + [23] = { 66, 290.93333333333, }, + [24] = { 67, 311.28333333333, }, + [25] = { 68, 332.98333333333, }, + [26] = { 69, 356.16666666667, }, + [27] = { 70, 380.88333333333, }, + [28] = { 71, 407.25, }, + [29] = { 72, 435.38333333333, }, + [30] = { 73, 465.38333333333, }, + [31] = { 74, 497.38333333333, }, + [32] = { 75, 531.5, }, + [33] = { 76, 567.88333333333, }, + [34] = { 77, 606.68333333333, }, + [35] = { 78, 648.03333333333, }, + [36] = { 79, 692.11666666667, }, + [37] = { 80, 739.1, }, + [38] = { 81, 789.18333333333, }, + [39] = { 82, 842.56666666667, }, + }, +} +skills["MonsterShockNova"] = { + name = "Shock Nova", + hidden = true, + color = 3, + baseFlags = { + spell = true, + area = true, + lightning = true, + }, + skillTypes = { [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.75), + skill("critChance", 3), + --"is_area_damage" = 1 + --"active_skill_area_of_effect_radius_+%_final" = 0 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 4, 3, 10, }, + [2] = { 8, 5, 15, }, + [3] = { 11, 6, 19, }, + [4] = { 12, 7, 20, }, + [5] = { 17, 10, 29, }, + [6] = { 22, 13, 40, }, + [7] = { 29, 20, 60, }, + [8] = { 31, 22, 67, }, + [9] = { 35, 28, 83, }, + [10] = { 37, 31, 92, }, + [11] = { 40, 36, 107, }, + [12] = { 45, 46, 137, }, + [13] = { 50, 58, 173, }, + [14] = { 55, 73, 218, }, + [15] = { 58, 83, 250, }, + [16] = { 65, 113, 340, }, + [17] = { 66, 118, 355, }, + [18] = { 67, 124, 371, }, + [19] = { 68, 377, 1132, }, + [20] = { 69, 393, 1182, }, + [21] = { 70, 410, 1233, }, + [22] = { 71, 428, 1286, }, + [23] = { 72, 446, 1342, }, + [24] = { 73, 465, 1400, }, + [25] = { 74, 485, 1459, }, + [26] = { 75, 506, 1522, }, + [27] = { 76, 528, 1587, }, + [28] = { 77, 550, 1654, }, + [29] = { 78, 573, 1724, }, + [30] = { 79, 597, 1796, }, + [31] = { 80, 623, 1872, }, + [32] = { 81, 649, 1950, }, + [33] = { 82, 676, 2032, }, + }, +} +skills["MonsterSpark"] = { + name = "Spark", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + --"base_is_projectile" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + [5] = mod("ProjectileCount", "BASE", nil), --"number_of_additional_projectiles" + }, + levels = { + [1] = { 4, 20, 2, 7, 0, }, + [2] = { 8, 19, 3, 10, 0, }, + [3] = { 11, 18, 4, 12, 1, }, + [4] = { 12, 18, 4, 13, 1, }, + [5] = { 15, 18, 5, 16, 1, }, + [6] = { 20, 18, 7, 22, 1, }, + [7] = { 25, 17, 10, 29, 1, }, + [8] = { 29, 16, 12, 36, 1, }, + [9] = { 31, 16, 13, 40, 2, }, + [10] = { 32, 16, 14, 42, 2, }, + [11] = { 34, 16, 15, 46, 2, }, + [12] = { 37, 16, 18, 54, 2, }, + [13] = { 40, 16, 21, 62, 2, }, + [14] = { 42, 16, 22, 67, 2, }, + [15] = { 45, 16, 26, 77, 2, }, + [16] = { 50, 16, 32, 96, 2, }, + [17] = { 51, 16, 33, 100, 2, }, + [18] = { 52, 16, 35, 104, 2, }, + [19] = { 54, 16, 38, 113, 2, }, + [20] = { 58, 16, 44, 133, 2, }, + [21] = { 66, nil, 61, 183, 2, }, + [22] = { 67, nil, 63, 190, 2, }, + [23] = { 68, nil, 145, 435, 2, }, + [24] = { 69, nil, 151, 452, 2, }, + [25] = { 70, nil, 157, 470, 2, }, + [26] = { 71, nil, 163, 488, 2, }, + [27] = { 72, nil, 169, 507, 2, }, + [28] = { 73, nil, 176, 527, 2, }, + [29] = { 74, nil, 182, 547, 2, }, + [30] = { 75, nil, 189, 568, 2, }, + [31] = { 76, nil, 197, 590, 2, }, + [32] = { 77, nil, 204, 612, 2, }, + [33] = { 78, nil, 212, 636, 2, }, + [34] = { 79, nil, 220, 660, 2, }, + [35] = { 80, nil, 228, 684, 2, }, + [36] = { 81, nil, 237, 710, 2, }, + [37] = { 82, nil, 246, 737, 2, }, + }, +} +skills["MonsterSplitFireballSpectre"] = { + name = "Split Fireball", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + --"projectiles_fork" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 4, 6, }, + [2] = { 5, 5, 7, }, + [3] = { 8, 6, 10, }, + [4] = { 12, 9, 14, }, + [5] = { 15, 12, 18, }, + [6] = { 19, 16, 24, }, + [7] = { 20, 17, 26, }, + [8] = { 21, 18, 28, }, + [9] = { 26, 26, 39, }, + [10] = { 30, 34, 50, }, + [11] = { 34, 43, 65, }, + [12] = { 38, 55, 82, }, + [13] = { 43, 74, 111, }, + [14] = { 45, 83, 124, }, + [15] = { 53, 129, 193, }, + [16] = { 58, 169, 253, }, + [17] = { 62, 209, 313, }, + [18] = { 63, 220, 330, }, + [19] = { 66, 257, 386, }, + [20] = { 67, 271, 406, }, + [21] = { 68, 628, 941, }, + [22] = { 69, 661, 991, }, + [23] = { 70, 695, 1043, }, + [24] = { 71, 732, 1098, }, + [25] = { 72, 770, 1155, }, + [26] = { 73, 810, 1216, }, + [27] = { 74, 852, 1279, }, + [28] = { 75, 897, 1345, }, + [29] = { 76, 943, 1414, }, + [30] = { 77, 992, 1487, }, + [31] = { 78, 1042, 1564, }, + [32] = { 79, 1096, 1644, }, + [33] = { 80, 1152, 1728, }, + [34] = { 81, 1211, 1816, }, + [35] = { 82, 1272, 1908, }, + }, +} +skills["MonsterWarlordsMark"] = { + name = "Warlord's Mark", + hidden = true, + color = 1, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 5), + skill("manaCost", 50), + skill("duration", 8.8), --"base_skill_effect_duration" = 8800 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("StunRecovery", "INC", -27, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_stun_recovery_+%" = -27 + --"chance_to_be_stunned_%" = 10 + mod("SelfDamageLifeLeech", "BASE", 128, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"life_leech_on_any_damage_when_hit_permyriad" = 128 + mod("SelfDamageManaLeech", "BASE", 108, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"mana_leech_on_any_damage_when_hit_permyriad" = 108 + --"chance_to_grant_endurance_charge_on_death_%" = 37 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["NecromancerConductivity"] = { + name = "Conductivity", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("LightningResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_lightning_damage_resistance_%" + [3] = mod("SelfShockChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" + }, + levels = { + [1] = { 10, -20, 14, }, + [2] = { 40, -20, 14, }, + [3] = { 41, -25, 16, }, + [4] = { 57, -25, 16, }, + [5] = { 58, -30, 18, }, + [6] = { 70, -30, 18, }, + [7] = { 71, -40, 20, }, + }, +} +skills["NecromancerElementalWeakness"] = { + name = "Elemental Weakness", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 35), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("SelfShockChance", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_shocked_%" = 0 + mod("SelfFreezeChance", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" = 0 + mod("SelfIgniteChance", "BASE", 0, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ElementalResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_resist_all_elements_%" + }, + levels = { + [1] = { 10, -20, }, + [2] = { 39, -20, }, + [3] = { 40, -25, }, + [4] = { 55, -25, }, + [5] = { 56, -30, }, + [6] = { 70, -30, }, + [7] = { 71, -40, }, + }, +} +skills["NecromancerEnfeeble"] = { + name = "Enfeeble", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 4), + skill("manaCost", 35), + skill("duration", 5), --"base_skill_effect_duration" = 5000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("Accuracy", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"accuracy_rating_+%" = -40 + mod("CritChance", "INC", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"critical_strike_chance_+%" = -40 + mod("Damage", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"enfeeble_damage_+%_final" = -40 + mod("CritMultiplier", "BASE", -60, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_critical_strike_multiplier_+" = -60 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["NecromancerFlammability"] = { + name = "Flammability", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + fire = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 50), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("FireResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_fire_damage_resistance_%" + [3] = mod("SelfIgniteChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_ignited_%" + }, + levels = { + [1] = { 10, -20, 14, }, + [2] = { 40, -20, 14, }, + [3] = { 41, -25, 16, }, + [4] = { 57, -25, 16, }, + [5] = { 58, -30, 18, }, + [6] = { 70, -30, 18, }, + [7] = { 71, -40, 20, }, + }, +} +skills["NecromancerFrostbite"] = { + name = "Frostbite", + hidden = true, + color = 3, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + cold = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, [34] = true, [60] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("manaCost", 50), + skill("cooldown", 10), + skill("duration", 6), --"base_skill_effect_duration" = 6000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ColdResist", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"base_cold_damage_resistance_%" + [3] = mod("SelfFreezeChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_frozen_%" + }, + levels = { + [1] = { 10, -20, 14, }, + [2] = { 40, -20, 14, }, + [3] = { 41, -25, 16, }, + [4] = { 57, -25, 16, }, + [5] = { 58, -30, 18, }, + [6] = { 70, -30, 18, }, + [7] = { 71, -40, 20, }, + }, +} +skills["NecromancerProjectileWeakness"] = { + name = "Projectile Weakness", + hidden = true, + color = 2, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("duration", nil), --"base_skill_effect_duration" + [3] = mod("SelfPierceChance", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"chance_to_be_pierced_%" + --[4] = "chance_to_be_knocked_back_%" + [5] = mod("ProjectileDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"projectile_damage_taken_+%" + }, + levels = { + [1] = { 25, 10.4, 54, 22, 32, }, + [2] = { 36, 10.4, 54, 22, 32, }, + [3] = { 47, 10.4, 54, 22, 32, }, + [4] = { 55, 10.9, 70, 24, 34, }, + [5] = { 60, 10.9, 95, 24, 34, }, + }, +} +skills["NecromancerRaiseZombie"] = { + name = "Raise Zombie", + hidden = true, + color = 4, + baseFlags = { + spell = true, + minion = true, + }, + skillTypes = { [2] = true, [9] = true, [21] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [49] = true, }, + minionSkillTypes = { [1] = true, [24] = true, [25] = true, [28] = true, [11] = true, }, + baseMods = { + skill("castTime", 0.85), + --"alternate_minion" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = mod("ActiveZombieLimit", "BASE", nil), --"base_number_of_zombies_allowed" + }, + levels = { + [1] = { 2, 3, }, + [2] = { 3, 3, }, + [3] = { 5, 3, }, + [4] = { 8, 3, }, + [5] = { 11, 3, }, + [6] = { 16, 3, }, + [7] = { 21, 3, }, + [8] = { 26, 4, }, + [9] = { 31, 4, }, + [10] = { 35, 4, }, + [11] = { 40, 5, }, + [12] = { 44, 5, }, + [13] = { 48, 5, }, + [14] = { 51, 6, }, + [15] = { 54, 6, }, + [16] = { 58, 6, }, + [17] = { 63, 6, }, + }, +} +skills["NecromancerVulnerability"] = { + name = "Vulnerability", + hidden = true, + color = 4, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 1), + skill("manaCost", 110), + skill("duration", 10.9), --"base_skill_effect_duration" = 10900 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("PhysicalDamageTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 50 + mod("DotTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 50 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["PyroChaosFireball"] = { + name = "Chaos Fireball", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + skill("cooldown", 3), + --"spell_maximum_action_distance_+%" = -50 + --"skill_art_variation" = 4 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + [4] = skill("ChaosMin", nil), --"spell_minimum_base_chaos_damage" + [5] = skill("ChaosMax", nil), --"spell_maximum_base_chaos_damage" + }, + levels = { + [1] = { 3, 3, 4, 2, 2, }, + [2] = { 5, 3, 5, 2, 3, }, + [3] = { 8, 4, 6, 3, 3, }, + [4] = { 10, 5, 7, 3, 4, }, + [5] = { 12, 6, 9, 4, 5, }, + [6] = { 14, 7, 10, 5, 6, }, + [7] = { 17, 8, 12, 6, 7, }, + [8] = { 20, 10, 15, 7, 8, }, + [9] = { 27, 15, 22, 10, 12, }, + [10] = { 28, 16, 24, 11, 13, }, + [11] = { 31, 19, 28, 12, 15, }, + [12] = { 36, 24, 36, 16, 20, }, + [13] = { 41, 31, 46, 21, 25, }, + [14] = { 49, 44, 66, 30, 37, }, + [15] = { 50, 46, 69, 31, 38, }, + [16] = { 52, 51, 76, 34, 42, }, + [17] = { 57, 63, 94, 42, 52, }, + [18] = { 63, 81, 122, 55, 67, }, + [19] = { 64, 85, 127, 57, 70, }, + [20] = { 65, 88, 132, 60, 73, }, + [21] = { 66, 92, 138, 62, 76, }, + [22] = { 67, 96, 144, 65, 79, }, + [23] = { 68, 100, 150, 67, 82, }, + [24] = { 69, 104, 156, 70, 86, }, + [25] = { 70, 108, 163, 73, 89, }, + [26] = { 71, 113, 169, 76, 93, }, + [27] = { 72, 117, 176, 79, 97, }, + [28] = { 73, 122, 183, 83, 101, }, + [29] = { 74, 127, 191, 86, 105, }, + [30] = { 75, 132, 199, 89, 109, }, + [31] = { 76, 138, 207, 93, 114, }, + [32] = { 77, 143, 215, 97, 118, }, + [33] = { 78, 149, 224, 101, 123, }, + [34] = { 79, 155, 233, 105, 128, }, + [35] = { 80, 161, 242, 109, 133, }, + [36] = { 81, 168, 252, 113, 139, }, + [37] = { 82, 175, 262, 118, 144, }, + }, +} +skills["PyroFireball"] = { + name = "Fireball", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + area = true, + fire = true, + }, + skillTypes = { [3] = true, [2] = true, [10] = true, [11] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [33] = true, }, + baseMods = { + skill("castTime", 0.85), + skill("critChance", 6), + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -50 + --"skill_art_variation" = 3 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"spell_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"spell_maximum_base_fire_damage" + }, + levels = { + [1] = { 3, 5, 7, }, + [2] = { 5, 6, 9, }, + [3] = { 8, 8, 12, }, + [4] = { 10, 10, 14, }, + [5] = { 12, 11, 17, }, + [6] = { 14, 13, 20, }, + [7] = { 17, 17, 26, }, + [8] = { 20, 21, 32, }, + [9] = { 24, 28, 42, }, + [10] = { 28, 37, 55, }, + [11] = { 31, 45, 67, }, + [12] = { 36, 61, 91, }, + [13] = { 41, 82, 122, }, + [14] = { 46, 109, 163, }, + [15] = { 50, 136, 204, }, + [16] = { 52, 152, 228, }, + [17] = { 57, 199, 299, }, + [18] = { 63, 274, 411, }, + [19] = { 64, 288, 433, }, + [20] = { 65, 304, 456, }, + [21] = { 66, 320, 480, }, + [22] = { 67, 337, 506, }, + [23] = { 68, 497, 745, }, + [24] = { 69, 523, 785, }, + [25] = { 70, 551, 826, }, + [26] = { 71, 580, 869, }, + [27] = { 72, 610, 915, }, + [28] = { 73, 642, 962, }, + [29] = { 74, 675, 1012, }, + [30] = { 75, 710, 1065, }, + [31] = { 76, 747, 1120, }, + [32] = { 77, 785, 1178, }, + [33] = { 78, 825, 1238, }, + [34] = { 79, 868, 1301, }, + [35] = { 80, 912, 1368, }, + [36] = { 81, 958, 1438, }, + [37] = { 82, 1007, 1511, }, + }, +} +skills["PyroSuicideExplosion"] = { + name = "Suicide Explosion", + hidden = true, + color = 4, + baseFlags = { + spell = true, + area = true, + }, + skillTypes = { [2] = true, [11] = true, [10] = true, }, + baseMods = { + skill("castTime", 1), + --"is_area_damage" = 1 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("FireMin", nil), --"secondary_minimum_base_fire_damage" + [3] = skill("FireMax", nil), --"secondary_maximum_base_fire_damage" + --[4] = "grant_kill_to_target_when_exploding_self" + }, + levels = { + [1] = { 3, 9, 14, nil, }, + [2] = { 5, 12, 18, nil, }, + [3] = { 9, 18, 27, nil, }, + [4] = { 12, 24, 37, nil, }, + [5] = { 13, 27, 40, nil, }, + [6] = { 18, 42, 62, nil, }, + [7] = { 23, 63, 94, nil, }, + [8] = { 27, 85, 128, nil, }, + [9] = { 28, 92, 138, nil, }, + [10] = { 35, 154, 231, nil, }, + [11] = { 49, 399, 599, nil, }, + [12] = { 50, 427, 640, nil, }, + [13] = { 58, 714, 1072, nil, }, + [14] = { 64, 1042, 1563, nil, }, + [15] = { 65, 1109, 1664, nil, }, + [16] = { 66, 1180, 1770, nil, }, + [17] = { 67, 1256, 1883, nil, }, + [18] = { 68, 1336, 2003, nil, }, + [19] = { 69, 1420, 2131, nil, }, + [20] = { 70, 1510, 2265, nil, }, + [21] = { 71, 1606, 2409, nil, }, + [22] = { 72, 1707, 2560, nil, }, + [23] = { 73, 1814, 2721, nil, }, + [24] = { 74, 1928, 2892, nil, }, + [25] = { 75, 2048, 3073, nil, }, + [26] = { 76, 2176, 3264, nil, }, + [27] = { 77, 2312, 3467, nil, }, + [28] = { 78, 2455, 3683, nil, }, + [29] = { 79, 2607, 3911, nil, }, + [30] = { 80, 2768, 4153, nil, }, + [31] = { 81, 2939, 4409, nil, }, + [32] = { 82, 3120, 4680, nil, }, + }, +} +skills["RevenantSpellProjectileSpectre"] = { + name = "Lightning Projectile", + hidden = true, + color = 4, + baseFlags = { + spell = true, + projectile = true, + }, + skillTypes = { [2] = true, [3] = true, [36] = true, }, + baseMods = { + skill("castTime", 1), + skill("cooldown", 3), + --"monster_projectile_variation" = 7 + --"base_number_of_projectiles_in_spiral_nova" = 3 + --"projectile_spiral_nova_time_ms" = 150 + --"projectile_spiral_nova_angle" = 20 + --"projectile_spiral_nova_starting_angle_offset" = -10 + --"monster_reverse_point_blank_damage_-%_at_minimum_range" = 60 + --"base_is_projectile" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [3] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 3, 3, 7, }, + [2] = { 5, 4, 9, }, + [3] = { 8, 6, 13, }, + [4] = { 11, 8, 18, }, + [5] = { 15, 11, 26, }, + [6] = { 20, 17, 40, }, + [7] = { 24, 24, 56, }, + [8] = { 28, 33, 77, }, + [9] = { 29, 36, 83, }, + [10] = { 32, 45, 104, }, + [11] = { 36, 60, 141, }, + [12] = { 40, 81, 188, }, + [13] = { 45, 115, 268, }, + [14] = { 49, 152, 354, }, + [15] = { 50, 162, 379, }, + [16] = { 52, 186, 434, }, + [17] = { 56, 243, 568, }, + [18] = { 60, 318, 741, }, + [19] = { 64, 413, 963, }, + [20] = { 65, 441, 1028, }, + [21] = { 66, 470, 1097, }, + [22] = { 67, 502, 1170, }, + [23] = { 68, 535, 1248, }, + [24] = { 69, 571, 1331, }, + [25] = { 70, 608, 1420, }, + [26] = { 71, 649, 1514, }, + [27] = { 72, 692, 1614, }, + [28] = { 73, 737, 1720, }, + [29] = { 74, 786, 1833, }, + [30] = { 75, 837, 1953, }, + [31] = { 76, 892, 2081, }, + [32] = { 77, 950, 2217, }, + [33] = { 78, 1012, 2361, }, + [34] = { 79, 1078, 2515, }, + [35] = { 80, 1148, 2678, }, + [36] = { 81, 1222, 2851, }, + [37] = { 82, 1301, 3035, }, + }, +} +skills["SeaWitchScreech"] = { + name = "Screech", + hidden = true, + color = 4, + baseFlags = { + spell = true, + duration = true, + area = true, + }, + skillTypes = { [2] = true, }, + baseMods = { + skill("castTime", 2.73), + skill("cooldown", 6.5), + mod("MovementSpeed", "INC", -20, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), --"base_movement_velocity_+%" = -20 + skill("duration", 1.9), --"base_skill_effect_duration" = 1900 + --"is_area_damage" = ? + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 3, 1, 2, }, + [2] = { 5, 1, 2, }, + [3] = { 6, 2, 2, }, + [4] = { 8, 2, 3, }, + [5] = { 10, 2, 3, }, + [6] = { 13, 3, 4, }, + [7] = { 17, 4, 6, }, + [8] = { 20, 5, 8, }, + [9] = { 24, 7, 10, }, + [10] = { 27, 8, 13, }, + [11] = { 29, 10, 14, }, + [12] = { 35, 14, 21, }, + [13] = { 42, 22, 33, }, + [14] = { 49, 33, 50, }, + [15] = { 51, 37, 56, }, + [16] = { 58, 56, 83, }, + [17] = { 64, 77, 116, }, + [18] = { 65, 82, 123, }, + [19] = { 66, 86, 130, }, + [20] = { 67, 91, 137, }, + [21] = { 68, 223, 347, }, + [22] = { 69, 235, 366, }, + [23] = { 70, 248, 386, }, + [24] = { 71, 262, 407, }, + [25] = { 72, 276, 430, }, + [26] = { 73, 291, 453, }, + [27] = { 74, 307, 478, }, + [28] = { 75, 324, 504, }, + [29] = { 76, 341, 531, }, + [30] = { 77, 360, 560, }, + [31] = { 78, 379, 590, }, + [32] = { 79, 400, 622, }, + [33] = { 80, 421, 655, }, + [34] = { 81, 444, 690, }, + [35] = { 82, 467, 727, }, + }, +} +skills["SeaWitchWave"] = { + name = "Wave", + hidden = true, + color = 4, + baseFlags = { + spell = true, + }, + skillTypes = { [2] = true, [10] = true, [26] = true, }, + baseMods = { + skill("castTime", 1.5), + skill("manaCost", 6), + skill("critChance", 5), + --"base_is_projectile" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("ColdMin", nil), --"spell_minimum_base_cold_damage" + [3] = skill("ColdMax", nil), --"spell_maximum_base_cold_damage" + }, + levels = { + [1] = { 4, 6, 10, }, + [2] = { 6, 8, 12, }, + [3] = { 9, 10, 16, }, + [4] = { 12, 13, 20, }, + [5] = { 13, 14, 22, }, + [6] = { 14, 16, 23, }, + [7] = { 15, 17, 25, }, + [8] = { 18, 21, 31, }, + [9] = { 22, 27, 41, }, + [10] = { 25, 33, 49, }, + [11] = { 29, 42, 63, }, + [12] = { 31, 47, 71, }, + [13] = { 34, 56, 84, }, + [14] = { 38, 70, 105, }, + [15] = { 39, 74, 111, }, + [16] = { 40, 78, 117, }, + [17] = { 43, 91, 137, }, + [18] = { 49, 125, 187, }, + [19] = { 56, 176, 265, }, + [20] = { 58, 194, 292, }, + [21] = { 59, 204, 306, }, + [22] = { 60, 214, 321, }, + [23] = { 63, 247, 370, }, + [24] = { 66, 284, 427, }, + [25] = { 67, 298, 447, }, + [26] = { 68, 874, 1312, }, + [27] = { 69, 916, 1374, }, + [28] = { 70, 959, 1439, }, + [29] = { 71, 1004, 1507, }, + [30] = { 72, 1052, 1577, }, + [31] = { 73, 1101, 1651, }, + [32] = { 74, 1152, 1728, }, + [33] = { 75, 1206, 1809, }, + [34] = { 76, 1262, 1893, }, + [35] = { 77, 1320, 1980, }, + [36] = { 78, 1381, 2072, }, + [37] = { 79, 1445, 2167, }, + [38] = { 80, 1511, 2266, }, + [39] = { 81, 1580, 2370, }, + [40] = { 82, 1652, 2478, }, + }, +} +skills["SkeletonMassBowProjectile"] = { + name = "Puncture", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, }, + baseMods = { + skill("castTime", 1.5), + --"monster_projectile_variation" = 12 + --"spell_maximum_action_distance_+%" = -50 + mod("ProjectileSpeed", "INC", 200), --"base_projectile_speed_+%" = 200 + --"base_bleed_on_hit_moving_%_of_physical_damage_to_deal_per_minute" = 3000 + skill("bleedBasePercent", 10), --"base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute" = 600 + --"bleed_on_hit_base_duration" = 5000 + --"base_is_projectile" = ? + mod("BleedChance", "BASE", 100), + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + }, + levels = { + [1] = { 2, }, + [2] = { 6, }, + [3] = { 10, }, + [4] = { 14, }, + [5] = { 18, }, + [6] = { 22, }, + [7] = { 26, }, + [8] = { 30, }, + [9] = { 34, }, + [10] = { 38, }, + [11] = { 42, }, + [12] = { 46, }, + [13] = { 50, }, + [14] = { 54, }, + [15] = { 58, }, + [16] = { 61, }, + [17] = { 63, }, + [18] = { 66, }, + [19] = { 67, }, + [20] = { 68, }, + [21] = { 69, }, + [22] = { 70, }, + [23] = { 71, }, + [24] = { 72, }, + [25] = { 73, }, + [26] = { 74, }, + [27] = { 75, }, + [28] = { 76, }, + [29] = { 77, }, + [30] = { 78, }, + [31] = { 79, }, + [32] = { 80, }, + [33] = { 81, }, + [34] = { 82, }, + }, +} +skills["SkeletonSpark"] = { + name = "Spark", + hidden = true, + color = 3, + baseFlags = { + spell = true, + projectile = true, + duration = true, + lightning = true, + }, + skillTypes = { [2] = true, [3] = true, [10] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [36] = true, [45] = true, [35] = true, }, + baseMods = { + skill("castTime", 0.65), + skill("damageEffectiveness", 0.7), + skill("critChance", 5), + skill("duration", 3.5), --"base_skill_effect_duration" = 3500 + --"base_is_projectile" = 1 + mod("ProjectileCount", "BASE", 2), --"number_of_additional_projectiles" = 2 + --"skill_art_variation" = 1 + }, + qualityMods = { + }, + levelMods = { + [1] = skill("levelRequirement", nil), + [2] = skill("manaCost", nil), + [3] = skill("LightningMin", nil), --"spell_minimum_base_lightning_damage" + [4] = skill("LightningMax", nil), --"spell_maximum_base_lightning_damage" + }, + levels = { + [1] = { 4, 50, 2, 6, }, + [2] = { 8, 48, 3, 9, }, + [3] = { 11, 45, 4, 11, }, + [4] = { 15, 45, 5, 15, }, + [5] = { 20, 44, 7, 21, }, + [6] = { 28, 41, 11, 34, }, + [7] = { 29, 40, 12, 36, }, + [8] = { 31, 40, 14, 41, }, + [9] = { 32, 40, 14, 43, }, + [10] = { 34, 40, 16, 48, }, + [11] = { 37, 40, 19, 56, }, + [12] = { 40, 40, 22, 65, }, + [13] = { 42, 40, 24, 72, }, + [14] = { 44, 40, 26, 79, }, + [15] = { 50, 40, 35, 105, }, + [16] = { 51, 40, 37, 110, }, + [17] = { 52, 40, 38, 115, }, + [18] = { 63, 40, 63, 189, }, + [19] = { 65, 40, 69, 206, }, + [20] = { 66, 40, 72, 215, }, + [21] = { 67, 40, 75, 225, }, + [22] = { 68, 40, 351, 1052, }, + [23] = { 69, 40, 366, 1098, }, + [24] = { 70, 40, 382, 1146, }, + [25] = { 71, 40, 398, 1195, }, + [26] = { 72, 40, 416, 1247, }, + [27] = { 73, 40, 434, 1301, }, + [28] = { 74, 40, 452, 1356, }, + [29] = { 75, 40, 471, 1414, }, + [30] = { 76, 40, 492, 1475, }, + [31] = { 77, 40, 512, 1537, }, + [32] = { 78, 40, 534, 1602, }, + [33] = { 79, 40, 557, 1670, }, + [34] = { 80, 40, 580, 1740, }, + [35] = { 81, 40, 604, 1813, }, + [36] = { 82, 40, 629, 1888, }, + }, +} +skills["SkeletonTemporalChains"] = { + name = "Temporal Chains", + hidden = true, + color = 4, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 0), + skill("manaCost", 20), + skill("duration", 4), --"base_skill_effect_duration" = 4000 + --"active_skill_area_of_effect_radius_+%_final" = 0 + --"temporal_chains_action_speed_+%_final" = -20 + mod("BuffExpireFaster", "MORE", -40, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"buff_time_passed_-%" = 40 + --"skill_art_variation" = 0 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["SkeletonVulnerability"] = { + name = "Vulnerability", + hidden = true, + color = 4, + baseFlags = { + spell = true, + curse = true, + area = true, + duration = true, + }, + skillTypes = { [2] = true, [11] = true, [12] = true, [17] = true, [18] = true, [19] = true, [26] = true, [32] = true, [36] = true, }, + baseMods = { + skill("castTime", 0.5), + skill("levelRequirement", 1), + skill("manaCost", 110), + skill("duration", 10.9), --"base_skill_effect_duration" = 10900 + --"active_skill_area_of_effect_radius_+%_final" = 0 + mod("PhysicalDamageTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"physical_damage_taken_+%" = 50 + mod("DotTaken", "INC", 50, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), --"degen_effect_+%" = 50 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["SnakeSpineProjectile"] = { + name = "Spine Attack", + hidden = true, + color = 4, + baseFlags = { + attack = true, + projectile = true, + }, + skillTypes = { [1] = true, [48] = true, [3] = true, [10] = true, [57] = true, }, + baseMods = { + skill("castTime", 1.5), + skill("levelRequirement", 1), + --"monster_projectile_variation" = 2 + --"base_is_projectile" = 1 + --"spell_maximum_action_distance_+%" = -60 + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} +skills["UndyingWhirlingBlades"] = { + name = "Whirling Blades", + hidden = true, + color = 4, + baseFlags = { + attack = true, + melee = true, + movement = true, + }, + skillTypes = { [1] = true, [6] = true, [24] = true, [38] = true, }, + weaponTypes = { + ["Claw"] = true, + ["Dagger"] = true, + ["One Handed Sword"] = true, + }, + baseMods = { + skill("castTime", 2.6), + skill("levelRequirement", 0), + skill("manaCost", 50), + --"skill_art_variation" = 1 + mod("Damage", "MORE", -40, ModFlag.Hit), --"active_skill_damage_+%_final" = -40 + --"monster_flurry" = 1 + skill("castTimeOverridesAttackTime", true), --"cast_time_overrides_attack_duration" = ? + --"ignores_proximity_shield" = ? + }, + qualityMods = { + }, + levelMods = { + }, + levels = { + [1] = { }, + }, +} \ No newline at end of file diff --git a/Export/Skills/spectre.txt b/Export/Skills/spectre.txt new file mode 100644 index 00000000..a239d43a --- /dev/null +++ b/Export/Skills/spectre.txt @@ -0,0 +1,242 @@ +-- Path of Building +-- +-- Spectre active skills +-- Skill data (c) Grinding Gear Games +-- +local skills, mod, flag, skill = ... + +#skill BeastCleave Cleave +#flags attack melee area +#mods + +#skill BirdmanBloodProjectile Blood Projectile +#flags attack projectile +#mods + +#skill BirdmanConsumeCorpse Consume Corpse +#flags spell +#mods + +#skill ChaosDegenAura Chaos Aura +#flags spell aura area chaos +#mods + +#skill DelayedBlastSpectre Delayed Blast +#flags spell area +#mods + +#skill DemonFemaleRangedProjectile Ranged Attack +#flags attack projectile +#mods + +#skill ExperimenterDetonateDead Detonate Dead +#flags cast area fire +#mods + +#skill FireMonsterWhirlingBlades Fire Roll +#flags attack melee movement duration +#mods + +#skill FlamebearerFlameBlue Blue Flame +#flags spell projectile duration fire +#mods + +#skill GoatmanMoltenShell Molten Shell +#flags spell area duration fire +#mods + +#skill GuardianArc Arc +#flags spell lightning +#mods + +#skill HalfSkeletonPuncture Puncture +#flags attack melee projectile +#baseMod mod("BleedChance", "BASE", 100) +#mods + +#skill IguanaProjectile Ranged Attack +#flags attack projectile +#mods + +#skill IncaMinionProjectile Chaos Projectile +#flags spell projectile +#mods + +#skill InsectSpawnerSpit Spit +#flags attack projectile +#mods + +#skill MassFrenzy Mass Frenzy +#flags spell area +#mods + +#skill MonsterArc Arc +#flags spell lightning +#mods + +#skill MonsterCausticArrow Caustic Arrow +#flags attack projectile area duration chaos +#mods + +#skill MonsterCausticBomb Caustic Bomb +#flags spell trap area duration chaos +#mods + +#skill MonsterDischarge Discharge +#flags spell area fire cold lightning +#mods + +#skill MonsterEnduringCry Enduring Cry +#flags warcry area duration +#mods + +#skill MonsterEnfeeble Enfeeble +#flags spell curse area duration +#mods + +#skill MonsterFireball Fireball +#flags spell projectile area fire +#mods + +#skill MonsterFireBomb Fire Bomb +#flags spell trap area duration fire +#mods + +#skill MonsterFlickerStrike Flicker Strike +#flags attack melee movement +#mods + +#skill MonsterLeapSlam Leap Slam +#flags attack melee area +#mods + +#skill MonsterLesserMultiFireballSpectre Lesser Multi Fireball +#flags spell projectile area fire +#mods + +#skill MonsterLightningArrow Lightning Arrow +#flags attack projectile lightning +#mods + +#skill MonsterLightningThorns Lightning Thorns +#flags spell duration lightning +#mods + +#skill MonsterMultiFireballSpectre Multi Fireball +#flags spell projectile area fire +#mods + +#skill MonsterProjectileWeakness Projectile Weakness +#flags spell curse area duration +#mods + +#skill MonsterProximityShield Proximity Shield +#flags spell duration +#mods + +#skill MonsterPuncture Puncture +#flags attack melee projectile +#baseMod mod("BleedChance", "BASE", 100) +#mods + +#skill MonsterRighteousFireWhileSpectred Unrighteous Fire +#flags spell area fire +#mods + +#skill MonsterShockNova Shock Nova +#flags spell area lightning +#mods + +#skill MonsterSpark Spark +#flags spell projectile duration lightning +#mods + +#skill MonsterSplitFireballSpectre Split Fireball +#flags spell projectile area fire +#mods + +#skill MonsterWarlordsMark Warlord's Mark +#flags spell curse area duration +#mods + +#skill NecromancerConductivity Conductivity +#flags spell curse area duration lightning +#mods + +#skill NecromancerElementalWeakness Elemental Weakness +#flags spell curse area duration +#mods + +#skill NecromancerEnfeeble Enfeeble +#flags spell curse area duration +#mods + +#skill NecromancerFlammability Flammability +#flags spell curse area duration fire +#mods + +#skill NecromancerFrostbite Frostbite +#flags spell curse area duration cold +#mods + +#skill NecromancerProjectileWeakness Projectile Weakness +#flags spell curse area duration +#mods + +#skill NecromancerRaiseZombie Raise Zombie +#flags spell minion +#mods + +#skill NecromancerVulnerability Vulnerability +#flags spell curse area duration +#mods + +#skill PyroChaosFireball Chaos Fireball +#flags spell projectile area fire +#mods + +#skill PyroFireball Fireball +#flags spell projectile area fire +#mods + +#skill PyroSuicideExplosion Suicide Explosion +#flags spell area +#mods + +#skill RevenantSpellProjectileSpectre Lightning Projectile +#flags spell projectile +#mods + +#skill SeaWitchScreech Screech +#flags spell duration area +#global Debuff +#mods + +#skill SeaWitchWave Wave +#flags spell +#mods + +#skill SkeletonMassBowProjectile Puncture +#flags attack melee projectile +#baseMod mod("BleedChance", "BASE", 100) +#mods + +#skill SkeletonSpark Spark +#flags spell projectile duration lightning +#mods + +#skill SkeletonTemporalChains Temporal Chains +#flags spell curse area duration +#mods + +#skill SkeletonVulnerability Vulnerability +#flags spell curse area duration +#mods + +#skill SnakeSpineProjectile Spine Attack +#flags attack projectile +#mods + +#skill UndyingWhirlingBlades Whirling Blades +#flags attack melee movement +#mods \ No newline at end of file diff --git a/Export/Gems/statmap.ini b/Export/Skills/statmap.ini similarity index 90% rename from Export/Gems/statmap.ini rename to Export/Skills/statmap.ini index 7c652e8a..e1e9e681 100644 --- a/Export/Gems/statmap.ini +++ b/Export/Skills/statmap.ini @@ -80,6 +80,13 @@ mod = skill("triggered", true, { type = "SkillType", skillType = SkillType.Trigg mod = skill("doubleHitsWhenDualWielding", true) [base_spell_repeat_count] mod = skill("repeatCount", {val}) +[display_minion_monster_level] +mod = skill("minionLevel", {val}) +[active_skill_minion_added_damage_+%_final] +mod = skill("minionDamageEffectiveness", {val}) +[base_bleed_on_hit_still_%_of_physical_damage_to_deal_per_minute] +mod = skill("bleedBasePercent", {val}) +div = 60 # # Defensive modifiers @@ -146,7 +153,7 @@ mod = mod("ManaLeechRate", "INC", {val}) # # Offensive modifiers # -# Speed +# AoE [base_skill_area_of_effect_+%] mod = mod("AreaOfEffect", "INC", {val}) [base_aura_area_of_effect_+%] @@ -202,9 +209,9 @@ mod = mod("Damage", "MORE", {val}, ModFlag.Area) [physical_damage_+%_per_frenzy_charge] mod = mod("PhysicalDamage", "INC", {val}, 0, 0, { type = "Multiplier", var = "FrenzyCharge" }) [melee_damage_vs_bleeding_enemies_+%] -mod = mod("PhysicalDamage", "INC", {val}, ModFlag.Melee, 0, { type = "Condition", var = "EnemyBleeding" }) +mod = mod("PhysicalDamage", "INC", {val}, ModFlag.Melee, 0, { type = "EnemyCondition", var = "Bleeding" }) [damage_+%_vs_frozen_enemies] -mod = mod("Damage", "INC", {val}, ModFlag.Hit, 0, { type = "Condition", var = "EnemyFrozen" }) +mod = mod("Damage", "INC", {val}, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Frozen" }) [base_reduce_enemy_fire_resistance_%] mod = mod("FirePenetration", "BASE", {val}) [base_reduce_enemy_cold_resistance_%] @@ -260,7 +267,7 @@ mod = mod("EnemyShockChance", "BASE", {val}) [base_chance_to_freeze_%] mod = mod("EnemyFreezeChance", "BASE", {val}) [additional_chance_to_freeze_chilled_enemies_%] -mod = mod("EnemyFreezeChance", "BASE", {val}, ModFlag.Hit, 0, { type = "Condition", var = "EnemyChilled" }) +mod = mod("EnemyFreezeChance", "BASE", {val}, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Chilled" }) [ignite_duration_+%] mod = mod("EnemyIgniteDuration", "INC", {val}) [shock_duration_+%] @@ -400,6 +407,8 @@ mod = mod("ChaosMax", "BASE", {val}, ModFlag.Attack, 0, {global}) # [base_cast_speed_+%] mod = mod("Speed", "INC", {val}, ModFlag.Cast) +[active_skill_cast_speed_+%_final] +mod = mod("Speed", "MORE", {val}, ModFlag.Cast) [spell_damage_+%] mod = mod("Damage", "INC", {val}, ModFlag.Spell, 0, {global}) [spell_minimum_added_physical_damage] @@ -455,9 +464,37 @@ mod = mod("ActiveTotemLimit", "BASE", {val}) mod = mod("TotemPlacementSpeed", "INC", {val}) # Minion [minion_damage_+%] -mod = mod("Damage", "INC", {val}, 0, KeywordFlag.Minion) +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", {val}) }) [minion_maximum_life_+%] -mod = mod("MinionLife", "INC", {val}) +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", {val}) }) +[minion_movement_speed_+%] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", {val}) }) +[minion_attack_speed_+%] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Speed", "INC", {val}, ModFlag.Attack) }) +[minion_cast_speed_+%] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Speed", "INC", {val}, ModFlag.Cast) }) +[minion_elemental_resistance_%] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("ElementalResist", "BASE", {val}) }) +[base_number_of_zombies_allowed] +mod = mod("ActiveZombieLimit", "BASE", {val}) +[base_number_of_skeletons_allowed] +mod = mod("ActiveSkeletonLimit", "BASE", {val}) +[base_number_of_raging_spirits_allowed] +mod = mod("ActiveRagingSpiritLimit", "BASE", {val}) +[base_number_of_golems_allowed] +mod = mod("ActiveGolemLimit", "BASE", {val}) +[base_number_of_spectres_allowed] +mod = mod("ActiveSpectreLimit", "BASE", {val}) +[number_of_wolves_allowed] +mod = mod("ActiveWolfLimit", "BASE", {val}) +[active_skill_minion_damage_+%_final] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", {val}) }) +[active_skill_minion_life_+%_final] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "MORE", {val}) }) +[active_skill_minion_energy_shield_+%_final] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("EnergyShield", "MORE", {val}) }) +[active_skill_minion_movement_velocity_+%_final] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "MORE", {val}) }) # Curse [curse_effect_+%] mod = mod("CurseEffect", "INC", {val}) @@ -516,7 +553,7 @@ mod = skill("FireMin", {val}) mod = skill("FireMax", {val}) # Flame Surge [flame_whip_damage_+%_final_vs_burning_enemies] -mod = mod("Damage", "MORE", {val}, bit.bor(ModFlag.Spell, ModFlag.Hit), 0, { type = "Condition", var = "EnemyBurning" }) +mod = mod("Damage", "MORE", {val}, bit.bor(ModFlag.Spell, ModFlag.Hit), 0, { type = "EnemyCondition", var = "Burning" }) # Flicker Strike [flicker_strike_more_attack_speed_+%_final] mod = mod("Speed", "MORE", {val}, ModFlag.Attack) @@ -590,7 +627,7 @@ mod = mod("LightningDamage", "MORE", {val}, ModFlag.Spell, 0, { type = "GlobalEf # # Bloodlust [support_bloodlust_melee_physical_damage_+%_final_vs_bleeding_enemies] -mod = mod("PhysicalDamage", "MORE", {val}, ModFlag.Melee, 0, { type = "Condition", var = "EnemyBleeding" }) +mod = mod("PhysicalDamage", "MORE", {val}, ModFlag.Melee, 0, { type = "EnemyCondition", var = "Bleeding" }) # Cats on Critical Strike [support_cast_on_crit_spell_damage_+%_final] mod = mod("Damage", "MORE", {val}, ModFlag.Spell) @@ -648,7 +685,7 @@ mod = skill("auraCannotAffectSelf", true) mod = mod("Damage", "MORE", {val}, ModFlag.Projectile) # Hypothermia [support_hypothermia_damage_+%_vs_chilled_enemies_final] -mod = mod("Damage", "MORE", {val}, ModFlag.Hit, 0, { type = "Condition", var = "EnemyChilled" }) +mod = mod("Damage", "MORE", {val}, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Chilled" }) # Lesser Multiple Projectiles [support_lesser_multiple_projectile_damage_+%_final] mod = mod("Damage", "MORE", {val}, ModFlag.Projectile) @@ -669,9 +706,12 @@ mod = mod("AreaOfEffect", "MORE", {val}) # Minefield [support_minefield_mine_damage_+%_final] mod = mod("Damage", "MORE", {val}) +# Minion Damage +[support_minion_damage_+%_final] +mod = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", {val}) }) # Minion and Totem Elemental Resistance [support_minion_totem_resistance_elemental_damage_+%_final] -mod = mod("ElementalDamage", "MORE", {val}, 0, bit.bor(KeywordFlag.Minion, KeywordFlag.Totem)) +mod = { mod("ElementalDamage", "MORE", {val}, 0, KeywordFlag.Totem), mod("Misc", "LIST", { type = "MinionModifier", mod = mod("ElementalDamage", "MORE", {val}) }) } # Multiple Traps [support_multithrow_damage_+%_final] mod = mod("Damage", "MORE", {val}) @@ -726,4 +766,11 @@ mod = mod("Damage", "MORE", {val}, 0, bit.bor(KeywordFlag.Trap, KeywordFlag.Mine mod = mod("ChaosDamage", "MORE", {val}) # Wehdu [support_weapon_elemental_damage_+%_final] -mod = mod("ElementalDamage", "MORE", {val}, ModFlag.Weapon) \ No newline at end of file +mod = mod("ElementalDamage", "MORE", {val}, ModFlag.Weapon) + +# +# Monster skills +# +[whirling_blades_base_ground_fire_damage_to_deal_per_minute] +mod = skill("FireDot", {val}) +div = 60 \ No newline at end of file diff --git a/Export/Gems/sup_dex.lua b/Export/Skills/sup_dex.lua similarity index 87% rename from Export/Gems/sup_dex.lua rename to Export/Skills/sup_dex.lua index f92eb2e1..49e05227 100644 --- a/Export/Gems/sup_dex.lua +++ b/Export/Skills/sup_dex.lua @@ -1,13 +1,17 @@ -- Path of Building -- -- Dexterity support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Cold Damage"] = { - cold = true, - dexterity = true, +skills["SupportAddedColdDamage"] = { + name = "Added Cold Damage", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 10, }, @@ -56,9 +60,13 @@ gems["Added Cold Damage"] = { [30] = { 298, 447, }, }, } -gems["Additional Accuracy"] = { - attack = true, - dexterity = true, +skills["SupportAdditionalAccuracy"] = { + name = "Additional Accuracy", + gemTags = { + attack = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 56, }, @@ -105,8 +113,12 @@ gems["Additional Accuracy"] = { [30] = { 1594, }, }, } -gems["Blind"] = { - dexterity = true, +skills["SupportBlind"] = { + name = "Blind", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -154,8 +166,12 @@ gems["Blind"] = { [30] = { 58, }, }, } -gems["Block Chance Reduction"] = { - dexterity = true, +skills["SupportBlockReduction"] = { + name = "Block Chance Reduction", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -203,17 +219,22 @@ gems["Block Chance Reduction"] = { [30] = { 35, 34, }, }, } -gems["Cast On Critical Strike"] = { - dexterity = true, +skills["SupportCastOnCrit"] = { + name = "Cast On Critical Strike", + gemTags = { + dexterity = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 2, requireSkillTypes = { 1, 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { mod("ManaCost", "MORE", 40), + skill("cooldown", 0.5), --"cast_linked_spells_on_attack_crit_%" = 100 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? skill("showAverage", true, { type = "SkillType", skillType = 36 }), @@ -257,11 +278,15 @@ gems["Cast On Critical Strike"] = { [30] = { 49, }, }, } -gems["Cast on Death"] = { - dexterity = true, +skills["SupportCastOnDeath"] = { + name = "Cast on Death", + gemTags = { + dexterity = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 2, requireSkillTypes = { 36, }, addSkillTypes = { 42, }, @@ -311,11 +336,15 @@ gems["Cast on Death"] = { [30] = { 464, }, }, } -gems["Chain"] = { - dexterity = true, +skills["SupportChain"] = { + name = "Chain", + gemTags = { + dexterity = true, + support = true, + chaining = true, + projectile = true, + }, support = true, - chaining = true, - projectile = true, color = 2, requireSkillTypes = { 23, 3, 54, 56, }, addSkillTypes = { }, @@ -363,8 +392,12 @@ gems["Chain"] = { [30] = { -21, }, }, } -gems["Chance to Flee"] = { - dexterity = true, +skills["SupportChanceToFlee"] = { + name = "Chance to Flee", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 10, }, @@ -411,9 +444,13 @@ gems["Chance to Flee"] = { [30] = { 54, }, }, } -gems["Cluster Traps"] = { - trap = true, - dexterity = true, +skills["SupportClusterTrap"] = { + name = "Cluster Traps", + gemTags = { + trap = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 37, }, @@ -464,9 +501,13 @@ gems["Cluster Traps"] = { [30] = { -26, }, }, } -gems["Cold Penetration"] = { - cold = true, - dexterity = true, +skills["SupportColdPenetration"] = { + name = "Cold Penetration", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -514,8 +555,12 @@ gems["Cold Penetration"] = { [30] = { 47, }, }, } -gems["Culling Strike"] = { - dexterity = true, +skills["SupportCullingStrike"] = { + name = "Culling Strike", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -567,9 +612,13 @@ gems["Culling Strike"] = { [30] = { 58, }, }, } -gems["Enhance"] = { - low_max_level = true, - dexterity = true, +skills["SupportAdditionalQuality"] = { + name = "Enhance", + gemTags = { + low_max_level = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { }, @@ -597,9 +646,13 @@ gems["Enhance"] = { [10] = { 72, }, }, } -gems["Faster Attacks"] = { - attack = true, - dexterity = true, +skills["SupportFasterAttack"] = { + name = "Faster Attacks", + gemTags = { + attack = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 1, 56, }, @@ -647,10 +700,14 @@ gems["Faster Attacks"] = { [30] = { 54, }, }, } -gems["Faster Projectiles"] = { - dexterity = true, +skills["SupportFasterProjectiles"] = { + name = "Faster Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 14, 54, 56, }, addSkillTypes = { }, @@ -699,10 +756,14 @@ gems["Faster Projectiles"] = { [30] = { 79, 34, }, }, } -gems["Fork"] = { - dexterity = true, +skills["SupportFork"] = { + name = "Fork", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -750,10 +811,14 @@ gems["Fork"] = { [30] = { -1, }, }, } -gems["Greater Multiple Projectiles"] = { - dexterity = true, +skills["SupportGreaterMultipleProjectiles"] = { + name = "Greater Multiple Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -803,9 +868,13 @@ gems["Greater Multiple Projectiles"] = { [30] = { -21, }, }, } -gems["Hypothermia"] = { - cold = true, - dexterity = true, +skills["SupportDamageAgainstChilled"] = { + name = "Hypothermia", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -813,13 +882,13 @@ gems["Hypothermia"] = { excludeSkillTypes = { }, baseMods = { mod("ManaCost", "MORE", 20), - mod("EnemyFreezeChance", "BASE", 10, ModFlag.Hit, 0, { type = "Condition", var = "EnemyChilled" }), --"additional_chance_to_freeze_chilled_enemies_%" = 10 + mod("EnemyFreezeChance", "BASE", 10, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Chilled" }), --"additional_chance_to_freeze_chilled_enemies_%" = 10 }, qualityMods = { mod("EnemyChillDuration", "INC", 1.5), --"chill_duration_+%" = 1.5 }, levelMods = { - [1] = mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "EnemyChilled" }), --"support_hypothermia_damage_+%_vs_chilled_enemies_final" + [1] = mod("Damage", "MORE", nil, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Chilled" }), --"support_hypothermia_damage_+%_vs_chilled_enemies_final" }, levels = { [1] = { 20, }, @@ -854,9 +923,13 @@ gems["Hypothermia"] = { [30] = { 49, }, }, } -gems["Ice Bite"] = { - cold = true, - dexterity = true, +skills["SupportFrenzyChargeOnSlayingFrozenEnemy"] = { + name = "Ice Bite", + gemTags = { + cold = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -867,7 +940,7 @@ gems["Ice Bite"] = { mod("EnemyFreezeChance", "BASE", 15), --"base_chance_to_freeze_%" = 15 }, qualityMods = { - mod("Damage", "INC", 1, ModFlag.Hit, 0, { type = "Condition", var = "EnemyFrozen" }), --"damage_+%_vs_frozen_enemies" = 1 + mod("Damage", "INC", 1, ModFlag.Hit, 0, { type = "EnemyCondition", var = "Frozen" }), --"damage_+%_vs_frozen_enemies" = 1 }, levelMods = { --[1] = "chance_to_gain_frenzy_charge_on_killing_frozen_enemy_%" @@ -905,10 +978,14 @@ gems["Ice Bite"] = { [30] = { 79, }, }, } -gems["Lesser Multiple Projectiles"] = { - dexterity = true, +skills["SupportLesserMultipleProjectiles"] = { + name = "Lesser Multiple Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -958,8 +1035,12 @@ gems["Lesser Multiple Projectiles"] = { [30] = { -11, }, }, } -gems["Mana Leech"] = { - dexterity = true, +skills["SupportManaLeech"] = { + name = "Mana Leech", + gemTags = { + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -1007,10 +1088,14 @@ gems["Mana Leech"] = { [30] = { 58, }, }, } -gems["Multiple Traps"] = { - dexterity = true, +skills["SupportMultiTrap"] = { + name = "Multiple Traps", + gemTags = { + dexterity = true, + support = true, + trap = true, + }, support = true, - trap = true, color = 2, requireSkillTypes = { 37, }, addSkillTypes = { }, @@ -1059,9 +1144,13 @@ gems["Multiple Traps"] = { [30] = { -11, }, }, } -gems["Physical Projectile Attack Damage"] = { - projectile = true, - dexterity = true, +skills["SupportPhysicalProjectileAttackDamage"] = { + name = "Physical Projectile Attack Damage", + gemTags = { + projectile = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 48, 56, }, @@ -1110,10 +1199,14 @@ gems["Physical Projectile Attack Damage"] = { [30] = { 59, }, }, } -gems["Pierce"] = { - dexterity = true, +skills["SupportPierce"] = { + name = "Pierce", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 54, 56, }, addSkillTypes = { }, @@ -1161,10 +1254,14 @@ gems["Pierce"] = { [30] = { 24, }, }, } -gems["Point Blank"] = { - projectile = true, - attack = true, - dexterity = true, +skills["SupportPointBlank"] = { + name = "Point Blank", + gemTags = { + projectile = true, + attack = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 48, 56, }, @@ -1213,9 +1310,13 @@ gems["Point Blank"] = { [30] = { 58, }, }, } -gems["Poison"] = { - chaos = true, - dexterity = true, +skills["SupportPoison"] = { + name = "Poison", + gemTags = { + chaos = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, }, @@ -1264,10 +1365,14 @@ gems["Poison"] = { [30] = { 58, }, }, } -gems["Rapid Decay"] = { - dexterity = true, +skills["SupportRapidDecay"] = { + name = "Rapid Decay", + gemTags = { + dexterity = true, + support = true, + duration = true, + }, support = true, - duration = true, color = 2, requireSkillTypes = { 12, 55, }, addSkillTypes = { }, @@ -1315,10 +1420,14 @@ gems["Rapid Decay"] = { [30] = { 49, }, }, } -gems["Slower Projectiles"] = { - dexterity = true, +skills["SupportSlowerProjectiles"] = { + name = "Slower Projectiles", + gemTags = { + dexterity = true, + support = true, + projectile = true, + }, support = true, - projectile = true, color = 2, requireSkillTypes = { 3, 14, 54, 56, }, addSkillTypes = { }, @@ -1366,11 +1475,15 @@ gems["Slower Projectiles"] = { [30] = { -59, 34, }, }, } -gems["Trap"] = { - dexterity = true, +skills["SupportTrap"] = { + name = "Trap", + gemTags = { + dexterity = true, + support = true, + trap = true, + duration = true, + }, support = true, - trap = true, - duration = true, addFlags = { trap = true, duration = true, @@ -1381,6 +1494,7 @@ gems["Trap"] = { excludeSkillTypes = { 61, }, baseMods = { mod("ManaCost", "MORE", 40), + skill("cooldown", 4), --"is_trap" = 1 --"base_trap_duration" = 16000 --"trap_override_pvp_scaling_time_ms" = 900 @@ -1428,9 +1542,13 @@ gems["Trap"] = { [30] = { 49, }, }, } -gems["Trap Cooldown"] = { - trap = true, - dexterity = true, +skills["SupportTrapCooldown"] = { + name = "Trap Cooldown", + gemTags = { + trap = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 37, }, @@ -1478,11 +1596,15 @@ gems["Trap Cooldown"] = { [30] = { 59, }, }, } -gems["Trap and Mine Damage"] = { - dexterity = true, +skills["SupportTrapAndMineDamage"] = { + name = "Trap and Mine Damage", + gemTags = { + dexterity = true, + support = true, + trap = true, + mine = true, + }, support = true, - trap = true, - mine = true, color = 2, requireSkillTypes = { 37, 41, }, addSkillTypes = { }, @@ -1531,9 +1653,13 @@ gems["Trap and Mine Damage"] = { [30] = { 49, }, }, } -gems["Void Manipulation"] = { - chaos = true, - dexterity = true, +skills["SupportVoidManipulation"] = { + name = "Void Manipulation", + gemTags = { + chaos = true, + dexterity = true, + support = true, + }, support = true, color = 2, requireSkillTypes = { 10, 1, 40, }, @@ -1581,4 +1707,4 @@ gems["Void Manipulation"] = { [29] = { 48, }, [30] = { 49, }, }, -} +} \ No newline at end of file diff --git a/Export/Gems/sup_dex.txt b/Export/Skills/sup_dex.txt similarity index 56% rename from Export/Gems/sup_dex.txt rename to Export/Skills/sup_dex.txt index 7742dd6b..e7d88959 100644 --- a/Export/Gems/sup_dex.txt +++ b/Export/Skills/sup_dex.txt @@ -1,120 +1,92 @@ -- Path of Building -- -- Dexterity support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Cold Damage"] = { #skill SupportAddedColdDamage #mods -} -gems["Additional Accuracy"] = { + #skill SupportAdditionalAccuracy #mods -} -gems["Blind"] = { + #skill SupportBlind #mods -} -gems["Block Chance Reduction"] = { + #skill SupportBlockReduction #mods -} -gems["Cast On Critical Strike"] = { + #skill SupportCastOnCrit #baseMod skill("showAverage", true, { type = "SkillType", skillType = 36 }) #mods -} -gems["Cast on Death"] = { + #skill SupportCastOnDeath #mods -} -gems["Chain"] = { + #skill SupportChain #mods -} -gems["Chance to Flee"] = { + #skill SupportChanceToFlee #mods -} -gems["Cluster Traps"] = { + #skill SupportClusterTrap #mods -} -gems["Cold Penetration"] = { + #skill SupportColdPenetration #mods -} -gems["Culling Strike"] = { + #skill SupportCullingStrike #mods -} -gems["Enhance"] = { + #skill SupportAdditionalQuality #mods -} -gems["Faster Attacks"] = { + #skill SupportFasterAttack #mods -} -gems["Faster Projectiles"] = { + #skill SupportFasterProjectiles #mods -} -gems["Fork"] = { + #skill SupportFork #mods -} -gems["Greater Multiple Projectiles"] = { + #skill SupportGreaterMultipleProjectiles #mods -} -gems["Hypothermia"] = { + #skill SupportDamageAgainstChilled #mods -} -gems["Ice Bite"] = { + #skill SupportFrenzyChargeOnSlayingFrozenEnemy #mods -} -gems["Lesser Multiple Projectiles"] = { + #skill SupportLesserMultipleProjectiles #mods -} -gems["Mana Leech"] = { + #skill SupportManaLeech #mods -} -gems["Multiple Traps"] = { + #skill SupportMultiTrap #mods -} -gems["Physical Projectile Attack Damage"] = { + #skill SupportPhysicalProjectileAttackDamage #mods -} -gems["Pierce"] = { + #skill SupportPierce #mods -} -gems["Point Blank"] = { + #skill SupportPointBlank #mods -} -gems["Poison"] = { + #skill SupportPoison #mods -} -gems["Rapid Decay"] = { + #skill SupportRapidDecay #mods -} -gems["Slower Projectiles"] = { + #skill SupportSlowerProjectiles #mods -} -gems["Trap"] = { + #skill SupportTrap #baseMod skill("trapCooldown", 4) addFlags = { @@ -122,16 +94,12 @@ gems["Trap"] = { duration = true, }, #mods -} -gems["Trap Cooldown"] = { + #skill SupportTrapCooldown #mods -} -gems["Trap and Mine Damage"] = { + #skill SupportTrapAndMineDamage #mods -} -gems["Void Manipulation"] = { + #skill SupportVoidManipulation #mods -} diff --git a/Export/Gems/sup_int.lua b/Export/Skills/sup_int.lua similarity index 76% rename from Export/Gems/sup_int.lua rename to Export/Skills/sup_int.lua index 7ea0023b..98eb5f88 100644 --- a/Export/Gems/sup_int.lua +++ b/Export/Skills/sup_int.lua @@ -1,13 +1,17 @@ -- Path of Building -- -- Intelligence support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Chaos Damage"] = { - chaos = true, - intelligence = true, +skills["SupportAddedChaosDamage"] = { + name = "Added Chaos Damage", + gemTags = { + chaos = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -56,9 +60,13 @@ gems["Added Chaos Damage"] = { [30] = { 485, 728, }, }, } -gems["Added Lightning Damage"] = { - lightning = true, - intelligence = true, +skills["SupportAddedLightningDamage"] = { + name = "Added Lightning Damage", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 1, 10, }, @@ -107,17 +115,22 @@ gems["Added Lightning Damage"] = { [30] = { 47, 897, }, }, } -gems["Blasphemy"] = { - intelligence = true, +skills["SupportBlasphemy"] = { + name = "Blasphemy", + gemTags = { + intelligence = true, + support = true, + curse = true, + aura = true, + }, support = true, - curse = true, - aura = true, color = 3, requireSkillTypes = { 32, }, addSkillTypes = { 15, 16, 31, 44, }, excludeSkillTypes = { }, baseMods = { skill("manaCostOverride", 35), + skill("cooldown", 0.5), --"curse_apply_as_aura" = ? }, qualityMods = { @@ -159,16 +172,21 @@ gems["Blasphemy"] = { [30] = { 116, }, }, } -gems["Cast when Stunned"] = { - intelligence = true, +skills["SupportCastOnStunned"] = { + name = "Cast when Stunned", + gemTags = { + intelligence = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 3, requireSkillTypes = { 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { + skill("cooldown", 0.25), skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? }, @@ -211,11 +229,15 @@ gems["Cast when Stunned"] = { [30] = { 79, }, }, } -gems["Cast while Channelling"] = { - intelligence = true, +skills["SupportCastWhileChannelling"] = { + name = "Cast while Channelling", + gemTags = { + intelligence = true, + support = true, + channelling = true, + spell = true, + }, support = true, - channelling = true, - spell = true, color = 3, requireSkillTypes = { 58, 36, }, addSkillTypes = { }, @@ -264,9 +286,13 @@ gems["Cast while Channelling"] = { [30] = { 0.3, 14, }, }, } -gems["Chance to Ignite"] = { - fire = true, - intelligence = true, +skills["SupportChanceToIgnite"] = { + name = "Chance to Ignite", + gemTags = { + fire = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -314,10 +340,14 @@ gems["Chance to Ignite"] = { [30] = { 59, }, }, } -gems["Concentrated Effect"] = { - intelligence = true, +skills["SupportConcentratedEffect"] = { + name = "Concentrated Effect", + gemTags = { + intelligence = true, + support = true, + area = true, + }, support = true, - area = true, color = 3, requireSkillTypes = { 11, 21, 53, }, addSkillTypes = { }, @@ -365,9 +395,13 @@ gems["Concentrated Effect"] = { [30] = { 64, }, }, } -gems["Controlled Destruction"] = { - spell = true, - intelligence = true, +skills["SupportControlledDestruction"] = { + name = "Controlled Destruction", + gemTags = { + spell = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, 59, }, @@ -416,10 +450,14 @@ gems["Controlled Destruction"] = { [30] = { 54, }, }, } -gems["Curse On Hit"] = { - curse = true, - trigger = true, - intelligence = true, +skills["SupportCurseOnHit"] = { + name = "Curse On Hit", + gemTags = { + curse = true, + trigger = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 1, 10, 32, }, @@ -468,8 +506,12 @@ gems["Curse On Hit"] = { [30] = { 8, }, }, } -gems["Elemental Focus"] = { - intelligence = true, +skills["SupportElementalFocus"] = { + name = "Elemental Focus", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, 29, }, @@ -522,13 +564,17 @@ gems["Elemental Focus"] = { [30] = { 59, }, }, } -gems["Elemental Proliferation"] = { - cold = true, - fire = true, - lightning = true, - intelligence = true, +skills["SupportElementalProliferation"] = { + name = "Elemental Proliferation", + gemTags = { + cold = true, + fire = true, + lightning = true, + intelligence = true, + support = true, + area = true, + }, support = true, - area = true, color = 3, requireSkillTypes = { 10, 1, 20, }, addSkillTypes = { 11, }, @@ -580,9 +626,13 @@ gems["Elemental Proliferation"] = { [30] = { -16, }, }, } -gems["Enlighten"] = { - low_max_level = true, - intelligence = true, +skills["SupportAdditionalXP"] = { + name = "Enlighten", + gemTags = { + low_max_level = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { }, @@ -609,10 +659,14 @@ gems["Enlighten"] = { [10] = { -36, }, }, } -gems["Faster Casting"] = { - intelligence = true, +skills["SupportFasterCast"] = { + name = "Faster Casting", + gemTags = { + intelligence = true, + support = true, + spell = true, + }, support = true, - spell = true, color = 3, requireSkillTypes = { 2, 39, }, addSkillTypes = { }, @@ -659,10 +713,14 @@ gems["Faster Casting"] = { [30] = { 49, }, }, } -gems["Increased Area of Effect"] = { - intelligence = true, +skills["SupportIncreasedAreaOfEffect"] = { + name = "Increased Area of Effect", + gemTags = { + intelligence = true, + support = true, + area = true, + }, support = true, - area = true, color = 3, requireSkillTypes = { 11, 21, 53, }, addSkillTypes = { }, @@ -709,8 +767,12 @@ gems["Increased Area of Effect"] = { [30] = { 59, }, }, } -gems["Increased Critical Damage"] = { - intelligence = true, +skills["SupportIncreasedCriticalDamage"] = { + name = "Increased Critical Damage", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -758,8 +820,12 @@ gems["Increased Critical Damage"] = { [30] = { 118, }, }, } -gems["Increased Critical Strikes"] = { - intelligence = true, +skills["SupportIncreasedCriticalStrikes"] = { + name = "Increased Critical Strikes", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -808,9 +874,13 @@ gems["Increased Critical Strikes"] = { [30] = { 108, 2.4, }, }, } -gems["Innervate"] = { - lightning = true, - intelligence = true, +skills["SupportOnslaughtOnSlayingShockedEnemy"] = { + name = "Innervate", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -859,8 +929,12 @@ gems["Innervate"] = { [30] = { 7900, }, }, } -gems["Item Rarity"] = { - intelligence = true, +skills["SupportItemRarity"] = { + name = "Item Rarity", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, 40, }, @@ -907,9 +981,13 @@ gems["Item Rarity"] = { [30] = { 69, }, }, } -gems["Lightning Penetration"] = { - lightning = true, - intelligence = true, +skills["SupportLightningPenetration"] = { + name = "Lightning Penetration", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -957,10 +1035,14 @@ gems["Lightning Penetration"] = { [30] = { 47, }, }, } -gems["Minefield"] = { - intelligence = true, +skills["SupportMinefield"] = { + name = "Minefield", + gemTags = { + intelligence = true, + support = true, + mine = true, + }, support = true, - mine = true, color = 3, requireSkillTypes = { 41, }, addSkillTypes = { }, @@ -1009,29 +1091,179 @@ gems["Minefield"] = { [30] = { -11, }, }, } -gems["Minion Damage"] = { - intelligence = true, +skills["SupportMinionDamage"] = { + name = "Minion Damage", + gemTags = { + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, - unsupported = true, + color = 3, + requireSkillTypes = { 9, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + baseMods = { + mod("ManaCost", "MORE", 30), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 0.75) }), --"minion_damage_+%" = 0.75 + }, + levelMods = { + [1] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "MORE", nil) }), --"support_minion_damage_+%_final" + }, + levels = { + [1] = { 30, }, + [2] = { 31, }, + [3] = { 32, }, + [4] = { 33, }, + [5] = { 34, }, + [6] = { 35, }, + [7] = { 36, }, + [8] = { 37, }, + [9] = { 38, }, + [10] = { 39, }, + [11] = { 40, }, + [12] = { 41, }, + [13] = { 42, }, + [14] = { 43, }, + [15] = { 44, }, + [16] = { 45, }, + [17] = { 46, }, + [18] = { 47, }, + [19] = { 48, }, + [20] = { 49, }, + [21] = { 50, }, + [22] = { 51, }, + [23] = { 52, }, + [24] = { 53, }, + [25] = { 54, }, + [26] = { 55, }, + [27] = { 56, }, + [28] = { 57, }, + [29] = { 58, }, + [30] = { 59, }, + }, } -gems["Minion Life"] = { - intelligence = true, +skills["SupportMinionLife"] = { + name = "Minion Life", + gemTags = { + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, - unsupported = true, + color = 3, + requireSkillTypes = { 9, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + baseMods = { + mod("ManaCost", "MORE", 40), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", 0.75) }), --"minion_maximum_life_+%" = 0.75 + }, + levelMods = { + [1] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Life", "INC", nil) }), --"minion_maximum_life_+%" + }, + levels = { + [1] = { 30, }, + [2] = { 31, }, + [3] = { 32, }, + [4] = { 33, }, + [5] = { 34, }, + [6] = { 35, }, + [7] = { 36, }, + [8] = { 37, }, + [9] = { 38, }, + [10] = { 39, }, + [11] = { 40, }, + [12] = { 41, }, + [13] = { 42, }, + [14] = { 43, }, + [15] = { 44, }, + [16] = { 45, }, + [17] = { 46, }, + [18] = { 47, }, + [19] = { 48, }, + [20] = { 49, }, + [21] = { 50, }, + [22] = { 51, }, + [23] = { 52, }, + [24] = { 53, }, + [25] = { 54, }, + [26] = { 55, }, + [27] = { 56, }, + [28] = { 57, }, + [29] = { 58, }, + [30] = { 59, }, + }, } -gems["Minion Speed"] = { - movement = true, - intelligence = true, +skills["SupportMinionSpeed"] = { + name = "Minion Speed", + gemTags = { + movement = true, + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, - unsupported = true, + color = 3, + requireSkillTypes = { 9, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + baseMods = { + mod("ManaCost", "MORE", 40), + }, + qualityMods = { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", 0.5) }), --"minion_movement_speed_+%" = 0.5 + }, + levelMods = { + [1] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("MovementSpeed", "INC", nil) }), --"minion_movement_speed_+%" + [2] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Speed", "INC", nil, ModFlag.Attack) }), --"minion_attack_speed_+%" + [3] = mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Speed", "INC", nil, ModFlag.Cast) }), --"minion_cast_speed_+%" + }, + levels = { + [1] = { 25, 10, 10, }, + [2] = { 26, 10, 10, }, + [3] = { 27, 11, 11, }, + [4] = { 28, 11, 11, }, + [5] = { 29, 12, 12, }, + [6] = { 30, 12, 12, }, + [7] = { 31, 13, 13, }, + [8] = { 32, 13, 13, }, + [9] = { 33, 14, 14, }, + [10] = { 34, 14, 14, }, + [11] = { 35, 15, 15, }, + [12] = { 36, 15, 15, }, + [13] = { 37, 16, 16, }, + [14] = { 38, 16, 16, }, + [15] = { 39, 17, 17, }, + [16] = { 40, 17, 17, }, + [17] = { 41, 18, 18, }, + [18] = { 42, 18, 18, }, + [19] = { 43, 19, 19, }, + [20] = { 44, 19, 19, }, + [21] = { 45, 20, 20, }, + [22] = { 46, 20, 20, }, + [23] = { 47, 21, 21, }, + [24] = { 48, 21, 21, }, + [25] = { 49, 22, 22, }, + [26] = { 50, 22, 22, }, + [27] = { 51, 23, 23, }, + [28] = { 52, 23, 23, }, + [29] = { 53, 24, 24, }, + [30] = { 54, 24, 24, }, + }, } -gems["Minion and Totem Elemental Resistance"] = { - intelligence = true, +skills["SupportSummonElementalResistances"] = { + name = "Minion and Totem Elemental Resistance", + gemTags = { + intelligence = true, + support = true, + minion = true, + }, support = true, - minion = true, color = 3, requireSkillTypes = { 9, 30, }, addSkillTypes = { }, @@ -1048,7 +1280,7 @@ gems["Minion and Totem Elemental Resistance"] = { --[1] = "summon_fire_resistance_+" --[2] = "summon_cold_resistance_+" --[3] = "summon_lightning_resistance_+" - [4] = mod("ElementalDamage", "MORE", nil, 0, bit.bor(KeywordFlag.Minion, KeywordFlag.Totem)), --"support_minion_totem_resistance_elemental_damage_+%_final" + [4] = { mod("ElementalDamage", "MORE", nil, 0, KeywordFlag.Totem), mod("Misc", "LIST", { type = "MinionModifier", mod = mod("ElementalDamage", "MORE", nil) }) }, --"support_minion_totem_resistance_elemental_damage_+%_final" }, levels = { [1] = { 25, 25, 25, 10, }, @@ -1083,9 +1315,13 @@ gems["Minion and Totem Elemental Resistance"] = { [30] = { 54, 54, 54, 24, }, }, } -gems["Physical to Lightning"] = { - lightning = true, - intelligence = true, +skills["SupportPhysicalToLightning"] = { + name = "Physical to Lightning", + gemTags = { + lightning = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -1135,8 +1371,12 @@ gems["Physical to Lightning"] = { [30] = { 39, }, }, } -gems["Power Charge On Critical"] = { - intelligence = true, +skills["SupportPowerChargeOnCrit"] = { + name = "Power Charge On Critical", + gemTags = { + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 10, 1, }, @@ -1184,11 +1424,15 @@ gems["Power Charge On Critical"] = { [30] = { 64, }, }, } -gems["Remote Mine"] = { - intelligence = true, +skills["SupportRemoteMine"] = { + name = "Remote Mine", + gemTags = { + intelligence = true, + support = true, + mine = true, + duration = true, + }, support = true, - mine = true, - duration = true, addFlags = { mine = true, duration = true, @@ -1245,9 +1489,13 @@ gems["Remote Mine"] = { [30] = { 59, }, }, } -gems["Spell Echo"] = { - spell = true, - intelligence = true, +skills["SupportMulticast"] = { + name = "Spell Echo", + gemTags = { + spell = true, + intelligence = true, + support = true, + }, support = true, color = 3, requireSkillTypes = { 26, }, @@ -1296,4 +1544,4 @@ gems["Spell Echo"] = { [29] = { 79, }, [30] = { 80, }, }, -} +} \ No newline at end of file diff --git a/Export/Gems/sup_int.txt b/Export/Skills/sup_int.txt similarity index 54% rename from Export/Gems/sup_int.txt rename to Export/Skills/sup_int.txt index d412b30e..693108e3 100644 --- a/Export/Gems/sup_int.txt +++ b/Export/Skills/sup_int.txt @@ -1,127 +1,98 @@ -- Path of Building -- -- Intelligence support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Chaos Damage"] = { #skill SupportAddedChaosDamage #mods -} -gems["Added Lightning Damage"] = { + #skill SupportAddedLightningDamage #mods -} -gems["Blasphemy"] = { + #skill SupportBlasphemy #mods -} -gems["Cast when Stunned"] = { + #skill SupportCastOnStunned #mods -} -gems["Cast while Channelling"] = { + #skill SupportCastWhileChannelling #mods -} -gems["Chance to Ignite"] = { + #skill SupportChanceToIgnite #mods -} -gems["Concentrated Effect"] = { + #skill SupportConcentratedEffect #mods -} -gems["Controlled Destruction"] = { + #skill SupportControlledDestruction #mods -} -gems["Curse On Hit"] = { + #skill SupportCurseOnHit #mods -} -gems["Elemental Focus"] = { + #skill SupportElementalFocus #baseMod flag("CannotShock") #baseMod flag("CannotChill") #baseMod flag("CannotFreeze") #baseMod flag("CannotIgnite") #mods -} -gems["Elemental Proliferation"] = { + #skill SupportElementalProliferation #mods -} -gems["Enlighten"] = { + #skill SupportAdditionalXP #mods -} -gems["Faster Casting"] = { + #skill SupportFasterCast #mods -} -gems["Increased Area of Effect"] = { + #skill SupportIncreasedAreaOfEffect #mods -} -gems["Increased Critical Damage"] = { + #skill SupportIncreasedCriticalDamage #mods -} -gems["Increased Critical Strikes"] = { + #skill SupportIncreasedCriticalStrikes #mods -} -gems["Innervate"] = { + #skill SupportOnslaughtOnSlayingShockedEnemy #mods -} -gems["Item Rarity"] = { + #skill SupportItemRarity #mods -} -gems["Lightning Penetration"] = { + #skill SupportLightningPenetration #mods -} -gems["Minefield"] = { + #skill SupportMinefield #mods -} -gems["Minion Damage"] = { + #skill SupportMinionDamage - unsupported = true, -} -gems["Minion Life"] = { +#mods + #skill SupportMinionLife - unsupported = true, -} -gems["Minion Speed"] = { +#mods + #skill SupportMinionSpeed - unsupported = true, -} -gems["Minion and Totem Elemental Resistance"] = { +#mods + #skill SupportSummonElementalResistances #mods -} -gems["Physical to Lightning"] = { + #skill SupportPhysicalToLightning #mods -} -gems["Power Charge On Critical"] = { + #skill SupportPowerChargeOnCrit #mods -} -gems["Remote Mine"] = { + #skill SupportRemoteMine addFlags = { mine = true, duration = true, }, #mods -} -gems["Spell Echo"] = { + #skill SupportMulticast #mods -} diff --git a/Data/Gems/sup_str.lua b/Export/Skills/sup_str.lua similarity index 87% rename from Data/Gems/sup_str.lua rename to Export/Skills/sup_str.lua index b0798305..6124d95b 100644 --- a/Data/Gems/sup_str.lua +++ b/Export/Skills/sup_str.lua @@ -1,13 +1,17 @@ -- Path of Building -- -- Strength support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Fire Damage"] = { - fire = true, - strength = true, +skills["SupportAddedFireDamage"] = { + name = "Added Fire Damage", + gemTags = { + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -55,8 +59,12 @@ gems["Added Fire Damage"] = { [30] = { 54, }, }, } -gems["Blood Magic"] = { - strength = true, +skills["SupportBloodMagic"] = { + name = "Blood Magic", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { }, @@ -104,11 +112,15 @@ gems["Blood Magic"] = { [30] = { 66, }, }, } -gems["Bloodlust"] = { - attack = true, - strength = true, +skills["SupportBloodlust"] = { + name = "Bloodlust", + gemTags = { + attack = true, + strength = true, + support = true, + melee = true, + }, support = true, - melee = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -118,10 +130,10 @@ gems["Bloodlust"] = { flag("CannotBleed"), --"cannot_cause_bleeding" = ? }, qualityMods = { - mod("PhysicalDamage", "INC", 0.5, ModFlag.Melee, 0, { type = "Condition", var = "EnemyBleeding" }), --"melee_damage_vs_bleeding_enemies_+%" = 0.5 + mod("PhysicalDamage", "INC", 0.5, ModFlag.Melee, 0, { type = "EnemyCondition", var = "Bleeding" }), --"melee_damage_vs_bleeding_enemies_+%" = 0.5 }, levelMods = { - [1] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "Condition", var = "EnemyBleeding" }), --"support_bloodlust_melee_physical_damage_+%_final_vs_bleeding_enemies" + [1] = mod("PhysicalDamage", "MORE", nil, ModFlag.Melee, 0, { type = "EnemyCondition", var = "Bleeding" }), --"support_bloodlust_melee_physical_damage_+%_final_vs_bleeding_enemies" }, levels = { [1] = { 40, }, @@ -156,19 +168,24 @@ gems["Bloodlust"] = { [30] = { 69, }, }, } -gems["Cast on Melee Kill"] = { - strength = true, +skills["SupportCastOnMeleeKill"] = { + name = "Cast on Melee Kill", + gemTags = { + strength = true, + support = true, + melee = true, + attack = true, + spell = true, + trigger = true, + }, support = true, - melee = true, - attack = true, - spell = true, - trigger = true, color = 1, requireSkillTypes = { 24, 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { mod("ManaCost", "MORE", 40), + skill("cooldown", 0.25), --"cast_linked_spells_on_melee_kill_%" = 100 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? }, @@ -211,16 +228,21 @@ gems["Cast on Melee Kill"] = { [30] = { 49, }, }, } -gems["Cast when Damage Taken"] = { - strength = true, +skills["SupportCastOnDamageTaken"] = { + name = "Cast when Damage Taken", + gemTags = { + strength = true, + support = true, + spell = true, + trigger = true, + }, support = true, - spell = true, - trigger = true, color = 1, requireSkillTypes = { 36, }, addSkillTypes = { 42, }, excludeSkillTypes = { 37, 41, 30, 44, 61, }, baseMods = { + skill("cooldown", 0.25), --"cast_on_damage_taken_%" = 100 skill("triggered", true, { type = "SkillType", skillType = SkillType.TriggerableSpell }), --"spell_uncastable_if_triggerable" = ? skill("showAverage", true), --"base_skill_show_average_damage_instead_of_dps" = ? @@ -266,10 +288,14 @@ gems["Cast when Damage Taken"] = { [30] = { 7990, 46, 90, }, }, } -gems["Cold to Fire"] = { - cold = true, - fire = true, - strength = true, +skills["SupportColdToFire"] = { + name = "Cold to Fire", + gemTags = { + cold = true, + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -319,9 +345,13 @@ gems["Cold to Fire"] = { [30] = { 39, }, }, } -gems["Empower"] = { - low_max_level = true, - strength = true, +skills["SupportAdditionalLevel"] = { + name = "Empower", + gemTags = { + low_max_level = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { }, @@ -349,11 +379,15 @@ gems["Empower"] = { [10] = { 9, }, }, } -gems["Endurance Charge on Melee Stun"] = { - strength = true, +skills["EnduranceChargeOnMeleeStun"] = { + name = "Endurance Charge on Melee Stun", + gemTags = { + strength = true, + support = true, + melee = true, + attack = true, + }, support = true, - melee = true, - attack = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -401,9 +435,13 @@ gems["Endurance Charge on Melee Stun"] = { [30] = { -29, }, }, } -gems["Fire Penetration"] = { - fire = true, - strength = true, +skills["SupportFirePenetration"] = { + name = "Fire Penetration", + gemTags = { + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -451,11 +489,15 @@ gems["Fire Penetration"] = { [30] = { 47, }, }, } -gems["Fortify"] = { - attack = true, - strength = true, +skills["SupportFortify"] = { + name = "Fortify", + gemTags = { + attack = true, + strength = true, + support = true, + melee = true, + }, support = true, - melee = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -504,10 +546,14 @@ gems["Fortify"] = { [30] = { 54, }, }, } -gems["Generosity"] = { - strength = true, +skills["SupportGenerosity"] = { + name = "Generosity", + gemTags = { + strength = true, + support = true, + aura = true, + }, support = true, - aura = true, color = 1, requireSkillTypes = { 44, }, addSkillTypes = { }, @@ -554,9 +600,13 @@ gems["Generosity"] = { [30] = { 49, }, }, } -gems["Increased Burning Damage"] = { - fire = true, - strength = true, +skills["SupportIncreasedBurningDamage"] = { + name = "Increased Burning Damage", + gemTags = { + fire = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, 29, }, @@ -604,10 +654,14 @@ gems["Increased Burning Damage"] = { [30] = { 69, }, }, } -gems["Increased Duration"] = { - strength = true, +skills["SupportIncreasedDuration"] = { + name = "Increased Duration", + gemTags = { + strength = true, + support = true, + duration = true, + }, support = true, - duration = true, color = 1, requireSkillTypes = { 12, 55, }, addSkillTypes = { }, @@ -654,9 +708,13 @@ gems["Increased Duration"] = { [30] = { 74, }, }, } -gems["Iron Grip"] = { - projectile = true, - strength = true, +skills["SupportIronGrip"] = { + name = "Iron Grip", + gemTags = { + projectile = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 48, 56, }, @@ -704,9 +762,13 @@ gems["Iron Grip"] = { [30] = { 58, }, }, } -gems["Iron Will"] = { - spell = true, - strength = true, +skills["SupportIronWill"] = { + name = "Iron Will", + gemTags = { + spell = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 52, 59, }, @@ -754,8 +816,12 @@ gems["Iron Will"] = { [30] = { 58, }, }, } -gems["Item Quantity"] = { - strength = true, +skills["SupportItemQuantity"] = { + name = "Item Quantity", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, 40, }, @@ -802,8 +868,12 @@ gems["Item Quantity"] = { [30] = { 46, }, }, } -gems["Knockback"] = { - strength = true, +skills["SupportKnockback"] = { + name = "Knockback", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -851,10 +921,14 @@ gems["Knockback"] = { [30] = { 54, }, }, } -gems["Less Duration"] = { - strength = true, +skills["SupportReducedDuration"] = { + name = "Less Duration", + gemTags = { + strength = true, + support = true, + duration = true, + }, support = true, - duration = true, color = 1, requireSkillTypes = { 12, 55, }, addSkillTypes = { }, @@ -902,9 +976,13 @@ gems["Less Duration"] = { [30] = { -54, 24, }, }, } -gems["Life Gain on Hit"] = { - attack = true, - strength = true, +skills["SupportLifeGainOnHit"] = { + name = "Life Gain on Hit", + gemTags = { + attack = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 1, 56, }, @@ -952,8 +1030,12 @@ gems["Life Gain on Hit"] = { [30] = { 64, }, }, } -gems["Life Leech"] = { - strength = true, +skills["SupportLifeLeech"] = { + name = "Life Leech", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -1002,11 +1084,15 @@ gems["Life Leech"] = { [30] = { 58, }, }, } -gems["Melee Damage on Full Life"] = { - melee = true, - strength = true, +skills["SupportMeleeDamageOnFullLife"] = { + name = "Melee Damage on Full Life", + gemTags = { + melee = true, + strength = true, + support = true, + attack = true, + }, support = true, - attack = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -1053,11 +1139,15 @@ gems["Melee Damage on Full Life"] = { [30] = { 59, }, }, } -gems["Melee Physical Damage"] = { - melee = true, - strength = true, +skills["SupportMeleePhysicalDamage"] = { + name = "Melee Physical Damage", + gemTags = { + melee = true, + strength = true, + support = true, + attack = true, + }, support = true, - attack = true, color = 1, requireSkillTypes = { 24, }, addSkillTypes = { }, @@ -1104,12 +1194,16 @@ gems["Melee Physical Damage"] = { [30] = { 59, }, }, } -gems["Melee Splash"] = { - strength = true, +skills["SupportMeleeSplash"] = { + name = "Melee Splash", + gemTags = { + strength = true, + support = true, + melee = true, + attack = true, + area = true, + }, support = true, - melee = true, - attack = true, - area = true, color = 1, requireSkillTypes = { 25, }, addSkillTypes = { 11, }, @@ -1159,10 +1253,14 @@ gems["Melee Splash"] = { [30] = { -21, 87, }, }, } -gems["Multistrike"] = { - attack = true, - melee = true, - strength = true, +skills["SupportMultistrike"] = { + name = "Multistrike", + gemTags = { + attack = true, + melee = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 28, }, @@ -1212,14 +1310,18 @@ gems["Multistrike"] = { [30] = { 104, }, }, } -gems["Ranged Attack Totem"] = { - bow = true, - projectile = true, - strength = true, +skills["SupportRangedAttackTotem"] = { + name = "Ranged Attack Totem", + gemTags = { + bow = true, + projectile = true, + strength = true, + support = true, + totem = true, + attack = true, + duration = true, + }, support = true, - totem = true, - attack = true, - duration = true, addFlags = { totem = true, }, @@ -1276,8 +1378,12 @@ gems["Ranged Attack Totem"] = { [30] = { 90, -21, }, }, } -gems["Reduced Mana"] = { - strength = true, +skills["SupportReducedMana"] = { + name = "Reduced Mana", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { }, @@ -1324,11 +1430,15 @@ gems["Reduced Mana"] = { [30] = { -39, }, }, } -gems["Spell Totem"] = { - strength = true, +skills["SupportSpellTotem"] = { + name = "Spell Totem", + gemTags = { + strength = true, + support = true, + totem = true, + duration = true, + }, support = true, - totem = true, - duration = true, addFlags = { totem = true, }, @@ -1384,8 +1494,12 @@ gems["Spell Totem"] = { [30] = { 90, -21, }, }, } -gems["Stun"] = { - strength = true, +skills["SupportStun"] = { + name = "Stun", + gemTags = { + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 10, 1, }, @@ -1432,9 +1546,13 @@ gems["Stun"] = { [30] = { -59, }, }, } -gems["Weapon Elemental Damage"] = { - attack = true, - strength = true, +skills["SupportWeaponElementalDamage"] = { + name = "Weapon Elemental Damage", + gemTags = { + attack = true, + strength = true, + support = true, + }, support = true, color = 1, requireSkillTypes = { 1, 56, }, @@ -1481,4 +1599,4 @@ gems["Weapon Elemental Damage"] = { [29] = { 68, }, [30] = { 69, }, }, -} +} \ No newline at end of file diff --git a/Export/Gems/sup_str.txt b/Export/Skills/sup_str.txt similarity index 54% rename from Export/Gems/sup_str.txt rename to Export/Skills/sup_str.txt index 4a211bb3..1fe0f0aa 100644 --- a/Export/Gems/sup_str.txt +++ b/Export/Skills/sup_str.txt @@ -1,129 +1,99 @@ -- Path of Building -- -- Strength support gems --- Skill gem data (c) Grinding Gear Games +-- Skill data (c) Grinding Gear Games -- -local gems, mod, flag, skill = ... +local skills, mod, flag, skill = ... -gems["Added Fire Damage"] = { #skill SupportAddedFireDamage #mods -} -gems["Blood Magic"] = { + #skill SupportBloodMagic #mods -} -gems["Bloodlust"] = { + #skill SupportBloodlust #mods -} -gems["Cast on Melee Kill"] = { + #skill SupportCastOnMeleeKill #mods -} -gems["Cast when Damage Taken"] = { + #skill SupportCastOnDamageTaken #mods -} -gems["Cold to Fire"] = { + #skill SupportColdToFire #mods -} -gems["Empower"] = { + #skill SupportAdditionalLevel #mods -} -gems["Endurance Charge on Melee Stun"] = { + #skill EnduranceChargeOnMeleeStun #mods -} -gems["Fire Penetration"] = { + #skill SupportFirePenetration #mods -} -gems["Fortify"] = { + #skill SupportFortify #mods -} -gems["Generosity"] = { + #skill SupportGenerosity #mods -} -gems["Increased Burning Damage"] = { + #skill SupportIncreasedBurningDamage #mods -} -gems["Increased Duration"] = { + #skill SupportIncreasedDuration #mods -} -gems["Iron Grip"] = { + #skill SupportIronGrip #mods -} -gems["Iron Will"] = { + #skill SupportIronWill #mods -} -gems["Item Quantity"] = { + #skill SupportItemQuantity #mods -} -gems["Knockback"] = { + #skill SupportKnockback #mods -} -gems["Less Duration"] = { + #skill SupportReducedDuration #mods -} -gems["Life Gain on Hit"] = { + #skill SupportLifeGainOnHit #mods -} -gems["Life Leech"] = { + #skill SupportLifeLeech #mods -} -gems["Melee Damage on Full Life"] = { + #skill SupportMeleeDamageOnFullLife #mods -} -gems["Melee Physical Damage"] = { + #skill SupportMeleePhysicalDamage #mods -} -gems["Melee Splash"] = { + #skill SupportMeleeSplash #mods -} -gems["Multistrike"] = { + #skill SupportMultistrike #mods -} -gems["Ranged Attack Totem"] = { + #skill SupportRangedAttackTotem addFlags = { totem = true, }, #mods -} -gems["Reduced Mana"] = { + #skill SupportReducedMana #mods -} -gems["Spell Totem"] = { + #skill SupportSpellTotem addFlags = { totem = true, }, #mods -} -gems["Stun"] = { + #skill SupportStun #mods -} -gems["Weapon Elemental Damage"] = { + #skill SupportWeaponElementalDamage -#mods -} +#mods \ No newline at end of file diff --git a/Export/browse.lua b/Export/browse.lua index 02cf6bf6..9ef29c79 100644 --- a/Export/browse.lua +++ b/Export/browse.lua @@ -6,8 +6,12 @@ loadDat("SkillGems") loadDat("ActiveSkills") loadDat("GemTags") loadDat("Stats") +loadDat("Mods") loadDat("GrantedEffects") loadDat("GrantedEffectsPerLevel") +loadDat("MonsterVarieties") +loadDat("MonsterTypes") +loadDat("ItemClasses") function actWithType(skillType) for _, k in ipairs(ActiveSkills.ActiveSkillTypes(skillType)) do @@ -38,6 +42,44 @@ function skillWithStat(statId) print(GE[k].Id) end end +local function mod(key) + local m = Mods[key] + print("Mod #"..key..": "..m.Id) + for i = 1, 5 do + local key = m["StatsKey"..i] + if key then + print("Stat #"..key..": ["..m["Stat"..i.."Min"].." to "..m["Stat"..i.."Max"].."] "..Stats[key].Id) + end + end +end +function spectre(name) + for i, key in ipairs(MV.Name(name)) do + local mon = MV[key] + print("#"..i..": "..mon.Id.." ["..key.."]") + print("life = "..mon.LifeMultiplier/100) + if MT[mon.MonsterTypesKey].Unknown4 ~= 0 then + print("energyShield = "..(0.4 * MT[mon.MonsterTypesKey].Unknown4 / 100)) + end + print("damage = "..(1 + mon.DamageMultiplier/100)) + print("damageSpread = "..(MT[mon.MonsterTypesKey].Unknown5 / 100)) + print("attackTime = "..mon.AttackSpeed/1000) + if mon.MainHand_ItemClassesKey then + print("weaponType1 = "..IC[mon.MainHand_ItemClassesKey].Name) + end + if mon.OffHand_ItemClassesKey then + print("weaponType2 = "..IC[mon.OffHand_ItemClassesKey].Name) + end + for _, key in ipairs(mon.GrantedEffectsKeys) do + print("Skill #"..key..": "..GE[key].Id) + end + for _, key in ipairs(mon.ModsKeys) do + mod(key) + end + for _, key in ipairs(mon.Special_ModsKeys) do + mod(key) + end + end +end local str while true do diff --git a/Export/minions.lua b/Export/minions.lua new file mode 100644 index 00000000..d9e4fe59 --- /dev/null +++ b/Export/minions.lua @@ -0,0 +1,119 @@ +#@ + +dofile("_common.lua") + +loadDat("MonsterVarieties") +loadDat("MonsterTypes") +loadDat("MonsterResistances") +loadDat("Mods") +loadDat("GrantedEffects") + +while true do + +local modMap = { } +do + local lastMod + for line in io.lines("Minions/modmap.ini") do + local statName = line:match("^%[([^]]+)%]$") + if statName then + modMap[statName] = { } + lastMod = modMap[statName] + elseif line:match("^[^#].+") then + table.insert(lastMod, line) + end + end +end + +local itemClassMap = { + [6] = "Claw", + [7] = "Dagger", + [8] = "Wand", + [9] = "One Handed Sword", + [10] = "One Handed Sword", + [11] = "One Handed Axe", + [12] = "One Handed Mace", + [13] = "Bow", + [14] = "Staff", + [15] = "Two Handed Sword", + [16] = "Two Handed Axe", + [17] = "Two Handed Mace", + [26] = "Shield", + [32] = "One Handed Mace", + [36] = "None", +} + +for _, name in pairs({"Spectres"}) do + local out = io.open("Minions/"..name..".lua", "w") + for line in io.lines("Minions/"..name..".txt") do + local spec, args = line:match("#(%a+) ?(.*)") + if spec then + if spec == "monster" then + local key = MonsterVarieties.Id(args)[1] + if not key then + print("Invalid Id: "..args) + else + local MonsterVariety = MonsterVarieties[key] + local MonsterType = MonsterTypes[MonsterVariety.MonsterTypesKey] + out:write('minions["'..args..'"] = {\n') + out:write('\tname = "'..MonsterVariety.Name..'",\n') + out:write('\tlife = '..(MonsterVariety.LifeMultiplier/100)..',\n') + if MonsterType.Unknown4 ~= 0 then + out:write('\tenergyShield = '..(0.4 * MonsterType.Unknown4 / 100)..',\n') + end + local Resist = MonsterResistances[MonsterType.MonsterResistancesKey] + out:write('\tfireResist = '..Resist.FireMerciless..',\n') + out:write('\tcoldResist = '..Resist.ColdMerciless..',\n') + out:write('\tlightningResist = '..Resist.LightningMerciless..',\n') + out:write('\tchaosResist = '..Resist.ChaosMerciless..',\n') + out:write('\tdamage = '..(1 + MonsterVariety.DamageMultiplier/100)..',\n') + out:write('\tdamageSpread = '..(MonsterType.Unknown5 / 100)..',\n') + out:write('\tattackTime = '..(MonsterVariety.AttackSpeed/1000)..',\n') + if MonsterVariety.MainHand_ItemClassesKey and itemClassMap[MonsterVariety.MainHand_ItemClassesKey] then + out:write('\tweaponType1 = "'..itemClassMap[MonsterVariety.MainHand_ItemClassesKey]..'",\n') + end + if MonsterVariety.OffHand_ItemClassesKey and itemClassMap[MonsterVariety.OffHand_ItemClassesKey] then + out:write('\tweaponType2 = "'..itemClassMap[MonsterVariety.OffHand_ItemClassesKey]..'",\n') + end + out:write('\tskillList = {\n') + for _, key in ipairs(MonsterVariety.GrantedEffectsKeys) do + out:write('\t\t"'..GrantedEffects[key].Id..'",\n') + end + out:write('\t},\n') + local modList = { } + for _, key in ipairs(MonsterVariety.ModsKeys) do + table.insert(modList, key) + end + for _, key in ipairs(MonsterVariety.Special_ModsKeys) do + table.insert(modList, key) + end + out:write('\tmodList = {\n') + for _, key in ipairs(modList) do + local Mod = Mods[key] + if modMap[Mod.Id] then + for _, mod in ipairs(modMap[Mod.Id]) do + out:write('\t\t'..mod..', -- '..Mod.Id..'\n') + end + else + out:write('\t\t-- '..Mod.Id..'\n') + end + end + out:write('\t},\n') + out:write('}\n') + end + end + else + out:write(line.."\n") + end + end + out:close() +end + +print("Minion data exported.") + +os.execute("xcopy Minions\\*.lua ..\\Data\\ /Y") + +if io.read("*l") ~= "" then + break +end +end +os.execute("pause") diff --git a/Export/miscdata.lua b/Export/miscdata.lua index c578335e..038bffcf 100644 --- a/Export/miscdata.lua +++ b/Export/miscdata.lua @@ -11,16 +11,19 @@ local out = io.open("miscdata.txt", "w") local evasion = "" local accuracy = "" local life = "" +local damage = "" for i = 0, DefaultMonsterStats.maxRow do local stats = DefaultMonsterStats[i] evasion = evasion .. stats.Evasion .. ", " accuracy = accuracy .. stats.Accuracy .. ", " life = life .. stats.Life .. ", " + damage = damage .. stats.Damage .. ", " end out:write('-- From DefaultMonsterStats.dat\n') out:write('data.monsterEvasionTable = { '..evasion..'}\n') out:write('data.monsterAccuracyTable = { '..accuracy..'}\n') out:write('data.monsterLifeTable = { '..life..'}\n') +out:write('data.monsterDamageTable = { '..damage..'}\n') local totemMult = "" local keys = { } diff --git a/Export/miscdata.txt b/Export/miscdata.txt index 546d8043..d6a97c47 100644 --- a/Export/miscdata.txt +++ b/Export/miscdata.txt @@ -2,5 +2,6 @@ data.monsterEvasionTable = { 36, 42, 49, 56, 64, 72, 80, 89, 98, 108, 118, 128, 140, 151, 164, 177, 190, 204, 219, 235, 251, 268, 286, 305, 325, 345, 367, 389, 412, 437, 463, 489, 517, 546, 577, 609, 642, 676, 713, 750, 790, 831, 873, 918, 964, 1013, 1063, 1116, 1170, 1227, 1287, 1349, 1413, 1480, 1550, 1623, 1698, 1777, 1859, 1944, 2033, 2125, 2221, 2321, 2425, 2533, 2645, 2761, 2883, 3009, 3140, 3276, 3418, 3565, 3717, 3876, 4041, 4213, 4391, 4576, 4768, 4967, 5174, 5389, 5613, 5845, 6085, 6335, 6595, 6864, 7144, 7434, 7735, 8048, 8372, 8709, 9058, 9420, 9796, 10186, } data.monsterAccuracyTable = { 18, 19, 20, 21, 23, 24, 25, 27, 28, 30, 31, 33, 35, 36, 38, 40, 42, 44, 46, 49, 51, 54, 56, 59, 62, 65, 68, 71, 74, 78, 81, 85, 89, 93, 97, 101, 106, 111, 116, 121, 126, 132, 137, 143, 149, 156, 162, 169, 177, 184, 192, 200, 208, 217, 226, 236, 245, 255, 266, 277, 288, 300, 312, 325, 338, 352, 366, 381, 396, 412, 428, 445, 463, 481, 500, 520, 540, 562, 584, 607, 630, 655, 680, 707, 734, 762, 792, 822, 854, 887, 921, 956, 992, 1030, 1069, 1110, 1152, 1196, 1241, 1288, } data.monsterLifeTable = { 15, 17, 20, 23, 26, 30, 33, 37, 41, 46, 50, 55, 60, 66, 71, 77, 84, 91, 98, 105, 113, 122, 131, 140, 150, 161, 171, 183, 195, 208, 222, 236, 251, 266, 283, 300, 318, 337, 357, 379, 401, 424, 448, 474, 501, 529, 559, 590, 622, 656, 692, 730, 769, 810, 853, 899, 946, 996, 1048, 1102, 1159, 1219, 1281, 1346, 1415, 1486, 1561, 1640, 1722, 1807, 1897, 1991, 2089, 2192, 2299, 2411, 2528, 2651, 2779, 2913, 3053, 3199, 3352, 3511, 3678, 3853, 4035, 4225, 4424, 4631, 4848, 5074, 5310, 5557, 5815, 6084, 6364, 6658, 6964, 7283, } +data.monsterDamageTable = { 5, 6, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 26, 28, 30, 32, 34, 36, 39, 41, 44, 47, 50, 53, 56, 59, 63, 67, 71, 75, 80, 84, 89, 94, 100, 106, 112, 118, 125, 131, 139, 147, 155, 163, 172, 181, 191, 202, 212, 224, 236, 248, 262, 275, 290, 305, 321, 338, 355, 374, 393, 413, 434, 456, 480, 504, 530, 556, 584, 614, 645, 677, 711, 746, 783, 822, 862, 905, 949, 996, 1045, 1096, 1149, 1205, 1264, 1325, 1390, 1457, 1527, 1601, 1678, 1758, } -- From MonsterVarieties.dat combined with SkillTotemVariations.dat data.totemLifeMult = { [1] = 2.94, [2] = 2.94, [3] = 2.94, [4] = 2.94, [5] = 2.94, [6] = 4.2, [7] = 2.94, [8] = 2.94, [9] = 2.94, [10] = 2.94, [11] = 2.94, [12] = 2.94, [13] = 4.5, [15] = 4.5, } diff --git a/Export/gems.lua b/Export/skills.lua similarity index 87% rename from Export/gems.lua rename to Export/skills.lua index 7c14f42c..09248efc 100644 --- a/Export/gems.lua +++ b/Export/skills.lua @@ -3,18 +3,19 @@ dofile("_common.lua") loadDat("SkillGems") +loadDat("BaseItemTypes") loadDat("ActiveSkills") loadDat("GemTags") loadDat("Stats") loadDat("GrantedEffects") loadDat("GrantedEffectsPerLevel") ---while true do +while true do local statMap = { } do local lastStat - for line in io.lines("Gems/statmap.ini") do + for line in io.lines("Skills/statmap.ini") do local statName = line:match("^%[([^]]+)%]$") if statName then if lastStat and not lastStat.def then @@ -140,24 +141,36 @@ local weaponClassMap = { [36] = "None", } -for _, name in pairs({"act_str","act_dex","act_int","other","sup_str","sup_dex","sup_int"}) do - local out = io.open("Gems/"..name..".lua", "w") - for line in io.lines("Gems/"..name..".txt") do +for _, name in pairs({"act_str","act_dex","act_int","other","minion","spectre","sup_str","sup_dex","sup_int"}) do + local out = io.open("Skills/"..name..".lua", "w") + for line in io.lines("Skills/"..name..".txt") do local spec, args = line:match("#(%a+) ?(.*)") if spec then if spec == "skill" then - local grantedId = args + local grantedId, displayName = args:match("(%w+) (.+)") + if not grantedId then + grantedId = args + displayName = args + end + out:write('skills["'..grantedId..'"] = {\n') local grantedKey = GrantedEffects.Id(grantedId)[1] local granted = GrantedEffects[grantedKey] local skillGemKey = SkillGems.GrantedEffectsKey(grantedKey)[1] - if skillGemKey then - for _, tagKey in pairs(SkillGems[skillGemKey].GemTagsKeys) do - out:write('\t'..GemTags[tagKey].Id..' = true,\n') - end - else - out:write('\thidden = true,\n') - end gem = { } + if skillGemKey then + out:write('\tname = "'..BaseItemTypes[SkillGems[skillGemKey].BaseItemTypesKey].Name:gsub(" Support","")..'",\n') + out:write('\tgemTags = {\n') + for _, tagKey in pairs(SkillGems[skillGemKey].GemTagsKeys) do + out:write('\t\t'..GemTags[tagKey].Id..' = true,\n') + end + out:write('\t},\n') + else + out:write('\tname = "'..displayName..'",\n') + out:write('\thidden = true,\n') + if name == "other" then + out:write('\tother = true,\n') + end + end gem.baseFlags = { } gem.mods = { } local modMap = { } @@ -170,9 +183,13 @@ for _, name in pairs({"act_str","act_dex","act_int","other","sup_str","sup_dex", gem.addSkillTypes = granted.Data1 gem.excludeSkillTypes = granted.Data2 gem.isSupport = true + out:write('\tsupport = true,\n') else local activeSkill = ActiveSkills[granted.ActiveSkillsKey] gem.skillTypes = activeSkill.ActiveSkillTypes + if activeSkill.Unknown19[1] then + gem.minionSkillTypes = activeSkill.Unknown19 + end if activeSkill.SkillTotemId ~= 16 then gem.skillTotemId = activeSkill.SkillTotemId end @@ -215,6 +232,9 @@ for _, name in pairs({"act_str","act_dex","act_int","other","sup_str","sup_dex", end mod.levels[levelRow.Level] = value end + if not granted.IsSupport then + addLevelMod('skill("levelRequirement", {val})', levelRow.LevelRequirement) + end if levelRow.ManaCost and levelRow.ManaCost ~= 0 then addLevelMod('skill("manaCost", {val})', levelRow.ManaCost) end @@ -233,6 +253,9 @@ for _, name in pairs({"act_str","act_dex","act_int","other","sup_str","sup_dex", if levelRow.ManaReservationOverride ~= 0 then addLevelMod('skill("manaCostOverride", {val})', levelRow.ManaReservationOverride) end + if levelRow.Cooldown and levelRow.Cooldown ~= 0 then + addLevelMod('skill("cooldown", {val})', levelRow.Cooldown / 1000) + end for i, statKey in ipairs(levelRow.StatsKeys) do addLevelMod(statKey, levelRow["Stat"..i.."Value"]) end @@ -299,6 +322,13 @@ for _, name in pairs({"act_str","act_dex","act_int","other","sup_str","sup_dex", end out:write('},\n') end + if gem.minionSkillTypes then + out:write('\tminionSkillTypes = { ') + for _, type in ipairs(gem.minionSkillTypes) do + out:write('['..type..'] = true, ') + end + out:write('},\n') + end if gem.weaponTypes and next(gem.weaponTypes) then out:write('\tweaponTypes = {\n') for type in pairs(gem.weaponTypes) do @@ -378,6 +408,7 @@ for _, name in pairs({"act_str","act_dex","act_int","other","sup_str","sup_dex", out:write('},\n') end out:write('\t},\n') + out:write('}') end else out:write(line.."\n") @@ -388,10 +419,10 @@ end print("Gem data exported.") -os.execute("xcopy Gems\\*.lua ..\\Data\\Gems\\ /Y") +os.execute("xcopy Skills\\*.lua ..\\Data\\Skills\\ /Y") ---[[if io.read("*l") ~= "" then +if io.read("*l") ~= "" then break end -end]] +end os.execute("pause") diff --git a/Modules/Build.lua b/Modules/Build.lua index d885dcfc..fac69634 100644 --- a/Modules/Build.lua +++ b/Modules/Build.lua @@ -220,7 +220,22 @@ function buildMode:Init(dbFileName, buildName) self.modFlag = true self.buildFlag = true end) - self.controls.statBox = common.New("TextListControl", {"TOPLEFT",self.controls.mainSocketGroup,"BOTTOMLEFT"}, 0, 42, 300, 0, {{x=170,align="RIGHT_X"},{x=174,align="LEFT"}}) + self.controls.mainSkillMinion = common.New("DropDownControl", {"TOPLEFT",self.controls.mainSocketGroup,"BOTTOMLEFT"}, 0, 20, 178, 18, nil, function(index, val) + local mainSocketGroup = self.skillsTab.socketGroupList[self.mainSocketGroup] + mainSocketGroup.displaySkillList[mainSocketGroup.mainActiveSkill].activeGem.srcGem.skillMinion = val.val + self.modFlag = true + self.buildFlag = true + end) + self.controls.mainSkillMinionLibrary = common.New("ButtonControl", {"LEFT",self.controls.mainSkillMinion,"RIGHT"}, 2, 0, 120, 18, "Manage Spectres...", function() + self:OpenSpectreLibrary() + end) + self.controls.mainSkillMinionSkill = common.New("DropDownControl", {"TOPLEFT",self.controls.mainSkillMinion,"BOTTOMLEFT"}, 0, 2, 200, 16, nil, function(index) + local mainSocketGroup = self.skillsTab.socketGroupList[self.mainSocketGroup] + mainSocketGroup.displaySkillList[mainSocketGroup.mainActiveSkill].activeGem.srcGem.skillMinionSkill = index + self.modFlag = true + self.buildFlag = true + end) + self.controls.statBox = common.New("TextListControl", {"TOPLEFT",self.controls.mainSocketGroup,"BOTTOMLEFT"}, 0, 62, 300, 0, {{x=170,align="RIGHT_X"},{x=174,align="LEFT"}}) self.controls.statBox.height = function(control) local x, y = control:GetPos() return main.screenH - 30 - y @@ -257,6 +272,7 @@ function buildMode:Init(dbFileName, buildName) { stat = "WithPoisonDPS", label = "Total DPS inc. Poison", fmt = ".1f", compPercent = true }, { stat = "WithPoisonAverageDamage", label = "Average Dmg. inc. Poison", fmt = ".1f", compPercent = true }, { stat = "DecayDPS", label = "Decay DPS", fmt = ".1f", compPercent = true }, + { stat = "Cooldown", label = "Skill Cooldown", fmt = ".2fs", lowerIsBetter = true }, { stat = "ManaCost", label = "Mana Cost", fmt = "d", compPercent = true, lowerIsBetter = true, condFunc = function() return true end }, { }, { stat = "Str", label = "Strength", fmt = "d" }, @@ -304,6 +320,17 @@ function buildMode:Init(dbFileName, buildName) { stat = "LightningResistOverCap", label = "Lightning Res. Over Max", fmt = "d%%" }, { stat = "ChaosResistOverCap", label = "Chaos Res. Over Max", fmt = "d%%" }, } + self.minionDisplayStats = { + { stat = "AverageDamage", label = "Average Damage", fmt = ".1f", compPercent = true }, + { stat = "Speed", label = "Attack/Cast Rate", fmt = ".2f", compPercent = true }, + { stat = "TotalDPS", label = "Total DPS", fmt = ".1f", compPercent = true }, + { stat = "TotalDot", label = "DoT DPS", fmt = ".1f", compPercent = true }, + { stat = "WithPoisonDPS", label = "DPS inc. Poison", fmt = ".1f", compPercent = true }, + { stat = "Cooldown", label = "Skill Cooldown", fmt = ".2fs", lowerIsBetter = true }, + { stat = "Life", label = "Total Life", fmt = ".1f", compPercent = true }, + { stat = "LifeRegen", label = "Life Regen", fmt = ".1f" }, + { stat = "LifeLeechGainRate", label = "Life Leech/On Hit Rate", fmt = ".1f", compPercent = true }, + } self.viewMode = "TREE" @@ -315,6 +342,7 @@ function buildMode:Init(dbFileName, buildName) self.banditNormal = "None" self.banditCruel = "None" self.banditMerciless = "None" + self.spectreList = { } -- List of modules with Load/Save methods -- These will be called to load or save data to their respective sections of the build XML file @@ -398,6 +426,14 @@ function buildMode:Load(xml, fileName) self[diff] = xml.attrib[diff] or "None" end self.mainSocketGroup = tonumber(xml.attrib.mainSkillIndex) or tonumber(xml.attrib.mainSocketGroup) or 1 + wipeTable(self.spectreList) + for _, child in ipairs(xml) do + if child.elem == "Spectre" then + if child.attrib.id and data.minions[child.attrib.id] then + t_insert(self.spectreList, child.attrib.id) + end + end + end end function buildMode:Save(xml) @@ -411,6 +447,9 @@ function buildMode:Save(xml) banditMerciless = self.banditMerciless, mainSocketGroup = tostring(self.mainSocketGroup), } + for _, id in ipairs(self.spectreList) do + t_insert(xml, { elem = "Spectre", attrib = { id = id } }) + end self.modFlag = false end @@ -468,38 +507,8 @@ function buildMode:OnFrame(inputEvents) self:RefreshStatList() end - -- Update contents of main skill dropdown - wipeTable(self.controls.mainSocketGroup.list) - for i, socketGroup in pairs(self.skillsTab.socketGroupList) do - self.controls.mainSocketGroup.list[i] = { val = i, label = socketGroup.displayLabel } - end - if #self.controls.mainSocketGroup.list == 0 then - self.controls.mainSocketGroup.list[1] = { val = 1, label = "" } - self.controls.mainSkill.shown = false - self.controls.mainSkillPart.shown = false - else - local mainSocketGroup = self.skillsTab.socketGroupList[self.mainSocketGroup] - wipeTable(self.controls.mainSkill.list) - for i, activeSkill in ipairs(mainSocketGroup.displaySkillList) do - t_insert(self.controls.mainSkill.list, { val = i, label = activeSkill.activeGem.name }) - end - self.controls.mainSkill.enabled = #mainSocketGroup.displaySkillList > 1 - self.controls.mainSkill.sel = mainSocketGroup.mainActiveSkill - self.controls.mainSkill.shown = true - self.controls.mainSkillPart.shown = false - if mainSocketGroup.displaySkillList[1] then - local activeGem = mainSocketGroup.displaySkillList[mainSocketGroup.mainActiveSkill].activeGem - if activeGem and activeGem.data.parts and #activeGem.data.parts > 1 then - self.controls.mainSkillPart.shown = true - wipeTable(self.controls.mainSkillPart.list) - for i, part in ipairs(activeGem.data.parts) do - t_insert(self.controls.mainSkillPart.list, { val = i, label = part.name }) - end - self.controls.mainSkillPart.sel = activeGem.srcGem.skillPart or 1 - end - end - end - self.controls.mainSocketGroup.sel = self.mainSocketGroup + -- Update contents of main skill dropdowns + self:RefreshSkillSelectControls(self.controls, self.mainSocketGroup, "") -- Draw contents of current tab local sideBarWidth = 312 @@ -607,18 +616,120 @@ function buildMode:OpenSaveAsPopup() popup.controls.save.enabled = false end -function buildMode:RefreshStatList() - -- Build list of side bar stats - wipeTable(self.controls.statBox.list) - for index, statData in ipairs(self.displayStats) do +-- Open the spectre library popup +function buildMode:OpenSpectreLibrary() + local controls = { } + local destList = copyTable(self.spectreList) + local sourceList = { } + for id in pairs(data.spectres) do + t_insert(sourceList, id) + end + table.sort(sourceList, function(a,b) + if data.minions[a].name == data.minions[b].name then + return a < b + else + return data.minions[a].name < data.minions[b].name + end + end) + controls.list = common.New("MinionList", nil, -100, 40, 190, 250, destList, true) + controls.source = common.New("MinionList", nil, 100, 40, 190, 250, sourceList, false, controls.list) + controls.save = common.New("ButtonControl", nil, -45, 300, 80, 20, "Save", function() + self.spectreList = destList + self.modFlag = true + self.buildFlag = true + main:ClosePopup() + end) + controls.cancel = common.New("ButtonControl", nil, 45, 300, 80, 20, "Cancel", function() + main:ClosePopup() + end) + main:OpenPopup(410, 330, "Spectre Library", controls) +end + +-- Refresh the set of controls used to select main group/skill/minion +function buildMode:RefreshSkillSelectControls(controls, mainGroup, suffix) + controls.mainSocketGroup.sel = mainGroup + wipeTable(controls.mainSocketGroup.list) + for i, socketGroup in pairs(self.skillsTab.socketGroupList) do + controls.mainSocketGroup.list[i] = { val = i, label = socketGroup.displayLabel } + end + if #controls.mainSocketGroup.list == 0 then + controls.mainSocketGroup.list[1] = { val = 1, label = "" } + controls.mainSkill.shown = false + controls.mainSkillPart.shown = false + controls.mainSkillMinion.shown = false + controls.mainSkillMinionSkill.shown = false + else + local mainSocketGroup = self.skillsTab.socketGroupList[mainGroup] + local displaySkillList = mainSocketGroup["displaySkillList"..suffix] + local mainActiveSkill = mainSocketGroup["mainActiveSkill"..suffix] or 1 + wipeTable(controls.mainSkill.list) + for i, activeSkill in ipairs(displaySkillList) do + t_insert(controls.mainSkill.list, { val = i, label = activeSkill.activeGem.name }) + end + controls.mainSkill.enabled = #displaySkillList > 1 + controls.mainSkill.sel = mainActiveSkill + controls.mainSkill.shown = true + controls.mainSkillPart.shown = false + controls.mainSkillMinion.shown = false + controls.mainSkillMinionLibrary.shown = false + controls.mainSkillMinionSkill.shown = false + if displaySkillList[1] then + local activeSkill = displaySkillList[mainActiveSkill] + local activeGem = activeSkill.activeGem + if activeGem then + if activeGem.data.parts and #activeGem.data.parts > 1 then + controls.mainSkillPart.shown = true + wipeTable(controls.mainSkillPart.list) + for i, part in ipairs(activeGem.data.parts) do + t_insert(controls.mainSkillPart.list, { val = i, label = part.name }) + end + controls.mainSkillPart.sel = activeGem.srcGem["skillPart"..suffix] or 1 + elseif not activeSkill.skillFlags.disable and activeGem.data.minionList then + local list + if activeGem.data.minionList[1] then + list = activeGem.data.minionList + else + list = self.spectreList + controls.mainSkillMinionLibrary.shown = true + end + wipeTable(controls.mainSkillMinion.list) + for _, name in ipairs(list) do + t_insert(controls.mainSkillMinion.list, { + val = name, + label = data.minions[name].name, + }) + end + controls.mainSkillMinion.enabled = #controls.mainSkillMinion.list > 1 + controls.mainSkillMinion.shown = true + controls.mainSkillMinion:SelByValue(activeGem.srcGem["skillMinion"..suffix] or controls.mainSkillMinion.list[1]) + wipeTable(controls.mainSkillMinionSkill.list) + if activeSkill.minion then + for _, minionSkill in ipairs(activeSkill.minion.activeSkillList) do + t_insert(controls.mainSkillMinionSkill.list, minionSkill.activeGem.name) + end + controls.mainSkillMinionSkill.sel = activeGem.srcGem["skillMinionSkill"..suffix] or 1 + controls.mainSkillMinionSkill.shown = true + controls.mainSkillMinionSkill.enabled = #controls.mainSkillMinionSkill.list > 1 + else + t_insert(controls.mainSkillMinion.list, "") + end + end + end + end + end +end + +-- Add stat list for given actor +function buildMode:AddDisplayStatList(statList, actor) + for index, statData in ipairs(statList) do if statData.stat then - if not statData.flag or self.calcsTab.mainEnv.mainSkill.skillFlags[statData.flag] then - local modVal = self.calcsTab.mainOutput[statData.stat] - if modVal and ((statData.condFunc and statData.condFunc(modVal,self.calcsTab.mainOutput)) or (not statData.condFunc and modVal ~= 0)) then + if not statData.flag or actor.mainSkill.skillFlags[statData.flag] then + local statVal = actor.output[statData.stat] + if statVal and ((statData.condFunc and statData.condFunc(statVal,actor.output)) or (not statData.condFunc and statVal ~= 0)) then t_insert(self.controls.statBox.list, { height = 16, "^7"..statData.label..":", - string.format("%s%"..statData.fmt, modVal >= 0 and "^7" or data.colorCodes.NEGATIVE, modVal * ((statData.pc or statData.mod) and 100 or 1) - (statData.mod and 100 or 0)) + string.format("%s%"..statData.fmt, statVal >= 0 and "^7" or data.colorCodes.NEGATIVE, statVal * ((statData.pc or statData.mod) and 100 or 1) - (statData.mod and 100 or 0)) }) end end @@ -628,14 +739,31 @@ function buildMode:RefreshStatList() end end --- Compare values of all display stats between the two output tables, and add any changed stats to the tooltip --- Adds the provided header line before the first stat line, if any are added --- Returns the number of stat lines added -function buildMode:AddStatComparesToTooltip(baseOutput, compareOutput, header, nodeCount) +-- Build list of side bar stats +function buildMode:RefreshStatList() + wipeTable(self.controls.statBox.list) + if self.calcsTab.mainEnv.minion then + t_insert(self.controls.statBox.list, { height = 18, "^7Minion:" }) + self:AddDisplayStatList(self.minionDisplayStats, self.calcsTab.mainEnv.minion) + t_insert(self.controls.statBox.list, { height = 10 }) + t_insert(self.controls.statBox.list, { height = 18, "^7Player:" }) + end + self:AddDisplayStatList(self.displayStats, self.calcsTab.mainEnv.player) +end + +function buildMode:CompareStatList(statList, actor, baseOutput, compareOutput, header, nodeCount) local count = 0 - for _, statData in ipairs(self.displayStats) do - if statData.stat and (not statData.flag or self.calcsTab.mainEnv.mainSkill.skillFlags[statData.flag]) then - local diff = (compareOutput[statData.stat] or 0) - (baseOutput[statData.stat] or 0) + for _, statData in ipairs(statList) do + if statData.stat and (not statData.flag or actor.mainSkill.skillFlags[statData.flag]) then + local statVal1, statVal2 + if statData.space then + statVal1 = compareOutput[statData.space] and compareOutput[statData.space][statData.stat] or 0 + statVal2 = baseOutput[statData.space] and baseOutput[statData.space][statData.stat] or 0 + else + statVal1 = compareOutput[statData.stat] or 0 + statVal2 = baseOutput[statData.stat] or 0 + end + local diff = statVal1 - statVal2 if diff > 0.001 or diff < -0.001 then if count == 0 then main:AddTooltipLine(14, header) @@ -643,8 +771,8 @@ function buildMode:AddStatComparesToTooltip(baseOutput, compareOutput, header, n local color = ((statData.lowerIsBetter and diff < 0) or (not statData.lowerIsBetter and diff > 0)) and data.colorCodes.POSITIVE or data.colorCodes.NEGATIVE local line = string.format("%s%+"..statData.fmt.." %s", color, diff * ((statData.pc or statData.mod) and 100 or 1), statData.label) local pcPerPt = "" - if statData.compPercent and (baseOutput[statData.stat] or 0) ~= 0 and (compareOutput[statData.stat] or 0) ~= 0 then - local pc = (compareOutput[statData.stat] or 0) / (baseOutput[statData.stat] or 0) * 100 - 100 + if statData.compPercent and statVal1 ~= 0 and statVal2 ~= 0 then + local pc = statVal1 / statVal2 * 100 - 100 line = line .. string.format(" (%+.1f%%)", pc) if nodeCount then pcPerPt = string.format(" (%+.1f%%)", pc / nodeCount) @@ -661,6 +789,23 @@ function buildMode:AddStatComparesToTooltip(baseOutput, compareOutput, header, n return count end +-- Compare values of all display stats between the two output tables, and add any changed stats to the tooltip +-- Adds the provided header line before the first stat line, if any are added +-- Returns the number of stat lines added +function buildMode:AddStatComparesToTooltip(baseOutput, compareOutput, header, nodeCount) + local count = 0 + if baseOutput.Minion then + count = count + self:CompareStatList(self.minionDisplayStats, self.calcsTab.mainEnv.minion, baseOutput.Minion, compareOutput.Minion, header.."\n^7Minion:", nodeCount) + if count > 0 then + header = "^7Player:" + else + header = header.."\n^7Player:" + end + end + count = count + self:CompareStatList(self.displayStats, self.calcsTab.mainEnv.player, baseOutput, compareOutput, header, nodeCount) + return count +end + function buildMode:LoadDB(xmlText, fileName) -- Parse the XML local dbXML, errMsg = common.xml.ParseXML(xmlText) diff --git a/Modules/CalcActiveSkill.lua b/Modules/CalcActiveSkill.lua new file mode 100644 index 00000000..86e189e9 --- /dev/null +++ b/Modules/CalcActiveSkill.lua @@ -0,0 +1,535 @@ +-- Path of Building +-- +-- Module: Calc Active Skill +-- Active skill setup. +-- +local calcs = ... + +local ipairs = ipairs +local t_insert = table.insert +local t_remove = table.remove +local m_floor = math.floor +local m_min = math.min +local m_max = math.max +local bor = bit.bor +local band = bit.band +local bnot = bit.bnot + +-- Merge level modifier with give mod list +local function mergeLevelMod(modList, mod, value) + local newMod = copyTable(mod) + if type(newMod.value) == "table" then + if newMod.value.mod then + newMod.value.mod.value = value + else + newMod.value.value = value + end + else + newMod.value = value + end + modList:AddMod(newMod) +end + +-- Merge gem modifiers with given mod list +local function mergeGemMods(modList, gem) + modList:AddList(gem.data.baseMods) + if gem.quality > 0 then + for i = 1, #gem.data.qualityMods do + local scaledMod = copyTable(gem.data.qualityMods[i]) + if type(scaledMod.value) == "table" then + if scaledMod.value.mod then + scaledMod.value.mod.value = m_floor(scaledMod.value.mod.value * gem.quality) + else + scaledMod.value.value = m_floor(scaledMod.value.value * gem.quality) + end + else + scaledMod.value = m_floor(scaledMod.value * gem.quality) + end + modList:AddMod(scaledMod) + end + end + gem.level = m_max(gem.level, 1) + if not gem.data.levels[gem.level] then + gem.level = m_min(gem.level, #gem.data.levels) + end + local levelData = gem.data.levels[gem.level] + for col, mod in pairs(gem.data.levelMods) do + if levelData[col] then + if mod[1] then + for _, subMod in ipairs(mod) do + mergeLevelMod(modList, subMod, levelData[col]) + end + else + mergeLevelMod(modList, mod, levelData[col]) + end + end + end +end + +-- Create an active skill using the given active gem and list of support gems +-- It will determine the base flag set, and check which of the support gems can support this skill +function calcs.createActiveSkill(activeGem, supportList, summonSkill) + local activeSkill = { } + activeSkill.summonSkill = summonSkill + activeSkill.supportList = supportList + + activeSkill.activeGem = { + name = activeGem.name, + data = activeGem.data, + level = activeGem.level, + quality = activeGem.quality, + fromItem = activeGem.fromItem, + srcGem = activeGem, + } + activeSkill.gemList = { activeSkill.activeGem } + + activeSkill.skillTypes = copyTable(activeGem.data.skillTypes) + if activeGem.data.minionSkillTypes then + activeSkill.minionSkillTypes = copyTable(activeGem.data.minionSkillTypes) + end + + activeSkill.skillData = { } + + -- Initialise skill flag set ('attack', 'projectile', etc) + local skillFlags = copyTable(activeGem.data.baseFlags) + activeSkill.skillFlags = skillFlags + skillFlags.hit = activeSkill.skillTypes[SkillType.Attack] or activeSkill.skillTypes[SkillType.Hit] or activeSkill.skillTypes[SkillType.Projectile] + + for _, gem in ipairs(supportList) do + if calcLib.gemCanSupport(gem, activeSkill) then + if gem.data.addFlags then + -- Support gem adds flags to supported skills (eg. Remote Mine adds 'mine') + for k in pairs(gem.data.addFlags) do + skillFlags[k] = true + end + end + for _, skillType in pairs(gem.data.addSkillTypes) do + activeSkill.skillTypes[skillType] = true + end + end + end + + -- Process support gems + for _, gem in ipairs(supportList) do + if calcLib.gemCanSupport(gem, activeSkill) then + t_insert(activeSkill.gemList, { + name = gem.name, + data = gem.data, + level = gem.level, + quality = gem.quality, + fromItem = gem.fromItem, + srcGem = gem, + }) + if gem.isSupporting then + gem.isSupporting[activeGem.name] = true + end + end + end + + return activeSkill +end + +-- Get weapon flags and info for given weapon +local function getWeaponFlags(weaponData, weaponTypes) + local info = data.weaponTypeInfo[weaponData.type] + if not info then + return + end + if weaponTypes and not weaponTypes[weaponData.type] and + (not weaponData.countsAsAll1H or not (weaponTypes["Claw"] or weaponTypes["Dagger"] or weaponTypes["One Handed Axe"] or weaponTypes["One Handed Mace"] or weaponTypes["One Handed Sword"])) then + return + end + local flags = info.flag + if weaponData.countsAsAll1H then + flags = bor(ModFlag.Axe, ModFlag.Claw, ModFlag.Dagger, ModFlag.Mace, ModFlag.Sword) + end + if weaponData.type ~= "None" then + flags = bor(flags, ModFlag.Weapon) + if info.oneHand then + flags = bor(flags, ModFlag.Weapon1H) + else + flags = bor(flags, ModFlag.Weapon2H) + end + if info.melee then + flags = bor(flags, ModFlag.WeaponMelee) + else + flags = bor(flags, ModFlag.WeaponRanged) + end + end + return flags, info +end + +-- Build list of modifiers for given active skill +function calcs.buildActiveSkillModList(env, actor, activeSkill) + local skillTypes = activeSkill.skillTypes + local skillFlags = activeSkill.skillFlags + local activeGem = activeSkill.activeGem + + -- Set mode flags + if env.mode_buffs then + skillFlags.buffs = true + end + if env.mode_combat then + skillFlags.combat = true + end + if env.mode_effective then + skillFlags.effective = true + end + + -- Handle multipart skills + local activeGemParts = activeGem.data.parts + if activeGemParts then + if env.mode == "CALCS" and activeSkill == env.player.mainSkill then + activeGem.srcGem.skillPartCalcs = m_min(#activeGemParts, activeGem.srcGem.skillPartCalcs or 1) + activeSkill.skillPart = activeGem.srcGem.skillPartCalcs + else + activeGem.srcGem.skillPart = m_min(#activeGemParts, activeGem.srcGem.skillPart or 1) + activeSkill.skillPart = activeGem.srcGem.skillPart + end + local part = activeGemParts[activeSkill.skillPart] + for k, v in pairs(part) do + if v == true then + skillFlags[k] = true + elseif v == false then + skillFlags[k] = nil + end + end + activeSkill.skillPartName = part.name + skillFlags.multiPart = #activeGemParts > 1 + end + + if skillTypes[SkillType.Shield] and (not actor.itemList["Weapon 2"] or actor.itemList["Weapon 2"].type ~= "Shield") then + -- Skill requires a shield to be equipped + skillFlags.disable = true + end + + if skillFlags.attack then + -- Set weapon flags + local weaponTypes = activeGem.data.weaponTypes + local weapon1Flags, weapon1Info = getWeaponFlags(actor.weaponData1, weaponTypes) + if not weapon1Flags and activeSkill.summonSkill then + -- Minion skills seem to ignore weapon types + weapon1Flags, weapon1Info = data.weaponTypeInfo["None"].flag, data.weaponTypeInfo["None"] + end + if weapon1Flags then + activeSkill.weapon1Flags = weapon1Flags + skillFlags.weapon1Attack = true + if weapon1Info.melee and skillFlags.melee then + skillFlags.projectile = nil + elseif not weapon1Info.melee and skillFlags.projectile then + skillFlags.melee = nil + end + elseif skillTypes[SkillType.DualWield] or not skillTypes[SkillType.CanDualWield] or skillTypes[SkillType.MainHandOnly] or skillFlags.forceMainHand then + -- Skill requires a compatible main hand weapon + skillFlags.disable = true + end + if skillTypes[SkillType.DualWield] or skillTypes[SkillType.CanDualWield] then + if not skillTypes[SkillType.MainHandOnly] and not skillFlags.forceMainHand then + local weapon2Flags = getWeaponFlags(actor.weaponData2, weaponTypes) + if weapon2Flags then + activeSkill.weapon2Flags = weapon2Flags + skillFlags.weapon2Attack = true + elseif skillTypes[SkillType.DualWield] or not skillFlags.weapon1Attack then + -- Skill requires a compatible off hand weapon + skillFlags.disable = true + end + end + elseif actor.weaponData2.type then + -- Skill cannot be used while dual wielding + skillFlags.disable = true + end + skillFlags.bothWeaponAttack = skillFlags.weapon1Attack and skillFlags.weapon2Attack + end + + -- Build skill mod flag set + local skillModFlags = 0 + if skillFlags.hit then + skillModFlags = bor(skillModFlags, ModFlag.Hit) + end + if skillFlags.attack then + skillModFlags = bor(skillModFlags, ModFlag.Attack) + else + skillModFlags = bor(skillModFlags, ModFlag.Cast) + if skillFlags.spell then + skillModFlags = bor(skillModFlags, ModFlag.Spell) + end + end + if skillFlags.melee then + skillModFlags = bor(skillModFlags, ModFlag.Melee) + elseif skillFlags.projectile then + skillModFlags = bor(skillModFlags, ModFlag.Projectile) + end + if skillFlags.area then + skillModFlags = bor(skillModFlags, ModFlag.Area) + end + + -- Build skill keyword flag set + local skillKeywordFlags = 0 + if skillFlags.aura then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Aura) + end + if skillFlags.curse then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Curse) + end + if skillFlags.warcry then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Warcry) + end + if skillFlags.movement then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Movement) + end + if skillFlags.vaal then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Vaal) + end + if skillFlags.lightning then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Lightning) + end + if skillFlags.cold then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Cold) + end + if skillFlags.fire then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Fire) + end + if skillFlags.chaos then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Chaos) + end + if skillFlags.totem then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Totem) + elseif skillFlags.trap then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Trap) + elseif skillFlags.mine then + skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Mine) + end + + -- Get skill totem ID for totem skills + -- This is used to calculate totem life + if skillFlags.totem then + activeSkill.skillTotemId = activeGem.data.skillTotemId + if not activeSkill.skillTotemId then + if activeGem.data.color == 2 then + activeSkill.skillTotemId = 2 + elseif activeGem.data.color == 3 then + activeSkill.skillTotemId = 3 + else + activeSkill.skillTotemId = 1 + end + end + end + + -- Build config structure for modifier searches + activeSkill.skillCfg = { + flags = bor(skillModFlags, activeSkill.weapon1Flags or activeSkill.weapon2Flags or 0), + keywordFlags = skillKeywordFlags, + skillName = activeGem.name:gsub("^Vaal ",""), -- This allows modifiers that target specific skills to also apply to their Vaal counterpart + summonSkillName = activeSkill.summonSkill and activeSkill.summonSkill.activeGem.name, + skillGem = activeGem, + skillPart = activeSkill.skillPart, + skillTypes = activeSkill.skillTypes, + skillCond = { }, + skillDist = env.mode_effective and env.configInput.projectileDistance, + slotName = activeSkill.slotName, + } + if skillFlags.weapon1Attack then + activeSkill.weapon1Cfg = copyTable(activeSkill.skillCfg, true) + activeSkill.weapon1Cfg.skillCond = setmetatable({ ["MainHandAttack"] = true }, { __index = activeSkill.skillCfg.skillCond }) + activeSkill.weapon1Cfg.flags = bor(skillModFlags, activeSkill.weapon1Flags) + end + if skillFlags.weapon2Attack then + activeSkill.weapon2Cfg = copyTable(activeSkill.skillCfg, true) + activeSkill.weapon2Cfg.skillCond = setmetatable({ ["OffHandAttack"] = true }, { __index = activeSkill.skillCfg.skillCond }) + activeSkill.weapon2Cfg.flags = bor(skillModFlags, activeSkill.weapon2Flags) + end + + -- Apply gem property modifiers from the item this skill is socketed into + for _, value in ipairs(env.modDB:Sum("LIST", activeSkill.skillCfg, "GemProperty")) do + for _, gem in pairs(activeSkill.gemList) do + if not gem.fromItem and calcLib.gemIsType(gem, value.keyword) then + gem[value.key] = (gem[value.key] or 0) + value.value + end + end + end + + -- Initialise skill modifier list + local skillModList = common.New("ModList") + activeSkill.skillModList = skillModList + + if skillFlags.disable then + wipeTable(skillFlags) + skillFlags.disable = true + return + end + + -- Add support gem modifiers to skill mod list + for _, gem in pairs(activeSkill.gemList) do + if gem.data.support then + mergeGemMods(skillModList, gem) + end + end + + -- Apply gem/quality modifiers from support gems + if not activeGem.fromItem then + for _, value in ipairs(skillModList:Sum("LIST", activeSkill.skillCfg, "GemProperty")) do + if value.keyword == "active_skill" then + activeGem[value.key] = activeGem[value.key] + value.value + end + end + end + + -- Add active gem modifiers + mergeGemMods(skillModList, activeGem) + + -- Add extra modifiers + for _, value in ipairs(env.modDB:Sum("LIST", activeSkill.skillCfg, "ExtraSkillMod")) do + skillModList:AddMod(value.mod) + end + + -- Extract skill data + for _, value in ipairs(env.modDB:Sum("LIST", activeSkill.skillCfg, "Misc")) do + if value.type == "SkillData" then + activeSkill.skillData[value.key] = value.value + end + end + for _, value in ipairs(skillModList:Sum("LIST", activeSkill.skillCfg, "Misc")) do + if value.type == "SkillData" then + activeSkill.skillData[value.key] = value.value + end + end + + -- Create minion + if activeGem.data.minionList then + local minionType + local minionList = activeGem.data.minionList[1] and activeGem.data.minionList or env.build.spectreList + if env.mode == "CALCS" and activeSkill == env.player.mainSkill then + local index = isValueInArray(minionList, activeGem.srcGem.skillMinionCalcs) or 1 + minionType = minionList[index] + activeGem.srcGem.skillMinionCalcs = minionType + else + local index = isValueInArray(minionList, activeGem.srcGem.skillMinion) or 1 + minionType = minionList[index] + activeGem.srcGem.skillMinion = minionType + end + if minionType then + local minion = { } + activeSkill.minion = minion + skillFlags.haveMinion = true + minion.minionData = data.minions[minionType] + minion.config = { } + minion.level = activeSkill.skillData.minionLevel or activeSkill.skillData.levelRequirement + minion.itemList = { } + local damage = data.monsterDamageTable[minion.level] * minion.minionData.damage + if activeSkill.skillData.minionUseBowAndQuiver and env.player.weaponData1.type == "Bow" then + minion.weaponData1 = env.player.weaponData1 + else + minion.weaponData1 = { + type = minion.minionData.weaponType1 or "None", + attackRate = 1 / minion.minionData.attackTime, + critChance = 5, + PhysicalMin = damage * (1 - minion.minionData.damageSpread), + PhysicalMax = damage * (1 + minion.minionData.damageSpread), + } + end + minion.weaponData2 = { } + end + end + + -- Separate global effect modifiers (mods that can affect defensive stats or other skills) + local i = 1 + while skillModList[i] do + local destList + for _, tag in ipairs(skillModList[i].tagList) do + if tag.type == "GlobalEffect" then + if tag.effectType == "Buff" then + destList = "buffModList" + elseif tag.effectType == "Aura" then + destList = "auraModList" + elseif tag.effectType == "Debuff" then + destList = "debuffModList" + elseif tag.effectType == "Curse" then + destList = "curseModList" + end + break + end + end + if destList then + if not activeSkill[destList] then + activeSkill[destList] = { } + end + local sig = modLib.formatModParams(skillModList[i]) + for d = 1, #activeSkill[destList] do + local destMod = activeSkill[destList][d] + if sig == modLib.formatModParams(destMod) and (destMod.type == "BASE" or destMod.type == "INC") then + destMod.value = destMod.value + skillModList[i].value + sig = nil + break + end + end + if sig then + t_insert(activeSkill[destList], skillModList[i]) + end + t_remove(skillModList, i) + else + i = i + 1 + end + end + + if activeSkill.buffModList or activeSkill.auraModList or activeSkill.debuffModList or activeSkill.curseModList then + -- Add to auxillary skill list + t_insert(env.auxSkillList, activeSkill) + end +end + +-- Initialise the active skill's minion skills +function calcs.createMinionSkills(env, activeSkill) + local activeGem = activeSkill.activeGem + local minion = activeSkill.minion + local minionData = minion.minionData + + minion.activeSkillList = { } + local skillIdList = { } + for _, skillId in ipairs(minionData.skillList) do + if data.skills[skillId] then + t_insert(skillIdList, skillId) + end + end + if env.modDB:Sum("FLAG", nil, "MinionInstability") then + t_insert(skillIdList, "MinionInstability") + end + for _, skillId in ipairs(skillIdList) do + local gem = { + name = data.skills[skillId].name, + data = data.skills[skillId], + level = 1, + quality = 0, + fromItem = true, + } + if #gem.data.levels > 1 then + for level, levelData in ipairs(gem.data.levels) do + if levelData[1] > minion.level then + break + else + gem.level = level + end + end + end + local minionSkill = calcs.createActiveSkill(gem, activeSkill.supportList, activeSkill) + calcs.buildActiveSkillModList(env, minion, minionSkill) + minionSkill.skillFlags.minion = true + minionSkill.skillFlags.minionSkill = true + minionSkill.skillFlags.haveMinion = true + minionSkill.skillFlags.spectre = activeSkill.skillFlags.spectre + if not minionSkill.skillData.damageEffectiveness then + minionSkill.skillData.damageEffectiveness = 1 + (activeSkill.skillData.minionDamageEffectiveness or 0) / 100 + end + t_insert(minion.activeSkillList, minionSkill) + end + local skillIndex + if env.mode == "CALCS" then + skillIndex = m_min(activeGem.srcGem.skillMinionSkillCalcs or 1, #minion.activeSkillList) + activeGem.srcGem.skillMinionSkillCalcs = skillIndex + else + skillIndex = m_min(activeGem.srcGem.skillMinionSkill or 1, #minion.activeSkillList) + if env.mode == "MAIN" then + activeGem.srcGem.skillMinionSkill = skillIndex + end + end + minion.mainSkill = minion.activeSkillList[skillIndex] +end \ No newline at end of file diff --git a/Modules/CalcBreakdown.lua b/Modules/CalcBreakdown.lua new file mode 100644 index 00000000..0c3dc1a9 --- /dev/null +++ b/Modules/CalcBreakdown.lua @@ -0,0 +1,149 @@ +-- Path of Building +-- +-- Module: Calc Breakdown +-- Calculation breakdown generators +-- +local modDB, output, actor = ... + +local t_insert = table.insert +local s_format = string.format + +local breakdown = { } + +function breakdown.simple(extraBase, cfg, total, ...) + extraBase = extraBase or 0 + local base = modDB:Sum("BASE", cfg, (...)) + if (base + extraBase) ~= 0 then + local inc = modDB:Sum("INC", cfg, ...) + local more = modDB:Sum("MORE", cfg, ...) + if inc ~= 0 or more ~= 1 or (base ~= 0 and extraBase ~= 0) then + local out = { } + if base ~= 0 and extraBase ~= 0 then + out[1] = s_format("(%g + %g) ^8(base)", extraBase, base) + else + out[1] = s_format("%g ^8(base)", base + extraBase) + end + if inc ~= 0 then + t_insert(out, s_format("x %.2f", 1 + inc/100).." ^8(increased/reduced)") + end + if more ~= 1 then + t_insert(out, s_format("x %.2f", more).." ^8(more/less)") + end + t_insert(out, s_format("= %g", total)) + return out + end + end +end + +function breakdown.mod(cfg, ...) + local inc = modDB:Sum("INC", cfg, ...) + local more = modDB:Sum("MORE", cfg, ...) + if inc ~= 0 and more ~= 1 then + return { + s_format("%.2f", 1 + inc/100).." ^8(increased/reduced)", + s_format("x %.2f", more).." ^8(more/less)", + s_format("= %.2f", (1 + inc/100) * more), + } + end +end + +function breakdown.slot(source, sourceName, cfg, base, total, ...) + local inc = modDB:Sum("INC", cfg, ...) + local more = modDB:Sum("MORE", cfg, ...) + t_insert(breakdown[...].slots, { + base = base, + inc = (inc ~= 0) and s_format(" x %.2f", 1 + inc/100), + more = (more ~= 1) and s_format(" x %.2f", more), + total = s_format("%.2f", total or (base * (1 + inc / 100) * more)), + source = source, + sourceName = sourceName, + item = actor.itemList[source], + }) +end + +function breakdown.effMult(damageType, resist, pen, taken, mult) + local out = { } + local resistForm = (damageType == "Physical") and "physical damage reduction" or "resistance" + if resist ~= 0 then + t_insert(out, s_format("Enemy %s: %d%%", resistForm, resist)) + end + if pen ~= 0 then + t_insert(out, "Effective resistance:") + t_insert(out, s_format("%d%% ^8(resistance)", resist)) + t_insert(out, s_format("- %d%% ^8(penetration)", pen)) + t_insert(out, s_format("= %d%%", resist - pen)) + end + if (resist - pen) ~= 0 and taken ~= 0 then + t_insert(out, "Effective DPS modifier:") + t_insert(out, s_format("%.2f ^8(%s)", 1 - (resist - pen) / 100, resistForm)) + t_insert(out, s_format("x %.2f ^8(increased/reduced damage taken)", 1 + taken / 100)) + t_insert(out, s_format("= %.3f", mult)) + end + return out +end + +function breakdown.dot(out, baseVal, inc, more, rate, effMult, total) + t_insert(out, s_format("%.1f ^8(base damage per second)", baseVal)) + if inc ~= 0 then + t_insert(out, s_format("x %.2f ^8(increased/reduced)", 1 + inc/100)) + end + if more ~= 1 then + t_insert(out, s_format("x %.2f ^8(more/less)", more)) + end + if rate and rate ~= 1 then + t_insert(out, s_format("x %.2f ^8(rate modifier)", rate)) + end + if effMult ~= 1 then + t_insert(out, s_format("x %.3f ^8(effective DPS modifier)", effMult)) + end + t_insert(out, s_format("= %.1f ^8per second", total)) +end + +function breakdown.leech(instant, instantRate, instances, pool, rate, max, dur) + local out = { } + if actor.mainSkill.skillData.showAverage then + if instant > 0 then + t_insert(out, s_format("Instant Leech: %.1f", instant)) + end + if instances > 0 then + t_insert(out, "Total leeched per instance:") + t_insert(out, s_format("%d ^8(size of leech destination pool)", pool)) + t_insert(out, "x 0.02 ^8(base leech rate is 2% per second)") + local rateMod = calcLib.mod(modDB, skillCfg, rate) + if rateMod ~= 1 then + t_insert(out, s_format("x %.2f ^8(leech rate modifier)", rateMod)) + end + t_insert(out, s_format("x %.2fs ^8(instance duration)", dur)) + t_insert(out, s_format("= %.1f", pool * 0.02 * rateMod * dur)) + end + else + if instantRate > 0 then + t_insert(out, s_format("Instant Leech per second: %.1f", instantRate)) + end + if instances > 0 then + t_insert(out, "Rate per instance:") + t_insert(out, s_format("%d ^8(size of leech destination pool)", pool)) + t_insert(out, "x 0.02 ^8(base leech rate is 2% per second)") + local rateMod = calcLib.mod(modDB, skillCfg, rate) + if rateMod ~= 1 then + t_insert(out, s_format("x %.2f ^8(leech rate modifier)", rateMod)) + end + t_insert(out, s_format("= %.1f ^8per second", pool * 0.02 * rateMod)) + t_insert(out, "Maximum leech rate against one target:") + t_insert(out, s_format("%.1f", pool * 0.02 * rateMod)) + t_insert(out, s_format("x %.1f ^8(average instances)", instances)) + local total = pool * 0.02 * rateMod * instances + t_insert(out, s_format("= %.1f ^8per second", total)) + if total <= max then + t_insert(out, s_format("Time to reach max: %.1fs", dur)) + end + t_insert(out, s_format("Leech rate cap: %.1f", max)) + if total > max then + t_insert(out, s_format("Time to reach cap: %.1fs", dur / total * max)) + end + end + end + return out +end + +return breakdown \ No newline at end of file diff --git a/Modules/CalcDefence.lua b/Modules/CalcDefence.lua new file mode 100644 index 00000000..b9c0cc6b --- /dev/null +++ b/Modules/CalcDefence.lua @@ -0,0 +1,317 @@ +-- Path of Building +-- +-- Module: Calc Defence +-- Performs defence calculations. +-- +local calcs = ... + +local pairs = pairs +local ipairs = ipairs +local t_insert = table.insert +local m_ceil = math.ceil +local m_floor = math.floor +local m_min = math.min +local m_max = math.max +local s_format = string.format + +local tempTable1 = { } + +local isElemental = { Fire = true, Cold = true, Lightning = true } + +local resistTypeList = { "Fire", "Cold", "Lightning", "Chaos" } + +-- Performs all defensive calculations +function calcs.defence(env, actor) + local modDB = actor.modDB + local enemyDB = actor.enemy.modDB + local output = actor.output + local breakdown = actor.breakdown + + local condList = modDB.conditions + + -- Resistances + for _, elem in ipairs(resistTypeList) do + local max, total + if elem == "Chaos" and modDB:Sum("FLAG", nil, "ChaosInoculation") then + max = 100 + total = 100 + else + max = modDB:Sum("BASE", nil, elem.."ResistMax") + total = modDB:Sum("BASE", nil, elem.."Resist", isElemental[elem] and "ElementalResist") + end + output[elem.."Resist"] = m_min(total, max) + output[elem.."ResistTotal"] = total + output[elem.."ResistOverCap"] = m_max(0, total - max) + if breakdown then + breakdown[elem.."Resist"] = { + "Max: "..max.."%", + "Total: "..total.."%", + "In hideout: "..(total + 60).."%", + } + end + end + condList.UncappedLightningResistIsLowest = (output.LightningResistTotal <= output.ColdResistTotal and output.LightningResistTotal <= output.FireResistTotal) + condList.UncappedColdResistIsLowest = (output.ColdResistTotal <= output.LightningResistTotal and output.ColdResistTotal <= output.FireResistTotal) + condList.UncappedFireResistIsLowest = (output.FireResistTotal <= output.LightningResistTotal and output.FireResistTotal <= output.ColdResistTotal) + condList.UncappedLightningResistIsHighest = (output.LightningResistTotal >= output.ColdResistTotal and output.LightningResistTotal >= output.FireResistTotal) + condList.UncappedColdResistIsHighest = (output.ColdResistTotal >= output.LightningResistTotal and output.ColdResistTotal >= output.FireResistTotal) + condList.UncappedFireResistIsHighest = (output.FireResistTotal >= output.LightningResistTotal and output.FireResistTotal >= output.ColdResistTotal) + + -- Primary defences: Energy shield, evasion and armour + do + local ironReflexes = modDB:Sum("FLAG", nil, "IronReflexes") + local energyShield = 0 + local armour = 0 + local evasion = 0 + if breakdown then + breakdown.EnergyShield = { slots = { } } + breakdown.Armour = { slots = { } } + breakdown.Evasion = { slots = { } } + end + local energyShieldBase = modDB:Sum("BASE", nil, "EnergyShield") + if energyShieldBase > 0 then + energyShield = energyShield + energyShieldBase * calcLib.mod(modDB, nil, "EnergyShield", "Defences") + if breakdown then + breakdown.slot("Global", nil, nil, energyShieldBase, nil, "EnergyShield", "Defences") + end + end + local armourBase = modDB:Sum("BASE", nil, "Armour", "ArmourAndEvasion") + if armourBase > 0 then + armour = armour + armourBase * calcLib.mod(modDB, nil, "Armour", "ArmourAndEvasion", "Defences") + if breakdown then + breakdown.slot("Global", nil, nil, armourBase, nil, "Armour", "ArmourAndEvasion", "Defences") + end + end + local evasionBase = modDB:Sum("BASE", nil, "Evasion", "ArmourAndEvasion") + if evasionBase > 0 then + if ironReflexes then + armour = armour + evasionBase * calcLib.mod(modDB, nil, "Armour", "Evasion", "ArmourAndEvasion", "Defences") + if breakdown then + breakdown.slot("Conversion", "Evasion to Armour", nil, evasionBase, nil, "Armour", "Evasion", "ArmourAndEvasion", "Defences") + end + else + evasion = evasion + evasionBase * calcLib.mod(modDB, nil, "Evasion", "ArmourAndEvasion", "Defences") + if breakdown then + breakdown.slot("Global", nil, nil, evasionBase, nil, "Evasion", "ArmourAndEvasion", "Defences") + end + end + end + local gearEnergyShield = 0 + local gearArmour = 0 + local gearEvasion = 0 + local slotCfg = wipeTable(tempTable1) + for _, slot in pairs({"Helmet","Body Armour","Gloves","Boots","Weapon 2"}) do + local armourData = actor.itemList[slot] and actor.itemList[slot].armourData + if armourData then + slotCfg.slotName = slot + energyShieldBase = armourData.EnergyShield or 0 + if energyShieldBase > 0 then + energyShield = energyShield + energyShieldBase * calcLib.mod(modDB, slotCfg, "EnergyShield", "Defences") + gearEnergyShield = gearEnergyShield + energyShieldBase + if breakdown then + breakdown.slot(slot, nil, slotCfg, energyShieldBase, nil, "EnergyShield", "Defences") + end + end + armourBase = armourData.Armour or 0 + if armourBase > 0 then + if slot == "Body Armour" and modDB:Sum("FLAG", nil, "Unbreakable") then + armourBase = armourBase * 2 + end + armour = armour + armourBase * calcLib.mod(modDB, slotCfg, "Armour", "ArmourAndEvasion", "Defences") + gearArmour = gearArmour + armourBase + if breakdown then + breakdown.slot(slot, nil, slotCfg, armourBase, nil, "Armour", "ArmourAndEvasion", "Defences") + end + end + evasionBase = armourData.Evasion or 0 + if evasionBase > 0 then + if ironReflexes then + armour = armour + evasionBase * calcLib.mod(modDB, slotCfg, "Armour", "Evasion", "ArmourAndEvasion", "Defences") + gearArmour = gearArmour + evasionBase + if breakdown then + breakdown.slot(slot, nil, slotCfg, evasionBase, nil, "Armour", "Evasion", "ArmourAndEvasion", "Defences") + end + else + evasion = evasion + evasionBase * calcLib.mod(modDB, slotCfg, "Evasion", "ArmourAndEvasion", "Defences") + gearEvasion = gearEvasion + evasionBase + if breakdown then + breakdown.slot(slot, nil, slotCfg, evasionBase, nil, "Evasion", "ArmourAndEvasion", "Defences") + end + end + end + end + end + local convManaToES = modDB:Sum("BASE", nil, "ManaGainAsEnergyShield") + if convManaToES > 0 then + energyShieldBase = modDB:Sum("BASE", nil, "Mana") * convManaToES / 100 + energyShield = energyShield + energyShieldBase * calcLib.mod(modDB, nil, "Mana", "EnergyShield", "Defences") + if breakdown then + breakdown.slot("Conversion", "Mana to Energy Shield", nil, energyShieldBase, nil, "EnergyShield", "Defences", "Mana") + end + end + local convLifeToES = modDB:Sum("BASE", nil, "LifeConvertToEnergyShield", "LifeGainAsEnergyShield") + if convLifeToES > 0 then + energyShieldBase = modDB:Sum("BASE", nil, "Life") * convLifeToES / 100 + local total + if modDB:Sum("FLAG", nil, "ChaosInoculation") then + total = 1 + else + total = energyShieldBase * calcLib.mod(modDB, nil, "Life", "EnergyShield", "Defences") + end + energyShield = energyShield + total + if breakdown then + breakdown.slot("Conversion", "Life to Energy Shield", nil, energyShieldBase, total, "EnergyShield", "Defences", "Life") + end + end + output.EnergyShield = round(energyShield) + output.Armour = round(armour) + output.Evasion = round(evasion) + output.LowestOfArmourAndEvasion = m_min(output.Armour, output.Evasion) + output["Gear:EnergyShield"] = gearEnergyShield + output["Gear:Armour"] = gearArmour + output["Gear:Evasion"] = gearEvasion + output.EnergyShieldRecharge = round(output.EnergyShield * 0.2 * calcLib.mod(modDB, nil, "EnergyShieldRecharge", "EnergyShieldRecovery"), 1) + output.EnergyShieldRechargeDelay = 2 / (1 + modDB:Sum("INC", nil, "EnergyShieldRechargeFaster") / 100) + if breakdown then + breakdown.EnergyShieldRecharge = breakdown.simple(output.EnergyShield * 0.2, nil, output.EnergyShieldRecharge, "EnergyShieldRecharge", "EnergyShieldRecovery") + if output.EnergyShieldRechargeDelay ~= 2 then + breakdown.EnergyShieldRechargeDelay = { + "2.00s ^8(base)", + s_format("/ %.2f ^8(faster start)", 1 + modDB:Sum("INC", nil, "EnergyShieldRechargeFaster") / 100), + s_format("= %.2fs", output.EnergyShieldRechargeDelay) + } + end + end + if modDB:Sum("FLAG", nil, "CannotEvade") then + output.EvadeChance = 0 + else + local enemyAccuracy = round(calcLib.val(enemyDB, "Accuracy")) + output.EvadeChance = 100 - calcLib.hitChance(output.Evasion, enemyAccuracy) * calcLib.mod(enemyDB, nil, "HitChance") + if breakdown then + breakdown.EvadeChance = { + s_format("Enemy level: %d ^8(%s the Configuration tab)", env.enemyLevel, env.configInput.enemyLevel and "overridden from" or "can be overridden in"), + s_format("Average enemy accuracy: %d", enemyAccuracy), + s_format("Approximate evade chance: %d%%", output.EvadeChance), + } + end + end + end + + -- Mana, life and energy shield regen + do + output.ManaRegen = round((modDB:Sum("BASE", nil, "ManaRegen") + output.Mana * modDB:Sum("BASE", nil, "ManaRegenPercent") / 100) * calcLib.mod(modDB, nil, "ManaRegen", "ManaRecovery"), 1) + if breakdown then + breakdown.ManaRegen = breakdown.simple(nil, nil, output.ManaRegen, "ManaRegen", "ManaRecovery") + end + if modDB:Sum("FLAG", nil, "NoLifeRegen") then + output.LifeRegen = 0 + elseif modDB:Sum("FLAG", nil, "ZealotsOath") then + output.LifeRegen = 0 + local lifeBase = modDB:Sum("BASE", nil, "LifeRegen") + if lifeBase > 0 then + modDB:NewMod("EnergyShieldRegen", "BASE", lifeBase, "Zealot's Oath") + end + local lifePercent = modDB:Sum("BASE", nil, "LifeRegenPercent") + if lifePercent > 0 then + modDB:NewMod("EnergyShieldRegenPercent", "BASE", lifePercent, "Zealot's Oath") + end + else + local lifeBase = modDB:Sum("BASE", nil, "LifeRegen") + local lifePercent = modDB:Sum("BASE", nil, "LifeRegenPercent") + if lifePercent > 0 then + lifeBase = lifeBase + output.Life * lifePercent / 100 + end + if lifeBase > 0 then + output.LifeRegen = lifeBase * calcLib.mod(modDB, nil, "LifeRecovery") + output.LifeRegenPercent = round(output.LifeRegen / output.Life * 100, 1) + else + output.LifeRegen = 0 + end + end + local esBase = modDB:Sum("BASE", nil, "EnergyShieldRegen") + local esPercent = modDB:Sum("BASE", nil, "EnergyShieldRegenPercent") + if esPercent > 0 then + esBase = esBase + output.EnergyShield * esPercent / 100 + end + if esBase > 0 then + output.EnergyShieldRegen = esBase * calcLib.mod(modDB, nil, "EnergyShieldRecovery") + output.EnergyShieldRegenPercent = round(output.EnergyShieldRegen / output.EnergyShield * 100, 1) + else + output.EnergyShieldRegen = 0 + end + end + + -- Leech caps + if modDB:Sum("FLAG", nil, "GhostReaver") then + output.MaxEnergyShieldLeechRate = output.EnergyShield * modDB:Sum("BASE", nil, "MaxLifeLeechRate") / 100 + if breakdown then + breakdown.MaxEnergyShieldLeechRate = { + s_format("%d ^8(maximum energy shield)", output.EnergyShield), + s_format("x %d%% ^8(percenage of life to maximum leech rate)", modDB:Sum("BASE", nil, "MaxLifeLeechRate")), + s_format("= %.1f", output.MaxEnergyShieldLeechRate) + } + end + else + output.MaxLifeLeechRate = output.Life * modDB:Sum("BASE", nil, "MaxLifeLeechRate") / 100 + if breakdown then + breakdown.MaxLifeLeechRate = { + s_format("%d ^8(maximum life)", output.Life), + s_format("x %d%% ^8(percenage of life to maximum leech rate)", modDB:Sum("BASE", nil, "MaxLifeLeechRate")), + s_format("= %.1f", output.MaxLifeLeechRate) + } + end + end + output.MaxManaLeechRate = output.Mana * modDB:Sum("BASE", nil, "MaxManaLeechRate") / 100 + if breakdown then + breakdown.MaxManaLeechRate = { + s_format("%d ^8(maximum mana)", output.Mana), + s_format("x %d%% ^8(percenage of mana to maximum leech rate)", modDB:Sum("BASE", nil, "MaxManaLeechRate")), + s_format("= %.1f", output.MaxManaLeechRate) + } + end + + -- Other defences: block, dodge, stun recovery/avoidance + do + output.MovementSpeedMod = calcLib.mod(modDB, nil, "MovementSpeed") + if modDB:Sum("FLAG", nil, "MovementSpeedCannotBeBelowBase") then + output.MovementSpeedMod = m_max(output.MovementSpeedMod, 1) + end + output.BlockChanceMax = modDB:Sum("BASE", nil, "BlockChanceMax") + local shieldData = actor.itemList["Weapon 2"] and actor.itemList["Weapon 2"].armourData + output.BlockChance = m_min(((shieldData and shieldData.BlockChance or 0) + modDB:Sum("BASE", nil, "BlockChance")) * calcLib.mod(modDB, nil, "BlockChance"), output.BlockChanceMax) + output.SpellBlockChance = m_min(modDB:Sum("BASE", nil, "SpellBlockChance") * calcLib.mod(modDB, nil, "SpellBlockChance") + output.BlockChance * modDB:Sum("BASE", nil, "BlockChanceConv") / 100, output.BlockChanceMax) + if breakdown then + breakdown.BlockChance = breakdown.simple(shieldData and shieldData.BlockChance, nil, output.BlockChance, "BlockChance") + breakdown.SpellBlockChance = breakdown.simple(output.BlockChance * modDB:Sum("BASE", nil, "BlockChanceConv") / 100, nil, output.SpellBlockChance, "SpellBlockChance") + end + if modDB:Sum("FLAG", nil, "CannotBlockAttacks") then + output.BlockChance = 0 + end + output.AttackDodgeChance = m_min(modDB:Sum("BASE", nil, "AttackDodgeChance"), 75) + output.SpellDodgeChance = m_min(modDB:Sum("BASE", nil, "SpellDodgeChance"), 75) + local stunChance = 100 - modDB:Sum("BASE", nil, "AvoidStun") + if output.EnergyShield > output.Life * 2 then + stunChance = stunChance * 0.5 + end + output.StunAvoidChance = 100 - stunChance + if output.StunAvoidChance >= 100 then + output.StunDuration = 0 + output.BlockDuration = 0 + else + output.StunDuration = 0.35 / (1 + modDB:Sum("INC", nil, "StunRecovery") / 100) + output.BlockDuration = 0.35 / (1 + modDB:Sum("INC", nil, "StunRecovery", "BlockRecovery") / 100) + if breakdown then + breakdown.StunDuration = { + "0.35s ^8(base)", + s_format("/ %.2f ^8(increased/reduced recovery)", 1 + modDB:Sum("INC", nil, "StunRecovery") / 100), + s_format("= %.2fs", output.StunDuration) + } + breakdown.BlockDuration = { + "0.35s ^8(base)", + s_format("/ %.2f ^8(increased/reduced recovery)", 1 + modDB:Sum("INC", nil, "StunRecovery", "BlockRecovery") / 100), + s_format("= %.2fs", output.BlockDuration) + } + end + end + end +end \ No newline at end of file diff --git a/Modules/CalcOffence.lua b/Modules/CalcOffence.lua new file mode 100644 index 00000000..2043a7ab --- /dev/null +++ b/Modules/CalcOffence.lua @@ -0,0 +1,1512 @@ +-- Path of Building +-- +-- Module: Calc Offence +-- Performs offence calculations. +-- +local calcs = ... + +local pairs = pairs +local ipairs = ipairs +local t_insert = table.insert +local m_floor = math.floor +local m_min = math.min +local m_max = math.max +local bor = bit.bor +local band = bit.band +local bnot = bit.bnot +local s_format = string.format + +local tempTable1 = { } +local tempTable2 = { } +local tempTable3 = { } + +local isElemental = { Fire = true, Cold = true, Lightning = true } + +-- List of all damage types, ordered according to the conversion sequence +local dmgTypeList = {"Physical", "Lightning", "Cold", "Fire", "Chaos"} + +-- Calculate min/max damage of a hit for the given damage type +local function calcHitDamage(actor, source, cfg, breakdown, damageType, ...) + local modDB = actor.modDB + + local damageTypeMin = damageType.."Min" + local damageTypeMax = damageType.."Max" + + -- Calculate base values + local damageEffectiveness = actor.mainSkill.skillData.damageEffectiveness or 1 + local addedMin = modDB:Sum("BASE", cfg, damageTypeMin) + local addedMax = modDB:Sum("BASE", cfg, damageTypeMax) + local baseMin = (source[damageTypeMin] or 0) + addedMin * damageEffectiveness + local baseMax = (source[damageTypeMax] or 0) + addedMax * damageEffectiveness + + if breakdown and not (...) and baseMin ~= 0 and baseMax ~= 0 then + t_insert(breakdown, "Base damage:") + local plus = "" + if (source[damageTypeMin] or 0) ~= 0 or (source[damageTypeMax] or 0) ~= 0 then + t_insert(breakdown, s_format("%d to %d ^8(base damage from %s)", source[damageTypeMin], source[damageTypeMax], source.type and "weapon" or "skill")) + plus = "+ " + end + if addedMin ~= 0 or addedMax ~= 0 then + if damageEffectiveness ~= 1 then + t_insert(breakdown, s_format("%s(%d to %d) x %.2f ^8(added damage multiplied by damage effectiveness)", plus, addedMin, addedMax, damageEffectiveness)) + else + t_insert(breakdown, s_format("%s%d to %d ^8(added damage)", plus, addedMin, addedMax)) + end + end + t_insert(breakdown, s_format("= %.1f to %.1f", baseMin, baseMax)) + end + + -- Calculate conversions + local addMin, addMax = 0, 0 + local conversionTable = actor.conversionTable + for _, otherType in ipairs(dmgTypeList) do + if otherType == damageType then + -- Damage can only be converted from damage types that preceed this one in the conversion sequence, so stop here + break + end + local convMult = conversionTable[otherType][damageType] + if convMult > 0 then + -- Damage is being converted/gained from the other damage type + local min, max = calcHitDamage(actor, source, cfg, breakdown, otherType, damageType, ...) + addMin = addMin + min * convMult + addMax = addMax + max * convMult + end + end + if addMin ~= 0 and addMax ~= 0 then + addMin = round(addMin) + addMax = round(addMax) + end + + if baseMin == 0 and baseMax == 0 then + -- No base damage for this type, don't need to calculate modifiers + if breakdown and (addMin ~= 0 or addMax ~= 0) then + t_insert(breakdown.damageComponents, { + source = damageType, + convSrc = (addMin ~= 0 or addMax ~= 0) and (addMin .. " to " .. addMax), + total = addMin .. " to " .. addMax, + convDst = (...) and s_format("%d%% to %s", conversionTable[damageType][...] * 100, ...), + }) + end + return addMin, addMax + end + + -- Build lists of applicable modifier names + local addElemental = isElemental[damageType] + local modNames = { damageType.."Damage", "Damage" } + for i = 1, select('#', ...) do + local dstElem = select(i, ...) + -- Add modifiers for damage types to which this damage is being converted + addElemental = addElemental or isElemental[dstElem] + t_insert(modNames, dstElem.."Damage") + end + if addElemental then + -- Damage is elemental or is being converted to elemental damage, add global elemental modifiers + t_insert(modNames, "ElementalDamage") + end + + -- Combine modifiers + local inc = 1 + modDB:Sum("INC", cfg, unpack(modNames)) / 100 + local more = m_floor(modDB:Sum("MORE", cfg, unpack(modNames)) * 100 + 0.50000001) / 100 + + if breakdown then + t_insert(breakdown.damageComponents, { + source = damageType, + base = baseMin .. " to " .. baseMax, + inc = (inc ~= 1 and "x "..inc), + more = (more ~= 1 and "x "..more), + convSrc = (addMin ~= 0 or addMax ~= 0) and (addMin .. " to " .. addMax), + total = (round(baseMin * inc * more) + addMin) .. " to " .. (round(baseMax * inc * more) + addMax), + convDst = (...) and s_format("%d%% to %s", conversionTable[damageType][...] * 100, ...), + }) + end + + return (round(baseMin * inc * more) + addMin), + (round(baseMax * inc * more) + addMax) +end + +-- Performs all offensive calculations +function calcs.offence(env, actor) + local modDB = actor.modDB + local enemyDB = actor.enemy.modDB + local output = actor.output + local breakdown = actor.breakdown + + local mainSkill = actor.mainSkill + local skillData = mainSkill.skillData + local skillFlags = mainSkill.skillFlags + local skillCfg = mainSkill.skillCfg + if skillData.showAverage then + skillFlags.showAverage = true + else + skillFlags.notAverage = true + end + + if skillFlags.disable then + -- Skill is disabled + output.CombinedDPS = 0 + return + end + + -- Merge main skill mods + modDB:AddList(mainSkill.skillModList) + + -- Update skill data + for _, value in ipairs(modDB:Sum("LIST", skillCfg, "Misc")) do + if value.type == "SkillData" then + if value.merge == "MAX" then + skillData[value.key] = m_max(value.value, skillData[value.key] or 0) + else + skillData[value.key] = value.value + end + end + end + + skillCfg.skillCond["SkillIsTriggered"] = skillData.triggered + + -- Add addition stat bonuses + if modDB:Sum("FLAG", nil, "IronGrip") then + modDB:NewMod("PhysicalDamage", "INC", actor.strDmgBonus, "Strength", bor(ModFlag.Attack, ModFlag.Projectile)) + end + if modDB:Sum("FLAG", nil, "IronWill") then + modDB:NewMod("Damage", "INC", actor.strDmgBonus, "Strength", ModFlag.Spell) + end + + if modDB:Sum("FLAG", nil, "MinionDamageAppliesToPlayer") then + -- Minion Damage conversion from The Scourge + for _, value in ipairs(modDB:Sum("LIST", env.player.mainSkill.skillCfg, "Misc")) do + if value.type == "MinionModifier" and value.mod.name == "Damage "then + modDB:AddMod(value.mod) + end + end + end + if modDB:Sum("FLAG", nil, "SpellDamageAppliesToAttacks") then + -- Spell Damage conversion from Crown of Eyes + for i, mod in ipairs(modDB.mods.Damage or { }) do + if mod.type == "INC" and band(mod.flags, ModFlag.Spell) ~= 0 then + modDB:NewMod("Damage", "INC", mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Spell)), ModFlag.Attack), mod.keywordFlags, unpack(mod.tagList)) + end + end + end + if modDB:Sum("FLAG", nil, "ClawDamageAppliesToUnarmed") then + -- Claw Damage conversion from Rigwald's Curse + for i, mod in ipairs(modDB.mods.PhysicalDamage or { }) do + if band(mod.flags, ModFlag.Claw) ~= 0 then + modDB:NewMod("PhysicalDamage", mod.type, mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Claw)), ModFlag.Unarmed), mod.keywordFlags, unpack(mod.tagList)) + end + end + end + if modDB:Sum("FLAG", nil, "ClawAttackSpeedAppliesToUnarmed") then + -- Claw Attack Speed conversion from Rigwald's Curse + for i, mod in ipairs(modDB.mods.Speed or { }) do + if band(mod.flags, ModFlag.Claw) ~= 0 and band(mod.flags, ModFlag.Attack) ~= 0 then + modDB:NewMod("Speed", mod.type, mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Claw)), ModFlag.Unarmed), mod.keywordFlags, unpack(mod.tagList)) + end + end + end + if modDB:Sum("FLAG", nil, "ClawCritChanceAppliesToUnarmed") then + -- Claw Crit Chance conversion from Rigwald's Curse + for i, mod in ipairs(modDB.mods.CritChance or { }) do + if band(mod.flags, ModFlag.Claw) ~= 0 then + modDB:NewMod("CritChance", mod.type, mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Claw)), ModFlag.Unarmed), mod.keywordFlags, unpack(mod.tagList)) + end + end + end + + local isAttack = skillFlags.attack + + -- Calculate skill type stats + if skillFlags.minion then + if mainSkill.minion and mainSkill.minion.minionData.limit then + output.ActiveMinionLimit = m_floor(calcLib.val(modDB, mainSkill.minion.minionData.limit, skillCfg)) + end + end + if skillFlags.projectile then + if modDB:Sum("FLAG", nil, "PointBlank") then + modDB:NewMod("Damage", "MORE", 50, "Point Blank", bor(ModFlag.Attack, ModFlag.Projectile), { type = "DistanceRamp", ramp = {{10,1},{35,0},{150,-1}} }) + end + output.ProjectileCount = modDB:Sum("BASE", skillCfg, "ProjectileCount") + output.PierceChance = m_min(100, modDB:Sum("BASE", skillCfg, "PierceChance")) + output.ProjectileSpeedMod = calcLib.mod(modDB, skillCfg, "ProjectileSpeed") + if breakdown then + breakdown.ProjectileSpeedMod = breakdown.mod(skillCfg, "ProjectileSpeed") + end + end + if skillFlags.area then + output.AreaOfEffectMod = calcLib.mod(modDB, skillCfg, "AreaOfEffect") + if breakdown then + breakdown.AreaOfEffectMod = breakdown.mod(skillCfg, "AreaOfEffect") + end + end + if skillFlags.trap then + output.ActiveTrapLimit = modDB:Sum("BASE", skillCfg, "ActiveTrapLimit") + output.TrapCooldown = (skillData.trapCooldown or 4) / calcLib.mod(modDB, skillCfg, "CooldownRecovery") + if breakdown then + breakdown.TrapCooldown = { + s_format("%.2fs ^8(base)", skillData.trapCooldown or 4), + s_format("/ %.2f ^8(increased/reduced cooldown recovery)", 1 + modDB:Sum("INC", skillCfg, "CooldownRecovery") / 100), + s_format("= %.2fs", output.TrapCooldown) + } + end + elseif skillData.cooldown then + output.Cooldown = skillData.cooldown / calcLib.mod(modDB, skillCfg, "CooldownRecovery") + if breakdown then + breakdown.Cooldown = { + s_format("%.2fs ^8(base)", skillData.cooldown), + s_format("/ %.2f ^8(increased/reduced cooldown recovery)", 1 + modDB:Sum("INC", skillCfg, "CooldownRecovery") / 100), + s_format("= %.2fs", output.Cooldown) + } + end + end + if skillFlags.mine then + output.ActiveMineLimit = modDB:Sum("BASE", skillCfg, "ActiveMineLimit") + end + if skillFlags.totem then + output.ActiveTotemLimit = modDB:Sum("BASE", skillCfg, "ActiveTotemLimit") + output.TotemLifeMod = calcLib.mod(modDB, skillCfg, "TotemLife") + output.TotemLife = round(m_floor(data.monsterLifeTable[skillData.totemLevel] * data.totemLifeMult[mainSkill.skillTotemId]) * output.TotemLifeMod) + if breakdown then + breakdown.TotemLifeMod = breakdown.mod(skillCfg, "TotemLife") + breakdown.TotemLife = { + "Totem level: "..skillData.totemLevel, + data.monsterLifeTable[skillData.totemLevel].." ^8(base life for a level "..skillData.totemLevel.." monster)", + "x "..data.totemLifeMult[mainSkill.skillTotemId].." ^8(life multiplier for this totem type)", + "x "..output.TotemLifeMod.." ^8(totem life modifier)", + "= "..output.TotemLife, + } + end + end + + -- Skill duration + local debuffDurationMult + if env.mode_effective then + debuffDurationMult = 1 / calcLib.mod(enemyDB, skillCfg, "BuffExpireFaster") + else + debuffDurationMult = 1 + end + do + output.DurationMod = calcLib.mod(modDB, skillCfg, "Duration") + if breakdown then + breakdown.DurationMod = breakdown.mod(skillCfg, "Duration") + end + local durationBase = skillData.duration or 0 + if durationBase > 0 then + output.Duration = durationBase * output.DurationMod + if skillData.debuff then + output.Duration = output.Duration * debuffDurationMult + end + if breakdown and output.Duration ~= durationBase then + breakdown.Duration = { + s_format("%.2fs ^8(base)", durationBase), + } + if output.DurationMod ~= 1 then + t_insert(breakdown.Duration, s_format("x %.2f ^8(duration modifier)", output.DurationMod)) + end + if skillData.debuff and debuffDurationMult ~= 1 then + t_insert(breakdown.Duration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) + end + t_insert(breakdown.Duration, s_format("= %.2fs", output.Duration)) + end + end + end + + -- Run skill setup function + do + local setupFunc = mainSkill.activeGem.data.setupFunc + if setupFunc then + setupFunc(actor, output) + end + end + + -- Cache global damage disabling flags + local canDeal = { } + for _, damageType in pairs(dmgTypeList) do + canDeal[damageType] = not modDB:Sum("FLAG", skillCfg, "DealNo"..damageType) + end + + -- Calculate damage conversion percentages + actor.conversionTable = wipeTable(actor.conversionTable) + for damageTypeIndex = 1, 4 do + local damageType = dmgTypeList[damageTypeIndex] + local globalConv = wipeTable(tempTable1) + local skillConv = wipeTable(tempTable2) + local add = wipeTable(tempTable3) + local globalTotal, skillTotal = 0, 0 + for otherTypeIndex = damageTypeIndex + 1, 5 do + -- For all possible destination types, check for global and skill conversions + otherType = dmgTypeList[otherTypeIndex] + globalConv[otherType] = modDB:Sum("BASE", skillCfg, damageType.."DamageConvertTo"..otherType, isElemental[damageType] and "ElementalDamageConvertTo"..otherType or nil) + globalTotal = globalTotal + globalConv[otherType] + skillConv[otherType] = modDB:Sum("BASE", skillCfg, "Skill"..damageType.."DamageConvertTo"..otherType) + skillTotal = skillTotal + skillConv[otherType] + add[otherType] = modDB:Sum("BASE", skillCfg, damageType.."DamageGainAs"..otherType, isElemental[damageType] and "ElementalDamageGainAs"..otherType or nil) + end + if skillTotal > 100 then + -- Skill conversion exceeds 100%, scale it down and remove non-skill conversions + local factor = 100 / skillTotal + for type, val in pairs(skillConv) do + -- The game currently doesn't scale this down even though it is supposed to + --skillConv[type] = val * factor + end + for type, val in pairs(globalConv) do + globalConv[type] = 0 + end + elseif globalTotal + skillTotal > 100 then + -- Conversion exceeds 100%, scale down non-skill conversions + local factor = (100 - skillTotal) / globalTotal + for type, val in pairs(globalConv) do + globalConv[type] = val * factor + end + globalTotal = globalTotal * factor + end + local dmgTable = { } + for type, val in pairs(globalConv) do + dmgTable[type] = (globalConv[type] + skillConv[type] + add[type]) / 100 + end + dmgTable.mult = 1 - m_min((globalTotal + skillTotal) / 100, 1) + actor.conversionTable[damageType] = dmgTable + end + actor.conversionTable["Chaos"] = { mult = 1 } + + -- Calculate mana cost (may be slightly off due to rounding differences) + do + local more = m_floor(modDB:Sum("MORE", skillCfg, "ManaCost") * 100 + 0.0001) / 100 + local inc = modDB:Sum("INC", skillCfg, "ManaCost") + local base = modDB:Sum("BASE", skillCfg, "ManaCost") + output.ManaCost = m_floor(m_max(0, (skillData.manaCost or 0) * more * (1 + inc / 100) + base)) + if mainSkill.skillTypes[SkillType.ManaCostPercent] and skillFlags.totem then + output.ManaCost = m_floor(output.Mana * output.ManaCost / 100) + end + if breakdown and output.ManaCost ~= (skillData.manaCost or 0) then + breakdown.ManaCost = { + s_format("%d ^8(base mana cost)", skillData.manaCost or 0) + } + if more ~= 1 then + t_insert(breakdown.ManaCost, s_format("x %.2f ^8(mana cost multiplier)", more)) + end + if inc ~= 0 then + t_insert(breakdown.ManaCost, s_format("x %.2f ^8(increased/reduced mana cost)", 1 + inc/100)) + end + if base ~= 0 then + t_insert(breakdown.ManaCost, s_format("- %d ^8(- mana cost)", -base)) + end + t_insert(breakdown.ManaCost, s_format("= %d", output.ManaCost)) + end + end + + -- Configure damage passes + local passList = { } + if isAttack then + output.MainHand = { } + output.OffHand = { } + if skillFlags.weapon1Attack then + if breakdown then + breakdown.MainHand = LoadModule("Modules/CalcBreakdown", modDB, output.MainHand) + end + mainSkill.weapon1Cfg.skillStats = output.MainHand + t_insert(passList, { + label = "Main Hand", + source = actor.weaponData1, + cfg = mainSkill.weapon1Cfg, + output = output.MainHand, + breakdown = breakdown and breakdown.MainHand, + }) + end + if skillFlags.weapon2Attack then + if breakdown then + breakdown.OffHand = LoadModule("Modules/CalcBreakdown", modDB, output.OffHand) + end + mainSkill.weapon2Cfg.skillStats = output.OffHand + t_insert(passList, { + label = "Off Hand", + source = actor.weaponData2, + cfg = mainSkill.weapon2Cfg, + output = output.OffHand, + breakdown = breakdown and breakdown.OffHand, + }) + end + else + t_insert(passList, { + label = "Skill", + source = skillData, + cfg = skillCfg, + output = output, + breakdown = breakdown, + }) + end + + local function combineStat(stat, mode, ...) + -- Combine stats from Main Hand and Off Hand according to the mode + if mode == "OR" or not skillFlags.bothWeaponAttack then + output[stat] = output.MainHand[stat] or output.OffHand[stat] + elseif mode == "ADD" then + output[stat] = (output.MainHand[stat] or 0) + (output.OffHand[stat] or 0) + elseif mode == "AVERAGE" then + output[stat] = ((output.MainHand[stat] or 0) + (output.OffHand[stat] or 0)) / 2 + elseif mode == "CHANCE" then + if output.MainHand[stat] and output.OffHand[stat] then + local mainChance = output.MainHand[...] * output.MainHand.HitChance + local offChance = output.OffHand[...] * output.OffHand.HitChance + local mainPortion = mainChance / (mainChance + offChance) + local offPortion = offChance / (mainChance + offChance) + output[stat] = output.MainHand[stat] * mainPortion + output.OffHand[stat] * offPortion + if breakdown then + if not breakdown[stat] then + breakdown[stat] = { } + end + t_insert(breakdown[stat], "Contribution from Main Hand:") + t_insert(breakdown[stat], s_format("%.1f", output.MainHand[stat])) + t_insert(breakdown[stat], s_format("x %.3f ^8(portion of instances created by main hand)", mainPortion)) + t_insert(breakdown[stat], s_format("= %.1f", output.MainHand[stat] * mainPortion)) + t_insert(breakdown[stat], "Contribution from Off Hand:") + t_insert(breakdown[stat], s_format("%.1f", output.OffHand[stat])) + t_insert(breakdown[stat], s_format("x %.3f ^8(portion of instances created by off hand)", offPortion)) + t_insert(breakdown[stat], s_format("= %.1f", output.OffHand[stat] * offPortion)) + t_insert(breakdown[stat], "Total:") + t_insert(breakdown[stat], s_format("%.1f + %.1f", output.MainHand[stat] * mainPortion, output.OffHand[stat] * offPortion)) + t_insert(breakdown[stat], s_format("= %.1f", output[stat])) + end + else + output[stat] = output.MainHand[stat] or output.OffHand[stat] + end + elseif mode == "DPS" then + output[stat] = (output.MainHand[stat] or 0) + (output.OffHand[stat] or 0) + if not skillData.doubleHitsWhenDualWielding then + output[stat] = output[stat] / 2 + end + end + end + + for _, pass in ipairs(passList) do + local source, output, cfg, breakdown = pass.source, pass.output, pass.cfg, pass.breakdown + + -- Calculate hit chance + output.Accuracy = calcLib.val(modDB, "Accuracy", cfg) + if breakdown then + breakdown.Accuracy = breakdown.simple(nil, cfg, output.Accuracy, "Accuracy") + end + if not isAttack or modDB:Sum("FLAG", cfg, "CannotBeEvaded") or skillData.cannotBeEvaded then + output.HitChance = 100 + else + local enemyEvasion = round(calcLib.val(enemyDB, "Evasion")) + output.HitChance = calcLib.hitChance(enemyEvasion, output.Accuracy) + if breakdown then + breakdown.HitChance = { + "Enemy level: "..env.enemyLevel..(env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), + "Average enemy evasion: "..enemyEvasion, + "Approximate hit chance: "..output.HitChance.."%", + } + end + end + + -- Calculate attack/cast speed + if skillData.timeOverride then + output.Time = skillData.timeOverride + output.Speed = 1 / output.Time + else + local baseSpeed + if isAttack then + if skillData.castTimeOverridesAttackTime then + -- Skill is overriding weapon attack speed + baseSpeed = 1 / skillData.castTime * (1 + (source.AttackSpeedInc or 0) / 100) + else + baseSpeed = source.attackRate or 1 + end + else + baseSpeed = 1 / (skillData.castTime or 1) + end + output.Speed = baseSpeed * round(calcLib.mod(modDB, cfg, "Speed"), 2) + output.Time = 1 / output.Speed + if breakdown then + breakdown.Speed = breakdown.simple(baseSpeed, cfg, output.Speed, "Speed") + end + end + if skillData.hitTimeOverride then + output.HitTime = skillData.hitTimeOverride + output.HitSpeed = 1 / output.HitTime + end + end + + if isAttack then + -- Combine hit chance and attack speed + combineStat("HitChance", "AVERAGE") + combineStat("Speed", "AVERAGE") + output.Time = 1 / output.Speed + if skillFlags.bothWeaponAttack then + if breakdown then + breakdown.Speed = { + "Both weapons:", + s_format("(%.2f + %.2f) / 2", output.MainHand.Speed, output.OffHand.Speed), + s_format("= %.2f", output.Speed), + } + end + end + end + + for _, pass in ipairs(passList) do + local globalOutput, globalBreakdown = output, breakdown + local source, output, cfg, breakdown = pass.source, pass.output, pass.cfg, pass.breakdown + + -- Calculate crit chance, crit multiplier, and their combined effect + if modDB:Sum("FLAG", nil, "NeverCrit") then + output.PreEffectiveCritChance = 0 + output.CritChance = 0 + output.CritMultiplier = 0 + output.CritEffect = 1 + else + local baseCrit = source.critChance or 0 + if baseCrit == 100 then + output.PreEffectiveCritChance = 100 + output.CritChance = 100 + else + local base = modDB:Sum("BASE", cfg, "CritChance") + local inc = modDB:Sum("INC", cfg, "CritChance") + local more = modDB:Sum("MORE", cfg, "CritChance") + output.CritChance = (baseCrit + base) * (1 + inc / 100) * more + if env.mode_effective then + output.CritChance = output.CritChance + enemyDB:Sum("BASE", nil, "SelfExtraCritChance") + end + local preCapCritChance = output.CritChance + output.CritChance = m_min(output.CritChance, 95) + if (baseCrit + base) > 0 then + output.CritChance = m_max(output.CritChance, 5) + end + output.PreEffectiveCritChance = output.CritChance + local preLuckyCritChance = output.CritChance + if env.mode_effective and modDB:Sum("FLAG", cfg, "CritChanceLucky") then + output.CritChance = (1 - (1 - output.CritChance / 100) ^ 2) * 100 + end + local preHitCheckCritChance = output.CritChance + if env.mode_effective then + output.CritChance = output.CritChance * output.HitChance / 100 + end + if breakdown and output.CritChance ~= baseCrit then + local enemyExtra = enemyDB:Sum("BASE", nil, "SelfExtraCritChance") + breakdown.CritChance = { } + if base ~= 0 then + t_insert(breakdown.CritChance, s_format("(%g + %g) ^8(base)", baseCrit, base)) + else + t_insert(breakdown.CritChance, s_format("%g ^8(base)", baseCrit + base)) + end + if inc ~= 0 then + t_insert(breakdown.CritChance, s_format("x %.2f", 1 + inc/100).." ^8(increased/reduced)") + end + if more ~= 1 then + t_insert(breakdown.CritChance, s_format("x %.2f", more).." ^8(more/less)") + end + if env.mode_effective and enemyExtra ~= 0 then + t_insert(breakdown.CritChance, s_format("+ %g ^8(extra chance for enemy to be crit)", enemyExtra)) + end + t_insert(breakdown.CritChance, s_format("= %g", preLuckyCritChance)) + if preCapCritChance > 95 then + local overCap = preCapCritChance - 95 + t_insert(breakdown.CritChance, s_format("Crit is overcapped by %.2f%% (%d%% increased Critical Strike Chance)", overCap, overCap / more / (baseCrit + base) * 100)) + end + if env.mode_effective and modDB:Sum("FLAG", cfg, "CritChanceLucky") then + t_insert(breakdown.CritChance, "Crit Chance is Lucky:") + t_insert(breakdown.CritChance, s_format("1 - (1 - %.4f) x (1 - %.4f)", preLuckyCritChance / 100, preLuckyCritChance / 100)) + t_insert(breakdown.CritChance, s_format("= %.2f", preHitCheckCritChance)) + end + if env.mode_effective and output.HitChance < 100 then + t_insert(breakdown.CritChance, "Crit confirmation roll:") + t_insert(breakdown.CritChance, s_format("%.2f", preHitCheckCritChance)) + t_insert(breakdown.CritChance, s_format("x %.2f ^8(chance to hit)", output.HitChance / 100)) + t_insert(breakdown.CritChance, s_format("= %.2f", output.CritChance)) + end + end + end + if modDB:Sum("FLAG", cfg, "NoCritMultiplier") then + output.CritMultiplier = 1 + else + local extraDamage = modDB:Sum("BASE", cfg, "CritMultiplier") / 100 + if env.mode_effective then + local enemyInc = 1 + enemyDB:Sum("INC", nil, "SelfCritMultiplier") / 100 + extraDamage = round(extraDamage * enemyInc, 2) + if breakdown and enemyInc ~= 1 then + breakdown.CritMultiplier = { + s_format("%d%% ^8(additional extra damage)", modDB:Sum("BASE", cfg, "CritMultiplier") / 100), + s_format("x %.2f ^8(increased/reduced extra crit damage taken by enemy)", enemyInc), + s_format("= %d%% ^8(extra crit damage)", extraDamage * 100), + } + end + end + output.CritMultiplier = 1 + m_max(0, extraDamage) + end + output.CritEffect = 1 - output.CritChance / 100 + output.CritChance / 100 * output.CritMultiplier + if breakdown and output.CritEffect ~= 1 then + breakdown.CritEffect = { + s_format("(1 - %.4f) ^8(portion of damage from non-crits)", output.CritChance/100), + s_format("+ (%.4f x %g) ^8(portion of damage from crits)", output.CritChance/100, output.CritMultiplier), + s_format("= %.3f", output.CritEffect), + } + end + end + + -- Calculate hit damage for each damage type + local totalHitMin, totalHitMax = 0, 0 + local totalCritMin, totalCritMax = 0, 0 + output.LifeLeech = 0 + output.LifeLeechInstant = 0 + output.ManaLeech = 0 + output.ManaLeechInstant = 0 + for pass = 1, 2 do + -- Pass 1 is critical strike damage, pass 2 is non-critical strike + cfg.skillCond["CriticalStrike"] = (pass == 1) + local lifeLeechTotal = 0 + local manaLeechTotal = 0 + for _, damageType in ipairs(dmgTypeList) do + local min, max + if skillFlags.hit and canDeal[damageType] then + if breakdown then + breakdown[damageType] = { + damageComponents = { } + } + end + min, max = calcHitDamage(actor, source, cfg, breakdown and breakdown[damageType], damageType) + local convMult = actor.conversionTable[damageType].mult + if breakdown then + t_insert(breakdown[damageType], "Hit damage:") + t_insert(breakdown[damageType], s_format("%d to %d ^8(total damage)", min, max)) + if convMult ~= 1 then + t_insert(breakdown[damageType], s_format("x %g ^8(%g%% converted to other damage types)", convMult, (1-convMult)*100)) + end + end + min = min * convMult + max = max * convMult + if pass == 1 then + -- Apply crit multiplier + min = min * output.CritMultiplier + max = max * output.CritMultiplier + end + if (min ~= 0 or max ~= 0) and env.mode_effective then + -- Apply enemy resistances and damage taken modifiers + local preMult + local resist = 0 + local pen = 0 + local taken = enemyDB:Sum("INC", nil, "DamageTaken", damageType.."DamageTaken") + if damageType == "Physical" then + resist = enemyDB:Sum("INC", nil, "PhysicalDamageReduction") + else + resist = enemyDB:Sum("BASE", nil, damageType.."Resist") + if isElemental[damageType] then + resist = resist + enemyDB:Sum("BASE", nil, "ElementalResist") + pen = modDB:Sum("BASE", cfg, damageType.."Penetration", "ElementalPenetration") + taken = taken + enemyDB:Sum("INC", nil, "ElementalDamageTaken") + end + resist = m_min(resist, 75) + end + if skillFlags.projectile then + taken = taken + enemyDB:Sum("INC", nil, "ProjectileDamageTaken") + end + local effMult = (1 + taken / 100) + if not isElemental[damageType] or not modDB:Sum("FLAG", cfg, "IgnoreElementalResistances") then + effMult = effMult * (1 - (resist - pen) / 100) + end + min = min * effMult + max = max * effMult + if env.mode == "CALCS" then + output[damageType.."EffMult"] = effMult + end + if breakdown and effMult ~= 1 then + t_insert(breakdown[damageType], s_format("x %.3f ^8(effective DPS modifier)", effMult)) + breakdown[damageType.."EffMult"] = breakdown.effMult(damageType, resist, pen, taken, effMult) + end + end + if breakdown then + t_insert(breakdown[damageType], s_format("= %d to %d", min, max)) + end + if skillFlags.mine or skillFlags.trap or skillFlags.totem then + if not modDB:Sum("FLAG", cfg, "CannotLeechLife") then + local lifeLeech = modDB:Sum("BASE", cfg, "DamageLifeLeechToPlayer") + if lifeLeech > 0 then + lifeLeechTotal = lifeLeechTotal + (min + max) / 2 * lifeLeech / 100 + end + end + else + if not modDB:Sum("FLAG", cfg, "CannotLeechLife") then + local lifeLeech = modDB:Sum("BASE", cfg, "DamageLifeLeech", damageType.."DamageLifeLeech", isElemental[damageType] and "ElementalDamageLifeLeech" or nil) + enemyDB:Sum("BASE", nil, "SelfDamageLifeLeech") / 100 + if lifeLeech > 0 then + lifeLeechTotal = lifeLeechTotal + (min + max) / 2 * lifeLeech / 100 + end + end + if not modDB:Sum("FLAG", cfg, "CannotLeechMana") then + local manaLeech = modDB:Sum("BASE", cfg, "DamageManaLeech", damageType.."DamageManaLeech", isElemental[damageType] and "ElementalDamageManaLeech" or nil) + enemyDB:Sum("BASE", nil, "SelfDamageManaLeech") / 100 + if manaLeech > 0 then + manaLeechTotal = manaLeechTotal + (min + max) / 2 * manaLeech / 100 + end + end + end + else + min, max = 0, 0 + if breakdown then + breakdown[damageType] = { + "You can't deal "..damageType.." damage" + } + end + end + if pass == 1 then + output[damageType.."CritAverage"] = (min + max) / 2 + totalCritMin = totalCritMin + min + totalCritMax = totalCritMax + max + else + if env.mode == "CALCS" then + output[damageType.."Min"] = min + output[damageType.."Max"] = max + end + output[damageType.."HitAverage"] = (min + max) / 2 + totalHitMin = totalHitMin + min + totalHitMax = totalHitMax + max + end + end + local portion = (pass == 1) and (output.CritChance / 100) or (1 - output.CritChance / 100) + if modDB:Sum("FLAG", cfg, "InstantLifeLeech") then + output.LifeLeechInstant = output.LifeLeechInstant + lifeLeechTotal * portion + else + output.LifeLeech = output.LifeLeech + lifeLeechTotal * portion + end + if modDB:Sum("FLAG", cfg, "InstantManaLeech") then + output.ManaLeechInstant = output.ManaLeechInstant + manaLeechTotal * portion + else + output.ManaLeech = output.ManaLeech + manaLeechTotal * portion + end + end + output.TotalMin = totalHitMin + output.TotalMax = totalHitMax + + if not env.configInput.EEIgnoreHitDamage and (output.FireHitAverage + output.ColdHitAverage + output.LightningHitAverage > 0) then + -- Update enemy hit-by-damage-type conditions + enemyDB.conditions.HitByFireDamage = output.FireHitAverage > 0 + enemyDB.conditions.HitByColdDamage = output.ColdHitAverage > 0 + enemyDB.conditions.HitByLightningDamage = output.LightningHitAverage > 0 + end + + local hitRate = output.HitChance / 100 * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) + + -- Calculate leech + local function getLeechInstances(amount, total) + if total == 0 then + return 0, 0 + end + local duration = amount / total / 0.02 + return duration, duration * hitRate + end + output.LifeLeechDuration, output.LifeLeechInstances = getLeechInstances(output.LifeLeech, modDB:Sum("FLAG", nil, "GhostReaver") and globalOutput.EnergyShield or globalOutput.Life) + output.LifeLeechInstantRate = output.LifeLeechInstant * hitRate + output.ManaLeechDuration, output.ManaLeechInstances = getLeechInstances(output.ManaLeech, globalOutput.Mana) + output.ManaLeechInstantRate = output.ManaLeechInstant * hitRate + + -- Calculate gain on hit + if skillFlags.mine or skillFlags.trap or skillFlags.totem then + output.LifeOnHit = 0 + output.EnergyShieldOnHit = 0 + output.ManaOnHit = 0 + else + output.LifeOnHit = modDB:Sum("BASE", skillCfg, "LifeOnHit") + enemyDB:Sum("BASE", skillCfg, "SelfLifeOnHit") + output.EnergyShieldOnHit = modDB:Sum("BASE", skillCfg, "EnergyShieldOnHit") + enemyDB:Sum("BASE", skillCfg, "SelfEnergyShieldOnHit") + output.ManaOnHit = modDB:Sum("BASE", skillCfg, "ManaOnHit") + enemyDB:Sum("BASE", skillCfg, "SelfManaOnHit") + end + output.LifeOnHitRate = output.LifeOnHit * hitRate + output.EnergyShieldOnHitRate = output.EnergyShieldOnHit * hitRate + output.ManaOnHitRate = output.ManaOnHit * hitRate + + -- Calculate average damage and final DPS + output.AverageHit = (totalHitMin + totalHitMax) / 2 * (1 - output.CritChance / 100) + (totalCritMin + totalCritMax) / 2 * output.CritChance / 100 + output.AverageDamage = output.AverageHit * output.HitChance / 100 + output.TotalDPS = output.AverageDamage * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) + if breakdown then + if output.CritEffect ~= 1 then + breakdown.AverageHit = { + s_format("%.1f x (1 - %.4f) ^8(damage from non-crits)", (totalHitMin + totalHitMax) / 2, output.CritChance / 100), + s_format("+ %.1f x %.4f ^8(damage from crits)", (totalCritMin + totalCritMax) / 2, output.CritChance / 100), + s_format("= %.1f", output.AverageHit), + } + end + if isAttack then + breakdown.AverageDamage = { } + t_insert(breakdown.AverageDamage, s_format("%s:", pass.label)) + t_insert(breakdown.AverageDamage, s_format("%.1f ^8(average hit)", output.AverageHit)) + t_insert(breakdown.AverageDamage, s_format("x %.2f ^8(chance to hit)", output.HitChance / 100)) + t_insert(breakdown.AverageDamage, s_format("= %.1f", output.AverageDamage)) + end + end + end + + if isAttack then + -- Combine crit stats, average damage and DPS + combineStat("PreEffectiveCritChance", "AVERAGE") + combineStat("CritChance", "AVERAGE") + combineStat("CritMultiplier", "AVERAGE") + combineStat("AverageDamage", "DPS") + combineStat("TotalDPS", "DPS") + combineStat("LifeLeechDuration", "DPS") + combineStat("LifeLeechInstances", "DPS") + combineStat("LifeLeechInstant", "DPS") + combineStat("LifeLeechInstantRate", "DPS") + combineStat("ManaLeechDuration", "DPS") + combineStat("ManaLeechInstances", "DPS") + combineStat("ManaLeechInstant", "DPS") + combineStat("ManaLeechInstantRate", "DPS") + combineStat("LifeOnHit", "DPS") + combineStat("LifeOnHitRate", "DPS") + combineStat("EnergyShieldOnHit", "DPS") + combineStat("EnergyShieldOnHitRate", "DPS") + combineStat("ManaOnHit", "DPS") + combineStat("ManaOnHitRate", "DPS") + if skillFlags.bothWeaponAttack then + if breakdown then + breakdown.AverageDamage = { } + t_insert(breakdown.AverageDamage, "Both weapons:") + if skillData.doubleHitsWhenDualWielding then + t_insert(breakdown.AverageDamage, s_format("%.1f + %.1f ^8(skill hits with both weapons at once)", output.MainHand.AverageDamage, output.OffHand.AverageDamage)) + else + t_insert(breakdown.AverageDamage, s_format("(%.1f + %.1f) / 2 ^8(skill alternates weapons)", output.MainHand.AverageDamage, output.OffHand.AverageDamage)) + end + t_insert(breakdown.AverageDamage, s_format("= %.1f", output.AverageDamage)) + end + end + end + if env.mode == "CALCS" then + if skillData.showAverage then + output.DisplayDamage = s_format("%.1f average damage", output.AverageDamage) + else + output.DisplayDamage = s_format("%.1f DPS", output.TotalDPS) + end + end + if breakdown then + if isAttack then + breakdown.TotalDPS = { + s_format("%.1f ^8(average damage)", output.AverageDamage), + output.HitSpeed and s_format("x %.2f ^8(hit rate)", output.HitSpeed) or s_format("x %.2f ^8(attack rate)", output.Speed), + } + else + breakdown.TotalDPS = { + s_format("%.1f ^8(average hit)", output.AverageDamage), + output.HitSpeed and s_format("x %.2f ^8(hit rate)", output.HitSpeed) or s_format("x %.2f ^8(cast rate)", output.Speed), + } + end + if skillData.dpsMultiplier then + t_insert(breakdown.TotalDPS, s_format("x %g ^8(DPS multiplier for this skill)", skillData.dpsMultiplier)) + end + t_insert(breakdown.TotalDPS, s_format("= %.1f", output.TotalDPS)) + end + + -- Calculate leech rates + if modDB:Sum("FLAG", nil, "GhostReaver") then + output.LifeLeechRate = 0 + output.LifeLeechPerHit = 0 + output.EnergyShieldLeechInstanceRate = output.EnergyShield * 0.02 * calcLib.mod(modDB, skillCfg, "LifeLeechRate") + output.EnergyShieldLeechRate = output.LifeLeechInstantRate + m_min(output.LifeLeechInstances * output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) + output.EnergyShieldLeechPerHit = m_min(output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) * output.LifeLeechDuration + output.LifeLeechInstant + else + output.LifeLeechInstanceRate = output.Life * 0.02 * calcLib.mod(modDB, skillCfg, "LifeLeechRate") + output.LifeLeechRate = output.LifeLeechInstantRate + m_min(output.LifeLeechInstances * output.LifeLeechInstanceRate, output.MaxLifeLeechRate) + output.LifeLeechPerHit = m_min(output.LifeLeechInstanceRate, output.MaxLifeLeechRate) * output.LifeLeechDuration + output.LifeLeechInstant + output.EnergyShieldLeechRate = 0 + output.EnergyShieldLeechPerHit = 0 + end + output.ManaLeechInstanceRate = output.Mana * 0.02 * calcLib.mod(modDB, skillCfg, "ManaLeechRate") + output.ManaLeechRate = output.ManaLeechInstantRate + m_min(output.ManaLeechInstances * output.ManaLeechInstanceRate, output.MaxManaLeechRate) + output.ManaLeechPerHit = m_min(output.ManaLeechInstanceRate, output.MaxManaLeechRate) * output.ManaLeechDuration + output.ManaLeechInstant + skillFlags.leechES = output.EnergyShieldLeechRate > 0 + skillFlags.leechLife = output.LifeLeechRate > 0 + skillFlags.leechMana = output.ManaLeechRate > 0 + if skillData.showAverage then + output.LifeLeechGainPerHit = output.LifeLeechPerHit + output.LifeOnHit + output.EnergyShieldLeechGainPerHit = output.EnergyShieldLeechPerHit + output.EnergyShieldOnHit + output.ManaLeechGainPerHit = output.ManaLeechPerHit + output.ManaOnHit + else + output.LifeLeechGainRate = output.LifeLeechRate + output.LifeOnHitRate + output.EnergyShieldLeechGainRate = output.EnergyShieldLeechRate + output.EnergyShieldOnHitRate + output.ManaLeechGainRate = output.ManaLeechRate + output.ManaOnHitRate + end + if breakdown then + if skillFlags.leechLife then + breakdown.LifeLeech = breakdown.leech(output.LifeLeechInstant, output.LifeLeechInstantRate, output.LifeLeechInstances, output.Life, "LifeLeechRate", output.MaxLifeLeechRate, output.LifeLeechDuration) + end + if skillFlags.leechES then + breakdown.EnergyShieldLeech = breakdown.leech(output.LifeLeechInstant, output.LifeLeechInstantRate, output.LifeLeechInstances, output.EnergyShield, "LifeLeechRate", output.MaxEnergyShieldLeechRate, output.LifeLeechDuration) + end + if skillFlags.leechMana then + breakdown.ManaLeech = breakdown.leech(output.ManaLeechInstant, output.ManaLeechInstantRate, output.ManaLeechInstances, output.Mana, "ManaLeechRate", output.MaxManaLeechRate, output.ManaLeechDuration) + end + end + + -- Calculate skill DOT components + local dotCfg = { + skillName = skillCfg.skillName, + skillPart = skillCfg.skillPart, + slotName = skillCfg.slotName, + flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0, skillData.dotIsArea and ModFlag.Area or 0), + keywordFlags = skillCfg.keywordFlags + } + mainSkill.dotCfg = dotCfg + output.TotalDot = 0 + for _, damageType in ipairs(dmgTypeList) do + local baseVal + if canDeal[damageType] then + baseVal = skillData[damageType.."Dot"] or 0 + else + baseVal = 0 + end + if baseVal > 0 then + skillFlags.dot = true + local effMult = 1 + if env.mode_effective then + local resist = 0 + local taken = enemyDB:Sum("INC", nil, "DamageTaken", damageType.."DamageTaken", "DotTaken") + if damageType == "Physical" then + resist = enemyDB:Sum("INC", nil, "PhysicalDamageReduction") + else + resist = enemyDB:Sum("BASE", nil, damageType.."Resist") + if isElemental[damageType] then + resist = resist + enemyDB:Sum("BASE", nil, "ElementalResist") + taken = taken + enemyDB:Sum("INC", nil, "ElementalDamageTaken") + end + if damageType == "Fire" then + taken = taken + enemyDB:Sum("INC", nil, "BurningDamageTaken") + end + resist = m_min(resist, 75) + end + effMult = (1 - resist / 100) * (1 + taken / 100) + output[damageType.."DotEffMult"] = effMult + if breakdown and effMult ~= 1 then + breakdown[damageType.."DotEffMult"] = breakdown.effMult(damageType, resist, 0, taken, effMult) + end + end + local inc = modDB:Sum("INC", dotCfg, "Damage", damageType.."Damage", isElemental[damageType] and "ElementalDamage" or nil) + local more = round(modDB:Sum("MORE", dotCfg, "Damage", damageType.."Damage", isElemental[damageType] and "ElementalDamage" or nil), 2) + local total = baseVal * (1 + inc/100) * more * effMult + output[damageType.."Dot"] = total + output.TotalDot = output.TotalDot + total + if breakdown then + breakdown[damageType.."Dot"] = { } + breakdown.dot(breakdown[damageType.."Dot"], baseVal, inc, more, nil, effMult, total) + end + end + end + + skillFlags.bleed = false + skillFlags.poison = false + skillFlags.ignite = false + skillFlags.igniteCanStack = modDB:Sum("FLAG", skillCfg, "IgniteCanStack") + skillFlags.shock = false + skillFlags.freeze = false + for _, pass in ipairs(passList) do + local globalOutput, globalBreakdown = output, breakdown + local source, output, cfg, breakdown = pass.source, pass.output, pass.cfg, pass.breakdown + + -- Calculate chance to inflict secondary dots/status effects + cfg.skillCond["CriticalStrike"] = true + if modDB:Sum("FLAG", cfg, "CannotBleed") then + output.BleedChanceOnCrit = 0 + else + output.BleedChanceOnCrit = m_min(100, modDB:Sum("BASE", cfg, "BleedChance")) + end + output.PoisonChanceOnCrit = m_min(100, modDB:Sum("BASE", cfg, "PoisonChance")) + if modDB:Sum("FLAG", cfg, "CannotIgnite") then + output.IgniteChanceOnCrit = 0 + else + output.IgniteChanceOnCrit = 100 + end + if modDB:Sum("FLAG", cfg, "CannotShock") then + output.ShockChanceOnCrit = 0 + else + output.ShockChanceOnCrit = 100 + end + if modDB:Sum("FLAG", cfg, "CannotFreeze") then + output.FreezeChanceOnCrit = 0 + else + output.FreezeChanceOnCrit = 100 + end + cfg.skillCond["CriticalStrike"] = false + if modDB:Sum("FLAG", cfg, "CannotBleed") then + output.BleedChanceOnHit = 0 + else + output.BleedChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "BleedChance")) + end + output.PoisonChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "PoisonChance")) + if modDB:Sum("FLAG", cfg, "CannotIgnite") then + output.IgniteChanceOnHit = 0 + else + output.IgniteChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "EnemyIgniteChance") + enemyDB:Sum("BASE", nil, "SelfIgniteChance")) + end + if modDB:Sum("FLAG", cfg, "CannotShock") then + output.ShockChanceOnHit = 0 + else + output.ShockChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "EnemyShockChance") + enemyDB:Sum("BASE", nil, "SelfShockChance")) + end + if modDB:Sum("FLAG", cfg, "CannotFreeze") then + output.FreezeChanceOnHit = 0 + else + output.FreezeChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "EnemyFreezeChance") + enemyDB:Sum("BASE", nil, "SelfFreezeChance")) + if modDB:Sum("FLAG", cfg, "CritsDontAlwaysFreeze") then + output.FreezeChanceOnCrit = output.FreezeChanceOnHit + end + end + if skillFlags.attack and skillFlags.projectile and modDB:Sum("FLAG", cfg, "ArrowsThatPierceCauseBleeding") then + output.BleedChanceOnHit = 100 - (1 - output.BleedChanceOnHit / 100) * (1 - globalOutput.PierceChance / 100) * 100 + output.BleedChanceOnCrit = 100 - (1 - output.BleedChanceOnCrit / 100) * (1 - globalOutput.PierceChance / 100) * 100 + end + + local function calcSecondaryEffectBase(type, sourceHitDmg, sourceCritDmg) + -- Calculate the inflict chance and base damage of a secondary effect (bleed/poison/ignite/shock/freeze) + local chanceOnHit, chanceOnCrit = output[type.."ChanceOnHit"], output[type.."ChanceOnCrit"] + local chanceFromHit = chanceOnHit * (1 - output.CritChance / 100) + local chanceFromCrit = chanceOnCrit * output.CritChance / 100 + local chance = chanceFromHit + chanceFromCrit + output[type.."Chance"] = chance + local baseFromHit = sourceHitDmg * chanceFromHit / (chanceFromHit + chanceFromCrit) + local baseFromCrit = sourceCritDmg * chanceFromCrit / (chanceFromHit + chanceFromCrit) + local baseVal = baseFromHit + baseFromCrit + if breakdown and chance ~= 0 then + local breakdownChance = breakdown[type.."Chance"] or { } + breakdown[type.."Chance"] = breakdownChance + if breakdownChance[1] then + t_insert(breakdownChance, "") + end + if isAttack then + t_insert(breakdownChance, pass.label..":") + end + t_insert(breakdownChance, s_format("Chance on Non-crit: %d%%", chanceOnHit)) + t_insert(breakdownChance, s_format("Chance on Crit: %d%%", chanceOnCrit)) + if chanceOnHit ~= chanceOnCrit then + t_insert(breakdownChance, "Combined chance:") + t_insert(breakdownChance, s_format("%d x (1 - %.4f) ^8(chance from non-crits)", chanceOnHit, output.CritChance/100)) + t_insert(breakdownChance, s_format("+ %d x %.4f ^8(chance from crits)", chanceOnCrit, output.CritChance/100)) + t_insert(breakdownChance, s_format("= %.2f", chance)) + end + end + if breakdown and baseVal > 0 then + local breakdownDPS = breakdown[type.."DPS"] or { } + breakdown[type.."DPS"] = breakdownDPS + if breakdownDPS[1] then + t_insert(breakdownDPS, "") + end + if isAttack then + t_insert(breakdownDPS, pass.label..":") + end + if sourceHitDmg == sourceCritDmg then + t_insert(breakdownDPS, "Base damage:") + t_insert(breakdownDPS, s_format("%.1f ^8(source damage)",sourceHitDmg)) + else + if baseFromHit > 0 then + t_insert(breakdownDPS, "Base from Non-crits:") + t_insert(breakdownDPS, s_format("%.1f ^8(source damage from non-crits)", sourceHitDmg)) + t_insert(breakdownDPS, s_format("x %.3f ^8(portion of instances created by non-crits)", chanceFromHit / (chanceFromHit + chanceFromCrit))) + t_insert(breakdownDPS, s_format("= %.1f", baseFromHit)) + end + if baseFromCrit > 0 then + t_insert(breakdownDPS, "Base from Crits:") + t_insert(breakdownDPS, s_format("%.1f ^8(source damage from crits)", sourceCritDmg)) + t_insert(breakdownDPS, s_format("x %.3f ^8(portion of instances created by crits)", chanceFromCrit / (chanceFromHit + chanceFromCrit))) + t_insert(breakdownDPS, s_format("= %.1f", baseFromCrit)) + end + if baseFromHit > 0 and baseFromCrit > 0 then + t_insert(breakdownDPS, "Total base damage:") + t_insert(breakdownDPS, s_format("%.1f + %.1f", baseFromHit, baseFromCrit)) + t_insert(breakdownDPS, s_format("= %.1f", baseVal)) + end + end + end + return baseVal + end + + -- Calculate bleeding chance and damage + if canDeal.Physical and (output.BleedChanceOnHit + output.BleedChanceOnCrit) > 0 then + local sourceHitDmg = output.PhysicalHitAverage + local sourceCritDmg = output.PhysicalCritAverage + local basePercent = skillData.bleedBasePercent or 10 + local baseVal = calcSecondaryEffectBase("Bleed", sourceHitDmg, sourceCritDmg) * basePercent / 100 + if baseVal > 0 then + skillFlags.bleed = true + skillFlags.duration = true + if not mainSkill.bleedCfg then + mainSkill.bleedCfg = { + skillName = skillCfg.skillName, + slotName = skillCfg.slotName, + flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), + keywordFlags = bor(skillCfg.keywordFlags, KeywordFlag.Bleed) + } + end + local dotCfg = mainSkill.bleedCfg + local effMult = 1 + if env.mode_effective then + local resist = enemyDB:Sum("INC", nil, "PhysicalDamageReduction") + local taken = enemyDB:Sum("INC", dotCfg, "DamageTaken", "PhysicalDamageTaken", "DotTaken") + effMult = (1 - resist / 100) * (1 + taken / 100) + globalOutput["BleedEffMult"] = effMult + if breakdown and effMult ~= 1 then + globalBreakdown.BleedEffMult = breakdown.effMult("Physical", resist, 0, taken, effMult) + end + end + local inc = modDB:Sum("INC", dotCfg, "Damage", "PhysicalDamage") + local more = round(modDB:Sum("MORE", dotCfg, "Damage", "PhysicalDamage"), 2) + output.BleedDPS = baseVal * (1 + inc/100) * more * effMult + local durationMod = calcLib.mod(modDB, dotCfg, "Duration") * calcLib.mod(enemyDB, nil, "SelfBleedDuration") + globalOutput.BleedDuration = 5 * durationMod * debuffDurationMult + if breakdown then + t_insert(breakdown.BleedDPS, s_format("x %.2f ^8(bleed deals %d%% per second)", basePercent/100, basePercent)) + t_insert(breakdown.BleedDPS, s_format("= %.1f", baseVal)) + t_insert(breakdown.BleedDPS, "Bleed DPS:") + breakdown.dot(breakdown.BleedDPS, baseVal, inc, more, nil, effMult, output.BleedDPS) + if globalOutput.BleedDuration ~= 5 then + globalBreakdown.BleedDuration = { + "5.00s ^8(base duration)" + } + if durationMod ~= 1 then + t_insert(globalBreakdown.BleedDuration, s_format("x %.2f ^8(duration modifier)", durationMod)) + end + if debuffDurationMult ~= 1 then + t_insert(globalBreakdown.BleedDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) + end + t_insert(globalBreakdown.BleedDuration, s_format("= %.2fs", globalOutput.BleedDuration)) + end + end + end + end + + -- Calculate poison chance and damage + if canDeal.Chaos and (output.PoisonChanceOnHit + output.PoisonChanceOnCrit) > 0 then + local sourceHitDmg = output.PhysicalHitAverage + output.ChaosHitAverage + local sourceCritDmg = output.PhysicalCritAverage + output.ChaosCritAverage + local baseVal = calcSecondaryEffectBase("Poison", sourceHitDmg, sourceCritDmg * modDB:Sum("MORE", cfg, "PoisonDamageOnCrit")) * 0.08 + if baseVal > 0 then + skillFlags.poison = true + skillFlags.duration = true + if not mainSkill.poisonCfg then + mainSkill.poisonCfg = { + skillName = skillCfg.skillName, + slotName = skillCfg.slotName, + flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), + keywordFlags = bor(skillCfg.keywordFlags, KeywordFlag.Poison) + } + end + local dotCfg = mainSkill.poisonCfg + local effMult = 1 + if env.mode_effective then + local resist = m_min(enemyDB:Sum("BASE", nil, "ChaosResist"), 75) + local taken = enemyDB:Sum("INC", nil, "DamageTaken", "ChaosDamageTaken", "DotTaken") + effMult = (1 - resist / 100) * (1 + taken / 100) + globalOutput["PoisonEffMult"] = effMult + if breakdown and effMult ~= 1 then + globalBreakdown.PoisonEffMult = breakdown.effMult("Chaos", resist, 0, taken, effMult) + end + end + local inc = modDB:Sum("INC", dotCfg, "Damage", "ChaosDamage") + local more = round(modDB:Sum("MORE", dotCfg, "Damage", "ChaosDamage"), 2) + output.PoisonDPS = baseVal * (1 + inc/100) * more * effMult + local durationBase + if skillData.poisonDurationIsSkillDuration then + durationBase = skillData.duration + else + durationBase = 2 + end + local durationMod = calcLib.mod(modDB, dotCfg, "Duration") * calcLib.mod(enemyDB, nil, "SelfPoisonDuration") + globalOutput.PoisonDuration = durationBase * durationMod * debuffDurationMult + output.PoisonDamage = output.PoisonDPS * globalOutput.PoisonDuration + if skillData.showAverage then + output.TotalPoisonAverageDamage = output.HitChance / 100 * output.PoisonChance / 100 * output.PoisonDamage + else + output.TotalPoisonDPS = output.HitChance / 100 * output.PoisonChance / 100 * output.PoisonDamage * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) + end + if breakdown then + t_insert(breakdown.PoisonDPS, "x 0.08 ^8(poison deals 8% per second)") + t_insert(breakdown.PoisonDPS, s_format("= %.1f", baseVal, 1)) + t_insert(breakdown.PoisonDPS, "Poison DPS:") + breakdown.dot(breakdown.PoisonDPS, baseVal, inc, more, nil, effMult, output.PoisonDPS) + if globalOutput.PoisonDuration ~= 2 then + globalBreakdown.PoisonDuration = { + s_format("%.2fs ^8(base duration)", durationBase) + } + if durationMod ~= 1 then + t_insert(globalBreakdown.PoisonDuration, s_format("x %.2f ^8(duration modifier)", durationMod)) + end + if debuffDurationMult ~= 1 then + t_insert(globalBreakdown.PoisonDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) + end + t_insert(globalBreakdown.PoisonDuration, s_format("= %.2fs", globalOutput.PoisonDuration)) + end + breakdown.PoisonDamage = { } + if isAttack then + t_insert(breakdown.PoisonDamage, pass.label..":") + end + t_insert(breakdown.PoisonDamage, s_format("%.1f ^8(damage per second)", output.PoisonDPS)) + t_insert(breakdown.PoisonDamage, s_format("x %.2fs ^8(poison duration)", globalOutput.PoisonDuration)) + t_insert(breakdown.PoisonDamage, s_format("= %.1f ^8damage per poison stack", output.PoisonDamage)) + end + end + end + + -- Calculate ignite chance and damage + if canDeal.Fire and (output.IgniteChanceOnHit + output.IgniteChanceOnCrit) > 0 then + local sourceHitDmg = 0 + local sourceCritDmg = 0 + if canDeal.Fire and not modDB:Sum("FLAG", cfg, "FireCannotIgnite") then + sourceHitDmg = sourceHitDmg + output.FireHitAverage + sourceCritDmg = sourceCritDmg + output.FireCritAverage + end + if canDeal.Cold and modDB:Sum("FLAG", cfg, "ColdCanIgnite") then + sourceHitDmg = sourceHitDmg + output.ColdHitAverage + sourceCritDmg = sourceCritDmg + output.ColdCritAverage + end + local igniteMode = env.configInput.igniteMode or "AVERAGE" + if igniteMode == "CRIT" then + output.IgniteChanceOnHit = 0 + end + if globalBreakdown then + globalBreakdown.IgniteDPS = { + s_format("Ignite mode: %s ^8(can be changed in the Configuration tab)", igniteMode == "CRIT" and "Crit Damage" or "Average Damage") + } + end + local baseVal = calcSecondaryEffectBase("Ignite", sourceHitDmg, sourceCritDmg) * 0.2 + if baseVal > 0 then + skillFlags.ignite = true + if not mainSkill.igniteCfg then + mainSkill.igniteCfg = { + skillName = skillCfg.skillName, + slotName = skillCfg.slotName, + flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), + keywordFlags = skillCfg.keywordFlags, + } + end + local dotCfg = mainSkill.igniteCfg + local effMult = 1 + if env.mode_effective then + local resist = m_min(enemyDB:Sum("BASE", nil, "FireResist", "ElementalResist"), 75) + local taken = enemyDB:Sum("INC", dotCfg, "DamageTaken", "FireDamageTaken", "ElementalDamageTaken", "BurningDamageTaken", "DotTaken") + effMult = (1 - resist / 100) * (1 + taken / 100) + globalOutput["IgniteEffMult"] = effMult + if breakdown and effMult ~= 1 then + globalBreakdown.IgniteEffMult = breakdown.effMult("Fire", resist, 0, taken, effMult) + end + end + local inc = modDB:Sum("INC", dotCfg, "Damage", "FireDamage", "ElementalDamage") + local more = round(modDB:Sum("MORE", dotCfg, "Damage", "FireDamage", "ElementalDamage"), 2) + local burnRateMod = calcLib.mod(modDB, cfg, "IgniteBurnRate") + output.IgniteDPS = baseVal * (1 + inc/100) * more * burnRateMod * effMult + local incDur = modDB:Sum("INC", dotCfg, "EnemyIgniteDuration") + enemyDB:Sum("INC", nil, "SelfIgniteDuration") + local moreDur = enemyDB:Sum("MORE", nil, "SelfIgniteDuration") + globalOutput.IgniteDuration = 4 * (1 + incDur / 100) * moreDur / burnRateMod * debuffDurationMult + if skillFlags.igniteCanStack then + output.IgniteDamage = output.IgniteDPS * globalOutput.IgniteDuration + if skillData.showAverage then + output.TotalIgniteAverageDamage = output.HitChance / 100 * output.IgniteChance / 100 * output.IgniteDamage + else + output.TotalIgniteDPS = output.HitChance / 100 * output.IgniteChance / 100 * output.IgniteDamage * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) + end + end + if breakdown then + t_insert(breakdown.IgniteDPS, "x 0.2 ^8(ignite deals 20% per second)") + t_insert(breakdown.IgniteDPS, s_format("= %.1f", baseVal, 1)) + t_insert(breakdown.IgniteDPS, "Ignite DPS:") + breakdown.dot(breakdown.IgniteDPS, baseVal, inc, more, burnRateMod, effMult, output.IgniteDPS) + if skillFlags.igniteCanStack then + breakdown.IgniteDamage = { } + if isAttack then + t_insert(breakdown.IgniteDamage, pass.label..":") + end + t_insert(breakdown.IgniteDamage, s_format("%.1f ^8(damage per second)", output.IgniteDPS)) + t_insert(breakdown.IgniteDamage, s_format("x %.2fs ^8(ignite duration)", globalOutput.IgniteDuration)) + t_insert(breakdown.IgniteDamage, s_format("= %.1f ^8damage per ignite stack", output.IgniteDamage)) + end + if globalOutput.IgniteDuration ~= 4 then + globalBreakdown.IgniteDuration = { + s_format("4.00s ^8(base duration)", durationBase) + } + if incDur ~= 0 then + t_insert(globalBreakdown.IgniteDuration, s_format("x %.2f ^8(increased/reduced duration)", 1 + incDur/100)) + end + if moreDur ~= 1 then + t_insert(globalBreakdown.IgniteDuration, s_format("x %.2f ^8(more/less duration)", moreDur)) + end + if burnRateMod ~= 1 then + t_insert(globalBreakdown.IgniteDuration, s_format("/ %.2f ^8(rate modifier)", burnRateMod)) + end + if debuffDurationMult ~= 1 then + t_insert(globalBreakdown.IgniteDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) + end + t_insert(globalBreakdown.IgniteDuration, s_format("= %.2fs", globalOutput.IgniteDuration)) + end + end + end + end + + -- Calculate shock and freeze chance + duration modifier + if (output.ShockChanceOnHit + output.ShockChanceOnCrit) > 0 then + local sourceHitDmg = 0 + local sourceCritDmg = 0 + if canDeal.Lightning and not modDB:Sum("FLAG", cfg, "LightningCannotShock") then + sourceHitDmg = sourceHitDmg + output.LightningHitAverage + sourceCritDmg = sourceCritDmg + output.LightningCritAverage + end + if canDeal.Physical and modDB:Sum("FLAG", cfg, "PhysicalCanShock") then + sourceHitDmg = sourceHitDmg + output.PhysicalHitAverage + sourceCritDmg = sourceCritDmg + output.PhysicalCritAverage + end + if canDeal.Fire and modDB:Sum("FLAG", cfg, "FireCanShock") then + sourceHitDmg = sourceHitDmg + output.FireHitAverage + sourceCritDmg = sourceCritDmg + output.FireCritAverage + end + if canDeal.Chaos and modDB:Sum("FLAG", cfg, "ChaosCanShock") then + sourceHitDmg = sourceHitDmg + output.ChaosHitAverage + sourceCritDmg = sourceCritDmg + output.ChaosCritAverage + end + local baseVal = calcSecondaryEffectBase("Shock", sourceHitDmg, sourceCritDmg) + if baseVal > 0 then + skillFlags.shock = true + output.ShockDurationMod = 1 + modDB:Sum("INC", cfg, "EnemyShockDuration") / 100 + enemyDB:Sum("INC", nil, "SelfShockDuration") / 100 + if breakdown then + t_insert(breakdown.ShockDPS, s_format("For shock to apply, target must have no more than %d life.", baseVal * 20 * output.ShockDurationMod)) + end + end + end + if (output.FreezeChanceOnHit + output.FreezeChanceOnCrit) > 0 then + local sourceHitDmg = 0 + local sourceCritDmg = 0 + if canDeal.Cold and not modDB:Sum("FLAG", cfg, "ColdCannotFreeze") then + sourceHitDmg = sourceHitDmg + output.ColdHitAverage + sourceCritDmg = sourceCritDmg + output.ColdCritAverage + end + if canDeal.Lightning and modDB:Sum("FLAG", cfg, "LightningCanFreeze") then + sourceHitDmg = sourceHitDmg + output.LightningHitAverage + sourceCritDmg = sourceCritDmg + output.LightningCritAverage + end + local baseVal = calcSecondaryEffectBase("Freeze", sourceHitDmg, sourceCritDmg) + if baseVal > 0 then + skillFlags.freeze = true + output.FreezeDurationMod = 1 + modDB:Sum("INC", cfg, "EnemyFreezeDuration") / 100 + enemyDB:Sum("INC", nil, "SelfFreezeDuration") / 100 + if breakdown then + t_insert(breakdown.FreezeDPS, s_format("For freeze to apply, target must have no more than %d life.", baseVal * 20 * output.FreezeDurationMod)) + end + end + end + + -- Calculate enemy stun modifiers + local enemyStunThresholdRed = -modDB:Sum("INC", cfg, "EnemyStunThreshold") + if enemyStunThresholdRed > 75 then + output.EnemyStunThresholdMod = 1 - (75 + (enemyStunThresholdRed - 75) * 25 / (enemyStunThresholdRed - 50)) / 100 + else + output.EnemyStunThresholdMod = 1 - enemyStunThresholdRed / 100 + end + local incDur = modDB:Sum("INC", cfg, "EnemyStunDuration") + local incRecov = enemyDB:Sum("INC", nil, "StunRecovery") + output.EnemyStunDuration = 0.35 * (1 + incDur / 100) / (1 + incRecov / 100) + if breakdown then + if output.EnemyStunDuration ~= 0.35 then + breakdown.EnemyStunDuration = { + "0.35s ^8(base duration)" + } + if incDur ~= 0 then + t_insert(breakdown.EnemyStunDuration, s_format("x %.2f ^8(increased/reduced stun duration)", 1 + incDur/100)) + end + if incRecov ~= 0 then + t_insert(breakdown.EnemyStunDuration, s_format("/ %.2f ^8(increased/reduced enemy stun recovery)", 1 + incRecov/100)) + end + t_insert(breakdown.EnemyStunDuration, s_format("= %.2fs", output.EnemyStunDuration)) + end + end + + end + + -- Combine secondary effect stats + if isAttack then + combineStat("BleedChance", "AVERAGE") + combineStat("BleedDPS", "CHANCE", "BleedChance") + combineStat("PoisonChance", "AVERAGE") + combineStat("PoisonDPS", "CHANCE", "PoisonChance") + combineStat("PoisonDamage", "CHANCE", "PoisonChance") + if skillData.showAverage then + combineStat("TotalPoisonAverageDamage", "DPS") + else + combineStat("TotalPoisonDPS", "DPS") + end + combineStat("IgniteChance", "AVERAGE") + combineStat("IgniteDPS", "CHANCE", "IgniteChance") + if skillFlags.igniteCanStack then + combineStat("IgniteDamage", "CHANCE", "IgniteChance") + if skillData.showAverage then + combineStat("TotalIgniteAverageDamage", "DPS") + else + combineStat("TotalIgniteDPS", "DPS") + end + end + combineStat("ShockChance", "AVERAGE") + combineStat("ShockDurationMod", "AVERAGE") + combineStat("FreezeChance", "AVERAGE") + combineStat("FreezeDurationMod", "AVERAGE") + end + + if skillFlags.hit and skillData.decay then + -- Calculate DPS for Essence of Delirium's Decay effect + skillFlags.decay = true + mainSkill.decayCfg = { + slotName = skillCfg.slotName, + flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), + keywordFlags = skillCfg.keywordFlags, + } + local dotCfg = mainSkill.decayCfg + local effMult = 1 + if env.mode_effective then + local resist = m_min(enemyDB:Sum("BASE", nil, "ChaosResist"), 75) + local taken = enemyDB:Sum("INC", nil, "DamageTaken", "ChaosDamageTaken", "DotTaken") + effMult = (1 - resist / 100) * (1 + taken / 100) + output["DecayEffMult"] = effMult + if breakdown and effMult ~= 1 then + breakdown.DecayEffMult = breakdown.effMult("Chaos", resist, 0, taken, effMult) + end + end + local inc = modDB:Sum("INC", dotCfg, "Damage", "ChaosDamage") + local more = round(modDB:Sum("MORE", dotCfg, "Damage", "ChaosDamage"), 2) + output.DecayDPS = skillData.decay * (1 + inc/100) * more * effMult + local durationMod = calcLib.mod(modDB, dotCfg, "Duration") + output.DecayDuration = 10 * durationMod * debuffDurationMult + if breakdown then + breakdown.DecayDPS = { } + t_insert(breakdown.DecayDPS, "Decay DPS:") + breakdown.dot(breakdown.DecayDPS, skillData.decay, inc, more, nil, effMult, output.DecayDPS) + if output.DecayDuration ~= 2 then + breakdown.DecayDuration = { + s_format("%.2fs ^8(base duration)", 10) + } + if durationMod ~= 1 then + t_insert(breakdown.DecayDuration, s_format("x %.2f ^8(duration modifier)", durationMod)) + end + if debuffDurationMult ~= 1 then + t_insert(breakdown.DecayDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) + end + t_insert(breakdown.DecayDuration, s_format("= %.2fs", output.DecayDuration)) + end + end + end + + -- Calculate combined DPS estimate, including DoTs + local baseDPS = output[(skillData.showAverage and "AverageDamage") or "TotalDPS"] + output.TotalDot + output.CombinedDPS = baseDPS + if skillFlags.poison then + if skillData.showAverage then + output.CombinedDPS = output.CombinedDPS + output.TotalPoisonAverageDamage + output.WithPoisonAverageDamage = baseDPS + output.TotalPoisonAverageDamage + else + output.CombinedDPS = output.CombinedDPS + output.TotalPoisonDPS + output.WithPoisonDPS = baseDPS + output.TotalPoisonDPS + end + end + if skillFlags.ignite then + if skillFlags.igniteCanStack then + if skillData.showAverage then + output.CombinedDPS = output.CombinedDPS + output.TotalIgniteAverageDamage + output.WithIgniteAverageDamage = baseDPS + output.TotalIgniteAverageDamage + else + output.CombinedDPS = output.CombinedDPS + output.TotalIgniteDPS + output.WithIgniteDPS = baseDPS + output.TotalIgniteDPS + end + else + output.CombinedDPS = output.CombinedDPS + output.IgniteDPS + end + end + if skillFlags.bleed then + output.CombinedDPS = output.CombinedDPS + output.BleedDPS + end + if skillFlags.decay then + output.CombinedDPS = output.CombinedDPS + output.DecayDPS + end +end \ No newline at end of file diff --git a/Modules/CalcPerform.lua b/Modules/CalcPerform.lua new file mode 100644 index 00000000..228cbd57 --- /dev/null +++ b/Modules/CalcPerform.lua @@ -0,0 +1,717 @@ +-- Path of Building +-- +-- Module: Calc Perform +-- Manages the offence/defence calculations. +-- +local calcs = ... + +local pairs = pairs +local ipairs = ipairs +local t_insert = table.insert +local m_ceil = math.ceil +local m_floor = math.floor +local s_format = string.format + +local tempTable1 = { } + +-- Merge an instance of a buff, taking the highest value of each modifier +local function mergeBuff(src, destTable, destKey) + if not destTable[destKey] then + destTable[destKey] = { } + end + local dest = destTable[destKey] + for _, mod in ipairs(src) do + local param = modLib.formatModParams(mod) + for index, destMod in ipairs(dest) do + if param == modLib.formatModParams(destMod) then + if type(destMod.value) == "number" and mod.value > destMod.value then + dest[index] = mod + end + param = nil + break + end + end + if param then + t_insert(dest, mod) + end + end +end + +-- Calculate attributes and life/mana pools, and set conditions +local function doActorAttribsPoolsConditions(env, actor) + local modDB = actor.modDB + local output = actor.output + local breakdown = actor.breakdown + local condList = modDB.conditions + + -- Calculate attributes + for _, stat in pairs({"Str","Dex","Int"}) do + output[stat] = round(calcLib.val(modDB, stat)) + if breakdown then + breakdown[stat] = breakdown.simple(nil, nil, output[stat], stat) + end + end + + -- Add attribute bonuses + modDB:NewMod("Life", "BASE", m_floor(output.Str / 2), "Strength") + actor.strDmgBonus = round((output.Str + modDB:Sum("BASE", nil, "DexIntToMeleeBonus")) / 5) + modDB:NewMod("PhysicalDamage", "INC", actor.strDmgBonus, "Strength", ModFlag.Melee) + modDB:NewMod("Accuracy", "BASE", output.Dex * 2, "Dexterity") + if not modDB:Sum("FLAG", nil, "IronReflexes") then + modDB:NewMod("Evasion", "INC", round(output.Dex / 5), "Dexterity") + end + modDB:NewMod("Mana", "BASE", round(output.Int / 2), "Intelligence") + modDB:NewMod("EnergyShield", "INC", round(output.Int / 5), "Intelligence") + + -- Life/mana pools + if modDB:Sum("FLAG", nil, "ChaosInoculation") then + output.Life = 1 + modDB.conditions["FullLife"] = true + else + local base = modDB:Sum("BASE", nil, "Life") + local inc = modDB:Sum("INC", nil, "Life") + local more = modDB:Sum("MORE", nil, "Life") + local conv = modDB:Sum("BASE", nil, "LifeConvertToEnergyShield") + output.Life = round(base * (1 + inc/100) * more * (1 - conv/100)) + if breakdown then + if inc ~= 0 or more ~= 1 or conv ~= 0 then + breakdown.Life = { } + breakdown.Life[1] = s_format("%g ^8(base)", base) + if inc ~= 0 then + t_insert(breakdown.Life, s_format("x %.2f ^8(increased/reduced)", 1 + inc/100)) + end + if more ~= 1 then + t_insert(breakdown.Life, s_format("x %.2f ^8(more/less)", more)) + end + if conv ~= 0 then + t_insert(breakdown.Life, s_format("x %.2f ^8(converted to Energy Shield)", 1 - conv/100)) + end + t_insert(breakdown.Life, s_format("= %g", output.Life)) + end + end + end + output.Mana = round(calcLib.val(modDB, "Mana")) + if breakdown then + breakdown.Mana = breakdown.simple(nil, nil, output.Mana, "Mana") + end + + -- Life/mana reservation + for _, pool in pairs({"Life", "Mana"}) do + local max = output[pool] + local reserved + if max > 0 then + reserved = (actor["reserved_"..pool.."Base"] or 0) + m_ceil(max * (actor["reserved_"..pool.."Percent"] or 0) / 100) + output[pool.."Reserved"] = reserved + output[pool.."ReservedPercent"] = reserved / max * 100 + output[pool.."Unreserved"] = max - reserved + output[pool.."UnreservedPercent"] = (max - reserved) / max * 100 + if (max - reserved) / max <= 0.35 then + condList["Low"..pool] = true + end + else + reserved = 0 + end + if reserved == 0 then + condList["No"..pool.."Reserved"] = true + end + for _, value in ipairs(modDB:Sum("LIST", nil, "GrantReserved"..pool.."AsAura")) do + local auraMod = copyTable(value.mod) + auraMod.value = m_floor(auraMod.value * reserved) + modDB:NewMod("ExtraAura", "LIST", { mod = auraMod }) + end + end + + -- Set conditions + if actor.weaponData1.type == "Staff" then + condList["UsingStaff"] = true + end + if actor.weaponData1.type == "Bow" then + condList["UsingBow"] = true + end + if actor.itemList["Weapon 2"] and actor.itemList["Weapon 2"].type == "Shield" then + condList["UsingShield"] = true + end + if actor.weaponData1.type and actor.weaponData2.type then + condList["DualWielding"] = true + if actor.weaponData1.type == "Claw" and actor.weaponData2.type == "Claw" then + condList["DualWieldingClaws"] = true + end + end + if actor.weaponData1.type == "None" then + condList["Unarmed"] = true + end + if (modDB.multipliers["NormalItem"] or 0) > 0 then + condList["UsingNormalItem"] = true + end + if (modDB.multipliers["MagicItem"] or 0) > 0 then + condList["UsingMagicItem"] = true + end + if (modDB.multipliers["RareItem"] or 0) > 0 then + condList["UsingRareItem"] = true + end + if (modDB.multipliers["UniqueItem"] or 0) > 0 then + condList["UsingUniqueItem"] = true + end + if (modDB.multipliers["CorruptedItem"] or 0) > 0 then + condList["UsingCorruptedItem"] = true + else + condList["NotUsingCorruptedItem"] = true + end + if env.mode_buffs then + condList["Buffed"] = true + end + if env.mode_combat then + condList["Combat"] = true + if not modDB:Sum("FLAG", nil, "NeverCrit") then + condList["CritInPast8Sec"] = true + end + if not actor.mainSkill.skillData.triggered then + if actor.mainSkill.skillFlags.attack then + condList["AttackedRecently"] = true + elseif actor.mainSkill.skillFlags.spell then + condList["CastSpellRecently"] = true + end + end + if actor.mainSkill.skillFlags.hit and not actor.mainSkill.skillFlags.trap and not actor.mainSkill.skillFlags.mine and not actor.mainSkill.skillFlags.totem then + condList["HitRecently"] = true + end + if actor.mainSkill.skillFlags.movement then + condList["UsedMovementSkillRecently"] = true + end + if actor.mainSkill.skillFlags.totem then + condList["HaveTotem"] = true + condList["SummonedTotemRecently"] = true + end + if actor.mainSkill.skillFlags.mine then + condList["DetonatedMinesRecently"] = true + end + end + if env.mode_effective then + condList["Effective"] = true + end +end + +-- Process charges, misc modifiers, and other buffs +local function doActorMisc(env, actor) + local modDB = actor.modDB + local enemyDB = actor.enemy.modDB + local output = actor.output + local condList = modDB.conditions + + -- Calculate current and maximum charges + output.PowerChargesMax = modDB:Sum("BASE", nil, "PowerChargesMax") + output.FrenzyChargesMax = modDB:Sum("BASE", nil, "FrenzyChargesMax") + output.EnduranceChargesMax = modDB:Sum("BASE", nil, "EnduranceChargesMax") + if actor.config.usePowerCharges and env.mode_combat then + output.PowerCharges = output.PowerChargesMax + else + output.PowerCharges = 0 + end + if actor.config.useFrenzyCharges and env.mode_combat then + output.FrenzyCharges = output.FrenzyChargesMax + else + output.FrenzyCharges = 0 + end + if actor.config.useEnduranceCharges and env.mode_combat then + output.EnduranceCharges = output.EnduranceChargesMax + else + output.EnduranceCharges = 0 + end + modDB.multipliers["PowerCharge"] = output.PowerCharges + modDB.multipliers["FrenzyCharge"] = output.FrenzyCharges + modDB.multipliers["EnduranceCharge"] = output.EnduranceCharges + if output.PowerCharges == 0 then + condList["HaveNoPowerCharges"] = true + end + if output.PowerCharges == output.PowerChargesMax then + condList["AtMaxPowerCharges"] = true + end + if output.FrenzyCharges == 0 then + condList["HaveNoFrenzyCharges"] = true + end + if output.FrenzyCharges == output.FrenzyChargesMax then + condList["AtMaxFrenzyCharges"] = true + end + if output.EnduranceCharges == 0 then + condList["HaveNoEnduranceCharges"] = true + end + if output.EnduranceCharges == output.EnduranceChargesMax then + condList["AtMaxEnduranceCharges"] = true + end + + -- Process misc modifiers + for _, value in ipairs(modDB:Sum("LIST", nil, "Misc")) do + if value.type == "Condition" then + condList[value.var] = true + elseif value.type == "EnemyCondition" then + enemyDB.conditions[value.var] = true + elseif value.type == "Multiplier" then + modDB.multipliers[value.var] = (modDB.multipliers[value.var] or 0) + value.value + end + end + -- Process enemy modifiers last in case they depend on conditions that were set by misc modifiers + for _, value in ipairs(modDB:Sum("LIST", nil, "Misc")) do + if value.type == "EnemyModifier" then + enemyDB:AddMod(value.mod) + end + end + + -- Process conditions that can depend on other conditions + if condList["Ignited"] then + condList["Burning"] = true + end + + -- Add misc buffs + if env.mode_combat then + if condList["Onslaught"] then + local effect = m_floor(20 * (1 + modDB:Sum("INC", nil, "OnslaughtEffect", "BuffEffect") / 100)) + modDB:NewMod("Speed", "INC", effect, "Onslaught") + modDB:NewMod("MovementSpeed", "INC", effect, "Onslaught") + end + if condList["UnholyMight"] then + local effect = m_floor(30 * (1 + modDB:Sum("INC", nil, "BuffEffect") / 100)) + modDB:NewMod("PhysicalDamageGainAsChaos", "BASE", effect, "Unholy Might") + end + end +end + +-- Finalise environment and perform the calculations +function calcs.perform(env) + local modDB = env.modDB + local enemyDB = env.enemyDB + + -- Merge keystone modifiers + do + local keystoneList = wipeTable(tempTable1) + for _, name in ipairs(modDB:Sum("LIST", nil, "Keystone")) do + keystoneList[name] = true + end + for name in pairs(keystoneList) do + modDB:AddList(env.build.tree.keystoneMap[name].modList) + end + end + + -- Build minion skills + for _, activeSkill in ipairs(env.activeSkillList) do + if activeSkill.minion then + calcs.createMinionSkills(env, activeSkill) + end + end + + env.player.output = { } + env.enemy.output = { } + local output = env.player.output + + env.minion = env.player.mainSkill.minion + if env.minion then + -- Initialise minion modifier database + output.Minion = { } + env.minion.output = output.Minion + env.minion.enemy = env.enemy + env.minion.modDB = common.New("ModDB") + env.minion.modDB.actor = env.minion + env.minion.modDB.multipliers["Level"] = env.minion.level + calcs.initModDB(env.minion.modDB) + env.minion.modDB:NewMod("Life", "BASE", m_floor(data.monsterLifeTable[env.minion.level] * env.minion.minionData.life), "Base") + if env.minion.minionData.energyShield then + env.minion.modDB:NewMod("EnergyShield", "BASE", m_floor(data.monsterLifeTable[env.minion.level] * env.minion.minionData.life * env.minion.minionData.energyShield), "Base") + end + env.minion.modDB:NewMod("Evasion", "BASE", data.monsterEvasionTable[env.minion.level], "Base") + env.minion.modDB:NewMod("Accuracy", "BASE", data.monsterAccuracyTable[env.minion.level], "Base") + env.minion.modDB:NewMod("CritMultiplier", "BASE", 30, "Base") + env.minion.modDB:NewMod("FireResist", "BASE", env.minion.minionData.fireResist, "Base") + env.minion.modDB:NewMod("ColdResist", "BASE", env.minion.minionData.coldResist, "Base") + env.minion.modDB:NewMod("LightningResist", "BASE", env.minion.minionData.lightningResist, "Base") + env.minion.modDB:NewMod("ChaosResist", "BASE", env.minion.minionData.chaosResist, "Base") + env.minion.modDB:NewMod("CritChance", "INC", 200, "Base", { type = "Multiplier", var = "PowerCharge" }) + env.minion.modDB:NewMod("Speed", "INC", 15, "Base", { type = "Multiplier", var = "FrenzyCharge" }) + env.minion.modDB:NewMod("Damage", "MORE", 4, "Base", { type = "Multiplier", var = "FrenzyCharge" }) + env.minion.modDB:NewMod("MovementSpeed", "INC", 5, "Base", { type = "Multiplier", var = "FrenzyCharge" }) + env.minion.modDB:NewMod("ElementalResist", "BASE", 15, "Base", { type = "Multiplier", var = "EnduranceCharge" }) + env.minion.modDB:NewMod("ProjectileCount", "BASE", 1, "Base") + for _, mod in ipairs(env.minion.minionData.modList) do + env.minion.modDB:AddMod(mod) + end + if env.aegisModList then + env.minion.itemList["Weapon 2"] = env.player.itemList["Weapon 2"] + env.player.itemList["Weapon 2"] = nil + env.minion.modDB:AddList(env.aegisModList) + end + if env.player.mainSkill.skillData.minionUseBowAndQuiver then + if env.player.weaponData1.type == "Bow" then + env.minion.modDB:AddList(env.player.itemList["Weapon 1"].slotModList[1]) + end + if env.player.itemList["Weapon 2"] and env.player.itemList["Weapon 2"].type == "Quiver" then + env.minion.modDB:AddList(env.player.itemList["Weapon 2"].modList) + end + end + if modDB:Sum("FLAG", nil, "StrengthAddedToMinions") then + env.minion.modDB:NewMod("Str", "BASE", round(calcLib.val(modDB, "Str")), "Player") + end + end + + local breakdown + if env.mode == "CALCS" then + -- Initialise breakdown module + breakdown = LoadModule("Modules/CalcBreakdown", modDB, output, env.player) + env.player.breakdown = breakdown + if env.minion then + env.minion.breakdown = LoadModule("Modules/CalcBreakdown", env.minion.modDB, env.minion.output, env.minion) + end + end + + -- Merge flask modifiers + if env.mode_combat then + local effectInc = modDB:Sum("INC", nil, "FlaskEffect") + local flaskBuffs = { } + for item in pairs(env.flasks) do + -- Avert thine eyes, lest they be forever scarred + -- I have no idea how to determine which buff is applied by a given flask, + -- so utility flasks are grouped by base, unique flasks are grouped by name, and magic flasks by their modifiers + local effectMod = 1 + (effectInc + item.flaskData.effectInc) / 100 + if item.buffModList[1] then + local srcList = common.New("ModList") + srcList:ScaleAddList(item.buffModList, effectMod) + mergeBuff(srcList, flaskBuffs, item.baseName) + end + if item.modList[1] then + local srcList = common.New("ModList") + srcList:ScaleAddList(item.modList, effectMod) + local key + if item.rarity == "UNIQUE" then + key = item.title + else + key = "" + for _, mod in ipairs(item.modList) do + key = key .. modLib.formatModParams(mod) .. "&" + end + end + mergeBuff(srcList, flaskBuffs, key) + end + end + if not modDB:Sum("FLAG", nil, "FlasksDoNotApplyToPlayer") then + for _, buffModList in pairs(flaskBuffs) do + modDB.conditions["UsingFlask"] = true + modDB:AddList(buffModList) + end + end + if env.minion and modDB:Sum("FLAG", env.player.mainSkill.skillCfg, "FlasksApplyToMinion") then + for _, buffModList in pairs(flaskBuffs) do + env.minion.modDB.conditions["UsingFlask"] = true + env.minion.modDB:AddList(buffModList) + end + end + end + + -- Calculate skill life and mana reservations + env.player.reserved_LifeBase = 0 + env.player.reserved_LifePercent = 0 + env.player.reserved_ManaBase = 0 + env.player.reserved_ManaPercent = 0 + if breakdown then + breakdown.LifeReserved = { reservations = { } } + breakdown.ManaReserved = { reservations = { } } + end + for _, activeSkill in ipairs(env.activeSkillList) do + if activeSkill.skillTypes[SkillType.ManaCostReserved] and not activeSkill.skillFlags.totem then + local skillModList = activeSkill.skillModList + local skillCfg = activeSkill.skillCfg + local baseVal = activeSkill.skillData.manaCostOverride or activeSkill.skillData.manaCost + local suffix = activeSkill.skillTypes[SkillType.ManaCostPercent] and "Percent" or "Base" + local mult = skillModList:Sum("MORE", skillCfg, "ManaCost") + local more = modDB:Sum("MORE", skillCfg, "ManaReserved") * skillModList:Sum("MORE", skillCfg, "ManaReserved") + local inc = modDB:Sum("INC", skillCfg, "ManaReserved") + skillModList:Sum("INC", skillCfg, "ManaReserved") + local base = m_floor(baseVal * mult) + local cost = base - m_floor(base * -m_floor((100 + inc) * more - 100) / 100) + local pool + if modDB:Sum("FLAG", skillCfg, "BloodMagic", "SkillBloodMagic") or skillModList:Sum("FLAG", skillCfg, "SkillBloodMagic") then + pool = "Life" + else + pool = "Mana" + end + env.player["reserved_"..pool..suffix] = env.player["reserved_"..pool..suffix] + cost + if breakdown then + t_insert(breakdown[pool.."Reserved"].reservations, { + skillName = activeSkill.activeGem.name, + base = baseVal .. (activeSkill.skillTypes[SkillType.ManaCostPercent] and "%" or ""), + mult = mult ~= 1 and ("x "..mult), + more = more ~= 1 and ("x "..more), + inc = inc ~= 0 and ("x "..(1 + inc/100)), + total = cost .. (activeSkill.skillTypes[SkillType.ManaCostPercent] and "%" or ""), + }) + end + end + end + + -- Calculate attributes and life/mana pools + doActorAttribsPoolsConditions(env, env.player) + if env.minion then + for _, source in ipairs({modDB, env.player.mainSkill.skillModList}) do + for _, value in ipairs(source:Sum("LIST", env.player.mainSkill.skillCfg, "Misc")) do + if value.type == "MinionModifier" then + env.minion.modDB:AddMod(value.mod) + end + end + end + doActorAttribsPoolsConditions(env, env.minion) + end + + -- Check for extra modifiers to apply to aura skills + local extraAuraModList = { } + for _, value in ipairs(modDB:Sum("LIST", nil, "ExtraAuraEffect")) do + t_insert(extraAuraModList, value.mod) + end + + -- Combine buffs/debuffs + output.EnemyCurseLimit = modDB:Sum("BASE", nil, "EnemyCurseLimit") + local buffs = { } + local minionBuffs = { } + local debuffs = { } + local curses = { + limit = output.EnemyCurseLimit, + } + local minionCurses = { + limit = 1, + } + local affectedByAuras = { } + for _, activeSkill in ipairs(env.activeSkillList) do + local skillModList = activeSkill.skillModList + local skillCfg = activeSkill.skillCfg + if env.mode_buffs then + if activeSkill.buffModList and + not activeSkill.skillFlags.curse and + (not activeSkill.skillFlags.totem or activeSkill.skillData.allowTotemBuff) then + if (not activeSkill.skillData.offering or modDB:Sum("FLAG", nil, "OfferingsAffectPlayer")) then + activeSkill.buffSkill = true + local srcList = common.New("ModList") + local inc = modDB:Sum("INC", skillCfg, "BuffEffect", "BuffEffectOnSelf") + local more = modDB:Sum("MORE", skillCfg, "BuffEffect", "BuffEffectOnSelf") + srcList:ScaleAddList(activeSkill.buffModList, (1 + inc / 100) * more) + mergeBuff(srcList, buffs, activeSkill.activeGem.name) + end + if activeSkill.skillData.offering and env.minion then + activeSkill.minionBuffSkill = true + local srcList = common.New("ModList") + local inc = modDB:Sum("INC", skillCfg, "BuffEffect") + env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf") + local more = modDB:Sum("MORE", skillCfg, "BuffEffect") * env.minion.modDB:Sum("MORE", nil, "BuffEffectOnSelf") + srcList:ScaleAddList(activeSkill.buffModList, (1 + inc / 100) * more) + mergeBuff(srcList, minionBuffs, activeSkill.activeGem.name) + end + end + if activeSkill.auraModList then + if not activeSkill.skillData.auraCannotAffectSelf then + activeSkill.buffSkill = true + affectedByAuras[env.player] = true + local srcList = common.New("ModList") + local inc = modDB:Sum("INC", skillCfg, "AuraEffect", "BuffEffectOnSelf", "AuraEffectOnSelf") + skillModList:Sum("INC", skillCfg, "AuraEffect") + local more = modDB:Sum("MORE", skillCfg, "AuraEffect", "BuffEffectOnSelf", "AuraEffectOnSelf") * skillModList:Sum("MORE", skillCfg, "AuraEffect") + srcList:ScaleAddList(activeSkill.auraModList, (1 + inc / 100) * more) + srcList:ScaleAddList(extraAuraModList, (1 + inc / 100) * more) + mergeBuff(srcList, buffs, activeSkill.activeGem.name) + end + if env.minion and not modDB:Sum("FLAG", nil, "YourAurasCannotAffectAllies") then + activeSkill.minionBuffSkill = true + affectedByAuras[env.minion] = true + local srcList = common.New("ModList") + local inc = modDB:Sum("INC", skillCfg, "AuraEffect") + env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + skillModList:Sum("INC", skillCfg, "AuraEffect") + local more = modDB:Sum("MORE", skillCfg, "AuraEffect") * env.minion.modDB:Sum("MORE", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") * skillModList:Sum("MORE", skillCfg, "AuraEffect") + srcList:ScaleAddList(activeSkill.auraModList, (1 + inc / 100) * more) + srcList:ScaleAddList(extraAuraModList, (1 + inc / 100) * more) + mergeBuff(srcList, minionBuffs, activeSkill.activeGem.name) + end + end + if activeSkill.minion then + for _, activeSkill in ipairs(activeSkill.minion.activeSkillList) do + local skillModList = activeSkill.skillModList + local skillCfg = activeSkill.skillCfg + if activeSkill.auraModList and activeSkill.skillData.enable then + if not modDB:Sum("FLAG", nil, "AlliesAurasCannotAffectSelf") then + local srcList = common.New("ModList") + local inc = modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") + skillModList:Sum("INC", skillCfg, "AuraEffect") + local more = modDB:Sum("MORE", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") * skillModList:Sum("MORE", skillCfg, "AuraEffect") + srcList:ScaleAddList(activeSkill.auraModList, (1 + inc / 100) * more) + mergeBuff(srcList, buffs, activeSkill.activeGem.data.id) + end + if env.minion and (env.minion ~= activeSkill.minion or not activeSkill.skillData.auraCannotAffectSelf) then + local srcList = common.New("ModList") + local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + skillModList:Sum("INC", skillCfg, "AuraEffect") + local more = env.minion.modDB:Sum("MORE", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") * skillModList:Sum("MORE", skillCfg, "AuraEffect") + srcList:ScaleAddList(activeSkill.auraModList, (1 + inc / 100) * more) + mergeBuff(srcList, minionBuffs, activeSkill.activeGem.data.id) + end + end + end + end + end + if env.mode_effective then + if activeSkill.debuffModList then + activeSkill.debuffSkill = true + local srcList = common.New("ModList") + srcList:ScaleAddList(activeSkill.debuffModList, activeSkill.skillData.stackCount or 1) + mergeBuff(srcList, debuffs, activeSkill.activeGem.name) + end + if activeSkill.curseModList or (activeSkill.skillFlags.curse and activeSkill.buffModList) then + local curse = { + name = activeSkill.activeGem.name, + priority = activeSkill.skillTypes[SkillType.Aura] and 3 or 1, + } + local inc = modDB:Sum("INC", skillCfg, "CurseEffect") + enemyDB:Sum("INC", nil, "CurseEffectOnSelf") + skillModList:Sum("INC", skillCfg, "CurseEffect") + local more = modDB:Sum("MORE", skillCfg, "CurseEffect") * enemyDB:Sum("MORE", nil, "CurseEffectOnSelf") * skillModList:Sum("MORE", skillCfg, "CurseEffect") + if activeSkill.curseModList then + curse.modList = common.New("ModList") + curse.modList:ScaleAddList(activeSkill.curseModList, (1 + inc / 100) * more) + end + if activeSkill.buffModList then + -- Curse applies a buff; scale by curse effect, then buff effect + local temp = common.New("ModList") + temp:ScaleAddList(activeSkill.buffModList, (1 + inc / 100) * more) + curse.buffModList = common.New("ModList") + local buffInc = modDB:Sum("INC", skillCfg, "BuffEffectOnSelf") + local buffMore = modDB:Sum("MORE", skillCfg, "BuffEffectOnSelf") + curse.buffModList:ScaleAddList(temp, (1 + buffInc / 100) * buffMore) + if env.minion then + curse.minionBuffModList = common.New("ModList") + local buffInc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf") + local buffMore = env.minion.modDB:Sum("MORE", nil, "BuffEffectOnSelf") + curse.minionBuffModList:ScaleAddList(temp, (1 + buffInc / 100) * buffMore) + end + end + t_insert(curses, curse) + end + if activeSkill.minion then + for _, activeSkill in ipairs(activeSkill.minion.activeSkillList) do + local skillModList = activeSkill.skillModList + local skillCfg = activeSkill.skillCfg + if activeSkill.curseModList and activeSkill.skillData.enable then + local curse = { + name = activeSkill.activeGem.name, + priority = 1, + } + local inc = enemyDB:Sum("INC", nil, "CurseEffectOnSelf") + skillModList:Sum("INC", skillCfg, "CurseEffect") + local more = enemyDB:Sum("MORE", nil, "CurseEffectOnSelf") * skillModList:Sum("MORE", skillCfg, "CurseEffect") + curse.modList = common.New("ModList") + curse.modList:ScaleAddList(activeSkill.curseModList, (1 + inc / 100) * more) + t_insert(minionCurses, curse) + end + end + end + end + end + + -- Check for extra curses + for _, value in ipairs(modDB:Sum("LIST", nil, "ExtraCurse")) do + local curse = { + name = value.name, + priority = 2, + modList = common.New("ModList") + } + local gemModList = common.New("ModList") + mergeGemMods(gemModList, { + level = value.level, + quality = 0, + data = data.gems[value.name], + }) + local curseModList = { } + for _, mod in ipairs(gemModList) do + for _, tag in ipairs(mod.tagList) do + if tag.type == "GlobalEffect" and tag.effectType == "Curse" then + t_insert(curseModList, mod) + break + end + end + end + curse.modList:ScaleAddList(curseModList, (1 + enemyDB:Sum("INC", nil, "CurseEffectOnSelf") / 100) * enemyDB:Sum("MORE", nil, "CurseEffectOnSelf")) + t_insert(curses, curse) + end + + -- Assign curses to slots + local curseSlots = { } + env.curseSlots = curseSlots + for _, source in ipairs({curses, minionCurses}) do + for _, curse in ipairs(source) do + local slot + for i = 1, source.limit do + if not curseSlots[i] then + slot = i + break + elseif curseSlots[i].name == curse.name then + if curseSlots[i].priority < curse.priority then + slot = i + else + slot = nil + end + break + elseif curseSlots[i].priority < curse.priority then + slot = i + end + end + if slot then + curseSlots[slot] = curse + end + end + end + + -- Apply buff/debuff modifiers + for _, modList in pairs(buffs) do + modDB:AddList(modList) + end + if env.minion then + for _, modList in pairs(minionBuffs) do + env.minion.modDB:AddList(modList) + end + end + for _, modList in pairs(debuffs) do + enemyDB:AddList(modList) + end + modDB.multipliers["CurseOnEnemy"] = #curseSlots + for _, slot in ipairs(curseSlots) do + modDB.conditions["EnemyCursed"] = true + enemyDB.conditions["Cursed"] = true + if slot.modList then + enemyDB:AddList(slot.modList) + end + if slot.buffModList then + modDB:AddList(slot.buffModList) + end + if slot.minionBuffModList then + env.minion.modDB:AddList(slot.minionBuffModList) + end + end + + -- Check for extra auras + for _, value in ipairs(modDB:Sum("LIST", nil, "ExtraAura")) do + local modList = { value.mod } + if not value.onlyAllies then + local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = modDB:Sum("MORE", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + modDB:ScaleAddList(modList, (1 + inc / 100) * more) + end + if env.minion and not modDB:Sum("FLAG", nil, "SelfAurasCannotAffectAllies") then + local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = env.minion.modDB:Sum("MORE", nil, "BuffEffectOnSelf", "AuraEffectOnSelf") + env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more) + end + end + + -- Check for modifiers to apply to actors affected by player auras + for _, value in ipairs(modDB:Sum("LIST", nil, "AffectedByAuraMod")) do + for actor in pairs(affectedByAuras) do + actor.modDB:AddMod(value.mod) + end + end + + -- Process misc buffs/modifiers + doActorMisc(env, env.player) + if env.minion then + doActorMisc(env, env.minion) + end + doActorMisc(env, env.enemy) + + -- Defence/offence calculations + calcs.defence(env, env.player) + calcs.offence(env, env.player) + if env.minion then + calcs.defence(env, env.minion) + calcs.offence(env, env.minion) + end +end \ No newline at end of file diff --git a/Modules/CalcSections.lua b/Modules/CalcSections.lua index 25514ee4..4c32d765 100644 --- a/Modules/CalcSections.lua +++ b/Modules/CalcSections.lua @@ -372,6 +372,11 @@ return { }, }, } }, { 1, "SkillTypeStats", 1, "Skill type-specific Stats", data.colorCodes.OFFENCE, { + { label = "Active Minion Limit", haveOutput = "ActiveMinionLimit", { format = "{0:output:ActiveMinionLimit}" } }, + { label = "Skill Cooldown", haveOutput = "Cooldown", { format = "{2:output:Cooldown}s", + { breakdown = "Cooldown" }, + { modName = "CooldownRecovery", cfg = "skill" }, + }, }, { label = "Duration Mod", flag = "duration", { format = "x {2:output:DurationMod}", { breakdown = "DurationMod"}, { modName = "Duration", cfg = "skill" }, @@ -661,6 +666,7 @@ return { { label = "Inc. from Tree", { format = "{0:mod:1}%", { modName = "Life", modType = "INC", modSource = "Tree" }, }, }, { label = "Total Base", { format = "{0:mod:1}", { modName = "Life", modType = "BASE" }, }, }, { label = "Total Increased", { format = "{0:mod:1}%", { modName = "Life", modType = "INC", }, }, }, + { label = "Total More", { format = "{0:mod:1}%", { modName = "Life", modType = "MORE", }, }, }, { label = "Total", { format = "{0:output:Life}", { breakdown = "Life" }, }, }, { label = "Reserved", { format = "{0:output:LifeReserved} ({0:output:LifeReservedPercent}%)", { breakdown = "LifeReserved" }, }, }, { label = "Unreserved", { format = "{0:output:LifeUnreserved} ({0:output:LifeUnreservedPercent}%)" }, }, @@ -668,6 +674,7 @@ return { } }, { 1, "Mana", 2, "Mana", data.colorCodes.DEFENCE, { extra = "{0:output:ManaUnreserved}/{0:output:Mana}", + notFlag = "minionSkill", { label = "Base from Gear", { format = "{0:mod:1}", { modName = "Mana", modType = "BASE", modSource = "Item" }, }, }, { label = "Inc. from Tree", { format = "{0:mod:1}%", { modName = "Mana", modType = "INC", modSource = "Tree" }, }, }, { label = "Total Base", { format = "{0:mod:1}", { modName = "Mana", modType = "BASE" }, }, }, diff --git a/Modules/CalcSetup.lua b/Modules/CalcSetup.lua new file mode 100644 index 00000000..c51fe94e --- /dev/null +++ b/Modules/CalcSetup.lua @@ -0,0 +1,535 @@ +-- Path of Building +-- +-- Module: Calc Setup +-- Initialises the environment for calculations. +-- +local calcs = ... + +local pairs = pairs +local ipairs = ipairs +local t_insert = table.insert +local t_remove = table.remove +local m_min = math.min +local m_max = math.max + +local tempTable1 = { } + +-- Initialise modifier database with stats common to all actors +function calcs.initModDB(modDB) + modDB:NewMod("FireResistMax", "BASE", 75, "Base") + modDB:NewMod("ColdResistMax", "BASE", 75, "Base") + modDB:NewMod("LightningResistMax", "BASE", 75, "Base") + modDB:NewMod("ChaosResistMax", "BASE", 75, "Base") + modDB:NewMod("BlockChanceMax", "BASE", 75, "Base") + modDB:NewMod("PowerChargesMax", "BASE", 3, "Base") + modDB:NewMod("FrenzyChargesMax", "BASE", 3, "Base") + modDB:NewMod("EnduranceChargesMax", "BASE", 3, "Base") + modDB:NewMod("MaxLifeLeechRate", "BASE", 20, "Base") + modDB:NewMod("MaxManaLeechRate", "BASE", 20, "Base") + modDB:NewMod("LifeRegenPercent", "BASE", 4, "Base", { type = "Condition", var = "OnConsecratedGround" }) + modDB:NewMod("DamageTaken", "INC", 50, "Base", { type = "Condition", var = "Shocked" }) + modDB:NewMod("HitChance", "MORE", -50, "Base", { type = "Condition", var = "Blinded" }) + modDB:NewMod("MovementSpeed", "INC", -30, "Base", { type = "Condition", var = "Maimed" }) +end + +-- Build list of modifiers from the listed tree nodes +function calcs.buildNodeModList(env, nodeList, finishJewels) + -- Initialise radius jewels + for _, rad in pairs(env.radiusJewelList) do + wipeTable(rad.data) + end + + -- Add node modifers + local modList = common.New("ModList") + for _, node in pairs(nodeList) do + -- Merge with output list + if node.type == "keystone" then + modList:AddMod(node.keystoneMod) + else + modList:AddList(node.modList) + end + + -- Run radius jewels + for _, rad in pairs(env.radiusJewelList) do + if rad.nodes[node.id] then + rad.func(node.modList, modList, rad.data) + end + end + end + + if finishJewels then + -- Finalise radius jewels + for _, rad in pairs(env.radiusJewelList) do + rad.func(nil, modList, rad.data, rad.attributes) + if env.mode == "MAIN" then + if not rad.item.jewelRadiusData then + rad.item.jewelRadiusData = { } + end + rad.item.jewelRadiusData[rad.nodeId] = rad.data + end + end + end + + return modList +end + +-- Initialise environment: +-- 1. Initialises the modifier databases +-- 2. Merges modifiers for all items +-- 3. Builds a list of jewels with radius functions +-- 4. Merges modifiers for all allocated passive nodes +-- 5. Builds a list of active skills and their supports +-- 6. Builds modifier lists for all active skills +function calcs.initEnv(build, mode, override) + override = override or { } + + local env = { } + env.build = build + env.configInput = build.configTab.input + env.calcsInput = build.calcsTab.input + env.mode = mode + env.spec = override.spec or build.spec + env.classId = env.spec.curClassId + + -- Set buff mode + local buffMode + if mode == "CALCS" then + buffMode = env.calcsInput.misc_buffMode + else + buffMode = "EFFECTIVE" + end + if buffMode == "EFFECTIVE" then + env.mode_buffs = true + env.mode_combat = true + env.mode_effective = true + elseif buffMode == "COMBAT" then + env.mode_buffs = true + env.mode_combat = true + env.mode_effective = false + elseif buffMode == "BUFFED" then + env.mode_buffs = true + env.mode_combat = false + env.mode_effective = false + else + env.mode_buffs = false + env.mode_combat = false + env.mode_effective = false + end + + -- Initialise modifier database with base values + local modDB = common.New("ModDB") + env.modDB = modDB + local classStats = build.tree.characterData[env.classId] + for _, stat in pairs({"Str","Dex","Int"}) do + modDB:NewMod(stat, "BASE", classStats["base_"..stat:lower()], "Base") + end + modDB.multipliers["Level"] = m_max(1, m_min(100, build.characterLevel)) + calcs.initModDB(modDB) + modDB:NewMod("Life", "BASE", 12, "Base", { type = "Multiplier", var = "Level", base = 38 }) + modDB:NewMod("Mana", "BASE", 6, "Base", { type = "Multiplier", var = "Level", base = 34 }) + modDB:NewMod("ManaRegen", "BASE", 0.0175, "Base", { type = "PerStat", stat = "Mana", div = 1 }) + modDB:NewMod("Evasion", "BASE", 3, "Base", { type = "Multiplier", var = "Level", base = 53 }) + modDB:NewMod("Accuracy", "BASE", 2, "Base", { type = "Multiplier", var = "Level", base = -2 }) + modDB:NewMod("CritMultiplier", "BASE", 50, "Base") + modDB:NewMod("FireResist", "BASE", -60, "Base") + modDB:NewMod("ColdResist", "BASE", -60, "Base") + modDB:NewMod("LightningResist", "BASE", -60, "Base") + modDB:NewMod("ChaosResist", "BASE", -60, "Base") + modDB:NewMod("CritChance", "INC", 50, "Base", { type = "Multiplier", var = "PowerCharge" }) + modDB:NewMod("Speed", "INC", 4, "Base", { type = "Multiplier", var = "FrenzyCharge" }) + modDB:NewMod("Damage", "MORE", 4, "Base", { type = "Multiplier", var = "FrenzyCharge" }) + modDB:NewMod("ElementalResist", "BASE", 4, "Base", { type = "Multiplier", var = "EnduranceCharge" }) + modDB:NewMod("ActiveTrapLimit", "BASE", 3, "Base") + modDB:NewMod("ActiveMineLimit", "BASE", 5, "Base") + modDB:NewMod("ActiveTotemLimit", "BASE", 1, "Base") + modDB:NewMod("EnemyCurseLimit", "BASE", 1, "Base") + modDB:NewMod("ProjectileCount", "BASE", 1, "Base") + modDB:NewMod("Speed", "MORE", 10, "Base", ModFlag.Attack, { type = "Condition", var = "DualWielding" }) + modDB:NewMod("PhysicalDamage", "MORE", 20, "Base", ModFlag.Attack, { type = "Condition", var = "DualWielding" }) + modDB:NewMod("BlockChance", "BASE", 15, "Base", { type = "Condition", var = "DualWielding" }) + + -- Add bandit mods + if build.banditNormal == "Alira" then + modDB:NewMod("Mana", "BASE", 60, "Bandit") + elseif build.banditNormal == "Kraityn" then + modDB:NewMod("ElementalResist", "BASE", 10, "Bandit") + elseif build.banditNormal == "Oak" then + modDB:NewMod("Life", "BASE", 40, "Bandit") + else + modDB:NewMod("ExtraPoints", "BASE", 1, "Bandit") + end + if build.banditCruel == "Alira" then + modDB:NewMod("Speed", "INC", 5, "Bandit", ModFlag.Cast) + elseif build.banditCruel == "Kraityn" then + modDB:NewMod("Speed", "INC", 8, "Bandit", ModFlag.Attack) + elseif build.banditCruel == "Oak" then + modDB:NewMod("PhysicalDamage", "INC", 16, "Bandit") + else + modDB:NewMod("ExtraPoints", "BASE", 1, "Bandit") + end + if build.banditMerciless == "Alira" then + modDB:NewMod("PowerChargesMax", "BASE", 1, "Bandit") + elseif build.banditMerciless == "Kraityn" then + modDB:NewMod("FrenzyChargesMax", "BASE", 1, "Bandit") + elseif build.banditMerciless == "Oak" then + modDB:NewMod("EnduranceChargesMax", "BASE", 1, "Bandit") + else + modDB:NewMod("ExtraPoints", "BASE", 1, "Bandit") + end + + -- Initialise enemy modifier database + local enemyDB = common.New("ModDB") + env.enemyDB = enemyDB + env.enemyLevel = m_max(1, m_min(100, env.configInput.enemyLevel and env.configInput.enemyLevel or m_min(env.build.characterLevel, 84))) + calcs.initModDB(enemyDB) + enemyDB:NewMod("Accuracy", "BASE", data.monsterAccuracyTable[env.enemyLevel], "Base") + enemyDB:NewMod("Evasion", "BASE", data.monsterEvasionTable[env.enemyLevel], "Base") + + -- Add mods from the config tab + modDB:AddList(build.configTab.modList) + enemyDB:AddList(build.configTab.enemyModList) + + -- Create player/enemy actors + env.player = { + modDB = modDB, + enemy = env.enemy, + config = env.configInput, + } + modDB.actor = env.player + env.enemy = { + modDB = enemyDB, + config = { }, + } + enemyDB.actor = env.enemy + env.player.enemy = env.enemy + env.enemy.enemy = env.player + + -- Build list of passive nodes + local nodes + if override.addNodes or override.removeNodes then + nodes = { } + if override.addNodes then + for node in pairs(override.addNodes) do + nodes[node.id] = node + end + end + for _, node in pairs(env.spec.allocNodes) do + if not override.removeNodes or not override.removeNodes[node] then + nodes[node.id] = node + end + end + else + nodes = env.spec.allocNodes + end + + -- Build and merge item modifiers, and create list of radius jewels + env.radiusJewelList = wipeTable(env.radiusJewelList) + env.player.itemList = { } + env.flasks = { } + env.modDB.conditions["UsingAllCorruptedItems"] = true + for slotName, slot in pairs(build.itemsTab.slots) do + local item + if slotName == override.repSlotName then + item = override.repItem + elseif slot.nodeId and override.spec then + item = build.itemsTab.list[env.spec.jewels[slot.nodeId]] + else + item = build.itemsTab.list[slot.selItemId] + end + if slot.nodeId then + -- Slot is a jewel socket, check if socket is allocated + if not nodes[slot.nodeId] then + item = nil + elseif item and item.jewelRadiusIndex then + -- Jewel has a radius, add it to the list + local funcList = item.jewelData.funcList or { function(nodeMods, out, data) + -- Default function just tallies all stats in radius + if nodeMods then + for _, stat in pairs({"Str","Dex","Int"}) do + data[stat] = (data[stat] or 0) + nodeMods:Sum("BASE", nil, stat) + end + end + end } + for _, func in ipairs(funcList) do + local node = build.spec.nodes[slot.nodeId] + t_insert(env.radiusJewelList, { + nodes = node.nodesInRadius[item.jewelRadiusIndex], + func = func, + item = item, + nodeId = slot.nodeId, + attributes = node.attributesInRadius[item.jewelRadiusIndex], + data = { } + }) + end + end + end + if item and item.type == "Flask" then + if slot.active then + env.flasks[item] = true + end + item = nil + end + env.player.itemList[slotName] = item + if item then + -- Merge mods for this item + local srcList = item.modList or item.slotModList[slot.slotNum] + if item.type == "Shield" and nodes[45175] then + -- Special handling for Necromantic Aegis + env.aegisModList = common.New("ModList") + for _, mod in ipairs(srcList) do + -- Filter out mods that apply to socketed gems, or which add skills or supports + local add = true + for _, tag in ipairs(mod.tagList) do + if tag.type == "SocketedIn" then + add = false + break + end + end + if add then + env.aegisModList:AddMod(mod) + else + env.modDB:AddMod(mod) + end + end + else + env.modDB:AddList(srcList) + end + if item.type ~= "Jewel" and item.type ~= "Flask" then + -- Update item counts + local key + if item.rarity == "UNIQUE" or item.rarity == "RELIC" then + key = "UniqueItem" + elseif item.rarity == "RARE" then + key = "RareItem" + elseif item.rarity == "MAGIC" then + key = "MagicItem" + else + key = "NormalItem" + end + env.modDB.multipliers[key] = (env.modDB.multipliers[key] or 0) + 1 + if item.corrupted then + env.modDB.multipliers.CorruptedItem = (env.modDB.multipliers.CorruptedItem or 0) + 1 + else + env.modDB.conditions["UsingAllCorruptedItems"] = false + end + end + end + end + + if override.toggleFlask then + if env.flasks[override.toggleFlask] then + env.flasks[override.toggleFlask] = nil + else + env.flasks[override.toggleFlask] = true + end + end + + if env.mode == "MAIN" then + -- Process extra skills granted by items + local markList = { } + for _, mod in ipairs(modDB.mods["ExtraSkill"] or { }) do + -- Extract the name of the slot containing the item this skill was granted by + local slotName + for _, tag in ipairs(mod.tagList) do + if tag.type == "SocketedIn" then + slotName = tag.slotName + break + end + end + + -- Check if a matching group already exists + local group + for index, socketGroup in pairs(build.skillsTab.socketGroupList) do + if socketGroup.source == mod.source and socketGroup.slot == slotName then + if socketGroup.gemList[1] and socketGroup.gemList[1].nameSpec == mod.value.name then + group = socketGroup + markList[socketGroup] = true + break + end + end + end + if not group then + -- Create a new group for this skill + group = { label = "", enabled = true, gemList = { }, source = mod.source, slot = slotName } + t_insert(build.skillsTab.socketGroupList, group) + markList[group] = true + end + + -- Update the group + group.sourceItem = build.itemsTab.list[tonumber(mod.source:match("Item:(%d+):"))] + wipeTable(group.gemList) + t_insert(group.gemList, { + nameSpec = mod.value.name, + level = mod.value.level, + quality = 0, + enabled = true, + fromItem = true, + }) + if mod.value.noSupports then + group.noSupports = true + else + for _, socketGroup in pairs(build.skillsTab.socketGroupList) do + -- Look for other groups that are socketed in the item + if socketGroup.slot == slotName and not socketGroup.source then + -- Add all support gems to the skill's group + for _, gem in ipairs(socketGroup.gemList) do + if gem.data and gem.data.support then + t_insert(group.gemList, gem) + end + end + end + end + end + build.skillsTab:ProcessSocketGroup(group) + end + + -- Remove any socket groups that no longer have a matching item + local i = 1 + while build.skillsTab.socketGroupList[i] do + local socketGroup = build.skillsTab.socketGroupList[i] + if socketGroup.source and not markList[socketGroup] then + t_remove(build.skillsTab.socketGroupList, i) + if build.skillsTab.displayGroup == socketGroup then + build.skillsTab.displayGroup = nil + end + else + i = i + 1 + end + end + end + + -- Get the weapon data tables for the equipped weapons + env.player.weaponData1 = env.player.itemList["Weapon 1"] and env.player.itemList["Weapon 1"].weaponData and env.player.itemList["Weapon 1"].weaponData[1] or copyTable(data.unarmedWeaponData[env.classId]) + if env.player.weaponData1.countsAsDualWielding then + env.player.weaponData2 = env.player.itemList["Weapon 1"].weaponData[2] + else + env.player.weaponData2 = env.player.itemList["Weapon 2"] and env.player.itemList["Weapon 2"].weaponData and env.player.itemList["Weapon 2"].weaponData[2] or { } + end + + -- Build and merge modifiers for allocated passives + env.modDB:AddList(calcs.buildNodeModList(env, nodes, true)) + + -- Determine main skill group + if env.mode == "CALCS" then + env.calcsInput.skill_number = m_min(m_max(#build.skillsTab.socketGroupList, 1), env.calcsInput.skill_number or 1) + env.mainSocketGroup = env.calcsInput.skill_number + else + build.mainSocketGroup = m_min(m_max(#build.skillsTab.socketGroupList, 1), build.mainSocketGroup or 1) + env.mainSocketGroup = build.mainSocketGroup + end + + -- Build list of active skills + env.activeSkillList = { } + local groupCfg = wipeTable(tempTable1) + for index, socketGroup in pairs(build.skillsTab.socketGroupList) do + local socketGroupSkillList = { } + if socketGroup.enabled or index == env.mainSocketGroup then + -- Build list of supports for this socket group + local supportList = { } + if not socketGroup.source then + groupCfg.slotName = socketGroup.slot + for _, value in ipairs(env.modDB:Sum("LIST", groupCfg, "ExtraSupport")) do + -- Add extra supports from the item this group is socketed in + local gemData = data.gems[value.name] + if gemData then + t_insert(supportList, { + name = value.name, + data = gemData, + level = value.level, + quality = 0, + enabled = true, + fromItem = true + }) + end + end + end + for _, gem in ipairs(socketGroup.gemList) do + if gem.enabled and gem.data and gem.data.support then + -- Add support gems from this group + local add = true + for _, otherGem in pairs(supportList) do + -- Check if there's another support with the same name already present + if gem.data == otherGem.data then + add = false + if gem.level > otherGem.level then + otherGem.level = gem.level + otherGem.quality = gem.quality + elseif gem.level == otherGem.level then + otherGem.quality = m_max(gem.quality, otherGem.quality) + end + break + end + end + if add then + gem.isSupporting = { } + t_insert(supportList, gem) + end + end + end + + -- Create active skills + for _, gem in ipairs(socketGroup.gemList) do + if gem.enabled and gem.data and not gem.data.support and not gem.data.unsupported then + local activeSkill = calcs.createActiveSkill(gem, supportList) + activeSkill.slotName = socketGroup.slot + t_insert(socketGroupSkillList, activeSkill) + t_insert(env.activeSkillList, activeSkill) + end + end + + if index == env.mainSocketGroup and #socketGroupSkillList > 0 then + -- Select the main skill from this socket group + local activeSkillIndex + if env.mode == "CALCS" then + socketGroup.mainActiveSkillCalcs = m_min(#socketGroupSkillList, socketGroup.mainActiveSkillCalcs or 1) + activeSkillIndex = socketGroup.mainActiveSkillCalcs + else + socketGroup.mainActiveSkill = m_min(#socketGroupSkillList, socketGroup.mainActiveSkill or 1) + activeSkillIndex = socketGroup.mainActiveSkill + end + env.player.mainSkill = socketGroupSkillList[activeSkillIndex] + end + end + + if env.mode == "MAIN" then + -- Create display label for the socket group if the user didn't specify one + if socketGroup.label and socketGroup.label:match("%S") then + socketGroup.displayLabel = socketGroup.label + else + socketGroup.displayLabel = nil + for _, gem in ipairs(socketGroup.gemList) do + if gem.enabled and gem.data and not gem.data.support then + socketGroup.displayLabel = (socketGroup.displayLabel and socketGroup.displayLabel..", " or "") .. gem.name + end + end + socketGroup.displayLabel = socketGroup.displayLabel or "" + end + + -- Save the active skill list for display in the socket group tooltip + socketGroup.displaySkillList = socketGroupSkillList + elseif env.mode == "CALCS" then + socketGroup.displaySkillListCalcs = socketGroupSkillList + end + end + + if not env.player.mainSkill then + -- Add a default main skill if none are specified + local defaultGem = { + name = "Default Attack", + level = 1, + quality = 0, + enabled = true, + data = data.skills.Melee + } + env.player.mainSkill = calcs.createActiveSkill(defaultGem, { }) + t_insert(env.activeSkillList, env.player.mainSkill) + end + + -- Build skill modifier lists + env.auxSkillList = { } + for _, activeSkill in pairs(env.activeSkillList) do + calcs.buildActiveSkillModList(env, env.player, activeSkill) + end + + return env +end \ No newline at end of file diff --git a/Modules/CalcTools.lua b/Modules/CalcTools.lua new file mode 100644 index 00000000..a9a1bc33 --- /dev/null +++ b/Modules/CalcTools.lua @@ -0,0 +1,71 @@ +-- Path of Building +-- +-- Module: Calc Tools +-- Various functions used by the calculation modules +-- + +local pairs = pairs +local m_floor = math.floor +local m_min = math.min +local m_max = math.max + +calcLib = { } + +-- Calculate and combine INC/MORE modifiers for the given modifier names +function calcLib.mod(modDB, cfg, ...) + return (1 + (modDB:Sum("INC", cfg, ...)) / 100) * modDB:Sum("MORE", cfg, ...) +end + +-- Calculate value +function calcLib.val(modDB, name, cfg) + local baseVal = modDB:Sum("BASE", cfg, name) + if baseVal ~= 0 then + return baseVal * calcLib.mod(modDB, cfg, name) + else + return 0 + end +end + +-- Calculate hit chance +function calcLib.hitChance(evasion, accuracy) + local rawChance = accuracy / (accuracy + (evasion / 4) ^ 0.8) * 100 + return m_max(m_min(m_floor(rawChance + 0.5), 95), 5) +end + +-- Check if given support gem can support the given skill types +function calcLib.gemCanSupportTypes(gem, skillTypes) + for _, skillType in pairs(gem.data.excludeSkillTypes) do + if skillTypes[skillType] then + return false + end + end + if not gem.data.requireSkillTypes[1] then + return true + end + for _, skillType in pairs(gem.data.requireSkillTypes) do + if skillTypes[skillType] then + return true + end + end + return false +end + +-- Check if given support gem can support the given active skill +function calcLib.gemCanSupport(gem, activeSkill) + if gem.data.unsupported then + return false + end + if activeSkill.summonSkill then + return calcLib.gemCanSupport(gem, activeSkill.summonSkill) + end + if activeSkill.minionSkillTypes and calcLib.gemCanSupportTypes(gem, activeSkill.minionSkillTypes) then + return true + end + return calcLib.gemCanSupportTypes(gem, activeSkill.skillTypes) +end + +-- Check if given gem is of the given type ("all", "strength", "melee", etc) +function calcLib.gemIsType(gem, type) + local tags = gem.data.gemTags + return tags and (type == "all" or (type == "elemental" and (tags.fire or tags.cold or tags.lightning)) or tags[type]) +end diff --git a/Modules/Calcs.lua b/Modules/Calcs.lua index 350530cb..c262ada2 100644 --- a/Modules/Calcs.lua +++ b/Modules/Calcs.lua @@ -1,3334 +1,41 @@ -- Path of Building -- -- Module: Calcs --- Performs all the offense and defense calculations. --- Here be dragons! --- This file is 3400 lines long, over half of which is in one function... +-- Manages the calculation system. -- local pairs = pairs local ipairs = ipairs local t_insert = table.insert local t_remove = table.remove -local m_abs = math.abs -local m_ceil = math.ceil -local m_floor = math.floor -local m_min = math.min -local m_max = math.max local s_format = string.format -local band = bit.band -local bor = bit.bor -local bnot = bit.bnot --- List of all damage types, ordered according to the conversion sequence -local dmgTypeList = {"Physical", "Lightning", "Cold", "Fire", "Chaos"} - -local resistTypeList = { "Fire", "Cold", "Lightning", "Chaos" } - -local isElemental = { Fire = true, Cold = true, Lightning = true } - --- Calculate and combine INC/MORE modifiers for the given modifier names -local function calcMod(modDB, cfg, ...) - return (1 + (modDB:Sum("INC", cfg, ...)) / 100) * modDB:Sum("MORE", cfg, ...) -end - --- Calculate value, optionally adding additional base -local function calcVal(modDB, name, cfg, base) - local baseVal = modDB:Sum("BASE", cfg, name) + (base or 0) - if baseVal ~= 0 then - return baseVal * calcMod(modDB, cfg, name) - else - return 0 - end -end - --- Calculate hit chance -local function calcHitChance(evasion, accuracy) - local rawChance = accuracy / (accuracy + (evasion / 4) ^ 0.8) * 100 - return m_max(m_min(m_floor(rawChance + 0.5), 95), 5) -end - --- Merge gem modifiers with given mod list -local function mergeGemMods(modList, gem) - modList:AddList(gem.data.baseMods) - if gem.quality > 0 then - for i = 1, #gem.data.qualityMods do - local scaledMod = copyTable(gem.data.qualityMods[i]) - scaledMod.value = m_floor(scaledMod.value * gem.quality) - modList:AddMod(scaledMod) - end - end - gem.level = m_max(gem.level, 1) - if not gem.data.levels[gem.level] then - gem.level = m_min(gem.level, #gem.data.levels) - end - local levelData = gem.data.levels[gem.level] - for col, mod in pairs(gem.data.levelMods) do - if levelData[col] then - local newMod = copyTable(mod) - if type(newMod.value) == "table" then - newMod.value.value = levelData[col] - else - newMod.value = levelData[col] - end - modList:AddMod(newMod) - end - end -end - --- Check if given support gem can support the given active skill --- Global function, as GemSelectControl needs to use it too -function gemCanSupport(gem, activeSkill) - if gem.data.unsupported then - return false - end - for _, skillType in pairs(gem.data.excludeSkillTypes) do - if activeSkill.skillTypes[skillType] then - return false - end - end - if not gem.data.requireSkillTypes[1] then - return true - end - for _, skillType in pairs(gem.data.requireSkillTypes) do - if activeSkill.skillTypes[skillType] then - return true - end - end - return false -end - --- Check if given gem is of the given type ("all", "strength", "melee", etc) --- Global function, as ModDBClass and ModListClass need to use it too -function gemIsType(gem, type) - return type == "all" or (type == "elemental" and (gem.data.fire or gem.data.cold or gem.data.lightning)) or gem.data[type] -end - --- Create an active skill using the given active gem and list of support gems --- It will determine the base flag set, and check which of the support gems can support this skill -local function createActiveSkill(activeGem, supportList) - local activeSkill = { } - activeSkill.activeGem = { - name = activeGem.name, - data = activeGem.data, - level = activeGem.level, - quality = activeGem.quality, - fromItem = activeGem.fromItem, - srcGem = activeGem, - } - activeSkill.gemList = { activeSkill.activeGem } - - activeSkill.skillTypes = copyTable(activeGem.data.skillTypes) - - activeSkill.skillData = { } - - -- Initialise skill flag set ('attack', 'projectile', etc) - local skillFlags = copyTable(activeGem.data.baseFlags) - activeSkill.skillFlags = skillFlags - skillFlags.hit = activeSkill.skillTypes[SkillType.Attack] or activeSkill.skillTypes[SkillType.Hit] - - for _, gem in ipairs(supportList) do - if gemCanSupport(gem, activeSkill) then - if gem.data.addFlags then - -- Support gem adds flags to supported skills (eg. Remote Mine adds 'mine') - for k in pairs(gem.data.addFlags) do - skillFlags[k] = true - end - end - for _, skillType in pairs(gem.data.addSkillTypes) do - activeSkill.skillTypes[skillType] = true - end - end - end - - -- Process support gems - for _, gem in ipairs(supportList) do - if gemCanSupport(gem, activeSkill) then - t_insert(activeSkill.gemList, { - name = gem.name, - data = gem.data, - level = gem.level, - quality = gem.quality, - fromItem = gem.fromItem, - srcGem = gem, - }) - if gem.isSupporting then - gem.isSupporting[activeGem.name] = true - end - end - end - - return activeSkill -end - -local function getWeaponFlags(weaponData, weaponTypes) - local info = data.weaponTypeInfo[weaponData.type] - if not info then - return - end - if weaponTypes and not weaponTypes[weaponData.type] and - (not weaponData.countsAsAll1H or not (weaponTypes["Claw"] or weaponTypes["Dagger"] or weaponTypes["One Handed Axe"] or weaponTypes["One Handed Mace"] or weaponTypes["One Handed Sword"])) then - return - end - local flags = info.flag - if weaponData.countsAsAll1H then - flags = bor(ModFlag.Axe, ModFlag.Claw, ModFlag.Dagger, ModFlag.Mace, ModFlag.Sword) - end - if weaponData.type ~= "None" then - flags = bor(flags, ModFlag.Weapon) - if info.oneHand then - flags = bor(flags, ModFlag.Weapon1H) - else - flags = bor(flags, ModFlag.Weapon2H) - end - if info.melee then - flags = bor(flags, ModFlag.WeaponMelee) - else - flags = bor(flags, ModFlag.WeaponRanged) - end - end - return flags, info -end - --- Build list of modifiers for given active skill -local function buildActiveSkillModList(env, activeSkill) - local skillTypes = activeSkill.skillTypes - local skillFlags = activeSkill.skillFlags - - -- Handle multipart skills - local activeGemParts = activeSkill.activeGem.data.parts - if activeGemParts then - if activeSkill == env.mainSkill then - activeSkill.skillPart = m_min(#activeGemParts, env.skillPart or activeSkill.activeGem.srcGem.skillPart or 1) - else - activeSkill.skillPart = m_min(#activeGemParts, activeSkill.activeGem.srcGem.skillPart or 1) - end - local part = activeGemParts[activeSkill.skillPart] - for k, v in pairs(part) do - if v == true then - skillFlags[k] = true - elseif v == false then - skillFlags[k] = nil - end - end - activeSkill.skillPartName = part.name - skillFlags.multiPart = #activeGemParts > 1 - end - - if skillTypes[SkillType.Shield] and (not env.itemList["Weapon 2"] or env.itemList["Weapon 2"].type ~= "Shield") then - -- Skill requires a shield to be equipped - skillFlags.disable = true - end - - if skillFlags.attack then - -- Set weapon flags - local weaponTypes = activeSkill.activeGem.data.weaponTypes - local weapon1Flags, weapon1Info = getWeaponFlags(env.weaponData1, weaponTypes) - if weapon1Flags then - activeSkill.weapon1Flags = weapon1Flags - skillFlags.weapon1Attack = true - if weapon1Info.melee and skillFlags.melee then - skillFlags.projectile = nil - elseif not weapon1Info.melee and skillFlags.projectile then - skillFlags.melee = nil - end - elseif skillTypes[SkillType.DualWield] or not skillTypes[SkillType.CanDualWield] or skillTypes[SkillType.MainHandOnly] or skillFlags.forceMainHand then - -- Skill requires a compatible main hand weapon - skillFlags.disable = true - end - if skillTypes[SkillType.DualWield] or skillTypes[SkillType.CanDualWield] then - if not skillTypes[SkillType.MainHandOnly] and not skillFlags.forceMainHand then - local weapon2Flags = getWeaponFlags(env.weaponData2, weaponTypes) - if weapon2Flags then - activeSkill.weapon2Flags = weapon2Flags - skillFlags.weapon2Attack = true - elseif skillTypes[SkillType.DualWield] or not skillFlags.weapon1Attack then - -- Skill requires a compatible off hand weapon - skillFlags.disable = true - end - end - elseif env.weaponData2.type then - -- Skill cannot be used while dual wielding - skillFlags.disable = true - end - skillFlags.bothWeaponAttack = skillFlags.weapon1Attack and skillFlags.weapon2Attack - end - - -- Build skill mod flag set - local skillModFlags = 0 - if skillFlags.hit then - skillModFlags = bor(skillModFlags, ModFlag.Hit) - end - if skillFlags.attack then - skillModFlags = bor(skillModFlags, ModFlag.Attack) - else - skillModFlags = bor(skillModFlags, ModFlag.Cast) - if skillFlags.spell then - skillModFlags = bor(skillModFlags, ModFlag.Spell) - end - end - if skillFlags.melee then - skillModFlags = bor(skillModFlags, ModFlag.Melee) - elseif skillFlags.projectile then - skillModFlags = bor(skillModFlags, ModFlag.Projectile) - end - if skillFlags.area then - skillModFlags = bor(skillModFlags, ModFlag.Area) - end - - -- Build skill keyword flag set - local skillKeywordFlags = 0 - if skillFlags.aura then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Aura) - end - if skillFlags.curse then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Curse) - end - if skillFlags.warcry then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Warcry) - end - if skillFlags.movement then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Movement) - end - if skillFlags.vaal then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Vaal) - end - if skillFlags.lightning then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Lightning) - end - if skillFlags.cold then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Cold) - end - if skillFlags.fire then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Fire) - end - if skillFlags.chaos then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Chaos) - end - if skillFlags.minion then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Minion) - elseif skillFlags.totem then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Totem) - elseif skillFlags.trap then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Trap) - elseif skillFlags.mine then - skillKeywordFlags = bor(skillKeywordFlags, KeywordFlag.Mine) - end - - -- Get skill totem ID for totem skills - -- This is used to calculate totem life - if skillFlags.totem then - activeSkill.skillTotemId = activeSkill.activeGem.data.skillTotemId - if not activeSkill.skillTotemId then - if activeSkill.activeGem.data.color == 2 then - activeSkill.skillTotemId = 2 - elseif activeSkill.activeGem.data.color == 3 then - activeSkill.skillTotemId = 3 - else - activeSkill.skillTotemId = 1 - end - end - end - - -- Build config structure for modifier searches - activeSkill.skillCfg = { - flags = bor(skillModFlags, activeSkill.weapon1Flags or activeSkill.weapon2Flags or 0), - keywordFlags = skillKeywordFlags, - skillName = activeSkill.activeGem.name:gsub("^Vaal ",""), -- This allows modifiers that target specific skills to also apply to their Vaal counterpart - skillGem = activeSkill.activeGem, - skillPart = activeSkill.skillPart, - skillTypes = activeSkill.skillTypes, - skillCond = { }, - skillDist = env.buffMode == "EFFECTIVE" and env.configInput.projectileDistance, - slotName = activeSkill.slotName, - } - if skillFlags.weapon1Attack then - activeSkill.weapon1Cfg = copyTable(activeSkill.skillCfg, true) - activeSkill.weapon1Cfg.skillCond = { ["MainHandAttack"] = true } - activeSkill.weapon1Cfg.flags = bor(skillModFlags, activeSkill.weapon1Flags) - end - if skillFlags.weapon2Attack then - activeSkill.weapon2Cfg = copyTable(activeSkill.skillCfg, true) - activeSkill.weapon2Cfg.skillCond = { ["OffHandAttack"] = true } - activeSkill.weapon2Cfg.flags = bor(skillModFlags, activeSkill.weapon2Flags) - end - - -- Apply gem property modifiers from the item this skill is socketed into - for _, value in ipairs(env.modDB:Sum("LIST", activeSkill.skillCfg, "GemProperty")) do - for _, gem in pairs(activeSkill.gemList) do - if not gem.fromItem and gemIsType(gem, value.keyword) then - gem[value.key] = (gem[value.key] or 0) + value.value - end - end - end - - -- Initialise skill modifier list - local skillModList = common.New("ModList") - activeSkill.skillModList = skillModList - - if skillFlags.disable then - wipeTable(skillFlags) - skillFlags.disable = true - return - end - - -- Add support gem modifiers to skill mod list - for _, gem in pairs(activeSkill.gemList) do - if gem.data.support then - mergeGemMods(skillModList, gem) - end - end - - -- Apply gem/quality modifiers from support gems - if not activeSkill.activeGem.fromItem then - for _, value in ipairs(skillModList:Sum("LIST", activeSkill.skillCfg, "GemProperty")) do - if value.keyword == "active_skill" then - activeSkill.activeGem[value.key] = activeSkill.activeGem[value.key] + value.value - end - end - end - - -- Add active gem modifiers - mergeGemMods(skillModList, activeSkill.activeGem) - - -- Add extra modifiers - for _, value in ipairs(env.modDB:Sum("LIST", activeSkill.skillCfg, "ExtraSkillMod")) do - skillModList:AddMod(value.mod) - end - - -- Extract skill data - for _, value in ipairs(skillModList:Sum("LIST", activeSkill.skillCfg, "Misc")) do - if value.type == "SkillData" then - activeSkill.skillData[value.key] = value.value - end - end - - -- Separate global effect modifiers (mods that can affect defensive stats or other skills) - local i = 1 - while skillModList[i] do - local destList - for _, tag in ipairs(skillModList[i].tagList) do - if tag.type == "GlobalEffect" then - if tag.effectType == "Buff" then - destList = "buffModList" - elseif tag.effectType == "Aura" then - destList = "auraModList" - elseif tag.effectType == "Debuff" then - destList = "debuffModList" - elseif tag.effectType == "Curse" then - destList = "curseModList" - end - break - end - end - if destList then - if not activeSkill[destList] then - activeSkill[destList] = { } - end - local sig = modLib.formatModParams(skillModList[i]) - for d = 1, #activeSkill[destList] do - local destMod = activeSkill[destList][d] - if sig == modLib.formatModParams(destMod) and (destMod.type == "BASE" or destMod.type == "INC") then - destMod.value = destMod.value + skillModList[i].value - sig = nil - break - end - end - if sig then - t_insert(activeSkill[destList], skillModList[i]) - end - t_remove(skillModList, i) - else - i = i + 1 - end - end - - if activeSkill.buffModList or activeSkill.auraModList or activeSkill.debuffModList or activeSkill.curseModList then - -- Add to auxillary skill list - t_insert(env.auxSkillList, activeSkill) - end -end - --- Build list of modifiers from the listed tree nodes -local function buildNodeModList(env, nodeList, finishJewels) - -- Initialise radius jewels - for _, rad in pairs(env.radiusJewelList) do - wipeTable(rad.data) - end - - -- Add node modifers - local modList = common.New("ModList") - for _, node in pairs(nodeList) do - -- Merge with output list - if node.type == "keystone" then - modList:AddMod(node.keystoneMod) - else - modList:AddList(node.modList) - end - - -- Run radius jewels - for _, rad in pairs(env.radiusJewelList) do - if rad.nodes[node.id] then - rad.func(node.modList, modList, rad.data) - end - end - end - - if finishJewels then - -- Finalise radius jewels - for _, rad in pairs(env.radiusJewelList) do - rad.func(nil, modList, rad.data, rad.attributes) - if env.mode == "MAIN" then - if not rad.item.jewelRadiusData then - rad.item.jewelRadiusData = { } - end - rad.item.jewelRadiusData[rad.nodeId] = rad.data - end - end - end - - return modList -end - --- Merge an instance of a buff, taking the highest value of each modifier -local function mergeBuff(src, destTable, destKey) - if not destTable[destKey] then - destTable[destKey] = { } - end - local dest = destTable[destKey] - for _, mod in ipairs(src) do - local param = modLib.formatModParams(mod) - for index, destMod in ipairs(dest) do - if param == modLib.formatModParams(destMod) then - if type(destMod.value) == "number" and mod.value > destMod.value then - dest[index] = mod - end - param = nil - break - end - end - if param then - t_insert(dest, mod) - end - end -end - --- Calculate min/max damage of a hit for the given damage type -local function calcHitDamage(env, source, cfg, breakdown, damageType, ...) - local modDB = env.modDB - - local damageTypeMin = damageType.."Min" - local damageTypeMax = damageType.."Max" - - -- Calculate base values - local damageEffectiveness = source.damageEffectiveness or 1 - local addedMin = modDB:Sum("BASE", cfg, damageTypeMin) - local addedMax = modDB:Sum("BASE", cfg, damageTypeMax) - local baseMin = (source[damageTypeMin] or 0) + addedMin * damageEffectiveness - local baseMax = (source[damageTypeMax] or 0) + addedMax * damageEffectiveness - - if breakdown and not (...) and baseMin ~= 0 and baseMax ~= 0 then - t_insert(breakdown, "Base damage:") - local plus = "" - if (source[damageTypeMin] or 0) ~= 0 or (source[damageTypeMax] or 0) ~= 0 then - t_insert(breakdown, s_format("%d to %d ^8(base damage from %s)", source[damageTypeMin], source[damageTypeMax], env.mode_skillType == "ATTACK" and "weapon" or "skill")) - plus = "+ " - end - if addedMin ~= 0 or addedMax ~= 0 then - if damageEffectiveness ~= 1 then - t_insert(breakdown, s_format("%s(%d to %d) x %.2f ^8(added damage multiplied by damage effectiveness)", plus, addedMin, addedMax, damageEffectiveness)) - else - t_insert(breakdown, s_format("%s%d to %d ^8(added damage)", plus, addedMin, addedMax)) - end - end - t_insert(breakdown, s_format("= %.1f to %.1f", baseMin, baseMax)) - end - - -- Calculate conversions - local addMin, addMax = 0, 0 - local conversionTable = env.conversionTable - for _, otherType in ipairs(dmgTypeList) do - if otherType == damageType then - -- Damage can only be converted from damage types that preceed this one in the conversion sequence, so stop here - break - end - local convMult = conversionTable[otherType][damageType] - if convMult > 0 then - -- Damage is being converted/gained from the other damage type - local min, max = calcHitDamage(env, source, cfg, breakdown, otherType, damageType, ...) - addMin = addMin + min * convMult - addMax = addMax + max * convMult - end - end - if addMin ~= 0 and addMax ~= 0 then - addMin = round(addMin) - addMax = round(addMax) - end - - if baseMin == 0 and baseMax == 0 then - -- No base damage for this type, don't need to calculate modifiers - if breakdown and (addMin ~= 0 or addMax ~= 0) then - t_insert(breakdown.damageComponents, { - source = damageType, - convSrc = (addMin ~= 0 or addMax ~= 0) and (addMin .. " to " .. addMax), - total = addMin .. " to " .. addMax, - convDst = (...) and s_format("%d%% to %s", conversionTable[damageType][...] * 100, ...), - }) - end - return addMin, addMax - end - - -- Build lists of applicable modifier names - local addElemental = isElemental[damageType] - local modNames = { damageType.."Damage", "Damage" } - for i = 1, select('#', ...) do - local dstElem = select(i, ...) - -- Add modifiers for damage types to which this damage is being converted - addElemental = addElemental or isElemental[dstElem] - t_insert(modNames, dstElem.."Damage") - end - if addElemental then - -- Damage is elemental or is being converted to elemental damage, add global elemental modifiers - t_insert(modNames, "ElementalDamage") - end - - -- Combine modifiers - local inc = 1 + modDB:Sum("INC", cfg, unpack(modNames)) / 100 - local more = m_floor(modDB:Sum("MORE", cfg, unpack(modNames)) * 100 + 0.50000001) / 100 - - if breakdown then - t_insert(breakdown.damageComponents, { - source = damageType, - base = baseMin .. " to " .. baseMax, - inc = (inc ~= 1 and "x "..inc), - more = (more ~= 1 and "x "..more), - convSrc = (addMin ~= 0 or addMax ~= 0) and (addMin .. " to " .. addMax), - total = (round(baseMin * inc * more) + addMin) .. " to " .. (round(baseMax * inc * more) + addMax), - convDst = (...) and s_format("%d%% to %s", conversionTable[damageType][...] * 100, ...), - }) - end - - return (round(baseMin * inc * more) + addMin), - (round(baseMax * inc * more) + addMax) -end - --- --- The following functions perform various steps in the calculations process. --- Depending on what is being done with the output, other code may run inbetween steps, however the steps must always be performed in order: --- 1. Initialise environment (initEnv) --- 2. Run calculations (performCalcs) --- --- Thus a basic calculation pass would look like this: --- --- local env = initEnv(build, mode) --- performCalcs(env) --- - -local tempTable1 = { } -local tempTable2 = { } -local tempTable3 = { } - --- Initialise environment: --- 1. Initialises the modifier databases --- 2. Merges modifiers for all items --- 3. Builds a list of jewels with radius functions --- 4. Merges modifiers for all allocated passive nodes --- 5. Builds a list of active skills and their supports --- 6. Builds modifier lists for all active skills -local function initEnv(build, mode, override) - override = override or { } - - local env = { } - env.build = build - env.configInput = build.configTab.input - env.calcsInput = build.calcsTab.input - env.mode = mode - env.spec = override.spec or build.spec - env.classId = env.spec.curClassId - - -- Initialise modifier database with base values - local modDB = common.New("ModDB") - env.modDB = modDB - local classStats = build.tree.characterData[env.classId] - for _, stat in pairs({"Str","Dex","Int"}) do - modDB:NewMod(stat, "BASE", classStats["base_"..stat:lower()], "Base") - end - modDB.multipliers["Level"] = m_max(1, m_min(100, build.characterLevel)) - modDB:NewMod("Life", "BASE", 12, "Base", { type = "Multiplier", var = "Level", base = 38 }) - modDB:NewMod("Mana", "BASE", 6, "Base", { type = "Multiplier", var = "Level", base = 34 }) - modDB:NewMod("ManaRegen", "BASE", 0.0175, "Base", { type = "PerStat", stat = "Mana", div = 1 }) - modDB:NewMod("Evasion", "BASE", 3, "Base", { type = "Multiplier", var = "Level", base = 53 }) - modDB:NewMod("Accuracy", "BASE", 2, "Base", { type = "Multiplier", var = "Level", base = -2 }) - modDB:NewMod("FireResistMax", "BASE", 75, "Base") - modDB:NewMod("FireResist", "BASE", -60, "Base") - modDB:NewMod("ColdResistMax", "BASE", 75, "Base") - modDB:NewMod("ColdResist", "BASE", -60, "Base") - modDB:NewMod("LightningResistMax", "BASE", 75, "Base") - modDB:NewMod("LightningResist", "BASE", -60, "Base") - modDB:NewMod("ChaosResistMax", "BASE", 75, "Base") - modDB:NewMod("ChaosResist", "BASE", -60, "Base") - modDB:NewMod("BlockChanceMax", "BASE", 75, "Base") - modDB:NewMod("PowerChargesMax", "BASE", 3, "Base") - modDB:NewMod("CritChance", "INC", 50, "Base", { type = "Multiplier", var = "PowerCharge" }) - modDB:NewMod("FrenzyChargesMax", "BASE", 3, "Base") - modDB:NewMod("Speed", "INC", 4, "Base", { type = "Multiplier", var = "FrenzyCharge" }) - modDB:NewMod("Damage", "MORE", 4, "Base", { type = "Multiplier", var = "FrenzyCharge" }) - modDB:NewMod("EnduranceChargesMax", "BASE", 3, "Base") - modDB:NewMod("ElementalResist", "BASE", 4, "Base", { type = "Multiplier", var = "EnduranceCharge" }) - modDB:NewMod("MaxLifeLeechRate", "BASE", 20, "Base") - modDB:NewMod("MaxManaLeechRate", "BASE", 20, "Base") - modDB:NewMod("ActiveTrapLimit", "BASE", 3, "Base") - modDB:NewMod("ActiveMineLimit", "BASE", 5, "Base") - modDB:NewMod("ActiveTotemLimit", "BASE", 1, "Base") - modDB:NewMod("EnemyCurseLimit", "BASE", 1, "Base") - modDB:NewMod("ProjectileCount", "BASE", 1, "Base") - modDB:NewMod("Speed", "MORE", 10, "Base", ModFlag.Attack, { type = "Condition", var = "DualWielding" }) - modDB:NewMod("PhysicalDamage", "MORE", 20, "Base", ModFlag.Attack, { type = "Condition", var = "DualWielding" }) - modDB:NewMod("BlockChance", "BASE", 15, "Base", { type = "Condition", var = "DualWielding" }) - modDB:NewMod("LifeRegenPercent", "BASE", 4, "Base", { type = "Condition", var = "OnConsecratedGround" }) - modDB:NewMod("Misc", "LIST", { type = "EnemyModifier", mod = modLib.createMod("DamageTaken", "INC", 50, "Shock") }, "Base", { type = "Condition", var = "EnemyShocked" }) - modDB:NewMod("Misc", "LIST", { type = "EnemyModifier", mod = modLib.createMod("HitChance", "MORE", -50, "Blind") }, "Base", { type = "Condition", var = "EnemyBlinded" }) - - -- Add bandit mods - if build.banditNormal == "Alira" then - modDB:NewMod("Mana", "BASE", 60, "Bandit") - elseif build.banditNormal == "Kraityn" then - modDB:NewMod("ElementalResist", "BASE", 10, "Bandit") - elseif build.banditNormal == "Oak" then - modDB:NewMod("Life", "BASE", 40, "Bandit") - else - modDB:NewMod("ExtraPoints", "BASE", 1, "Bandit") - end - if build.banditCruel == "Alira" then - modDB:NewMod("Speed", "INC", 5, "Bandit", ModFlag.Spell) - elseif build.banditCruel == "Kraityn" then - modDB:NewMod("Speed", "INC", 8, "Bandit", ModFlag.Attack) - elseif build.banditCruel == "Oak" then - modDB:NewMod("PhysicalDamage", "INC", 16, "Bandit") - else - modDB:NewMod("ExtraPoints", "BASE", 1, "Bandit") - end - if build.banditMerciless == "Alira" then - modDB:NewMod("PowerChargesMax", "BASE", 1, "Bandit") - elseif build.banditMerciless == "Kraityn" then - modDB:NewMod("FrenzyChargesMax", "BASE", 1, "Bandit") - elseif build.banditMerciless == "Oak" then - modDB:NewMod("EnduranceChargesMax", "BASE", 1, "Bandit") - else - modDB:NewMod("ExtraPoints", "BASE", 1, "Bandit") - end - - -- Initialise enemy modifier database - local enemyDB = common.New("ModDB") - env.enemyDB = enemyDB - env.enemyLevel = m_max(1, m_min(100, env.configInput.enemyLevel and env.configInput.enemyLevel or m_min(env.build.characterLevel, 84))) - enemyDB:NewMod("Accuracy", "BASE", data.monsterAccuracyTable[env.enemyLevel], "Base") - enemyDB:NewMod("Evasion", "BASE", data.monsterEvasionTable[env.enemyLevel], "Base") - - -- Add mods from the config tab - modDB:AddList(build.configTab.modList) - enemyDB:AddList(build.configTab.enemyModList) - - -- Build list of passive nodes - local nodes - if override.addNodes or override.removeNodes then - nodes = { } - if override.addNodes then - for node in pairs(override.addNodes) do - nodes[node.id] = node - end - end - for _, node in pairs(env.spec.allocNodes) do - if not override.removeNodes or not override.removeNodes[node] then - nodes[node.id] = node - end - end - else - nodes = env.spec.allocNodes - end - - -- Build and merge item modifiers, and create list of radius jewels - env.radiusJewelList = wipeTable(env.radiusJewelList) - env.itemList = { } - env.flasks = { } - env.modDB.conditions["UsingAllCorruptedItems"] = true - for slotName, slot in pairs(build.itemsTab.slots) do - local item - if slotName == override.repSlotName then - item = override.repItem - elseif slot.nodeId and override.spec then - item = build.itemsTab.list[env.spec.jewels[slot.nodeId]] - else - item = build.itemsTab.list[slot.selItemId] - end - if slot.nodeId then - -- Slot is a jewel socket, check if socket is allocated - if not nodes[slot.nodeId] then - item = nil - elseif item and item.jewelRadiusIndex then - -- Jewel has a radius, add it to the list - local funcList = item.jewelData.funcList or { function(nodeMods, out, data) - -- Default function just tallies all stats in radius - if nodeMods then - for _, stat in pairs({"Str","Dex","Int"}) do - data[stat] = (data[stat] or 0) + nodeMods:Sum("BASE", nil, stat) - end - end - end } - for _, func in ipairs(funcList) do - local node = build.spec.nodes[slot.nodeId] - t_insert(env.radiusJewelList, { - nodes = node.nodesInRadius[item.jewelRadiusIndex], - func = func, - item = item, - nodeId = slot.nodeId, - attributes = node.attributesInRadius[item.jewelRadiusIndex], - data = { } - }) - end - end - end - if item and item.type == "Flask" then - if slot.active then - env.flasks[item] = true - end - item = nil - end - env.itemList[slotName] = item - if item then - -- Merge mods for this item - local srcList = item.modList or item.slotModList[slot.slotNum] - env.modDB:AddList(srcList) - if item.type ~= "Jewel" and item.type ~= "Flask" then - -- Update item counts - local key - if item.rarity == "UNIQUE" or item.rarity == "RELIC" then - key = "UniqueItem" - elseif item.rarity == "RARE" then - key = "RareItem" - elseif item.rarity == "MAGIC" then - key = "MagicItem" - else - key = "NormalItem" - end - env.modDB.multipliers[key] = (env.modDB.multipliers[key] or 0) + 1 - if item.corrupted then - env.modDB.multipliers.CorruptedItem = (env.modDB.multipliers.CorruptedItem or 0) + 1 - else - env.modDB.conditions["UsingAllCorruptedItems"] = false - end - end - end - end - - if override.toggleFlask then - if env.flasks[override.toggleFlask] then - env.flasks[override.toggleFlask] = nil - else - env.flasks[override.toggleFlask] = true - end - end - - if env.mode == "MAIN" then - -- Process extra skills granted by items - local markList = { } - for _, mod in ipairs(env.modDB.mods["ExtraSkill"] or { }) do - -- Extract the name of the slot containing the item this skill was granted by - local slotName - for _, tag in ipairs(mod.tagList) do - if tag.type == "SocketedIn" then - slotName = tag.slotName - break - end - end - - -- Check if a matching group already exists - local group - for index, socketGroup in pairs(build.skillsTab.socketGroupList) do - if socketGroup.source == mod.source and socketGroup.slot == slotName then - if socketGroup.gemList[1] and socketGroup.gemList[1].nameSpec == mod.value.name then - group = socketGroup - markList[socketGroup] = true - break - end - end - end - if not group then - -- Create a new group for this skill - group = { label = "", enabled = true, gemList = { }, source = mod.source, slot = slotName } - t_insert(build.skillsTab.socketGroupList, group) - markList[group] = true - end - - -- Update the group - group.sourceItem = build.itemsTab.list[tonumber(mod.source:match("Item:(%d+):"))] - wipeTable(group.gemList) - t_insert(group.gemList, { - nameSpec = mod.value.name, - level = mod.value.level, - quality = 0, - enabled = true, - fromItem = true, - }) - if mod.value.noSupports then - group.noSupports = true - else - for _, socketGroup in pairs(build.skillsTab.socketGroupList) do - -- Look for other groups that are socketed in the item - if socketGroup.slot == slotName and not socketGroup.source then - -- Add all support gems to the skill's group - for _, gem in ipairs(socketGroup.gemList) do - if gem.data and gem.data.support then - t_insert(group.gemList, gem) - end - end - end - end - end - build.skillsTab:ProcessSocketGroup(group) - end - - -- Remove any socket groups that no longer have a matching item - local i = 1 - while build.skillsTab.socketGroupList[i] do - local socketGroup = build.skillsTab.socketGroupList[i] - if socketGroup.source and not markList[socketGroup] then - t_remove(build.skillsTab.socketGroupList, i) - if build.skillsTab.displayGroup == socketGroup then - build.skillsTab.displayGroup = nil - end - else - i = i + 1 - end - end - end - - -- Get the weapon data tables for the equipped weapons - env.weaponData1 = env.itemList["Weapon 1"] and env.itemList["Weapon 1"].weaponData and env.itemList["Weapon 1"].weaponData[1] or copyTable(data.unarmedWeaponData[env.classId]) - if env.weaponData1.countsAsDualWielding then - env.weaponData2 = env.itemList["Weapon 1"].weaponData[2] - else - env.weaponData2 = env.itemList["Weapon 2"] and env.itemList["Weapon 2"].weaponData and env.itemList["Weapon 2"].weaponData[2] or { } - end - - -- Build and merge modifiers for allocated passives - env.modDB:AddList(buildNodeModList(env, nodes, true)) - - -- Determine main skill group - if env.mode == "CALCS" then - env.calcsInput.skill_number = m_min(m_max(#build.skillsTab.socketGroupList, 1), env.calcsInput.skill_number or 1) - env.mainSocketGroup = env.calcsInput.skill_number - env.skillPart = env.calcsInput.skill_part or 1 - env.buffMode = env.calcsInput.misc_buffMode - else - build.mainSocketGroup = m_min(m_max(#build.skillsTab.socketGroupList, 1), build.mainSocketGroup or 1) - env.mainSocketGroup = build.mainSocketGroup - env.buffMode = "EFFECTIVE" - end - - -- Build list of active skills - env.activeSkillList = { } - local groupCfg = wipeTable(tempTable1) - for index, socketGroup in pairs(build.skillsTab.socketGroupList) do - local socketGroupSkillList = { } - if socketGroup.enabled or index == env.mainSocketGroup then - -- Build list of supports for this socket group - local supportList = wipeTable(tempTable2) - if not socketGroup.source then - groupCfg.slotName = socketGroup.slot - for _, value in ipairs(env.modDB:Sum("LIST", groupCfg, "ExtraSupport")) do - -- Add extra supports from the item this group is socketed in - local gemData = data.gems[value.name] - if gemData then - t_insert(supportList, { - name = value.name, - data = gemData, - level = value.level, - quality = 0, - enabled = true, - fromItem = true - }) - end - end - end - for _, gem in ipairs(socketGroup.gemList) do - if gem.enabled and gem.data and gem.data.support then - -- Add support gems from this group - local add = true - for _, otherGem in pairs(supportList) do - -- Check if there's another support with the same name already present - if gem.data == otherGem.data then - add = false - if gem.level > otherGem.level then - otherGem.level = gem.level - otherGem.quality = gem.quality - elseif gem.level == otherGem.level then - otherGem.quality = m_max(gem.quality, otherGem.quality) - end - break - end - end - if add then - gem.isSupporting = { } - t_insert(supportList, gem) - end - end - end - - -- Create active skills - for _, gem in ipairs(socketGroup.gemList) do - if gem.enabled and gem.data and not gem.data.support and not gem.data.unsupported then - local activeSkill = createActiveSkill(gem, supportList) - activeSkill.slotName = socketGroup.slot - t_insert(socketGroupSkillList, activeSkill) - t_insert(env.activeSkillList, activeSkill) - end - end - - if index == env.mainSocketGroup and #socketGroupSkillList > 0 then - -- Select the main skill from this socket group - local activeSkillIndex - if env.mode == "CALCS" then - env.calcsInput.skill_activeNumber = m_min(#socketGroupSkillList, env.calcsInput.skill_activeNumber or 1) - activeSkillIndex = env.calcsInput.skill_activeNumber - else - socketGroup.mainActiveSkill = m_min(#socketGroupSkillList, socketGroup.mainActiveSkill or 1) - activeSkillIndex = socketGroup.mainActiveSkill - end - env.mainSkill = socketGroupSkillList[activeSkillIndex] - end - end - - if env.mode == "MAIN" then - -- Create display label for the socket group if the user didn't specify one - if socketGroup.label and socketGroup.label:match("%S") then - socketGroup.displayLabel = socketGroup.label - else - socketGroup.displayLabel = nil - for _, gem in ipairs(socketGroup.gemList) do - if gem.enabled and gem.data and not gem.data.support then - socketGroup.displayLabel = (socketGroup.displayLabel and socketGroup.displayLabel..", " or "") .. gem.name - end - end - socketGroup.displayLabel = socketGroup.displayLabel or "" - end - - -- Save the active skill list for display in the socket group tooltip - socketGroup.displaySkillList = socketGroupSkillList - end - end - - if not env.mainSkill then - -- Add a default main skill if none are specified - local defaultGem = { - name = "Default Attack", - level = 1, - quality = 0, - enabled = true, - data = data.gems._default - } - env.mainSkill = createActiveSkill(defaultGem, { }) - t_insert(env.activeSkillList, env.mainSkill) - end - - -- Build skill modifier lists - env.auxSkillList = { } - for _, activeSkill in pairs(env.activeSkillList) do - buildActiveSkillModList(env, activeSkill) - end - - return env -end - --- Finalise environment and perform the calculations --- This function is 2100 lines long. Enjoy! -local function performCalcs(env) - local modDB = env.modDB - local enemyDB = env.enemyDB - - local output = { } - env.output = output - modDB.stats = output - local breakdown - if env.mode == "CALCS" then - breakdown = { } - env.breakdown = breakdown - end - - -- Set modes - if env.buffMode == "EFFECTIVE" then - env.mode_buffs = true - env.mode_combat = true - env.mode_effective = true - elseif env.buffMode == "COMBAT" then - env.mode_buffs = true - env.mode_combat = true - env.mode_effective = false - elseif env.buffMode == "BUFFED" then - env.mode_buffs = true - env.mode_combat = false - env.mode_effective = false - else - env.mode_buffs = false - env.mode_combat = false - env.mode_effective = false - end - - -- Merge keystone modifiers - do - local keystoneList = wipeTable(tempTable1) - for _, name in ipairs(modDB:Sum("LIST", nil, "Keystone")) do - keystoneList[name] = true - end - for name in pairs(keystoneList) do - modDB:AddList(env.build.tree.keystoneMap[name].modList) - end - end - - -- Merge flask modifiers - if env.mode_combat then - local effectInc = modDB:Sum("INC", nil, "FlaskEffect") - local flaskBuffs = { } - for item in pairs(env.flasks) do - modDB.conditions["UsingFlask"] = true - -- Avert thine eyes, lest they be forever scarred - -- I have no idea how to determine which buff is applied by a given flask, - -- so utility flasks are grouped by base, unique flasks are grouped by name, and magic flasks by their modifiers - local effectMod = 1 + (effectInc + item.flaskData.effectInc) / 100 - if item.buffModList[1] then - local srcList = common.New("ModList") - srcList:ScaleAddList(item.buffModList, effectMod) - mergeBuff(srcList, flaskBuffs, item.baseName) - end - if item.modList[1] then - local srcList = common.New("ModList") - srcList:ScaleAddList(item.modList, effectMod) - local key - if item.rarity == "UNIQUE" then - key = item.title - else - key = "" - for _, mod in ipairs(item.modList) do - key = key .. modLib.formatModParams(mod) .. "&" - end - end - mergeBuff(srcList, flaskBuffs, key) - end - end - for _, buffModList in pairs(flaskBuffs) do - modDB:AddList(buffModList) - end - end - - -- Set conditions - local condList = modDB.conditions - if env.weaponData1.type == "Staff" then - condList["UsingStaff"] = true - end - if env.weaponData1.type == "Bow" then - condList["UsingBow"] = true - end - if env.itemList["Weapon 2"] and env.itemList["Weapon 2"].type == "Shield" then - condList["UsingShield"] = true - end - if env.weaponData1.type and env.weaponData2.type then - condList["DualWielding"] = true - if env.weaponData1.type == "Claw" and env.weaponData2.type == "Claw" then - condList["DualWieldingClaws"] = true - end - end - if env.weaponData1.type == "None" then - condList["Unarmed"] = true - end - if (modDB.multipliers["NormalItem"] or 0) > 0 then - condList["UsingNormalItem"] = true - end - if (modDB.multipliers["MagicItem"] or 0) > 0 then - condList["UsingMagicItem"] = true - end - if (modDB.multipliers["RareItem"] or 0) > 0 then - condList["UsingRareItem"] = true - end - if (modDB.multipliers["UniqueItem"] or 0) > 0 then - condList["UsingUniqueItem"] = true - end - if (modDB.multipliers["CorruptedItem"] or 0) > 0 then - condList["UsingCorruptedItem"] = true - else - condList["NotUsingCorruptedItem"] = true - end - if env.mode_buffs then - condList["Buffed"] = true - end - if env.mode_combat then - condList["Combat"] = true - if not modDB:Sum("FLAG", nil, "NeverCrit") then - condList["CritInPast8Sec"] = true - end - if not env.mainSkill.skillData.triggered then - if env.mainSkill.skillFlags.attack then - condList["AttackedRecently"] = true - elseif env.mainSkill.skillFlags.spell then - condList["CastSpellRecently"] = true - end - end - if env.mainSkill.skillFlags.hit and not env.mainSkill.skillFlags.trap and not env.mainSkill.skillFlags.mine and not env.mainSkill.skillFlags.totem then - condList["HitRecently"] = true - end - if env.mainSkill.skillFlags.movement then - condList["UsedMovementSkillRecently"] = true - end - if env.mainSkill.skillFlags.totem then - condList["HaveTotem"] = true - condList["SummonedTotemRecently"] = true - end - if env.mainSkill.skillFlags.mine then - condList["DetonatedMinesRecently"] = true - end - end - if env.mode_effective then - condList["Effective"] = true - end - - -- Check for extra modifiers to apply to aura skills - local extraAuraModList = { } - for _, value in ipairs(modDB:Sum("LIST", nil, "ExtraAuraEffect")) do - t_insert(extraAuraModList, value.mod) - end - - -- Combine buffs/debuffs and calculate skill life and mana reservations - local buffs = { } - local debuffs = { } - local curses = { } - env.reserved_LifeBase = 0 - env.reserved_LifePercent = 0 - env.reserved_ManaBase = 0 - env.reserved_ManaPercent = 0 - if breakdown then - breakdown.LifeReserved = { reservations = { } } - breakdown.ManaReserved = { reservations = { } } - end - for _, activeSkill in pairs(env.activeSkillList) do - local skillModList = activeSkill.skillModList - local skillCfg = activeSkill.skillCfg - - -- Combine buffs/debuffs - if env.mode_buffs then - if activeSkill.buffModList and - not activeSkill.skillFlags.curse and - (not activeSkill.skillFlags.totem or activeSkill.skillData.allowTotemBuff) and - (not activeSkill.skillData.offering or modDB:Sum("FLAG", nil, "OfferingsAffectPlayer")) then - activeSkill.buffSkill = true - local srcList = common.New("ModList") - local inc = modDB:Sum("INC", skillCfg, "BuffEffect") - local more = modDB:Sum("MORE", skillCfg, "BuffEffect") - srcList:ScaleAddList(activeSkill.buffModList, (1 + inc / 100) * more) - mergeBuff(srcList, buffs, activeSkill.activeGem.name) - end - if activeSkill.auraModList and not activeSkill.skillData.auraCannotAffectSelf then - activeSkill.buffSkill = true - local srcList = common.New("ModList") - local inc = modDB:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") + skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") - local more = modDB:Sum("MORE", skillCfg, "AuraEffect", "BuffEffect") * skillModList:Sum("MORE", skillCfg, "AuraEffect", "BuffEffect") - srcList:ScaleAddList(activeSkill.auraModList, (1 + inc / 100) * more) - srcList:ScaleAddList(extraAuraModList, (1 + inc / 100) * more) - mergeBuff(srcList, buffs, activeSkill.activeGem.name) - condList["HaveAuraActive"] = true - end - end - if env.mode_effective then - if activeSkill.debuffModList then - activeSkill.debuffSkill = true - local srcList = common.New("ModList") - srcList:ScaleAddList(activeSkill.debuffModList, activeSkill.skillData.stackCount or 1) - mergeBuff(srcList, debuffs, activeSkill.activeGem.name) - end - if activeSkill.curseModList or (activeSkill.skillFlags.curse and activeSkill.buffModList) then - local curse = { - name = activeSkill.activeGem.name, - priority = activeSkill.skillTypes[SkillType.Aura] and 3 or 1, - } - local inc = modDB:Sum("INC", skillCfg, "CurseEffect") + enemyDB:Sum("INC", nil, "CurseEffect") + skillModList:Sum("INC", skillCfg, "CurseEffect") - local more = modDB:Sum("MORE", skillCfg, "CurseEffect") * enemyDB:Sum("MORE", nil, "CurseEffect") * skillModList:Sum("MORE", skillCfg, "CurseEffect") - if activeSkill.curseModList then - curse.modList = common.New("ModList") - curse.modList:ScaleAddList(activeSkill.curseModList, (1 + inc / 100) * more) - end - if activeSkill.buffModList then - -- Curse applies a buff; scale by curse effect, then buff effect - local temp = common.New("ModList") - temp:ScaleAddList(activeSkill.buffModList, (1 + inc / 100) * more) - curse.buffModList = common.New("ModList") - local buffInc = modDB:Sum("INC", skillCfg, "BuffEffect") - local buffMore = modDB:Sum("MORE", skillCfg, "BuffEffect") - curse.buffModList:ScaleAddList(temp, (1 + buffInc / 100) * buffMore) - end - t_insert(curses, curse) - end - end - - -- Calculate reservations - if activeSkill.skillTypes[SkillType.ManaCostReserved] and not activeSkill.skillFlags.totem then - local baseVal = activeSkill.skillData.manaCostOverride or activeSkill.skillData.manaCost - local suffix = activeSkill.skillTypes[SkillType.ManaCostPercent] and "Percent" or "Base" - local mult = skillModList:Sum("MORE", skillCfg, "ManaCost") - local more = modDB:Sum("MORE", skillCfg, "ManaReserved") * skillModList:Sum("MORE", skillCfg, "ManaReserved") - local inc = modDB:Sum("INC", skillCfg, "ManaReserved") + skillModList:Sum("INC", skillCfg, "ManaReserved") - local base = m_floor(baseVal * mult) - local cost = base - m_floor(base * -m_floor((100 + inc) * more - 100) / 100) - local pool - if modDB:Sum("FLAG", skillCfg, "BloodMagic", "SkillBloodMagic") or skillModList:Sum("FLAG", skillCfg, "SkillBloodMagic") then - pool = "Life" - else - pool = "Mana" - end - env["reserved_"..pool..suffix] = env["reserved_"..pool..suffix] + cost - if breakdown then - t_insert(breakdown[pool.."Reserved"].reservations, { - skillName = activeSkill.activeGem.name, - base = baseVal .. (activeSkill.skillTypes[SkillType.ManaCostPercent] and "%" or ""), - mult = mult ~= 1 and ("x "..mult), - more = more ~= 1 and ("x "..more), - inc = inc ~= 0 and ("x "..(1 + inc/100)), - total = cost .. (activeSkill.skillTypes[SkillType.ManaCostPercent] and "%" or ""), - }) - end - end - end - - -- Check for extra curses - for _, value in ipairs(modDB:Sum("LIST", nil, "ExtraCurse")) do - local curse = { - name = value.name, - priority = 2, - modList = common.New("ModList") - } - local gemModList = common.New("ModList") - mergeGemMods(gemModList, { - level = value.level, - quality = 0, - data = data.gems[value.name], - }) - local curseModList = { } - for _, mod in ipairs(gemModList) do - for _, tag in ipairs(mod.tagList) do - if tag.type == "GlobalEffect" and tag.effectType == "Curse" then - t_insert(curseModList, mod) - break - end - end - end - curse.modList:ScaleAddList(curseModList, (1 + enemyDB:Sum("INC", nil, "CurseEffect") / 100) * enemyDB:Sum("MORE", nil, "CurseEffect")) - t_insert(curses, curse) - end - - -- Assign curses to slots - local curseSlots = { } - env.curseSlots = curseSlots - output.EnemyCurseLimit = modDB:Sum("BASE", nil, "EnemyCurseLimit") - for _, curse in ipairs(curses) do - local slot - for i = 1, output.EnemyCurseLimit do - if not curseSlots[i] then - slot = i - break - elseif curseSlots[i].name == curse.name then - if curseSlots[i].priority < curse.priority then - slot = i - else - slot = nil - end - break - elseif curseSlots[i].priority < curse.priority then - slot = i - end - end - if slot then - curseSlots[slot] = curse - end - end - - -- Merge buff/debuff modifiers - for _, modList in pairs(buffs) do - modDB:AddList(modList) - end - for _, modList in pairs(debuffs) do - enemyDB:AddList(modList) - end - modDB.multipliers["CurseOnEnemy"] = #curseSlots - for _, slot in ipairs(curseSlots) do - condList["EnemyCursed"] = true - if slot.modList then - enemyDB:AddList(slot.modList) - end - if slot.buffModList then - modDB:AddList(slot.buffModList) - end - end - - -- Calculate current and maximum charges - output.PowerChargesMax = modDB:Sum("BASE", nil, "PowerChargesMax") - output.FrenzyChargesMax = modDB:Sum("BASE", nil, "FrenzyChargesMax") - output.EnduranceChargesMax = modDB:Sum("BASE", nil, "EnduranceChargesMax") - if env.configInput.usePowerCharges and env.mode_combat then - output.PowerCharges = output.PowerChargesMax - else - output.PowerCharges = 0 - end - if env.configInput.useFrenzyCharges and env.mode_combat then - output.FrenzyCharges = output.FrenzyChargesMax - else - output.FrenzyCharges = 0 - end - if env.configInput.useEnduranceCharges and env.mode_combat then - output.EnduranceCharges = output.EnduranceChargesMax - else - output.EnduranceCharges = 0 - end - modDB.multipliers["PowerCharge"] = output.PowerCharges - modDB.multipliers["FrenzyCharge"] = output.FrenzyCharges - modDB.multipliers["EnduranceCharge"] = output.EnduranceCharges - if output.PowerCharges == 0 then - condList["HaveNoPowerCharges"] = true - end - if output.PowerCharges == output.PowerChargesMax then - condList["AtMaxPowerCharges"] = true - end - if output.FrenzyCharges == 0 then - condList["HaveNoFrenzyCharges"] = true - end - if output.FrenzyCharges == output.FrenzyChargesMax then - condList["AtMaxFrenzyCharges"] = true - end - if output.EnduranceCharges == 0 then - condList["HaveNoEnduranceCharges"] = true - end - if output.EnduranceCharges == output.EnduranceChargesMax then - condList["AtMaxEnduranceCharges"] = true - end - - -- Process misc modifiers - for _, value in ipairs(modDB:Sum("LIST", nil, "Misc")) do - if value.type == "Condition" then - condList[value.var] = true - elseif value.type == "EnemyCondition" then - enemyDB.conditions[value.var] = true - elseif value.type == "Multiplier" then - modDB.multipliers[value.var] = (modDB.multipliers[value.var] or 0) + value.value - end - end - -- Process enemy modifiers last in case they depend on conditions that were set by misc modifiers - for _, value in ipairs(modDB:Sum("LIST", nil, "Misc")) do - if value.type == "EnemyModifier" then - enemyDB:AddMod(value.mod) - end - end - - -- Process conditions that can depend on other conditions - if condList["EnemyIgnited"] then - condList["EnemyBurning"] = true - end - - -- Add misc buffs - if env.mode_combat then - if condList["Onslaught"] then - local effect = m_floor(20 * (1 + modDB:Sum("INC", nil, "OnslaughtEffect", "BuffEffect") / 100)) - modDB:NewMod("Speed", "INC", effect, "Onslaught") - modDB:NewMod("MovementSpeed", "INC", effect, "Onslaught") - end - if condList["UnholyMight"] then - local effect = m_floor(30 * (1 + modDB:Sum("INC", nil, "BuffEffect") / 100)) - modDB:NewMod("PhysicalDamageGainAsChaos", "BASE", effect, "Unholy Might") - end - end - - -- Helper functions for stat breakdowns - local simpleBreakdown, modBreakdown, slotBreakdown, effMultBreakdown, dotBreakdown - if breakdown then - simpleBreakdown = function(extraBase, cfg, total, ...) - extraBase = extraBase or 0 - local base = modDB:Sum("BASE", cfg, (...)) - if (base + extraBase) ~= 0 then - local inc = modDB:Sum("INC", cfg, ...) - local more = modDB:Sum("MORE", cfg, ...) - if inc ~= 0 or more ~= 1 or (base ~= 0 and extraBase ~= 0) then - local out = { } - if base ~= 0 and extraBase ~= 0 then - out[1] = s_format("(%g + %g) ^8(base)", extraBase, base) - else - out[1] = s_format("%g ^8(base)", base + extraBase) - end - if inc ~= 0 then - t_insert(out, s_format("x %.2f", 1 + inc/100).." ^8(increased/reduced)") - end - if more ~= 1 then - t_insert(out, s_format("x %.2f", more).." ^8(more/less)") - end - t_insert(out, s_format("= %g", total)) - return out - end - end - end - modBreakdown = function(cfg, ...) - local inc = modDB:Sum("INC", cfg, ...) - local more = modDB:Sum("MORE", cfg, ...) - if inc ~= 0 and more ~= 1 then - return { - s_format("%.2f", 1 + inc/100).." ^8(increased/reduced)", - s_format("x %.2f", more).." ^8(more/less)", - s_format("= %.2f", (1 + inc/100) * more), - } - end - end - slotBreakdown = function(source, sourceName, cfg, base, total, ...) - local inc = modDB:Sum("INC", cfg, ...) - local more = modDB:Sum("MORE", cfg, ...) - t_insert(breakdown[...].slots, { - base = base, - inc = (inc ~= 0) and s_format(" x %.2f", 1 + inc/100), - more = (more ~= 1) and s_format(" x %.2f", more), - total = s_format("%.2f", total or (base * (1 + inc / 100) * more)), - source = source, - sourceName = sourceName, - item = env.itemList[source], - }) - end - effMultBreakdown = function(damageType, resist, pen, taken, mult) - local out = { } - local resistForm = (damageType == "Physical") and "physical damage reduction" or "resistance" - if resist ~= 0 then - t_insert(out, s_format("Enemy %s: %d%%", resistForm, resist)) - end - if pen ~= 0 then - t_insert(out, "Effective resistance:") - t_insert(out, s_format("%d%% ^8(resistance)", resist)) - t_insert(out, s_format("- %d%% ^8(penetration)", pen)) - t_insert(out, s_format("= %d%%", resist - pen)) - end - if (resist - pen) ~= 0 and taken ~= 0 then - t_insert(out, "Effective DPS modifier:") - t_insert(out, s_format("%.2f ^8(%s)", 1 - (resist - pen) / 100, resistForm)) - t_insert(out, s_format("x %.2f ^8(increased/reduced damage taken)", 1 + taken / 100)) - t_insert(out, s_format("= %.3f", mult)) - end - return out - end - dotBreakdown = function(out, baseVal, inc, more, rate, effMult, total) - t_insert(out, s_format("%.1f ^8(base damage per second)", baseVal)) - if inc ~= 0 then - t_insert(out, s_format("x %.2f ^8(increased/reduced)", 1 + inc/100)) - end - if more ~= 1 then - t_insert(out, s_format("x %.2f ^8(more/less)", more)) - end - if rate and rate ~= 1 then - t_insert(out, s_format("x %.2f ^8(rate modifier)", rate)) - end - if effMult ~= 1 then - t_insert(out, s_format("x %.3f ^8(effective DPS modifier)", effMult)) - end - t_insert(out, s_format("= %.1f ^8per second", total)) - end - end - - -- Calculate attributes - for _, stat in pairs({"Str","Dex","Int"}) do - output[stat] = round(calcVal(modDB, stat)) - if breakdown then - breakdown[stat] = simpleBreakdown(nil, nil, output[stat], stat) - end - end - - -- Add attribute bonuses - modDB:NewMod("Life", "BASE", m_floor(output.Str / 2), "Strength") - local strDmgBonus = round((output.Str + modDB:Sum("BASE", nil, "DexIntToMeleeBonus")) / 5) - modDB:NewMod("PhysicalDamage", "INC", strDmgBonus, "Strength", ModFlag.Melee) - modDB:NewMod("Accuracy", "BASE", output.Dex * 2, "Dexterity") - if not modDB:Sum("FLAG", nil, "IronReflexes") then - modDB:NewMod("Evasion", "INC", round(output.Dex / 5), "Dexterity") - end - modDB:NewMod("Mana", "BASE", round(output.Int / 2), "Intelligence") - modDB:NewMod("EnergyShield", "INC", round(output.Int / 5), "Intelligence") - - -- ---------------------- -- - -- Defensive Calculations -- - -- ---------------------- -- - - -- Life/mana pools - if modDB:Sum("FLAG", nil, "ChaosInoculation") then - output.Life = 1 - condList["FullLife"] = true - else - local base = modDB:Sum("BASE", cfg, "Life") - local inc = modDB:Sum("INC", cfg, "Life") - local more = modDB:Sum("MORE", cfg, "Life") - local conv = modDB:Sum("BASE", nil, "LifeConvertToEnergyShield") - output.Life = round(base * (1 + inc/100) * more * (1 - conv/100)) - if breakdown then - if inc ~= 0 or more ~= 1 or conv ~= 0 then - breakdown.Life = { } - breakdown.Life[1] = s_format("%g ^8(base)", base) - if inc ~= 0 then - t_insert(breakdown.Life, s_format("x %.2f ^8(increased/reduced)", 1 + inc/100)) - end - if more ~= 1 then - t_insert(breakdown.Life, s_format("x %.2f ^8(more/less)", more)) - end - if conv ~= 0 then - t_insert(breakdown.Life, s_format("x %.2f ^8(converted to Energy Shield)", 1 - conv/100)) - end - t_insert(breakdown.Life, s_format("= %g", output.Life)) - end - end - end - output.Mana = round(calcVal(modDB, "Mana")) - 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 - breakdown.Mana = simpleBreakdown(nil, nil, output.Mana, "Mana") - breakdown.ManaRegen = simpleBreakdown(nil, nil, output.ManaRegen, "ManaRegen", "ManaRecovery") - end - - -- Life/mana reservation - for _, pool in pairs({"Life", "Mana"}) do - local max = output[pool] - local reserved = env["reserved_"..pool.."Base"] + m_ceil(max * env["reserved_"..pool.."Percent"] / 100) - output[pool.."Reserved"] = reserved - output[pool.."ReservedPercent"] = reserved / max * 100 - output[pool.."Unreserved"] = max - reserved - output[pool.."UnreservedPercent"] = (max - reserved) / max * 100 - if (max - reserved) / max <= 0.35 then - condList["Low"..pool] = true - end - if reserved == 0 then - condList["No"..pool.."Reserved"] = true - end - end - - -- Resistances - for _, elem in ipairs(resistTypeList) do - local max, total - if elem == "Chaos" and modDB:Sum("FLAG", nil, "ChaosInoculation") then - max = 100 - total = 100 - else - max = modDB:Sum("BASE", nil, elem.."ResistMax") - total = modDB:Sum("BASE", nil, elem.."Resist", isElemental[elem] and "ElementalResist") - end - output[elem.."Resist"] = m_min(total, max) - output[elem.."ResistTotal"] = total - output[elem.."ResistOverCap"] = m_max(0, total - max) - if breakdown then - breakdown[elem.."Resist"] = { - "Max: "..max.."%", - "Total: "..total.."%", - "In hideout: "..(total + 60).."%", - } - end - end - condList.UncappedLightningResistIsLowest = (output.LightningResistTotal <= output.ColdResistTotal and output.LightningResistTotal <= output.FireResistTotal) - condList.UncappedColdResistIsLowest = (output.ColdResistTotal <= output.LightningResistTotal and output.ColdResistTotal <= output.FireResistTotal) - condList.UncappedFireResistIsLowest = (output.FireResistTotal <= output.LightningResistTotal and output.FireResistTotal <= output.ColdResistTotal) - condList.UncappedLightningResistIsHighest = (output.LightningResistTotal >= output.ColdResistTotal and output.LightningResistTotal >= output.FireResistTotal) - condList.UncappedColdResistIsHighest = (output.ColdResistTotal >= output.LightningResistTotal and output.ColdResistTotal >= output.FireResistTotal) - condList.UncappedFireResistIsHighest = (output.FireResistTotal >= output.LightningResistTotal and output.FireResistTotal >= output.ColdResistTotal) - - -- Primary defences: Energy shield, evasion and armour - do - local ironReflexes = modDB:Sum("FLAG", nil, "IronReflexes") - local energyShield = 0 - local armour = 0 - local evasion = 0 - if breakdown then - breakdown.EnergyShield = { slots = { } } - breakdown.Armour = { slots = { } } - breakdown.Evasion = { slots = { } } - end - local energyShieldBase = modDB:Sum("BASE", nil, "EnergyShield") - if energyShieldBase > 0 then - energyShield = energyShield + energyShieldBase * calcMod(modDB, nil, "EnergyShield", "Defences") - if breakdown then - slotBreakdown("Global", nil, nil, energyShieldBase, nil, "EnergyShield", "Defences") - end - end - local armourBase = modDB:Sum("BASE", nil, "Armour", "ArmourAndEvasion") - if armourBase > 0 then - armour = armour + armourBase * calcMod(modDB, nil, "Armour", "ArmourAndEvasion", "Defences") - if breakdown then - slotBreakdown("Global", nil, nil, armourBase, nil, "Armour", "ArmourAndEvasion", "Defences") - end - end - local evasionBase = modDB:Sum("BASE", nil, "Evasion", "ArmourAndEvasion") - if evasionBase > 0 then - if ironReflexes then - armour = armour + evasionBase * calcMod(modDB, nil, "Armour", "Evasion", "ArmourAndEvasion", "Defences") - if breakdown then - slotBreakdown("Conversion", "Evasion to Armour", nil, evasionBase, nil, "Armour", "Evasion", "ArmourAndEvasion", "Defences") - end - else - evasion = evasion + evasionBase * calcMod(modDB, nil, "Evasion", "ArmourAndEvasion", "Defences") - if breakdown then - slotBreakdown("Global", nil, nil, evasionBase, nil, "Evasion", "ArmourAndEvasion", "Defences") - end - end - end - local gearEnergyShield = 0 - local gearArmour = 0 - local gearEvasion = 0 - local slotCfg = wipeTable(tempTable1) - for _, slot in pairs({"Helmet","Body Armour","Gloves","Boots","Weapon 2"}) do - local armourData = env.itemList[slot] and env.itemList[slot].armourData - if armourData then - slotCfg.slotName = slot - energyShieldBase = armourData.EnergyShield or 0 - if energyShieldBase > 0 then - energyShield = energyShield + energyShieldBase * calcMod(modDB, slotCfg, "EnergyShield", "Defences") - gearEnergyShield = gearEnergyShield + energyShieldBase - if breakdown then - slotBreakdown(slot, nil, slotCfg, energyShieldBase, nil, "EnergyShield", "Defences") - end - end - armourBase = armourData.Armour or 0 - if armourBase > 0 then - if slot == "Body Armour" and modDB:Sum("FLAG", nil, "Unbreakable") then - armourBase = armourBase * 2 - end - armour = armour + armourBase * calcMod(modDB, slotCfg, "Armour", "ArmourAndEvasion", "Defences") - gearArmour = gearArmour + armourBase - if breakdown then - slotBreakdown(slot, nil, slotCfg, armourBase, nil, "Armour", "ArmourAndEvasion", "Defences") - end - end - evasionBase = armourData.Evasion or 0 - if evasionBase > 0 then - if ironReflexes then - armour = armour + evasionBase * calcMod(modDB, slotCfg, "Armour", "Evasion", "ArmourAndEvasion", "Defences") - gearArmour = gearArmour + evasionBase - if breakdown then - slotBreakdown(slot, nil, slotCfg, evasionBase, nil, "Armour", "Evasion", "ArmourAndEvasion", "Defences") - end - else - evasion = evasion + evasionBase * calcMod(modDB, slotCfg, "Evasion", "ArmourAndEvasion", "Defences") - gearEvasion = gearEvasion + evasionBase - if breakdown then - slotBreakdown(slot, nil, slotCfg, evasionBase, nil, "Evasion", "ArmourAndEvasion", "Defences") - end - end - end - end - end - local convManaToES = modDB:Sum("BASE", nil, "ManaGainAsEnergyShield") - if convManaToES > 0 then - energyShieldBase = modDB:Sum("BASE", nil, "Mana") * convManaToES / 100 - energyShield = energyShield + energyShieldBase * calcMod(modDB, nil, "Mana", "EnergyShield", "Defences") - if breakdown then - slotBreakdown("Conversion", "Mana to Energy Shield", nil, energyShieldBase, nil, "EnergyShield", "Defences", "Mana") - end - end - local convLifeToES = modDB:Sum("BASE", nil, "LifeConvertToEnergyShield", "LifeGainAsEnergyShield") - if convLifeToES > 0 then - energyShieldBase = modDB:Sum("BASE", nil, "Life") * convLifeToES / 100 - local total - if modDB:Sum("FLAG", nil, "ChaosInoculation") then - total = 1 - else - total = energyShieldBase * calcMod(modDB, nil, "Life", "EnergyShield", "Defences") - end - energyShield = energyShield + total - if breakdown then - slotBreakdown("Conversion", "Life to Energy Shield", nil, energyShieldBase, total, "EnergyShield", "Defences", "Life") - end - end - output.EnergyShield = round(energyShield) - output.Armour = round(armour) - output.Evasion = round(evasion) - output.LowestOfArmourAndEvasion = m_min(output.Armour, output.Evasion) - output["Gear:EnergyShield"] = gearEnergyShield - output["Gear:Armour"] = gearArmour - output["Gear:Evasion"] = gearEvasion - output.EnergyShieldRecharge = round(output.EnergyShield * 0.2 * calcMod(modDB, nil, "EnergyShieldRecharge", "EnergyShieldRecovery"), 1) - output.EnergyShieldRechargeDelay = 2 / (1 + modDB:Sum("INC", nil, "EnergyShieldRechargeFaster") / 100) - if breakdown then - breakdown.EnergyShieldRecharge = simpleBreakdown(output.EnergyShield * 0.2, nil, output.EnergyShieldRecharge, "EnergyShieldRecharge", "EnergyShieldRecovery") - if output.EnergyShieldRechargeDelay ~= 2 then - breakdown.EnergyShieldRechargeDelay = { - "2.00s ^8(base)", - s_format("/ %.2f ^8(faster start)", 1 + modDB:Sum("INC", nil, "EnergyShieldRechargeFaster") / 100), - s_format("= %.2fs", output.EnergyShieldRechargeDelay) - } - end - end - if modDB:Sum("FLAG", nil, "CannotEvade") then - output.EvadeChance = 0 - else - local enemyAccuracy = round(calcVal(enemyDB, "Accuracy")) - output.EvadeChance = 100 - calcHitChance(output.Evasion, enemyAccuracy) * calcMod(enemyDB, nil, "HitChance") - if breakdown then - breakdown.EvadeChance = { - s_format("Enemy level: %d ^8(%s the Configuration tab)", env.enemyLevel, env.configInput.enemyLevel and "overridden from" or "can be overridden in"), - s_format("Average enemy accuracy: %d", enemyAccuracy), - s_format("Approximate evade chance: %d%%", output.EvadeChance), - } - end - end - end - - -- Life and energy shield regen - do - if modDB:Sum("FLAG", nil, "NoLifeRegen") then - output.LifeRegen = 0 - elseif modDB:Sum("FLAG", nil, "ZealotsOath") then - output.LifeRegen = 0 - local lifeBase = modDB:Sum("BASE", nil, "LifeRegen") - if lifeBase > 0 then - modDB:NewMod("EnergyShieldRegen", "BASE", lifeBase, "Zealot's Oath") - end - local lifePercent = modDB:Sum("BASE", nil, "LifeRegenPercent") - if lifePercent > 0 then - modDB:NewMod("EnergyShieldRegenPercent", "BASE", lifePercent, "Zealot's Oath") - end - else - local lifeBase = modDB:Sum("BASE", nil, "LifeRegen") - local lifePercent = modDB:Sum("BASE", nil, "LifeRegenPercent") - if lifePercent > 0 then - lifeBase = lifeBase + output.Life * lifePercent / 100 - end - if lifeBase > 0 then - output.LifeRegen = lifeBase * calcMod(modDB, nil, "LifeRecovery") - output.LifeRegenPercent = round(output.LifeRegen / output.Life * 100, 1) - else - output.LifeRegen = 0 - end - end - local esBase = modDB:Sum("BASE", nil, "EnergyShieldRegen") - local esPercent = modDB:Sum("BASE", nil, "EnergyShieldRegenPercent") - if esPercent > 0 then - esBase = esBase + output.EnergyShield * esPercent / 100 - end - if esBase > 0 then - output.EnergyShieldRegen = esBase * calcMod(modDB, nil, "EnergyShieldRecovery") - output.EnergyShieldRegenPercent = round(output.EnergyShieldRegen / output.EnergyShield * 100, 1) - else - output.EnergyShieldRegen = 0 - end - end - - -- Leech caps - if modDB:Sum("FLAG", nil, "GhostReaver") then - output.MaxEnergyShieldLeechRate = output.EnergyShield * modDB:Sum("BASE", nil, "MaxLifeLeechRate") / 100 - if breakdown then - breakdown.MaxEnergyShieldLeechRate = { - s_format("%d ^8(maximum energy shield)", output.EnergyShield), - s_format("x %d%% ^8(percenage of life to maximum leech rate)", modDB:Sum("BASE", nil, "MaxLifeLeechRate")), - s_format("= %.1f", output.MaxEnergyShieldLeechRate) - } - end - else - output.MaxLifeLeechRate = output.Life * modDB:Sum("BASE", nil, "MaxLifeLeechRate") / 100 - if breakdown then - breakdown.MaxLifeLeechRate = { - s_format("%d ^8(maximum life)", output.Life), - s_format("x %d%% ^8(percenage of life to maximum leech rate)", modDB:Sum("BASE", nil, "MaxLifeLeechRate")), - s_format("= %.1f", output.MaxLifeLeechRate) - } - end - end - output.MaxManaLeechRate = output.Mana * modDB:Sum("BASE", nil, "MaxManaLeechRate") / 100 - if breakdown then - breakdown.MaxManaLeechRate = { - s_format("%d ^8(maximum mana)", output.Mana), - s_format("x %d%% ^8(percenage of mana to maximum leech rate)", modDB:Sum("BASE", nil, "MaxManaLeechRate")), - s_format("= %.1f", output.MaxManaLeechRate) - } - end - - -- Other defences: block, dodge, stun recovery/avoidance - do - output.MovementSpeedMod = calcMod(modDB, nil, "MovementSpeed") - if modDB:Sum("FLAG", nil, "MovementSpeedCannotBeBelowBase") then - output.MovementSpeedMod = m_max(output.MovementSpeedMod, 1) - end - output.BlockChanceMax = modDB:Sum("BASE", nil, "BlockChanceMax") - local shieldData = env.itemList["Weapon 2"] and env.itemList["Weapon 2"].armourData - output.BlockChance = m_min(((shieldData and shieldData.BlockChance or 0) + modDB:Sum("BASE", nil, "BlockChance")) * calcMod(modDB, nil, "BlockChance"), output.BlockChanceMax) - output.SpellBlockChance = m_min(modDB:Sum("BASE", nil, "SpellBlockChance") * calcMod(modDB, nil, "SpellBlockChance") + output.BlockChance * modDB:Sum("BASE", nil, "BlockChanceConv") / 100, output.BlockChanceMax) - if breakdown then - breakdown.BlockChance = simpleBreakdown(shieldData and shieldData.BlockChance, nil, output.BlockChance, "BlockChance") - breakdown.SpellBlockChance = simpleBreakdown(output.BlockChance * modDB:Sum("BASE", nil, "BlockChanceConv") / 100, nil, output.SpellBlockChance, "SpellBlockChance") - end - if modDB:Sum("FLAG", nil, "CannotBlockAttacks") then - output.BlockChance = 0 - end - output.AttackDodgeChance = m_min(modDB:Sum("BASE", nil, "AttackDodgeChance"), 75) - output.SpellDodgeChance = m_min(modDB:Sum("BASE", nil, "SpellDodgeChance"), 75) - local stunChance = 100 - modDB:Sum("BASE", nil, "AvoidStun") - if output.EnergyShield > output.Life * 2 then - stunChance = stunChance * 0.5 - end - output.StunAvoidChance = 100 - stunChance - if output.StunAvoidChance >= 100 then - output.StunDuration = 0 - output.BlockDuration = 0 - else - output.StunDuration = 0.35 / (1 + modDB:Sum("INC", nil, "StunRecovery") / 100) - output.BlockDuration = 0.35 / (1 + modDB:Sum("INC", nil, "StunRecovery", "BlockRecovery") / 100) - if breakdown then - breakdown.StunDuration = { - "0.35s ^8(base)", - s_format("/ %.2f ^8(increased/reduced recovery)", 1 + modDB:Sum("INC", nil, "StunRecovery") / 100), - s_format("= %.2fs", output.StunDuration) - } - breakdown.BlockDuration = { - "0.35s ^8(base)", - s_format("/ %.2f ^8(increased/reduced recovery)", 1 + modDB:Sum("INC", nil, "StunRecovery", "BlockRecovery") / 100), - s_format("= %.2fs", output.BlockDuration) - } - end - end - end - - -- ---------------------- -- - -- Offensive Calculations -- - -- ---------------------- -- - - if env.mainSkill.skillFlags.disable then - -- Skill is disabled - output.CombinedDPS = 0 - return - end - - -- Merge main skill mods - modDB:AddList(env.mainSkill.skillModList) - - local skillData = env.mainSkill.skillData - local skillFlags = env.mainSkill.skillFlags - local skillCfg = env.mainSkill.skillCfg - if skillFlags.attack then - env.mode_skillType = "ATTACK" - else - env.mode_skillType = "SPELL" - end - if skillData.showAverage then - skillFlags.showAverage = true - else - skillFlags.notAverage = true - end - if env.mode_buffs then - skillFlags.buffs = true - end - if env.mode_combat then - skillFlags.combat = true - end - if env.mode_effective then - skillFlags.effective = true - end - - -- Update skill data - for _, value in ipairs(modDB:Sum("LIST", skillCfg, "Misc")) do - if value.type == "SkillData" then - if value.merge == "MAX" then - skillData[value.key] = m_max(value.value, skillData[value.key] or 0) - else - skillData[value.key] = value.value - end - end - end - - env.modDB.conditions["SkillIsTriggered"] = skillData.triggered - - -- Add addition stat bonuses - if modDB:Sum("FLAG", nil, "IronGrip") then - modDB:NewMod("PhysicalDamage", "INC", strDmgBonus, "Strength", bor(ModFlag.Attack, ModFlag.Projectile)) - end - if modDB:Sum("FLAG", nil, "IronWill") then - modDB:NewMod("Damage", "INC", strDmgBonus, "Strength", ModFlag.Spell) - end - - if modDB:Sum("FLAG", nil, "MinionDamageAppliesToPlayer") then - -- Minion Damage conversion from The Scourge - for _, mod in ipairs(modDB.mods.Damage or { }) do - if mod.type == "INC" and mod.keywordFlags == KeywordFlag.Minion then - modDB:NewMod("Damage", "INC", mod.value, mod.source, 0, 0, unpack(mod.tagList)) - end - end - end - if modDB:Sum("FLAG", nil, "SpellDamageAppliesToAttacks") then - -- Spell Damage conversion from Crown of Eyes - for i, mod in ipairs(modDB.mods.Damage or { }) do - if mod.type == "INC" and band(mod.flags, ModFlag.Spell) ~= 0 then - modDB:NewMod("Damage", "INC", mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Spell)), ModFlag.Attack), mod.keywordFlags, unpack(mod.tagList)) - end - end - end - if modDB:Sum("FLAG", nil, "ClawDamageAppliesToUnarmed") then - -- Claw Damage conversion from Rigwald's Curse - for i, mod in ipairs(modDB.mods.PhysicalDamage or { }) do - if band(mod.flags, ModFlag.Claw) ~= 0 then - modDB:NewMod("PhysicalDamage", mod.type, mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Claw)), ModFlag.Unarmed), mod.keywordFlags, unpack(mod.tagList)) - end - end - end - if modDB:Sum("FLAG", nil, "ClawAttackSpeedAppliesToUnarmed") then - -- Claw Attack Speed conversion from Rigwald's Curse - for i, mod in ipairs(modDB.mods.Speed or { }) do - if band(mod.flags, ModFlag.Claw) ~= 0 and band(mod.flags, ModFlag.Attack) ~= 0 then - modDB:NewMod("Speed", mod.type, mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Claw)), ModFlag.Unarmed), mod.keywordFlags, unpack(mod.tagList)) - end - end - end - if modDB:Sum("FLAG", nil, "ClawCritChanceAppliesToUnarmed") then - -- Claw Crit Chance conversion from Rigwald's Curse - for i, mod in ipairs(modDB.mods.CritChance or { }) do - if band(mod.flags, ModFlag.Claw) ~= 0 then - modDB:NewMod("CritChance", mod.type, mod.value, mod.source, bor(band(mod.flags, bnot(ModFlag.Claw)), ModFlag.Unarmed), mod.keywordFlags, unpack(mod.tagList)) - end - end - end - - local isAttack = (env.mode_skillType == "ATTACK") - - -- Calculate skill type stats - if skillFlags.projectile then - if modDB:Sum("FLAG", nil, "PointBlank") then - modDB:NewMod("Damage", "MORE", 50, "Point Blank", bor(ModFlag.Attack, ModFlag.Projectile), { type = "DistanceRamp", ramp = {{10,1},{35,0},{150,-1}} }) - end - output.ProjectileCount = modDB:Sum("BASE", skillCfg, "ProjectileCount") - output.PierceChance = m_min(100, modDB:Sum("BASE", skillCfg, "PierceChance")) - output.ProjectileSpeedMod = calcMod(modDB, skillCfg, "ProjectileSpeed") - if breakdown then - breakdown.ProjectileSpeedMod = modBreakdown(skillCfg, "ProjectileSpeed") - end - end - if skillFlags.area then - output.AreaOfEffectMod = calcMod(modDB, skillCfg, "AreaOfEffect") - if breakdown then - breakdown.AreaOfEffectMod = modBreakdown(skillCfg, "AreaOfEffect") - end - end - if skillFlags.trap then - output.ActiveTrapLimit = modDB:Sum("BASE", skillCfg, "ActiveTrapLimit") - output.TrapCooldown = (skillData.trapCooldown or 4) / calcMod(modDB, skillCfg, "CooldownRecovery") - if breakdown then - breakdown.TrapCooldown = { - s_format("%.2fs ^8(base)", skillData.trapCooldown or 4), - s_format("/ %.2f ^8(increased/reduced cooldown recovery)", 1 + modDB:Sum("INC", skillCfg, "CooldownRecovery") / 100), - s_format("= %.2fs", output.TrapCooldown) - } - end - end - if skillFlags.mine then - output.ActiveMineLimit = modDB:Sum("BASE", skillCfg, "ActiveMineLimit") - end - if skillFlags.totem then - output.ActiveTotemLimit = modDB:Sum("BASE", skillCfg, "ActiveTotemLimit") - output.TotemLifeMod = calcMod(modDB, skillCfg, "TotemLife") - output.TotemLife = round(data.monsterLifeTable[skillData.totemLevel] * data.totemLifeMult[env.mainSkill.skillTotemId] * output.TotemLifeMod) - if breakdown then - breakdown.TotemLifeMod = modBreakdown(skillCfg, "TotemLife") - breakdown.TotemLife = { - "Totem level: "..skillData.totemLevel, - data.monsterLifeTable[skillData.totemLevel].." ^8(base life for a level "..skillData.totemLevel.." monster)", - "x "..data.totemLifeMult[env.mainSkill.skillTotemId].." ^8(life multiplier for this totem type)", - "x "..output.TotemLifeMod.." ^8(totem life modifier)", - "= "..output.TotemLife, - } - end - end - - -- Skill duration - local debuffDurationMult - if env.mode_effective then - debuffDurationMult = 1 / calcMod(enemyDB, skillCfg, "BuffExpireFaster") - else - debuffDurationMult = 1 - end - do - output.DurationMod = calcMod(modDB, skillCfg, "Duration") - if breakdown then - breakdown.DurationMod = modBreakdown(skillCfg, "Duration") - end - local durationBase = skillData.duration or 0 - if durationBase > 0 then - output.Duration = durationBase * output.DurationMod - if skillData.debuff then - output.Duration = output.Duration * debuffDurationMult - end - if breakdown and output.Duration ~= durationBase then - breakdown.Duration = { - s_format("%.2fs ^8(base)", durationBase), - } - if output.DurationMod ~= 1 then - t_insert(breakdown.Duration, s_format("x %.2f ^8(duration modifier)", output.DurationMod)) - end - if skillData.debuff and debuffDurationMult ~= 1 then - t_insert(breakdown.Duration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) - end - t_insert(breakdown.Duration, s_format("= %.2fs", output.Duration)) - end - end - end - - -- Run skill setup function - do - local setupFunc = env.mainSkill.activeGem.data.setupFunc - if setupFunc then - setupFunc(env, output) - end - end - - -- Cache global damage disabling flags - local canDeal = { } - for _, damageType in pairs(dmgTypeList) do - canDeal[damageType] = not modDB:Sum("FLAG", skillCfg, "DealNo"..damageType) - end - - -- Calculate damage conversion percentages - env.conversionTable = wipeTable(env.conversionTable) - for damageTypeIndex = 1, 4 do - local damageType = dmgTypeList[damageTypeIndex] - local globalConv = wipeTable(tempTable1) - local skillConv = wipeTable(tempTable2) - local add = wipeTable(tempTable3) - local globalTotal, skillTotal = 0, 0 - for otherTypeIndex = damageTypeIndex + 1, 5 do - -- For all possible destination types, check for global and skill conversions - otherType = dmgTypeList[otherTypeIndex] - globalConv[otherType] = modDB:Sum("BASE", skillCfg, damageType.."DamageConvertTo"..otherType, isElemental[damageType] and "ElementalDamageConvertTo"..otherType or nil) - globalTotal = globalTotal + globalConv[otherType] - skillConv[otherType] = modDB:Sum("BASE", skillCfg, "Skill"..damageType.."DamageConvertTo"..otherType) - skillTotal = skillTotal + skillConv[otherType] - add[otherType] = modDB:Sum("BASE", skillCfg, damageType.."DamageGainAs"..otherType, isElemental[damageType] and "ElementalDamageGainAs"..otherType or nil) - end - if skillTotal > 100 then - -- Skill conversion exceeds 100%, scale it down and remove non-skill conversions - local factor = 100 / skillTotal - for type, val in pairs(skillConv) do - -- The game currently doesn't scale this down even though it is supposed to - --skillConv[type] = val * factor - end - for type, val in pairs(globalConv) do - globalConv[type] = 0 - end - elseif globalTotal + skillTotal > 100 then - -- Conversion exceeds 100%, scale down non-skill conversions - local factor = (100 - skillTotal) / globalTotal - for type, val in pairs(globalConv) do - globalConv[type] = val * factor - end - globalTotal = globalTotal * factor - end - local dmgTable = { } - for type, val in pairs(globalConv) do - dmgTable[type] = (globalConv[type] + skillConv[type] + add[type]) / 100 - end - dmgTable.mult = 1 - m_min((globalTotal + skillTotal) / 100, 1) - env.conversionTable[damageType] = dmgTable - end - env.conversionTable["Chaos"] = { mult = 1 } - - -- Calculate mana cost (may be slightly off due to rounding differences) - do - local more = m_floor(modDB:Sum("MORE", skillCfg, "ManaCost") * 100 + 0.0001) / 100 - local inc = modDB:Sum("INC", skillCfg, "ManaCost") - local base = modDB:Sum("BASE", skillCfg, "ManaCost") - output.ManaCost = m_floor(m_max(0, (skillData.manaCost or 0) * more * (1 + inc / 100) + base)) - if env.mainSkill.skillTypes[SkillType.ManaCostPercent] and skillFlags.totem then - output.ManaCost = m_floor(output.Mana * output.ManaCost / 100) - end - if breakdown and output.ManaCost ~= (skillData.manaCost or 0) then - breakdown.ManaCost = { - s_format("%d ^8(base mana cost)", skillData.manaCost or 0) - } - if more ~= 1 then - t_insert(breakdown.ManaCost, s_format("x %.2f ^8(mana cost multiplier)", more)) - end - if inc ~= 0 then - t_insert(breakdown.ManaCost, s_format("x %.2f ^8(increased/reduced mana cost)", 1 + inc/100)) - end - if base ~= 0 then - t_insert(breakdown.ManaCost, s_format("- %d ^8(- mana cost)", -base)) - end - t_insert(breakdown.ManaCost, s_format("= %d", output.ManaCost)) - end - end - - -- Configure damage passes - local passList = { } - if isAttack then - output.MainHand = { } - output.OffHand = { } - if skillFlags.weapon1Attack then - if breakdown then - breakdown.MainHand = { } - end - env.mainSkill.weapon1Cfg.skillStats = output.MainHand - t_insert(passList, { - label = "Main Hand", - source = env.weaponData1, - cfg = env.mainSkill.weapon1Cfg, - output = output.MainHand, - breakdown = breakdown and breakdown.MainHand, - }) - end - if skillFlags.weapon2Attack then - if breakdown then - breakdown.OffHand = { } - end - env.mainSkill.weapon2Cfg.skillStats = output.OffHand - t_insert(passList, { - label = "Off Hand", - source = env.weaponData2, - cfg = env.mainSkill.weapon2Cfg, - output = output.OffHand, - breakdown = breakdown and breakdown.OffHand, - }) - end - else - t_insert(passList, { - label = "Skill", - source = skillData, - cfg = skillCfg, - output = output, - breakdown = breakdown, - }) - end - - local function combineStat(stat, mode, ...) - -- Combine stats from Main Hand and Off Hand according to the mode - if mode == "OR" or not skillFlags.bothWeaponAttack then - output[stat] = output.MainHand[stat] or output.OffHand[stat] - elseif mode == "ADD" then - output[stat] = (output.MainHand[stat] or 0) + (output.OffHand[stat] or 0) - elseif mode == "AVERAGE" then - output[stat] = ((output.MainHand[stat] or 0) + (output.OffHand[stat] or 0)) / 2 - elseif mode == "CHANCE" then - if output.MainHand[stat] and output.OffHand[stat] then - local mainChance = output.MainHand[...] * output.MainHand.HitChance - local offChance = output.OffHand[...] * output.OffHand.HitChance - local mainPortion = mainChance / (mainChance + offChance) - local offPortion = offChance / (mainChance + offChance) - output[stat] = output.MainHand[stat] * mainPortion + output.OffHand[stat] * offPortion - if breakdown then - if not breakdown[stat] then - breakdown[stat] = { } - end - t_insert(breakdown[stat], "Contribution from Main Hand:") - t_insert(breakdown[stat], s_format("%.1f", output.MainHand[stat])) - t_insert(breakdown[stat], s_format("x %.3f ^8(portion of instances created by main hand)", mainPortion)) - t_insert(breakdown[stat], s_format("= %.1f", output.MainHand[stat] * mainPortion)) - t_insert(breakdown[stat], "Contribution from Off Hand:") - t_insert(breakdown[stat], s_format("%.1f", output.OffHand[stat])) - t_insert(breakdown[stat], s_format("x %.3f ^8(portion of instances created by off hand)", offPortion)) - t_insert(breakdown[stat], s_format("= %.1f", output.OffHand[stat] * offPortion)) - t_insert(breakdown[stat], "Total:") - t_insert(breakdown[stat], s_format("%.1f + %.1f", output.MainHand[stat] * mainPortion, output.OffHand[stat] * offPortion)) - t_insert(breakdown[stat], s_format("= %.1f", output[stat])) - end - else - output[stat] = output.MainHand[stat] or output.OffHand[stat] - end - elseif mode == "DPS" then - output[stat] = (output.MainHand[stat] or 0) + (output.OffHand[stat] or 0) - if not skillData.doubleHitsWhenDualWielding then - output[stat] = output[stat] / 2 - end - end - end - - for _, pass in ipairs(passList) do - local source, output, cfg, breakdown = pass.source, pass.output, pass.cfg, pass.breakdown - - -- Calculate hit chance - output.Accuracy = calcVal(modDB, "Accuracy", cfg) - if breakdown then - breakdown.Accuracy = simpleBreakdown(nil, cfg, output.Accuracy, "Accuracy") - end - if not isAttack or modDB:Sum("FLAG", cfg, "CannotBeEvaded") or skillData.cannotBeEvaded then - output.HitChance = 100 - else - local enemyEvasion = round(calcVal(enemyDB, "Evasion")) - output.HitChance = calcHitChance(enemyEvasion, output.Accuracy) - if breakdown then - breakdown.HitChance = { - "Enemy level: "..env.enemyLevel..(env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"), - "Average enemy evasion: "..enemyEvasion, - "Approximate hit chance: "..output.HitChance.."%", - } - end - end - - -- Calculate attack/cast speed - if skillData.timeOverride then - output.Time = skillData.timeOverride - output.Speed = 1 / output.Time - else - local baseSpeed - if isAttack then - if skillData.castTimeOverridesAttackTime then - -- Skill is overriding weapon attack speed - baseSpeed = 1 / skillData.castTime * (1 + (source.AttackSpeedInc or 0) / 100) - else - baseSpeed = source.attackRate or 1 - end - else - baseSpeed = 1 / (skillData.castTime or 1) - end - output.Speed = baseSpeed * round(calcMod(modDB, cfg, "Speed"), 2) - output.Time = 1 / output.Speed - if breakdown then - breakdown.Speed = simpleBreakdown(baseSpeed, cfg, output.Speed, "Speed") - end - end - if skillData.hitTimeOverride then - output.HitTime = skillData.hitTimeOverride - output.HitSpeed = 1 / output.HitTime - end - end - - if isAttack then - -- Combine hit chance and attack speed - combineStat("HitChance", "AVERAGE") - combineStat("Speed", "AVERAGE") - output.Time = 1 / output.Speed - if skillFlags.bothWeaponAttack then - if breakdown then - breakdown.Speed = { - "Both weapons:", - s_format("(%.2f + %.2f) / 2", output.MainHand.Speed, output.OffHand.Speed), - s_format("= %.2f", output.Speed), - } - end - end - end - - for _, pass in ipairs(passList) do - local globalOutput, globalBreakdown = output, breakdown - local source, output, cfg, breakdown = pass.source, pass.output, pass.cfg, pass.breakdown - - -- Calculate crit chance, crit multiplier, and their combined effect - if modDB:Sum("FLAG", nil, "NeverCrit") then - output.PreEffectiveCritChance = 0 - output.CritChance = 0 - output.CritMultiplier = 0 - output.CritEffect = 1 - else - local baseCrit = source.critChance or 0 - if baseCrit == 100 then - output.PreEffectiveCritChance = 100 - output.CritChance = 100 - else - local base = modDB:Sum("BASE", cfg, "CritChance") - local inc = modDB:Sum("INC", cfg, "CritChance") - local more = modDB:Sum("MORE", cfg, "CritChance") - output.CritChance = (baseCrit + base) * (1 + inc / 100) * more - if env.mode_effective then - output.CritChance = output.CritChance + enemyDB:Sum("BASE", nil, "SelfExtraCritChance") - end - local preCapCritChance = output.CritChance - output.CritChance = m_min(output.CritChance, 95) - if (baseCrit + base) > 0 then - output.CritChance = m_max(output.CritChance, 5) - end - output.PreEffectiveCritChance = output.CritChance - local preLuckyCritChance = output.CritChance - if env.mode_effective and modDB:Sum("FLAG", cfg, "CritChanceLucky") then - output.CritChance = (1 - (1 - output.CritChance / 100) ^ 2) * 100 - end - local preHitCheckCritChance = output.CritChance - if env.mode_effective then - output.CritChance = output.CritChance * output.HitChance / 100 - end - if breakdown and output.CritChance ~= baseCrit then - local enemyExtra = enemyDB:Sum("BASE", nil, "SelfExtraCritChance") - breakdown.CritChance = { } - if base ~= 0 then - t_insert(breakdown.CritChance, s_format("(%g + %g) ^8(base)", baseCrit, base)) - else - t_insert(breakdown.CritChance, s_format("%g ^8(base)", baseCrit + base)) - end - if inc ~= 0 then - t_insert(breakdown.CritChance, s_format("x %.2f", 1 + inc/100).." ^8(increased/reduced)") - end - if more ~= 1 then - t_insert(breakdown.CritChance, s_format("x %.2f", more).." ^8(more/less)") - end - if env.mode_effective and enemyExtra ~= 0 then - t_insert(breakdown.CritChance, s_format("+ %g ^8(extra chance for enemy to be crit)", enemyExtra)) - end - t_insert(breakdown.CritChance, s_format("= %g", preLuckyCritChance)) - if preCapCritChance > 95 then - local overCap = preCapCritChance - 95 - t_insert(breakdown.CritChance, s_format("Crit is overcapped by %.2f%% (%d%% increased Critical Strike Chance)", overCap, overCap / more / (baseCrit + base) * 100)) - end - if env.mode_effective and modDB:Sum("FLAG", cfg, "CritChanceLucky") then - t_insert(breakdown.CritChance, "Crit Chance is Lucky:") - t_insert(breakdown.CritChance, s_format("1 - (1 - %.4f) x (1 - %.4f)", preLuckyCritChance / 100, preLuckyCritChance / 100)) - t_insert(breakdown.CritChance, s_format("= %.2f", preHitCheckCritChance)) - end - if env.mode_effective and output.HitChance < 100 then - t_insert(breakdown.CritChance, "Crit confirmation roll:") - t_insert(breakdown.CritChance, s_format("%.2f", preHitCheckCritChance)) - t_insert(breakdown.CritChance, s_format("x %.2f ^8(chance to hit)", output.HitChance / 100)) - t_insert(breakdown.CritChance, s_format("= %.2f", output.CritChance)) - end - end - end - if modDB:Sum("FLAG", cfg, "NoCritMultiplier") then - output.CritMultiplier = 1 - else - local extraDamage = 0.5 + modDB:Sum("BASE", cfg, "CritMultiplier") / 100 - if env.mode_effective then - extraDamage = round(extraDamage * (1 + enemyDB:Sum("INC", nil, "SelfCritMultiplier") / 100), 2) - end - output.CritMultiplier = 1 + m_max(0, extraDamage) - if breakdown and output.CritMultiplier ~= 1.5 then - breakdown.CritMultiplier = { - "50% ^8(base)", - } - local base = modDB:Sum("BASE", cfg, "CritMultiplier") - if base ~= 0 then - t_insert(breakdown.CritMultiplier, s_format("+ %d%% ^8(additional extra damage)", base)) - end - local enemyInc = 1 + enemyDB:Sum("INC", nil, "SelfCritMultiplier") / 100 - if env.mode_effective and enemyInc ~= 1 then - t_insert(breakdown.CritMultiplier, s_format("x %.2f ^8(increased/reduced extra crit damage taken by enemy)", enemyInc)) - end - t_insert(breakdown.CritMultiplier, s_format("= %d%% ^8(extra crit damage)", extraDamage * 100)) - end - end - output.CritEffect = 1 - output.CritChance / 100 + output.CritChance / 100 * output.CritMultiplier - if breakdown and output.CritEffect ~= 1 then - breakdown.CritEffect = { - s_format("(1 - %.4f) ^8(portion of damage from non-crits)", output.CritChance/100), - s_format("+ (%.4f x %g) ^8(portion of damage from crits)", output.CritChance/100, output.CritMultiplier), - s_format("= %.3f", output.CritEffect), - } - end - end - - -- Calculate hit damage for each damage type - local totalHitMin, totalHitMax = 0, 0 - local totalCritMin, totalCritMax = 0, 0 - output.LifeLeech = 0 - output.LifeLeechInstant = 0 - output.ManaLeech = 0 - output.ManaLeechInstant = 0 - for pass = 1, 2 do - -- Pass 1 is critical strike damage, pass 2 is non-critical strike - condList["CriticalStrike"] = (pass == 1) - local lifeLeechTotal = 0 - local manaLeechTotal = 0 - for _, damageType in ipairs(dmgTypeList) do - local min, max - if skillFlags.hit and canDeal[damageType] then - if breakdown then - breakdown[damageType] = { - damageComponents = { } - } - end - min, max = calcHitDamage(env, source, cfg, breakdown and breakdown[damageType], damageType) - local convMult = env.conversionTable[damageType].mult - if breakdown then - t_insert(breakdown[damageType], "Hit damage:") - t_insert(breakdown[damageType], s_format("%d to %d ^8(total damage)", min, max)) - if convMult ~= 1 then - t_insert(breakdown[damageType], s_format("x %g ^8(%g%% converted to other damage types)", convMult, (1-convMult)*100)) - end - end - min = min * convMult - max = max * convMult - if pass == 1 then - -- Apply crit multiplier - min = min * output.CritMultiplier - max = max * output.CritMultiplier - end - if (min ~= 0 or max ~= 0) and env.mode_effective then - -- Apply enemy resistances and damage taken modifiers - local preMult - local resist = 0 - local pen = 0 - local taken = enemyDB:Sum("INC", nil, "DamageTaken", damageType.."DamageTaken") - if damageType == "Physical" then - resist = enemyDB:Sum("INC", nil, "PhysicalDamageReduction") - else - resist = enemyDB:Sum("BASE", nil, damageType.."Resist") - if isElemental[damageType] then - resist = resist + enemyDB:Sum("BASE", nil, "ElementalResist") - pen = modDB:Sum("BASE", cfg, damageType.."Penetration", "ElementalPenetration") - taken = taken + enemyDB:Sum("INC", nil, "ElementalDamageTaken") - end - resist = m_min(resist, 75) - end - if skillFlags.projectile then - taken = taken + enemyDB:Sum("INC", nil, "ProjectileDamageTaken") - end - local effMult = (1 + taken / 100) - if not isElemental[damageType] or not modDB:Sum("FLAG", cfg, "IgnoreElementalResistances") then - effMult = effMult * (1 - (resist - pen) / 100) - end - min = min * effMult - max = max * effMult - if env.mode == "CALCS" then - output[damageType.."EffMult"] = effMult - end - if breakdown and effMult ~= 1 then - t_insert(breakdown[damageType], s_format("x %.3f ^8(effective DPS modifier)", effMult)) - breakdown[damageType.."EffMult"] = effMultBreakdown(damageType, resist, pen, taken, effMult) - end - end - if breakdown then - t_insert(breakdown[damageType], s_format("= %d to %d", min, max)) - end - if skillFlags.mine or skillFlags.trap or skillFlags.totem then - if not modDB:Sum("FLAG", cfg, "CannotLeechLife") then - local lifeLeech = modDB:Sum("BASE", cfg, "DamageLifeLeechToPlayer") - if lifeLeech > 0 then - lifeLeechTotal = lifeLeechTotal + (min + max) / 2 * lifeLeech / 100 - end - end - else - if not modDB:Sum("FLAG", cfg, "CannotLeechLife") then - local lifeLeech = modDB:Sum("BASE", cfg, "DamageLifeLeech", damageType.."DamageLifeLeech", isElemental[damageType] and "ElementalDamageLifeLeech" or nil) + enemyDB:Sum("BASE", nil, "SelfDamageLifeLeech") / 100 - if lifeLeech > 0 then - lifeLeechTotal = lifeLeechTotal + (min + max) / 2 * lifeLeech / 100 - end - end - if not modDB:Sum("FLAG", cfg, "CannotLeechMana") then - local manaLeech = modDB:Sum("BASE", cfg, "DamageManaLeech", damageType.."DamageManaLeech", isElemental[damageType] and "ElementalDamageManaLeech" or nil) + enemyDB:Sum("BASE", nil, "SelfDamageManaLeech") / 100 - if manaLeech > 0 then - manaLeechTotal = manaLeechTotal + (min + max) / 2 * manaLeech / 100 - end - end - end - else - min, max = 0, 0 - if breakdown then - breakdown[damageType] = { - "You can't deal "..damageType.." damage" - } - end - end - if pass == 1 then - output[damageType.."CritAverage"] = (min + max) / 2 - totalCritMin = totalCritMin + min - totalCritMax = totalCritMax + max - else - if env.mode == "CALCS" then - output[damageType.."Min"] = min - output[damageType.."Max"] = max - end - output[damageType.."HitAverage"] = (min + max) / 2 - totalHitMin = totalHitMin + min - totalHitMax = totalHitMax + max - end - end - local portion = (pass == 1) and (output.CritChance / 100) or (1 - output.CritChance / 100) - if modDB:Sum("FLAG", cfg, "InstantLifeLeech") then - output.LifeLeechInstant = output.LifeLeechInstant + lifeLeechTotal * portion - else - output.LifeLeech = output.LifeLeech + lifeLeechTotal * portion - end - if modDB:Sum("FLAG", cfg, "InstantManaLeech") then - output.ManaLeechInstant = output.ManaLeechInstant + manaLeechTotal * portion - else - output.ManaLeech = output.ManaLeech + manaLeechTotal * portion - end - end - output.TotalMin = totalHitMin - output.TotalMax = totalHitMax - - if not env.configInput.EEIgnoreHitDamage and (output.FireHitAverage + output.ColdHitAverage + output.LightningHitAverage > 0) then - -- Update enemy hit-by-damage-type conditions - enemyDB.conditions.HitByFireDamage = output.FireHitAverage > 0 - enemyDB.conditions.HitByColdDamage = output.ColdHitAverage > 0 - enemyDB.conditions.HitByLightningDamage = output.LightningHitAverage > 0 - end - - local hitRate = output.HitChance / 100 * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) - - -- Calculate leech - output.LifeLeechDuration = output.LifeLeech / (modDB:Sum("FLAG", nil, "GhostReaver") and globalOutput.EnergyShield or globalOutput.Life) / 0.02 - output.LifeLeechInstances = output.LifeLeechDuration * hitRate - output.LifeLeechInstantRate = output.LifeLeechInstant * hitRate - output.ManaLeechDuration = output.ManaLeech / globalOutput.Mana / 0.02 - output.ManaLeechInstances = output.ManaLeechDuration * hitRate - output.ManaLeechInstantRate = output.ManaLeechInstant * hitRate - - -- Calculate gain on hit - if skillFlags.mine or skillFlags.trap or skillFlags.totem then - output.LifeOnHit = 0 - output.EnergyShieldOnHit = 0 - output.ManaOnHit = 0 - else - output.LifeOnHit = modDB:Sum("BASE", skillCfg, "LifeOnHit") + enemyDB:Sum("BASE", skillCfg, "SelfLifeOnHit") - output.EnergyShieldOnHit = modDB:Sum("BASE", skillCfg, "EnergyShieldOnHit") + enemyDB:Sum("BASE", skillCfg, "SelfEnergyShieldOnHit") - output.ManaOnHit = modDB:Sum("BASE", skillCfg, "ManaOnHit") + enemyDB:Sum("BASE", skillCfg, "SelfManaOnHit") - end - output.LifeOnHitRate = output.LifeOnHit * hitRate - output.EnergyShieldOnHitRate = output.EnergyShieldOnHit * hitRate - output.ManaOnHitRate = output.ManaOnHit * hitRate - - -- Calculate average damage and final DPS - output.AverageHit = (totalHitMin + totalHitMax) / 2 * (1 - output.CritChance / 100) + (totalCritMin + totalCritMax) / 2 * output.CritChance / 100 - output.AverageDamage = output.AverageHit * output.HitChance / 100 - output.TotalDPS = output.AverageDamage * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) - if breakdown then - if output.CritEffect ~= 1 then - breakdown.AverageHit = { - s_format("%.1f x (1 - %.4f) ^8(damage from non-crits)", (totalHitMin + totalHitMax) / 2, output.CritChance / 100), - s_format("+ %.1f x %.4f ^8(damage from crits)", (totalCritMin + totalCritMax) / 2, output.CritChance / 100), - s_format("= %.1f", output.AverageHit), - } - end - if isAttack then - breakdown.AverageDamage = { } - t_insert(breakdown.AverageDamage, s_format("%s:", pass.label)) - t_insert(breakdown.AverageDamage, s_format("%.1f ^8(average hit)", output.AverageHit)) - t_insert(breakdown.AverageDamage, s_format("x %.2f ^8(chance to hit)", output.HitChance / 100)) - t_insert(breakdown.AverageDamage, s_format("= %.1f", output.AverageDamage)) - end - end - end - - if isAttack then - -- Combine crit stats, average damage and DPS - combineStat("PreEffectiveCritChance", "AVERAGE") - combineStat("CritChance", "AVERAGE") - combineStat("CritMultiplier", "AVERAGE") - combineStat("AverageDamage", "DPS") - combineStat("TotalDPS", "DPS") - combineStat("LifeLeechDuration", "DPS") - combineStat("LifeLeechInstances", "DPS") - combineStat("LifeLeechInstant", "DPS") - combineStat("LifeLeechInstantRate", "DPS") - combineStat("ManaLeechDuration", "DPS") - combineStat("ManaLeechInstances", "DPS") - combineStat("ManaLeechInstant", "DPS") - combineStat("ManaLeechInstantRate", "DPS") - combineStat("LifeOnHit", "DPS") - combineStat("LifeOnHitRate", "DPS") - combineStat("EnergyShieldOnHit", "DPS") - combineStat("EnergyShieldOnHitRate", "DPS") - combineStat("ManaOnHit", "DPS") - combineStat("ManaOnHitRate", "DPS") - if skillFlags.bothWeaponAttack then - if breakdown then - breakdown.AverageDamage = { } - t_insert(breakdown.AverageDamage, "Both weapons:") - if skillData.doubleHitsWhenDualWielding then - t_insert(breakdown.AverageDamage, s_format("%.1f + %.1f ^8(skill hits with both weapons at once)", output.MainHand.AverageDamage, output.OffHand.AverageDamage)) - else - t_insert(breakdown.AverageDamage, s_format("(%.1f + %.1f) / 2 ^8(skill alternates weapons)", output.MainHand.AverageDamage, output.OffHand.AverageDamage)) - end - t_insert(breakdown.AverageDamage, s_format("= %.1f", output.AverageDamage)) - end - end - end - if env.mode == "CALCS" then - if skillData.showAverage then - output.DisplayDamage = s_format("%.1f average damage", output.AverageDamage) - else - output.DisplayDamage = s_format("%.1f DPS", output.TotalDPS) - end - end - if breakdown then - if isAttack then - breakdown.TotalDPS = { - s_format("%.1f ^8(average damage)", output.AverageDamage), - output.HitSpeed and s_format("x %.2f ^8(hit rate)", output.HitSpeed) or s_format("x %.2f ^8(attack rate)", output.Speed), - } - else - breakdown.TotalDPS = { - s_format("%.1f ^8(average hit)", output.AverageDamage), - output.HitSpeed and s_format("x %.2f ^8(hit rate)", output.HitSpeed) or s_format("x %.2f ^8(cast rate)", output.Speed), - } - end - if skillData.dpsMultiplier then - t_insert(breakdown.TotalDPS, s_format("x %g ^8(DPS multiplier for this skill)", skillData.dpsMultiplier)) - end - t_insert(breakdown.TotalDPS, s_format("= %.1f", output.TotalDPS)) - end - - -- Calculate leech rates - if modDB:Sum("FLAG", nil, "GhostReaver") then - output.LifeLeechRate = 0 - output.LifeLeechPerHit = 0 - output.EnergyShieldLeechInstanceRate = output.EnergyShield * 0.02 * calcMod(modDB, skillCfg, "LifeLeechRate") - output.EnergyShieldLeechRate = output.LifeLeechInstantRate + m_min(output.LifeLeechInstances * output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) - output.EnergyShieldLeechPerHit = m_min(output.EnergyShieldLeechInstanceRate, output.MaxEnergyShieldLeechRate) * output.LifeLeechDuration + output.LifeLeechInstant - else - output.LifeLeechInstanceRate = output.Life * 0.02 * calcMod(modDB, skillCfg, "LifeLeechRate") - output.LifeLeechRate = output.LifeLeechInstantRate + m_min(output.LifeLeechInstances * output.LifeLeechInstanceRate, output.MaxLifeLeechRate) - output.LifeLeechPerHit = m_min(output.LifeLeechInstanceRate, output.MaxLifeLeechRate) * output.LifeLeechDuration + output.LifeLeechInstant - output.EnergyShieldLeechRate = 0 - output.EnergyShieldLeechPerHit = 0 - end - output.ManaLeechInstanceRate = output.Mana * 0.02 * calcMod(modDB, skillCfg, "ManaLeechRate") - output.ManaLeechRate = output.ManaLeechInstantRate + m_min(output.ManaLeechInstances * output.ManaLeechInstanceRate, output.MaxManaLeechRate) - output.ManaLeechPerHit = m_min(output.ManaLeechInstanceRate, output.MaxManaLeechRate) * output.ManaLeechDuration + output.ManaLeechInstant - skillFlags.leechES = output.EnergyShieldLeechRate > 0 - skillFlags.leechLife = output.LifeLeechRate > 0 - skillFlags.leechMana = output.ManaLeechRate > 0 - if skillData.showAverage then - output.LifeLeechGainPerHit = output.LifeLeechPerHit + output.LifeOnHit - output.EnergyShieldLeechGainPerHit = output.EnergyShieldLeechPerHit + output.EnergyShieldOnHit - output.ManaLeechGainPerHit = output.ManaLeechPerHit + output.ManaOnHit - else - output.LifeLeechGainRate = output.LifeLeechRate + output.LifeOnHitRate - output.EnergyShieldLeechGainRate = output.EnergyShieldLeechRate + output.EnergyShieldOnHitRate - output.ManaLeechGainRate = output.ManaLeechRate + output.ManaOnHitRate - end - if breakdown then - local function leechBreakdown(instant, instantRate, instances, pool, rate, max, dur) - local out = { } - if skillData.showAverage then - if instant > 0 then - t_insert(out, s_format("Instant Leech: %.1f", instant)) - end - if instances > 0 then - t_insert(out, "Total leeched per instance:") - t_insert(out, s_format("%d ^8(size of leech destination pool)", pool)) - t_insert(out, "x 0.02 ^8(base leech rate is 2% per second)") - local rateMod = calcMod(modDB, skillCfg, rate) - if rateMod ~= 1 then - t_insert(out, s_format("x %.2f ^8(leech rate modifier)", rateMod)) - end - t_insert(out, s_format("x %.2fs ^8(instance duration)", dur)) - t_insert(out, s_format("= %.1f", pool * 0.02 * rateMod * dur)) - end - else - if instantRate > 0 then - t_insert(out, s_format("Instant Leech per second: %.1f", instantRate)) - end - if instances > 0 then - t_insert(out, "Rate per instance:") - t_insert(out, s_format("%d ^8(size of leech destination pool)", pool)) - t_insert(out, "x 0.02 ^8(base leech rate is 2% per second)") - local rateMod = calcMod(modDB, skillCfg, rate) - if rateMod ~= 1 then - t_insert(out, s_format("x %.2f ^8(leech rate modifier)", rateMod)) - end - t_insert(out, s_format("= %.1f ^8per second", pool * 0.02 * rateMod)) - t_insert(out, "Maximum leech rate against one target:") - t_insert(out, s_format("%.1f", pool * 0.02 * rateMod)) - t_insert(out, s_format("x %.1f ^8(average instances)", instances)) - local total = pool * 0.02 * rateMod * instances - t_insert(out, s_format("= %.1f ^8per second", total)) - if total <= max then - t_insert(out, s_format("Time to reach max: %.1fs", dur)) - end - t_insert(out, s_format("Leech rate cap: %.1f", max)) - if total > max then - t_insert(out, s_format("Time to reach cap: %.1fs", dur / total * max)) - end - end - end - return out - end - if skillFlags.leechLife then - breakdown.LifeLeech = leechBreakdown(output.LifeLeechInstant, output.LifeLeechInstantRate, output.LifeLeechInstances, output.Life, "LifeLeechRate", output.MaxLifeLeechRate, output.LifeLeechDuration) - end - if skillFlags.leechES then - breakdown.EnergyShieldLeech = leechBreakdown(output.LifeLeechInstant, output.LifeLeechInstantRate, output.LifeLeechInstances, output.EnergyShield, "LifeLeechRate", output.MaxEnergyShieldLeechRate, output.LifeLeechDuration) - end - if skillFlags.leechMana then - breakdown.ManaLeech = leechBreakdown(output.ManaLeechInstant, output.ManaLeechInstantRate, output.ManaLeechInstances, output.Mana, "ManaLeechRate", output.MaxManaLeechRate, output.ManaLeechDuration) - end - end - - -- Calculate skill DOT components - local dotCfg = { - skillName = skillCfg.skillName, - skillPart = skillCfg.skillPart, - slotName = skillCfg.slotName, - flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0, skillData.dotIsArea and ModFlag.Area or 0), - keywordFlags = skillCfg.keywordFlags - } - env.mainSkill.dotCfg = dotCfg - output.TotalDot = 0 - for _, damageType in ipairs(dmgTypeList) do - local baseVal - if canDeal[damageType] then - baseVal = skillData[damageType.."Dot"] or 0 - else - baseVal = 0 - end - if baseVal > 0 then - skillFlags.dot = true - local effMult = 1 - if env.mode_effective then - local resist = 0 - local taken = enemyDB:Sum("INC", nil, "DamageTaken", damageType.."DamageTaken", "DotTaken") - if damageType == "Physical" then - resist = enemyDB:Sum("INC", nil, "PhysicalDamageReduction") - else - resist = enemyDB:Sum("BASE", nil, damageType.."Resist") - if isElemental[damageType] then - resist = resist + enemyDB:Sum("BASE", nil, "ElementalResist") - taken = taken + enemyDB:Sum("INC", nil, "ElementalDamageTaken") - end - if damageType == "Fire" then - taken = taken + enemyDB:Sum("INC", nil, "BurningDamageTaken") - end - resist = m_min(resist, 75) - end - effMult = (1 - resist / 100) * (1 + taken / 100) - output[damageType.."DotEffMult"] = effMult - if breakdown and effMult ~= 1 then - breakdown[damageType.."DotEffMult"] = effMultBreakdown(damageType, resist, 0, taken, effMult) - end - end - local inc = modDB:Sum("INC", dotCfg, "Damage", damageType.."Damage", isElemental[damageType] and "ElementalDamage" or nil) - local more = round(modDB:Sum("MORE", dotCfg, "Damage", damageType.."Damage", isElemental[damageType] and "ElementalDamage" or nil), 2) - local total = baseVal * (1 + inc/100) * more * effMult - output[damageType.."Dot"] = total - output.TotalDot = output.TotalDot + total - if breakdown then - breakdown[damageType.."Dot"] = { } - dotBreakdown(breakdown[damageType.."Dot"], baseVal, inc, more, nil, effMult, total) - end - end - end - - skillFlags.bleed = false - skillFlags.poison = false - skillFlags.ignite = false - skillFlags.igniteCanStack = modDB:Sum("FLAG", skillCfg, "IgniteCanStack") - skillFlags.shock = false - skillFlags.freeze = false - for _, pass in ipairs(passList) do - local globalOutput, globalBreakdown = output, breakdown - local source, output, cfg, breakdown = pass.source, pass.output, pass.cfg, pass.breakdown - - -- Calculate chance to inflict secondary dots/status effects - condList["CriticalStrike"] = true - if modDB:Sum("FLAG", cfg, "CannotBleed") then - output.BleedChanceOnCrit = 0 - else - output.BleedChanceOnCrit = m_min(100, modDB:Sum("BASE", cfg, "BleedChance")) - end - output.PoisonChanceOnCrit = m_min(100, modDB:Sum("BASE", cfg, "PoisonChance")) - if modDB:Sum("FLAG", cfg, "CannotIgnite") then - output.IgniteChanceOnCrit = 0 - else - output.IgniteChanceOnCrit = 100 - end - if modDB:Sum("FLAG", cfg, "CannotShock") then - output.ShockChanceOnCrit = 0 - else - output.ShockChanceOnCrit = 100 - end - if modDB:Sum("FLAG", cfg, "CannotFreeze") then - output.FreezeChanceOnCrit = 0 - else - output.FreezeChanceOnCrit = 100 - end - condList["CriticalStrike"] = false - if modDB:Sum("FLAG", cfg, "CannotBleed") then - output.BleedChanceOnHit = 0 - else - output.BleedChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "BleedChance")) - end - output.PoisonChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "PoisonChance")) - if modDB:Sum("FLAG", cfg, "CannotIgnite") then - output.IgniteChanceOnHit = 0 - else - output.IgniteChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "EnemyIgniteChance") + enemyDB:Sum("BASE", nil, "SelfIgniteChance")) - end - if modDB:Sum("FLAG", cfg, "CannotShock") then - output.ShockChanceOnHit = 0 - else - output.ShockChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "EnemyShockChance") + enemyDB:Sum("BASE", nil, "SelfShockChance")) - end - if modDB:Sum("FLAG", cfg, "CannotFreeze") then - output.FreezeChanceOnHit = 0 - else - output.FreezeChanceOnHit = m_min(100, modDB:Sum("BASE", cfg, "EnemyFreezeChance") + enemyDB:Sum("BASE", nil, "SelfFreezeChance")) - if modDB:Sum("FLAG", cfg, "CritsDontAlwaysFreeze") then - output.FreezeChanceOnCrit = output.FreezeChanceOnHit - end - end - if skillFlags.attack and skillFlags.projectile and modDB:Sum("FLAG", cfg, "ArrowsThatPierceCauseBleeding") then - output.BleedChanceOnHit = 100 - (1 - output.BleedChanceOnHit / 100) * (1 - globalOutput.PierceChance / 100) * 100 - output.BleedChanceOnCrit = 100 - (1 - output.BleedChanceOnCrit / 100) * (1 - globalOutput.PierceChance / 100) * 100 - end - - local function calcSecondaryEffectBase(type, sourceHitDmg, sourceCritDmg) - -- Calculate the inflict chance and base damage of a secondary effect (bleed/poison/ignite/shock/freeze) - local chanceOnHit, chanceOnCrit = output[type.."ChanceOnHit"], output[type.."ChanceOnCrit"] - local chanceFromHit = chanceOnHit * (1 - output.CritChance / 100) - local chanceFromCrit = chanceOnCrit * output.CritChance / 100 - local chance = chanceFromHit + chanceFromCrit - output[type.."Chance"] = chance - local baseFromHit = sourceHitDmg * chanceFromHit / (chanceFromHit + chanceFromCrit) - local baseFromCrit = sourceCritDmg * chanceFromCrit / (chanceFromHit + chanceFromCrit) - local baseVal = baseFromHit + baseFromCrit - if breakdown and chance ~= 0 then - local breakdownChance = breakdown[type.."Chance"] or { } - breakdown[type.."Chance"] = breakdownChance - if breakdownChance[1] then - t_insert(breakdownChance, "") - end - if isAttack then - t_insert(breakdownChance, pass.label..":") - end - t_insert(breakdownChance, s_format("Chance on Non-crit: %d%%", chanceOnHit)) - t_insert(breakdownChance, s_format("Chance on Crit: %d%%", chanceOnCrit)) - if chanceOnHit ~= chanceOnCrit then - t_insert(breakdownChance, "Combined chance:") - t_insert(breakdownChance, s_format("%d x (1 - %.4f) ^8(chance from non-crits)", chanceOnHit, output.CritChance/100)) - t_insert(breakdownChance, s_format("+ %d x %.4f ^8(chance from crits)", chanceOnCrit, output.CritChance/100)) - t_insert(breakdownChance, s_format("= %.2f", chance)) - end - end - if breakdown and baseVal > 0 then - local breakdownDPS = breakdown[type.."DPS"] or { } - breakdown[type.."DPS"] = breakdownDPS - if breakdownDPS[1] then - t_insert(breakdownDPS, "") - end - if isAttack then - t_insert(breakdownDPS, pass.label..":") - end - if sourceHitDmg == sourceCritDmg then - t_insert(breakdownDPS, "Base damage:") - t_insert(breakdownDPS, s_format("%.1f ^8(source damage)",sourceHitDmg)) - else - if baseFromHit > 0 then - t_insert(breakdownDPS, "Base from Non-crits:") - t_insert(breakdownDPS, s_format("%.1f ^8(source damage from non-crits)", sourceHitDmg)) - t_insert(breakdownDPS, s_format("x %.3f ^8(portion of instances created by non-crits)", chanceFromHit / (chanceFromHit + chanceFromCrit))) - t_insert(breakdownDPS, s_format("= %.1f", baseFromHit)) - end - if baseFromCrit > 0 then - t_insert(breakdownDPS, "Base from Crits:") - t_insert(breakdownDPS, s_format("%.1f ^8(source damage from crits)", sourceCritDmg)) - t_insert(breakdownDPS, s_format("x %.3f ^8(portion of instances created by crits)", chanceFromCrit / (chanceFromHit + chanceFromCrit))) - t_insert(breakdownDPS, s_format("= %.1f", baseFromCrit)) - end - if baseFromHit > 0 and baseFromCrit > 0 then - t_insert(breakdownDPS, "Total base damage:") - t_insert(breakdownDPS, s_format("%.1f + %.1f", baseFromHit, baseFromCrit)) - t_insert(breakdownDPS, s_format("= %.1f", baseVal)) - end - end - end - return baseVal - end - - -- Calculate bleeding chance and damage - if canDeal.Physical and (output.BleedChanceOnHit + output.BleedChanceOnCrit) > 0 then - local sourceHitDmg = output.PhysicalHitAverage - local sourceCritDmg = output.PhysicalCritAverage - local baseVal = calcSecondaryEffectBase("Bleed", sourceHitDmg, sourceCritDmg) * 0.1 - if baseVal > 0 then - skillFlags.bleed = true - skillFlags.duration = true - if not env.mainSkill.bleedCfg then - env.mainSkill.bleedCfg = { - skillName = skillCfg.skillName, - slotName = skillCfg.slotName, - flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), - keywordFlags = bor(skillCfg.keywordFlags, KeywordFlag.Bleed) - } - end - local dotCfg = env.mainSkill.bleedCfg - local effMult = 1 - if env.mode_effective then - local resist = enemyDB:Sum("INC", nil, "PhysicalDamageReduction") - local taken = enemyDB:Sum("INC", dotCfg, "DamageTaken", "PhysicalDamageTaken", "DotTaken") - effMult = (1 - resist / 100) * (1 + taken / 100) - globalOutput["BleedEffMult"] = effMult - if breakdown and effMult ~= 1 then - globalBreakdown.BleedEffMult = effMultBreakdown("Physical", resist, 0, taken, effMult) - end - end - local inc = modDB:Sum("INC", dotCfg, "Damage", "PhysicalDamage") - local more = round(modDB:Sum("MORE", dotCfg, "Damage", "PhysicalDamage"), 2) - output.BleedDPS = baseVal * (1 + inc/100) * more * effMult - local durationMod = calcMod(modDB, dotCfg, "Duration") * calcMod(enemyDB, nil, "SelfBleedDuration") - globalOutput.BleedDuration = 5 * durationMod * debuffDurationMult - if breakdown then - t_insert(breakdown.BleedDPS, "x 0.1 ^8(bleed deals 10% per second)") - t_insert(breakdown.BleedDPS, s_format("= %.1f", baseVal)) - t_insert(breakdown.BleedDPS, "Bleed DPS:") - dotBreakdown(breakdown.BleedDPS, baseVal, inc, more, nil, effMult, output.BleedDPS) - if globalOutput.BleedDuration ~= 5 then - globalBreakdown.BleedDuration = { - "5.00s ^8(base duration)" - } - if durationMod ~= 1 then - t_insert(globalBreakdown.BleedDuration, s_format("x %.2f ^8(duration modifier)", durationMod)) - end - if debuffDurationMult ~= 1 then - t_insert(globalBreakdown.BleedDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) - end - t_insert(globalBreakdown.BleedDuration, s_format("= %.2fs", globalOutput.BleedDuration)) - end - end - end - end - - -- Calculate poison chance and damage - if canDeal.Chaos and (output.PoisonChanceOnHit + output.PoisonChanceOnCrit) > 0 then - local sourceHitDmg = output.PhysicalHitAverage + output.ChaosHitAverage - local sourceCritDmg = output.PhysicalCritAverage + output.ChaosCritAverage - local baseVal = calcSecondaryEffectBase("Poison", sourceHitDmg, sourceCritDmg * modDB:Sum("MORE", cfg, "PoisonDamageOnCrit")) * 0.08 - if baseVal > 0 then - skillFlags.poison = true - skillFlags.duration = true - if not env.mainSkill.poisonCfg then - env.mainSkill.poisonCfg = { - skillName = skillCfg.skillName, - slotName = skillCfg.slotName, - flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), - keywordFlags = bor(skillCfg.keywordFlags, KeywordFlag.Poison) - } - end - local dotCfg = env.mainSkill.poisonCfg - local effMult = 1 - if env.mode_effective then - local resist = m_min(enemyDB:Sum("BASE", nil, "ChaosResist"), 75) - local taken = enemyDB:Sum("INC", nil, "DamageTaken", "ChaosDamageTaken", "DotTaken") - effMult = (1 - resist / 100) * (1 + taken / 100) - globalOutput["PoisonEffMult"] = effMult - if breakdown and effMult ~= 1 then - globalBreakdown.PoisonEffMult = effMultBreakdown("Chaos", resist, 0, taken, effMult) - end - end - local inc = modDB:Sum("INC", dotCfg, "Damage", "ChaosDamage") - local more = round(modDB:Sum("MORE", dotCfg, "Damage", "ChaosDamage"), 2) - output.PoisonDPS = baseVal * (1 + inc/100) * more * effMult - local durationBase - if skillData.poisonDurationIsSkillDuration then - durationBase = skillData.duration - else - durationBase = 2 - end - local durationMod = calcMod(modDB, dotCfg, "Duration") * calcMod(enemyDB, nil, "SelfPoisonDuration") - globalOutput.PoisonDuration = durationBase * durationMod * debuffDurationMult - output.PoisonDamage = output.PoisonDPS * globalOutput.PoisonDuration - if skillData.showAverage then - output.TotalPoisonAverageDamage = output.HitChance / 100 * output.PoisonChance / 100 * output.PoisonDamage - else - output.TotalPoisonDPS = output.HitChance / 100 * output.PoisonChance / 100 * output.PoisonDamage * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) - end - if breakdown then - t_insert(breakdown.PoisonDPS, "x 0.08 ^8(poison deals 8% per second)") - t_insert(breakdown.PoisonDPS, s_format("= %.1f", baseVal, 1)) - t_insert(breakdown.PoisonDPS, "Poison DPS:") - dotBreakdown(breakdown.PoisonDPS, baseVal, inc, more, nil, effMult, output.PoisonDPS) - if globalOutput.PoisonDuration ~= 2 then - globalBreakdown.PoisonDuration = { - s_format("%.2fs ^8(base duration)", durationBase) - } - if durationMod ~= 1 then - t_insert(globalBreakdown.PoisonDuration, s_format("x %.2f ^8(duration modifier)", durationMod)) - end - if debuffDurationMult ~= 1 then - t_insert(globalBreakdown.PoisonDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) - end - t_insert(globalBreakdown.PoisonDuration, s_format("= %.2fs", globalOutput.PoisonDuration)) - end - breakdown.PoisonDamage = { } - if isAttack then - t_insert(breakdown.PoisonDamage, pass.label..":") - end - t_insert(breakdown.PoisonDamage, s_format("%.1f ^8(damage per second)", output.PoisonDPS)) - t_insert(breakdown.PoisonDamage, s_format("x %.2fs ^8(poison duration)", globalOutput.PoisonDuration)) - t_insert(breakdown.PoisonDamage, s_format("= %.1f ^8damage per poison stack", output.PoisonDamage)) - end - end - end - - -- Calculate ignite chance and damage - if canDeal.Fire and (output.IgniteChanceOnHit + output.IgniteChanceOnCrit) > 0 then - local sourceHitDmg = 0 - local sourceCritDmg = 0 - if canDeal.Fire and not modDB:Sum("FLAG", cfg, "FireCannotIgnite") then - sourceHitDmg = sourceHitDmg + output.FireHitAverage - sourceCritDmg = sourceCritDmg + output.FireCritAverage - end - if canDeal.Cold and modDB:Sum("FLAG", cfg, "ColdCanIgnite") then - sourceHitDmg = sourceHitDmg + output.ColdHitAverage - sourceCritDmg = sourceCritDmg + output.ColdCritAverage - end - local igniteMode = env.configInput.igniteMode or "AVERAGE" - if igniteMode == "CRIT" then - output.IgniteChanceOnHit = 0 - end - if globalBreakdown then - globalBreakdown.IgniteDPS = { - s_format("Ignite mode: %s ^8(can be changed in the Configuration tab)", igniteMode == "CRIT" and "Crit Damage" or "Average Damage") - } - end - local baseVal = calcSecondaryEffectBase("Ignite", sourceHitDmg, sourceCritDmg) * 0.2 - if baseVal > 0 then - skillFlags.ignite = true - if not env.mainSkill.igniteCfg then - env.mainSkill.igniteCfg = { - skillName = skillCfg.skillName, - slotName = skillCfg.slotName, - flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), - keywordFlags = skillCfg.keywordFlags, - } - end - local dotCfg = env.mainSkill.igniteCfg - local effMult = 1 - if env.mode_effective then - local resist = m_min(enemyDB:Sum("BASE", nil, "FireResist", "ElementalResist"), 75) - local taken = enemyDB:Sum("INC", dotCfg, "DamageTaken", "FireDamageTaken", "ElementalDamageTaken", "BurningDamageTaken", "DotTaken") - effMult = (1 - resist / 100) * (1 + taken / 100) - globalOutput["IgniteEffMult"] = effMult - if breakdown and effMult ~= 1 then - globalBreakdown.IgniteEffMult = effMultBreakdown("Fire", resist, 0, taken, effMult) - end - end - local inc = modDB:Sum("INC", dotCfg, "Damage", "FireDamage", "ElementalDamage") - local more = round(modDB:Sum("MORE", dotCfg, "Damage", "FireDamage", "ElementalDamage"), 2) - local burnRateMod = calcMod(modDB, cfg, "IgniteBurnRate") - output.IgniteDPS = baseVal * (1 + inc/100) * more * burnRateMod * effMult - local incDur = modDB:Sum("INC", dotCfg, "EnemyIgniteDuration") + enemyDB:Sum("INC", nil, "SelfIgniteDuration") - local moreDur = enemyDB:Sum("MORE", nil, "SelfIgniteDuration") - globalOutput.IgniteDuration = 4 * (1 + incDur / 100) * moreDur / burnRateMod * debuffDurationMult - if skillFlags.igniteCanStack then - output.IgniteDamage = output.IgniteDPS * globalOutput.IgniteDuration - if skillData.showAverage then - output.TotalIgniteAverageDamage = output.HitChance / 100 * output.IgniteChance / 100 * output.IgniteDamage - else - output.TotalIgniteDPS = output.HitChance / 100 * output.IgniteChance / 100 * output.IgniteDamage * (globalOutput.HitSpeed or globalOutput.Speed) * (skillData.dpsMultiplier or 1) - end - end - if breakdown then - t_insert(breakdown.IgniteDPS, "x 0.2 ^8(ignite deals 20% per second)") - t_insert(breakdown.IgniteDPS, s_format("= %.1f", baseVal, 1)) - t_insert(breakdown.IgniteDPS, "Ignite DPS:") - dotBreakdown(breakdown.IgniteDPS, baseVal, inc, more, burnRateMod, effMult, output.IgniteDPS) - if skillFlags.igniteCanStack then - breakdown.IgniteDamage = { } - if isAttack then - t_insert(breakdown.IgniteDamage, pass.label..":") - end - t_insert(breakdown.IgniteDamage, s_format("%.1f ^8(damage per second)", output.IgniteDPS)) - t_insert(breakdown.IgniteDamage, s_format("x %.2fs ^8(ignite duration)", globalOutput.IgniteDuration)) - t_insert(breakdown.IgniteDamage, s_format("= %.1f ^8damage per ignite stack", output.IgniteDamage)) - end - if globalOutput.IgniteDuration ~= 4 then - globalBreakdown.IgniteDuration = { - s_format("4.00s ^8(base duration)", durationBase) - } - if incDur ~= 0 then - t_insert(globalBreakdown.IgniteDuration, s_format("x %.2f ^8(increased/reduced duration)", 1 + incDur/100)) - end - if moreDur ~= 1 then - t_insert(globalBreakdown.IgniteDuration, s_format("x %.2f ^8(more/less duration)", moreDur)) - end - if burnRateMod ~= 1 then - t_insert(globalBreakdown.IgniteDuration, s_format("/ %.2f ^8(rate modifier)", burnRateMod)) - end - if debuffDurationMult ~= 1 then - t_insert(globalBreakdown.IgniteDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) - end - t_insert(globalBreakdown.IgniteDuration, s_format("= %.2fs", globalOutput.IgniteDuration)) - end - end - end - end - - -- Calculate shock and freeze chance + duration modifier - if (output.ShockChanceOnHit + output.ShockChanceOnCrit) > 0 then - local sourceHitDmg = 0 - local sourceCritDmg = 0 - if canDeal.Lightning and not modDB:Sum("FLAG", cfg, "LightningCannotShock") then - sourceHitDmg = sourceHitDmg + output.LightningHitAverage - sourceCritDmg = sourceCritDmg + output.LightningCritAverage - end - if canDeal.Physical and modDB:Sum("FLAG", cfg, "PhysicalCanShock") then - sourceHitDmg = sourceHitDmg + output.PhysicalHitAverage - sourceCritDmg = sourceCritDmg + output.PhysicalCritAverage - end - if canDeal.Fire and modDB:Sum("FLAG", cfg, "FireCanShock") then - sourceHitDmg = sourceHitDmg + output.FireHitAverage - sourceCritDmg = sourceCritDmg + output.FireCritAverage - end - if canDeal.Chaos and modDB:Sum("FLAG", cfg, "ChaosCanShock") then - sourceHitDmg = sourceHitDmg + output.ChaosHitAverage - sourceCritDmg = sourceCritDmg + output.ChaosCritAverage - end - local baseVal = calcSecondaryEffectBase("Shock", sourceHitDmg, sourceCritDmg) - if baseVal > 0 then - skillFlags.shock = true - output.ShockDurationMod = 1 + modDB:Sum("INC", cfg, "EnemyShockDuration") / 100 + enemyDB:Sum("INC", nil, "SelfShockDuration") / 100 - if breakdown then - t_insert(breakdown.ShockDPS, s_format("For shock to apply, target must have no more than %d life.", baseVal * 20 * output.ShockDurationMod)) - end - end - end - if (output.FreezeChanceOnHit + output.FreezeChanceOnCrit) > 0 then - local sourceHitDmg = 0 - local sourceCritDmg = 0 - if canDeal.Cold and not modDB:Sum("FLAG", cfg, "ColdCannotFreeze") then - sourceHitDmg = sourceHitDmg + output.ColdHitAverage - sourceCritDmg = sourceCritDmg + output.ColdCritAverage - end - if canDeal.Lightning and modDB:Sum("FLAG", cfg, "LightningCanFreeze") then - sourceHitDmg = sourceHitDmg + output.LightningHitAverage - sourceCritDmg = sourceCritDmg + output.LightningCritAverage - end - local baseVal = calcSecondaryEffectBase("Freeze", sourceHitDmg, sourceCritDmg) - if baseVal > 0 then - skillFlags.freeze = true - output.FreezeDurationMod = 1 + modDB:Sum("INC", cfg, "EnemyFreezeDuration") / 100 + enemyDB:Sum("INC", nil, "SelfFreezeDuration") / 100 - if breakdown then - t_insert(breakdown.FreezeDPS, s_format("For freeze to apply, target must have no more than %d life.", baseVal * 20 * output.FreezeDurationMod)) - end - end - end - - -- Calculate enemy stun modifiers - local enemyStunThresholdRed = -modDB:Sum("INC", cfg, "EnemyStunThreshold") - if enemyStunThresholdRed > 75 then - output.EnemyStunThresholdMod = 1 - (75 + (enemyStunThresholdRed - 75) * 25 / (enemyStunThresholdRed - 50)) / 100 - else - output.EnemyStunThresholdMod = 1 - enemyStunThresholdRed / 100 - end - local incDur = modDB:Sum("INC", cfg, "EnemyStunDuration") - local incRecov = enemyDB:Sum("INC", nil, "StunRecovery") - output.EnemyStunDuration = 0.35 * (1 + incDur / 100) / (1 + incRecov / 100) - if breakdown then - if output.EnemyStunDuration ~= 0.35 then - breakdown.EnemyStunDuration = { - "0.35s ^8(base duration)" - } - if incDur ~= 0 then - t_insert(breakdown.EnemyStunDuration, s_format("x %.2f ^8(increased/reduced stun duration)", 1 + incDur/100)) - end - if incRecov ~= 0 then - t_insert(breakdown.EnemyStunDuration, s_format("/ %.2f ^8(increased/reduced enemy stun recovery)", 1 + incRecov/100)) - end - t_insert(breakdown.EnemyStunDuration, s_format("= %.2fs", output.EnemyStunDuration)) - end - end - - end - - -- Combine secondary effect stats - if isAttack then - combineStat("BleedChance", "AVERAGE") - combineStat("BleedDPS", "CHANCE", "BleedChance") - combineStat("PoisonChance", "AVERAGE") - combineStat("PoisonDPS", "CHANCE", "PoisonChance") - combineStat("PoisonDamage", "CHANCE", "PoisonChance") - if skillData.showAverage then - combineStat("TotalPoisonAverageDamage", "DPS") - else - combineStat("TotalPoisonDPS", "DPS") - end - combineStat("IgniteChance", "AVERAGE") - combineStat("IgniteDPS", "CHANCE", "IgniteChance") - if skillFlags.igniteCanStack then - combineStat("IgniteDamage", "CHANCE", "IgniteChance") - if skillData.showAverage then - combineStat("TotalIgniteAverageDamage", "DPS") - else - combineStat("TotalIgniteDPS", "DPS") - end - end - combineStat("ShockChance", "AVERAGE") - combineStat("ShockDurationMod", "AVERAGE") - combineStat("FreezeChance", "AVERAGE") - combineStat("FreezeDurationMod", "AVERAGE") - end - - if skillFlags.hit and skillData.decay then - -- Calculate DPS for Essence of Delirium's Decay effect - skillFlags.decay = true - env.mainSkill.decayCfg = { - slotName = skillCfg.slotName, - flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0), - keywordFlags = skillCfg.keywordFlags, - } - local dotCfg = env.mainSkill.decayCfg - local effMult = 1 - if env.mode_effective then - local resist = m_min(enemyDB:Sum("BASE", nil, "ChaosResist"), 75) - local taken = enemyDB:Sum("INC", nil, "DamageTaken", "ChaosDamageTaken", "DotTaken") - effMult = (1 - resist / 100) * (1 + taken / 100) - output["DecayEffMult"] = effMult - if breakdown and effMult ~= 1 then - breakdown.DecayEffMult = effMultBreakdown("Chaos", resist, 0, taken, effMult) - end - end - local inc = modDB:Sum("INC", dotCfg, "Damage", "ChaosDamage") - local more = round(modDB:Sum("MORE", dotCfg, "Damage", "ChaosDamage"), 2) - output.DecayDPS = skillData.decay * (1 + inc/100) * more * effMult - local durationMod = calcMod(modDB, dotCfg, "Duration") - output.DecayDuration = 10 * durationMod * debuffDurationMult - if breakdown then - breakdown.DecayDPS = { } - t_insert(breakdown.DecayDPS, "Decay DPS:") - dotBreakdown(breakdown.DecayDPS, skillData.decay, inc, more, nil, effMult, output.DecayDPS) - if output.DecayDuration ~= 2 then - breakdown.DecayDuration = { - s_format("%.2fs ^8(base duration)", 10) - } - if durationMod ~= 1 then - t_insert(breakdown.DecayDuration, s_format("x %.2f ^8(duration modifier)", durationMod)) - end - if debuffDurationMult ~= 1 then - t_insert(breakdown.DecayDuration, s_format("/ %.2f ^8(debuff expires slower/faster)", 1 / debuffDurationMult)) - end - t_insert(breakdown.DecayDuration, s_format("= %.2fs", output.DecayDuration)) - end - end - end - - -- Calculate combined DPS estimate, including DoTs - local baseDPS = output[(skillData.showAverage and "AverageDamage") or "TotalDPS"] + output.TotalDot - output.CombinedDPS = baseDPS - if skillFlags.poison then - if skillData.showAverage then - output.CombinedDPS = output.CombinedDPS + output.TotalPoisonAverageDamage - output.WithPoisonAverageDamage = baseDPS + output.TotalPoisonAverageDamage - else - output.CombinedDPS = output.CombinedDPS + output.TotalPoisonDPS - output.WithPoisonDPS = baseDPS + output.TotalPoisonDPS - end - end - if skillFlags.ignite then - if skillFlags.igniteCanStack then - if skillData.showAverage then - output.CombinedDPS = output.CombinedDPS + output.TotalIgniteAverageDamage - output.WithIgniteAverageDamage = baseDPS + output.TotalIgniteAverageDamage - else - output.CombinedDPS = output.CombinedDPS + output.TotalIgniteDPS - output.WithIgniteDPS = baseDPS + output.TotalIgniteDPS - end - else - output.CombinedDPS = output.CombinedDPS + output.IgniteDPS - end - end - if skillFlags.bleed then - output.CombinedDPS = output.CombinedDPS + output.BleedDPS - end - if skillFlags.decay then - output.CombinedDPS = output.CombinedDPS + output.DecayDPS - end -end +local calcs = { } +LoadModule("Modules/CalcSetup", calcs) +LoadModule("Modules/CalcPerform", calcs) +LoadModule("Modules/CalcActiveSkill", calcs) +LoadModule("Modules/CalcDefence", calcs) +LoadModule("Modules/CalcOffence", calcs) -- Print various tables to the console -local function infoDump(env, output) +local function infoDump(env, output) env.modDB:Print() + if env.minion then + ConPrintf("=== Minion Mod DB ===") + env.minion.modDB:Print() + end ConPrintf("=== Enemy Mod DB ===") env.enemyDB:Print() + local mainSkill = env.minion and env.minion.mainSkill or env.player.mainSkill ConPrintf("=== Main Skill ===") - for _, gem in ipairs(env.mainSkill.gemList) do + for _, gem in ipairs(mainSkill.gemList) do ConPrintf("%s %d/%d", gem.name, gem.level, gem.quality) end ConPrintf("=== Main Skill Flags ===") - ConPrintf("Mod: %s", modLib.formatFlags(env.mainSkill.skillCfg.flags, ModFlag)) - ConPrintf("Keyword: %s", modLib.formatFlags(env.mainSkill.skillCfg.keywordFlags, KeywordFlag)) + ConPrintf("Mod: %s", modLib.formatFlags(mainSkill.skillCfg.flags, ModFlag)) + ConPrintf("Keyword: %s", modLib.formatFlags(mainSkill.skillCfg.keywordFlags, KeywordFlag)) ConPrintf("=== Main Skill Mods ===") - env.mainSkill.skillModList:Print() + mainSkill.skillModList:Print() ConPrintf("== Aux Skills ==") for i, aux in ipairs(env.auxSkillList) do ConPrintf("Skill #%d:", i) @@ -3337,33 +44,15 @@ local function infoDump(env, output) end end -- ConPrintf("== Conversion Table ==") --- ConPrintTable(env.conversionTable) +-- prettyPrintTable(env.player.conversionTable) ConPrintf("== Output Table ==") - local outNames = { } - for name in pairs(env.output) do - t_insert(outNames, name) - end - table.sort(outNames) - for _, name in ipairs(outNames) do - if type(env.output[name]) == "table" then - local subNames = { } - for subName in pairs(env.output[name]) do - t_insert(subNames, subName) - end - table.sort(subNames) - for _, subName in ipairs(subNames) do - ConPrintf("%s.%s = %s", name, subName, tostring(env.output[name][subName])) - end - else - ConPrintf("%s = %s", name, tostring(env.output[name])) - end - end + prettyPrintTable(env.player.output) end -- Generate a function for calculating the effect of some modification to the environment local function getCalculator(build, fullInit, modFunc) -- Initialise environment - local env = initEnv(build, "CALCULATOR") + local env = calcs.initEnv(build, "CALCULATOR") -- Save a copy of the initial mod database local initModDB = common.New("ModDB") @@ -3376,8 +65,8 @@ local function getCalculator(build, fullInit, modFunc) initEnemyDB.multipliers = copyTable(env.enemyDB.multipliers) -- Run base calculation pass - performCalcs(env) - local baseOutput = env.output + calcs.perform(env) + local baseOutput = env.player.output return function(...) -- Restore initial mod database @@ -3394,19 +83,17 @@ local function getCalculator(build, fullInit, modFunc) modFunc(env, ...) -- Run calculation pass - performCalcs(env) + calcs.perform(env) - return env.output + return env.player.output end, baseOutput end -local calcs = { } - -- Get fast calculator for adding tree node modifiers function calcs.getNodeCalculator(build) return getCalculator(build, true, function(env, nodeList) -- Build and merge modifiers for these nodes - env.modDB:AddList(buildNodeModList(env, nodeList)) + env.modDB:AddList(calcs.buildNodeModList(env, nodeList)) --[[local nodeModList = buildNodeModList(env, nodeList) if remove then for _, mod in ipairs(nodeModList) do @@ -3432,24 +119,24 @@ end -- Get calculator for other changes (adding/removing nodes, items, gems, etc) function calcs.getMiscCalculator(build) -- Run base calculation pass - local env = initEnv(build, "CALCULATOR") - performCalcs(env) - local baseOutput = env.output + local env = calcs.initEnv(build, "CALCULATOR") + calcs.perform(env) + local baseOutput = env.player.output return function(override) - env = initEnv(build, "CALCULATOR", override) - performCalcs(env) - return env.output + env = calcs.initEnv(build, "CALCULATOR", override) + calcs.perform(env) + return env.player.output end, baseOutput end -- Build output for display in the side bar or calcs tab function calcs.buildOutput(build, mode) -- Build output - local env = initEnv(build, mode) - performCalcs(env) + local env = calcs.initEnv(build, mode) + calcs.perform(env) - local output = env.output + local output = env.player.output if mode == "MAIN" then output.ExtraPoints = env.modDB:Sum("BASE", nil, "ExtraPoints") @@ -3463,30 +150,50 @@ function calcs.buildOutput(build, mode) output["Spec:EvasionInc"] = env.modDB:Sum("INC", specCfg, "Evasion", "ArmourAndEvasion") output["Spec:EnergyShieldInc"] = env.modDB:Sum("INC", specCfg, "EnergyShield") - env.conditionsUsed = { } - local function addCond(var, mod) - if not env.conditionsUsed[var] then - env.conditionsUsed[var] = { } - end - t_insert(env.conditionsUsed[var], mod) + env.skillsUsed = { } + for _, activeSkill in ipairs(env.activeSkillList) do + env.skillsUsed[activeSkill.activeGem.name] = true end - for _, db in ipairs{env.modDB, env.enemyDB} do - for modName, modList in pairs(db.mods) do + + env.conditionsUsed = { } + env.enemyConditionsUsed = { } + local function addCond(out, var, mod) + if not out[var] then + out[var] = { } + end + t_insert(out[var], mod) + end + local function addTag(out, tag, mod) + if tag.varList then + for _, var in ipairs(tag.varList) do + addCond(out, var, mod) + end + else + addCond(out, tag.var, mod) + end + end + for _, actor in ipairs({env.player, env.minion}) do + for modName, modList in pairs(actor.modDB.mods) do for _, mod in ipairs(modList) do for _, tag in ipairs(mod.tagList) do - if tag.type == "Condition" then - if tag.varList then - for _, var in ipairs(tag.varList) do - addCond(var, mod) - end - else - addCond(tag.var, mod) - end + if tag.type == "Condition" and actor == env.player then + addTag(env.conditionsUsed, tag, mod) + elseif tag.type == "EnemyCondition" then + addTag(env.enemyConditionsUsed, tag, mod) end end end end end + for modName, modList in pairs(env.enemyDB.mods) do + for _, mod in ipairs(modList) do + for _, tag in ipairs(mod.tagList) do + if tag.type == "Condition" then + addTag(env.enemyConditionsUsed, tag, mod) + end + end + end + end elseif mode == "CALCS" then local buffList = { } local combatList = { } @@ -3528,6 +235,20 @@ function calcs.buildOutput(build, mode) output.BuffList = table.concat(buffList, ", ") output.CombatList = table.concat(combatList, ", ") output.CurseList = table.concat(curseList, ", ") + if env.minion then + local buffList = { } + for _, activeSkill in ipairs(env.activeSkillList) do + if activeSkill.minionBuffSkill then + if activeSkill.skillFlags.multiPart then + t_insert(buffList, activeSkill.activeGem.name .. " (" .. activeSkill.skillPartName .. ")") + else + t_insert(buffList, activeSkill.activeGem.name) + end + end + end + output.Minion.BuffList = table.concat(buffList, ", ") + output.Minion.CurseList = output.CurseList + end infoDump(env) end diff --git a/Modules/Common.lua b/Modules/Common.lua index e72c4cec..02d4cd34 100644 --- a/Modules/Common.lua +++ b/Modules/Common.lua @@ -6,6 +6,7 @@ local pairs = pairs local ipairs = ipairs +local t_insert = table.insert local m_abs = math.abs local m_floor = math.floor local m_min = math.min @@ -185,6 +186,23 @@ function isValueInArray(tbl, val) end end +-- Pretty-prints a table +function prettyPrintTable(tbl, pre) + pre = pre or "" + local outNames = { } + for name in pairs(tbl) do + t_insert(outNames, name) + end + table.sort(outNames) + for _, name in ipairs(outNames) do + if type(tbl[name]) == "table" then + prettyPrintTable(tbl[name], pre .. name .. ".") + else + ConPrintf("%s%s = %s", pre, name, tostring(tbl[name])) + end + end +end + -- Rounds a number to the nearest decimal places function round(val, dec) if dec then diff --git a/Modules/Data.lua b/Modules/Data.lua index 338edc09..1d3ac6a3 100644 --- a/Modules/Data.lua +++ b/Modules/Data.lua @@ -138,8 +138,8 @@ data.labyrinths = { { name = "NORMAL", label = "Normal" }, } -data.gems = { } -local function makeGemMod(modName, modType, modVal, flags, keywordFlags, ...) +data.skills = { } +local function makeSkillMod(modName, modType, modVal, flags, keywordFlags, ...) return { name = modName, type = modType, @@ -150,32 +150,75 @@ local function makeGemMod(modName, modType, modVal, flags, keywordFlags, ...) } end local function makeFlagMod(modName) - return makeGemMod(modName, "FLAG", true) + return makeSkillMod(modName, "FLAG", true) end -local function makeSkillMod(dataKey, dataValue, ...) - return makeGemMod("Misc", "LIST", { type = "SkillData", key = dataKey, value = dataValue }, 0, 0, ...) +local function makeSkillDataMod(dataKey, dataValue, ...) + return makeSkillMod("Misc", "LIST", { type = "SkillData", key = dataKey, value = dataValue }, 0, 0, ...) end -local gemTypes = { +local skillTypes = { "act_str", "act_dex", "act_int", "other", + "minion", + "spectre", "sup_str", "sup_dex", "sup_int", } -for _, type in pairs(gemTypes) do - LoadModule("Data/Gems/"..type, data.gems, makeGemMod, makeFlagMod, makeSkillMod) +for _, type in pairs(skillTypes) do + LoadModule("Data/Skills/"..type, data.skills, makeSkillMod, makeFlagMod, makeSkillDataMod) end -for gemName, gemData in pairs(data.gems) do - -- Add sources for gem mods - for _, list in pairs({gemData.baseMods, gemData.qualityMods, gemData.levelMods}) do +for skillId, skillData in pairs(data.skills) do + skillData.id = skillId + -- Add sources for skill mods + for _, list in pairs({skillData.baseMods, skillData.qualityMods, skillData.levelMods}) do for _, mod in pairs(list) do - mod.source = "Skill:"..gemName + if mod[1] then + for _, mod in ipairs(mod) do + mod.source = "Skill:"..skillId + if type(mod.value) == "table" and mod.value.mod then + mod.value.mod.source = "Skill:"..skillId + end + end + else + mod.source = "Skill:"..skillId + if type(mod.value) == "table" and mod.value.mod then + mod.value.mod.source = "Skill:"..skillId + end + end end end end +data.gems = { } +for _, skillData in pairs(data.skills) do + if skillData.gemTags then + data.gems[skillData.name] = skillData + end +end + +data.minions = { } +LoadModule("Data/Minions", data.minions, makeSkillMod) +data.spectres = { } +LoadModule("Data/Spectres", data.spectres, makeSkillMod) +for name, spectre in pairs(data.spectres) do + spectre.limit = "ActiveSpectreLimit" + data.minions[name] = spectre +end +local missing = { } +for _, minion in pairs(data.minions) do + for _, skillId in ipairs(minion.skillList) do + if not data.skills[skillId] and not missing[skillId] then + ConPrintf("'%s' missing skill '%s'", minion.name, skillId) + missing[skillId] = true + end + end + for _, mod in ipairs(minion.modList) do + mod.source = "Minion:"..minion.name + end +end + data.colorCodes = { NORMAL = "^xC8C8C8", MAGIC = "^x8888FF", @@ -222,6 +265,7 @@ data.jewelRadius = { data.monsterEvasionTable = { 36, 42, 49, 56, 64, 72, 80, 89, 98, 108, 118, 128, 140, 151, 164, 177, 190, 204, 219, 235, 251, 268, 286, 305, 325, 345, 367, 389, 412, 437, 463, 489, 517, 546, 577, 609, 642, 676, 713, 750, 790, 831, 873, 918, 964, 1013, 1063, 1116, 1170, 1227, 1287, 1349, 1413, 1480, 1550, 1623, 1698, 1777, 1859, 1944, 2033, 2125, 2221, 2321, 2425, 2533, 2645, 2761, 2883, 3009, 3140, 3276, 3418, 3565, 3717, 3876, 4041, 4213, 4391, 4576, 4768, 4967, 5174, 5389, 5613, 5845, 6085, 6335, 6595, 6864, 7144, 7434, 7735, 8048, 8372, 8709, 9058, 9420, 9796, 10186, } data.monsterAccuracyTable = { 18, 19, 20, 21, 23, 24, 25, 27, 28, 30, 31, 33, 35, 36, 38, 40, 42, 44, 46, 49, 51, 54, 56, 59, 62, 65, 68, 71, 74, 78, 81, 85, 89, 93, 97, 101, 106, 111, 116, 121, 126, 132, 137, 143, 149, 156, 162, 169, 177, 184, 192, 200, 208, 217, 226, 236, 245, 255, 266, 277, 288, 300, 312, 325, 338, 352, 366, 381, 396, 412, 428, 445, 463, 481, 500, 520, 540, 562, 584, 607, 630, 655, 680, 707, 734, 762, 792, 822, 854, 887, 921, 956, 992, 1030, 1069, 1110, 1152, 1196, 1241, 1288, } data.monsterLifeTable = { 15, 17, 20, 23, 26, 30, 33, 37, 41, 46, 50, 55, 60, 66, 71, 77, 84, 91, 98, 105, 113, 122, 131, 140, 150, 161, 171, 183, 195, 208, 222, 236, 251, 266, 283, 300, 318, 337, 357, 379, 401, 424, 448, 474, 501, 529, 559, 590, 622, 656, 692, 730, 769, 810, 853, 899, 946, 996, 1048, 1102, 1159, 1219, 1281, 1346, 1415, 1486, 1561, 1640, 1722, 1807, 1897, 1991, 2089, 2192, 2299, 2411, 2528, 2651, 2779, 2913, 3053, 3199, 3352, 3511, 3678, 3853, 4035, 4225, 4424, 4631, 4848, 5074, 5310, 5557, 5815, 6084, 6364, 6658, 6964, 7283, } +data.monsterDamageTable = { 5, 6, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 26, 28, 30, 32, 34, 36, 39, 41, 44, 47, 50, 53, 56, 59, 63, 67, 71, 75, 80, 84, 89, 94, 100, 106, 112, 118, 125, 131, 139, 147, 155, 163, 172, 181, 191, 202, 212, 224, 236, 248, 262, 275, 290, 305, 321, 338, 355, 374, 393, 413, 434, 456, 480, 504, 530, 556, 584, 614, 645, 677, 711, 746, 783, 822, 862, 905, 949, 996, 1045, 1096, 1149, 1205, 1264, 1325, 1390, 1457, 1527, 1601, 1678, 1758, } -- From MonsterVarieties.dat combined with SkillTotemVariations.dat data.totemLifeMult = { [1] = 2.94, [2] = 2.94, [3] = 2.94, [4] = 2.94, [5] = 2.94, [6] = 4.2, [7] = 2.94, [8] = 2.94, [9] = 2.94, [10] = 2.94, [11] = 2.94, [12] = 2.94, [13] = 4.5, [15] = 4.5, } diff --git a/Modules/Main.lua b/Modules/Main.lua index 5b18af6f..0b6b7bb4 100644 --- a/Modules/Main.lua +++ b/Modules/Main.lua @@ -16,6 +16,7 @@ LoadModule("Modules/Common") LoadModule("Modules/Data", launch) LoadModule("Modules/ModTools") LoadModule("Modules/ItemTools") +LoadModule("Modules/CalcTools") LoadModule("Classes/ControlHost") @@ -41,6 +42,7 @@ local classList = { -- Mode: Build "ModList", "ModDB", + "MinionListControl", "ImportTab", "NotesTab", "ConfigTab", @@ -190,7 +192,7 @@ function main:Init() common.New("TextListControl", nil, 0, 100, 630, 290, nil, changeList), }) end) - self.controls.devMode = common.New("LabelControl", {"BOTTOMLEFT",self.anchorUpdate,"BOTTOMLEFT"}, 0, 0, 0, 18, "^1Dev Mode") + self.controls.devMode = common.New("LabelControl", {"BOTTOMLEFT",self.anchorUpdate,"BOTTOMLEFT"}, 0, 0, 0, 18, "^1EXPERIMENTAL") self.controls.devMode.shown = function() return launch.devMode end diff --git a/Modules/ModParser.lua b/Modules/ModParser.lua index c2519ea2..3e8f3edf 100644 --- a/Modules/ModParser.lua +++ b/Modules/ModParser.lua @@ -32,6 +32,7 @@ local formList = { ["^([%d%.]+) (.+) regenerated per second"] = "REGENFLAT", ["^([%d%.]+)%% of (.+) regenerated per second"] = "REGENPERCENT", ["^regenerate ([%d%.]+) (.+) per second"] = "REGENFLAT", + ["^regenerate ([%d%.]+)%% (.+) per second"] = "REGENPERCENT", ["^regenerate ([%d%.]+)%% of (.+) per second"] = "REGENPERCENT", ["(%d+) to (%d+) additional (%a+) damage"] = "DMG", ["adds (%d+)%-(%d+) (%a+) damage"] = "DMG", @@ -98,6 +99,15 @@ local modNameList = { ["all resistances"] = { "ElementalResist", "ChaosResist" }, ["all maximum elemental resistances"] = { "FireResistMax", "ColdResistMax", "LightningResistMax" }, ["all maximum resistances"] = { "FireResistMax", "ColdResistMax", "LightningResistMax", "ChaosResistMax" }, + -- Damage taken + ["damage taken"] = "DamageTaken", + ["physical damage taken"] = "PhysicalDamageTaken", + ["lightning damage taken"] = "LightningDamageTaken", + ["cold damage taken"] = "ColdDamageTaken", + ["fire damage taken"] = "FireDamageTaken", + ["chaos damage taken"] = "ChaosDamageTaken", + ["elemental damage taken"] = "ElementalDamageTaken", + ["damage taken from damage over time"] = "DotTaken", -- Other defences ["to dodge attacks"] = "AttackDodgeChance", ["to dodge spells"] = "SpellDodgeChance", @@ -105,9 +115,12 @@ local modNameList = { ["to block"] = "BlockChance", ["to block attacks"] = "BlockChance", ["block chance"] = "BlockChance", + ["block chance with staves"] = { "BlockChance", tag = { type = "Condition", var = "UsingStaff" } }, + ["to block with staves"] = { "BlockChance", tag = { type = "Condition", var = "UsingStaff" } }, ["to block spells"] = "SpellBlockChance", ["chance to block attacks and spells"] = { "BlockChance", "SpellBlockChance" }, ["maximum block chance"] = "BlockChanceMax", + ["block chance applied to spells"] = "BlockChanceConv", ["to avoid being stunned"] = "AvoidStun", ["to avoid being shocked"] = "AvoidShock", ["to avoid being frozen"] = "AvoidFrozen", @@ -124,22 +137,25 @@ local modNameList = { ["enemy stun threshold"] = "EnemyStunThreshold", ["stun duration on enemies"] = "EnemyStunDuration", ["stun duration"] = "EnemyStunDuration", - -- Auras/curses + -- Auras/curses/buffs ["aura effect"] = "AuraEffect", ["effect of non-curse auras you cast"] = "AuraEffect", ["effect of your curses"] = "CurseEffect", + ["effect of auras on you"] = "AuraEffectOnSelf", + ["effect of auras on your minions"] = { "AuraEffectOnSelf", addToMinion = true }, ["curse effect"] = "CurseEffect", ["curse duration"] = { "Duration", keywordFlags = KeywordFlag.Curse }, ["radius of auras"] = { "AreaOfEffect", keywordFlags = KeywordFlag.Aura }, ["radius of curses"] = { "AreaOfEffect", keywordFlags = KeywordFlag.Curse }, ["buff effect"] = "BuffEffect", - ["effect of buffs on you"] = "BuffEffect", + ["effect of buffs on you"] = "BuffEffectOnSelf", ["effect of buffs granted by your golems"] = { "BuffEffect", tag = { type = "SkillType", skillType = SkillType.Golem } }, ["effect of the buff granted by your stone golems"] = { "BuffEffect", tag = { type = "SkillName", skillName = "Summon Stone Golem" } }, ["effect of the buff granted by your lightning golems"] = { "BuffEffect", tag = { type = "SkillName", skillName = "Summon Lightning Golem" } }, ["effect of the buff granted by your ice golems"] = { "BuffEffect", tag = { type = "SkillName", skillName = "Summon Ice Golem" } }, ["effect of the buff granted by your flame golems"] = { "BuffEffect", tag = { type = "SkillName", skillName = "Summon Flame Golem" } }, ["effect of the buff granted by your chaos golems"] = { "BuffEffect", tag = { type = "SkillName", skillName = "Summon Chaos Golem" } }, + ["effect of offering spells"] = { "BuffEffect", tag = { type = "SkillName", skillNameList = { "Bone Offering", "Flesh Offering", "Spirit Offering" } } }, ["warcry effect"] = { "BuffEffect", keywordFlags = KeywordFlag.Warcry }, -- Charges ["maximum power charge"] = "PowerChargesMax", @@ -164,6 +180,7 @@ local modNameList = { ["energy shield gained for each enemy hit by attacks"] = { "EnergyShieldOnHit", flags = ModFlag.Attack }, ["energy shield gained for each enemy hit by your attacks"] = { "EnergyShieldOnHit", flags = ModFlag.Attack }, ["life and mana gained for each enemy hit"] = { "LifeOnHit", "ManaOnHit", flags = ModFlag.Attack }, + ["damage as life"] = "DamageLifeLeech", ["life leeched per second"] = "LifeLeechRate", ["mana leeched per second"] = "ManaLeechRate", ["maximum life per second to maximum life leech rate"] = "MaxLifeLeechRate", @@ -187,6 +204,13 @@ local modNameList = { ["mine laying speed"] = "MineLayingSpeed", ["mine detonation area of effect"] = "MineDetonationAreaOfEffect", ["mine duration"] = "MineDuration", + -- Minion modifiers + ["maximum number of skeletons"] = "ActiveSkeletonLimit", + ["maximum number of zombies"] = "ActiveZombieLimit", + ["number of zombies allowed"] = "ActiveZombieLimit", + ["maximum number of spectres"] = "ActiveSpectreLimit", + ["maximum number of golems"] = "ActiveGolemLimit", + ["skeleton duration"] = { "Duration", tag = { type = "SkillName", skillName = "Summon Skeletons" } }, -- Other skill modifiers ["radius"] = "AreaOfEffect", ["radius of area skills"] = "AreaOfEffect", @@ -196,6 +220,7 @@ local modNameList = { ["duration"] = "Duration", ["skill effect duration"] = "Duration", ["chaos skill effect duration"] = { "Duration", keywordFlags = KeywordFlag.Chaos }, + ["cooldown recovery"] = "CooldownRecovery", ["cooldown recovery speed"] = "CooldownRecovery", -- Buffs ["onslaught effect"] = "OnslaughtEffect", @@ -254,6 +279,7 @@ local modNameList = { ["bleed duration"] = { "Duration", keywordFlags = KeywordFlag.Bleed }, -- Misc modifiers ["movement speed"] = "MovementSpeed", + ["attack, cast and movement speed"] = { "Speed", "MovementSpeed" }, ["light radius"] = "LightRadius", ["rarity of items found"] = "LootRarity", ["quantity of items found"] = "LootQuantity", @@ -315,8 +341,8 @@ local modFlagList = { ["for traps"] = { keywordFlags = KeywordFlag.Trap }, ["totem"] = { keywordFlags = KeywordFlag.Totem }, ["with totem skills"] = { keywordFlags = KeywordFlag.Totem }, - ["minion"] = { keywordFlags = KeywordFlag.Minion }, - ["of aura skills"] = { keywordFlags = KeywordFlag.Aura }, + ["for skills used by totems"] = { keywordFlags = KeywordFlag.Totem }, + ["of aura skills"] = { tag = { type = "SkillType", skillType = SkillType.Aura } }, ["of curse skills"] = { keywordFlags = KeywordFlag.Curse }, ["for curses"] = { keywordFlags = KeywordFlag.Curse }, ["warcry"] = { keywordFlags = KeywordFlag.Warcry }, @@ -328,6 +354,15 @@ local modFlagList = { ["with fire skills"] = { keywordFlags = KeywordFlag.Fire }, ["with elemental skills"] = { keywordFlags = bor(KeywordFlag.Lightning, KeywordFlag.Cold, KeywordFlag.Fire) }, ["with chaos skills"] = { keywordFlags = KeywordFlag.Chaos }, + ["zombie"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Zombie" } }, + ["raised zombie"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Zombie" } }, + ["raised spectre"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Spectre" } }, + ["chaos golem"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Chaos Golem" } }, + ["flame golem"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Flame Golem" } }, + ["increased flame golem"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Flame Golem" } }, + ["ice golem"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Ice Golem" } }, + ["lightning golem"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Lightning Golem" } }, + ["stone golem"] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Stone Golem" } }, -- Other ["global"] = { tag = { type = "Global" } }, ["from equipped shield"] = { tag = { type = "SlotName", slotName = "Weapon 2" } }, @@ -337,8 +372,23 @@ local modFlagList = { local preFlagList = { ["^hits deal "] = { flags = ModFlag.Hit }, ["^critical strikes deal "] = { tag = { type = "Condition", var = "CriticalStrike" } }, - ["^minions have "] = { keywordFlags = KeywordFlag.Minion }, - ["^minions deal "] = { keywordFlags = KeywordFlag.Minion }, + ["^minions "] = { addToMinion = true }, + ["^minions [hd][ae][va][el] "] = { addToMinion = true }, + ["^minions leech "] = { addToMinion = true }, + ["^minions' attacks deal "] = { addToMinion = true, flags = ModFlag.Attack }, + ["^golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillType", skillType = SkillType.Golem } }, + ["^golem skills have "] = { tag = { type = "SkillType", skillType = SkillType.Golem } }, + ["^zombies [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Zombie" } }, + ["^skeletons [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Skeletons" } }, + ["^raging spirits [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Raging Spirit" } }, + ["^spectres [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Spectre" } }, + ["^chaos golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Chaos Golem" } }, + ["^flame golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Flame Golem" } }, + ["^ice golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Ice Golem" } }, + ["^lightning golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Lightning Golem" } }, + ["^stone golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Stone Golem" } }, + ["^blink arrow and blink arrow clones [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Blink Arrow" } }, + ["^mirror arrow and mirror arrow clones [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Mirror Arrow" } }, ["^attacks used by totems have "] = { keywordFlags = KeywordFlag.Totem }, ["^spells cast by totems have "] = { keywordFlags = KeywordFlag.Totem }, ["^attacks with this weapon "] = { tag = { type = "Condition", var = "XHandAttack" } }, @@ -354,10 +404,11 @@ local preFlagList = { ["^socketed golem gems have "] = { tag = { type = "SocketedIn", keyword = "golem" } }, ["^your flasks grant "] = { }, ["^when hit, "] = { }, + ["^you and allies [hgd][ae][via][enl] "] = { }, ["^auras you cast grant "] = { addToAura = true }, - ["^you and nearby allies have "] = { }, - ["^you and nearby allies gain "] = { }, - ["^you and allies affected by your auras have "] = { tag = { type = "Condition", var = "HaveAuraActive" } }, + ["^you and nearby allies [hgd][ae][via][enl] "] = { newAura = true }, + ["^nearby allies [hgd][ae][via][enl] "] = { newAura = true, newAuraOnlyAllies = true }, + ["^you and allies affected by your auras have "] = { affectedByAura = true }, } -- List of modifier tags @@ -365,6 +416,7 @@ local modTagList = { ["on enemies"] = { }, ["while active"] = { }, [" on critical strike"] = { tag = { type = "Condition", var = "CriticalStrike" } }, + ["while affected by auras you cast"] = { affectedByAura = true }, -- Multipliers ["per power charge"] = { tag = { type = "Multiplier", var = "PowerCharge" } }, ["per frenzy charge"] = { tag = { type = "Multiplier", var = "FrenzyCharge" } }, @@ -400,6 +452,7 @@ local modTagList = { ["with shields"] = { tag = { type = "Condition", var = "UsingShield" } }, ["while dual wielding"] = { tag = { type = "Condition", var = "DualWielding" } }, ["while dual wielding claws"] = { tag = { type = "Condition", var = "DualWieldingClaws" } }, + ["while dual wielding or holding a shield"] = { tag = { type = "Condition", varList = { "DualWielding", "UsingShield" } } }, ["while wielding a staff"] = { tag = { type = "Condition", var = "UsingStaff" } }, ["while unarmed"] = { tag = { type = "Condition", var = "Unarmed" } }, ["with a normal item equipped"] = { tag = { type = "Condition", var = "UsingNormalItem" } }, @@ -410,14 +463,12 @@ local modTagList = { ["if no worn items are corrupted"] = { tag = { type = "Condition", var = "NotUsingCorruptedItem" } }, ["if all worn items are corrupted"] = { tag = { type = "Condition", var = "UsingAllCorruptedItems" } }, -- Player status conditions - ["when on low life"] = { tag = { type = "Condition", var = "LowLife" } }, - ["while on low life"] = { tag = { type = "Condition", var = "LowLife" } }, - ["when not on low life"] = { tag = { type = "Condition", var = "LowLife", neg = true } }, - ["while not on low life"] = { tag = { type = "Condition", var = "LowLife", neg = true } }, - ["when on full life"] = { tag = { type = "Condition", var = "FullLife" } }, - ["when not on full life"] = { tag = { type = "Condition", var = "FullLife", neg = true } }, - ["while no mana is reserved"] = { tag = { type = "Condition", var = "NoManaReserved" } }, - ["while on full energy shield"] = { tag = { type = "Condition", var = "FullEnergyShield" } }, + ["wh[ie][ln]e? on low life"] = { tag = { type = "Condition", var = "LowLife" } }, + ["wh[ie][ln]e? not on low life"] = { tag = { type = "Condition", var = "LowLife", neg = true } }, + ["wh[ie][ln]e? on full life"] = { tag = { type = "Condition", var = "FullLife" } }, + ["wh[ie][ln]e? not on full life"] = { tag = { type = "Condition", var = "FullLife", neg = true } }, + ["wh[ie][ln]e? no mana is reserved"] = { tag = { type = "Condition", var = "NoManaReserved" } }, + ["wh[ie][ln]e? on full energy shield"] = { tag = { type = "Condition", var = "FullEnergyShield" } }, ["while you have no power charges"] = { tag = { type = "Condition", var = "HaveNoPowerCharges" } }, ["while you have no frenzy charges"] = { tag = { type = "Condition", var = "HaveNoFrenzyCharges" } }, ["while you have no endurance charges"] = { tag = { type = "Condition", var = "HaveNoEnduranceCharges" } }, @@ -437,9 +488,9 @@ local modTagList = { ["on burning ground"] = { tag = { type = "Condition", var = "OnBurningGround" } }, ["on chilled ground"] = { tag = { type = "Condition", var = "OnChilledGround" } }, ["on shocked ground"] = { tag = { type = "Condition", var = "OnShockedGround" } }, - ["while ignited"] = { tag = { type = "Condition", var = "PlayerIgnited" } }, - ["while frozen"] = { tag = { type = "Condition", var = "PlayerFrozen" } }, - ["while shocked"] = { tag = { type = "Condition", var = "PlayerShocked" } }, + ["while ignited"] = { tag = { type = "Condition", var = "Ignited" } }, + ["while frozen"] = { tag = { type = "Condition", var = "Frozen" } }, + ["while shocked"] = { tag = { type = "Condition", var = "Shocked" } }, ["if you have hit recently"] = { tag = { type = "Condition", var = "HitRecently" } }, ["if you've crit recently"] = { tag = { type = "Condition", var = "CritRecently" } }, ["if you've dealt a critical strike recently"] = { tag = { type = "Condition", var = "CritRecently" } }, @@ -455,7 +506,7 @@ local modTagList = { ["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've taken a savage hit recently"] = { tag = { type = "Condition", var = "BeenSavageHitRecently" } }, - ["if you haven't been hit recently"] = { tag = { type = "Condition", var = "BeenHitRecently", neg = true } }, + ["if you have ?n[o']t been hit recently"] = { tag = { type = "Condition", var = "BeenHitRecently", neg = true } }, ["if you've taken no damage from hits recently"] = { tag = { type = "Condition", var = "BeenHitRecently", neg = true } }, ["if you[' ]h?a?ve blocked recently"] = { tag = { type = "Condition", varList = { "BlockedAttackRecently", "BlockedSpellRecently" } } }, ["if you've blocked an attack recently"] = { tag = { type = "Condition", var = "BlockedAttackRecently" } }, @@ -465,6 +516,7 @@ local modTagList = { ["if you've cast a spell recently"] = { tag = { type = "Condition", var = "CastSpellRecently" } }, ["if you have consumed a corpse recently"] = { tag = { type = "Condition", var = "ConsumedCorpseRecently" } }, ["if you've taunted an enemy recently"] = { tag = { type = "Condition", var = "TauntedEnemyRecently" } }, + ["if you've used a warcry recently"] = { tag = { type = "Condition", var = "UsedWarcryRecently" } }, ["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" } }, @@ -475,27 +527,27 @@ local modTagList = { ["if energy shield recharge has started recently"] = { tag = { type = "Condition", var = "EnergyShieldRechargeRecently" } }, -- Enemy status conditions ["at close range"] = { tag = { type = "Condition", var = "AtCloseRange" }, flags = ModFlag.Hit }, - ["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 rare and unique enemies"] = { tag = { type = "Condition", var = "EnemyRareOrUnique" }, flags = ModFlag.Hit }, - ["against cursed enemies"] = { tag = { type = "Condition", var = "EnemyCursed" }, flags = ModFlag.Hit }, - ["against taunted enemies"] = { tag = { type = "Condition", var = "EnemyTaunted" }, 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 hindered enemies"] = { tag = { type = "Condition", var = "EnemyHindered" }, flags = ModFlag.Hit }, - ["against blinded enemies"] = { tag = { type = "Condition", var = "EnemyBlinded" }, flags = ModFlag.Hit }, - ["against burning enemies"] = { tag = { type = "Condition", var = "EnemyBurning" }, flags = ModFlag.Hit }, - ["against ignited enemies"] = { tag = { type = "Condition", var = "EnemyIgnited" }, flags = ModFlag.Hit }, - ["against shocked enemies"] = { tag = { type = "Condition", var = "EnemyShocked" }, flags = ModFlag.Hit }, - ["against frozen enemies"] = { tag = { type = "Condition", var = "EnemyFrozen" }, flags = ModFlag.Hit }, - ["against chilled enemies"] = { tag = { type = "Condition", var = "EnemyChilled" }, flags = ModFlag.Hit }, - ["enemies which are chilled"] = { tag = { type = "Condition", var = "EnemyChilled" }, flags = ModFlag.Hit }, - ["against frozen, shocked or ignited enemies"] = { tag = { type = "Condition", varList = {"EnemyFrozen","EnemyShocked","EnemyIgnited"} }, flags = ModFlag.Hit }, - ["against enemies affected by elemental status ailments"] = { tag = { type = "Condition", varList = {"EnemyFrozen","EnemyChilled","EnemyShocked","EnemyIgnited"} }, flags = ModFlag.Hit }, - ["against enemies that are affected by elemental status ailments"] = { tag = { type = "Condition", varList = {"EnemyFrozen","EnemyChilled","EnemyShocked","EnemyIgnited"} }, flags = ModFlag.Hit }, - ["against enemies that are affected by no elemental status ailments"] = { tagList = { { type = "Condition", varList = {"EnemyFrozen","EnemyChilled","EnemyShocked","EnemyIgnited"}, neg = true }, { type = "Condition", var = "Effective" } }, flags = ModFlag.Hit }, + ["against enemies on full life"] = { tag = { type = "EnemyCondition", var = "FullLife" }, flags = ModFlag.Hit }, + ["against enemies that are on full life"] = { tag = { type = "EnemyCondition", var = "FullLife" }, flags = ModFlag.Hit }, + ["against enemies on low life"] = { tag = { type = "EnemyCondition", var = "LowLife" }, flags = ModFlag.Hit }, + ["against enemies that are on low life"] = { tag = { type = "EnemyCondition", var = "LowLife" }, flags = ModFlag.Hit }, + ["against cursed enemies"] = { tag = { type = "EnemyCondition", var = "Cursed" }, flags = ModFlag.Hit }, + ["against taunted enemies"] = { tag = { type = "EnemyCondition", var = "Taunted" }, flags = ModFlag.Hit }, + ["against bleeding enemies"] = { tag = { type = "EnemyCondition", var = "Bleeding" }, flags = ModFlag.Hit }, + ["against poisoned enemies"] = { tag = { type = "EnemyCondition", var = "Poisoned" }, flags = ModFlag.Hit }, + ["against hindered enemies"] = { tag = { type = "EnemyCondition", var = "Hindered" }, flags = ModFlag.Hit }, + ["against blinded enemies"] = { tag = { type = "EnemyCondition", var = "Blinded" }, flags = ModFlag.Hit }, + ["against burning enemies"] = { tag = { type = "EnemyCondition", var = "Burning" }, flags = ModFlag.Hit }, + ["against ignited enemies"] = { tag = { type = "EnemyCondition", var = "Ignited" }, flags = ModFlag.Hit }, + ["against shocked enemies"] = { tag = { type = "EnemyCondition", var = "Shocked" }, flags = ModFlag.Hit }, + ["against frozen enemies"] = { tag = { type = "EnemyCondition", var = "Frozen" }, flags = ModFlag.Hit }, + ["against chilled enemies"] = { tag = { type = "EnemyCondition", var = "Chilled" }, flags = ModFlag.Hit }, + ["enemies which are chilled"] = { tag = { type = "EnemyCondition", var = "Chilled" }, flags = ModFlag.Hit }, + ["against frozen, shocked or ignited enemies"] = { tag = { type = "EnemyCondition", varList = {"Frozen","Shocked","Ignited"} }, flags = ModFlag.Hit }, + ["against enemies affected by elemental status ailments"] = { tag = { type = "EnemyCondition", varList = {"Frozen","Chilled","Shocked","Ignited"} }, flags = ModFlag.Hit }, + ["against enemies that are affected by elemental status ailments"] = { tag = { type = "EnemyCondition", varList = {"Frozen","Chilled","Shocked","Ignited"} }, flags = ModFlag.Hit }, + ["against enemies that are affected by no elemental status ailments"] = { tagList = { { type = "EnemyCondition", varList = {"Frozen","Chilled","Shocked","Ignited"}, neg = true }, { type = "Condition", var = "Effective" } }, flags = ModFlag.Hit }, } local mod = modLib.createMod @@ -504,8 +556,12 @@ local function flag(name, ...) end local gemNameLookup = { } -for name in pairs(data.gems) do - gemNameLookup[name:lower()] = name +for name, data in pairs(data.skills) do + if not data.hidden then + gemNameLookup[data.name:lower()] = data.name + elseif data.other then + gemNameLookup[data.name:lower()] = data.id + end end -- List of special modifiers @@ -536,6 +592,8 @@ local specialModList = { end, ["projectile attacks deal up to 50%% more damage to targets at the start of their movement, dealing less damage to targets as the projectile travels farther"] = { flag("PointBlank") }, ["life leech is applied to energy shield instead"] = { flag("GhostReaver") }, + ["minions explode when reduced to low life, dealing 33%% of their maximum life as fire damage to surrounding enemies"] = { flag("MinionInstability") }, + ["all bonuses from an equipped shield apply to your minions instead of you"] = { }, -- The node itself is detected by the code that handles it -- Ascendancy notables ["movement skills cost no mana"] = { mod("ManaCost", "MORE", -100, nil, 0, KeywordFlag.Movement) }, ["projectiles have (%d+)%% additional chance to pierce targets at the start of their movement, losing this chance as the projectile travels farther"] = function(num) return { mod("PierceChance", "BASE", num, { type = "DistanceRamp", ramp = {{10,1},{120,0}} }) } end, @@ -562,17 +620,18 @@ local specialModList = { ["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, - ["grants armour equal to (%d+)%% of your reserved life to you and nearby allies"] = function(num) return { mod("Armour", "BASE", num/100, { type = "PerStat", stat = "LifeReserved", div = 1 }) } end, - ["grants maximum energy shield equal to (%d+)%% of your reserved mana to you and nearby allies"] = function(num) return { mod("EnergyShield", "BASE", num/100, { type = "PerStat", stat = "ManaReserved", div = 1 }) } end, - ["you and nearby allies deal (%d+)%% increased damage"] = function(num) return { mod("Damage", "INC", num) } end, - ["you and nearby allies have (%d+)%% increased movement speed"] = function(num) return { mod("MovementSpeed", "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, + ["grants armour equal to (%d+)%% of your reserved life to you and nearby allies"] = function(num) return { mod("GrantReservedLifeAsAura", "LIST", { mod = mod("Armour", "BASE", num / 100) }) } end, + ["grants maximum energy shield equal to (%d+)%% of your reserved mana to you and nearby allies"] = function(num) return { mod("GrantReservedManaAsAura", "LIST", { mod = mod("EnergyShield", "BASE", num / 100) }) } end, ["skills from your helmet penetrate (%d+)%% elemental resistances"] = function(num) return { mod("ElementalPenetration", "BASE", num, { type = "SocketedIn", slotName = "Helmet" }) } end, ["skills from your gloves have (%d+)%% increased area of effect"] = function(num) return { mod("AreaOfEffect", "INC", num, { type = "SocketedIn", slotName = "Gloves" }) } end, ["skills from your boots leech (%d+)%% of damage as life"] = function(num) return { mod("DamageLifeLeech", "BASE", num, { type = "SocketedIn", slotName = "Boots" }) } end, ["(%d+)%% less totem damage per totem"] = function(num) return { mod("Damage", "MORE", -num, nil, 0, KeywordFlag.Totem, { type = "PerStat", stat = "ActiveTotemLimit", div = 1 }) } end, ["poison you inflict with critical strikes deals (%d+)%% more damage"] = function(num) return { mod("PoisonDamageOnCrit", "MORE", 100) } end, - ["bleeding you inflict on maimed enemies deals (%d+)%% more damage"] = function(num) return { mod("Damage", "MORE", num, nil, 0, KeywordFlag.Bleed, { type = "Condition", var = "EnemyMaimed"}) } end, + ["bleeding you inflict on maimed enemies deals (%d+)%% more damage"] = function(num) return { mod("Damage", "MORE", num, nil, 0, KeywordFlag.Bleed, { type = "EnemyCondition", var = "Maimed"}) } end, ["critical strikes ignore enemy monster elemental resistances"] = { flag("IgnoreElementalResistances", { type = "Condition", var = "CriticalStrike" }) }, ["non%-critical strikes penetrate (%d+)%% of enemy elemental resistances"] = function(num) return { mod("ElementalPenetration", "BASE", num, { type = "Condition", var = "CriticalStrike", neg = true }) } end, ["movement speed cannot be modified to below base value"] = { flag("MovementSpeedCannotBeBelowBase") }, @@ -583,28 +642,155 @@ local specialModList = { mod("ColdDamage", "INC", num, { type = "Condition", var = "HitByColdDamageRecently" }), mod("LightningDamage", "INC", num, { type = "Condition", var = "HitByLightningDamageRecently" }) } end, + ["for each element you've been hit by damage of recently, (%d+)%% reduced damage taken of that element"] = function(num) return { + mod("FireDamageTaken", "INC", -num, { type = "Condition", var = "HitByFireDamageRecently" }), + mod("ColdDamageTaken", "INC", -num, { type = "Condition", var = "HitByColdDamageRecently" }), + mod("LightningDamageTaken", "INC", -num, { type = "Condition", var = "HitByLightningDamageRecently" }) + } end, ["when you kill an enemy, for each curse on that enemy, gain (%d+)%% of non%-chaos damage as extra chaos damage for 4 seconds"] = function(num) return { mod("PhysicalDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }), - mod("LightningDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }), - mod("ColdDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }), - mod("FireDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }) + mod("ElementalDamageGainAsChaos", "BASE", num, { type = "Condition", var = "KilledRecently" }, { type = "Multiplier", var = "CurseOnEnemy" }), } end, - ["you and nearby allies have (%d+)%% increased attack, cast and movement speed if you've used a warcry recently"] = function(num) return { mod("Speed", "INC", num, { type = "Condition", var = "UsedWarcryRecently" }), mod("MovementSpeed", "INC", num, { type = "Condition", var = "UsedWarcryRecently" }) } end, ["warcries cost no mana"] = { mod("ManaCost", "MORE", -100, nil, 0, KeywordFlag.Warcry) }, - ["enemies you taunt take (%d+)%% increased damage"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("DamageTaken", "INC", num) }, { type = "Condition", var = "EnemyTaunted" }) } end, + ["enemies you taunt take (%d+)%% increased damage"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("DamageTaken", "INC", num, { type = "Condition", var = "Taunted" }) }) } end, ["you have phasing while at maximum frenzy charges"] = { mod("Misc", "LIST", { type = "Condition", var = "Phasing" }, { type = "Condition", var = "AtMaxFrenzyCharges" }) }, - -- Special node types - ["(%d+)%% of block chance applied to spells"] = function(num) return { mod("BlockChanceConv", "BASE", num) } end, - ["(%d+)%% of block chance applied to spells when on low life"] = function(num) return { mod("BlockChanceConv", "BASE", num, { type = "Condition", var = "LowLife" }) } end, - ["(%d+)%% additional block chance with staves"] = function(num) return { mod("BlockChance", "BASE", num, { type = "Condition", var = "UsingStaff" }) } end, - ["(%d+)%% additional chance to block with staves"] = function(num) return { mod("BlockChance", "BASE", num, { type = "Condition", var = "UsingStaff" }) } end, - ["(%d+)%% additional block chance while dual wielding or holding a shield"] = function(num) return { mod("BlockChance", "BASE", num, { type = "Condition", var = "DualWielding"}), mod("BlockChance", "BASE", num, { type = "Condition", var = "UsingShield"}) } end, + -- Item local modifiers + ["has no sockets"] = { }, + ["has 1 socket"] = { }, + ["no physical damage"] = { mod("Misc", "LIST", { type = "WeaponData", key = "PhysicalMin" }), mod("Misc", "LIST", { type = "WeaponData", key = "PhysicalMax" }), mod("Misc", "LIST", { type = "WeaponData", key = "PhysicalDPS" }) }, + ["all attacks with this weapon are critical strikes"] = { mod("Misc", "LIST", { type = "WeaponData", key = "critChance", value = 100 }) }, + ["counts as dual wielding"] = { mod("Misc", "LIST", { type = "WeaponData", key = "countsAsDualWielding", value = true}) }, + ["counts as all one handed melee weapon types"] = { mod("Misc", "LIST", { type = "WeaponData", key = "countsAsAll1H", value = true }) }, + ["no block chance"] = { mod("Misc", "LIST", { type = "ArmourData", key = "BlockChance", value = 0 }) }, + ["hits can't be evaded"] = { flag("CannotBeEvaded", { type = "Condition", var = "XHandAttack" }) }, + ["causes bleeding on hit"] = { mod("BleedChance", "BASE", 100, { type = "Condition", var = "XHandAttack" }) }, + ["poisonous hit"] = { mod("PoisonChance", "BASE", 100, { type = "Condition", var = "XHandAttack" }) }, + ["attacks with this weapon deal double damage to chilled enemies"] = { mod("Damage", "MORE", 100, nil, ModFlag.Hit, { type = "Condition", var = "XHandAttack" }, { type = "EnemyCondition", var = "Chilled" }) }, + ["life leech from hits with this weapon applies instantly"] = { flag("InstantLifeLeech", { type = "Condition", var = "XHandAttack" }) }, + ["instant recovery"] = { mod("FlaskInstantRecovery", "BASE", 100) }, + ["(%d+)%% of recovery applied instantly"] = function(num) return { mod("FlaskInstantRecovery", "BASE", num) } end, + -- Socketed gem modifiers + ["%+(%d+) to level of socketed gems"] = function(num) return { mod("GemProperty", "LIST", { keyword = "all", key = "level", value = num }, { type = "SocketedIn" }) } end, + ["%+(%d+) to level of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "level", value = num }, { type = "SocketedIn" }) } end, + ["%+(%d+)%% to quality of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "quality", value = num }, { type = "SocketedIn" }) } end, + ["%+(%d+) to level of active socketed skill gems"] = function(num) return { mod("GemProperty", "LIST", { keyword = "active_skill", key = "level", value = num }, { type = "SocketedIn" }) } end, + ["socketed gems fire an additional projectile"] = { mod("ProjectileCount", "BASE", 1, { type = "SocketedIn" }) }, + ["socketed gems fire (%d+) additional projectiles"] = function(num) return { mod("ProjectileCount", "BASE", num, { type = "SocketedIn" }) } end, + ["socketed gems reserve no mana"] = { mod("ManaReserved", "MORE", -100, { type = "SocketedIn" }) }, + ["socketed gems have blood magic"] = { flag("SkillBloodMagic", { type = "SocketedIn" }) }, + ["socketed gems gain (%d+)%% of physical damage as extra lightning damage"] = function(num) return { mod("PhysicalDamageGainAsLightning", "BASE", num, { type = "SocketedIn" }) } end, + ["socketed red gems get (%d+)%% physical damage as extra fire damage"] = function(num) return { mod("PhysicalDamageGainAsFire", "BASE", num, { type = "SocketedIn", keyword = "strength" }) } end, + -- Extra skill/support + ["grants level (%d+) (.+)"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["casts level (%d+) (.+) when equipped"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["cast level (%d+) (.+) when you deal a critical strike"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["cast level (%d+) (.+) when hit"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["cast level (%d+) (.+) when you kill an enemy"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["%d+%% chance to attack with level (%d+) (.+) on melee hit"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["%d+%% chance to cast level (%d+) (.+) on hit"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["%d+%% chance to cast level (%d+) (.+) on kill"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["attack with level (%d+) (.+) when you kill a bleeding enemy"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + ["curse enemies with (%D+) on %a+"] = function(_, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill] or "Unknown", level = 1, noSupports = true }, { type = "SocketedIn" }) } end, + ["curse enemies with level (%d+) (.+) on %a+"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill] or "Unknown", level = num, noSupports = true }, { type = "SocketedIn" }) } end, + ["socketed [%a+]* ?gems a?r?e? ?supported by level (%d+) (.+)"] = function(num, _, support) return { mod("ExtraSupport", "LIST", { name = gemNameLookup[support] or gemNameLookup[support:gsub("^increased ","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, + -- Conversion + ["increases and reductions to minion damage also affects? you"] = { flag("MinionDamageAppliesToPlayer") }, + ["increases and reductions to spell damage also apply to attacks"] = { flag("SpellDamageAppliesToAttacks") }, + ["modifiers to claw damage also apply to unarmed"] = { flag("ClawDamageAppliesToUnarmed") }, + ["modifiers to claw attack speed also apply to unarmed"] = { flag("ClawAttackSpeedAppliesToUnarmed") }, + ["modifiers to claw critical strike chance also apply to unarmed"] = { flag("ClawCritChanceAppliesToUnarmed") }, + ["gain (%d+)%% of bow physical damage as extra damage of each element"] = function(num) return { mod("PhysicalDamageGainAsLightning", "BASE", num, nil, ModFlag.Bow), mod("PhysicalDamageGainAsCold", "BASE", num, nil, ModFlag.Bow), mod("PhysicalDamageGainAsFire", "BASE", num, nil, ModFlag.Bow) } end, + -- Crit + ["your critical strike chance is lucky"] = { flag("CritChanceLucky") }, + ["your critical strikes do not deal extra damage"] = { flag("NoCritMultiplier") }, + ["critical strikes deal no damage"] = { mod("Damage", "MORE", -100, { type = "Condition", var = "CriticalStrike" }) }, + ["critical strike chance is increased by uncapped lightning resistance"] = { mod("CritChance", "INC", 1, { type = "PerStat", stat = "LightningResistTotal", div = 1 }) }, + ["non%-critical strikes deal (%d+)%% damage"] = function(num) return { mod("Damage", "MORE", -100+num, nil, ModFlag.Hit, { type = "Condition", var = "CriticalStrike", neg = true }) } end, + -- Status Ailments + ["your cold damage can ignite"] = { flag("ColdCanIgnite") }, + ["your fire damage can shock but not ignite"] = { flag("FireCanShock"), flag("FireCannotIgnite") }, + ["your cold damage can ignite but not freeze or chill"] = { flag("ColdCanIgnite"), flag("ColdCannotFreeze"), flag("ColdCannotChill") }, + ["your lightning damage can freeze but not shock"] = { flag("LightningCanFreeze"), flag("LightningCannotShock") }, + ["your chaos damage can shock"] = { flag("ChaosCanShock") }, + ["your physical damage can chill"] = { flag("PhysicalCanChill") }, + ["your physical damage can shock"] = { flag("PhysicalCanShock") }, + ["critical strikes do not always freeze"] = { flag("CritsDontAlwaysFreeze") }, + ["you can inflict up to (%d+) ignites on an enemy"] = { flag("IgniteCanStack") }, + ["enemies chilled by you take (%d+)%% increased burning damage"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("BurningDamageTaken", "INC", num) }, { type = "EnemyCondition", var = "Chilled" }) } end, + ["ignited enemies burn (%d+)%% faster"] = function(num) return { mod("IgniteBurnRate", "INC", num) } end, + ["enemies ignited by an attack burn (%d+)%% faster"] = function(num) return { mod("IgniteBurnRate", "INC", num, nil, ModFlag.Attack) } end, + -- Bleed + ["melee attacks cause bleeding"] = { mod("BleedChance", "BASE", 100, nil, ModFlag.Melee) }, + ["attacks cause bleeding when hitting cursed enemies"] = { mod("BleedChance", "BASE", 100, { type = "EnemyCondition", var = "Cursed" }) }, + ["melee critical strikes cause bleeding"] = { mod("BleedChance", "BASE", 100, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) }, + ["causes bleeding on melee critical strike"] = { mod("BleedChance", "BASE", 100, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) }, + ["melee critical strikes have (%d+)%% chance to cause bleeding"] = function(num) return { mod("BleedChance", "BASE", num, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) } end, + -- Poison + ["your chaos damage poisons enemies"] = { mod("PoisonChance", "BASE", 100) }, + ["melee attacks poison on hit"] = { mod("PoisonChance", "BASE", 100, nil, ModFlag.Melee) }, + ["melee critical strikes have (%d+)%% chance to poison the enemy"] = function(num) return { mod("PoisonChance", "BASE", num, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) } end, + ["critical strikes with daggers have a (%d+)%% chance to poison the enemy"] = function(num) return { mod("PoisonChance", "BASE", num, nil, ModFlag.Dagger, { type = "Condition", var = "CriticalStrike" }) } end, + ["poison cursed enemies on hit"] = { mod("PoisonChance", "BASE", 100, { type = "EnemyCondition", var = "Cursed" }) }, + ["wh[ie][ln]e? at maximum frenzy charges, attacks poison enemies"] = { mod("PoisonChance", "BASE", 100, nil, ModFlag.Attack, { type = "Condition", var = "AtMaxFrenzyCharges" }) }, + ["traps and mines have a (%d+)%% chance to poison on hit"] = function(num) return { mod("PoisonChance", "BASE", num, nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)) } end, + -- Buffs/debuffs + ["phasing"] = { mod("Misc", "LIST", { type = "Condition", var = "Phasing" }) }, + ["onslaught"] = { mod("Misc", "LIST", { type = "Condition", var = "Onslaught" }) }, + ["your aura buffs do not affect allies"] = { flag("SelfAurasCannotAffectAllies") }, + ["allies' aura buffs do not affect you"] = { flag("AlliesAurasCannotAffectSelf") }, + ["enemies can have 1 additional curse"] = { mod("EnemyCurseLimit", "BASE", 1) }, + ["nearby enemies have (%d+)%% increased effect of curses on them"] = function(num) return { mod("Misc", "LIST", { type = "EnemyModifier", mod = mod("CurseEffectOnSelf", "INC", num) }) } end, + ["your hits inflict decay, dealing (%d+) chaos damage per second for 10 seconds"] = function(num) return { mod("Misc", "LIST", { type = "SkillData", key = "decay", value = num, merge = "MAX" }) } end, + -- Traps, Mines and Totems + ["traps and mines deal (%d+)%-(%d+) additional physical damage"] = function(_, min, max) return { mod("PhysicalMin", "BASE", tonumber(min), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)), mod("PhysicalMax", "BASE", tonumber(max), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)) } end, + ["traps and mines deal (%d+) to (%d+) additional physical damage"] = function(_, min, max) return { mod("PhysicalMin", "BASE", tonumber(min), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)), mod("PhysicalMax", "BASE", tonumber(max), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)) } end, ["can have up to (%d+) additional traps? placed at a time"] = function(num) return { mod("ActiveTrapLimit", "BASE", num) } end, ["can have up to (%d+) additional remote mines? placed at a time"] = function(num) return { mod("ActiveMineLimit", "BASE", num) } end, ["can have up to (%d+) additional totems? summoned at a time"] = function(num) return { mod("ActiveTotemLimit", "BASE", num) } end, - ["enemies can have 1 additional curse"] = { mod("EnemyCurseLimit", "BASE", 1) }, + ["can [hs][au][vm][em]o?n? 1 additional siege ballista totem per (%d+) dexterity"] = function(num) return { mod("ActiveTotemLimit", "BASE", 1, { type = "SkillName", skillName = "Siege Ballista" }, { type = "PerStat", stat = "Dex", div = num }) } end, + ["totems fire (%d+) additional projectiles"] = function(num) return { mod("ProjectileCount", "BASE", num, nil, 0, KeywordFlag.Totem) } end, ["([%d%.]+)%% of damage dealt by y?o?u?r? ?totems is leeched to you as life"] = function(num) return { mod("DamageLifeLeechToPlayer", "BASE", num, nil, 0, KeywordFlag.Totem) } end, - -- Other modifiers + -- Minions + ["your strength is added to your minions"] = { flag("StrengthAddedToMinions") }, + ["minions poison enemies on hit"] = { mod("Misc", "LIST", { type = "MinionModifier", mod = mod("PoisonChance", "BASE", 100) }) }, + ["(%d+)%% increased minion damage if you have hit recently"] = function(num) return { mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", num) }, { type = "Condition", var = "HitRecently" }) } end, + ["(%d+)%% increased golem damage for each type of golem you have summoned"] = function(num) return { + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", num) }, { type = "Condition", var = "HavePhysicalGolem" }, { type = "SkillType", skillType = SkillType.Golem }), + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", num) }, { type = "Condition", var = "HaveLightningGolem" }, { type = "SkillType", skillType = SkillType.Golem }), + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", num) }, { type = "Condition", var = "HaveColdGolem" }, { type = "SkillType", skillType = SkillType.Golem }), + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", num) }, { type = "Condition", var = "HaveFireGolem" }, { type = "SkillType", skillType = SkillType.Golem }), + mod("Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", num) }, { type = "Condition", var = "HaveChaosGolem" }, { type = "SkillType", skillType = SkillType.Golem }), + } end, + ["can summon up to (%d) additional golems? at a time"] = function(num) return { mod("ActiveGolemLimit", "BASE", num) } end, + ["golems regenerate (%d)%% of their maximum life per second"] = function(num) return { mod("Misc", "LIST", { type = "MinionModifier", mod = mod("LifeRegenPercent", "BASE", num) }, { type = "SkillType", skillType = SkillType.Golem }) } end, + -- Projectiles + ["skills chain %+(%d) times"] = function(num) return { mod("ChainCount", "BASE", num) } end, + ["skills chain an additional time while at maximum frenzy charges"] = { mod("ChainCount", "BASE", 1, { type = "Condition", var = "AtMaxFrenzyCharges" }) }, + ["adds an additional arrow"] = { mod("ProjectileCount", "BASE", 1, nil, ModFlag.Attack) }, + ["(%d+) additional arrows"] = function(num) return { mod("ProjectileCount", "BASE", num, nil, ModFlag.Attack) } end, + ["skills fire an additional projectile"] = { mod("ProjectileCount", "BASE", 1) }, + ["spells have an additional projectile"] = { mod("ProjectileCount", "BASE", 1, nil, ModFlag.Spell) }, + ["arrows always pierce"] = { mod("PierceChance", "BASE", 100, nil, ModFlag.Attack) }, + ["arrows that pierce cause bleeding"] = { flag("ArrowsThatPierceCauseBleeding") }, + ["projectile damage increased by arrow pierce chance"] = { mod("Damage", "INC", 1, nil, ModFlag.Projectile, 0, { type = "PerStat", stat = "PierceChance", div = 1 }) }, + ["projectile damage increased by (%d+)%% of arrow pierce chance"] = function(num) return { mod("Damage", "INC", 1, nil, ModFlag.Projectile, 0, { type = "PerStat", stat = "PierceChance", div = 100/num }) } end, + ["projectiles pierce while phasing"] = { mod("PierceChance", "BASE", 100, { type = "Condition", var = "Phasing" }) }, + -- Leech + ["cannot leech life"] = { flag("CannotLeechLife") }, + ["cannot leech mana"] = { flag("CannotLeechMana") }, + ["cannot leech when on low life"] = { flag("CannotLeechLife", { type = "Condition", var = "LowLife" }), flag("CannotLeechMana", { type = "Condition", var = "LowLife" }) }, + ["cannot leech life from critical strikes"] = { flag("CannotLeechLife", { type = "Condition", var = "CriticalStrike" }) }, + ["leech applies instantly on critical strike"] = { flag("InstantLifeLeech", { type = "Condition", var = "CriticalStrike" }), flag("InstantManaLeech", { type = "Condition", var = "CriticalStrike" }) }, + ["leech applies instantly during flask effect"] = { flag("InstantLifeLeech", { type = "Condition", var = "UsingFlask" }), flag("InstantManaLeech", { type = "Condition", var = "UsingFlask" }) }, + -- Defences + ["cannot evade enemy attacks"] = { flag("CannotEvade") }, + ["cannot block attacks"] = { flag("CannotBlockAttacks") }, + ["you have no life regeneration"] = { flag("NoLifeRegen") }, + ["you cannot be shocked while at maximum endurance charges"] = { mod("AvoidShock", "BASE", 100, { type = "Condition", var = "AtMaxEnduranceCharges" }) }, + ["armour is increased by uncapped fire resistance"] = { mod("Armour", "INC", 1, { type = "PerStat", stat = "FireResistTotal", div = 1 }) }, + ["evasion rating is increased by uncapped cold resistance"] = { mod("Evasion", "INC", 1, { type = "PerStat", stat = "ColdResistTotal", div = 1 }) }, + ["reflects (%d+) physical damage to melee attackers"] = { }, + ["ignore all movement penalties from armour"] = { mod("Misc", "LIST", { type = "Condition", var = "IgnoreMovementPenalties" }) }, ["cannot be stunned"] = { mod("AvoidStun", "BASE", 100) }, ["cannot be shocked"] = { mod("AvoidShock", "BASE", 100) }, ["cannot be frozen"] = { mod("AvoidFreeze", "BASE", 100) }, @@ -617,138 +803,42 @@ local specialModList = { ["immunity to bleeding during flask effect"] = { mod("AvoidBleed", "BASE", 100, { type = "Condition", var = "UsingFlask" }) }, ["immune to poison during flask effect"] = { mod("AvoidPoison", "BASE", 100, { type = "Condition", var = "UsingFlask" }) }, ["immune to curses during flask effect"] = { mod("AvoidCurse", "BASE", 100, { type = "Condition", var = "UsingFlask" }) }, - ["cannot evade enemy attacks"] = { flag("CannotEvade") }, - ["deal no physical damage"] = { flag("DealNoPhysical") }, - ["deal no elemental damage"] = { flag("DealNoLightning"), flag("DealNoCold"), flag("DealNoFire") }, - ["your critical strikes do not deal extra damage"] = { flag("NoCritMultiplier") }, - ["iron will"] = { flag("IronWill") }, - ["adds an additional arrow"] = { mod("ProjectileCount", "BASE", 1, nil, ModFlag.Attack) }, - ["(%d+) additional arrows"] = function(num) return { mod("ProjectileCount", "BASE", num, nil, ModFlag.Attack) } end, - ["skills fire an additional projectile"] = { mod("ProjectileCount", "BASE", 1) }, - ["spells have an additional projectile"] = { mod("ProjectileCount", "BASE", 1, nil, ModFlag.Spell) }, - ["skills chain %+(%d) times"] = function(num) return { mod("ChainCount", "BASE", num) } end, - ["reflects (%d+) physical damage to melee attackers"] = { }, - ["critical strikes with daggers have a (%d+)%% chance to poison the enemy"] = function(num) return { mod("PoisonChance", "BASE", num, nil, ModFlag.Dagger, { type = "Condition", var = "CriticalStrike" }) } end, - ["ignore all movement penalties from armour"] = { mod("Misc", "LIST", { type = "Condition", var = "IgnoreMovementPenalties" }) }, - ["your critical strike chance is lucky"] = { flag("CritChanceLucky") }, - ["phasing"] = { mod("Misc", "LIST", { type = "Condition", var = "Phasing" }) }, - ["onslaught"] = { mod("Misc", "LIST", { type = "Condition", var = "Onslaught" }) }, + -- Flasks + ["flasks do not apply to you"] = { flag("FlasksDoNotApplyToPlayer") }, + ["flasks apply to your zombies and spectres"] = { flag("FlasksApplyToMinion", { type = "SkillName", skillNameList = { "Raise Zombie", "Raise Spectre" } }) }, ["creates a smoke cloud on use"] = { }, ["creates chilled ground on use"] = { }, ["creates consecrated ground on use"] = { }, - -- Special item local modifiers - ["no physical damage"] = { mod("Misc", "LIST", { type = "WeaponData", key = "PhysicalMin" }), mod("Misc", "LIST", { type = "WeaponData", key = "PhysicalMax" }), mod("Misc", "LIST", { type = "WeaponData", key = "PhysicalDPS" }) }, - ["all attacks with this weapon are critical strikes"] = { mod("Misc", "LIST", { type = "WeaponData", key = "critChance", value = 100 }) }, - ["no block chance"] = { mod("Misc", "LIST", { type = "ArmourData", key = "BlockChance", value = 0 }) }, - ["hits can't be evaded"] = { flag("CannotBeEvaded", { type = "Condition", var = "XHandAttack" }) }, - ["causes bleeding on hit"] = { mod("BleedChance", "BASE", 100, { type = "Condition", var = "XHandAttack" }) }, - ["poisonous hit"] = { mod("PoisonChance", "BASE", 100, { type = "Condition", var = "XHandAttack" }) }, - ["has no sockets"] = { }, - ["has 1 socket"] = { }, - ["attacks have blood magic"] = { flag("SkillBloodMagic", nil, ModFlag.Attack) }, - ["%+(%d+) to level of socketed gems"] = function(num) return { mod("GemProperty", "LIST", { keyword = "all", key = "level", value = num }, { type = "SocketedIn" }) } end, - ["%+(%d+) to level of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "level", value = num }, { type = "SocketedIn" }) } end, - ["%+(%d+)%% to quality of socketed (%a+) gems"] = function(num, _, type) return { mod("GemProperty", "LIST", { keyword = type, key = "quality", value = num }, { type = "SocketedIn" }) } end, - ["%+(%d+) to level of active socketed skill gems"] = function(num) return { mod("GemProperty", "LIST", { keyword = "active_skill", key = "level", value = num }, { type = "SocketedIn" }) } end, - ["grants level (%d+) (.+)"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["casts level (%d+) (.+) when equipped"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["cast level (%d+) (.+) when you deal a critical strike"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["cast level (%d+) (.+) when hit"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["cast level (%d+) (.+) when you kill an enemy"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["%d+%% chance to attack with level (%d+) (.+) on melee hit"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["%d+%% chance to cast level (%d+) (.+) on hit"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["attack with level (%d+) (.+) when you kill a bleeding enemy"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["curse enemies with (%D+) on %a+"] = function(_, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill] or "Unknown", level = 1, noSupports = true }, { type = "SocketedIn" }) } end, - ["curse enemies with level (%d+) (.+) on %a+"] = function(num, _, skill) return { mod("ExtraSkill", "LIST", { name = gemNameLookup[skill] or "Unknown", level = num, noSupports = true }, { type = "SocketedIn" }) } end, - ["socketed .*gems are supported by level (%d+) (.+)"] = function(num, _, support) return { mod("ExtraSupport", "LIST", { name = gemNameLookup[support] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["socketed curse gems supported by level (%d+) (.+)"] = function(num, _, support) return { mod("ExtraSupport", "LIST", { name = gemNameLookup[support] or "Unknown", level = num }, { type = "SocketedIn" }) } end, - ["socketed gems fire an additional projectile"] = { mod("ProjectileCount", "BASE", 1, { type = "SocketedIn" }) }, - ["socketed gems fire (%d+) additional projectiles"] = function(num) return { mod("ProjectileCount", "BASE", num, { type = "SocketedIn" }) } end, - ["socketed gems reserve no mana"] = { mod("ManaReserved", "MORE", -100, { type = "SocketedIn" }) }, - ["socketed gems have blood magic"] = { flag("SkillBloodMagic", { type = "SocketedIn" }) }, - ["socketed gems gain (%d+)%% of physical damage as extra lightning damage"] = function(num) return { mod("PhysicalDamageGainAsLightning", "BASE", num, { type = "SocketedIn" }) } end, - ["socketed red gems get (%d+)%% physical damage as extra fire damage"] = function(num) return { mod("PhysicalDamageGainAsFire", "BASE", num, { type = "SocketedIn", keyword = "strength" }) } end, - ["instant recovery"] = { mod("FlaskInstantRecovery", "BASE", 100) }, - ["(%d+)%% of recovery applied instantly"] = function(num) return { mod("FlaskInstantRecovery", "BASE", num) } end, - -- Enchantment modifiers - ["(%d+)%% increased decoy totem life"] = function(num) return { mod("TotemLife", "INC", num, { type = "SkillName", skillName = "Decoy Totem" }) } end, - ["(%d+)%% increased ice spear critical strike chance in second form"] = function(num) return { mod("CritChance", "INC", num, { type = "SkillName", skillName = "Ice Spear" }, { type = "SkillPart", skillPart = 2 }) } end, - ["(%d+)%% increased incinerate damage for each stage"] = function(num) return { mod("Damage", "INC", num * 3, { type = "SkillName", skillName = "Incinerate" }, { type = "SkillPart", skillPart = 2 }) } end, - ["shock nova ring deals (%d+)%% increased damage"] = function(num) return { mod("Damage", "INC", num, { type = "SkillName", skillName = "Shock Nova" }, { type = "SkillPart", skillPart = 1 }) } end, - -- Unique item modifiers - ["your cold damage can ignite"] = { flag("ColdCanIgnite") }, - ["your fire damage can shock but not ignite"] = { flag("FireCanShock"), flag("FireCannotIgnite") }, - ["your cold damage can ignite but not freeze or chill"] = { flag("ColdCanIgnite"), flag("ColdCannotFreeze"), flag("ColdCannotChill") }, - ["your lightning damage can freeze but not shock"] = { flag("LightningCanFreeze"), flag("LightningCannotShock") }, - ["your chaos damage can shock"] = { flag("ChaosCanShock") }, - ["your physical damage can chill"] = { flag("PhysicalCanChill") }, - ["your physical damage can shock"] = { flag("PhysicalCanShock") }, - ["critical strikes do not always freeze"] = { flag("CritsDontAlwaysFreeze") }, - ["your chaos damage poisons enemies"] = { mod("PoisonChance", "BASE", 100) }, - ["you can inflict up to (%d+) ignites on an enemy"] = { flag("IgniteCanStack") }, - ["melee attacks cause bleeding"] = { mod("BleedChance", "BASE", 100, nil, ModFlag.Melee) }, - ["melee attacks poison on hit"] = { mod("PoisonChance", "BASE", 100, nil, ModFlag.Melee) }, - ["attacks cause bleeding when hitting cursed enemies"] = { mod("BleedChance", "BASE", 100, { type = "Condition", var = "EnemyCursed" }) }, - ["melee critical strikes cause bleeding"] = { mod("BleedChance", "BASE", 100, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) }, - ["melee critical strikes have (%d+)%% chance to cause bleeding"] = function(num) return { mod("BleedChance", "BASE", num, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) } end, - ["melee critical strikes have (%d+)%% chance to poison the enemy"] = function(num) return { mod("PoisonChance", "BASE", num, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) } end, - ["causes bleeding on melee critical strike"] = { mod("BleedChance", "BASE", 100, nil, ModFlag.Melee, { type = "Condition", var = "CriticalStrike" }) }, - ["traps and mines deal (%d+)%-(%d+) additional physical damage"] = function(_, min, max) return { mod("PhysicalMin", "BASE", tonumber(min), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)), mod("PhysicalMax", "BASE", tonumber(max), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)) } end, - ["traps and mines deal (%d+) to (%d+) additional physical damage"] = function(_, min, max) return { mod("PhysicalMin", "BASE", tonumber(min), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)), mod("PhysicalMax", "BASE", tonumber(max), nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)) } end, - ["traps and mines have a (%d+)%% chance to poison on hit"] = function(num) return { mod("PoisonChance", "BASE", num, nil, 0, bor(KeywordFlag.Trap, KeywordFlag.Mine)) } end, - ["poison cursed enemies on hit"] = { mod("PoisonChance", "BASE", 100, { type = "Condition", var = "EnemyCursed" }) }, - ["projectile damage increased by arrow pierce chance"] = { mod("Damage", "INC", 1, nil, ModFlag.Projectile, 0, { type = "PerStat", stat = "PierceChance", div = 1 }) }, - ["projectile damage increased by (%d+)%% of arrow pierce chance"] = function(num) return { mod("Damage", "INC", 1, nil, ModFlag.Projectile, 0, { type = "PerStat", stat = "PierceChance", div = 100/num }) } end, - ["gain (%d+) armour per grand spectrum"] = function(num) return { mod("Armour", "BASE", num, { type = "Multiplier", var = "GrandSpectrum" }), mod("Misc", "LIST", { type = "Multiplier", var = "GrandSpectrum", value = 1}) } end, - ["gain (%d+) mana per grand spectrum"] = function(num) return { mod("Mana", "BASE", num, { type = "Multiplier", var = "GrandSpectrum" }), mod("Misc", "LIST", { type = "Multiplier", var = "GrandSpectrum", value = 1}) } end, - ["(%d+)%% increased elemental damage per grand spectrum"] = function(num) return { mod("ElementalDamage", "INC", num, { type = "Multiplier", var = "GrandSpectrum" }), mod("Misc", "LIST", { type = "Multiplier", var = "GrandSpectrum", value = 1}) } end, - ["counts as dual wielding"] = { mod("Misc", "LIST", { type = "WeaponData", key = "countsAsDualWielding", value = true}) }, - ["counts as all one handed melee weapon types"] = { mod("Misc", "LIST", { type = "WeaponData", key = "countsAsAll1H", value = true }) }, - ["gain (%d+)%% of bow physical damage as extra damage of each element"] = function(num) return { mod("PhysicalDamageGainAsLightning", "BASE", num, nil, ModFlag.Bow), mod("PhysicalDamageGainAsCold", "BASE", num, nil, ModFlag.Bow), mod("PhysicalDamageGainAsFire", "BASE", num, nil, ModFlag.Bow) } end, - ["totems fire (%d+) additional projectiles"] = function(num) return { mod("ProjectileCount", "BASE", num, nil, 0, KeywordFlag.Totem) } end, - ["when at maximum frenzy charges, attacks poison enemies"] = { mod("PoisonChance", "BASE", 100, nil, ModFlag.Attack, { type = "Condition", var = "AtMaxFrenzyCharges" }) }, - ["while at maximum frenzy charges, attacks poison enemies"] = { mod("PoisonChance", "BASE", 100, nil, ModFlag.Attack, { type = "Condition", var = "AtMaxFrenzyCharges" }) }, - ["skills chain an additional time while at maximum frenzy charges"] = { mod("ChainCount", "BASE", 1, { type = "Condition", var = "AtMaxFrenzyCharges" }) }, - ["you cannot be shocked while at maximum endurance charges"] = { mod("AvoidShock", "BASE", 100, { type = "Condition", var = "AtMaxEnduranceCharges" }) }, - ["you have no life regeneration"] = { flag("NoLifeRegen") }, - ["cannot block attacks"] = { flag("CannotBlockAttacks") }, - ["projectiles pierce while phasing"] = { mod("PierceChance", "BASE", 100, { type = "Condition", var = "Phasing" }) }, - ["increases and reductions to minion damage also affects? you"] = { flag("MinionDamageAppliesToPlayer") }, - ["increases and reductions to spell damage also apply to attacks"] = { flag("SpellDamageAppliesToAttacks") }, - ["armour is increased by uncapped fire resistance"] = { mod("Armour", "INC", 1, { type = "PerStat", stat = "FireResistTotal", div = 1 }) }, - ["evasion rating is increased by uncapped cold resistance"] = { mod("Evasion", "INC", 1, { type = "PerStat", stat = "ColdResistTotal", 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"] = { mod("Damage", "MORE", -100, { type = "Condition", var = "CriticalStrike" }) }, - ["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 deal double damage to chilled enemies"] = { mod("Damage", "MORE", 100, nil, ModFlag.Hit, { type = "Condition", var = "XHandAttack" }, { type = "Condition", var = "EnemyChilled" }) }, - ["(%d+)%% of maximum life converted to energy shield"] = function(num) return { mod("LifeConvertToEnergyShield", "BASE", num) } end, - ["non%-critical strikes deal (%d+)%% damage"] = function(num) return { mod("Damage", "MORE", -100+num, nil, ModFlag.Hit, { type = "Condition", var = "CriticalStrike", neg = true }) } end, - ["ignited enemies burn (%d+)%% faster"] = function(num) return { mod("IgniteBurnRate", "INC", num) } end, - ["enemies ignited by an attack burn (%d+)%% faster"] = function(num) return { mod("IgniteBurnRate", "INC", num, nil, ModFlag.Attack) } end, ["gain unholy might during flask effect"] = { mod("Misc", "LIST", { type = "Condition", var = "UnholyMight" }, { type = "Condition", var = "UsingFlask" }) }, ["zealot's oath during flask effect"] = { mod("ZealotsOath", "FLAG", true, { type = "Condition", var = "UsingFlask" }) }, ["grants level (%d+) (.+) curse aura during flask effect"] = function(num, _, skill) return { mod("ExtraCurse", "LIST", { name = gemNameLookup[skill:gsub(" skill","")] or "Unknown", level = num }, { type = "Condition", var = "UsingFlask" }) } end, - ["passives in radius can be allocated without being connected to your tree"] = { mod("Misc", "LIST", { type = "JewelData", key = "intuitiveLeap", value = true }) }, - ["your hits inflict decay, dealing (%d+) chaos damage per second for 10 seconds"] = function(num) return { mod("Misc", "LIST", { type = "SkillData", key = "decay", value = num, merge = "MAX" }) } end, - ["leech applies instantly on critical strike"] = { flag("InstantLifeLeech", { type = "Condition", var = "CriticalStrike" }), flag("InstantManaLeech", { type = "Condition", var = "CriticalStrike" }) }, - ["leech applies instantly during flask effect"] = { flag("InstantLifeLeech", { type = "Condition", var = "UsingFlask" }), flag("InstantManaLeech", { type = "Condition", var = "UsingFlask" }) }, - ["life leech from hits with this weapon applies instantly"] = { flag("InstantLifeLeech", { type = "Condition", var = "XHandAttack" }) }, - ["socketed lightning spells have (%d+)%% increased spell damage if triggered"] = function(num) return { mod("Damage", "INC", num, nil, ModFlag.Spell, { type = "SocketedIn", keyword = "lightning" }, { type = "Condition", var = "SkillIsTriggered" }) } end, - ["arrows always pierce"] = { mod("PierceChance", "BASE", 100, nil, ModFlag.Attack) }, - ["arrows that pierce cause bleeding"] = { flag("ArrowsThatPierceCauseBleeding") }, + ["during flask effect, (%d+)%% reduced damage taken of each element for which your uncapped elemental resistance is lowest"] = function(num) return { + mod("LightningDamageTaken", "BASE", -num, { type = "Condition", var = "UncappedLightningResistIsLowest" }), + mod("ColdDamageTaken", "BASE", -num, { type = "Condition", var = "UncappedColdResistIsLowest" }), + mod("FireDamageTaken", "BASE", -num, { type = "Condition", var = "UncappedFireResistIsLowest" }), + } end, ["during flask effect, damage penetrates (%d+)%% o?f? ?resistance of each element for which your uncapped elemental resistance is highest"] = function(num) return { mod("LightningPenetration", "BASE", num, { type = "Condition", var = "UncappedLightningResistIsHighest" }), mod("ColdPenetration", "BASE", num, { type = "Condition", var = "UncappedColdResistIsHighest" }), mod("FirePenetration", "BASE", num, { type = "Condition", var = "UncappedFireResistIsHighest" }), } end, - ["can [hs][au][vm][em]o?n? 1 additional siege ballista totem per (%d+) dexterity"] = function(num) return { mod("ActiveTotemLimit", "BASE", 1, { type = "SkillName", skillName = "Siege Ballista" }, { type = "PerStat", stat = "Dex", div = num }) } end, - ["cannot leech life"] = { flag("CannotLeechLife") }, - ["cannot leech mana"] = { flag("CannotLeechMana") }, - ["cannot leech when on low life"] = { flag("CannotLeechLife", { type = "Condition", var = "LowLife" }), flag("CannotLeechMana", { type = "Condition", var = "LowLife" }) }, - ["cannot leech life from critical strikes"] = { flag("CannotLeechLife", { type = "Condition", var = "CriticalStrike" }) }, - ["modifiers to claw damage also apply to unarmed"] = { flag("ClawDamageAppliesToUnarmed") }, - ["modifiers to claw attack speed also apply to unarmed"] = { flag("ClawAttackSpeedAppliesToUnarmed") }, - ["modifiers to claw critical strike chance also apply to unarmed"] = { flag("ClawCritChanceAppliesToUnarmed") }, + -- Jewels + ["passives in radius can be allocated without being connected to your tree"] = { mod("Misc", "LIST", { type = "JewelData", key = "intuitiveLeap", value = true }) }, + ["(%d+)%% increased elemental damage per grand spectrum"] = function(num) return { mod("ElementalDamage", "INC", num, { type = "Multiplier", var = "GrandSpectrum" }), mod("Misc", "LIST", { type = "Multiplier", var = "GrandSpectrum", value = 1}) } end, + ["gain (%d+) armour per grand spectrum"] = function(num) return { mod("Armour", "BASE", num, { type = "Multiplier", var = "GrandSpectrum" }), mod("Misc", "LIST", { type = "Multiplier", var = "GrandSpectrum", value = 1}) } end, + ["gain (%d+) mana per grand spectrum"] = function(num) return { mod("Mana", "BASE", num, { type = "Multiplier", var = "GrandSpectrum" }), mod("Misc", "LIST", { type = "Multiplier", var = "GrandSpectrum", value = 1}) } end, + ["primordial"] = { mod("Misc", "LIST", { type = "Multiplier", var = "PrimordialJewel", value = 1 }) }, + -- Misc + ["iron will"] = { flag("IronWill") }, + ["deal no physical damage"] = { flag("DealNoPhysical") }, + ["deal no elemental damage"] = { flag("DealNoLightning"), flag("DealNoCold"), flag("DealNoFire") }, + ["attacks have blood magic"] = { flag("SkillBloodMagic", nil, ModFlag.Attack) }, + ["socketed lightning spells have (%d+)%% increased spell damage if triggered"] = function(num) return { mod("Damage", "INC", num, nil, ModFlag.Spell, { type = "SocketedIn", keyword = "lightning" }, { type = "Condition", var = "SkillIsTriggered" }) } end, + -- Skill-specific enchantment modifiers + ["(%d+)%% increased decoy totem life"] = function(num) return { mod("TotemLife", "INC", num, { type = "SkillName", skillName = "Decoy Totem" }) } end, + ["(%d+)%% increased ice spear critical strike chance in second form"] = function(num) return { mod("CritChance", "INC", num, { type = "SkillName", skillName = "Ice Spear" }, { type = "SkillPart", skillPart = 2 }) } end, + ["(%d+)%% increased incinerate damage for each stage"] = function(num) return { mod("Damage", "INC", num * 3, { type = "SkillName", skillName = "Incinerate" }, { type = "SkillPart", skillPart = 2 }) } end, + ["shock nova ring deals (%d+)%% increased damage"] = function(num) return { mod("Damage", "INC", num, { type = "SkillName", skillName = "Shock Nova" }, { type = "SkillPart", skillPart = 1 }) } end, } local keystoneList = { -- List of keystones that can be found on uniques @@ -797,6 +887,7 @@ local suffixTypes = { ["converted to cold damage"] = "ConvertToCold", ["converted to fire damage"] = "ConvertToFire", ["converted to chaos damage"] = "ConvertToChaos", + ["converted to energy shield"] = "ConvertToEnergyShield", ["leeched as life and mana"] = "Leech", ["leeched as life"] = "LifeLeech", ["leeched as mana"] = "ManaLeech", @@ -828,7 +919,7 @@ local regenTypes = { local skillNameList = { } local preSkillNameList = { } for skillName, data in pairs(data.gems) do - if not data.support then + if not data.hidden and not data.support then skillNameList[" "..skillName:lower().." "] = { tag = { type = "SkillName", skillName = skillName } } preSkillNameList["^"..skillName:lower().." has "] = { tag = { type = "SkillName", skillName = skillName } } preSkillNameList["^"..skillName:lower().." totem deals "] = { tag = { type = "SkillName", skillName = skillName } } @@ -858,17 +949,20 @@ local function getSimpleConv(srcList, dst, type, remove, factor) end end end -local function getPerStat(dst, type, flags, stat, factor) +local function getPerStat(dst, modType, flags, stat, factor) return function(nodeMods, out, data) if nodeMods then data[stat] = (data[stat] or 0) + nodeMods:Sum("BASE", nil, stat) else - out:NewMod(dst, type, math.floor(data[stat] * factor + 0.5), "Tree:Jewel", flags) + out:NewMod(dst, modType, math.floor(data[stat] * factor + 0.5), "Tree:Jewel", flags) end end end -local function getThreshold(attrib, name, type, value, ...) - local mod = mod(name, type, value, "Tree:Jewel", ...) +local function getThreshold(attrib, name, modType, value, ...) + local mod = mod(name, modType, value, "Tree:Jewel", ...) + if type(value) == "table" and value.mod then + value.mod.source = mod.source + end return function(nodeMods, out, data, attributes) if not nodeMods and attributes[attrib] >= 40 then out:AddMod(mod) @@ -952,6 +1046,8 @@ local jewelFuncs = { ["With at least 40 Strength in Radius, Molten Strike fires 2 additional Projectiles"] = getThreshold("Str", "ProjectileCount", "BASE", 2, { type = "SkillName", skillName = "Molten Strike" }), ["With at least 40 Strength in Radius, Molten Strike has 25% increased Area of Effect"] = getThreshold("Str", "AreaOfEffect", "INC", 25, { type = "SkillName", skillName = "Molten Strike" }), ["With at least 40 Strength in Radius, 25% of Glacial Hammer Physical Damage converted to Cold Damage"] = getThreshold("Str", "PhysicalDamageConvertToCold", "BASE", 25, { type = "SkillName", skillName = "Glacial Hammer" }), + ["With at least 40 Intelligence in Radius, Raised Zombies' Slam Attack has 100% increased Cooldown Recovery Speed"] = getThreshold("Int", "Misc", "LIST", { type = "MinionModifier", mod = mod("CooldownRecovery", "INC", 100, { type = "SkillName", skillName = "Zombie Slam" }) }), + ["With at least 40 Intelligence in Radius, Raised Zombies' Slam Attack deals 30% increased Damage"] = getThreshold("Int", "Misc", "LIST", { type = "MinionModifier", mod = mod("Damage", "INC", 30, { type = "SkillName", skillName = "Zombie Slam" }) }), --[""] = getThreshold("", "", "", , { type = "SkillName", skillName = "" }), } @@ -1033,7 +1129,7 @@ local function parseMod(line, order) else modName, line = scan(line, modNameList, true) end - if order == 1 and not skillTag then + if order == 1 and not skillTag then skillTag, line = scan(line, skillNameList, true) end @@ -1106,6 +1202,7 @@ local function parseMod(line, order) local flags = 0 local keywordFlags = 0 local tagList = { } + local misc = { } for _, data in pairs({ modName, modFlag, modTag, modTag2, skillTag }) do if type(data) == "table" then flags = bor(flags, data.flags or 0) @@ -1117,6 +1214,9 @@ local function parseMod(line, order) t_insert(tagList, copyTable(tag)) end end + for k, v in pairs(data) do + misc[k] = v + end end end @@ -1134,15 +1234,33 @@ local function parseMod(line, order) } end if modList[1] then - if modFlag and modFlag.addToAura then - -- Special handling for modifiers that add effects to your auras + -- Special handling for various modifier types + if misc.addToAura then + -- Modifiers that add effects to your auras for i, effectMod in ipairs(modList) do modList[i] = mod("ExtraAuraEffect", "LIST", { mod = effectMod }) end - elseif skillTag and skillTag.addToSkill then - -- Special handling for skill enchants that add additional effects + elseif misc.newAura then + -- Modifiers that add extra auras for i, effectMod in ipairs(modList) do - modList[i] = mod("ExtraSkillMod", "LIST", { mod = effectMod }, skillTag.addToSkill) + local tagList = effectMod.tagList + effectMod.tagList = { } + modList[i] = mod("ExtraAura", "LIST", { mod = effectMod, onlyAllies = misc.newAuraOnlyAllies }, unpack(tagList)) + end + elseif misc.affectedByAura then + -- Modifiers that apply to actors affected by your auras + for i, effectMod in ipairs(modList) do + modList[i] = mod("AffectedByAuraMod", "LIST", { mod = effectMod }) + end + elseif misc.addToMinion then + -- Minion modifiers + for i, effectMod in ipairs(modList) do + modList[i] = mod("Misc", "LIST", { type = "MinionModifier", mod = effectMod }, misc.addToMinionTag) + end + elseif misc.addToSkill then + -- Skill enchants that add additional effects + for i, effectMod in ipairs(modList) do + modList[i] = mod("ExtraSkillMod", "LIST", { mod = effectMod }, misc.addToSkill) end end end diff --git a/Modules/ModTools.lua b/Modules/ModTools.lua index 1bbd3408..f8be2179 100644 --- a/Modules/ModTools.lua +++ b/Modules/ModTools.lua @@ -58,30 +58,47 @@ function modLib.formatFlags(flags, src) return ret or "-" end +function modLib.formatTag(tag) + local paramNames = { } + local haveType + for name, val in pairs(tag) do + if name == "type" then + haveType = true + else + t_insert(paramNames, name) + end + end + table.sort(paramNames) + if haveType then + t_insert(paramNames, 1, "type") + end + local str = "" + for i, paramName in ipairs(paramNames) do + if i > 1 then + str = str .. "/" + end + local val = tag[paramName] + if type(val) == "table" then + if val[1] then + if type(val[1]) == "table" then + val = modLib.formatTags(val) + else + val = table.concat(val, ",") + end + else + val = modLib.formatTag(tag[paramName]) + end + val = "{"..val.."}" + end + str = str .. string.format("%s=%s", paramName, tostring(val)) + end + return str +end + function modLib.formatTags(tagList) local ret for _, tag in ipairs(tagList) do - local paramNames = { } - local haveType - for name, val in pairs(tag) do - if name == "type" then - haveType = true - else - t_insert(paramNames, name) - end - end - table.sort(paramNames) - if haveType then - t_insert(paramNames, 1, "type") - end - local str = "" - for i, paramName in ipairs(paramNames) do - if i > 1 then - str = str .. "/" - end - str = str .. string.format("%s=%s", paramName, tostring(tag[paramName])) - end - ret = (ret and ret.."," or "") .. str + ret = (ret and ret.."," or "") .. modLib.formatTag(tag) end return ret or "-" end diff --git a/PathOfBuilding.sln b/PathOfBuilding.sln index 96096f16..2179e421 100644 --- a/PathOfBuilding.sln +++ b/PathOfBuilding.sln @@ -12,17 +12,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution UpdateCheck.lua = UpdateCheck.lua EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Gems", "Gems", "{EE9D06F5-7310-4567-AB18-6923BCF0A2A1}" - ProjectSection(SolutionItems) = preProject - Data\Gems\act_dex.lua = Data\Gems\act_dex.lua - Data\Gems\act_int.lua = Data\Gems\act_int.lua - Data\Gems\act_str.lua = Data\Gems\act_str.lua - Data\Gems\other.lua = Data\Gems\other.lua - Data\Gems\sup_dex.lua = Data\Gems\sup_dex.lua - Data\Gems\sup_int.lua = Data\Gems\sup_int.lua - Data\Gems\sup_str.lua = Data\Gems\sup_str.lua - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Item bases", "Item bases", "{5BCB69A7-EFE8-4C72-B5E3-DF2C1E227290}" ProjectSection(SolutionItems) = preProject Data\Bases\amulet.lua = Data\Bases\amulet.lua @@ -50,8 +39,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{35D8 ProjectSection(SolutionItems) = preProject Modules\Build.lua = Modules\Build.lua Modules\BuildList.lua = Modules\BuildList.lua + Modules\CalcActiveSkill.lua = Modules\CalcActiveSkill.lua + Modules\CalcBreakdown.lua = Modules\CalcBreakdown.lua + Modules\CalcDefence.lua = Modules\CalcDefence.lua + Modules\CalcOffence.lua = Modules\CalcOffence.lua + Modules\CalcPerform.lua = Modules\CalcPerform.lua Modules\Calcs.lua = Modules\Calcs.lua Modules\CalcSections.lua = Modules\CalcSections.lua + Modules\CalcSetup.lua = Modules\CalcSetup.lua + Modules\CalcTools.lua = Modules\CalcTools.lua Modules\Common.lua = Modules\Common.lua Modules\Data.lua = Modules\Data.lua Modules\ItemTools.lua = Modules\ItemTools.lua @@ -80,6 +76,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Classes", "Classes", "{7EE4 Classes\ItemSlotControl.lua = Classes\ItemSlotControl.lua Classes\ItemsTab.lua = Classes\ItemsTab.lua Classes\LabelControl.lua = Classes\LabelControl.lua + Classes\MinionListControl.lua = Classes\MinionListControl.lua Classes\ModDB.lua = Classes\ModDB.lua Classes\ModList.lua = Classes\ModList.lua Classes\NotesTab.lua = Classes\NotesTab.lua @@ -102,10 +99,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{F2327651-C ProjectSection(SolutionItems) = preProject Data\EnchantmentBoots.lua = Data\EnchantmentBoots.lua Data\EnchantmentHelmet.lua = Data\EnchantmentHelmet.lua + Data\Minions.lua = Data\Minions.lua Data\ModFlask.lua = Data\ModFlask.lua Data\ModJewel.lua = Data\ModJewel.lua Data\New.lua = Data\New.lua Data\Rares.lua = Data\Rares.lua + Data\Spectres.lua = Data\Spectres.lua EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Unique items", "Unique items", "{D9D8B9D1-F114-40CB-8EFA-B0F753009183}" @@ -131,16 +130,28 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Unique items", "Unique item Data\Uniques\wand.lua = Data\Uniques\wand.lua EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Skills", "Skills", "{C25AF719-B309-41E2-8696-C07EEDA2FC45}" + ProjectSection(SolutionItems) = preProject + Data\Skills\act_dex.lua = Data\Skills\act_dex.lua + Data\Skills\act_int.lua = Data\Skills\act_int.lua + Data\Skills\act_str.lua = Data\Skills\act_str.lua + Data\Skills\minion.lua = Data\Skills\minion.lua + Data\Skills\other.lua = Data\Skills\other.lua + Data\Skills\sup_dex.lua = Data\Skills\sup_dex.lua + Data\Skills\sup_int.lua = Data\Skills\sup_int.lua + Data\Skills\sup_str.lua = Data\Skills\sup_str.lua + EndProjectSection +EndProject Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {EE9D06F5-7310-4567-AB18-6923BCF0A2A1} = {F2327651-CAA5-4DA0-91DB-EFA5E0E07A51} {5BCB69A7-EFE8-4C72-B5E3-DF2C1E227290} = {F2327651-CAA5-4DA0-91DB-EFA5E0E07A51} {35D8BE82-CD83-4C2D-AD31-47026E724F46} = {AE7B8DC6-833A-4817-915D-AAB9B8F17C1B} {7EE4DE67-DABD-4A3C-8772-37D4A9DB6D59} = {AE7B8DC6-833A-4817-915D-AAB9B8F17C1B} {F2327651-CAA5-4DA0-91DB-EFA5E0E07A51} = {AE7B8DC6-833A-4817-915D-AAB9B8F17C1B} {D9D8B9D1-F114-40CB-8EFA-B0F753009183} = {F2327651-CAA5-4DA0-91DB-EFA5E0E07A51} + {C25AF719-B309-41E2-8696-C07EEDA2FC45} = {F2327651-CAA5-4DA0-91DB-EFA5E0E07A51} EndGlobalSection EndGlobal diff --git a/README.md b/README.md index 2bc0551f..f94babfa 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Welcome to Path of Building, an offline build planner for Path of Exile! * Shows a summary of character stats in the side bar, as well as a detailed calcs breakdown tab which can show you how the stats were derived * Supports most skills, support gems, passives and item modifiers * Throughout the program, supported modifiers will show in blue and unsupported ones in red - * Most minion skill are unsupported at present (except for golems, which can provide buffs to you) + * Full support for minions * Passive skill tree planner: * Support for jewels including most radius/conversion jewels * Features alternate path tracing (mouse over a sequence of nodes while holding shift, then click to allocate them all) @@ -47,6 +47,43 @@ 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.4.0 - 2017/04/15 +This update adds support for Minions: + * Added support for the following skills: + * Blink Arrow + * Mirror Arrow + * Raise Spectre: + * A library of commonly used spectres has been added; with Raise Spectre is selected as the main skill, + you can click "Manage Spectres..." to browse it and add spectres to your build + * The level of the spectre can be set via a new option in the Configuration tab + * Spectre curses are disabled by default, and can be enabled in the Configuration tab + * Raise Zombie + * Summon Raging Spirit + * Summon Skeletons + * Vaal Summon Skeletons (except generals) + * Summon Spectal Wolf (from The Scourge) + * Added minion support for: + * Summon Chaos Golem + * Summon Flame Golem + * Summon Ice Golem + * Summon Lightning Golem (the Wrath aura can be enabled via a new option in the Configuration tab) + * Summon Stone Golem + * Added support for: + * Minion Instability (adds an extra 'Minion Instability' skill to your minions) + * Necromantic Aegis + * Most minion-related helmet enchantments +Other changes: + * A new section has been added to the Configuration tab for skill-specific options + * The section will only appear if at least one of your skills have options + * The only options added so far are those mentioned above, but more will be added later + * Skill cooldowns are now calculated and displayed + * Corrected or updated the wording of modifiers on several uniques + * Fixed several "NaN" values that could appear for mana-related stats when Blood Magic is allocated + +### 1.3.26 - 2017/04/08 + * Modifiers to Area of Effect of Aura Skills now correctly apply to curses supported by Blasphemy + * Corrected the implicits on Maraketh One-Handed Swords (thanks sherardy) + ### 1.3.25 - 2017/04/06 * You can now export and import builds directly to/from Pastebin.com links * Added support for the "Claw X also apply to Unarmed" modifiers on Rigwald's Curse