diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index e35fd09163..44bd08efec 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -12956,7 +12956,7 @@ c["Your Skills deal you 400% of Mana Spent on Upfront Skill Mana Costs as Physic c["Your Spells are disabled"]={{[1]={[1]={skillType=2,type="SkillType"},flags=0,keywordFlags=0,name="DisableSkill",type="FLAG",value=true},[2]={flags=0,keywordFlags=0,name="ForceEnableCurseApplication",type="FLAG",value=true}},nil} c["Your Spells have Culling Strike"]={{[1]={flags=2,keywordFlags=0,name="CullPercent",type="MAX",value=10}},nil} c["Your Warcries do not grant Buffs or Charges to You"]={{[1]={flags=0,keywordFlags=0,name="CannotGainWarcryBuffs",type="FLAG",value=true}},nil} -c["Your Warcries inflict Hallowing Flame"]={{[1]={flags=0,keywordFlags=0,name="Condition:CanInflictHallowingFlame",type="FLAG",value=true}},nil} +c["Your Warcries inflict Hallowing Flame"]={{[1]={[1]={type="Condition",var="UsedWarcryRecently"},flags=0,keywordFlags=0,name="Condition:CanInflictHallowingFlame",type="FLAG",value=true}},nil} c["Your hits can't be Evaded"]={{[1]={flags=0,keywordFlags=0,name="CannotBeEvaded",type="FLAG",value=true}},nil} c["Your nearby party members maximum Endurance Charges is equal to yours"]={{[1]={flags=0,keywordFlags=0,name="PartyMemberMaximumEnduranceChargesEqualToYours",type="FLAG",value=true}},nil} c["Your spells have 100% chance to Shock against Frozen enemies"]={nil,"Your spells have 100% chance to Shock against Frozen enemies "} diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index 2d3d34def7..d625080397 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -2929,6 +2929,14 @@ skills["SupportHallow"] = { excludeSkillTypes = { SkillType.SummonsTotem, SkillType.RemoteMined, SkillType.OtherThingUsesSkill, SkillType.Trapped, }, ignoreMinionTypes = true, statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["hallowing_flame_magnitude_+%"] = { + mod("HallowingFlameMagnitude", "INC", nil) + }, + ["support_hallow_inflict_hallowing_flame_on_melee_hit"] = { + flag("Condition:CanInflictHallowingFlame", { type = "GlobalEffect", effectType = "Global" }) + } + }, qualityStats = { Default = { { "hallowing_flame_magnitude_+%", 0.5 }, diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index 9e4296c60c..b7313ca961 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -420,6 +420,14 @@ local skills, mod, flag, skill = ... #mods #skill SupportHallow + statMap = { + ["hallowing_flame_magnitude_+%"] = { + mod("HallowingFlameMagnitude", "INC", nil) + }, + ["support_hallow_inflict_hallowing_flame_on_melee_hit"] = { + flag("Condition:CanInflictHallowingFlame", { type = "GlobalEffect", effectType = "Global" }) + } + }, #mods #skill SupportMoreDuration diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 22c3d893f7..f0a930c285 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1425,13 +1425,6 @@ function calcs.perform(env, skipEHP) end end - if modDB:Flag(env.player.mainSkill.skillCfg, "Condition:CanInflictHallowingFlame") then - local magnitude = 1 + modDB:Sum("INC", nil, "HallowingFlameMagnitude") / 100 - local val = m_floor(25 * magnitude) -- Hallowing flame grants Attack Hits against you gain 25% of Physical Damage as Extra Fire Damage - modDB:NewMod("Multiplier:HallowingFlameMax", "BASE", 1, "Base") - modDB:NewMod("ExtraAura", "LIST", { onlyAllies = true, mod = modLib.createMod("PhysicalDamageGainAsLightning", "BASE", val, "Hallowing Flame", { type = "GlobalEffect", effectType = "Global", unscalable = true }, { type = "ActorCondition", actor = "enemy", var = "HallowingFlame" }, { type = "Multiplier", var = "HallowingFlame", actor = "enemy", limitActor = "parent", limitVar = "HallowingFlameMax" }) }) - end - -- Special handling of Mageblood local maxLeftActiveMagicUtilityCount = modDB:Sum("BASE", nil, "LeftActiveMagicUtilityFlasks") local maxRightActiveMagicUtilityCount = modDB:Sum("BASE", nil, "RightActiveMagicUtilityFlasks") @@ -2127,6 +2120,8 @@ function calcs.perform(env, skipEHP) -- Nothing! elseif buff.enemyCond and not enemyDB:GetCondition(buff.enemyCond) then -- Also nothing :/ + elseif buff.type == "Global" then + modDB:AddList(buff.modList) -- Allows a skill mod to affect other skills through modDB elseif buff.type == "Buff" and not skillModList:Flag(skillCfg, "DisableBuff") then if env.mode_buffs and (not activeSkill.skillFlags.totem or buff.allowTotemBuff) then local skillCfg = buff.activeSkillBuff and skillCfg @@ -3201,6 +3196,23 @@ function calcs.perform(env, skipEHP) doActorLifeManaReservation(env.player, true) end + if not env.minion and modDB:Flag(env.player.mainSkill.skillCfg, "Condition:CanInflictHallowingFlame") then + local magnitude = modDB:Override(nil, "HallowingFlameMagnitude") + + if env.mode == "MAIN" or not magnitude then + local magnitudeinc = modDB:Sum("INC", nil, "HallowingFlameMagnitude") + magnitude = magnitude or magnitudeinc + if env.mode == "MAIN" then + env.build.configTab.varControls['conditionHallowingFlameMagnitude']:SetPlaceholder(magnitudeinc, true) + end + end + + local val = m_floor(25 * (1 + magnitude / 100)) -- Hallowing flame grants Attack Hits against you gain 25% of Physical Damage as Extra Fire Damage + modDB:NewMod("Multiplier:HallowingFlameMax", "BASE", 1, "Base") + modDB:NewMod("ExtraAura", "LIST", { onlyAllies = true, mod = modLib.createMod("PhysicalDamageGainAsLightning", "BASE", val, "Hallowing Flame", { type = "GlobalEffect", effectType = "Global", unscalable = true }, { type = "ActorCondition", actor = "enemy", var = "HallowingFlame" }, { type = "Multiplier", var = "HallowingFlame", actor = "enemy", limitActor = "parent", limitVar = "HallowingFlameMax" }) }) + end + + -- Check for extra auras buffExports["Aura"]["extraAura"] = { effectMult = 1, modList = new("ModList") } for _, value in ipairs(modDB:List(nil, "ExtraAura")) do diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index c7d685522c..5fb657ea2c 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1920,15 +1920,18 @@ Huge sets the radius to 11. { var = "conditionEnemyCrushed", type = "check", label = "Is the enemy Crushed?", tooltip = "Crushed enemies have 15% reduced Physical Damage Reduction.", apply = function(val, modList, enemyModList) enemyModList:NewMod("Condition:Crushed", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "conditionEnemyHallowingFlame", type = "check", label = "Is enemy affected by Hallowing Flame?", ifFlag = "Condition:CanInflictHallowingFlame", apply = function(val, modList, enemyModList) + { var = "conditionEnemyHallowingFlame", type = "check", label = "Is enemy affected by Hallowing Flame?", ifFlag = "Condition:CanInflictHallowingFlame", apply = function(val, modList, enemyModList, build) enemyModList:NewMod("Condition:HallowingFlame", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) end }, - { var = "multiplierEnemyHallowingFlame", type = "count", label = "Hallowing Flame Stacks", ifOption = "conditionEnemyHallowingFlame", ifMod = "Multiplier:HallowingFlameMax", defaultPlaceholderState = 1, tooltip = "Amount of Hallowing Flame stacks applied to the enemy.", apply = function(val, modList, enemyModList) + { var = "multiplierEnemyHallowingFlame", type = "count", label = "Hallowing Flame stacks", ifOption = "conditionEnemyHallowingFlame", defaultPlaceholderState = 1, tooltip = "Amount of Hallowing Flame stacks applied to the enemy.", apply = function(val, modList, enemyModList) enemyModList:NewMod("Multiplier:HallowingFlame", "BASE", val, "Config", { type = "Condition", var = "Effective" }) end }, { var = "multiplierHallowingFlameStacksRemovedByAlly", type = "countAllowZero", label = "Hallowing Flames removed by an ally recently", ifOption = "conditionEnemyHallowingFlame", ifMult = "HallowingFlameStacksRemovedByAlly", defaultPlaceholderState = 1, tooltip = "Amount of Hallowing Flame stacks removed from enemies by allies recently.", apply = function(val, modList, enemyModList) modList:NewMod("Multiplier:HallowingFlameStacksRemovedByAlly", "BASE", val, "Config") end }, + { var = "conditionHallowingFlameMagnitude", type = "countAllowZero", label = "Inc. magnitude of Hallowing Flame stacks", ifOption = "conditionEnemyHallowingFlame", tooltip = "The magnitude of Hallowing Flame stacks applied to the enemy", apply = function(val, modList, enemyModList) + modList:NewMod("HallowingFlameMagnitude", "OVERRIDE", val, "Config") + end }, { var = "conditionNearLinkedTarget", type = "check", label = "Is the enemy near you Linked target?", ifEnemyCond = "NearLinkedTarget", apply = function(val, modList, enemyModList) enemyModList:NewMod("Condition:NearLinkedTarget", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) end }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 49510213e8..39bc70a8d5 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -4165,7 +4165,7 @@ local specialModList = { ["non%-curse auras from your skills only apply to you and linked targets"] = { flag("SelfAurasAffectYouAndLinkedTarget", { type = "SkillType", skillType = SkillType.Aura }, { type = "SkillType", skillType = SkillType.AppliesCurse, neg = true }) }, ["linked targets always count as in range of non%-curse auras from your skills"] = { }, ["gain unholy might on block for (%d) seconds"] = { flag("Condition:UnholyMight", { type = "Condition", var = "BlockedRecently"}), flag("Condition:CanWither", { type = "Condition", var = "BlockedRecently"}), }, - ["your warcries inflict hallowing flame"] = { flag("Condition:CanInflictHallowingFlame") }, + ["your warcries inflict hallowing flame"] = { flag("Condition:CanInflictHallowingFlame", { type = "Condition", var = "UsedWarcryRecently" }) }, ["attacks with this weapon inflict hallowing flame on hit"] = { flag("Condition:CanInflictHallowingFlame") }, ["inflict hallowing flame on hit while on consecrated ground"] = { flag("Condition:CanInflictHallowingFlame", { type = "Condition", var = "OnConsecratedGround" }) }, ["inflict hallowing flame on melee hit"] = { flag("Condition:CanInflictHallowingFlame") },