diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 5e65cff1d4..95cd0cf326 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -9173,8 +9173,7 @@ c["Gain a Spirit Charge on Kill Recover 5% of Life when you lose a Spirit Charge c["Gain a Void Charge every 0.5 seconds"]={nil,"a Void Charge every 0.5 seconds "} c["Gain a Void Charge every second"]={nil,"a Void Charge every second "} c["Gain a Void Charge every second 5 Maximum Void Charges"]={nil,"a Void Charge every second 5 Maximum Void Charges "} -c["Gain a random Blood Shrine buff every 10 seconds"]={nil,"a random Blood Shrine buff every 10 seconds "} -c["Gain a random Blood Shrine buff every 10 seconds 2% increased Effect of Shrine Buffs on you for each 5% of Life Reserved"]={nil,"a random Blood Shrine buff every 10 seconds 2% increased Effect of Shrine Buffs on you "} +c["Gain a random Blood Shrine buff every 10 seconds"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanHaveBloodShrines",type="FLAG",value=true}},nil} c["Gain a random Shrine Buff for 30 seconds when you Kill a Rare or Unique Enemy"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanHaveRegularShrines",type="FLAG",value=true}},nil} c["Gain a random Shrine buff every 10 seconds"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanHaveRegularShrines",type="FLAG",value=true}},nil} c["Gain additional Elemental Damage Reduction equal to half your Chaos Resistance"]={{[1]={[1]={div=2,stat="ChaosResist",type="PerStat"},flags=0,keywordFlags=0,name="ElementalDamageReduction",type="BASE",value=1}},nil} diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 65b8a15b3e..3ee3902428 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -371,6 +371,24 @@ local function doActorAttribsConditions(env, actor) modDB:NewMod("ElementalResistMax", "BASE", m_floor(2 * shrineEffectMod), "Lesser Resistance Shrine") modDB:NewMod("ChaosResistMax", "BASE", m_floor(2 * shrineEffectMod), "Lesser Resistance Shrine") end + if modDB:Flag(nil, "BloodShrineOfRats") then + modDB:NewMod("ElementalDamageGainAsChaos", "BASE", m_floor(30 * shrineEffectMod), "Blood Shrine of Rats") + end + if modDB:Flag(nil, "BloodShrineOfLocusts") then + modDB:NewMod("DotMultiplier", "BASE", m_floor(30 * shrineEffectMod), "Blood Shrine of Locusts") + end + if modDB:Flag(nil, "BloodShrineOfToads") then + modDB:NewMod("BloodShrineExplodingToadTriggerChance", "BASE", m_floor(25 * shrineEffectMod), "Blood Shrine of Toads") + end + if modDB:Flag(nil, "BloodShrineOfCrows") then + modDB:NewMod("ChaosResist", "BASE", m_floor(50 * shrineEffectMod), "Blood Shrine of Crows") + modDB:NewMod("ElementalDamageTakenAsChaos", "BASE", m_floor(10 * shrineEffectMod), "Blood Shrine of Crows") + modDB:NewMod("PhysicalDamageTakenAsChaos", "BASE", m_floor(10 * shrineEffectMod), "Blood Shrine of Crows") + end + if modDB:Flag(nil, "BloodShrineOfBats") then + modDB:NewMod("EnemyCurseLimit", "BASE", m_floor(1 * shrineEffectMod), "Blood Shrine of Bats") + modDB:NewMod("ExtraCurse", "LIST", { skillId = "Enfeeble", level = 1 }, "Blood Shrine of Bats") + end end if env.mode_effective then if env.player.mainSkill.skillModList:Sum("BASE", env.player.mainSkill.skillCfg, "FireExposureChance") > 0 or modDB:Sum("BASE", nil, "FireExposureChance") > 0 then diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 4c7561e616..9a2594a796 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -103,6 +103,11 @@ function calcs.initModDB(env, modDB) modDB:NewMod("LesserMassiveShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserMassiveShrine" }, { type = "Condition", var = "MassiveShrine", neg = true }) modDB:NewMod("LesserReplenishingShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserReplenishingShrine" }, { type = "Condition", var = "ReplenishingShrine", neg = true }) modDB:NewMod("LesserResistanceShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserResistanceShrine" }, { type = "Condition", var = "ResistanceShrine", neg = true }) + modDB:NewMod("BloodShrineOfRats", "FLAG", true, "Base", { type = "Condition", var = "BloodShrineOfRats" }) + modDB:NewMod("BloodShrineOfLocusts", "FLAG", true, "Base", { type = "Condition", var = "BloodShrineOfLocusts" }) + modDB:NewMod("BloodShrineOfToads", "FLAG", true, "Base", { type = "Condition", var = "BloodShrineOfToads" }) + modDB:NewMod("BloodShrineOfCrows", "FLAG", true, "Base", { type = "Condition", var = "BloodShrineOfCrows" }) + modDB:NewMod("BloodShrineOfBats", "FLAG", true, "Base", { type = "Condition", var = "BloodShrineOfBats" }) modDB:NewMod("AlchemistsGenius", "FLAG", true, "Base", { type = "Condition", var = "AlchemistsGenius" }) modDB:NewMod("LuckyHits", "FLAG", true, "Base", { type = "Condition", var = "LuckyHits" }) modDB:NewMod("Convergence", "FLAG", true, "Base", { type = "Condition", var = "Convergence" }) @@ -1397,6 +1402,9 @@ function calcs.initEnv(build, mode, override, specEnv) group.noSupports = grantedSkill.noSupports activeGemInstance.triggered = grantedSkill.triggered activeGemInstance.triggerChance = grantedSkill.triggerChance + if grantedSkill.skillId == "BloodShrineUniqueTriggeredExplodingToad" and grantedSkill.triggerChance then + activeGemInstance.triggerChance = m_min(grantedSkill.triggerChance + env.player.modDB:Sum("BASE", nil, "BloodShrineExplodingToadTriggerChance"), 100) + end wipeTable(group.gemList) t_insert(group.gemList, activeGemInstance) build.skillsTab:ProcessSocketGroup(group) diff --git a/src/Modules/Calcs.lua b/src/Modules/Calcs.lua index 53c162160d..970e731e04 100644 --- a/src/Modules/Calcs.lua +++ b/src/Modules/Calcs.lua @@ -770,6 +770,21 @@ function calcs.buildOutput(build, mode) if env.modDB:Flag(nil, "LesserResistanceShrine") then t_insert(combatList, "Lesser Resistance Shrine") end + if env.modDB:Flag(nil, "BloodShrineOfRats") then + t_insert(combatList, "Blood Shrine of Rats") + end + if env.modDB:Flag(nil, "BloodShrineOfLocusts") then + t_insert(combatList, "Blood Shrine of Locusts") + end + if env.modDB:Flag(nil, "BloodShrineOfToads") then + t_insert(combatList, "Blood Shrine of Toads") + end + if env.modDB:Flag(nil, "BloodShrineOfCrows") then + t_insert(combatList, "Blood Shrine of Crows") + end + if env.modDB:Flag(nil, "BloodShrineOfBats") then + t_insert(combatList, "Blood Shrine of Bats") + end for name in pairs(env.buffs) do t_insert(buffList, name) end diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 2a4b9df8ee..f6d27f878f 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1749,6 +1749,21 @@ Huge sets the radius to 11. { var = "buffLesserResistanceShrine", type = "check", label = "Have Lesser Resistance Shrine?", ifFlag = "Condition:CanHaveLesserShrines", tooltip = "This will enable the Lesser Resistance Shrine buff.\n\t+25% to all Elemental Resistances\n\t+2% to all maximum Resistances", apply = function(val, modList, enemyModList) modList:NewMod("Condition:LesserResistanceShrine", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, + { var = "buffBloodShrineOfRats", type = "check", label = "Have Blood Shrine of Rats?", ifFlag = "Condition:CanHaveBloodShrines", tooltip = "This will enable the Blood Shrine of Rats buff.\n\tGain 30% of Elemental Damage as Extra Chaos Damage", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:BloodShrineOfRats", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "buffBloodShrineOfLocusts", type = "check", label = "Have Blood Shrine of Locusts?", ifFlag = "Condition:CanHaveBloodShrines", tooltip = "This will enable the Blood Shrine of Locusts buff.\n\t+30% to Damage over Time Multiplier", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:BloodShrineOfLocusts", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "buffBloodShrineOfToads", type = "check", label = "Have Blood Shrine of Toads?", ifFlag = "Condition:CanHaveBloodShrines", tooltip = "This will enable the Blood Shrine of Toads buff.\n\tExplosive Toad has an additional 25% chance to Trigger when you kill an Enemy", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:BloodShrineOfToads", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "buffBloodShrineOfCrows", type = "check", label = "Have Blood Shrine of Crows?", ifFlag = "Condition:CanHaveBloodShrines", tooltip = "This will enable the Blood Shrine of Crows buff.\n\t+50% to Chaos Resistance\n\t10% of Elemental Damage taken as Chaos Damage\n\t10% of Physical Damage taken as Chaos Damage", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:BloodShrineOfCrows", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "buffBloodShrineOfBats", type = "check", label = "Have Blood Shrine of Bats?", ifFlag = "Condition:CanHaveBloodShrines", tooltip = "This will enable the Blood Shrine of Bats buff.\n\tCurse Enemies with Enfeeble on Hit\n\tYou can apply an additional Curse", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:BloodShrineOfBats", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, -- Section: Effective DPS options { section = "For Effective DPS", col = 1 }, { var = "skillForkCount", type = "count", label = "# of times Skill has Forked:", ifFlag = "forking", apply = function(val, modList, enemyModList) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 5653133ebf..dd4483a5b0 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -5605,6 +5605,7 @@ local specialModList = { ["gain elusive on critical strike"] = { flag("Condition:CanBeElusive") }, ["gain a random shrine buff every (%d+) seconds"] = { flag("Condition:CanHaveRegularShrines") }, ["gain a random shrine buff for (%d+) seconds when you kill a rare or unique enemy"] = { flag("Condition:CanHaveRegularShrines") }, + ["gain a random blood shrine buff every (%d+) seconds"] = { flag("Condition:CanHaveBloodShrines") }, ["(%d+)%% chance to gain elusive when you block while dual wielding"] = { flag("Condition:CanBeElusive", { type = "Condition", var = "DualWielding" }) }, ["elusive on you reduces in effect (%d+)%% slower"] = function(num) return { mod("ElusiveEffectLossSlower", "INC", num) } end, ["elusive's effect on you is increased instead for the first (%d+) seconds"] = function(num) return { mod("ElusiveEffectIncreaseDuration", "BASE", num) } end,