diff --git a/src/Data/Misc.lua b/src/Data/Misc.lua index ca328dec9..59bd44539 100644 --- a/src/Data/Misc.lua +++ b/src/Data/Misc.lua @@ -99,7 +99,7 @@ data.gameConstants = { ["ImpaleMaximumStacks"] = 60, ["PlayerAilmentThresholdLifeFactor"] = 0.5, ["BaseShieldRegenCooldownTimeMs"] = 4000, - ["CullingStrikeNormalThreshold"] = 30, + ["CullingStrikeNormalThreshold"] = 35, ["CullingStrikeMagicThreshold"] = 20, ["CullingStrikeRareThreshold"] = 10, ["CullingStrikeUniqueThreshold"] = 5, diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index fa62f77c9..99620e6f8 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2637,8 +2637,8 @@ c["40% increased Critical Hit Chance for Spells"]={{[1]={flags=2,keywordFlags=0, c["40% increased Critical Hit Chance if you haven't dealt a Critical Hit Recently"]={{[1]={[1]={neg=true,type="Condition",var="CritRecently"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=40}},nil} c["40% increased Critical Spell Damage Bonus"]={{[1]={flags=2,keywordFlags=0,name="CritMultiplier",type="INC",value=40}},nil} c["40% increased Crossbow Reload Speed"]={{[1]={flags=67108865,keywordFlags=0,name="ReloadSpeed",type="INC",value=40}},nil} -c["40% increased Culling Strike Threshold against Immobilised Enemies"]={{}," Culling Strike Threshold "} -c["40% increased Culling Strike Threshold against Rare or Unique Enemies"]={{}," Culling Strike Threshold "} +c["40% increased Culling Strike Threshold against Immobilised Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Immobilised"},flags=0,keywordFlags=0,name="CullPercent",type="INC",value=40}},nil} +c["40% increased Culling Strike Threshold against Rare or Unique Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="RareOrUnique"},flags=0,keywordFlags=0,name="CullPercent",type="INC",value=40}},nil} c["40% increased Curse Duration"]={{[1]={flags=0,keywordFlags=2,name="Duration",type="INC",value=40}},nil} c["40% increased Damage"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=40}},nil} c["40% increased Damage if you've Triggered a Skill Recently"]={{[1]={[1]={type="Condition",var="TriggeredSkillRecently"},flags=0,keywordFlags=0,name="Damage",type="INC",value=40}},nil} @@ -4475,7 +4475,7 @@ c["Bow Attacks consume 10% of your maximum Life Flask Charges if possible to dea c["Bow Attacks consume 10% of your maximum Life Flask Charges if possible to deal added Physical damage equal to 5% of Flask's Life Recovery amount"]={nil,"Bow Attacks consume 10% of your maximum Life Flask Charges if possible to deal added Physical damage equal to 5% of Flask's Life Recovery amount "} c["Bow Attacks consume 10% of your maximum Life Flask Charges if possible to deal added Physical damage equal to 5% of Flask's Life Recovery amount Bow Attacks consume 10% of your maximum Life Flask Charges if possible to deal added Physical damage equal to 10% of Flask's Life Recovery amount"]={nil,"Bow Attacks consume 10% of your maximum Life Flask Charges if possible to deal added Physical damage equal to 5% of Flask's Life Recovery amount Bow Attacks consume 10% of your maximum Life Flask Charges if possible to deal added Physical damage equal to 10% of Flask's Life Recovery amount "} c["Bow Attacks fire 3 additional Arrows"]={{[1]={flags=0,keywordFlags=2048,name="ProjectileCount",type="BASE",value=3}},nil} -c["Bow Attacks have Culling Strike"]={{[1]={flags=131073,keywordFlags=0,name="CullPercent",type="MAX",value=10}},nil} +c["Bow Attacks have Culling Strike"]={{[1]={flags=131073,keywordFlags=0,name="CanCull",type="FLAG",value=1}},nil} c["Break 10% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="ArmourBreakPerHit",type="INC",value=10}},nil} c["Break 15% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="ArmourBreakPerHit",type="INC",value=15}},nil} c["Break 20% increased Armour"]={{[1]={flags=0,keywordFlags=0,name="ArmourBreakPerHit",type="INC",value=20}},nil} @@ -4619,10 +4619,10 @@ c["Critical Hits with Spells apply 3 Stack of Critical Weakness"]={nil,"Critical c["Critical Hits with Spells apply 5 Stacks of Critical Weakness"]={nil,"Critical Hits with Spells apply 5 Stacks of Critical Weakness "} c["Critical Hits with Spells apply 5 Stacks of Critical Weakness Critical Hits with Spells apply 3 Stack of Critical Weakness"]={nil,"Critical Hits with Spells apply 5 Stacks of Critical Weakness Critical Hits with Spells apply 3 Stack of Critical Weakness "} c["Crushes Enemies on Hit"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="Condition:Crushed",type="FLAG",value=true}}}},nil} -c["Culling Strike"]={{[1]={[1]={effectType="Global",type="GlobalEffect",unscalable=true},flags=0,keywordFlags=0,name="CullPercent",type="MAX",value=10}},nil} +c["Culling Strike"]={{[1]={[1]={effectType="Global",type="GlobalEffect",unscalable=true},flags=0,keywordFlags=0,name="CanCull",type="FLAG",value=1}},nil} c["Culling Strike against Beasts while your Companion is in your Presence"]={nil,"Culling Strike against Beasts while your Companion is in your Presence "} -c["Culling Strike against Enemies you Mark"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Marked"},flags=0,keywordFlags=0,name="CullPercent",type="MAX",value=10}},nil} -c["Culling Strike against Frozen Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Frozen"},flags=0,keywordFlags=0,name="CullPercent",type="MAX",value=10}},nil} +c["Culling Strike against Enemies you Mark"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Marked"},flags=0,keywordFlags=0,name="CanCull",type="FLAG",value=1}},nil} +c["Culling Strike against Frozen Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Frozen"},flags=0,keywordFlags=0,name="CanCull",type="FLAG",value=1}},nil} c["Current Energy Shield also grants Elemental Damage reduction"]={{[1]={[1]={limit=150,type="Multiplier",var="CurrentEnergyShield"},[2]={type="Condition",var="UseCurrentEnergyShield"},flags=0,keywordFlags=0,name="EnergyShieldAppliesToColdDamageTaken",type="BASE",value=1},[2]={[1]={limit=150,type="Multiplier",var="CurrentEnergyShield"},[2]={type="Condition",var="UseCurrentEnergyShield"},flags=0,keywordFlags=0,name="EnergyShieldAppliesToFireDamageTaken",type="BASE",value=1},[3]={[1]={limit=150,type="Multiplier",var="CurrentEnergyShield"},[2]={type="Condition",var="UseCurrentEnergyShield"},flags=0,keywordFlags=0,name="EnergyShieldAppliesToLightningDamageTaken",type="BASE",value=1}},nil} c["Curse Enemies with Enfeeble on Block"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,noSupports=true,skillId="EnfeeblePlayer",triggered=true}}},nil} c["Curse Skills have 15% increased Cast Speed"]={{[1]={flags=16,keywordFlags=2,name="Speed",type="INC",value=15}},nil} @@ -5308,7 +5308,7 @@ c["Hits against you have 5% reduced Critical Damage Bonus"]={{[1]={flags=0,keywo c["Hits have 15% chance to treat Enemy Monster Elemental Resistance values as inverted"]={{[1]={flags=0,keywordFlags=0,name="HitsInvertEleResChance",type="CHANCE",value=0.15}},nil} c["Hits have 25% reduced Critical Hit Chance against you"]={{[1]={flags=0,keywordFlags=0,name="EnemyCritChance",type="INC",value=-25}},nil} c["Hits ignore non-negative Elemental Resistances of Frozen Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Frozen"},flags=0,keywordFlags=0,name="IgnoreNonNegativeEleRes",type="FLAG",value=true}},nil} -c["Hits that Heavy Stun Enemies have Culling Strike"]={{[1]={[1]={type="Condition",var="AlwaysHeavyStunning"},flags=0,keywordFlags=0,name="CullPercent",type="MAX",value=10}},nil} +c["Hits that Heavy Stun Enemies have Culling Strike"]={{[1]={[1]={type="Condition",var="AlwaysHeavyStunning"},flags=0,keywordFlags=0,name="CanCull",type="FLAG",value=1}},nil} c["If you would gain a Charge, Allies in your Presence gain that Charge instead"]={nil,"If you would gain a Charge, that Charge instead "} c["Ignite inflicted with Fire Spells deals Chaos Damage instead of Fire Damage"]={{[1]={[1]={skillType=2,type="SkillType"},[2]={skillType=28,type="SkillType"},flags=0,keywordFlags=0,name="IgniteToChaos",type="FLAG",value=true},[2]={[1]={skillType=2,type="SkillType"},[2]={skillType=28,type="SkillType"},flags=0,keywordFlags=0,name="SkillData",type="LIST",value={key="IgniteToChaos",value=true}}},nil} c["Ignites you cause are reflected back to you"]={nil,"Ignites you cause are reflected back to you "} diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 8aa1dae89..5fdd326fd 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2705,8 +2705,7 @@ return { mod("AdditionalCooldownUses", "BASE", nil, 0, 0, { type = "SkillType", skillType = SkillType.Storm }), }, ["kill_enemy_on_hit_if_under_10%_life"] = { - mod("CullPercent", "MAX", nil), - value = 10 + flag("CanCull"), -- none of the skills with this stat say anything about a 10% threshold }, ["spell_cast_time_added_to_cooldown_if_triggered"] = { flag("SpellCastTimeAddedToCooldownIfTriggered"), diff --git a/src/Data/Skills/act_str.lua b/src/Data/Skills/act_str.lua index 23d10619e..65c494e9a 100644 --- a/src/Data/Skills/act_str.lua +++ b/src/Data/Skills/act_str.lua @@ -1210,11 +1210,10 @@ skills["AttritionPlayer"] = { }, ["skill_attrition_culling_strike_at_x_or_more_stacks"] = { mod("Multiplier:AttritionCullSeconds", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}), + mod("CanCull", "FLAG", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}, { type = "MultiplierThreshold", var = "EnemyPresenceSeconds", actor = "enemy", thresholdVar = "AttritionCullSeconds", thresholdActor = "player"}, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, ["skill_attrition_hit_damage_+%_final_vs_rare_or_unique_enemy_per_second_ever_in_presence_up_to_max"] = { - {mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "GlobalEffect", effectType = "Buff"}, { type = "Multiplier", var = "EnemyPresenceSeconds", actor = "enemy", limitVar = "AttritionMaxDamage", div = 2, limitTotal = true }, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" })}, - {mod("CullPercent", "MAX", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}, { type = "MultiplierThreshold", var = "EnemyPresenceSeconds", actor = "enemy", thresholdVar = "AttritionCullSeconds"}, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), - value = 10,} + mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "GlobalEffect", effectType = "Buff"}, { type = "Multiplier", var = "EnemyPresenceSeconds", actor = "enemy", limitVar = "AttritionMaxDamage", div = 2, limitTotal = true }, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, }, baseFlags = { diff --git a/src/Data/Skills/sup_dex.lua b/src/Data/Skills/sup_dex.lua index 10b9cb7fc..7e0ad5779 100644 --- a/src/Data/Skills/sup_dex.lua +++ b/src/Data/Skills/sup_dex.lua @@ -1575,8 +1575,7 @@ skills["SupportCullingStrikePlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_culling_strike_vs_rare_or_unique_enemy"] = { - mod("CullPercent", "MAX", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), - value = 10 + mod("CanCull", "FLAG", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, }, baseFlags = { @@ -1609,8 +1608,7 @@ skills["SupportCullingStrikePlayerTwo"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_culling_strike_vs_rare_or_unique_enemy"] = { - mod("CullPercent", "MAX", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), - value = 10 + mod("CanCull", "FLAG", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, }, baseFlags = { @@ -3254,8 +3252,7 @@ skills["SupportEmpoweredCullPlayer"] = { statDescriptionScope = "gem_stat_descriptions", statMap = { ["support_empowered_culling_strike"] = { - mod("ExtraEmpowerMod", "LIST", { mod = mod("CullPercent", "MAX", nil), unscalable = true }), - value = 10, + mod("ExtraEmpowerMod", "LIST", { mod = mod("CanCull", "FLAG", nil), unscalable = true }), } }, baseFlags = { diff --git a/src/Export/Skills/act_str.txt b/src/Export/Skills/act_str.txt index c2c2b7c9a..1f93d1917 100644 --- a/src/Export/Skills/act_str.txt +++ b/src/Export/Skills/act_str.txt @@ -72,11 +72,10 @@ statMap = { }, ["skill_attrition_culling_strike_at_x_or_more_stacks"] = { mod("Multiplier:AttritionCullSeconds", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}), + mod("CanCull", "FLAG", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}, { type = "MultiplierThreshold", var = "EnemyPresenceSeconds", actor = "enemy", thresholdVar = "AttritionCullSeconds", thresholdActor = "player"}, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, ["skill_attrition_hit_damage_+%_final_vs_rare_or_unique_enemy_per_second_ever_in_presence_up_to_max"] = { - {mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "GlobalEffect", effectType = "Buff"}, { type = "Multiplier", var = "EnemyPresenceSeconds", actor = "enemy", limitVar = "AttritionMaxDamage", div = 2, limitTotal = true }, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" })}, - {mod("CullPercent", "MAX", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}, { type = "MultiplierThreshold", var = "EnemyPresenceSeconds", actor = "enemy", thresholdVar = "AttritionCullSeconds"}, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), - value = 10,} + mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "GlobalEffect", effectType = "Buff"}, { type = "Multiplier", var = "EnemyPresenceSeconds", actor = "enemy", limitVar = "AttritionMaxDamage", div = 2, limitTotal = true }, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, }, #mods diff --git a/src/Export/Skills/sup_dex.txt b/src/Export/Skills/sup_dex.txt index 59977ae31..aa82698b9 100644 --- a/src/Export/Skills/sup_dex.txt +++ b/src/Export/Skills/sup_dex.txt @@ -336,8 +336,7 @@ statMap = { #set SupportCullingStrikePlayer statMap = { ["support_culling_strike_vs_rare_or_unique_enemy"] = { - mod("CullPercent", "MAX", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), - value = 10 + mod("CanCull", "FLAG", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, }, #mods @@ -347,8 +346,7 @@ statMap = { #set SupportCullingStrikePlayerTwo statMap = { ["support_culling_strike_vs_rare_or_unique_enemy"] = { - mod("CullPercent", "MAX", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), - value = 10 + mod("CanCull", "FLAG", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), }, }, #mods @@ -735,8 +733,7 @@ statMap = { #set SupportEmpoweredCullPlayer statMap = { ["support_empowered_culling_strike"] = { - mod("ExtraEmpowerMod", "LIST", { mod = mod("CullPercent", "MAX", nil), unscalable = true }), - value = 10, + mod("ExtraEmpowerMod", "LIST", { mod = mod("CanCull", "FLAG", nil), unscalable = true }), } }, #mods diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index e0da4a162..86949036e 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -3613,17 +3613,36 @@ function calcs.offence(env, actor, activeSkill) local hitRate = output.HitChance / 100 * (globalOutput.HitSpeed or globalOutput.Speed) * skillData.dpsMultiplier + local enemyRarity = (enemyDB:Flag(nil, "Condition:Unique") and "Unique" or (enemyDB:Flag(nil, "Condition:RareOrUnique") and "Rare" or "Normal")) -- Calculate culling DPS - local criticalCull = skillModList:Max(cfg, "CriticalCullPercent") or 0 + local criticalCull = skillModList:Override(cfg, "CriticalCullPercent") or (skillModList:Flag(cfg, "CritCanCull") and data.gameConstants["CullingStrike"..enemyRarity.."Threshold"] or 0) if criticalCull > 0 then criticalCull = m_min(criticalCull, criticalCull * (1 - (1 - output.CritChance / 100) ^ hitRate)) end - local regularCull = skillModList:Max(cfg, "CullPercent") or 0 - local incCullPercent = 1 + modDB:Sum("INC", cfg, "CullPercent") / 100 + local regularCull = skillModList:Override(cfg, "CullPercent") or (skillModList:Flag(cfg, "CanCull") and data.gameConstants["CullingStrike"..enemyRarity.."Threshold"] or 0) + local incCullPercent = 1 + skillModList:Sum("INC", cfg, "CullPercent") / 100 local maxCullPercent = m_max(criticalCull, regularCull) * incCullPercent globalOutput.CullPercent = maxCullPercent globalOutput.CullMultiplier = 100 / (100 - globalOutput.CullPercent) + if globalBreakdown and maxCullPercent > 0 then + globalBreakdown.CullingStrike = { } + if (skillModList:Override(cfg, "CullPercent") or 0) > 0 then + t_insert(globalBreakdown.CullingStrike, s_format("%d%% ^8(cull override)", regularCull)) + else + t_insert(globalBreakdown.CullingStrike, s_format("%d%% ^8(cull against %s enemy)", regularCull, enemyRarity:lower())) + end + if criticalCull > 0 then + if (skillModList:Override(cfg, "CriticalCullPercent") or 0) > 0 then + t_insert(globalBreakdown.CullingStrike, s_format("%d%% ^8(critical cull override)", criticalCull)) + else + t_insert(globalBreakdown.CullingStrike, s_format("%d ^8(critical cull against %s enemy)", criticalCull, enemyRarity)) + end + end + t_insert(globalBreakdown.CullingStrike, s_format("x %.2f ^8(increased cull threshold)", incCullPercent)) + t_insert(globalBreakdown.CullingStrike, s_format("= %.2f%%", maxCullPercent)) + end + --Calculate reservation DPS globalOutput.ReservationDpsMultiplier = 100 / (100 - enemyDB:Sum("BASE", nil, "LifeReservationPercent")) diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 9434a4a2c..3310a122d 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1446,7 +1446,10 @@ return { { label = "IIQ for Normal Mobs", haveOutput = "LootQuantityNormalEnemies", { format = "{0:output:LootQuantityNormalEnemies}%", { modName = { "LootQuantityNormalEnemies", "LootQuantity" } }, }, }, { label = "Inc. Item Rarity", { format = "{0:mod:1}%", { modName = "LootRarity", modType = "INC", cfg = "skill" }, }, }, { label = "IIR for Magic Mobs", haveOutput = "LootRarityMagicEnemies", { format = "{0:output:LootRarityMagicEnemies}%", { modName = { "LootRarityMagicEnemies", "LootRarity" } }, }, }, - { label = "Culling Strike", haveOutput = "CullPercent", { format = "{0:output:CullPercent}%", { modName = { "CullPercent", "CriticalCullPercent" }, cfg = "skill" } } }, + { label = "Culling Strike", haveOutput = "CullPercent", { format = "{2:output:CullPercent}%", + { breakdown = "CullingStrike" }, + { modName = { "CullPercent", "CriticalCullPercent", cfg = "skill" } } , + }, }, { label = "Enemy Life Recovery", haveOutput = "EnemyLifeRegen", { format = "{0:output:EnemyLifeRegen}%", { modName = "LifeRegen", modType = "INC", enemy = true }, }, }, { label = "Enemy Mana Recovery", haveOutput = "EnemyManaRegen", { format = "{0:output:EnemyManaRegen}%", { modName = "ManaRegen", modType = "INC", enemy = true }, }, }, { label = "Enemy ES Recovery", haveOutput = "EnemyEnergyShieldRegen", { format = "{0:output:EnemyEnergyShieldRegen}%", { modName = "EnergyShieldRegen", modType = "INC", enemy = true }, }, }, diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index b148d9a4a..04d10c350 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -1900,7 +1900,7 @@ Huge sets the radius to 11. -- Section: Enemy Stats { section = "Enemy Stats", col = 2 }, { var = "enemyLevel", type = "count", label = "Enemy Level:", tooltip = "This overrides the default enemy level used to estimate your hit, ^x33FF77evade ^7chance, and damage reduction.\n\nThe maximum level for normal enemies and all bosses is 85.\n\nThe default level of normal enemies and bosses scales with player level unless manually set.\n\nThe default and minimum level for pinnacle bosses and uber pinnacle bosses is 82." }, - { var = "conditionEnemyRareOrUnique", type = "check", label = "Is the enemy Rare or Unique?", ifEnemyCond = "EnemyRareOrUnique", tooltip = "The enemy will automatically be considered to be Unique if they are a Boss,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) + { var = "conditionEnemyRareOrUnique", type = "check", label = "Is the enemy Rare?", ifFlag = {"CanCull","CritCanCull"}, tooltip = "The enemy will automatically be considered to be Unique if they are a Boss.\nUsed to set base Culling Strike Threshold.", apply = function(val, modList, enemyModList) enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" }) end }, { var = "enemyIsBoss", type = "list", label = "Is the enemy a Boss?", defaultIndex = 3, tooltip = data.enemyIsBossTooltip, list = {{val="None",label="No"},{val="Boss",label="Standard Boss"},{val="Pinnacle",label="Guardian/Pinnacle Boss"},{val="Uber",label="Uber Pinnacle Boss"}}, apply = function(val, modList, enemyModList, build) diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index cc20d66c3..c2805355d 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -892,6 +892,7 @@ local modNameList = { ["when you reload a crossbow to be immediate"] = "InstantReloadChance", ["to not expend ammunition"] = "ChanceToNotConsumeAmmo", ["second to base energy shield recharge delay"] = "EnergyShieldRechargeFaster", + ["culling strike threshold"] = "CullPercent", -- Flask and Charm modifiers ["effect"] = "LocalEffect", ["effect of flasks"] = "FlaskEffect", @@ -5229,23 +5230,22 @@ local specialModList = { ["adds knockback to melee attacks during f?l?a?s?k? ?effect"] = { mod("EnemyKnockbackChance", "BASE", 100, nil, ModFlag.Melee, { type = "Condition", var = "UsingFlask" }) }, ["knockback direction is reversed"] = { mod("EnemyKnockbackDistance", "MORE", -200) }, -- Culling - ["culling strike"] = { mod("CullPercent", "MAX", 10, { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, - ["culling strike with melee weapons"] = { mod("CullPercent", "MAX", 10, nil, ModFlag.WeaponMelee, { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, - ["melee weapon attacks have culling strike"] = { mod("CullPercent", "MAX", 10, nil, bor(ModFlag.Attack, ModFlag.WeaponMelee), { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, - ["culling strike during f?l?a?s?k? ?effect"] = { mod("CullPercent", "MAX", 10, { type = "Condition", var = "UsingFlask" }, { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, - ["hits with this weapon have culling strike against bleeding enemies"] = { mod("CullPercent", "MAX", 10, { type = "ActorCondition", actor = "enemy", var = "Bleeding" }) }, - ["you have culling strike against cursed enemies"] = { mod("CullPercent", "MAX", 10, { type = "ActorCondition", actor = "enemy", var = "Cursed" }) }, - ["critical hits have culling strike"] = { mod("CriticalCullPercent", "MAX", 10) }, - ["your critical hits have culling strike"] = { mod("CriticalCullPercent", "MAX", 10) }, - ["your spells have culling strike"] = { mod("CullPercent", "MAX", 10, nil, ModFlag.Spell) }, - ["bow attacks have culling strike"] = { mod("CullPercent", "MAX", 10, nil, bor(ModFlag.Attack, ModFlag.Bow)) }, - ["culling strike against burning enemies"] = { mod("CullPercent", "MAX", 10, { type = "ActorCondition", actor = "enemy", var = "Burning" }) }, - ["culling strike against frozen enemies"] = { mod("CullPercent", "MAX", 10, { type = "ActorCondition", actor = "enemy", var = "Frozen" }) }, - ["culling strike against enemies you mark"] = { mod("CullPercent", "MAX", 10, { type = "ActorCondition", actor = "enemy", var = "Marked" }) }, - ["nearby allies have culling strike"] = { mod("ExtraAura", "LIST", {onlyAllies = true, mod = mod("CullPercent", "MAX", 10) }) }, - ["hits that stun enemies have culling strike"] = { mod("CullPercent", "MAX", 10, { type = "Condition", var = "AlwaysStunning" }) }, - ["hits that heavy stun enemies have culling strike"] = { mod("CullPercent", "MAX", 10, { type = "Condition", var = "AlwaysHeavyStunning" }) }, - ["(%d+)%% increased culling strike threshold"] = function(num) return { mod("CullPercent", "INC", num)} end, + ["culling strike"] = { mod("CanCull", "FLAG", 1, { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, + ["culling strike with melee weapons"] = { mod("CanCull", "FLAG", 1, nil, ModFlag.WeaponMelee, { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, + ["melee weapon attacks have culling strike"] = { mod("CanCull", "FLAG", 1, nil, bor(ModFlag.Attack, ModFlag.WeaponMelee), { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, + ["culling strike during f?l?a?s?k? ?effect"] = { mod("CanCull", "FLAG", 1, { type = "Condition", var = "UsingFlask" }, { type = "GlobalEffect", effectType = "Global", unscalable = true }) }, + ["hits with this weapon have culling strike against bleeding enemies"] = { mod("CanCull", "FLAG", 1, { type = "ActorCondition", actor = "enemy", var = "Bleeding" }) }, + ["you have culling strike against cursed enemies"] = { flag("CanCull", { type = "ActorCondition", actor = "enemy", var = "Cursed" }) }, + ["critical hits have culling strike"] = { flag("CritCanCull") }, + ["your critical hits have culling strike"] = { flag("CritCanCull") }, + ["your spells have culling strike"] = { mod("CanCull", "FLAG", 1, nil, ModFlag.Spell) }, + ["bow attacks have culling strike"] = { mod("CanCull", "FLAG", 1, nil, bor(ModFlag.Attack, ModFlag.Bow)) }, + ["culling strike against burning enemies"] = { mod("CanCull", "FLAG", 1, { type = "ActorCondition", actor = "enemy", var = "Burning" }) }, + ["culling strike against frozen enemies"] = { mod("CanCull", "FLAG", 1, { type = "ActorCondition", actor = "enemy", var = "Frozen" }) }, + ["culling strike against enemies you mark"] = { mod("CanCull", "FLAG", 1, { type = "ActorCondition", actor = "enemy", var = "Marked" }) }, + ["nearby allies have culling strike"] = { mod("ExtraAura", "LIST", { onlyAllies = true, mod = flag("CanCull") }) }, + ["hits that stun enemies have culling strike"] = { mod("CanCull", "FLAG", 1, { type = "Condition", var = "AlwaysStunning" }) }, + ["hits that heavy stun enemies have culling strike"] = { mod("CanCull", "FLAG", 1, { type = "Condition", var = "AlwaysHeavyStunning" }) }, -- Intimidate ["permanently intimidate enemies on block"] = { mod("EnemyModifier", "LIST", { mod = flag("Condition:Intimidated") }, { type = "Condition", var = "BlockedRecently" }) }, ["with a murderous eye jewel socketed, intimidate enemies for (%d) seconds on hit with attacks"] = { mod("EnemyModifier", "LIST", { mod = flag("Condition:Intimidated") }, { type = "Condition", var = "HaveMurderousEyeJewelIn{SlotName}" }) },