diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 1e2c80fc62..2540fd5d5b 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2395,6 +2395,12 @@ return { ["base_number_of_skeletons_allowed"] = { mod("ActiveSkeletonLimit", "BASE", nil), }, +["base_number_of_animated_weapons_allowed"] = { + mod("ActiveAnimatedWeaponLimit", "BASE", nil), +}, +["base_number_of_support_ghosts_allowed"] = { + mod("ActivePhantasmLimit", "BASE", nil), +}, ["base_number_of_raging_spirits_allowed"] = { mod("ActiveRagingSpiritLimit", "BASE", nil), }, diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index cd5a2bc12d..60dd377cff 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1069,7 +1069,7 @@ function calcs.perform(env, skipEHP) applyEnemyModifiers(env.enemy, true) local minionTypeCount, ammoTypeCount, grenadeTypeCount = 0, 0, 0 - local minionType, ammoType, grenadeType = { }, { }, { } + local minionCount, minionType, ammoType, grenadeType = { }, { }, { }, { } for _, activeSkill in ipairs(env.player.activeSkillList) do local skillFlags if env.mode == "CALCS" then @@ -1140,6 +1140,16 @@ function calcs.perform(env, skipEHP) local limit = activeSkill.skillModList:Sum("BASE", nil, activeSkill.minion.minionData.limit) output[activeSkill.minion.minionData.limit] = m_max(limit, output[activeSkill.minion.minionData.limit] or 0) end + if activeSkill.minion and activeSkill.minion.minionData and activeSkill.minion.minionData.limit then + local limit = m_floor(modDB:Override(nil, activeSkill.minion.minionData.limit) or (calcLib.val(activeSkill.skillModList, activeSkill.minion.minionData.limit) * activeSkill.skillModList:More(activeSkill.skillCfg, "ActiveMinionLimit"))) + output[activeSkill.minion.minionData.limit] = m_max(limit, output[activeSkill.minion.minionData.limit] or 0) + if not minionCount[activeSkill.minion.minionData.limit] then + env.player.modDB:NewMod("Multiplier:SummonedMinion", "BASE", output[activeSkill.minion.minionData.limit], "Config", { type = "Condition", var = "Combat" }) + env.player.modDB:NewMod("Multiplier:MinionPresenceCount", "BASE", output[activeSkill.minion.minionData.limit], "Config", { type = "Condition", var = "Combat" }) + minionCount[activeSkill.minion.minionData.limit] = true + t_insert(minionCount, activeSkill.minion.minionData.limit) + end + end if activeSkill.activeEffect.grantedEffect and activeSkill.skillTypes[SkillType.Minion] and activeSkill.skillTypes[SkillType.Persistent] and not minionType[activeSkill.activeEffect.grantedEffect.id] then minionTypeCount = minionTypeCount + 1 minionType[activeSkill.activeEffect.grantedEffect.id] = true @@ -1188,6 +1198,10 @@ function calcs.perform(env, skipEHP) -- Stat sorting category calcs output.EffectiveLootRarityMod = calcLib.mod(modDB, nil, "LootRarity") output.Spirit = m_floor(calcLib.val(modDB, nil, "Spirit")) + + if #minionCount == 1 then + modDB.conditions["OnlyMinion"] = true + end -- Special Rarity / Quantity Calc for Bisco's local lootQuantityNormalEnemies = modDB:Sum("INC", nil, "LootQuantityNormalEnemies") diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 721a758769..3ef05103af 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -960,11 +960,11 @@ Huge sets the radius to 11. { var = "multiplierNearbyCorpse", type = "count", label = "# of Nearby Corpses:", ifMult = "NearbyCorpse", apply = function(val, modList, enemyModList) modList:NewMod("Multiplier:NearbyCorpse", "BASE", val, "Config", { type = "Condition", var = "Combat" }) end }, - { var = "multiplierSummonedMinion", type = "count", label = "# of Summoned Minions:", ifMult = "SummonedMinion", apply = function(val, modList, enemyModList) - modList:NewMod("Multiplier:SummonedMinion", "BASE", val, "Config", { type = "Condition", var = "Combat" }) + { var = "multiplierSummonedMinion", type = "count", label = "# of Summoned Minions (if not maximum):", ifMult = "SummonedMinion", tooltip = "Use this to override the count if you do not have all your minions summoned", apply = function(val, modList, enemyModList) + modList:NewMod("Multiplier:SummonedMinion", "OVERRIDE", val, "Config", { type = "Condition", var = "Combat" }) end }, - { var = "multiplierMinionsInPresence", type = "count", label = "# of Minions in your Presence:", ifMult = "MinionPresenceCount", apply = function(val, modList, enemyModList) - modList:NewMod("Multiplier:MinionPresenceCount", "BASE", val, "Config", { type = "Condition", var = "Combat" }) + { var = "multiplierMinionsInPresence", type = "count", label = "# of Minions in your Presence:", ifMult = "MinionPresenceCount", tooltip = "Use this to override the count if you do not have all your minions summoned", apply = function(val, modList, enemyModList) + modList:NewMod("Multiplier:MinionPresenceCount", "OVERRIDE", val, "Config", { type = "Condition", var = "Combat" }) end }, { var = "conditionOnConsecratedGround", type = "check", label = "Are you on Consecrated Ground?", tooltip = "In addition to allowing any 'while on Consecrated Ground' modifiers to apply,\nConsecrated Ground grants 5% ^xE05030Life ^7Regeneration to players and allies.", apply = function(val, modList, enemyModList) modList:NewMod("Condition:OnConsecratedGround", "FLAG", true, "Config", { type = "Condition", var = "Combat" })