diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index b846e2a14..87d2ea004 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -5682,7 +5682,7 @@ c["Inflict Abyssal Wasting on Hit 100% increased Magnitude of Abyssal Wasting yo c["Inflict Cold Exposure on Igniting an Enemy"]={nil,"Inflict Cold Exposure on Igniting an Enemy "} c["Inflict Cold Exposure on Igniting an Enemy Inflict Fire Exposure on Shocking an Enemy"]={nil,"Inflict Cold Exposure on Igniting an Enemy Inflict Fire Exposure on Shocking an Enemy "} c["Inflict Corrupted Blood for 5 seconds on Block, dealing 50% of"]={nil,"Inflict Corrupted Blood for 5 seconds on Block, dealing 50% of "} -c["Inflict Corrupted Blood for 5 seconds on Block, dealing 50% of your maximum Life as Physical damage per second"]={nil,"Inflict Corrupted Blood for 5 seconds on Block, dealing 50% of your maximum Life as Physical damage per second "} +c["Inflict Corrupted Blood for 5 seconds on Block, dealing 50% of your maximum Life as Physical damage per second"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,name="Bloodbarrier",noSupports=true,skillId="BloodbarrierPlayer"}},[2]={[1]={skillId="BloodbarrierPlayer",type="SkillId"},flags=0,keywordFlags=0,name="ExtraSkillStat",type="LIST",value={key="unique_blood_barrier_applies_x_stacks_of_corrupted_blood_on_block",value=1}},[3]={[1]={skillId="BloodbarrierPlayer",type="SkillId"},flags=0,keywordFlags=0,name="ExtraSkillStat",type="LIST",value={key="base_skill_effect_duration",value=5000}},[4]={[1]={skillId="BloodbarrierPlayer",type="SkillId"},flags=0,keywordFlags=0,name="ExtraSkillStat",type="LIST",value={key="base_physical_damage_%_of_maximum_life_to_deal_per_minute",value=50}}},nil} c["Inflict Elemental Exposure on Hit, lowering Total Elemental Resistances by 30%"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="FireExposure",type="BASE",value=30}}},[2]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="ColdExposure",type="BASE",value=30}}},[3]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="LightningExposure",type="BASE",value=30}}}},nil} c["Inflict Elemental Exposure on Hit, lowering Total Elemental Resistances by 55%"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="FireExposure",type="BASE",value=55}}},[2]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="ColdExposure",type="BASE",value=55}}},[3]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="LightningExposure",type="BASE",value=55}}}},nil} c["Inflict Elemental Exposure on Hit, lowering Total Elemental Resistances by 60%"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="FireExposure",type="BASE",value=60}}},[2]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="ColdExposure",type="BASE",value=60}}},[3]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="LightningExposure",type="BASE",value=60}}}},nil} @@ -6608,6 +6608,5 @@ c["until you take no Damage to Life for 5 seconds"]={nil,"until you take no Dama c["until you take no Damage to Life for 5 seconds Life that would be lost by taking Damage is instead Reserved"]={nil,"until you take no Damage to Life for 5 seconds Life that would be lost by taking Damage is instead Reserved "} c["you Shapeshift to an Animal form"]={nil,"you Shapeshift to an Animal form "} c["you Shapeshift to an Animal form Modifiers gained this way are lost after 30 seconds or when you next Shapeshift"]={nil,"you Shapeshift to an Animal form Modifiers gained this way are lost after 30 seconds or when you next Shapeshift "} -c["your maximum Life as Physical damage per second"]={nil,"your maximum Life as Physical damage per second "} c["your maximum number of Power Charges"]={nil,"your maximum number of Power Charges "} c["your maximum number of Power Charges +1 to Maximum Power Charges"]={nil,"your maximum number of Power Charges +1 to Maximum Power Charges "} diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 89d2e061b..ee5de735b 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -20756,6 +20756,42 @@ skills["AncientGiftsPlayer"] = { }, } } + skills["BloodbarrierPlayer"] = { + name = "Bloodbarrier", + baseTypeName = "Bloodbarrier", + fromItem = true, + skillTypes = { [SkillType.Duration] = true, [SkillType.AttackInPlace] = true, [SkillType.Physical] = true, [SkillType.DamageOverTime] = true }, + cannotBeSupported = true, + castTime = 0, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Corrupted Blood", + incrementalEffectiveness = 0, + statDescriptionScope = "skill_stat_descriptions", + statMap = { + ["base_physical_damage_%_of_maximum_life_to_deal_per_minute"] = { + skill("PhysicalDot", nil, { type = "PercentStat", stat = "Life", percent = 1 }), + }, + }, + baseFlags = { + duration = true, + }, + baseMods = { + skill("debuff", true), + flag("dotIsCorruptingBlood"), + }, + constantStats = {}, + stats = {}, + levels = { + [1] = {}, + }, + }, + }, + } + skills["EnemyExplode"] = { name = "On Kill Monster Explosion", hidden = true, diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 831aa3e98..e694ce089 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -1450,6 +1450,42 @@ statMap = { #mods #skillEnd +skills["BloodbarrierPlayer"] = { + name = "Bloodbarrier", + baseTypeName = "Bloodbarrier", + fromItem = true, + skillTypes = { [SkillType.Duration] = true, [SkillType.AttackInPlace] = true, [SkillType.Physical] = true, [SkillType.DamageOverTime] = true }, + cannotBeSupported = true, + castTime = 0, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Corrupted Blood", + incrementalEffectiveness = 0, + statDescriptionScope = "skill_stat_descriptions", + statMap = { + ["base_physical_damage_%_of_maximum_life_to_deal_per_minute"] = { + skill("PhysicalDot", nil, { type = "PercentStat", stat = "Life", percent = 1 }), + }, + }, + baseFlags = { + duration = true, + }, + baseMods = { + skill("debuff", true), + flag("dotIsCorruptingBlood"), + }, + constantStats = {}, + stats = {}, + levels = { + [1] = {}, + }, + }, + }, +} + skills["EnemyExplode"] = { name = "On Kill Monster Explosion", hidden = true, diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 02c55fe4d..52f64da75 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -1928,7 +1928,7 @@ function calcs.initEnv(build, mode, override, specEnv) if grantedEffect.name:match("^Companion:") or grantedEffect.name:match("^Spectre:") then group.displayLabel = (group.displayLabel and group.displayLabel..", " or "") .. gemInstance.nameSpec else - group.displayLabel = (group.displayLabel and group.displayLabel..", " or "") .. gemName or grantedEffect.name + group.displayLabel = (group.displayLabel and group.displayLabel..", " or "") .. (gemName or grantedEffect.name) end end end diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 4dc7443fd..ed1b682bf 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -3611,6 +3611,12 @@ local specialModList = { mod("ExtraSkill", "LIST", { skillId = gemIdLookup[skill2], level = num, triggered = true }), mod("ExtraSkill", "LIST", { skillId = gemIdLookup[skill3], level = num, triggered = true }), } end, + ["inflict corrupted blood for ([%d%.]+) seconds on block, dealing ([%d%.]+)%% of your maximum life as physical damage per second"] = function(_, duration, percent) return { + mod("ExtraSkill", "LIST", { skillId = "BloodbarrierPlayer", level = 1, noSupports = true, name = "Bloodbarrier" }), + mod("ExtraSkillStat", "LIST", { key = "unique_blood_barrier_applies_x_stacks_of_corrupted_blood_on_block", value = 1 }, { type = "SkillId", skillId = "BloodbarrierPlayer" }), + mod("ExtraSkillStat", "LIST", { key = "base_skill_effect_duration", value = math.floor(tonumber(duration) * 1000 + 0.001)}, { type = "SkillId", skillId = "BloodbarrierPlayer" }), + mod("ExtraSkillStat", "LIST", { key = "base_physical_damage_%_of_maximum_life_to_deal_per_minute", value = tonumber(percent) }, { type = "SkillId", skillId = "BloodbarrierPlayer" }), + } end, ["offering skills triggered this way also affect you"] = { mod("ExtraSkillMod", "LIST", { mod = mod("SkillData", "LIST", { key = "buffNotPlayer", value = false }) }, { type = "SkillName", skillNameList = { "Bone Offering", "Flesh Offering", "Spirit Offering" } }, { type = "SocketedIn", slotName = "{SlotName}" }) }, ["trigger level (%d+) (.+) after spending a total of (%d+) mana"] = function(num, _, skill) return triggerExtraSkill(skill, num) end, ["consumes a void charge to trigger level (%d+) (.+) when you fire arrows"] = function(num, _, skill) return triggerExtraSkill(skill, num) end,