From 14cf8a6440d169bb8b302e578ec0a2619877d156 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Thu, 18 Dec 2025 19:59:59 +0100 Subject: [PATCH 1/3] trying around --- src/Data/SkillStatMap.lua | 3 ++- src/Data/Skills/sup_str.lua | 4 ++++ src/Modules/CalcOffence.lua | 7 ++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index a7f9412c6..2506f437b 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2688,7 +2688,8 @@ return { flag("Condition:CanInflictIncision", { type = "GlobalEffect", effectType = "Buff", effectName = "Incision" }), }, ["armour_break_physical_damage_%_dealt_as_armour_break"] = { - flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }), + --flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }), + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), }, -- -- Spectre or Minion-specific stats diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index 94a778a4d..3a5c80fd6 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -277,6 +277,10 @@ skills["SupportArmourBreakPlayer"] = { label = "Armour Break I", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["armour_break_physical_damage_%_dealt_as_armour_break"] = { + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + }}, baseFlags = { }, constantStats = { diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index fc6eaad03..9932e7d7a 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -391,6 +391,7 @@ function calcs.offence(env, actor, activeSkill) -- Calculate armour break output.ArmourBreakPerHit = calcLib.val(skillModList, "ArmourBreakPerHit", skillCfg) + print("ARB_AVGHIT", output.AverageHit) local function calcAreaOfEffect(skillModList, skillCfg, skillData, skillFlags, output, breakdown) local incArea, moreArea = calcLib.mods(skillModList, skillCfg, "AreaOfEffect", "AreaOfEffectPrimary") @@ -3908,6 +3909,7 @@ function calcs.offence(env, actor, activeSkill) end output[damageType.."HitAverage"] = damageTypeHitAvg totalHitAvg = totalHitAvg + damageTypeHitAvg + print("TotalHitAvg:", totalHitAvg) totalHitMin = totalHitMin + damageTypeHitMin totalHitMax = totalHitMax + damageTypeHitMax end @@ -4026,6 +4028,7 @@ function calcs.offence(env, actor, activeSkill) -- Calculate average damage and final DPS output.AverageHit = totalHitAvg * (1 - output.CritChance / 100) + totalCritAvg * output.CritChance / 100 + print("REALAVGHIT", output.AverageHit) if skillFlags.monsterExplode then output.AverageHitToMonsterLifePercentage = output.AverageHit / monsterLife * 100 if skillData.hitChanceIsExplodeChance then @@ -4081,7 +4084,9 @@ function calcs.offence(env, actor, activeSkill) t_insert(globalBreakdown.AverageBurstDamage, s_format("= %.1f ^8(total burst damage)", globalOutput.AverageBurstDamage)) end - + modDB:NewMod("Test", "MULTIPLIER", 5) + print("DBSUM: ", skillModList:Sum("MULTIPLIER", skillCfg, "PhysArmourBreakMulti")) + print("ARB_PSEUDO_AVGHIT", output.PhysicalHitAverage * (1 - output.CritChance / 100) + output.PhysicalCritAverage * output.CritChance / 100) -- Calculate PvP values --setup flags From 842acd330691ae2df922b0a260182e0123165a08 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Fri, 19 Dec 2025 00:17:01 +0100 Subject: [PATCH 2/3] added Armour Break 1+2+3 --- src/Data/Gems.lua | 11 +-- src/Data/SkillStatMap.lua | 3 +- src/Data/Skills/act_dex.lua | 6 +- src/Data/Skills/act_int.lua | 4 +- src/Data/Skills/act_str.lua | 177 +++++++++++++++++----------------- src/Data/Skills/other.lua | 8 +- src/Data/Skills/sup_int.lua | 8 +- src/Data/Skills/sup_str.lua | 17 +++- src/Export/Skills/sup_str.txt | 15 +++ src/Modules/CalcOffence.lua | 19 ++-- 10 files changed, 144 insertions(+), 124 deletions(-) diff --git a/src/Data/Gems.lua b/src/Data/Gems.lua index 4d684f86d..78d6fb1e8 100644 --- a/src/Data/Gems.lua +++ b/src/Data/Gems.lua @@ -16558,11 +16558,10 @@ return { wyvern = true, area = true, projectile = true, - sustained = true, channelling = true, }, gemType = "Attack", - tagString = "Shapeshift, Wyvern, AoE, Projectile, Sustained, Channelling", + tagString = "Shapeshift, Wyvern, AoE, Projectile, Channelling", weaponRequirements = "Talisman", reqStr = 50, reqDex = 0, @@ -17100,7 +17099,7 @@ return { chaining = true, }, gemType = "Support", - gemFamily = "Dominus' Grasp", + gemFamily = "Piety's Mercy", tagString = "Lineage, Projectile, Chaining", reqStr = 0, reqDex = 100, @@ -18243,11 +18242,10 @@ return { persistent = true, area = true, physical = true, - duration = true, plant = true, }, gemType = "Buff", - tagString = "Spell, Persistent, AoE, Physical, Duration, Plant", + tagString = "Spell, Persistent, AoE, Physical, Plant", reqStr = 50, reqDex = 0, reqInt = 50, @@ -18618,11 +18616,12 @@ return { grants_active_skill = true, buff = true, persistent = true, + trigger = true, invocation = true, meta = true, }, gemType = "Buff", - tagString = "Persistent, Invocation, Meta", + tagString = "Persistent, Trigger, Invocation, Meta", weaponRequirements = "Talisman", reqStr = 50, reqDex = 0, diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 2506f437b..a7f9412c6 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2688,8 +2688,7 @@ return { flag("Condition:CanInflictIncision", { type = "GlobalEffect", effectType = "Buff", effectName = "Incision" }), }, ["armour_break_physical_damage_%_dealt_as_armour_break"] = { - --flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }), - mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }), }, -- -- Spectre or Minion-specific stats diff --git a/src/Data/Skills/act_dex.lua b/src/Data/Skills/act_dex.lua index 0febdc477..f57e456f9 100644 --- a/src/Data/Skills/act_dex.lua +++ b/src/Data/Skills/act_dex.lua @@ -478,7 +478,7 @@ skills["BloodhoundsMarkPlayer"] = { name = "Bloodhound's Mark", baseTypeName = "Bloodhound's Mark", color = 2, - description = "Mark a target, making them suffer Heavy Stun build up from Blood Loss. If they suffer enough Blood Loss while Marked, the Mark will Activate, Consuming itself and releasing an explosion of blood when they are killed or Heavy Stunned. The Mark's duration does not expire while the Marked target is suffering Blood Loss.", + description = "Mark a target, making them suffer Heavy Stun build up from Blood Loss. If they suffer enough Blood Loss while Marked, the Mark will Activate, Consming itself and releasing an explosion of blood when they are killed or Heavy Stunned. The Mark's duration does not expire while the Marked target is suffering Blood Loss.", skillTypes = { [SkillType.Trappable] = true, [SkillType.Totemable] = true, [SkillType.Mineable] = true, [SkillType.Multicastable] = true, [SkillType.Triggerable] = true, [SkillType.Unleashable] = true, [SkillType.Duration] = true, [SkillType.UsableWhileMoving] = true, [SkillType.Mark] = true, [SkillType.Limit] = true, [SkillType.Physical] = true, [SkillType.UsableWhileMounted] = true, [SkillType.Cooldown] = true, }, castTime = 0.5, qualityStats = { @@ -6690,7 +6690,7 @@ skills["ShatteringSpitePlayer"] = { baseTypeName = "Shattering Spite", fromItem = true, color = 2, - description = "Stamp your spear, destroying all Bloodstone Lances on each enemy in your Presence to cause a damaging explosion around that enemy. Each explosion gains new benefits when reaching higher thresholds of Bloodstone Lances removed from an enemy, causing them to deal more damage, have increased area of effect, and Leech Life from enemies caught in the blast.", + description = "Stamp your spear, destroying all Bloodstone Lances on each enemy in your Presence to cause a damaging explosion around that enemy. Each explosion is independently larger and more damaging for each Bloodstone Lance on from the enemy it originates from.", skillTypes = { [SkillType.Area] = true, [SkillType.Attack] = true, [SkillType.Physical] = true, [SkillType.Lightning] = true, [SkillType.Fire] = true, [SkillType.Damage] = true, [SkillType.Spear] = true, }, weaponTypes = { ["Spear"] = true, @@ -10130,7 +10130,7 @@ skills["VoltaicMarkPlayer"] = { name = "Voltaic Mark", baseTypeName = "Voltaic Mark", color = 2, - description = "Mark a target, making them more susceptible to being Electrocuted. When the Marked target is Electrocuted, the Mark Activates, granting a Buff which gives extra Lightning damage and Consuming the Mark. Marking another target while you have the Buff will remove the Buff.", + description = "Mark a target, making them more susceptible to being Electrocuted. When the Marked target is Electrocuted, the Mark Activates, granting a Buff which gives extra Lightning damage and Consming the Mark. Marking another target while you have the Buff will remove the Buff.", skillTypes = { [SkillType.Trappable] = true, [SkillType.Totemable] = true, [SkillType.Mineable] = true, [SkillType.Multicastable] = true, [SkillType.Triggerable] = true, [SkillType.Unleashable] = true, [SkillType.Duration] = true, [SkillType.UsableWhileMoving] = true, [SkillType.Mark] = true, [SkillType.Lightning] = true, [SkillType.Limit] = true, [SkillType.UsableWhileMounted] = true, [SkillType.Cooldown] = true, [SkillType.Buff] = true, }, castTime = 0.5, qualityStats = { diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index b77d0c103..8ecd2dcf4 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -8076,7 +8076,7 @@ skills["FlameblastPlayer"] = { baseTypeName = "Flameblast", color = 3, description = "Channel to build destructive energy around you. Releasing the energy causes a devastating explosion that is larger and more intense the longer you Channelled for.", - skillTypes = { [SkillType.Spell] = true, [SkillType.Damage] = true, [SkillType.Area] = true, [SkillType.Totemable] = true, [SkillType.Fire] = true, [SkillType.Channel] = true, [SkillType.AreaSpell] = true, [SkillType.Nova] = true, [SkillType.UsableWhileMoving] = true, [SkillType.GainsStages] = true, [SkillType.Cooldown] = true, }, + skillTypes = { [SkillType.Spell] = true, [SkillType.Damage] = true, [SkillType.Area] = true, [SkillType.Totemable] = true, [SkillType.Fire] = true, [SkillType.Channel] = true, [SkillType.AreaSpell] = true, [SkillType.Nova] = true, [SkillType.UsableWhileMoving] = true, [SkillType.Cascadable] = true, [SkillType.GainsStages] = true, [SkillType.Cooldown] = true, }, castTime = 0.25, qualityStats = { { "active_skill_cast_speed_+%_final", 1 }, @@ -8470,7 +8470,7 @@ skills["FreezingMarkPlayer"] = { name = "Freezing Mark", baseTypeName = "Freezing Mark", color = 3, - description = "Mark a target, making them more susceptible to being Frozen. When the Marked target is Frozen, the Mark Activates, granting you a Buff which gives extra Cold damage and Consuming the Mark. Marking another target while you have the Buff will remove the Buff.", + description = "Mark a target, making them more susceptible to being Frozen. When the Marked target is Frozen, the Mark Activates, granting you a Buff which gives extra Cold damage and Consming the Mark. Marking another target while you have the Buff will remove the Buff.", skillTypes = { [SkillType.Trappable] = true, [SkillType.Totemable] = true, [SkillType.Mineable] = true, [SkillType.Multicastable] = true, [SkillType.Triggerable] = true, [SkillType.Unleashable] = true, [SkillType.Duration] = true, [SkillType.UsableWhileMoving] = true, [SkillType.Mark] = true, [SkillType.Cold] = true, [SkillType.Limit] = true, [SkillType.UsableWhileMounted] = true, [SkillType.Cooldown] = true, [SkillType.Buff] = true, }, castTime = 0.5, qualityStats = { diff --git a/src/Data/Skills/act_str.lua b/src/Data/Skills/act_str.lua index 07e5997d8..3f140682f 100644 --- a/src/Data/Skills/act_str.lua +++ b/src/Data/Skills/act_str.lua @@ -1952,52 +1952,52 @@ skills["BriarpatchPlayer"] = { baseTypeName = "Briarpatch", color = 1, description = "While active, a portion of the Physical Attack damage you deal is stored. Casting a Spell uses the stored damage to create a patch of Thorny Ground that deals Spell damage to moving enemies.", - skillTypes = { [SkillType.Buff] = true, [SkillType.OngoingSkill] = true, [SkillType.HasReservation] = true, [SkillType.Persistent] = true, [SkillType.AttackInPlace] = true, [SkillType.Physical] = true, [SkillType.Limit] = true, [SkillType.Plant] = true, [SkillType.Spell] = true, [SkillType.Area] = true, [SkillType.AreaSpell] = true, [SkillType.Duration] = true, [SkillType.CreatesGroundEffect] = true, }, + skillTypes = { [SkillType.Buff] = true, [SkillType.OngoingSkill] = true, [SkillType.HasReservation] = true, [SkillType.Persistent] = true, [SkillType.AttackInPlace] = true, [SkillType.Physical] = true, [SkillType.Limit] = true, [SkillType.Plant] = true, [SkillType.Spell] = true, [SkillType.Area] = true, [SkillType.AreaSpell] = true, }, castTime = 0, qualityStats = { - { "spells_chance_to_hinder_on_hit_%", 0.25 }, + { "maim_on_hit_%", 0.25 }, }, levels = { - [1] = { critChance = 10, levelRequirement = 0, spiritReservationFlat = 30, }, - [2] = { critChance = 10, levelRequirement = 3, spiritReservationFlat = 30, }, - [3] = { critChance = 10, levelRequirement = 6, spiritReservationFlat = 30, }, - [4] = { critChance = 10, levelRequirement = 10, spiritReservationFlat = 30, }, - [5] = { critChance = 10, levelRequirement = 14, spiritReservationFlat = 30, }, - [6] = { critChance = 10, levelRequirement = 18, spiritReservationFlat = 30, }, - [7] = { critChance = 10, levelRequirement = 22, spiritReservationFlat = 30, }, - [8] = { critChance = 10, levelRequirement = 26, spiritReservationFlat = 30, }, - [9] = { critChance = 10, levelRequirement = 31, spiritReservationFlat = 30, }, - [10] = { critChance = 10, levelRequirement = 36, spiritReservationFlat = 30, }, - [11] = { critChance = 10, levelRequirement = 41, spiritReservationFlat = 30, }, - [12] = { critChance = 10, levelRequirement = 46, spiritReservationFlat = 30, }, - [13] = { critChance = 10, levelRequirement = 52, spiritReservationFlat = 30, }, - [14] = { critChance = 10, levelRequirement = 58, spiritReservationFlat = 30, }, - [15] = { critChance = 10, levelRequirement = 64, spiritReservationFlat = 30, }, - [16] = { critChance = 10, levelRequirement = 66, spiritReservationFlat = 30, }, - [17] = { critChance = 10, levelRequirement = 72, spiritReservationFlat = 30, }, - [18] = { critChance = 10, levelRequirement = 78, spiritReservationFlat = 30, }, - [19] = { critChance = 10, levelRequirement = 84, spiritReservationFlat = 30, }, - [20] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [21] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [22] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [23] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [24] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [25] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [26] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [27] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [28] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [29] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [30] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [31] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [32] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [33] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [34] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [35] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [36] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [37] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [38] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [39] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, - [40] = { critChance = 10, levelRequirement = 90, spiritReservationFlat = 30, }, + [1] = { levelRequirement = 0, spiritReservationFlat = 30, }, + [2] = { levelRequirement = 3, spiritReservationFlat = 30, }, + [3] = { levelRequirement = 6, spiritReservationFlat = 30, }, + [4] = { levelRequirement = 10, spiritReservationFlat = 30, }, + [5] = { levelRequirement = 14, spiritReservationFlat = 30, }, + [6] = { levelRequirement = 18, spiritReservationFlat = 30, }, + [7] = { levelRequirement = 22, spiritReservationFlat = 30, }, + [8] = { levelRequirement = 26, spiritReservationFlat = 30, }, + [9] = { levelRequirement = 31, spiritReservationFlat = 30, }, + [10] = { levelRequirement = 36, spiritReservationFlat = 30, }, + [11] = { levelRequirement = 41, spiritReservationFlat = 30, }, + [12] = { levelRequirement = 46, spiritReservationFlat = 30, }, + [13] = { levelRequirement = 52, spiritReservationFlat = 30, }, + [14] = { levelRequirement = 58, spiritReservationFlat = 30, }, + [15] = { levelRequirement = 64, spiritReservationFlat = 30, }, + [16] = { levelRequirement = 66, spiritReservationFlat = 30, }, + [17] = { levelRequirement = 72, spiritReservationFlat = 30, }, + [18] = { levelRequirement = 78, spiritReservationFlat = 30, }, + [19] = { levelRequirement = 84, spiritReservationFlat = 30, }, + [20] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [21] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [22] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [23] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [24] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [25] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [26] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [27] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [28] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [29] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [30] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [31] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [32] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [33] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [34] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [35] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [36] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [37] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [38] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [39] = { levelRequirement = 90, spiritReservationFlat = 30, }, + [40] = { levelRequirement = 90, spiritReservationFlat = 30, }, }, statSets = { [1] = { @@ -2021,8 +2021,8 @@ skills["BriarpatchPlayer"] = { }, stats = { "briarpatch_maximum_stored_physical_damage", + "display_statset_no_hit_damage", "thorns_damage_modifiers_apply_to_spell_damage", - "is_area_damage", }, levels = { [1] = { 9, statInterpolation = { 1, }, actorLevel = 1, }, @@ -4927,7 +4927,7 @@ skills["MetaFeralInvocationPlayer"] = { name = "Feral Invocation", baseTypeName = "Feral Invocation", color = 1, - description = "While active, gains Energy when you spend Mana. Using the Invocation once sufficient Energy is gathered will consume the Energy to create visages which attack once with a socketed Shapeshifting Attack, creating multiple visages if it has enough Energy.", + description = "While active, gains Energy when you spend Mana. Using the Invocation once sufficient Energy is gathered will consume the Energy to trigger socketed Shapeshifting Attacks, and can trigger them multiple times if it has enough Energy.", skillTypes = { [SkillType.HasReservation] = true, [SkillType.OngoingSkill] = true, [SkillType.Meta] = true, [SkillType.Persistent] = true, [SkillType.Buff] = true, [SkillType.CanHaveMultipleOngoingSkillInstances] = true, [SkillType.Invocation] = true, [SkillType.GeneratesEnergy] = true, [SkillType.Triggers] = true, [SkillType.AttackInPlace] = true, [SkillType.Cooldown] = true, }, weaponTypes = { ["Talisman"] = true, @@ -12915,7 +12915,6 @@ skills["WolfLunarBlessingPlayer"] = { "wolf_lunar_blessing_all_damage_%_to_gain_as_cold_damage", "global_knockback", "display_this_skill_cooldown_does_not_recover_during_buff", - "base_deal_no_damage", }, levels = { [1] = { 40, statInterpolation = { 1, }, actorLevel = 1, }, @@ -13982,7 +13981,7 @@ skills["OilBarragePlayer"] = { baseTypeName = "Oil Barrage", color = 1, description = "Shapeshift into a Wyvern and spit Oil at enemies, creating Oil Ground where the Projectiles land. Consumes Power Charges if possible to instead Channel a sustained barrage of electrified Oil that does not create Oil Ground. Projectiles are fired in sequence, allowing multiple Projectiles to Hit the same target.", - skillTypes = { [SkillType.Attack] = true, [SkillType.Projectile] = true, [SkillType.ProjectilesFromUser] = true, [SkillType.Damage] = true, [SkillType.Area] = true, [SkillType.RangedAttack] = true, [SkillType.Channel] = true, [SkillType.Shapeshift] = true, [SkillType.Wyvern] = true, [SkillType.ConsumesCharges] = true, [SkillType.SkillConsumesPowerChargesOnUse] = true, [SkillType.CreatesGroundEffect] = true, [SkillType.Sustained] = true, }, + skillTypes = { [SkillType.Attack] = true, [SkillType.Projectile] = true, [SkillType.ProjectilesFromUser] = true, [SkillType.Damage] = true, [SkillType.Area] = true, [SkillType.RangedAttack] = true, [SkillType.Channel] = true, [SkillType.Shapeshift] = true, [SkillType.Wyvern] = true, [SkillType.ConsumesCharges] = true, [SkillType.SkillConsumesPowerChargesOnUse] = true, [SkillType.CreatesGroundEffect] = true, }, weaponTypes = { ["Talisman"] = true, }, @@ -18346,7 +18345,7 @@ skills["ThrashingVinesPlayer"] = { statSets = { [1] = { label = "Thrashing Vines", - baseEffectiveness = 2.0699999332428, + baseEffectiveness = 1.75, incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.0074000000022352, statDescriptionScope = "thrashing_vines", @@ -18369,7 +18368,7 @@ skills["ThrashingVinesPlayer"] = { { "movement_speed_+%_final_while_performing_action", -70 }, { "movement_speed_acceleration_+%_per_second_while_performing_action", 160 }, { "movement_speed_while_performing_action_locked_duration_%", 50 }, - { "thrashing_vines_retarget_cooldown_ms", 500 }, + { "thrashing_vines_retarget_cooldown_ms", 2000 }, }, stats = { "spell_minimum_base_physical_damage", @@ -18382,46 +18381,46 @@ skills["ThrashingVinesPlayer"] = { "spell_maximum_base_physical_damage", }, levels = { - [1] = { 6, 10, statInterpolation = { 1, 1, }, actorLevel = 1, }, - [2] = { 9, 13, statInterpolation = { 1, 1, }, actorLevel = 3.4519999027252, }, - [3] = { 12, 18, statInterpolation = { 1, 1, }, actorLevel = 6.7670001983643, }, - [4] = { 15, 23, statInterpolation = { 1, 1, }, actorLevel = 10.307999610901, }, - [5] = { 19, 29, statInterpolation = { 1, 1, }, actorLevel = 14.074999809265, }, - [6] = { 23, 35, statInterpolation = { 1, 1, }, actorLevel = 18.068000793457, }, - [7] = { 28, 43, statInterpolation = { 1, 1, }, actorLevel = 22.287000656128, }, - [8] = { 34, 51, statInterpolation = { 1, 1, }, actorLevel = 26.732000350952, }, - [9] = { 40, 60, statInterpolation = { 1, 1, }, actorLevel = 31.40299987793, }, - [10] = { 47, 70, statInterpolation = { 1, 1, }, actorLevel = 36.299999237061, }, - [11] = { 54, 81, statInterpolation = { 1, 1, }, actorLevel = 41.423000335693, }, - [12] = { 63, 94, statInterpolation = { 1, 1, }, actorLevel = 46.771999359131, }, - [13] = { 72, 108, statInterpolation = { 1, 1, }, actorLevel = 52.34700012207, }, - [14] = { 83, 124, statInterpolation = { 1, 1, }, actorLevel = 58.147998809814, }, - [15] = { 94, 142, statInterpolation = { 1, 1, }, actorLevel = 64.175003051758, }, - [16] = { 108, 161, statInterpolation = { 1, 1, }, actorLevel = 70.428001403809, }, - [17] = { 122, 184, statInterpolation = { 1, 1, }, actorLevel = 76.906997680664, }, - [18] = { 139, 208, statInterpolation = { 1, 1, }, actorLevel = 83.611999511719, }, - [19] = { 157, 236, statInterpolation = { 1, 1, }, actorLevel = 90.542999267578, }, - [20] = { 178, 267, statInterpolation = { 1, 1, }, actorLevel = 97.699996948242, }, - [21] = { 201, 302, statInterpolation = { 1, 1, }, actorLevel = 105.08300018311, }, - [22] = { 228, 341, statInterpolation = { 1, 1, }, actorLevel = 112.69200134277, }, - [23] = { 257, 385, statInterpolation = { 1, 1, }, actorLevel = 120.52700042725, }, - [24] = { 290, 435, statInterpolation = { 1, 1, }, actorLevel = 128.58799743652, }, - [25] = { 327, 490, statInterpolation = { 1, 1, }, actorLevel = 136.875, }, - [26] = { 369, 553, statInterpolation = { 1, 1, }, actorLevel = 145.38800048828, }, - [27] = { 416, 624, statInterpolation = { 1, 1, }, actorLevel = 154.12699890137, }, - [28] = { 469, 704, statInterpolation = { 1, 1, }, actorLevel = 163.09199523926, }, - [29] = { 529, 794, statInterpolation = { 1, 1, }, actorLevel = 172.28300476074, }, - [30] = { 597, 896, statInterpolation = { 1, 1, }, actorLevel = 181.69999694824, }, - [31] = { 674, 1011, statInterpolation = { 1, 1, }, actorLevel = 191.34300231934, }, - [32] = { 761, 1141, statInterpolation = { 1, 1, }, actorLevel = 201.21200561523, }, - [33] = { 860, 1289, statInterpolation = { 1, 1, }, actorLevel = 211.30700683594, }, - [34] = { 971, 1457, statInterpolation = { 1, 1, }, actorLevel = 221.62800598145, }, - [35] = { 1098, 1648, statInterpolation = { 1, 1, }, actorLevel = 232.17500305176, }, - [36] = { 1243, 1864, statInterpolation = { 1, 1, }, actorLevel = 242.94799804688, }, - [37] = { 1407, 2111, statInterpolation = { 1, 1, }, actorLevel = 253.94700622559, }, - [38] = { 1595, 2392, statInterpolation = { 1, 1, }, actorLevel = 265.17199707031, }, - [39] = { 1808, 2712, statInterpolation = { 1, 1, }, actorLevel = 276.62298583984, }, - [40] = { 2052, 3078, statInterpolation = { 1, 1, }, actorLevel = 288.29998779297, }, + [1] = { 5, 8, statInterpolation = { 1, 1, }, actorLevel = 1, }, + [2] = { 7, 11, statInterpolation = { 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 10, 15, statInterpolation = { 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 13, 19, statInterpolation = { 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 16, 24, statInterpolation = { 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 20, 30, statInterpolation = { 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 24, 36, statInterpolation = { 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 29, 43, statInterpolation = { 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 34, 51, statInterpolation = { 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 39, 59, statInterpolation = { 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 46, 69, statInterpolation = { 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 53, 79, statInterpolation = { 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 61, 91, statInterpolation = { 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 70, 105, statInterpolation = { 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 80, 120, statInterpolation = { 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 91, 136, statInterpolation = { 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 103, 155, statInterpolation = { 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 117, 176, statInterpolation = { 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 133, 200, statInterpolation = { 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 151, 226, statInterpolation = { 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 170, 255, statInterpolation = { 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 192, 289, statInterpolation = { 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 217, 326, statInterpolation = { 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 245, 368, statInterpolation = { 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 276, 415, statInterpolation = { 1, 1, }, actorLevel = 136.875, }, + [26] = { 312, 468, statInterpolation = { 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 352, 527, statInterpolation = { 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 397, 595, statInterpolation = { 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 447, 671, statInterpolation = { 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 505, 757, statInterpolation = { 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 570, 855, statInterpolation = { 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 643, 965, statInterpolation = { 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 727, 1090, statInterpolation = { 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 821, 1232, statInterpolation = { 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 929, 1393, statInterpolation = { 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 1051, 1576, statInterpolation = { 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 1190, 1785, statInterpolation = { 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 1348, 2022, statInterpolation = { 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 1529, 2293, statInterpolation = { 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 1735, 2602, statInterpolation = { 1, 1, }, actorLevel = 288.29998779297, }, }, }, } @@ -20020,7 +20019,6 @@ skills["WalkingCalamityMeteorPlayer"] = { stats = { "is_area_damage", "attack_is_not_melee_override", - "triggerable_in_any_set", }, levels = { [1] = { actorLevel = 1, }, @@ -20082,7 +20080,6 @@ skills["WalkingCalamityMeteorPlayer"] = { stats = { "is_area_damage", "attack_is_not_melee_override", - "triggerable_in_any_set", }, levels = { [1] = { baseMultiplier = 1.5, actorLevel = 1, }, diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index c73b35edb..9b3bca311 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -4399,7 +4399,7 @@ skills["CommandCorpseBeetleExplodePlayer"] = { name = "Command: {0} ", hidden = true, fromTree = true, - skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, [SkillType.UsableWhileShapeshifted] = true, }, + skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, }, castTime = 0.4, qualityStats = { }, @@ -4634,7 +4634,7 @@ skills["CommandSandDjinnKnifeThrowPlayer"] = { name = "Command: {0} ", hidden = true, fromTree = true, - skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, [SkillType.UsableWhileShapeshifted] = true, }, + skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, }, castTime = 0.4, qualityStats = { }, @@ -5847,7 +5847,7 @@ skills["CommandWaterDjinnBubblePlayer"] = { name = "Command: {0} ", hidden = true, fromTree = true, - skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, [SkillType.UsableWhileShapeshifted] = true, }, + skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, }, castTime = 0.4, qualityStats = { }, @@ -6770,7 +6770,7 @@ skills["CommandFireDjinnLivingBombPlayer"] = { name = "Command: {0} ", hidden = true, fromTree = true, - skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, [SkillType.UsableWhileShapeshifted] = true, }, + skillTypes = { [SkillType.CommandsMinions] = true, [SkillType.UsableWhileMoving] = true, }, castTime = 0.4, qualityStats = { }, diff --git a/src/Data/Skills/sup_int.lua b/src/Data/Skills/sup_int.lua index 0460846bb..0d84e93b5 100644 --- a/src/Data/Skills/sup_int.lua +++ b/src/Data/Skills/sup_int.lua @@ -3126,7 +3126,7 @@ skills["SupportDrainedAilmentPlayer"] = { } skills["SupportShockingRiftPlayer"] = { name = "Electromagnetism", - description = "Supports Skills that Hit enemies. When Supported Skills Shock an enemy that is nearby other Shocked enemies, trigger Electromagnetism, sucking in nearby enemies, Hindering them, and dealing Lightning damage at an interval.", + description = "Supports Skills that which Hit enemies. When Supported Skills Shock an enemy that is nearby other Shocked enemies, trigger Electromagnetism, sucking in nearby enemies, Hindering them, and dealing Lightning damage at an interval.", color = 3, support = true, requireSkillTypes = { SkillType.Damage, SkillType.Attack, SkillType.CrossbowAmmoSkill, }, @@ -7034,7 +7034,7 @@ skills["SupportSpellCascadePlayer"] = { support = true, requireSkillTypes = { SkillType.Cascadable, }, addSkillTypes = { }, - excludeSkillTypes = { SkillType.SummonsTotem, SkillType.UsedByTotem, SkillType.Trapped, SkillType.RemoteMined, }, + excludeSkillTypes = { SkillType.SummonsTotem, SkillType.UsedByTotem, SkillType.Trapped, SkillType.RemoteMined, SkillType.Vaal, SkillType.Channel, SkillType.Attack, }, gemFamily = { "SpellCascade",}, levels = { [1] = { levelRequirement = 0, }, @@ -7075,7 +7075,7 @@ skills["SupportSpellEchoPlayer"] = { support = true, requireSkillTypes = { SkillType.Cascadable, }, addSkillTypes = { }, - excludeSkillTypes = { SkillType.SummonsTotem, SkillType.UsedByTotem, SkillType.Trapped, SkillType.RemoteMined, SkillType.Triggered, }, + excludeSkillTypes = { SkillType.SummonsTotem, SkillType.UsedByTotem, SkillType.Trapped, SkillType.RemoteMined, SkillType.Vaal, SkillType.Channel, SkillType.Attack, SkillType.Triggered, }, gemFamily = { "SpellEcho",}, levels = { [1] = { levelRequirement = 0, manaMultiplier = 50, }, @@ -8103,7 +8103,7 @@ skills["SupportZenithPlayerTwo"] = { gemFamily = { "Zenith",}, ignoreMinionTypes = true, levels = { - [1] = { levelRequirement = 0, }, + [1] = { levelRequirement = 0, manaMultiplier = 20, }, }, statSets = { [1] = { diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index 3a5c80fd6..8b9d6411b 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -278,9 +278,10 @@ skills["SupportArmourBreakPlayer"] = { incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "gem_stat_descriptions", statMap = { - ["armour_break_physical_damage_%_dealt_as_armour_break"] = { - mod("PhysArmourBreakMulti", "MULTIPLIER", nil), - }}, + ["armour_break_physical_damage_%_dealt_as_armour_break"] = { + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + }, + }, baseFlags = { }, constantStats = { @@ -311,6 +312,11 @@ skills["SupportArmourBreakPlayerTwo"] = { label = "Armour Break II", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["armour_break_physical_damage_%_dealt_as_armour_break"] = { + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + }, + }, baseFlags = { }, constantStats = { @@ -342,6 +348,11 @@ skills["SupportArmourBreakPlayerThree"] = { label = "Armour Break III", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["armour_break_physical_damage_%_dealt_as_armour_break"] = { + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + }, + }, baseFlags = { }, constantStats = { diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index f1bc03c68..72773ebd0 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -46,16 +46,31 @@ local skills, mod, flag, skill = ... #skill SupportArmourBreakPlayer #set SupportArmourBreakPlayer +statMap = { + ["armour_break_physical_damage_%_dealt_as_armour_break"] = { + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + }, +}, #mods #skillEnd #skill SupportArmourBreakPlayerTwo #set SupportArmourBreakPlayerTwo +statMap = { + ["armour_break_physical_damage_%_dealt_as_armour_break"] = { + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + }, +}, #mods #skillEnd #skill SupportArmourBreakPlayerThree #set SupportArmourBreakPlayerThree +statMap = { + ["armour_break_physical_damage_%_dealt_as_armour_break"] = { + mod("PhysArmourBreakMulti", "MULTIPLIER", nil), + }, +}, #mods #skillEnd diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 9932e7d7a..43d3abcfd 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -389,9 +389,12 @@ function calcs.offence(env, actor, activeSkill) return end - -- Calculate armour break - output.ArmourBreakPerHit = calcLib.val(skillModList, "ArmourBreakPerHit", skillCfg) - print("ARB_AVGHIT", output.AverageHit) + function calcArmourBreak(PhysHit) + local ArmourFromPhysMulti = skillModList:Sum("MULTIPLIER", skillCfg, "PhysArmourBreakMulti") / 100 + local ArmourBreakFromPhys = PhysHit * ArmourFromPhysMulti + skillModList:NewMod("ArmourBreakPerHit", "BASE", ArmourBreakFromPhys) + output.ArmourBreakPerHit = calcLib.val(skillModList, "ArmourBreakPerHit", skillCfg) + end local function calcAreaOfEffect(skillModList, skillCfg, skillData, skillFlags, output, breakdown) local incArea, moreArea = calcLib.mods(skillModList, skillCfg, "AreaOfEffect", "AreaOfEffectPrimary") @@ -3909,7 +3912,6 @@ function calcs.offence(env, actor, activeSkill) end output[damageType.."HitAverage"] = damageTypeHitAvg totalHitAvg = totalHitAvg + damageTypeHitAvg - print("TotalHitAvg:", totalHitAvg) totalHitMin = totalHitMin + damageTypeHitMin totalHitMax = totalHitMax + damageTypeHitMax end @@ -4028,7 +4030,6 @@ function calcs.offence(env, actor, activeSkill) -- Calculate average damage and final DPS output.AverageHit = totalHitAvg * (1 - output.CritChance / 100) + totalCritAvg * output.CritChance / 100 - print("REALAVGHIT", output.AverageHit) if skillFlags.monsterExplode then output.AverageHitToMonsterLifePercentage = output.AverageHit / monsterLife * 100 if skillData.hitChanceIsExplodeChance then @@ -4084,11 +4085,9 @@ function calcs.offence(env, actor, activeSkill) t_insert(globalBreakdown.AverageBurstDamage, s_format("= %.1f ^8(total burst damage)", globalOutput.AverageBurstDamage)) end - modDB:NewMod("Test", "MULTIPLIER", 5) - print("DBSUM: ", skillModList:Sum("MULTIPLIER", skillCfg, "PhysArmourBreakMulti")) - print("ARB_PSEUDO_AVGHIT", output.PhysicalHitAverage * (1 - output.CritChance / 100) + output.PhysicalCritAverage * output.CritChance / 100) - -- Calculate PvP values - + --Calculate armour break based on Average Phys hit + calcArmourBreak((output.PhysicalHitAverage * (1 - output.CritChance / 100) + output.PhysicalCritAverage * output.CritChance / 100)) + --setup flags skillFlags.isPvP = false skillFlags.notAttackPvP = false From 40b52ab3e96f01fb27bdf5ee9046e2c269142fc7 Mon Sep 17 00:00:00 2001 From: MrHB212 Date: Fri, 19 Dec 2025 00:34:51 +0100 Subject: [PATCH 3/3] Update CalcOffence.lua --- src/Modules/CalcOffence.lua | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 43d3abcfd..e64edb013 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -389,13 +389,6 @@ function calcs.offence(env, actor, activeSkill) return end - function calcArmourBreak(PhysHit) - local ArmourFromPhysMulti = skillModList:Sum("MULTIPLIER", skillCfg, "PhysArmourBreakMulti") / 100 - local ArmourBreakFromPhys = PhysHit * ArmourFromPhysMulti - skillModList:NewMod("ArmourBreakPerHit", "BASE", ArmourBreakFromPhys) - output.ArmourBreakPerHit = calcLib.val(skillModList, "ArmourBreakPerHit", skillCfg) - end - local function calcAreaOfEffect(skillModList, skillCfg, skillData, skillFlags, output, breakdown) local incArea, moreArea = calcLib.mods(skillModList, skillCfg, "AreaOfEffect", "AreaOfEffectPrimary") output.AreaOfEffectMod = round(round(incArea * moreArea, 10), 2) @@ -4086,7 +4079,10 @@ function calcs.offence(env, actor, activeSkill) end --Calculate armour break based on Average Phys hit - calcArmourBreak((output.PhysicalHitAverage * (1 - output.CritChance / 100) + output.PhysicalCritAverage * output.CritChance / 100)) + local ArmourFromPhysMulti = skillModList:Sum("MULTIPLIER", skillCfg, "PhysArmourBreakMulti") / 100 + local ArmourBreakFromPhys = (output.PhysicalHitAverage * (1 - output.CritChance / 100) + output.PhysicalCritAverage * output.CritChance / 100) * ArmourFromPhysMulti + skillModList:NewMod("ArmourBreakPerHit", "BASE", ArmourBreakFromPhys) + globalOutput.ArmourBreakPerHit = calcLib.val(skillModList, "ArmourBreakPerHit", skillCfg) --setup flags skillFlags.isPvP = false