From f8594e2c149dba56b07a52d783edd5486e57460f Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 3 Jun 2026 07:10:45 +1000 Subject: [PATCH 1/4] Add support for many missing skills Adds support for new stat description Enervating Nova Sanguine Revelry Doedre's Undoing Romira's Requital Chaotic Surge Runic Tempering Abyssal Apparition Savage Fury Deadly Resolve Gorge Harbinger of Madness Breachlord's Rift Herald of the Royal Quee Gelid Palm Smash to Smithereens --- src/Data/Gems.lua | 323 ++++++++ src/Data/ModCache.lua | 1 + src/Data/SkillStatMap.lua | 3 + src/Data/Skills/act_str.lua | 239 ++++++ src/Data/Skills/other.lua | 1373 ++++++++++++++++++++++++++++++--- src/Data/Skills/sup_int.lua | 284 +++++++ src/Data/Skills/sup_str.lua | 167 ++++ src/Export/Skills/act_str.txt | 22 + src/Export/Skills/other.txt | 91 +++ src/Export/Skills/sup_int.txt | 50 +- src/Export/Skills/sup_str.txt | 17 + src/Export/spec.lua | 6 +- src/Export/statdesc.lua | 6 +- src/Modules/CalcPerform.lua | 6 + src/Modules/ItemTools.lua | 3 + src/Modules/StatDescriber.lua | 4 + 16 files changed, 2479 insertions(+), 116 deletions(-) diff --git a/src/Data/Gems.lua b/src/Data/Gems.lua index 54fd08707d..a9dd4f4e97 100644 --- a/src/Data/Gems.lua +++ b/src/Data/Gems.lua @@ -792,6 +792,30 @@ return { Tier = 9, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemEnervatingNova"] = { + name = "Enervating Nova", + baseTypeName = "Enervating Nova", + gameId = "Metadata/Items/Gems/SkillGemEnervatingNova", + variantId = "EnervatingNova", + grantedEffectId = "EnervatingNovaPlayer", + tags = { + intelligence = true, + grants_active_skill = true, + spell = true, + area = true, + lightning = true, + duration = true, + nova = true, + repeatable = true, + }, + gemType = "Spell", + tagString = "AoE, Lightning, Duration, Nova, Repeatable", + reqStr = 0, + reqDex = 0, + reqInt = 100, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemMeleePhysicalDamageSupport"] = { name = "Heavy Swing", gameId = "Metadata/Items/Gems/SupportGemHeavySwing", @@ -6531,6 +6555,26 @@ return { Tier = 4, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemSanguineRevelry"] = { + name = "Sanguine Revelry", + baseTypeName = "Sanguine Revelry", + gameId = "Metadata/Items/Gem/SkillGemSanguineRevelry", + variantId = "SanguineRevelry", + grantedEffectId = "SanguineRevelryPlayer", + tags = { + grants_active_skill = true, + buff = true, + persistent = true, + remnant = true, + }, + gemType = "Buff", + tagString = "Persistent, Remnant", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemMagmaBarrier"] = { name = "Magma Barrier", baseTypeName = "Magma Barrier", @@ -10898,6 +10942,31 @@ return { Tier = 3, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemDoedresUndoingSupport"] = { + name = "Doedre's Undoing", + gameId = "Metadata/Items/Gem/SupportGemDoedresUndoing", + variantId = "DoedresUndoingSupport", + grantedEffectId = "SupportDoedresUndoingPlayer", + additionalGrantedEffectId1 = "ChaosFrogExplosionPlayer", + tags = { + support = true, + grants_active_skill = true, + lineage = true, + spell = true, + area = true, + trigger = true, + chaos = true, + curse = true, + }, + gemType = "Support", + gemFamily = "Cursed Ground", + tagString = "Lineage, Spell, AoE, Trigger, Chaos, Curse", + reqStr = 0, + reqDex = 0, + reqInt = 100, + Tier = 0, + naturalMaxLevel = 1, + }, ["Metadata/Items/Gems/SkillGemHayoxisFulminationSupport"] = { name = "Hayoxi's Fulmination", gameId = "Metadata/Items/Gem/SupportGemHayoxisFulmination", @@ -15266,6 +15335,25 @@ return { Tier = 2, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemRomirasRequitalSupport"] = { + name = "Romira's Requital", + gameId = "Metadata/Items/Gem/SupportGemRomirasRequital", + variantId = "RomirasRequitalSupport", + grantedEffectId = "SupportRomirasRequitalPlayer", + tags = { + support = true, + lineage = true, + minion = true, + }, + gemType = "Support", + gemFamily = "Loyalty", + tagString = "Lineage, Minion", + reqStr = 0, + reqDex = 0, + reqInt = 100, + Tier = 0, + naturalMaxLevel = 1, + }, ["Metadata/Items/Gems/SkillGemRearmSupport"] = { name = "Rearm I", gameId = "Metadata/Items/Gem/SupportGemRearm", @@ -16168,6 +16256,27 @@ return { Tier = 0, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemChaosSpearTriggerChaosSurge"] = { + name = "Chaotic Surge", + baseTypeName = "Chaotic Surge", + gameId = "Metadata/Items/Gem/SkillGemChaoticInfusion", + variantId = "ChaosSpearTriggerChaosSurge", + grantedEffectId = "ChaosSpearTriggerChaosSurgePlayer", + tags = { + grants_active_skill = true, + attack = true, + area = true, + trigger = true, + chaos = true, + }, + gemType = "Attack", + tagString = "AoE, Trigger, Chaos", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemCastLightningSpellOnHit"] = { name = "Thundergod's Wrath", baseTypeName = "Thundergod's Wrath", @@ -17872,6 +17981,24 @@ return { Tier = 0, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemRunicTempering"] = { + name = "Runic Tempering", + baseTypeName = "Runic Tempering", + gameId = "Metadata/Items/Gems/SkillGemRunicTempering", + variantId = "RunicTempering", + grantedEffectId = "RunicTemperingPlayer", + tags = { + grants_active_skill = true, + channelling = true, + }, + gemType = "Channelling", + tagString = "", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemHisWinnowingFlame"] = { name = "His Winnowing Flame", baseTypeName = "His Winnowing Flame", @@ -17970,6 +18097,25 @@ return { Tier = 3, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemTriggeredAbyssalApparition"] = { + name = "Abyssal Apparition", + baseTypeName = "Abyssal Apparition", + gameId = "Metadata/Items/Gem/SkillGemTriggeredAbyssalApparition", + variantId = "TriggeredAbyssalApparition", + grantedEffectId = "TriggeredAbyssalApparitionPlayer", + tags = { + grants_active_skill = true, + spell = true, + trigger = true, + }, + gemType = "Spell", + tagString = "Trigger", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemCreepingChillSupport"] = { name = "Creeping Chill", gameId = "Metadata/Items/Gems/SupportGemCreepingChill", @@ -18039,6 +18185,29 @@ return { Tier = 14, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemSavageFury"] = { + name = "Savage Fury", + baseTypeName = "Savage Fury", + gameId = "Metadata/Items/Gems/SkillGemSavageFury", + variantId = "SavageFury", + grantedEffectId = "SavageFuryPlayer", + additionalGrantedEffectId1 = "SavageFuryActivePlayer", + tags = { + strength = true, + intelligence = true, + grants_active_skill = true, + buff = true, + persistent = true, + duration = true, + }, + gemType = "Buff", + tagString = "Persistent, Duration", + reqStr = 50, + reqDex = 0, + reqInt = 50, + Tier = 4, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemWalkingCalamity"] = { name = "Walking Calamity", baseTypeName = "Walking Calamity", @@ -18447,6 +18616,31 @@ return { Tier = 3, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemDangerousResolveSupport"] = { + name = "Deadly Resolve", + gameId = "Metadata/Items/Gem/SupportGemDeadlyResolve", + variantId = "DangerousResolveSupport", + grantedEffectId = "SupportDeadlyResolvePlayer", + additionalGrantedEffectId1 = "TriggeredDeadlyResolvePlayer", + tags = { + support = true, + grants_active_skill = true, + attack = true, + area = true, + trigger = true, + physical = true, + channelling = true, + stages = true, + }, + gemType = "Support", + gemFamily = "Deadly Resolve", + tagString = "Attack, AoE, Trigger, Physical, Channelling, Staged", + reqStr = 100, + reqDex = 0, + reqInt = 0, + Tier = 3, + naturalMaxLevel = 1, + }, ["Metadata/Items/Gems/SkillGemAdvancingStormSupport"] = { name = "Advancing Storm", gameId = "Metadata/Items/Gem/SupportGemAdvancingStorm", @@ -18485,6 +18679,23 @@ return { Tier = 4, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemGorgeSupport"] = { + name = "Gorge", + gameId = "Metadata/Items/Gems/SupportGemGorge", + variantId = "GorgeSupport", + grantedEffectId = "SupportGorgePlayer", + tags = { + support = true, + }, + gemType = "Support", + gemFamily = "Gorge", + tagString = "", + reqStr = 0, + reqDex = 0, + reqInt = 100, + Tier = 2, + naturalMaxLevel = 1, + }, ["Metadata/Items/Gems/SkillGemControlledHazardSupport"] = { name = "Controlled Hazard", gameId = "Metadata/Items/Gems/SupportGemControlledHazard", @@ -18845,6 +19056,27 @@ return { Tier = 0, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemHarbingerOfMadness"] = { + name = "Harbinger of Madness", + baseTypeName = "Harbinger of Madness", + gameId = "Metadata/Items/Gems/SkillGemHarbingerOfMadness", + variantId = "HarbingerOfMadness", + grantedEffectId = "HarbingerOfMadnessPlayer", + tags = { + buff = true, + grants_active_skill = true, + persistent = true, + area = true, + physical = true, + }, + gemType = "Buff", + tagString = "Persistent, AoE, Physical", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemNightfallShieldThrow"] = { name = "Soaring Midnight", baseTypeName = "Soaring Midnight", @@ -19078,6 +19310,26 @@ return { Tier = 0, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemBreachlordsRiftSupport"] = { + name = "Breachlord's Rift", + gameId = "Metadata/Items/Gem/SupportGemBreachlordsRift", + variantId = "BreachlordsRiftSupport", + grantedEffectId = "SupportBreachlordsRift", + tags = { + support = true, + lineage = true, + lightning = true, + cold = true, + }, + gemType = "Support", + gemFamily = "Armour Break", + tagString = "Lineage, Lightning, Cold", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 1, + }, ["Metadata/Items/Gems/SkillGemBreachlordsAmalgamSupport"] = { name = "Breachlord's Amalgam", gameId = "Metadata/Items/Gem/SupportGemBreachlordsAmalgam", @@ -19537,6 +19789,30 @@ return { Tier = 0, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemGelidPalm"] = { + name = "Gelid Palm", + baseTypeName = "Gelid Palm", + gameId = "Metadata/Items/Gems/SkillGemGelidPalm", + variantId = "GelidPalm", + grantedEffectId = "GelidPalmPlayer", + additionalStatSet1 = "GelidPalmBoltPlayer", + tags = { + buff = true, + grants_active_skill = true, + attack = true, + persistent = true, + area = true, + cold = true, + }, + gemType = "Buff", + tagString = "Attack, Persistent, AoE, Cold", + weaponRequirements = "Unarmed", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemSkyfall"] = { name = "Skyfall", baseTypeName = "Skyfall", @@ -19798,6 +20074,31 @@ return { Tier = 0, naturalMaxLevel = 20, }, + ["Metadata/Items/Gems/SkillGemUniqueAtziriHerald"] = { + name = "Herald of the Royal Queen", + baseTypeName = "Herald of the Royal Queen", + gameId = "Metadata/Items/Gems/SkillGemUniqueAtziriHerald", + variantId = "UniqueAtziriHerald", + grantedEffectId = "UniqueAtziriHeraldPlayer", + additionalStatSet1 = "UniqueAtziriHeraldExplosionPlayer", + tags = { + buff = true, + grants_active_skill = true, + attack = true, + persistent = true, + area = true, + physical = true, + herald = true, + payoff = true, + }, + gemType = "Buff", + tagString = "Attack, Persistent, AoE, Physical, Herald, Payoff", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemAnimusSplinters"] = { name = "Animus Splinters", baseTypeName = "Animus Splinters", @@ -20011,4 +20312,26 @@ return { Tier = 0, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemSmashToSmithereens"] = { + name = "Smash to Smithereens", + baseTypeName = "Smash to Smithereens", + gameId = "Metadata/Items/Gems/SkillGemSmashToSmithereens", + variantId = "SmashToSmithereens", + grantedEffectId = "SmashToSmithereensPlayer", + tags = { + grants_active_skill = true, + attack = true, + area = true, + trigger = true, + fire = true, + }, + gemType = "Attack", + tagString = "AoE, Trigger, Fire", + weaponRequirements = "Any Martial Weapon, Unarmed", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, } \ No newline at end of file diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 524bfaca78..5a3f6fe035 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -572,6 +572,7 @@ c["+3 to Level of all Rolling Magma Skills"]={{[1]={flags=0,keywordFlags=0,name= c["+3 to Level of all Rolling Slam Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="rolling slam",value=3}}},nil} c["+3 to Level of all Runic Reprieve Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="runic reprieve",value=3}}},nil} c["+3 to Level of all Sacrifice Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="sacrifice",value=3}}},nil} +c["+3 to Level of all Savage Fury Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="savage fury",value=3}}},nil} c["+3 to Level of all Scavenged Plating Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="scavenged plating",value=3}}},nil} c["+3 to Level of all Seismic Cry Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="seismic cry",value=3}}},nil} c["+3 to Level of all Shard Scavenger Skills"]={{[1]={flags=0,keywordFlags=0,name="GemProperty",type="LIST",value={key="level",keyOfScaledMod="value",keyword="shard scavenger",value=3}}},nil} diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index dc93877d50..4a997927e4 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -2885,6 +2885,9 @@ return { ["crushed_target_%_physical_damage_taken_as_armour_break"] = { flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }, { type = "ActorCondition", actor = "enemy", var = "Crushed" }), }, +["armour_break_fire_damage_%_dealt_as_armour_break"] = { + flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }), +}, -- -- Spectre or Minion-specific stats -- diff --git a/src/Data/Skills/act_str.lua b/src/Data/Skills/act_str.lua index cfd414809c..f66b84b2ef 100644 --- a/src/Data/Skills/act_str.lua +++ b/src/Data/Skills/act_str.lua @@ -16055,6 +16055,245 @@ skills["RollingSlamPlayer"] = { }, } } +skills["SavageFuryPlayer"] = { + name = "Savage Fury", + baseTypeName = "Savage Fury", + icon = "Art/2DArt/SkillIcons/DruidWildBeast.dds", + color = 1, + description = "While active, your Fury builds from Attacking enemies. Using this Skill releases your Fury to send you into a bestial frenzy, gaining damage and Onslaught but constantly losing life and forcing you into animal form. The frenzy ends immediately if you return to human form. You cannot gain Fury while in a frenzy.", + skillTypes = { [SkillType.Buff] = true, [SkillType.OngoingSkill] = true, [SkillType.HasReservation] = true, [SkillType.Persistent] = true, [SkillType.AttackInPlace] = true, }, + castTime = 0, + qualityStats = { + }, + levels = { + [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] = { + label = "Savage Fury", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "savage_fury", + baseFlags = { + }, + constantStats = { + { "wild_beast_energy_per_hit", 1 }, + { "wild_beast_maximum_energy", 20 }, + }, + stats = { + }, + levels = { + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, + }, + }, + } +} +skills["SavageFuryActivePlayer"] = { + name = "Savage Fury", + hidden = true, + icon = "Art/2DArt/SkillIcons/DruidWildBeast.dds", + skillTypes = { [SkillType.Buff] = true, [SkillType.Duration] = true, [SkillType.AttackInPlace] = true, [SkillType.UsableWhileMoving] = true, }, + weaponTypes = { + ["Talisman"] = true, + }, + castTime = 0.6, + qualityStats = { + { "wild_beast_damage_+%_final", 0.25 }, + }, + levels = { + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 0, }, + [3] = { levelRequirement = 0, }, + [4] = { levelRequirement = 0, }, + [5] = { levelRequirement = 0, }, + [6] = { levelRequirement = 0, }, + [7] = { levelRequirement = 0, }, + [8] = { levelRequirement = 0, }, + [9] = { levelRequirement = 0, }, + [10] = { levelRequirement = 0, }, + [11] = { levelRequirement = 0, }, + [12] = { levelRequirement = 0, }, + [13] = { levelRequirement = 0, }, + [14] = { levelRequirement = 0, }, + [15] = { levelRequirement = 0, }, + [16] = { levelRequirement = 0, }, + [17] = { levelRequirement = 0, }, + [18] = { levelRequirement = 0, }, + [19] = { levelRequirement = 0, }, + [20] = { levelRequirement = 0, }, + [21] = { levelRequirement = 0, }, + [22] = { levelRequirement = 0, }, + [23] = { levelRequirement = 0, }, + [24] = { levelRequirement = 0, }, + [25] = { levelRequirement = 0, }, + [26] = { levelRequirement = 0, }, + [27] = { levelRequirement = 0, }, + [28] = { levelRequirement = 0, }, + [29] = { levelRequirement = 0, }, + [30] = { levelRequirement = 0, }, + [31] = { levelRequirement = 0, }, + [32] = { levelRequirement = 0, }, + [33] = { levelRequirement = 0, }, + [34] = { levelRequirement = 0, }, + [35] = { levelRequirement = 0, }, + [36] = { levelRequirement = 0, }, + [37] = { levelRequirement = 0, }, + [38] = { levelRequirement = 0, }, + [39] = { levelRequirement = 0, }, + [40] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Savage Fury", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "savage_fury", + statMap = { + ["wild_beast_life_lost_%_per_minute_nonlethal"] = { + mod("LifeDegen", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Savage Fury" }, { type = "SkillType", skillTypeList = { SkillType.UsableWhileShapeshifted, SkillType.UsableWhileShapeshifted } }), + div = 60, + }, + ["wild_beast_damage_+%_final"] = { + mod("Damage", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Savage Fury" }, { type = "SkillType", skillTypeList = { SkillType.UsableWhileShapeshifted, SkillType.UsableWhileShapeshifted } }), + flag("Onslaught", { type = "GlobalEffect", effectType = "Buff", effectName = "Savage Fury" }, { type = "SkillType", skillTypeList = { SkillType.UsableWhileShapeshifted, SkillType.UsableWhileShapeshifted } }) + }, + }, + baseFlags = { + duration = true, + }, + constantStats = { + { "wild_beast_life_lost_%_per_minute_nonlethal", 180 }, + { "base_skill_effect_duration", 500 }, + { "movement_speed_+%_final_while_performing_action", -70 }, + { "movement_speed_acceleration_+%_per_second_while_performing_action", 160 }, + { "movement_speed_while_performing_action_locked_duration_%", 50 }, + }, + stats = { + "wild_beast_damage_+%_final", + "usable_with_talisman", + "can_perform_skill_while_moving", + }, + levels = { + [1] = { 20, statInterpolation = { 1, }, actorLevel = 1, }, + [2] = { 20, statInterpolation = { 1, }, actorLevel = 3.4519999027252, }, + [3] = { 21, statInterpolation = { 1, }, actorLevel = 6.7670001983643, }, + [4] = { 21, statInterpolation = { 1, }, actorLevel = 10.307999610901, }, + [5] = { 22, statInterpolation = { 1, }, actorLevel = 14.074999809265, }, + [6] = { 22, statInterpolation = { 1, }, actorLevel = 18.068000793457, }, + [7] = { 22, statInterpolation = { 1, }, actorLevel = 22.287000656128, }, + [8] = { 23, statInterpolation = { 1, }, actorLevel = 26.732000350952, }, + [9] = { 23, statInterpolation = { 1, }, actorLevel = 31.40299987793, }, + [10] = { 24, statInterpolation = { 1, }, actorLevel = 36.299999237061, }, + [11] = { 24, statInterpolation = { 1, }, actorLevel = 41.423000335693, }, + [12] = { 25, statInterpolation = { 1, }, actorLevel = 46.771999359131, }, + [13] = { 25, statInterpolation = { 1, }, actorLevel = 52.34700012207, }, + [14] = { 26, statInterpolation = { 1, }, actorLevel = 58.147998809814, }, + [15] = { 26, statInterpolation = { 1, }, actorLevel = 64.175003051758, }, + [16] = { 27, statInterpolation = { 1, }, actorLevel = 70.428001403809, }, + [17] = { 27, statInterpolation = { 1, }, actorLevel = 76.906997680664, }, + [18] = { 28, statInterpolation = { 1, }, actorLevel = 83.611999511719, }, + [19] = { 28, statInterpolation = { 1, }, actorLevel = 90.542999267578, }, + [20] = { 29, statInterpolation = { 1, }, actorLevel = 97.699996948242, }, + [21] = { 30, statInterpolation = { 1, }, actorLevel = 105.08300018311, }, + [22] = { 30, statInterpolation = { 1, }, actorLevel = 112.69200134277, }, + [23] = { 31, statInterpolation = { 1, }, actorLevel = 120.52700042725, }, + [24] = { 31, statInterpolation = { 1, }, actorLevel = 128.58799743652, }, + [25] = { 32, statInterpolation = { 1, }, actorLevel = 136.875, }, + [26] = { 33, statInterpolation = { 1, }, actorLevel = 145.38800048828, }, + [27] = { 33, statInterpolation = { 1, }, actorLevel = 154.12699890137, }, + [28] = { 34, statInterpolation = { 1, }, actorLevel = 163.09199523926, }, + [29] = { 35, statInterpolation = { 1, }, actorLevel = 172.28300476074, }, + [30] = { 35, statInterpolation = { 1, }, actorLevel = 181.69999694824, }, + [31] = { 36, statInterpolation = { 1, }, actorLevel = 191.34300231934, }, + [32] = { 36, statInterpolation = { 1, }, actorLevel = 201.21200561523, }, + [33] = { 36, statInterpolation = { 1, }, actorLevel = 211.30700683594, }, + [34] = { 37, statInterpolation = { 1, }, actorLevel = 221.62800598145, }, + [35] = { 37, statInterpolation = { 1, }, actorLevel = 232.17500305176, }, + [36] = { 38, statInterpolation = { 1, }, actorLevel = 242.94799804688, }, + [37] = { 38, statInterpolation = { 1, }, actorLevel = 253.94700622559, }, + [38] = { 38, statInterpolation = { 1, }, actorLevel = 265.17199707031, }, + [39] = { 39, statInterpolation = { 1, }, actorLevel = 276.62298583984, }, + [40] = { 39, statInterpolation = { 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["ScavengedPlatingPlayer"] = { name = "Scavenged Plating", baseTypeName = "Scavenged Plating", diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 09905431e9..c1ba5c588e 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -6,6 +6,119 @@ -- local skills, mod, flag, skill = ... +skills["TriggeredAbyssalApparitionPlayer"] = { + name = "Abyssal Apparition", + baseTypeName = "Abyssal Apparition", + icon = "Art/2DArt/SkillIcons/AbyssalLichApparitionSkill.dds", + fromTree = true, + color = 4, + description = "Consume a Power Charge when you cast a damaging Spell to trigger an Abyssal Apparition who will also cast that same Spell for you. Does not work with Channelling Spells, Spells with a Cooldown, Triggered Spells, Spells granted by items, or Spells which already consume a Power Charge. This Skill is not directly Supportable.", + skillTypes = { [SkillType.Spell] = true, [SkillType.Triggerable] = true, [SkillType.Triggered] = true, [SkillType.InbuiltTrigger] = true, [SkillType.AttackInPlace] = true, }, + castTime = 0, + cannotBeSupported = true, + qualityStats = { + }, + levels = { + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 3, }, + [3] = { levelRequirement = 6, }, + [4] = { levelRequirement = 10, }, + [5] = { levelRequirement = 14, }, + [6] = { levelRequirement = 18, }, + [7] = { levelRequirement = 22, }, + [8] = { levelRequirement = 26, }, + [9] = { levelRequirement = 31, }, + [10] = { levelRequirement = 36, }, + [11] = { levelRequirement = 41, }, + [12] = { levelRequirement = 46, }, + [13] = { levelRequirement = 52, }, + [14] = { levelRequirement = 58, }, + [15] = { levelRequirement = 64, }, + [16] = { levelRequirement = 66, }, + [17] = { levelRequirement = 72, }, + [18] = { levelRequirement = 78, }, + [19] = { levelRequirement = 84, }, + [20] = { levelRequirement = 90, }, + [21] = { levelRequirement = 90, }, + [22] = { levelRequirement = 90, }, + [23] = { levelRequirement = 90, }, + [24] = { levelRequirement = 90, }, + [25] = { levelRequirement = 90, }, + [26] = { levelRequirement = 90, }, + [27] = { levelRequirement = 90, }, + [28] = { levelRequirement = 90, }, + [29] = { levelRequirement = 90, }, + [30] = { levelRequirement = 90, }, + [31] = { levelRequirement = 90, }, + [32] = { levelRequirement = 90, }, + [33] = { levelRequirement = 90, }, + [34] = { levelRequirement = 90, }, + [35] = { levelRequirement = 90, }, + [36] = { levelRequirement = 90, }, + [37] = { levelRequirement = 90, }, + [38] = { levelRequirement = 90, }, + [39] = { levelRequirement = 90, }, + [40] = { levelRequirement = 90, }, + }, + statSets = { + [1] = { + label = "Abyssal Apparition", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "skill_stat_descriptions", + baseFlags = { + }, + constantStats = { + { "triggered_by_lich_consuming_power", 100 }, + }, + stats = { + "damage_+%_final_from_lich_apparition_cloned_skill", + "skill_is_not_considered_a_skill", + }, + levels = { + [1] = { -60, statInterpolation = { 1, }, actorLevel = 1, }, + [2] = { -60, statInterpolation = { 1, }, actorLevel = 3.4519999027252, }, + [3] = { -59, statInterpolation = { 1, }, actorLevel = 6.7670001983643, }, + [4] = { -59, statInterpolation = { 1, }, actorLevel = 10.307999610901, }, + [5] = { -58, statInterpolation = { 1, }, actorLevel = 14.074999809265, }, + [6] = { -58, statInterpolation = { 1, }, actorLevel = 18.068000793457, }, + [7] = { -57, statInterpolation = { 1, }, actorLevel = 22.287000656128, }, + [8] = { -57, statInterpolation = { 1, }, actorLevel = 26.732000350952, }, + [9] = { -56, statInterpolation = { 1, }, actorLevel = 31.40299987793, }, + [10] = { -56, statInterpolation = { 1, }, actorLevel = 36.299999237061, }, + [11] = { -55, statInterpolation = { 1, }, actorLevel = 41.423000335693, }, + [12] = { -55, statInterpolation = { 1, }, actorLevel = 46.771999359131, }, + [13] = { -54, statInterpolation = { 1, }, actorLevel = 52.34700012207, }, + [14] = { -54, statInterpolation = { 1, }, actorLevel = 58.147998809814, }, + [15] = { -53, statInterpolation = { 1, }, actorLevel = 64.175003051758, }, + [16] = { -53, statInterpolation = { 1, }, actorLevel = 70.428001403809, }, + [17] = { -52, statInterpolation = { 1, }, actorLevel = 76.906997680664, }, + [18] = { -52, statInterpolation = { 1, }, actorLevel = 83.611999511719, }, + [19] = { -51, statInterpolation = { 1, }, actorLevel = 90.542999267578, }, + [20] = { -50, statInterpolation = { 1, }, actorLevel = 97.699996948242, }, + [21] = { -50, statInterpolation = { 1, }, actorLevel = 105.08300018311, }, + [22] = { -49, statInterpolation = { 1, }, actorLevel = 112.69200134277, }, + [23] = { -49, statInterpolation = { 1, }, actorLevel = 120.52700042725, }, + [24] = { -48, statInterpolation = { 1, }, actorLevel = 128.58799743652, }, + [25] = { -48, statInterpolation = { 1, }, actorLevel = 136.875, }, + [26] = { -47, statInterpolation = { 1, }, actorLevel = 145.38800048828, }, + [27] = { -47, statInterpolation = { 1, }, actorLevel = 154.12699890137, }, + [28] = { -46, statInterpolation = { 1, }, actorLevel = 163.09199523926, }, + [29] = { -46, statInterpolation = { 1, }, actorLevel = 172.28300476074, }, + [30] = { -45, statInterpolation = { 1, }, actorLevel = 181.69999694824, }, + [31] = { -45, statInterpolation = { 1, }, actorLevel = 191.34300231934, }, + [32] = { -44, statInterpolation = { 1, }, actorLevel = 201.21200561523, }, + [33] = { -44, statInterpolation = { 1, }, actorLevel = 211.30700683594, }, + [34] = { -43, statInterpolation = { 1, }, actorLevel = 221.62800598145, }, + [35] = { -43, statInterpolation = { 1, }, actorLevel = 232.17500305176, }, + [36] = { -42, statInterpolation = { 1, }, actorLevel = 242.94799804688, }, + [37] = { -42, statInterpolation = { 1, }, actorLevel = 253.94700622559, }, + [38] = { -41, statInterpolation = { 1, }, actorLevel = 265.17199707031, }, + [39] = { -41, statInterpolation = { 1, }, actorLevel = 276.62298583984, }, + [40] = { -40, statInterpolation = { 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["AcidicConcoctionPlayer"] = { name = "Acidic Concoction", baseTypeName = "Acidic Concoction", @@ -2736,6 +2849,48 @@ skills["SupportBreachlordsAmalgam"] = { }, } } +skills["SupportBreachlordsRift"] = { + name = "Breachlord's Rift", + description = "Supports any skill that Hits enemies, causing it to Break Armour of enemies it Freezes or Electrocutes.", + color = 4, + support = true, + requireSkillTypes = { }, + addSkillTypes = { }, + excludeSkillTypes = { }, + gemFamily = { "ArmourBreak",}, + isLineage = true, + flavourText = {"Our Broken Sun... it is no mere allegory. It is", "the consequence of insolent disharmony.", "For now, it is contained, but time is against us.", }, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Breachlord's Rift", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["fully_broken_armour_and_sundered_armour_you_inflict_also_applies_to_cold_and_lightning_damage"] = { + flag("ArmourBreakColdDamageTaken", { type = "GlobalEffect", effectType = "Buff", effectName = "Breachlords Rift" }), + flag("ArmourBreakLightningDamageTaken", { type = "GlobalEffect", effectType = "Buff", effectName = "Breachlords Rift" }), + }, + ["support_break_%_armour_on_freeze_or_electrocute"] = { + flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "Breachlords Rift" }, { type = "ActorCondition", actor = "enemy", varList = { "Frozen", "Electrocuted" } }), + }, + }, + baseFlags = { + }, + constantStats = { + { "support_break_%_armour_on_freeze_or_electrocute", 50 }, + }, + stats = { + "fully_broken_armour_and_sundered_armour_you_inflict_also_applies_to_cold_and_lightning_damage", + }, + levels = { + [1] = { actorLevel = 65, }, + }, + }, + } +} skills["ExplodingPoisonToadPlayer"] = { name = "Bursting Fen Toad", baseTypeName = "Bursting Fen Toad", @@ -3346,6 +3501,125 @@ skills["SupportCathasBrilliance"] = { }, } } +skills["ChaosSpearTriggerChaosSurgePlayer"] = { + name = "Chaotic Surge", + baseTypeName = "Chaotic Surge", + icon = "Art/2DArt/SkillIcons/SpireofIreSkillIcon.dds", + fromItem = true, + color = 4, + description = "Grants your weapon Surges. Non-Melee Projectile Attacks with that weapon Consume Surges to cause the Projectiles fired to explode at the end of their flight.", + skillTypes = { [SkillType.Attack] = true, [SkillType.Area] = true, [SkillType.Chaos] = true, [SkillType.Triggered] = true, [SkillType.InbuiltTrigger] = true, [SkillType.Triggerable] = true, [SkillType.NoAttackOrCastTime] = true, [SkillType.CannotConsumeCharges] = true, [SkillType.AttackInPlace] = true, }, + castTime = 1, + qualityStats = { + }, + levels = { + [1] = { baseMultiplier = 0.5, levelRequirement = 0, }, + [2] = { baseMultiplier = 0.55, levelRequirement = 3, }, + [3] = { baseMultiplier = 0.61, levelRequirement = 6, }, + [4] = { baseMultiplier = 0.66, levelRequirement = 10, }, + [5] = { baseMultiplier = 0.72, levelRequirement = 14, }, + [6] = { baseMultiplier = 0.77, levelRequirement = 18, }, + [7] = { baseMultiplier = 0.83, levelRequirement = 22, }, + [8] = { baseMultiplier = 0.88, levelRequirement = 26, }, + [9] = { baseMultiplier = 0.93, levelRequirement = 31, }, + [10] = { baseMultiplier = 0.99, levelRequirement = 36, }, + [11] = { baseMultiplier = 1.05, levelRequirement = 41, }, + [12] = { baseMultiplier = 1.11, levelRequirement = 46, }, + [13] = { baseMultiplier = 1.17, levelRequirement = 52, }, + [14] = { baseMultiplier = 1.25, levelRequirement = 58, }, + [15] = { baseMultiplier = 1.32, levelRequirement = 64, }, + [16] = { baseMultiplier = 1.41, levelRequirement = 66, }, + [17] = { baseMultiplier = 1.5, levelRequirement = 72, }, + [18] = { baseMultiplier = 1.59, levelRequirement = 78, }, + [19] = { baseMultiplier = 1.7, levelRequirement = 84, }, + [20] = { baseMultiplier = 1.81, levelRequirement = 90, }, + [21] = { baseMultiplier = 1.93, levelRequirement = 90, }, + [22] = { baseMultiplier = 2.06, levelRequirement = 90, }, + [23] = { baseMultiplier = 2.2, levelRequirement = 90, }, + [24] = { baseMultiplier = 2.34, levelRequirement = 90, }, + [25] = { baseMultiplier = 2.5, levelRequirement = 90, }, + [26] = { baseMultiplier = 2.67, levelRequirement = 90, }, + [27] = { baseMultiplier = 2.84, levelRequirement = 90, }, + [28] = { baseMultiplier = 3.03, levelRequirement = 90, }, + [29] = { baseMultiplier = 3.24, levelRequirement = 90, }, + [30] = { baseMultiplier = 3.45, levelRequirement = 90, }, + [31] = { baseMultiplier = 3.68, levelRequirement = 90, }, + [32] = { baseMultiplier = 3.93, levelRequirement = 90, }, + [33] = { baseMultiplier = 4.19, levelRequirement = 90, }, + [34] = { baseMultiplier = 4.47, levelRequirement = 90, }, + [35] = { baseMultiplier = 4.76, levelRequirement = 90, }, + [36] = { baseMultiplier = 5.08, levelRequirement = 90, }, + [37] = { baseMultiplier = 5.42, levelRequirement = 90, }, + [38] = { baseMultiplier = 5.78, levelRequirement = 90, }, + [39] = { baseMultiplier = 6.17, levelRequirement = 90, }, + [40] = { baseMultiplier = 6.58, levelRequirement = 90, }, + }, + statSets = { + [1] = { + label = "Chaotic Surge", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "chaos_surge", + baseFlags = { + attack = true, + area = true, + }, + constantStats = { + { "chance_to_be_triggered_by_chaos_spear_%", 100 }, + { "active_skill_base_area_of_effect_radius", 18 }, + { "active_skill_base_physical_damage_%_to_convert_to_chaos", 100 }, + { "base_skill_effect_duration", 15000 }, + { "maximum_number_of_instilling_stacks", 6 }, + }, + stats = { + "is_area_damage", + "cannot_consume_power_frenzy_endurance_charges", + "base_skill_show_average_damage_instead_of_dps", + }, + levels = { + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, + }, + }, + } +} skills["ConductiveRunesPlayer"] = { name = "Conductive Runes", baseTypeName = "Conductive Runes", @@ -7296,70 +7570,252 @@ skills["FuturePastPlayer"] = { }, } } -skills["MeleeGrenadeLauncherPlayer"] = { - name = "Grenade", - baseTypeName = "Grenade", - icon = "Art/2DArt/SkillIcons/TheRedemption.dds", +skills["GelidPalmPlayer"] = { + name = "Gelid Palm", + baseTypeName = "Gelid Palm", + icon = "Art/2DArt/SkillIcons/FrostFury.dds", fromItem = true, color = 4, - description = "Fire a bouncing Grenade that unleashes a shrapnel blast when its fuse expires.", - skillTypes = { [SkillType.Attack] = true, [SkillType.RangedAttack] = true, [SkillType.Area] = true, [SkillType.ProjectileNumber] = true, [SkillType.ProjectileSpeed] = true, [SkillType.Cooldown] = true, [SkillType.Triggerable] = true, [SkillType.Grenade] = true, [SkillType.UsableWhileMoving] = true, [SkillType.DetonatesAfterTime] = true, [SkillType.Projectile] = true, [SkillType.Duration] = true, [SkillType.MirageArcherCanUse] = true, [SkillType.Physical] = true, }, + description = "When you Hit with Unarmed Melee Attacks, projects icy wind which deal Unarmed Attack damage to all surrounding enemies and destroy Ice Crystals.", + skillTypes = { [SkillType.Buff] = true, [SkillType.HasReservation] = true, [SkillType.Area] = true, [SkillType.Cold] = true, [SkillType.Attack] = true, [SkillType.OngoingSkill] = true, [SkillType.Persistent] = true, [SkillType.NoAttackOrCastTime] = true, [SkillType.AttackInPlace] = true, }, weaponTypes = { - ["Crossbow"] = true, + ["None"] = true, }, - castTime = 1, + castTime = 0, qualityStats = { }, levels = { - [1] = { baseMultiplier = 0.65, cooldown = 1, levelRequirement = 0, storedUses = 3, cost = { Mana = 0, }, }, - [2] = { baseMultiplier = 0.71, cooldown = 1, levelRequirement = 3, storedUses = 3, cost = { Mana = 0, }, }, - [3] = { baseMultiplier = 0.79, cooldown = 1, levelRequirement = 6, storedUses = 3, cost = { Mana = 0, }, }, - [4] = { baseMultiplier = 0.86, cooldown = 1, levelRequirement = 10, storedUses = 3, cost = { Mana = 0, }, }, - [5] = { baseMultiplier = 0.93, cooldown = 1, levelRequirement = 14, storedUses = 3, cost = { Mana = 0, }, }, - [6] = { cooldown = 1, levelRequirement = 18, storedUses = 3, cost = { Mana = 0, }, }, - [7] = { baseMultiplier = 1.08, cooldown = 1, levelRequirement = 22, storedUses = 3, cost = { Mana = 0, }, }, - [8] = { baseMultiplier = 1.15, cooldown = 1, levelRequirement = 26, storedUses = 3, cost = { Mana = 0, }, }, - [9] = { baseMultiplier = 1.21, cooldown = 1, levelRequirement = 31, storedUses = 3, cost = { Mana = 0, }, }, - [10] = { baseMultiplier = 1.28, cooldown = 1, levelRequirement = 36, storedUses = 3, cost = { Mana = 0, }, }, - [11] = { baseMultiplier = 1.36, cooldown = 1, levelRequirement = 41, storedUses = 3, cost = { Mana = 0, }, }, - [12] = { baseMultiplier = 1.44, cooldown = 1, levelRequirement = 46, storedUses = 3, cost = { Mana = 0, }, }, - [13] = { baseMultiplier = 1.53, cooldown = 1, levelRequirement = 52, storedUses = 3, cost = { Mana = 0, }, }, - [14] = { baseMultiplier = 1.62, cooldown = 1, levelRequirement = 58, storedUses = 3, cost = { Mana = 0, }, }, - [15] = { baseMultiplier = 1.72, cooldown = 1, levelRequirement = 64, storedUses = 3, cost = { Mana = 0, }, }, - [16] = { baseMultiplier = 1.83, cooldown = 1, levelRequirement = 66, storedUses = 3, cost = { Mana = 0, }, }, - [17] = { baseMultiplier = 1.95, cooldown = 1, levelRequirement = 72, storedUses = 3, cost = { Mana = 0, }, }, - [18] = { baseMultiplier = 2.07, cooldown = 1, levelRequirement = 78, storedUses = 3, cost = { Mana = 0, }, }, - [19] = { baseMultiplier = 2.21, cooldown = 1, levelRequirement = 84, storedUses = 3, cost = { Mana = 0, }, }, - [20] = { baseMultiplier = 2.35, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [21] = { baseMultiplier = 2.51, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [22] = { baseMultiplier = 2.68, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [23] = { baseMultiplier = 2.86, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [24] = { baseMultiplier = 3.05, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [25] = { baseMultiplier = 3.25, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [26] = { baseMultiplier = 3.47, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [27] = { baseMultiplier = 3.7, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [28] = { baseMultiplier = 3.94, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [29] = { baseMultiplier = 4.21, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [30] = { baseMultiplier = 4.49, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [31] = { baseMultiplier = 4.79, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [32] = { baseMultiplier = 5.1, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [33] = { baseMultiplier = 5.44, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [34] = { baseMultiplier = 5.81, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [35] = { baseMultiplier = 6.19, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [36] = { baseMultiplier = 6.61, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [37] = { baseMultiplier = 7.05, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [38] = { baseMultiplier = 7.52, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [39] = { baseMultiplier = 8.02, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, - [40] = { baseMultiplier = 8.55, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 3, }, + [3] = { levelRequirement = 6, }, + [4] = { levelRequirement = 10, }, + [5] = { levelRequirement = 14, }, + [6] = { levelRequirement = 18, }, + [7] = { levelRequirement = 22, }, + [8] = { levelRequirement = 26, }, + [9] = { levelRequirement = 31, }, + [10] = { levelRequirement = 36, }, + [11] = { levelRequirement = 41, }, + [12] = { levelRequirement = 46, }, + [13] = { levelRequirement = 52, }, + [14] = { levelRequirement = 58, }, + [15] = { levelRequirement = 64, }, + [16] = { levelRequirement = 66, }, + [17] = { levelRequirement = 72, }, + [18] = { levelRequirement = 78, }, + [19] = { levelRequirement = 84, }, + [20] = { levelRequirement = 90, }, + [21] = { levelRequirement = 90, }, + [22] = { levelRequirement = 90, }, + [23] = { levelRequirement = 90, }, + [24] = { levelRequirement = 90, }, + [25] = { levelRequirement = 90, }, + [26] = { levelRequirement = 90, }, + [27] = { levelRequirement = 90, }, + [28] = { levelRequirement = 90, }, + [29] = { levelRequirement = 90, }, + [30] = { levelRequirement = 90, }, + [31] = { levelRequirement = 90, }, + [32] = { levelRequirement = 90, }, + [33] = { levelRequirement = 90, }, + [34] = { levelRequirement = 90, }, + [35] = { levelRequirement = 90, }, + [36] = { levelRequirement = 90, }, + [37] = { levelRequirement = 90, }, + [38] = { levelRequirement = 90, }, + [39] = { levelRequirement = 90, }, + [40] = { levelRequirement = 90, }, }, statSets = { [1] = { - label = "Grenade", + label = "Gelid Palm", incrementalEffectiveness = 0.054999999701977, - statDescriptionScope = "player_melee_grenade_launcher", + statDescriptionScope = "gelid_palm_statset_0", baseFlags = { - attack = true, - area = true, + }, + constantStats = { + { "skill_desired_amount_override", 1 }, + }, + stats = { + "base_deal_no_damage", + }, + levels = { + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, + }, + }, + [2] = { + label = "Ice Burst", + baseEffectiveness = 2.3199999332428, + incrementalEffectiveness = 0.27349999547005, + statDescriptionScope = "gelid_palm_statset_1", + baseFlags = { + attack = true, + area = true, + unarmed = true, + }, + constantStats = { + { "skill_desired_amount_override", 1 }, + { "active_skill_base_area_of_effect_radius", 18 }, + { "thunderfist_number_of_bolts_delays", 5 }, + { "thunderfist_bolt_delay_ms", 500 }, + { "active_skill_hit_damage_freeze_multiplier_+%_final", 50 }, + }, + stats = { + "attack_minimum_added_cold_damage", + "attack_maximum_added_cold_damage", + "base_skill_show_average_damage_instead_of_dps", + "attack_is_not_melee_override", + "is_area_damage", + "destroy_frost_wall_segment_on_hit", + }, + levels = { + [1] = { 7, 11, baseMultiplier = 0.25, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 1, }, + [2] = { 12, 18, baseMultiplier = 0.27, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 19, 28, baseMultiplier = 0.3, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 26, 38, baseMultiplier = 0.33, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 33, 49, baseMultiplier = 0.36, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 41, 61, baseMultiplier = 0.38, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 49, 74, baseMultiplier = 0.41, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 58, 87, baseMultiplier = 0.43, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 67, 101, baseMultiplier = 0.45, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 77, 115, baseMultiplier = 0.47, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 87, 130, baseMultiplier = 0.49, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 97, 146, baseMultiplier = 0.52, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 108, 163, baseMultiplier = 0.54, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 120, 180, baseMultiplier = 0.56, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 132, 198, baseMultiplier = 0.59, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 144, 216, baseMultiplier = 0.61, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 157, 235, baseMultiplier = 0.64, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 170, 255, baseMultiplier = 0.67, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 184, 276, baseMultiplier = 0.7, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 198, 297, baseMultiplier = 0.73, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 212, 319, baseMultiplier = 0.76, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 227, 341, baseMultiplier = 0.79, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 243, 364, baseMultiplier = 0.82, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 259, 388, baseMultiplier = 0.86, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 275, 413, baseMultiplier = 0.89, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 136.875, }, + [26] = { 292, 438, baseMultiplier = 0.93, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 309, 464, baseMultiplier = 0.97, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 327, 490, baseMultiplier = 1.01, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 345, 518, baseMultiplier = 1.05, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 364, 545, baseMultiplier = 1.09, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 383, 574, baseMultiplier = 1.14, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 402, 603, baseMultiplier = 1.19, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 422, 633, baseMultiplier = 1.24, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 442, 663, baseMultiplier = 1.29, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 463, 695, baseMultiplier = 1.34, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 484, 727, baseMultiplier = 1.4, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 506, 759, baseMultiplier = 1.46, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 528, 792, baseMultiplier = 1.52, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 551, 826, baseMultiplier = 1.59, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 574, 861, baseMultiplier = 1.65, critChance = 15, statInterpolation = { 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} +skills["MeleeGrenadeLauncherPlayer"] = { + name = "Grenade", + baseTypeName = "Grenade", + icon = "Art/2DArt/SkillIcons/TheRedemption.dds", + fromItem = true, + color = 4, + description = "Fire a bouncing Grenade that unleashes a shrapnel blast when its fuse expires.", + skillTypes = { [SkillType.Attack] = true, [SkillType.RangedAttack] = true, [SkillType.Area] = true, [SkillType.ProjectileNumber] = true, [SkillType.ProjectileSpeed] = true, [SkillType.Cooldown] = true, [SkillType.Triggerable] = true, [SkillType.Grenade] = true, [SkillType.UsableWhileMoving] = true, [SkillType.DetonatesAfterTime] = true, [SkillType.Projectile] = true, [SkillType.Duration] = true, [SkillType.MirageArcherCanUse] = true, [SkillType.Physical] = true, }, + weaponTypes = { + ["Crossbow"] = true, + }, + castTime = 1, + qualityStats = { + }, + levels = { + [1] = { baseMultiplier = 0.65, cooldown = 1, levelRequirement = 0, storedUses = 3, cost = { Mana = 0, }, }, + [2] = { baseMultiplier = 0.71, cooldown = 1, levelRequirement = 3, storedUses = 3, cost = { Mana = 0, }, }, + [3] = { baseMultiplier = 0.79, cooldown = 1, levelRequirement = 6, storedUses = 3, cost = { Mana = 0, }, }, + [4] = { baseMultiplier = 0.86, cooldown = 1, levelRequirement = 10, storedUses = 3, cost = { Mana = 0, }, }, + [5] = { baseMultiplier = 0.93, cooldown = 1, levelRequirement = 14, storedUses = 3, cost = { Mana = 0, }, }, + [6] = { cooldown = 1, levelRequirement = 18, storedUses = 3, cost = { Mana = 0, }, }, + [7] = { baseMultiplier = 1.08, cooldown = 1, levelRequirement = 22, storedUses = 3, cost = { Mana = 0, }, }, + [8] = { baseMultiplier = 1.15, cooldown = 1, levelRequirement = 26, storedUses = 3, cost = { Mana = 0, }, }, + [9] = { baseMultiplier = 1.21, cooldown = 1, levelRequirement = 31, storedUses = 3, cost = { Mana = 0, }, }, + [10] = { baseMultiplier = 1.28, cooldown = 1, levelRequirement = 36, storedUses = 3, cost = { Mana = 0, }, }, + [11] = { baseMultiplier = 1.36, cooldown = 1, levelRequirement = 41, storedUses = 3, cost = { Mana = 0, }, }, + [12] = { baseMultiplier = 1.44, cooldown = 1, levelRequirement = 46, storedUses = 3, cost = { Mana = 0, }, }, + [13] = { baseMultiplier = 1.53, cooldown = 1, levelRequirement = 52, storedUses = 3, cost = { Mana = 0, }, }, + [14] = { baseMultiplier = 1.62, cooldown = 1, levelRequirement = 58, storedUses = 3, cost = { Mana = 0, }, }, + [15] = { baseMultiplier = 1.72, cooldown = 1, levelRequirement = 64, storedUses = 3, cost = { Mana = 0, }, }, + [16] = { baseMultiplier = 1.83, cooldown = 1, levelRequirement = 66, storedUses = 3, cost = { Mana = 0, }, }, + [17] = { baseMultiplier = 1.95, cooldown = 1, levelRequirement = 72, storedUses = 3, cost = { Mana = 0, }, }, + [18] = { baseMultiplier = 2.07, cooldown = 1, levelRequirement = 78, storedUses = 3, cost = { Mana = 0, }, }, + [19] = { baseMultiplier = 2.21, cooldown = 1, levelRequirement = 84, storedUses = 3, cost = { Mana = 0, }, }, + [20] = { baseMultiplier = 2.35, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [21] = { baseMultiplier = 2.51, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [22] = { baseMultiplier = 2.68, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [23] = { baseMultiplier = 2.86, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [24] = { baseMultiplier = 3.05, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [25] = { baseMultiplier = 3.25, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [26] = { baseMultiplier = 3.47, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [27] = { baseMultiplier = 3.7, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [28] = { baseMultiplier = 3.94, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [29] = { baseMultiplier = 4.21, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [30] = { baseMultiplier = 4.49, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [31] = { baseMultiplier = 4.79, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [32] = { baseMultiplier = 5.1, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [33] = { baseMultiplier = 5.44, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [34] = { baseMultiplier = 5.81, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [35] = { baseMultiplier = 6.19, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [36] = { baseMultiplier = 6.61, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [37] = { baseMultiplier = 7.05, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [38] = { baseMultiplier = 7.52, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [39] = { baseMultiplier = 8.02, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + [40] = { baseMultiplier = 8.55, cooldown = 1, levelRequirement = 90, storedUses = 3, cost = { Mana = 0, }, }, + }, + statSets = { + [1] = { + label = "Grenade", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "player_melee_grenade_launcher", + baseFlags = { + attack = true, + area = true, projectile = true, }, constantStats = { @@ -7644,6 +8100,320 @@ skills["GrimPillarsPlayer"] = { }, } } +skills["HarbingerOfMadnessPlayer"] = { + name = "Harbinger of Madness", + baseTypeName = "Harbinger of Madness", + icon = "Art/2DArt/SkillIcons/Murkmaw.dds", + fromItem = true, + color = 4, + description = "Draws out the latent fears of enemies you kill and Rare or Unique enemies you Hit, turning them into unstable apparitions which charge towards enemies and then explode.", + skillTypes = { [SkillType.Buff] = true, [SkillType.HasReservation] = true, [SkillType.OngoingSkill] = true, [SkillType.Physical] = true, [SkillType.Area] = true, [SkillType.Damage] = true, [SkillType.Persistent] = true, }, + castTime = 0, + qualityStats = { + }, + levels = { + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 3, }, + [3] = { levelRequirement = 6, }, + [4] = { levelRequirement = 10, }, + [5] = { levelRequirement = 14, }, + [6] = { levelRequirement = 18, }, + [7] = { levelRequirement = 22, }, + [8] = { levelRequirement = 26, }, + [9] = { levelRequirement = 31, }, + [10] = { levelRequirement = 36, }, + [11] = { levelRequirement = 41, }, + [12] = { levelRequirement = 46, }, + [13] = { levelRequirement = 52, }, + [14] = { levelRequirement = 58, }, + [15] = { levelRequirement = 64, }, + [16] = { levelRequirement = 66, }, + [17] = { levelRequirement = 72, }, + [18] = { levelRequirement = 78, }, + [19] = { levelRequirement = 84, }, + [20] = { levelRequirement = 90, }, + [21] = { levelRequirement = 90, }, + [22] = { levelRequirement = 90, }, + [23] = { levelRequirement = 90, }, + [24] = { levelRequirement = 90, }, + [25] = { levelRequirement = 90, }, + [26] = { levelRequirement = 90, }, + [27] = { levelRequirement = 90, }, + [28] = { levelRequirement = 90, }, + [29] = { levelRequirement = 90, }, + [30] = { levelRequirement = 90, }, + [31] = { levelRequirement = 90, }, + [32] = { levelRequirement = 90, }, + [33] = { levelRequirement = 90, }, + [34] = { levelRequirement = 90, }, + [35] = { levelRequirement = 90, }, + [36] = { levelRequirement = 90, }, + [37] = { levelRequirement = 90, }, + [38] = { levelRequirement = 90, }, + [39] = { levelRequirement = 90, }, + [40] = { levelRequirement = 90, }, + }, + statSets = { + [1] = { + label = "Harbinger of Madness", + baseEffectiveness = 3, + incrementalEffectiveness = 0.12999999523163, + damageIncrementalEffectiveness = 0.0096000004559755, + statDescriptionScope = "harbinger_of_madness", + statMap = { + ["harbinger_of_madness_damage_+%_final_per_power_of_source_enemy"] = { + mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "EnemyPower"}), + }, + }, + baseFlags = { + area = true, + hit = true, + }, + constantStats = { + { "skill_grants_spawn_harbinger_of_madness_orb_on_melee_kill_once_per_timer_ms", 50 }, + { "unique_chance_to_spawn_harbinger_of_madness_orb_on_hitting_rare_or_unique_enemy_with_melee_attacks_%", 100 }, + { "active_skill_base_area_of_effect_radius", 20 }, + { "skill_desired_amount_override", 1 }, + { "harbinger_of_madness_damage_+%_final_per_power_of_source_enemy", 5 }, + { "harbinger_of_madness_additional_damage_from_%_source_enemy_life", 8 }, + }, + stats = { + "secondary_minimum_base_physical_damage", + "secondary_maximum_base_physical_damage", + "is_area_damage", + "display_skill_deals_secondary_damage", + }, + notMinionStat = { + "secondary_minimum_base_physical_damage", + "secondary_maximum_base_physical_damage", + }, + levels = { + [1] = { 9, 14, statInterpolation = { 1, 1, }, actorLevel = 1, }, + [2] = { 13, 19, statInterpolation = { 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 17, 26, statInterpolation = { 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 23, 34, statInterpolation = { 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 29, 43, statInterpolation = { 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 35, 53, statInterpolation = { 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 43, 65, statInterpolation = { 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 52, 78, statInterpolation = { 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 62, 93, statInterpolation = { 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 73, 110, statInterpolation = { 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 86, 129, statInterpolation = { 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 100, 151, statInterpolation = { 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 117, 175, statInterpolation = { 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 136, 204, statInterpolation = { 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 157, 236, statInterpolation = { 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 181, 272, statInterpolation = { 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 209, 314, statInterpolation = { 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 241, 362, statInterpolation = { 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 277, 416, statInterpolation = { 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 319, 478, statInterpolation = { 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 366, 549, statInterpolation = { 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 421, 631, statInterpolation = { 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 483, 725, statInterpolation = { 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 555, 832, statInterpolation = { 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 637, 956, statInterpolation = { 1, 1, }, actorLevel = 136.875, }, + [26] = { 732, 1099, statInterpolation = { 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 842, 1263, statInterpolation = { 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 968, 1453, statInterpolation = { 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 1114, 1672, statInterpolation = { 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 1284, 1925, statInterpolation = { 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 1479, 2219, statInterpolation = { 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 1707, 2560, statInterpolation = { 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 1971, 2956, statInterpolation = { 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 2278, 3417, statInterpolation = { 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 2636, 3954, statInterpolation = { 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 3054, 4580, statInterpolation = { 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 3541, 5312, statInterpolation = { 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 4112, 6168, statInterpolation = { 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 4781, 7171, statInterpolation = { 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 5565, 8348, statInterpolation = { 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} +skills["UniqueAtziriHeraldPlayer"] = { + name = "Herald of the Royal Queen", + baseTypeName = "Herald of the Royal Queen", + icon = "Art/2DArt/SkillIcons/AtziriHeraldOfBlood.dds", + fromItem = true, + color = 4, + description = "Killing an enemy with Blood Loss will cause a bloody explosion that deals Physical Attack damage to surrounding enemies. This damage is not based on your Weapon Damage, but is based on their accumulated Blood Loss. The explosion destroys their Corpse if the enemy was Normal or Magic.", + skillTypes = { [SkillType.OngoingSkill] = true, [SkillType.HasReservation] = true, [SkillType.Buff] = true, [SkillType.Persistent] = true, [SkillType.Herald] = true, [SkillType.UseGlobalStats] = true, [SkillType.Area] = true, [SkillType.Attack] = true, [SkillType.Physical] = true, [SkillType.SkillConsumesBleeding] = true, [SkillType.NoAttackOrCastTime] = true, [SkillType.AttackInPlace] = true, [SkillType.NonWeaponAttack] = true, }, + castTime = 1, + qualityStats = { + { "active_skill_damage_+%_final", 0.5 }, + }, + levels = { + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 3, }, + [3] = { levelRequirement = 6, }, + [4] = { levelRequirement = 10, }, + [5] = { levelRequirement = 14, }, + [6] = { levelRequirement = 18, }, + [7] = { levelRequirement = 22, }, + [8] = { levelRequirement = 26, }, + [9] = { levelRequirement = 31, }, + [10] = { levelRequirement = 36, }, + [11] = { levelRequirement = 41, }, + [12] = { levelRequirement = 46, }, + [13] = { levelRequirement = 52, }, + [14] = { levelRequirement = 58, }, + [15] = { levelRequirement = 64, }, + [16] = { levelRequirement = 66, }, + [17] = { levelRequirement = 72, }, + [18] = { levelRequirement = 78, }, + [19] = { levelRequirement = 84, }, + [20] = { levelRequirement = 90, }, + [21] = { levelRequirement = 90, }, + [22] = { levelRequirement = 90, }, + [23] = { levelRequirement = 90, }, + [24] = { levelRequirement = 90, }, + [25] = { levelRequirement = 90, }, + [26] = { levelRequirement = 90, }, + [27] = { levelRequirement = 90, }, + [28] = { levelRequirement = 90, }, + [29] = { levelRequirement = 90, }, + [30] = { levelRequirement = 90, }, + [31] = { levelRequirement = 90, }, + [32] = { levelRequirement = 90, }, + [33] = { levelRequirement = 90, }, + [34] = { levelRequirement = 90, }, + [35] = { levelRequirement = 90, }, + [36] = { levelRequirement = 90, }, + [37] = { levelRequirement = 90, }, + [38] = { levelRequirement = 90, }, + [39] = { levelRequirement = 90, }, + [40] = { levelRequirement = 90, }, + }, + statSets = { + [1] = { + label = "Buff", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "atziri_herald", + baseFlags = { + }, + constantStats = { + { "skill_desired_amount_override", 1 }, + }, + stats = { + "base_deal_no_damage", + "display_herald_of_blood_behaviour", + "quality_display_herald_of_blood_is_gem", + }, + levels = { + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, + }, + }, + [2] = { + label = "Explosion", + baseEffectiveness = 1.25, + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "atziri_herald", + baseFlags = { + hit = true, + }, + constantStats = { + { "skill_desired_amount_override", 1 }, + { "active_skill_base_area_of_effect_radius", 15 }, + { "skill_override_pvp_scaling_time_ms", 300 }, + }, + stats = { + "skill_herald_bleeding_enemies_explode_for_%_blood_loss_as_unscalable_physical_damage", + "quality_display_herald_of_blood_is_gem", + "is_area_damage", + "base_skill_show_average_damage_instead_of_dps", + "attack_is_not_melee_override", + "skill_can_add_multiple_charges_per_action", + "cannot_cause_bleeding", + "replace_main_hand_unarmed_attack_stats_with_nothing_type", + "display_statset_hide_usage_stats", + "global_always_hit", + }, + levels = { + [1] = { 6, critChance = 5, statInterpolation = { 1, }, actorLevel = 1, }, + [2] = { 7, critChance = 5, statInterpolation = { 1, }, actorLevel = 3.4519999027252, }, + [3] = { 8, critChance = 5, statInterpolation = { 1, }, actorLevel = 6.7670001983643, }, + [4] = { 9, critChance = 5, statInterpolation = { 1, }, actorLevel = 10.307999610901, }, + [5] = { 10, critChance = 5, statInterpolation = { 1, }, actorLevel = 14.074999809265, }, + [6] = { 11, critChance = 5, statInterpolation = { 1, }, actorLevel = 18.068000793457, }, + [7] = { 12, critChance = 5, statInterpolation = { 1, }, actorLevel = 22.287000656128, }, + [8] = { 13, critChance = 5, statInterpolation = { 1, }, actorLevel = 26.732000350952, }, + [9] = { 14, critChance = 5, statInterpolation = { 1, }, actorLevel = 31.40299987793, }, + [10] = { 15, critChance = 5, statInterpolation = { 1, }, actorLevel = 36.299999237061, }, + [11] = { 16, critChance = 5, statInterpolation = { 1, }, actorLevel = 41.423000335693, }, + [12] = { 17, critChance = 5, statInterpolation = { 1, }, actorLevel = 46.771999359131, }, + [13] = { 18, critChance = 5, statInterpolation = { 1, }, actorLevel = 52.34700012207, }, + [14] = { 19, critChance = 5, statInterpolation = { 1, }, actorLevel = 58.147998809814, }, + [15] = { 20, critChance = 5, statInterpolation = { 1, }, actorLevel = 64.175003051758, }, + [16] = { 21, critChance = 5, statInterpolation = { 1, }, actorLevel = 70.428001403809, }, + [17] = { 22, critChance = 5, statInterpolation = { 1, }, actorLevel = 76.906997680664, }, + [18] = { 23, critChance = 5, statInterpolation = { 1, }, actorLevel = 83.611999511719, }, + [19] = { 24, critChance = 5, statInterpolation = { 1, }, actorLevel = 90.542999267578, }, + [20] = { 25, critChance = 5, statInterpolation = { 1, }, actorLevel = 97.699996948242, }, + [21] = { 26, critChance = 5, statInterpolation = { 1, }, actorLevel = 105.08300018311, }, + [22] = { 27, critChance = 5, statInterpolation = { 1, }, actorLevel = 112.69200134277, }, + [23] = { 28, critChance = 5, statInterpolation = { 1, }, actorLevel = 120.52700042725, }, + [24] = { 29, critChance = 5, statInterpolation = { 1, }, actorLevel = 128.58799743652, }, + [25] = { 30, critChance = 5, statInterpolation = { 1, }, actorLevel = 136.875, }, + [26] = { 31, critChance = 5, statInterpolation = { 1, }, actorLevel = 145.38800048828, }, + [27] = { 32, critChance = 5, statInterpolation = { 1, }, actorLevel = 154.12699890137, }, + [28] = { 33, critChance = 5, statInterpolation = { 1, }, actorLevel = 163.09199523926, }, + [29] = { 34, critChance = 5, statInterpolation = { 1, }, actorLevel = 172.28300476074, }, + [30] = { 35, critChance = 5, statInterpolation = { 1, }, actorLevel = 181.69999694824, }, + [31] = { 36, critChance = 5, statInterpolation = { 1, }, actorLevel = 191.34300231934, }, + [32] = { 37, critChance = 5, statInterpolation = { 1, }, actorLevel = 201.21200561523, }, + [33] = { 38, critChance = 5, statInterpolation = { 1, }, actorLevel = 211.30700683594, }, + [34] = { 39, critChance = 5, statInterpolation = { 1, }, actorLevel = 221.62800598145, }, + [35] = { 40, critChance = 5, statInterpolation = { 1, }, actorLevel = 232.17500305176, }, + [36] = { 41, critChance = 5, statInterpolation = { 1, }, actorLevel = 242.94799804688, }, + [37] = { 42, critChance = 5, statInterpolation = { 1, }, actorLevel = 253.94700622559, }, + [38] = { 43, critChance = 5, statInterpolation = { 1, }, actorLevel = 265.17199707031, }, + [39] = { 44, critChance = 5, statInterpolation = { 1, }, actorLevel = 276.62298583984, }, + [40] = { 45, critChance = 5, statInterpolation = { 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["SupportHerDeclarationPlayer"] = { name = "Her Declaration", description = "Supports Persistent Buff Skills, causing enemies that enter your Presence to become Intimidated while the Skill is active.", @@ -13948,72 +14718,194 @@ skills["RunicReprievePlayer"] = { [1] = { label = "Runic Reprieve", incrementalEffectiveness = 0.054999999701977, - statDescriptionScope = "runic_reprieve", + statDescriptionScope = "runic_reprieve", + baseFlags = { + }, + constantStats = { + { "movement_speed_+%_final_while_performing_action", -50 }, + { "movement_speed_acceleration_+%_per_second_while_performing_action", 160 }, + { "movement_speed_while_performing_action_locked_duration_%", 50 }, + { "active_skill_heavy_stun_decay_after_action_delay_ms", 2000 }, + { "skill_animation_duration_multiplier_override", 6 }, + { "base_minimum_channel_time_ms", 300 }, + { "active_skill_override_turn_duration_ms", 240 }, + { "channel_start_duration_as_%_of_cast_time", 200 }, + { "rune_ward_requires_%_maximum_ward_to_perform", 20 }, + }, + stats = { + "active_skill_stun_threshold_+%_while_performing_action", + "rune_ward_block_%_damage_taken", + "can_perform_skill_while_moving", + "active_skill_does_not_decay_heavy_stun_during_action", + "base_skill_show_average_damage_instead_of_dps", + "precise_cursor_targeting_uses_contact_point_height_offset", + "base_deal_no_damage", + "display_statset_hide_usage_stats", + "non_ward_damage_taken_from_blocked_hits_is_taken_to_ward_as_well", + }, + levels = { + [1] = { 5, 25, statInterpolation = { 1, 1, }, actorLevel = 1, }, + [2] = { 10, 25, statInterpolation = { 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 15, 25, statInterpolation = { 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 20, 25, statInterpolation = { 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 25, 24, statInterpolation = { 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 30, 24, statInterpolation = { 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 35, 24, statInterpolation = { 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 40, 24, statInterpolation = { 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 45, 23, statInterpolation = { 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 50, 23, statInterpolation = { 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 55, 23, statInterpolation = { 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 60, 23, statInterpolation = { 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 65, 22, statInterpolation = { 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 70, 22, statInterpolation = { 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 75, 22, statInterpolation = { 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 80, 22, statInterpolation = { 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 85, 21, statInterpolation = { 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 90, 21, statInterpolation = { 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 95, 21, statInterpolation = { 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 100, 21, statInterpolation = { 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 105, 20, statInterpolation = { 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 110, 20, statInterpolation = { 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 115, 20, statInterpolation = { 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 120, 20, statInterpolation = { 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 125, 20, statInterpolation = { 1, 1, }, actorLevel = 136.875, }, + [26] = { 130, 20, statInterpolation = { 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 135, 20, statInterpolation = { 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 140, 20, statInterpolation = { 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 145, 20, statInterpolation = { 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 150, 20, statInterpolation = { 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 155, 20, statInterpolation = { 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 160, 20, statInterpolation = { 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 165, 20, statInterpolation = { 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 170, 20, statInterpolation = { 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 175, 20, statInterpolation = { 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 180, 20, statInterpolation = { 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 185, 20, statInterpolation = { 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 190, 20, statInterpolation = { 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 195, 20, statInterpolation = { 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 200, 20, statInterpolation = { 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} +skills["RunicTemperingPlayer"] = { + name = "Runic Tempering", + baseTypeName = "Runic Tempering", + icon = "Art/2DArt/SkillIcons/SerlesMasterwork.dds", + fromItem = true, + color = 4, + description = "Channel to imbue your armour with Runic Plates. When you are Hit while you have these plates, some of the damage you would take will be prevented, and this skill will cause backlash, dealing your Thorns damage in an area around your attacker.", + skillTypes = { [SkillType.Channel] = true, [SkillType.Cooldown] = true, [SkillType.Damage] = true, }, + castTime = 1.125, + qualityStats = { + }, + levels = { + [1] = { cooldown = 5, levelRequirement = 0, storedUses = 1, cost = { ManaPerMinute = 174, }, }, + [2] = { cooldown = 5, levelRequirement = 3, storedUses = 1, cost = { ManaPerMinute = 201, }, }, + [3] = { cooldown = 5, levelRequirement = 6, storedUses = 1, cost = { ManaPerMinute = 231, }, }, + [4] = { cooldown = 5, levelRequirement = 10, storedUses = 1, cost = { ManaPerMinute = 262, }, }, + [5] = { cooldown = 5, levelRequirement = 14, storedUses = 1, cost = { ManaPerMinute = 296, }, }, + [6] = { cooldown = 5, levelRequirement = 18, storedUses = 1, cost = { ManaPerMinute = 332, }, }, + [7] = { cooldown = 5, levelRequirement = 22, storedUses = 1, cost = { ManaPerMinute = 371, }, }, + [8] = { cooldown = 5, levelRequirement = 26, storedUses = 1, cost = { ManaPerMinute = 412, }, }, + [9] = { cooldown = 5, levelRequirement = 31, storedUses = 1, cost = { ManaPerMinute = 456, }, }, + [10] = { cooldown = 5, levelRequirement = 36, storedUses = 1, cost = { ManaPerMinute = 503, }, }, + [11] = { cooldown = 5, levelRequirement = 41, storedUses = 1, cost = { ManaPerMinute = 553, }, }, + [12] = { cooldown = 5, levelRequirement = 46, storedUses = 1, cost = { ManaPerMinute = 606, }, }, + [13] = { cooldown = 5, levelRequirement = 52, storedUses = 1, cost = { ManaPerMinute = 663, }, }, + [14] = { cooldown = 5, levelRequirement = 58, storedUses = 1, cost = { ManaPerMinute = 724, }, }, + [15] = { cooldown = 5, levelRequirement = 64, storedUses = 1, cost = { ManaPerMinute = 789, }, }, + [16] = { cooldown = 5, levelRequirement = 66, storedUses = 1, cost = { ManaPerMinute = 857, }, }, + [17] = { cooldown = 5, levelRequirement = 72, storedUses = 1, cost = { ManaPerMinute = 930, }, }, + [18] = { cooldown = 5, levelRequirement = 78, storedUses = 1, cost = { ManaPerMinute = 1008, }, }, + [19] = { cooldown = 5, levelRequirement = 84, storedUses = 1, cost = { ManaPerMinute = 1091, }, }, + [20] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1179, }, }, + [21] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1272, }, }, + [22] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1371, }, }, + [23] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1476, }, }, + [24] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1588, }, }, + [25] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1706, }, }, + [26] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1831, }, }, + [27] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 1964, }, }, + [28] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 2105, }, }, + [29] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 2254, }, }, + [30] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 2412, }, }, + [31] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 2580, }, }, + [32] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 2757, }, }, + [33] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 2944, }, }, + [34] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 3143, }, }, + [35] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 3352, }, }, + [36] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 3574, }, }, + [37] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 3809, }, }, + [38] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 4057, }, }, + [39] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 4319, }, }, + [40] = { cooldown = 5, levelRequirement = 90, storedUses = 1, cost = { ManaPerMinute = 4596, }, }, + }, + statSets = { + [1] = { + label = "Runic Tempering", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "runic_tempering", + statMap = { + ["runic_tempering_damage_taken_+%_final"] = { + mod("DamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", unscalable = true }), + }, + }, baseFlags = { }, constantStats = { - { "movement_speed_+%_final_while_performing_action", -50 }, - { "movement_speed_acceleration_+%_per_second_while_performing_action", 160 }, - { "movement_speed_while_performing_action_locked_duration_%", 50 }, - { "active_skill_heavy_stun_decay_after_action_delay_ms", 2000 }, - { "skill_animation_duration_multiplier_override", 6 }, - { "base_minimum_channel_time_ms", 300 }, - { "active_skill_override_turn_duration_ms", 240 }, - { "channel_start_duration_as_%_of_cast_time", 200 }, - { "rune_ward_requires_%_maximum_ward_to_perform", 20 }, + { "runic_tempering_damage_taken_+%_final", -10 }, + { "channel_skill_end_animation_duration_override_ms", 83 }, + { "runic_tempering_hit_per_rune", 5 }, + { "runic_tempering_max_runes", 4 }, + { "runic_tempering_backlash_cooldown_ms", 400 }, + { "active_skill_base_area_of_effect_radius", 19 }, }, stats = { - "active_skill_stun_threshold_+%_while_performing_action", - "rune_ward_block_%_damage_taken", - "can_perform_skill_while_moving", - "active_skill_does_not_decay_heavy_stun_during_action", - "base_skill_show_average_damage_instead_of_dps", - "precise_cursor_targeting_uses_contact_point_height_offset", - "base_deal_no_damage", - "display_statset_hide_usage_stats", - "non_ward_damage_taken_from_blocked_hits_is_taken_to_ward_as_well", + "display_skill_deals_thorns_damage", + "display_skill_deals_secondary_damage", }, levels = { - [1] = { 5, 25, statInterpolation = { 1, 1, }, actorLevel = 1, }, - [2] = { 10, 25, statInterpolation = { 1, 1, }, actorLevel = 3.4519999027252, }, - [3] = { 15, 25, statInterpolation = { 1, 1, }, actorLevel = 6.7670001983643, }, - [4] = { 20, 25, statInterpolation = { 1, 1, }, actorLevel = 10.307999610901, }, - [5] = { 25, 24, statInterpolation = { 1, 1, }, actorLevel = 14.074999809265, }, - [6] = { 30, 24, statInterpolation = { 1, 1, }, actorLevel = 18.068000793457, }, - [7] = { 35, 24, statInterpolation = { 1, 1, }, actorLevel = 22.287000656128, }, - [8] = { 40, 24, statInterpolation = { 1, 1, }, actorLevel = 26.732000350952, }, - [9] = { 45, 23, statInterpolation = { 1, 1, }, actorLevel = 31.40299987793, }, - [10] = { 50, 23, statInterpolation = { 1, 1, }, actorLevel = 36.299999237061, }, - [11] = { 55, 23, statInterpolation = { 1, 1, }, actorLevel = 41.423000335693, }, - [12] = { 60, 23, statInterpolation = { 1, 1, }, actorLevel = 46.771999359131, }, - [13] = { 65, 22, statInterpolation = { 1, 1, }, actorLevel = 52.34700012207, }, - [14] = { 70, 22, statInterpolation = { 1, 1, }, actorLevel = 58.147998809814, }, - [15] = { 75, 22, statInterpolation = { 1, 1, }, actorLevel = 64.175003051758, }, - [16] = { 80, 22, statInterpolation = { 1, 1, }, actorLevel = 70.428001403809, }, - [17] = { 85, 21, statInterpolation = { 1, 1, }, actorLevel = 76.906997680664, }, - [18] = { 90, 21, statInterpolation = { 1, 1, }, actorLevel = 83.611999511719, }, - [19] = { 95, 21, statInterpolation = { 1, 1, }, actorLevel = 90.542999267578, }, - [20] = { 100, 21, statInterpolation = { 1, 1, }, actorLevel = 97.699996948242, }, - [21] = { 105, 20, statInterpolation = { 1, 1, }, actorLevel = 105.08300018311, }, - [22] = { 110, 20, statInterpolation = { 1, 1, }, actorLevel = 112.69200134277, }, - [23] = { 115, 20, statInterpolation = { 1, 1, }, actorLevel = 120.52700042725, }, - [24] = { 120, 20, statInterpolation = { 1, 1, }, actorLevel = 128.58799743652, }, - [25] = { 125, 20, statInterpolation = { 1, 1, }, actorLevel = 136.875, }, - [26] = { 130, 20, statInterpolation = { 1, 1, }, actorLevel = 145.38800048828, }, - [27] = { 135, 20, statInterpolation = { 1, 1, }, actorLevel = 154.12699890137, }, - [28] = { 140, 20, statInterpolation = { 1, 1, }, actorLevel = 163.09199523926, }, - [29] = { 145, 20, statInterpolation = { 1, 1, }, actorLevel = 172.28300476074, }, - [30] = { 150, 20, statInterpolation = { 1, 1, }, actorLevel = 181.69999694824, }, - [31] = { 155, 20, statInterpolation = { 1, 1, }, actorLevel = 191.34300231934, }, - [32] = { 160, 20, statInterpolation = { 1, 1, }, actorLevel = 201.21200561523, }, - [33] = { 165, 20, statInterpolation = { 1, 1, }, actorLevel = 211.30700683594, }, - [34] = { 170, 20, statInterpolation = { 1, 1, }, actorLevel = 221.62800598145, }, - [35] = { 175, 20, statInterpolation = { 1, 1, }, actorLevel = 232.17500305176, }, - [36] = { 180, 20, statInterpolation = { 1, 1, }, actorLevel = 242.94799804688, }, - [37] = { 185, 20, statInterpolation = { 1, 1, }, actorLevel = 253.94700622559, }, - [38] = { 190, 20, statInterpolation = { 1, 1, }, actorLevel = 265.17199707031, }, - [39] = { 195, 20, statInterpolation = { 1, 1, }, actorLevel = 276.62298583984, }, - [40] = { 200, 20, statInterpolation = { 1, 1, }, actorLevel = 288.29998779297, }, + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, }, }, } @@ -14253,6 +15145,131 @@ skills["CommandFireDjinnLivingBombPlayer"] = { }, } } +skills["SanguineRevelryPlayer"] = { + name = "Sanguine Revelry", + baseTypeName = "Sanguine Revelry", + icon = "Art/2DArt/SkillIcons/CrimsonChrysalis.dds", + fromItem = true, + color = 4, + description = "Conjure hateful energy to fuel your Rage and Life. While active, Bleeding enemies you kill have a chance to spawn a Hateful Remnant, and Hitting a Bleeding target spawns a Hateful Remnant every few seconds. Picking up a Hateful Remnant grants you Rage and recovers Life based on your current Rage.", + skillTypes = { [SkillType.Buff] = true, [SkillType.HasReservation] = true, [SkillType.TotemCastsAlone] = true, [SkillType.OngoingSkill] = true, [SkillType.Persistent] = true, [SkillType.GeneratesRemnants] = true, [SkillType.AttackInPlace] = true, }, + castTime = 0, + qualityStats = { + { "sanguine_revelry_rage_gain_per_pickup", 0.1 }, + }, + levels = { + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 3, }, + [3] = { levelRequirement = 6, }, + [4] = { levelRequirement = 10, }, + [5] = { levelRequirement = 14, }, + [6] = { levelRequirement = 18, }, + [7] = { levelRequirement = 22, }, + [8] = { levelRequirement = 26, }, + [9] = { levelRequirement = 31, }, + [10] = { levelRequirement = 36, }, + [11] = { levelRequirement = 41, }, + [12] = { levelRequirement = 46, }, + [13] = { levelRequirement = 52, }, + [14] = { levelRequirement = 58, }, + [15] = { levelRequirement = 64, }, + [16] = { levelRequirement = 66, }, + [17] = { levelRequirement = 72, }, + [18] = { levelRequirement = 78, }, + [19] = { levelRequirement = 84, }, + [20] = { levelRequirement = 90, }, + [21] = { levelRequirement = 90, }, + [22] = { levelRequirement = 90, }, + [23] = { levelRequirement = 90, }, + [24] = { levelRequirement = 90, }, + [25] = { levelRequirement = 90, }, + [26] = { levelRequirement = 90, }, + [27] = { levelRequirement = 90, }, + [28] = { levelRequirement = 90, }, + [29] = { levelRequirement = 90, }, + [30] = { levelRequirement = 90, }, + [31] = { levelRequirement = 90, }, + [32] = { levelRequirement = 90, }, + [33] = { levelRequirement = 90, }, + [34] = { levelRequirement = 90, }, + [35] = { levelRequirement = 90, }, + [36] = { levelRequirement = 90, }, + [37] = { levelRequirement = 90, }, + [38] = { levelRequirement = 90, }, + [39] = { levelRequirement = 90, }, + [40] = { levelRequirement = 90, }, + }, + statSets = { + [1] = { + label = "Sanguine Revelry", + baseEffectiveness = 5, + incrementalEffectiveness = 0.050000000745058, + damageIncrementalEffectiveness = 0.0089999996125698, + statDescriptionScope = "sanguine_revelry", + statMap = { + ["sanguine_revelry_rage_gain_per_pickup"] = { + flag("Condition:CanGainRage", { type = "GlobalEffect", effectType = "Buff", effectName = "Sanguine Revelry" }), + }, + }, + baseFlags = { + }, + constantStats = { + { "base_remnant_duration_ms", 8000 }, + { "sanguine_revelry_%_change_to_create_remnant_on_killing_bleeding_enemy", 100 }, + { "create_furious_remnant_when_hitting_bleeding_enemies_once_every_x_ms", 2000 }, + { "skill_desired_amount_override", 1 }, + }, + stats = { + "sanguine_revelry_remnant_restore_%_permyriad_of_max_life_per_5_current_rage", + "sanguine_revelry_rage_gain_per_pickup", + "base_deal_no_damage", + "usable_with_talisman", + }, + levels = { + [1] = { 10000, 5, statInterpolation = { 1, 1, }, actorLevel = 1, }, + [2] = { 10000, 5, statInterpolation = { 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 11000, 5, statInterpolation = { 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 11000, 5, statInterpolation = { 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 11000, 6, statInterpolation = { 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 11000, 6, statInterpolation = { 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 12000, 6, statInterpolation = { 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 12000, 6, statInterpolation = { 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 12000, 7, statInterpolation = { 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 12000, 7, statInterpolation = { 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 13000, 7, statInterpolation = { 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 13000, 7, statInterpolation = { 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 13000, 8, statInterpolation = { 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 13000, 8, statInterpolation = { 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 14000, 8, statInterpolation = { 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 14000, 8, statInterpolation = { 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 14000, 9, statInterpolation = { 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 14000, 9, statInterpolation = { 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 15000, 9, statInterpolation = { 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 15000, 9, statInterpolation = { 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 15000, 10, statInterpolation = { 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 15000, 10, statInterpolation = { 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 16000, 10, statInterpolation = { 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 16000, 10, statInterpolation = { 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 16000, 11, statInterpolation = { 1, 1, }, actorLevel = 136.875, }, + [26] = { 16000, 11, statInterpolation = { 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 17000, 11, statInterpolation = { 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 17000, 11, statInterpolation = { 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 17000, 12, statInterpolation = { 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 17000, 12, statInterpolation = { 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 18000, 12, statInterpolation = { 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 18000, 12, statInterpolation = { 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 18000, 13, statInterpolation = { 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 18000, 13, statInterpolation = { 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 19000, 13, statInterpolation = { 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 19000, 13, statInterpolation = { 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 19000, 14, statInterpolation = { 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 19000, 14, statInterpolation = { 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 20000, 14, statInterpolation = { 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 20000, 15, statInterpolation = { 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["SupportScouringFlamePlayer"] = { name = "Scouring Flame", description = "Supports any skill that Hits enemies, causing inflicted Ignites to deal more damage but the skill to gain a Runic Ward cost.", @@ -15071,6 +16088,140 @@ skills["SkyfallPlayer"] = { }, } } +skills["SmashToSmithereensPlayer"] = { + name = "Smash to Smithereens", + baseTypeName = "Smash to Smithereens", + icon = "Art/2DArt/SkillIcons/icongroundslam.dds", + fromItem = true, + color = 4, + description = "Blows strong enough to Heavy Stun an enemy reverberate in an area around the enemy and heavily Break Armour.", + skillTypes = { [SkillType.Attack] = true, [SkillType.Area] = true, [SkillType.Triggered] = true, [SkillType.InbuiltTrigger] = true, [SkillType.Triggerable] = true, [SkillType.NoAttackOrCastTime] = true, [SkillType.AttackInPlace] = true, [SkillType.Fire] = true, [SkillType.Cooldown] = true, }, + weaponTypes = { + ["Bow"] = true, + ["Claw"] = true, + ["Crossbow"] = true, + ["Dagger"] = true, + ["Flail"] = true, + ["None"] = true, + ["One Hand Axe"] = true, + ["One Hand Mace"] = true, + ["One Hand Sword"] = true, + ["Spear"] = true, + ["Staff"] = true, + ["Talisman"] = true, + ["Two Hand Axe"] = true, + ["Two Hand Mace"] = true, + ["Two Hand Sword"] = true, + }, + castTime = 1, + qualityStats = { + }, + levels = { + [1] = { baseMultiplier = 1.3, cooldown = 0.5, levelRequirement = 0, storedUses = 1, cost = { Mana = 0, }, }, + [2] = { baseMultiplier = 1.43, cooldown = 0.5, levelRequirement = 3, storedUses = 1, cost = { Mana = 0, }, }, + [3] = { baseMultiplier = 1.58, cooldown = 0.5, levelRequirement = 6, storedUses = 1, cost = { Mana = 0, }, }, + [4] = { baseMultiplier = 1.73, cooldown = 0.5, levelRequirement = 10, storedUses = 1, cost = { Mana = 0, }, }, + [5] = { baseMultiplier = 1.89, cooldown = 0.5, levelRequirement = 14, storedUses = 1, cost = { Mana = 0, }, }, + [6] = { baseMultiplier = 2.04, cooldown = 0.5, levelRequirement = 18, storedUses = 1, cost = { Mana = 0, }, }, + [7] = { baseMultiplier = 2.21, cooldown = 0.5, levelRequirement = 22, storedUses = 1, cost = { Mana = 0, }, }, + [8] = { baseMultiplier = 2.36, cooldown = 0.5, levelRequirement = 26, storedUses = 1, cost = { Mana = 0, }, }, + [9] = { baseMultiplier = 2.51, cooldown = 0.5, levelRequirement = 31, storedUses = 1, cost = { Mana = 0, }, }, + [10] = { baseMultiplier = 2.67, cooldown = 0.5, levelRequirement = 36, storedUses = 1, cost = { Mana = 0, }, }, + [11] = { baseMultiplier = 2.84, cooldown = 0.5, levelRequirement = 41, storedUses = 1, cost = { Mana = 0, }, }, + [12] = { baseMultiplier = 3.03, cooldown = 0.5, levelRequirement = 46, storedUses = 1, cost = { Mana = 0, }, }, + [13] = { baseMultiplier = 3.24, cooldown = 0.5, levelRequirement = 52, storedUses = 1, cost = { Mana = 0, }, }, + [14] = { baseMultiplier = 3.46, cooldown = 0.5, levelRequirement = 58, storedUses = 1, cost = { Mana = 0, }, }, + [15] = { baseMultiplier = 3.7, cooldown = 0.5, levelRequirement = 64, storedUses = 1, cost = { Mana = 0, }, }, + [16] = { baseMultiplier = 3.97, cooldown = 0.5, levelRequirement = 66, storedUses = 1, cost = { Mana = 0, }, }, + [17] = { baseMultiplier = 4.26, cooldown = 0.5, levelRequirement = 72, storedUses = 1, cost = { Mana = 0, }, }, + [18] = { baseMultiplier = 4.58, cooldown = 0.5, levelRequirement = 78, storedUses = 1, cost = { Mana = 0, }, }, + [19] = { baseMultiplier = 4.93, cooldown = 0.5, levelRequirement = 84, storedUses = 1, cost = { Mana = 0, }, }, + [20] = { baseMultiplier = 5.31, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [21] = { baseMultiplier = 5.72, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [22] = { baseMultiplier = 6.16, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [23] = { baseMultiplier = 6.64, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [24] = { baseMultiplier = 7.15, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [25] = { baseMultiplier = 7.7, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [26] = { baseMultiplier = 8.3, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [27] = { baseMultiplier = 8.94, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [28] = { baseMultiplier = 9.63, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [29] = { baseMultiplier = 10.37, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [30] = { baseMultiplier = 11.17, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [31] = { baseMultiplier = 12.04, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [32] = { baseMultiplier = 12.97, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [33] = { baseMultiplier = 13.97, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [34] = { baseMultiplier = 15.05, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [35] = { baseMultiplier = 16.21, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [36] = { baseMultiplier = 17.47, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [37] = { baseMultiplier = 18.82, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [38] = { baseMultiplier = 20.27, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [39] = { baseMultiplier = 21.84, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + [40] = { baseMultiplier = 23.53, cooldown = 0.5, levelRequirement = 90, storedUses = 1, cost = { Mana = 0, }, }, + }, + statSets = { + [1] = { + label = "Smash to Smithereens", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "smash_to_smithereens", + baseFlags = { + attack = true, + area = true, + }, + constantStats = { + { "active_skill_base_area_of_effect_radius", 16 }, + { "active_skill_base_physical_damage_%_to_convert_to_fire", 100 }, + { "trigger_on_heavy_stun_%", 100 }, + { "armour_break_fire_damage_%_dealt_as_armour_break", 200 }, + }, + stats = { + "is_area_damage", + "display_statset_hide_usage_stats", + }, + levels = { + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, + }, + }, + } +} skills["NightfallSoaringMidnightPlayer"] = { name = "Soaring Midnight", baseTypeName = "Soaring Midnight", diff --git a/src/Data/Skills/sup_int.lua b/src/Data/Skills/sup_int.lua index 575a153423..f10e8e66c3 100644 --- a/src/Data/Skills/sup_int.lua +++ b/src/Data/Skills/sup_int.lua @@ -3035,6 +3035,50 @@ skills["SupportDiallasDesirePlayer"] = { }, } } +skills["SupportDoedresUndoingPlayer"] = { + name = "Doedre's Undoing", + description = "Supports Curse Skills. Supported Skills create an area which Curses Enemies within it, and spawns Witchtoads in that area. Witchtoads leap at eneimes that get close, and seek out Cursed enemies with higher aggression. Dark Consequences will be Triggered when they hit enemies with their leap, violently exploding the Witchtoad.", + color = 3, + support = true, + requireSkillTypes = { SkillType.AppliesCurse, }, + addSkillTypes = { SkillType.Limit, }, + excludeSkillTypes = { }, + gemFamily = { "CursedGround",}, + isLineage = true, + flavourText = {"Doedre's depravity knew no limits. She stretched and", "broke and rebuilt herself until she forgot her own shape.", "She reverted to a familiar form, and began anew.", }, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Doedre's Undoing", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["doedre_cursed_ground_toad_spawn_interval_ms"] = { + mod("ToadSpawnInterval", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", unscalable = true }), + }, + ["max_toads_per_doedre_cursed_ground"] = { + -- Display Only + }, + }, + baseFlags = { + }, + constantStats = { + { "maximum_curse_zones_allowed", 2 }, + { "max_toads_per_doedre_cursed_ground", 4 }, + { "doedre_cursed_ground_toad_spawn_interval_ms", 250 }, + }, + stats = { + "curse_apply_as_curse_zone", + "spawn_doedre_toads_on_cursed_ground", + }, + levels = { + [1] = { actorLevel = 1, }, + }, + }, + } +} skills["ChaosFrogExplosionPlayer"] = { name = "Dark Consequences", hidden = true, @@ -3086,6 +3130,9 @@ skills["ChaosFrogExplosionPlayer"] = { [39] = { critChance = 7, levelRequirement = 0, cost = { Mana = 0, }, }, [40] = { critChance = 7, levelRequirement = 0, cost = { Mana = 0, }, }, }, + preDamageFunc = function(activeSkill, output) + activeSkill.skillData.hitTimeMultiplier = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "ToadSpawnInterval") / 1000 + end, statSets = { [1] = { label = "Dark Consequences", @@ -3093,9 +3140,15 @@ skills["ChaosFrogExplosionPlayer"] = { incrementalEffectiveness = 0.12999999523163, damageIncrementalEffectiveness = 0.0096000004559755, statDescriptionScope = "triggered_chaos_frog_explosion", + statMap = { + ["triggered_by_chaos_frog_explosion_chance_%"] = { + -- Display Only + }, + }, baseFlags = { spell = true, area = true, + triggered = true, }, constantStats = { { "triggered_by_chaos_frog_explosion_chance_%", 100 }, @@ -3818,6 +3871,137 @@ skills["SupportEnergyRetentionPlayer"] = { }, } } +skills["EnervatingNovaPlayer"] = { + name = "Enervating Nova", + baseTypeName = "Enervating Nova", + icon = "Art/2DArt/SkillIcons/EnervatingNovaWeaponSkill.dds", + fromItem = true, + color = 3, + description = "Unleash a Nova of Lightning damage to Electrocute enemies. Enemies close to you take no damage while enemies at the edge of the ring take significantly more damage. Enemies Hit can be Electrocuted by all Lightning damage for a short duration.", + skillTypes = { [SkillType.Spell] = true, [SkillType.Damage] = true, [SkillType.Area] = true, [SkillType.Trappable] = true, [SkillType.Totemable] = true, [SkillType.Mineable] = true, [SkillType.Multicastable] = true, [SkillType.Triggerable] = true, [SkillType.Lightning] = true, [SkillType.Unleashable] = true, [SkillType.AreaSpell] = true, [SkillType.Nova] = true, [SkillType.Cascadable] = true, [SkillType.UsableWhileMoving] = true, [SkillType.Duration] = true, }, + castTime = 1, + qualityStats = { + { "active_skill_electrocutes_as_though_dealt_damage_+%_final", 2 }, + }, + levels = { + [1] = { critChance = 11, levelRequirement = 0, cost = { Mana = 0, }, }, + [2] = { critChance = 11, levelRequirement = 3, cost = { Mana = 0, }, }, + [3] = { critChance = 11, levelRequirement = 6, cost = { Mana = 0, }, }, + [4] = { critChance = 11, levelRequirement = 10, cost = { Mana = 0, }, }, + [5] = { critChance = 11, levelRequirement = 14, cost = { Mana = 0, }, }, + [6] = { critChance = 11, levelRequirement = 18, cost = { Mana = 0, }, }, + [7] = { critChance = 11, levelRequirement = 22, cost = { Mana = 0, }, }, + [8] = { critChance = 11, levelRequirement = 26, cost = { Mana = 0, }, }, + [9] = { critChance = 11, levelRequirement = 31, cost = { Mana = 0, }, }, + [10] = { critChance = 11, levelRequirement = 36, cost = { Mana = 0, }, }, + [11] = { critChance = 11, levelRequirement = 41, cost = { Mana = 0, }, }, + [12] = { critChance = 11, levelRequirement = 46, cost = { Mana = 0, }, }, + [13] = { critChance = 11, levelRequirement = 52, cost = { Mana = 0, }, }, + [14] = { critChance = 11, levelRequirement = 58, cost = { Mana = 0, }, }, + [15] = { critChance = 11, levelRequirement = 64, cost = { Mana = 0, }, }, + [16] = { critChance = 11, levelRequirement = 66, cost = { Mana = 0, }, }, + [17] = { critChance = 11, levelRequirement = 72, cost = { Mana = 0, }, }, + [18] = { critChance = 11, levelRequirement = 78, cost = { Mana = 0, }, }, + [19] = { critChance = 11, levelRequirement = 84, cost = { Mana = 0, }, }, + [20] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [21] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [22] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [23] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [24] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [25] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [26] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [27] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [28] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [29] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [30] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [31] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [32] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [33] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [34] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [35] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [36] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [37] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [38] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [39] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + [40] = { critChance = 11, levelRequirement = 90, cost = { Mana = 0, }, }, + }, + statSets = { + [1] = { + label = "Enervating Nova", + baseEffectiveness = 1.2000000476837, + incrementalEffectiveness = 0.12999999523163, + damageIncrementalEffectiveness = 0.0082000000402331, + statDescriptionScope = "enervating_nova", + baseFlags = { + spell = true, + area = true, + }, + constantStats = { + { "movement_speed_+%_final_while_performing_action", -70 }, + { "movement_speed_acceleration_+%_per_second_while_performing_action", 160 }, + { "movement_speed_while_performing_action_locked_duration_%", 50 }, + { "active_skill_base_area_of_effect_radius", 26 }, + { "active_skill_base_secondary_area_of_effect_radius", 10 }, + { "base_skill_effect_duration", 4000 }, + { "new_shock_nova_distance_based_damage_+%_final", 100 }, + }, + stats = { + "spell_minimum_base_lightning_damage", + "spell_maximum_base_lightning_damage", + "active_skill_electrocutes_as_though_dealt_damage_+%_final", + "is_area_damage", + "can_perform_skill_while_moving", + "base_lightning_damage_can_electrocute", + }, + notMinionStat = { + "spell_minimum_base_lightning_damage", + "spell_maximum_base_lightning_damage", + }, + levels = { + [1] = { 1, 7, 100, statInterpolation = { 1, 1, 1, }, actorLevel = 1, }, + [2] = { 1, 10, 103, statInterpolation = { 1, 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 1, 14, 106, statInterpolation = { 1, 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 1, 18, 109, statInterpolation = { 1, 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 1, 23, 112, statInterpolation = { 1, 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 2, 29, 115, statInterpolation = { 1, 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 2, 36, 118, statInterpolation = { 1, 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 2, 44, 121, statInterpolation = { 1, 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 3, 54, 124, statInterpolation = { 1, 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 3, 64, 127, statInterpolation = { 1, 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 4, 77, 130, statInterpolation = { 1, 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 5, 89, 133, statInterpolation = { 1, 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 5, 103, 136, statInterpolation = { 1, 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 6, 119, 139, statInterpolation = { 1, 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 7, 137, 142, statInterpolation = { 1, 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 8, 157, 145, statInterpolation = { 1, 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 9, 179, 148, statInterpolation = { 1, 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 11, 204, 151, statInterpolation = { 1, 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 12, 233, 154, statInterpolation = { 1, 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 14, 265, 157, statInterpolation = { 1, 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 16, 301, 160, statInterpolation = { 1, 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 18, 342, 163, statInterpolation = { 1, 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 20, 389, 166, statInterpolation = { 1, 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 23, 442, 169, statInterpolation = { 1, 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 26, 501, 172, statInterpolation = { 1, 1, 1, }, actorLevel = 136.875, }, + [26] = { 30, 569, 175, statInterpolation = { 1, 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 34, 647, 178, statInterpolation = { 1, 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 39, 735, 181, statInterpolation = { 1, 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 44, 835, 184, statInterpolation = { 1, 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 50, 949, 187, statInterpolation = { 1, 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 57, 1079, 188, statInterpolation = { 1, 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 65, 1228, 190, statInterpolation = { 1, 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 74, 1398, 191, statInterpolation = { 1, 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 84, 1593, 193, statInterpolation = { 1, 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 96, 1817, 194, statInterpolation = { 1, 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 109, 2074, 196, statInterpolation = { 1, 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 125, 2368, 197, statInterpolation = { 1, 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 143, 2708, 199, statInterpolation = { 1, 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 163, 3098, 200, statInterpolation = { 1, 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 187, 3549, 202, statInterpolation = { 1, 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["SupportEshsRadiancePlayer"] = { name = "Esh's Radiance", description = "Supports Skills that can cause Damaging Hits, granting extra Chaos damage and causing Chaos damage to Contribute to Shock.", @@ -4716,6 +4900,37 @@ skills["SupportGambleshotPlayer"] = { }, } } +skills["SupportGorgePlayer"] = { + name = "Gorge", + description = "Supports skills that consume Corpses. Consuming Corpses with supported skills grants Flask charges.", + color = 3, + support = true, + requireSkillTypes = { SkillType.TargetsDestructibleCorpses, SkillType.TargetsDestructibleRareCorpses, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + gemFamily = { "Gorge",}, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Gorge", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "gem_stat_descriptions", + baseFlags = { + }, + constantStats = { + { "support_grants_X_life_flask_charges_on_using_corpse", 10 }, + { "support_grants_X_mana_flask_charges_on_using_corpse", 10 }, + }, + stats = { + }, + levels = { + [1] = { actorLevel = 1, }, + }, + }, + } +} skills["SupportGuatelitzisAblationPlayer"] = { name = "Guatelitzi's Ablation", description = "Supports Offering Skills. Supported Skills Sacrifice a portion of your life on use. While Offering spikes from Supported Skills persist, you are periodically granted a Power Charge. When spikes from Supported Skills die, Regenerate a percentage of your maximum Life and Mana per second based on the duration the Offering persisted.", @@ -6567,6 +6782,36 @@ skills["SupportMysticismPlayerTwo"] = { }, } } +skills["SupportOisinsOathPlayer"] = { + name = "Oisin's Oath", + description = "Supports Skills which Hit enemies, causing their Mana Leech to recover based on Elemental damage instead of Physical damage.", + color = 3, + support = true, + requireSkillTypes = { SkillType.Attack, SkillType.CrossbowAmmoSkill, SkillType.Damage, SkillType.Spell, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + gemFamily = { "ManaLeech",}, + isLineage = true, + flavourText = {"The first Warden of Eaves swore to patrol the border twixt the worlds forevermore, so that the tragedy of Gruthkul's stampede would never recur. In time, his vigil on the edge began to... change him.", }, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Oisin's Oath", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "gem_stat_descriptions", + baseFlags = { + }, + stats = { + "mana_leech_from_elemental_instead", + }, + levels = { + [1] = { actorLevel = 1, }, + }, + }, + } +} skills["SupportOisinsOathPlayer"] = { name = "Oisin's Oath", description = "Supports Skills which Hit enemies, causing their Mana Leech to recover based on Elemental damage instead of Physical damage.", @@ -7024,6 +7269,45 @@ skills["SupportRitualisticCursePlayer"] = { }, } } +skills["SupportRomirasRequitalPlayer"] = { + name = "Romira's Requital", + description = "Supports Skills that create Companions which can be damaged. Minions created by Supported Skills take a portion of Hit Damage you would otherwise have taken, but have lowered maximum Life. A percentage of Damage taken this way is Recouped by you as Life.", + color = 3, + support = true, + requireSkillTypes = { SkillType.Companion, }, + addSkillTypes = { }, + excludeSkillTypes = { SkillType.MinionsAreUndamagable, }, + gemFamily = { "Loyalty",}, + isLineage = true, + flavourText = {"\"Come, my faithful wife,\" he crooned. \"Sit. Eat. I wanted to", "reward you for your loyalty. I even cooked this myself...\"", "She looked 'round for her sons, but hers was the only chair.", }, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Romira's Requital", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "gem_stat_descriptions", + statMap = { + ["support_trusty_companion_minion_life_+%_final"] = { + mod("MinionModifier", "LIST", { mod = mod("Life", "MORE", nil) }), + }, + }, + baseFlags = { + }, + constantStats = { + { "support_trusty_companion_minion_life_+%_final", -30 }, + { "companion_takes_%_damage_before_you_from_support", 10 }, + { "loyalty_%_of_redirected_damage_recouped_as_life_for_owner", 200 }, + }, + stats = { + }, + levels = { + [1] = { actorLevel = 1, }, + }, + }, + } +} skills["SupportSacrificialLambPlayer"] = { name = "Sacrificial Lamb I", description = "Supports Skills which create Minions, causing your Skills which can target Minions to prioritise targeting Minions from the Supported Skill before your other Minions where possible.", diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index fe3c67606d..d56aa78728 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -2167,6 +2167,173 @@ skills["SupportDauntlessPlayer"] = { }, } } +skills["SupportDeadlyResolvePlayer"] = { + name = "Deadly Resolve", + description = "Supports Channelling Skills you use yourself. While Channelling Supported Skills, periodically gain stages of Deadly Resolve. Expend a stage of Deadly Resolve when an enemy Hits you to Trigger a deadly slash towards that enemy, dealing more damage based on your Armour.", + color = 1, + support = true, + requireSkillTypes = { SkillType.Channel, }, + addSkillTypes = { }, + excludeSkillTypes = { SkillType.UsedByProxy, SkillType.Triggered, SkillType.Persistent, }, + gemFamily = { "DeadlyResolve",}, + ignoreMinionTypes = true, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Deadly Resolve", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "gem_stat_descriptions", + baseFlags = { + }, + constantStats = { + { "maximum_dangerous_resolve_stacks", 3 }, + { "dangerous_resolve_stack_duration_ms", 10000 }, + { "gain_dangerous_resolve_stack_per_X_ms_channeling", 1000 }, + { "dangerous_resolve_explosion_cooldown_ms", 300 }, + }, + stats = { + }, + levels = { + [1] = { actorLevel = 1, }, + }, + }, + } +} +skills["TriggeredDeadlyResolvePlayer"] = { + name = "Deadly Resolve", + hidden = true, + icon = "Art/2DItems/Gems/New/NewSupport/DangerousResolveSupportGem.dds", + description = "Creates a deadly slash towards the target, dealing Attack damage which is not based on your Weapon", + skillTypes = { [SkillType.Triggered] = true, [SkillType.Area] = true, [SkillType.SkillGrantedBySupport] = true, [SkillType.InbuiltTrigger] = true, [SkillType.Triggerable] = true, [SkillType.Damage] = true, [SkillType.Physical] = true, [SkillType.Attack] = true, [SkillType.AttackInPlace] = true, [SkillType.UseGlobalStats] = true, [SkillType.UsableWhileShapeshifted] = true, [SkillType.NonWeaponAttack] = true, }, + castTime = 1, + qualityStats = { + }, + levels = { + [1] = { baseMultiplier = 0.9, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [2] = { baseMultiplier = 0.99, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [3] = { baseMultiplier = 1.1, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [4] = { baseMultiplier = 1.2, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [5] = { baseMultiplier = 1.31, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [6] = { baseMultiplier = 1.41, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [7] = { baseMultiplier = 1.53, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [8] = { baseMultiplier = 1.64, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [9] = { baseMultiplier = 1.74, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [10] = { baseMultiplier = 1.85, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [11] = { baseMultiplier = 1.97, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [12] = { baseMultiplier = 2.1, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [13] = { baseMultiplier = 2.24, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [14] = { baseMultiplier = 2.4, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [15] = { baseMultiplier = 2.56, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [16] = { baseMultiplier = 2.75, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [17] = { baseMultiplier = 2.95, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [18] = { baseMultiplier = 3.17, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [19] = { baseMultiplier = 3.41, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [20] = { baseMultiplier = 3.67, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [21] = { baseMultiplier = 3.96, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [22] = { baseMultiplier = 4.26, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [23] = { baseMultiplier = 4.59, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [24] = { baseMultiplier = 4.95, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [25] = { baseMultiplier = 5.33, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [26] = { baseMultiplier = 5.74, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [27] = { baseMultiplier = 6.19, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [28] = { baseMultiplier = 6.67, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [29] = { baseMultiplier = 7.18, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [30] = { baseMultiplier = 7.74, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [31] = { baseMultiplier = 8.33, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [32] = { baseMultiplier = 8.98, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [33] = { baseMultiplier = 9.67, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [34] = { baseMultiplier = 10.42, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [35] = { baseMultiplier = 11.23, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [36] = { baseMultiplier = 12.09, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [37] = { baseMultiplier = 13.03, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [38] = { baseMultiplier = 14.03, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [39] = { baseMultiplier = 15.12, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + [40] = { baseMultiplier = 16.29, critChance = 5, levelRequirement = 0, cost = { Mana = 0, }, }, + }, + statSets = { + [1] = { + label = "Deadly Resolve", + baseEffectiveness = 2.2999999523163, + incrementalEffectiveness = 0.27349999547005, + statDescriptionScope = "dangerous_resolve", + statMap = { + ["dangerous_resolve_attack_damage_+1%_final_per_X_armour"] = { + mod("Multiplier:DamagePerArmour", "BASE", nil), + }, + }, + baseFlags = { + nonWeaponAttack = true, + }, + baseMods = { + mod("Damage", "MORE", 1, 0, 0, { type = "PerStat", stat = "Armour", divVar = "DamagePerArmour", limit = 200, limitTotal = true }), + }, + constantStats = { + { "dangerous_resolve_explosion_on_receive_hit_chance_%", 100 }, + { "active_skill_base_area_of_effect_radius", 30 }, + { "dangerous_resolve_cone_angle", 120 }, + { "active_skill_base_secondary_area_of_effect_radius", 0 }, + }, + stats = { + "main_hand_weapon_minimum_physical_damage", + "main_hand_weapon_maximum_physical_damage", + "dangerous_resolve_attack_damage_+1%_final_per_X_armour", + "shapeshift_ignore_form_check", + "ignore_talisman_inherent_form_restriction", + "ignore_skill_weapon_restrictions", + "triggerable_in_any_set", + "replace_main_hand_unarmed_attack_stats_with_nothing_type", + }, + notMinionStat = { + "main_hand_weapon_minimum_physical_damage", + "main_hand_weapon_maximum_physical_damage", + }, + levels = { + [1] = { 7, 11, 5, statInterpolation = { 1, 1, 1, }, actorLevel = 1, }, + [2] = { 12, 18, 5, statInterpolation = { 1, 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 18, 28, 6, statInterpolation = { 1, 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 25, 38, 6, statInterpolation = { 1, 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 33, 49, 7, statInterpolation = { 1, 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 41, 61, 7, statInterpolation = { 1, 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 49, 73, 8, statInterpolation = { 1, 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 57, 86, 8, statInterpolation = { 1, 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 67, 100, 9, statInterpolation = { 1, 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 76, 114, 11, statInterpolation = { 1, 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 86, 129, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 97, 145, 15, statInterpolation = { 1, 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 108, 161, 19, statInterpolation = { 1, 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 119, 178, 24, statInterpolation = { 1, 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 131, 196, 30, statInterpolation = { 1, 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 143, 214, 46, statInterpolation = { 1, 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 156, 233, 62, statInterpolation = { 1, 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 169, 253, 76, statInterpolation = { 1, 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 182, 273, 90, statInterpolation = { 1, 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 196, 294, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 211, 316, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 226, 338, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 241, 361, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 257, 385, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 273, 409, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 136.875, }, + [26] = { 289, 434, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 307, 460, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 324, 486, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 342, 513, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 360, 541, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 379, 569, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 399, 598, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 418, 628, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 439, 658, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 459, 689, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 480, 720, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 502, 753, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 524, 785, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 546, 819, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 569, 853, 108, statInterpolation = { 1, 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["SupportDeepCutsPlayer"] = { name = "Deep Cuts I", description = "Supports any skill that Hits enemies, causing it to deal less damage but inflict more potent Bleeding.", diff --git a/src/Export/Skills/act_str.txt b/src/Export/Skills/act_str.txt index b96108598c..81bff8e7a5 100644 --- a/src/Export/Skills/act_str.txt +++ b/src/Export/Skills/act_str.txt @@ -924,6 +924,28 @@ end, #mods #skillEnd +#skill SavageFuryPlayer +#set SavageFuryPlayer +#flags +#mods +#skillEnd + +#skill SavageFuryActivePlayer +#set SavageFuryActivePlayer +#flags duration +statMap = { + ["wild_beast_life_lost_%_per_minute_nonlethal"] = { + mod("LifeDegen", "BASE", nil, 0, 0, { type = "PercentStat", stat = "Life", percent = 1 }, { type = "GlobalEffect", effectType = "Buff", effectName = "Savage Fury" }, { type = "SkillType", skillTypeList = { SkillType.UsableWhileShapeshifted, SkillType.UsableWhileShapeshifted } }), + div = 60, + }, + ["wild_beast_damage_+%_final"] = { + mod("Damage", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Savage Fury" }, { type = "SkillType", skillTypeList = { SkillType.UsableWhileShapeshifted, SkillType.UsableWhileShapeshifted } }), + flag("Onslaught", { type = "GlobalEffect", effectType = "Buff", effectName = "Savage Fury" }, { type = "SkillType", skillTypeList = { SkillType.UsableWhileShapeshifted, SkillType.UsableWhileShapeshifted } }) + }, +}, +#mods +#skillEnd + #skill ScavengedPlatingPlayer grantsThornsDamage = true, #set ScavengedPlatingPlayer diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index fcae5dc63f..5c863ca33e 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -5,6 +5,13 @@ -- local skills, mod, flag, skill = ... +#from tree +#skill TriggeredAbyssalApparitionPlayer +#set TriggeredAbyssalApparitionPlayer +#flags +#mods +#skillEnd + #from tree #skill AcidicConcoctionPlayer #set AcidicConcoctionPlayer @@ -174,6 +181,20 @@ statMap = { #mods #skillEnd +#skill SupportBreachlordsRift +#set SupportBreachlordsRift +statMap = { + ["fully_broken_armour_and_sundered_armour_you_inflict_also_applies_to_cold_and_lightning_damage"] = { + flag("ArmourBreakColdDamageTaken", { type = "GlobalEffect", effectType = "Buff", effectName = "Breachlords Rift" }), + flag("ArmourBreakLightningDamageTaken", { type = "GlobalEffect", effectType = "Buff", effectName = "Breachlords Rift" }), + }, + ["support_break_%_armour_on_freeze_or_electrocute"] = { + flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "Breachlords Rift" }, { type = "ActorCondition", actor = "enemy", varList = { "Frozen", "Electrocuted" } }), + }, +}, +#mods +#skillEnd + #from item #skill ExplodingPoisonToadPlayer #set ExplodingPoisonToadPlayer @@ -212,6 +233,13 @@ statMap = { #mods #skillEnd +#from item +#skill ChaosSpearTriggerChaosSurgePlayer +#set ChaosSpearTriggerChaosSurgePlayer +#flags attack area +#mods +#skillEnd + #skill ConductiveRunesPlayer #set ConductiveRunesPlayer #flags attack duration @@ -457,6 +485,16 @@ statMap = { #mods #skillEnd +#from item +#skill GelidPalmPlayer +#set GelidPalmPlayer +#flags +#mods +#set GelidPalmBoltPlayer +#flags attack area unarmed +#mods +#skillEnd + #from item #skill MeleeGrenadeLauncherPlayer #set MeleeGrenadeLauncherPlayer @@ -473,6 +511,28 @@ statMap = { #mods #skillEnd +#from item +#skill HarbingerOfMadnessPlayer +#set HarbingerOfMadnessPlayer +#flags area hit +statMap = { + ["harbinger_of_madness_damage_+%_final_per_power_of_source_enemy"] = { + mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "EnemyPower"}), + }, +}, +#mods +#skillEnd + +#from item +#skill UniqueAtziriHeraldPlayer +#set UniqueAtziriHeraldPlayer +#flags +#mods +#set UniqueAtziriHeraldExplosionPlayer +#flags hit +#mods +#skillEnd + #skill SupportHerDeclarationPlayer #set SupportHerDeclarationPlayer #mods @@ -929,6 +989,18 @@ statMap = { #mods #skillEnd +#from item +#skill RunicTemperingPlayer +#set RunicTempering +#flags +statMap = { + ["runic_tempering_damage_taken_+%_final"] = { + mod("DamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", unscalable = true }), + }, +}, +#mods +#skillEnd + #from tree #minionList FireDjinn #skill SummonFireDjinnPlayer @@ -944,6 +1016,18 @@ statMap = { #mods #skillEnd +#from item +#skill SanguineRevelryPlayer +#set SanguineRevelryPlayer +#flags +statMap = { + ["sanguine_revelry_rage_gain_per_pickup"] = { + flag("Condition:CanGainRage", { type = "GlobalEffect", effectType = "Buff", effectName = "Sanguine Revelry" }), + }, +}, +#mods +#skillEnd + #skill SupportScouringFlamePlayer #set SupportScouringFlamePlayer #mods @@ -990,6 +1074,13 @@ statMap = { #mods #skillEnd +#from item +#skill SmashToSmithereensPlayer +#set SmashToSmithereensPlayer +#flags attack area +#mods +#skillEnd + #from item #skill NightfallSoaringMidnightPlayer #set NightfallSoaringMidnightPlayer diff --git a/src/Export/Skills/sup_int.txt b/src/Export/Skills/sup_int.txt index 3736efc4db..2effa929e0 100644 --- a/src/Export/Skills/sup_int.txt +++ b/src/Export/Skills/sup_int.txt @@ -527,9 +527,30 @@ statMap = { #mods #skillEnd +#skill SupportDoedresUndoingPlayer +#set SupportDoedresUndoingPlayer +statMap = { + ["doedre_cursed_ground_toad_spawn_interval_ms"] = { + mod("ToadSpawnInterval", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff", unscalable = true }), + }, + ["max_toads_per_doedre_cursed_ground"] = { + -- Display Only + }, +}, +#mods +#skillEnd + #skill ChaosFrogExplosionPlayer +preDamageFunc = function(activeSkill, output) + activeSkill.skillData.hitTimeMultiplier = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "ToadSpawnInterval") / 1000 +end, #set ChaosFrogExplosionPlayer -#flags spell area +#flags spell area triggered +statMap = { + ["triggered_by_chaos_frog_explosion_chance_%"] = { + -- Display Only + }, +}, #mods #skillEnd @@ -638,6 +659,13 @@ statMap = { #mods #skillEnd +#from item +#skill EnervatingNovaPlayer +#set EnervatingNovaPlayer +#flags spell area +#mods +#skillEnd + #skill SupportEshsRadiancePlayer #set SupportEshsRadiancePlayer #mods @@ -849,6 +877,11 @@ statMap = { #mods #skillEnd +#skill SupportGorgePlayer +#set SupportGorgePlayer +#mods +#skillEnd + #skill SupportGuatelitzisAblationPlayer #set SupportGuatelitzisAblationPlayer #mods @@ -1210,6 +1243,11 @@ statMap = { #mods #skillEnd +#skill SupportOisinsOathPlayer +#set SupportOisinsOathPlayer +#mods +#skillEnd + #skill SupportOisinsOathPlayer #set SupportOisinsOathPlayer statMap = { @@ -1304,6 +1342,16 @@ statMap = { #mods #skillEnd +#skill SupportRomirasRequitalPlayer +#set SupportRomirasRequitalPlayer +statMap = { + ["support_trusty_companion_minion_life_+%_final"] = { + mod("MinionModifier", "LIST", { mod = mod("Life", "MORE", nil) }), + }, +}, +#mods +#skillEnd + #skill SupportSacrificialLambPlayer #set SupportSacrificialLambPlayer #mods diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index d728c7bf71..d46ffcfb38 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -526,6 +526,23 @@ statMap = { #mods #skillEnd +#skill SupportDeadlyResolvePlayer +#set SupportDeadlyResolvePlayer +#mods +#skillEnd + +#skill TriggeredDeadlyResolvePlayer +#set TriggeredDeadlyResolvePlayer +#flags nonWeaponAttack +statMap = { + ["dangerous_resolve_attack_damage_+1%_final_per_X_armour"] = { + mod("Multiplier:DamagePerArmour", "BASE", nil), + }, +}, +#baseMod mod("Damage", "MORE", 1, 0, 0, { type = "PerStat", stat = "Armour", divVar = "DamagePerArmour", limit = 200, limitTotal = true }) +#mods +#skillEnd + #skill SupportDeepCutsPlayer #set SupportDeepCutsPlayer statMap = { diff --git a/src/Export/spec.lua b/src/Export/spec.lua index 2ae1825009..104feec97b 100644 --- a/src/Export/spec.lua +++ b/src/Export/spec.lua @@ -24854,10 +24854,10 @@ return { }, [21]={ list=false, - name="", + name="SkillId", refTo="", type="Int", - width=50 + width=60 }, [22]={ list=false, @@ -24966,7 +24966,7 @@ return { }, [37]={ list=false, - name="", + name="MaxInheritedLevel", refTo="", type="Int", width=90 diff --git a/src/Export/statdesc.lua b/src/Export/statdesc.lua index 592a310230..1cc1008fde 100644 --- a/src/Export/statdesc.lua +++ b/src/Export/statdesc.lua @@ -283,6 +283,10 @@ function describeStats(stats) val[spec.v].min = val[spec.v].min / 1000 val[spec.v].max = val[spec.v].max / 1000 val[spec.v].fmt = "g" + elseif spec.k == "divide_by_ten_thousand_1dp" then + val[spec.v].min = round(val[spec.v].min / 10000, 1) + val[spec.v].max = round(val[spec.v].max / 10000, 1) + val[spec.v].fmt = "g" elseif spec.k == "per_minute_to_per_second" then val[spec.v].min = val[spec.v].min / 60 val[spec.v].max = val[spec.v].max / 60 @@ -368,7 +372,7 @@ function describeStats(stats) val[spec.v].max = val[spec.v].max + 200 elseif spec.k == "reminderstring" or spec.k == "canonical_line" or spec.k == "canonical_stat" then elseif spec.k then - ConPrintf("Unknown description function: %s", spec.k) + print("Unknown description function: %s", spec.k) end end local statDesc = desc.text:gsub("{(%d)}", function(n) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 5e80d8abb7..f642133866 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -648,9 +648,15 @@ local function doActorMisc(env, actor) enemyDB:NewMod("DamageTaken", "INC", effect, "Fully Broken Armour", ModFlag.Hit) else enemyDB:NewMod("PhysicalDamageTaken", "INC", effect, "Fully Broken Armour", ModFlag.Hit) + if modDB:Flag(nil, "ArmourBreakColdDamageTaken") then + enemyDB:NewMod("ColdDamageTaken", "INC", effect, "Fully Broken Armour", ModFlag.Hit) + end if modDB:Flag(nil, "ArmourBreakFireDamageTaken") then enemyDB:NewMod("FireDamageTaken", "INC", effect, "Fully Broken Armour", ModFlag.Hit) end + if modDB:Flag(nil, "ArmourBreakLightningDamageTaken") then + enemyDB:NewMod("LightningDamageTaken", "INC", effect, "Fully Broken Armour", ModFlag.Hit) + end end end if modDB:Flag(nil, "Blind") and not modDB:Flag(nil, "CannotBeBlinded") then diff --git a/src/Modules/ItemTools.lua b/src/Modules/ItemTools.lua index ea3bf6dc37..85cd2ffcfe 100644 --- a/src/Modules/ItemTools.lua +++ b/src/Modules/ItemTools.lua @@ -220,6 +220,9 @@ function itemLib.applyRange(line, range, valueScalar, baseValueScalar) ifRequired = true elseif format == "divide_by_one_thousand" then precision = 1000 + elseif format == "divide_by_ten_thousand_1dp" then + precision = 10000 + displayPrecision = 1 elseif format == "per_minute_to_per_second" then precision = 60 elseif format == "per_minute_to_per_second_0dp" then diff --git a/src/Modules/StatDescriber.lua b/src/Modules/StatDescriber.lua index ddccfa477d..4ac24190fd 100644 --- a/src/Modules/StatDescriber.lua +++ b/src/Modules/StatDescriber.lua @@ -135,6 +135,10 @@ local function applySpecial(val, spec) val[spec.v].min = val[spec.v].min / 1000 val[spec.v].max = val[spec.v].max / 1000 val[spec.v].fmt = "g" + elseif spec.k == "divide_by_ten_thousand_1dp" then + val[spec.v].min = round(val[spec.v].min / 10000, 1) + val[spec.v].max = round(val[spec.v].max / 10000, 1) + val[spec.v].fmt = "g" elseif spec.k == "per_minute_to_per_second" then val[spec.v].min = floor(val[spec.v].min / 60, 1) val[spec.v].max = floor(val[spec.v].max / 60, 1) From e87065575e0019c447ff4a1ced94930555acd591 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 3 Jun 2026 07:15:04 +1000 Subject: [PATCH 2/4] Virtuous Barrier Adds virtuous barrier and support for the active skill count. The env handling is there so that when a skill is in fullDPS, it still counts the mutipliers in case we have a mod that scales off one of the stats from the buff. The test is more this case --- spec/System/TestSkills_spec.lua | 41 ++++++++++ src/Data/Gems.lua | 19 +++++ src/Data/ModCache.lua | 2 +- src/Data/Skills/other.lua | 141 ++++++++++++++++++++++++++++++++ src/Export/Skills/other.txt | 27 ++++++ src/Modules/CalcSetup.lua | 27 +++++- 6 files changed, 255 insertions(+), 2 deletions(-) diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index 6b9d590ec9..925fbdf042 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -94,6 +94,47 @@ describe("TestSkills", function() assert.True(build.calcsTab.mainOutput.SpiritReservedPercent > oneCurseReservation) end) + it("keeps Virtuous armour scaling during accelerated skill recalcs", function() + build.itemsTab:CreateDisplayItemFromRaw("New Item\nRazor Quarterstaff\nQuality: 0") + build.itemsTab:AddDisplayItem() + build.skillsTab:PasteSocketGroup("Virtuous Barrier 20/0 1") + build.skillsTab:PasteSocketGroup("Falling Thunder 20/0 1") + build.skillsTab:PasteSocketGroup("Quarterstaff Strike 20/0 1") + build.mainSocketGroup = 3 + runCallback("OnFrame") + + local calcs = LoadModule("Modules/Calcs") + local env, cachedPlayerDB, cachedEnemyDB, cachedMinionDB = calcs.initEnv(build, "CALCULATOR") + env.modDB:NewMod("Armour", "BASE", 1000, "Test Armour") + env.modDB:NewMod("Damage", "INC", 10, "Test Armour Damage", ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 1 }) + calcs.perform(env) + + local normalArmour = env.player.output.Armour + local normalDPS = env.player.output.TotalDPS + assert.are.equals(1050, normalArmour) + assert.is_true(normalDPS > 0) + + env = calcs.initEnv(build, "CALCULATOR", {}, { + cachedPlayerDB = cachedPlayerDB, + cachedEnemyDB = cachedEnemyDB, + cachedMinionDB = cachedMinionDB, + env = env, + accelerate = { + nodeAlloc = true, + requirementsItems = true, + requirementsGems = true, + skills = true, + everything = true, + }, + }) + env.modDB:NewMod("Armour", "BASE", 1000, "Test Armour") + env.modDB:NewMod("Damage", "INC", 10, "Test Armour Damage", ModFlag.Attack, 0, { type = "PerStat", stat = "Armour", div = 1 }) + calcs.perform(env) + + assert.are.equals(normalArmour, env.player.output.Armour) + assert.are.near(normalDPS, env.player.output.TotalDPS, 0.001) + end) + it("Test cost efficiency modifiers", function() -- Test Mana Cost Efficiency build.skillsTab:PasteSocketGroup("Ball Lightning 1/0 1\n") diff --git a/src/Data/Gems.lua b/src/Data/Gems.lua index a9dd4f4e97..46bb9ebd90 100644 --- a/src/Data/Gems.lua +++ b/src/Data/Gems.lua @@ -19550,6 +19550,25 @@ return { Tier = 0, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemAscendancyGemlingVirtuousBarrier"] = { + name = "Virtuous Barrier", + baseTypeName = "Virtuous Barrier", + gameId = "Metadata/Items/Gems/SkillGemAscendancyVirtuousBarrier", + variantId = "AscendancyGemlingVirtuousBarrier", + grantedEffectId = "VirtuousBarrierPlayer", + tags = { + buff = true, + grants_active_skill = true, + persistent = true, + }, + gemType = "Buff", + tagString = "Persistent", + reqStr = 0, + reqDex = 0, + reqInt = 0, + Tier = 0, + naturalMaxLevel = 20, + }, ["Metadata/Items/Gems/SkillGemConcussiveRunesSupport"] = { name = "Concussive Runes", gameId = "Metadata/Items/Gems/SupportGemConcussiveRunes", diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 5a3f6fe035..3d818febe6 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -5558,7 +5558,7 @@ c["Grants Skill: Temporal Rift"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill" c["Grants Skill: Time Freeze"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TimeFreezePlayer"}}},nil} c["Grants Skill: Time Snap"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="TimeSnapPlayer"}}},nil} c["Grants Skill: Unbound Avatar"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="UnboundAvatarPlayer"}}},nil} -c["Grants Skill: Virtuous Barrier"]={nil,nil} +c["Grants Skill: Virtuous Barrier"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="VirtuousBarrierPlayer"}}},nil} c["Grants Skill: Vivid Stampede"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="VividStampedePlayer"}}},nil} c["Grants Skill: Void Illusion"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="VoidIllusionPlayer"}}},nil} c["Grants Skill: Wild Protector"]={{[1]={flags=0,keywordFlags=0,name="ExtraSkill",type="LIST",value={level=1,skillId="WildProtectorPlayer"}}},nil} diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index c1ba5c588e..46496bbd08 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -19275,6 +19275,147 @@ skills["SupportUhtredsRitePlayer"] = { }, } } +skills["VirtuousBarrierPlayer"] = { + name = "Virtuous Barrier", + baseTypeName = "Virtuous Barrier", + icon = "Art/2DArt/SkillIcons/GemBarrier.dds", + fromTree = true, + color = 4, + description = "While active, conjures a glittering barrier that accumulates protective gemstone Motes of each Attribute type over time, but loses a random Mote when you are Hit.", + skillTypes = { [SkillType.Buff] = true, [SkillType.HasReservation] = true, [SkillType.OngoingSkill] = true, [SkillType.Persistent] = true, [SkillType.ReserveInAllSets] = true, }, + castTime = 0, + qualityStats = { + { "gem_barrier_blue_grants_life_regeneration_rate_+%", 0.125 }, + { "gem_barrier_blue_grants_mana_regeneration_rate_+%", 0.125 }, + }, + levels = { + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 3, }, + [3] = { levelRequirement = 6, }, + [4] = { levelRequirement = 10, }, + [5] = { levelRequirement = 14, }, + [6] = { levelRequirement = 18, }, + [7] = { levelRequirement = 22, }, + [8] = { levelRequirement = 26, }, + [9] = { levelRequirement = 31, }, + [10] = { levelRequirement = 36, }, + [11] = { levelRequirement = 41, }, + [12] = { levelRequirement = 46, }, + [13] = { levelRequirement = 52, }, + [14] = { levelRequirement = 58, }, + [15] = { levelRequirement = 64, }, + [16] = { levelRequirement = 66, }, + [17] = { levelRequirement = 72, }, + [18] = { levelRequirement = 78, }, + [19] = { levelRequirement = 84, }, + [20] = { levelRequirement = 90, }, + [21] = { levelRequirement = 90, }, + [22] = { levelRequirement = 90, }, + [23] = { levelRequirement = 90, }, + [24] = { levelRequirement = 90, }, + [25] = { levelRequirement = 90, }, + [26] = { levelRequirement = 90, }, + [27] = { levelRequirement = 90, }, + [28] = { levelRequirement = 90, }, + [29] = { levelRequirement = 90, }, + [30] = { levelRequirement = 90, }, + [31] = { levelRequirement = 90, }, + [32] = { levelRequirement = 90, }, + [33] = { levelRequirement = 90, }, + [34] = { levelRequirement = 90, }, + [35] = { levelRequirement = 90, }, + [36] = { levelRequirement = 90, }, + [37] = { levelRequirement = 90, }, + [38] = { levelRequirement = 90, }, + [39] = { levelRequirement = 90, }, + [40] = { levelRequirement = 90, }, + }, + statSets = { + [1] = { + label = "Virtuous Barrier", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "virtuous_barrier", + statMap = { + ["gem_barrier_red_grants_maximum_life_+%"] = { + mod("Life", "INC", nil, 0, 0, { type = "Multiplier", var = "StrengthMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_blue_grants_life_regeneration_rate_+%"] = { + mod("LifeRegen", "INC", nil, 0, 0, { type = "Multiplier", var = "IntelligenceMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_blue_grants_mana_regeneration_rate_+%"] = { + mod("ManaRegen", "INC", nil, 0, 0, { type = "Multiplier", var = "IntelligenceMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_green_grants_evasion_rating_+%"] = { + mod("Evasion", "INC", nil, 0, 0, { type = "Multiplier", var = "DexterityMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_green_grants_physical_damage_reduction_rating_+%"] = { + mod("Armour", "INC", nil, 0, 0, { type = "Multiplier", var = "DexterityMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_green_grants_energy_shield_delay_-%"] = { + mod("EnergyShield", "INC", nil, 0, 0, { type = "Multiplier", var = "DexterityMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + }, + baseFlags = { + }, + constantStats = { + { "skill_desired_amount_override", 1 }, + { "gem_barrier_red_grants_maximum_life_+%", 2 }, + { "gem_barrier_blue_grants_life_regeneration_rate_+%", 5 }, + { "gem_barrier_blue_grants_mana_regeneration_rate_+%", 5 }, + { "gem_barrier_green_grants_evasion_rating_+%", 5 }, + { "gem_barrier_green_grants_physical_damage_reduction_rating_+%", 5 }, + { "gem_barrier_green_grants_energy_shield_delay_-%", 5 }, + { "skill_specific_stat_description_mode", 3 }, + }, + stats = { + "base_active_skill_buff_stack_gain_frequency_ms", + "base_deal_no_damage", + }, + levels = { + [1] = { 2000, statInterpolation = { 1, }, actorLevel = 1, }, + [2] = { 1975, statInterpolation = { 1, }, actorLevel = 3.4519999027252, }, + [3] = { 1950, statInterpolation = { 1, }, actorLevel = 6.7670001983643, }, + [4] = { 1925, statInterpolation = { 1, }, actorLevel = 10.307999610901, }, + [5] = { 1900, statInterpolation = { 1, }, actorLevel = 14.074999809265, }, + [6] = { 1875, statInterpolation = { 1, }, actorLevel = 18.068000793457, }, + [7] = { 1850, statInterpolation = { 1, }, actorLevel = 22.287000656128, }, + [8] = { 1825, statInterpolation = { 1, }, actorLevel = 26.732000350952, }, + [9] = { 1800, statInterpolation = { 1, }, actorLevel = 31.40299987793, }, + [10] = { 1775, statInterpolation = { 1, }, actorLevel = 36.299999237061, }, + [11] = { 1750, statInterpolation = { 1, }, actorLevel = 41.423000335693, }, + [12] = { 1725, statInterpolation = { 1, }, actorLevel = 46.771999359131, }, + [13] = { 1700, statInterpolation = { 1, }, actorLevel = 52.34700012207, }, + [14] = { 1675, statInterpolation = { 1, }, actorLevel = 58.147998809814, }, + [15] = { 1650, statInterpolation = { 1, }, actorLevel = 64.175003051758, }, + [16] = { 1625, statInterpolation = { 1, }, actorLevel = 70.428001403809, }, + [17] = { 1600, statInterpolation = { 1, }, actorLevel = 76.906997680664, }, + [18] = { 1575, statInterpolation = { 1, }, actorLevel = 83.611999511719, }, + [19] = { 1550, statInterpolation = { 1, }, actorLevel = 90.542999267578, }, + [20] = { 1525, statInterpolation = { 1, }, actorLevel = 97.699996948242, }, + [21] = { 1500, statInterpolation = { 1, }, actorLevel = 105.08300018311, }, + [22] = { 1475, statInterpolation = { 1, }, actorLevel = 112.69200134277, }, + [23] = { 1450, statInterpolation = { 1, }, actorLevel = 120.52700042725, }, + [24] = { 1425, statInterpolation = { 1, }, actorLevel = 128.58799743652, }, + [25] = { 1400, statInterpolation = { 1, }, actorLevel = 136.875, }, + [26] = { 1375, statInterpolation = { 1, }, actorLevel = 145.38800048828, }, + [27] = { 1350, statInterpolation = { 1, }, actorLevel = 154.12699890137, }, + [28] = { 1325, statInterpolation = { 1, }, actorLevel = 163.09199523926, }, + [29] = { 1300, statInterpolation = { 1, }, actorLevel = 172.28300476074, }, + [30] = { 1275, statInterpolation = { 1, }, actorLevel = 181.69999694824, }, + [31] = { 1250, statInterpolation = { 1, }, actorLevel = 191.34300231934, }, + [32] = { 1225, statInterpolation = { 1, }, actorLevel = 201.21200561523, }, + [33] = { 1200, statInterpolation = { 1, }, actorLevel = 211.30700683594, }, + [34] = { 1175, statInterpolation = { 1, }, actorLevel = 221.62800598145, }, + [35] = { 1150, statInterpolation = { 1, }, actorLevel = 232.17500305176, }, + [36] = { 1125, statInterpolation = { 1, }, actorLevel = 242.94799804688, }, + [37] = { 1100, statInterpolation = { 1, }, actorLevel = 253.94700622559, }, + [38] = { 1075, statInterpolation = { 1, }, actorLevel = 265.17199707031, }, + [39] = { 1050, statInterpolation = { 1, }, actorLevel = 276.62298583984, }, + [40] = { 1025, statInterpolation = { 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["VerisiumManifestationPlayer"] = { name = "Verisium Manifestations", baseTypeName = "Verisium Manifestations", diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 5c863ca33e..327c9b5d87 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -1324,6 +1324,33 @@ statMap = { #mods #skillEnd +#from tree +#skill VirtuousBarrierPlayer +#set VirtuousBarrierPlayer +#flags +statMap = { + ["gem_barrier_red_grants_maximum_life_+%"] = { + mod("Life", "INC", nil, 0, 0, { type = "Multiplier", var = "StrengthMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_blue_grants_life_regeneration_rate_+%"] = { + mod("LifeRegen", "INC", nil, 0, 0, { type = "Multiplier", var = "IntelligenceMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_blue_grants_mana_regeneration_rate_+%"] = { + mod("ManaRegen", "INC", nil, 0, 0, { type = "Multiplier", var = "IntelligenceMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_green_grants_evasion_rating_+%"] = { + mod("Evasion", "INC", nil, 0, 0, { type = "Multiplier", var = "DexterityMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_green_grants_physical_damage_reduction_rating_+%"] = { + mod("Armour", "INC", nil, 0, 0, { type = "Multiplier", var = "DexterityMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, + ["gem_barrier_green_grants_energy_shield_delay_-%"] = { + mod("EnergyShield", "INC", nil, 0, 0, { type = "Multiplier", var = "DexterityMoteSkillCount" }, { type = "GlobalEffect", effectType = "Buff" }), + }, +}, +#mods +#skillEnd + #skill VerisiumManifestationPlayer #set VerisiumManifestationPlayer #flags diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index f35306ebf6..f115b75ce5 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -1387,6 +1387,9 @@ function calcs.initEnv(build, mode, override, specEnv) -- Merge Granted Skills Tables env.grantedSkills = tableConcat(env.grantedSkillsNodes, env.grantedSkillsItems) + local virtuousMoteSkillCount = accelerate.skills and env.virtuousMoteSkillCount or { Str = 0, Dex = 0, Int = 0 } + local virtuousMoteSkillCounted = { } + if not accelerate.skills then if env.mode == "MAIN" then local function getNormalizedSkillLevel(grantedSkill) @@ -1740,8 +1743,25 @@ function calcs.initEnv(build, mode, override, specEnv) if gemInstance.enabled and (gemInstance.gemData or gemInstance.grantedEffect) then local grantedEffectList = gemInstance.gemData and gemInstance.gemData.grantedEffectList or { gemInstance.grantedEffect } for index, grantedEffect in ipairs(grantedEffectList) do - if not grantedEffect.support and not grantedEffect.unsupported and (not grantedEffect.hasGlobalEffect or gemInstance["enableGlobal"..index]) then + if not grantedEffect.support and not grantedEffect.hideFromSideBar and (not grantedEffect.hasGlobalEffect or gemInstance["enableGlobal"..index]) then slotHasActiveSkill = true + if gemInstance.gemData and not virtuousMoteSkillCounted[gemInstance] and not (group.gemList[gemIndex].fromNode or group.gemList[gemIndex].fromItem) then + virtuousMoteSkillCounted[gemInstance] = true + local requiredAttributes = { } + if gemInstance.gemData.reqStr > 0 then + t_insert(requiredAttributes, "Str") + end + if gemInstance.gemData.reqDex > 0 then + t_insert(requiredAttributes, "Dex") + end + if gemInstance.gemData.reqInt > 0 then + t_insert(requiredAttributes, "Int") + end + local moteValue = #requiredAttributes == 1 and 2 or 1 + for _, attr in ipairs(requiredAttributes) do + virtuousMoteSkillCount[attr] = virtuousMoteSkillCount[attr] + moteValue + end + end local activeEffect = { grantedEffect = grantedEffect, level = gemInstance.level, @@ -1964,6 +1984,11 @@ function calcs.initEnv(build, mode, override, specEnv) end end + env.virtuousMoteSkillCount = virtuousMoteSkillCount + env.modDB.multipliers.StrengthMoteSkillCount = virtuousMoteSkillCount.Str + env.modDB.multipliers.DexterityMoteSkillCount = virtuousMoteSkillCount.Dex + env.modDB.multipliers.IntelligenceMoteSkillCount = virtuousMoteSkillCount.Int + -- This needs to be done here at the end as otherwise we will only consider gems in the -- selected active skill group -- Calculate skill gem and support gem counts From d231baa21842a3cb4a0ccaca0daba8ee8d8cdcba Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 3 Jun 2026 07:26:45 +1000 Subject: [PATCH 3/4] Empowered Sparks I Does not add Sparks II as that gem acts very weirdly where it uses the same granted effect for 2 of the 3 parts of the skill and requires a bunch of changes in PoBs code and the exporter I think Also adds initial support for hiding skills from the sidebar --- src/Classes/SkillsTab.lua | 8 +- src/Data/Gems.lua | 25 +++ src/Data/Skills/sup_int.lua | 351 ++++++++++++++++++++++++++++++++++ src/Export/Scripts/skills.lua | 6 + src/Export/Skills/sup_int.txt | 21 ++ src/Modules/CalcTools.lua | 2 +- 6 files changed, 408 insertions(+), 5 deletions(-) diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua index 833b60116b..3c43bfffe3 100644 --- a/src/Classes/SkillsTab.lua +++ b/src/Classes/SkillsTab.lua @@ -989,7 +989,7 @@ function SkillsTabClass:CreateGemSlot(index) if gemInstance then local grantedEffectList = gemInstance.gemData and gemInstance.gemData.grantedEffectList or { gemInstance.grantedEffect } for index, grantedEffect in ipairs(grantedEffectList) do - if not grantedEffect.support and not grantedEffect.unsupported and (not grantedEffect.hasGlobalEffect or gemInstance["enableGlobal"..index]) then + if not grantedEffect.support and not grantedEffect.hideFromSideBar and (not grantedEffect.hasGlobalEffect or gemInstance["enableGlobal"..index]) then return true end end @@ -1035,7 +1035,7 @@ function SkillsTabClass:CreateGemSlot(index) end local grantedEffectList = gemInstance.gemData and gemInstance.gemData.grantedEffectList or { gemInstance.grantedEffect } for index, grantedEffect in ipairs(grantedEffectList) do - if not grantedEffect.support and not grantedEffect.unsupported and (not grantedEffect.hasGlobalEffect or gemInstance["enableGlobal"..index]) then + if not grantedEffect.support and not grantedEffect.hideFromSideBar and (not grantedEffect.hasGlobalEffect or gemInstance["enableGlobal"..index]) then return true end end @@ -1232,8 +1232,8 @@ function SkillsTabClass:ProcessSocketGroup(socketGroup) else gemInstance.errMsg, gemInstance.gemData, gemInstance.skillId = nil end - if gemInstance.gemData and gemInstance.gemData.grantedEffect.unsupported then - gemInstance.errMsg = gemInstance.nameSpec .. " is not supported yet" + if gemInstance.gemData and gemInstance.gemData.grantedEffect.hideFromSideBar then + gemInstance.errMsg = gemInstance.nameSpec .. " cannot be used as an active skill" gemInstance.gemData = nil end if gemInstance.gemData or gemInstance.grantedEffect then diff --git a/src/Data/Gems.lua b/src/Data/Gems.lua index 46bb9ebd90..7aef0cda34 100644 --- a/src/Data/Gems.lua +++ b/src/Data/Gems.lua @@ -18696,6 +18696,31 @@ return { Tier = 2, naturalMaxLevel = 1, }, + ["Metadata/Items/Gems/SkillGemEmpoweredSparksSupport"] = { + name = "Empowered Sparks I", + gameId = "Metadata/Items/Gems/SupportGemEmpoweredSparks", + variantId = "EmpoweredSparksSupport", + grantedEffectId = "SupportEmpoweredSparksPlayer", + additionalGrantedEffectId1 = "TriggeredSparkEmpowerPlayer", + additionalGrantedEffectId2 = "TriggeredEmpoweredSparkPlayer", + grantedEffectDisplayOrder = { 1, 2 }, + tags = { + support = true, + grants_active_skill = true, + projectile = true, + trigger = true, + lightning = true, + duration = true, + }, + gemType = "Support", + gemFamily = "Empowered Sparks", + tagString = "Projectile, Trigger, Lightning, Duration", + reqStr = 0, + reqDex = 0, + reqInt = 100, + Tier = 2, + naturalMaxLevel = 1, + }, ["Metadata/Items/Gems/SkillGemControlledHazardSupport"] = { name = "Controlled Hazard", gameId = "Metadata/Items/Gems/SupportGemControlledHazard", diff --git a/src/Data/Skills/sup_int.lua b/src/Data/Skills/sup_int.lua index f10e8e66c3..1019e48e76 100644 --- a/src/Data/Skills/sup_int.lua +++ b/src/Data/Skills/sup_int.lua @@ -3780,6 +3780,357 @@ skills["SupportEmbitterPlayer"] = { }, } } +skills["SupportEmpoweredSparksPlayer"] = { + name = "Empowered Sparks I", + description = "Supports Skills which generate Charges. When generating Power Charge with Supported Skills, Empower some of your Attacks to Trigger Spark Projectiles on use.", + color = 3, + support = true, + requireSkillTypes = { SkillType.GeneratesCharges, }, + addSkillTypes = { }, + excludeSkillTypes = { }, + gemFamily = { "EmpoweredSparks",}, + levels = { + [1] = { levelRequirement = 0, }, + }, + statSets = { + [1] = { + label = "Empowered Sparks I", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "gem_stat_descriptions", + baseFlags = { + }, + stats = { + "skill_has_empowered_spark_support", + }, + levels = { + [1] = { actorLevel = 1, }, + }, + }, + } +} +skills["TriggeredSparkEmpowerPlayer"] = { + name = "Empowered Sparks", + hidden = true, + icon = "Art/2DItems/Gems/New/NewSupport/EmpoweredSparksSupportGem.dds", + skillTypes = { [SkillType.SkillGrantedBySupport] = true, }, + castTime = 1, + qualityStats = { + }, + levels = { + [1] = { levelRequirement = 0, }, + [2] = { levelRequirement = 0, }, + [3] = { levelRequirement = 0, }, + [4] = { levelRequirement = 0, }, + [5] = { levelRequirement = 0, }, + [6] = { levelRequirement = 0, }, + [7] = { levelRequirement = 0, }, + [8] = { levelRequirement = 0, }, + [9] = { levelRequirement = 0, }, + [10] = { levelRequirement = 0, }, + [11] = { levelRequirement = 0, }, + [12] = { levelRequirement = 0, }, + [13] = { levelRequirement = 0, }, + [14] = { levelRequirement = 0, }, + [15] = { levelRequirement = 0, }, + [16] = { levelRequirement = 0, }, + [17] = { levelRequirement = 0, }, + [18] = { levelRequirement = 0, }, + [19] = { levelRequirement = 0, }, + [20] = { levelRequirement = 0, }, + [21] = { levelRequirement = 0, }, + [22] = { levelRequirement = 0, }, + [23] = { levelRequirement = 0, }, + [24] = { levelRequirement = 0, }, + [25] = { levelRequirement = 0, }, + [26] = { levelRequirement = 0, }, + [27] = { levelRequirement = 0, }, + [28] = { levelRequirement = 0, }, + [29] = { levelRequirement = 0, }, + [30] = { levelRequirement = 0, }, + [31] = { levelRequirement = 0, }, + [32] = { levelRequirement = 0, }, + [33] = { levelRequirement = 0, }, + [34] = { levelRequirement = 0, }, + [35] = { levelRequirement = 0, }, + [36] = { levelRequirement = 0, }, + [37] = { levelRequirement = 0, }, + [38] = { levelRequirement = 0, }, + [39] = { levelRequirement = 0, }, + [40] = { levelRequirement = 0, }, + }, + hideFromSideBar = true, + statSets = { + [1] = { + label = "Support", + incrementalEffectiveness = 0.054999999701977, + statDescriptionScope = "skill_stat_descriptions", + baseFlags = { + }, + constantStats = { + { "support_empower_X_attacks_with_spark_on_power_charge_gain", 3 }, + }, + stats = { + }, + levels = { + [1] = { actorLevel = 1, }, + [2] = { actorLevel = 3.4519999027252, }, + [3] = { actorLevel = 6.7670001983643, }, + [4] = { actorLevel = 10.307999610901, }, + [5] = { actorLevel = 14.074999809265, }, + [6] = { actorLevel = 18.068000793457, }, + [7] = { actorLevel = 22.287000656128, }, + [8] = { actorLevel = 26.732000350952, }, + [9] = { actorLevel = 31.40299987793, }, + [10] = { actorLevel = 36.299999237061, }, + [11] = { actorLevel = 41.423000335693, }, + [12] = { actorLevel = 46.771999359131, }, + [13] = { actorLevel = 52.34700012207, }, + [14] = { actorLevel = 58.147998809814, }, + [15] = { actorLevel = 64.175003051758, }, + [16] = { actorLevel = 70.428001403809, }, + [17] = { actorLevel = 76.906997680664, }, + [18] = { actorLevel = 83.611999511719, }, + [19] = { actorLevel = 90.542999267578, }, + [20] = { actorLevel = 97.699996948242, }, + [21] = { actorLevel = 105.08300018311, }, + [22] = { actorLevel = 112.69200134277, }, + [23] = { actorLevel = 120.52700042725, }, + [24] = { actorLevel = 128.58799743652, }, + [25] = { actorLevel = 136.875, }, + [26] = { actorLevel = 145.38800048828, }, + [27] = { actorLevel = 154.12699890137, }, + [28] = { actorLevel = 163.09199523926, }, + [29] = { actorLevel = 172.28300476074, }, + [30] = { actorLevel = 181.69999694824, }, + [31] = { actorLevel = 191.34300231934, }, + [32] = { actorLevel = 201.21200561523, }, + [33] = { actorLevel = 211.30700683594, }, + [34] = { actorLevel = 221.62800598145, }, + [35] = { actorLevel = 232.17500305176, }, + [36] = { actorLevel = 242.94799804688, }, + [37] = { actorLevel = 253.94700622559, }, + [38] = { actorLevel = 265.17199707031, }, + [39] = { actorLevel = 276.62298583984, }, + [40] = { actorLevel = 288.29998779297, }, + }, + }, + } +} +skills["TriggeredEmpoweredSparkPlayer"] = { + name = "Empowered Sparks", + hidden = true, + icon = "Art/2DItems/Gems/New/NewSupport/EmpoweredSparksSupportGem.dds", + skillTypes = { [SkillType.SkillGrantedBySupport] = true, [SkillType.Lightning] = true, [SkillType.Projectile] = true, [SkillType.Triggered] = true, [SkillType.Triggerable] = true, [SkillType.Duration] = true, [SkillType.InbuiltTrigger] = true, }, + castTime = 1, + qualityStats = { + }, + levels = { + [1] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [2] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [3] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [4] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [5] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [6] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [7] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [8] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [9] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [10] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [11] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [12] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [13] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [14] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [15] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [16] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [17] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [18] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [19] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [20] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [21] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [22] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [23] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [24] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [25] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [26] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [27] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [28] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [29] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [30] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [31] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [32] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [33] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [34] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [35] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [36] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [37] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [38] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [39] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + [40] = { critChance = 9, levelRequirement = 0, cost = { Mana = 0, }, }, + }, + statSets = { + [1] = { + label = "Base", + baseEffectiveness = 0.80000001192093, + incrementalEffectiveness = 0.12999999523163, + damageIncrementalEffectiveness = 0.0060999998822808, + statDescriptionScope = "triggered_empowered_spark_statset_0", + baseFlags = { + hit = true, + projectile = true, + duration = true, + }, + constantStats = { + { "base_skill_effect_duration", 2000 }, + { "spark_pathing_width_bounds", 20 }, + { "damage_hit_effect_index", 1009 }, + { "spark_min_time_between_target_clearing_ms", 660 }, + }, + stats = { + "spell_minimum_base_lightning_damage", + "spell_maximum_base_lightning_damage", + "base_number_of_projectiles", + "base_is_projectile", + "projectiles_should_collide_with_flying_monsters", + "active_skill_consumes_a_cold_infusion", + "projectile_uses_contact_position", + "projectile_uses_contact_direction", + "check_for_targets_between_initiator_and_projectile_source", + "skill_triggered_manually_by_other_skill", + "triggerable_in_any_set", + }, + notMinionStat = { + "spell_minimum_base_lightning_damage", + "spell_maximum_base_lightning_damage", + }, + levels = { + [1] = { 1, 7, 4, statInterpolation = { 1, 1, 1, }, actorLevel = 1, }, + [2] = { 1, 9, 5, statInterpolation = { 1, 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 1, 11, 5, statInterpolation = { 1, 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 1, 14, 5, statInterpolation = { 1, 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 1, 17, 5, statInterpolation = { 1, 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 1, 21, 5, statInterpolation = { 1, 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 1, 25, 6, statInterpolation = { 1, 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 2, 30, 6, statInterpolation = { 1, 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 2, 35, 6, statInterpolation = { 1, 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 2, 41, 6, statInterpolation = { 1, 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 2, 47, 7, statInterpolation = { 1, 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 3, 54, 7, statInterpolation = { 1, 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 3, 62, 7, statInterpolation = { 1, 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 4, 70, 7, statInterpolation = { 1, 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 4, 80, 8, statInterpolation = { 1, 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 5, 90, 8, statInterpolation = { 1, 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 5, 102, 8, statInterpolation = { 1, 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 6, 115, 8, statInterpolation = { 1, 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 7, 129, 9, statInterpolation = { 1, 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 8, 144, 9, statInterpolation = { 1, 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 9, 162, 9, statInterpolation = { 1, 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 10, 181, 10, statInterpolation = { 1, 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 11, 202, 10, statInterpolation = { 1, 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 12, 226, 10, statInterpolation = { 1, 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 13, 252, 10, statInterpolation = { 1, 1, 1, }, actorLevel = 136.875, }, + [26] = { 15, 281, 11, statInterpolation = { 1, 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 16, 313, 11, statInterpolation = { 1, 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 18, 349, 11, statInterpolation = { 1, 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 20, 389, 11, statInterpolation = { 1, 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 23, 434, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 25, 484, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 28, 539, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 32, 601, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 35, 671, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 39, 748, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 44, 835, 12, statInterpolation = { 1, 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 49, 932, 13, statInterpolation = { 1, 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 55, 1041, 13, statInterpolation = { 1, 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 61, 1163, 13, statInterpolation = { 1, 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 68, 1300, 13, statInterpolation = { 1, 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + [2] = { + label = "Cold-Infused", + baseEffectiveness = 1.6000000238419, + incrementalEffectiveness = 0.12999999523163, + damageIncrementalEffectiveness = 0.0060999998822808, + statDescriptionScope = "triggered_empowered_spark_statset_1", + baseFlags = { + hit = true, + projectile = true, + duration = true, + }, + constantStats = { + { "base_skill_effect_duration", 2000 }, + { "spark_pathing_width_bounds", 20 }, + { "damage_hit_effect_index", 1009 }, + { "spark_min_time_between_target_clearing_ms", 660 }, + }, + stats = { + "spell_minimum_base_lightning_damage", + "spell_maximum_base_lightning_damage", + "spell_minimum_base_lightning_damage", + "spell_maximum_base_lightning_damage", + "spell_minimum_base_cold_damage", + "spell_maximum_base_cold_damage", + "base_number_of_projectiles", + "base_number_of_projectiles", + "base_is_projectile", + "projectiles_should_collide_with_flying_monsters", + "active_skill_consumes_a_cold_infusion", + "projectile_uses_contact_position", + "projectile_uses_contact_direction", + "check_for_targets_between_initiator_and_projectile_source", + "skill_triggered_manually_by_other_skill", + "triggerable_in_any_set", + "projectiles_nova", + }, + notMinionStat = { + "spell_minimum_base_lightning_damage", + "spell_maximum_base_lightning_damage", + "spell_minimum_base_cold_damage", + "spell_maximum_base_cold_damage", + }, + levels = { + [1] = { 0, 0, 1, 7, 5, 7, 0, 12, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 1, }, + [2] = { 0, 0, 1, 9, 7, 10, 0, 12, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 3.4519999027252, }, + [3] = { 0, 0, 1, 11, 9, 14, 0, 12, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 6.7670001983643, }, + [4] = { 0, 0, 1, 14, 12, 17, 0, 12, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 10.307999610901, }, + [5] = { 0, 0, 1, 17, 15, 22, 0, 13, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 14.074999809265, }, + [6] = { 0, 0, 1, 21, 18, 27, 0, 13, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 18.068000793457, }, + [7] = { 0, 0, 1, 25, 21, 32, 0, 13, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 22.287000656128, }, + [8] = { 0, 0, 2, 30, 25, 38, 0, 13, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 26.732000350952, }, + [9] = { 0, 0, 2, 35, 30, 44, 0, 14, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 31.40299987793, }, + [10] = { 0, 0, 2, 41, 34, 52, 0, 14, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 36.299999237061, }, + [11] = { 0, 0, 2, 47, 40, 60, 0, 14, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 41.423000335693, }, + [12] = { 0, 0, 3, 54, 46, 68, 0, 14, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 46.771999359131, }, + [13] = { 0, 0, 3, 62, 52, 78, 0, 15, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 52.34700012207, }, + [14] = { 0, 0, 4, 70, 59, 89, 0, 15, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 58.147998809814, }, + [15] = { 0, 0, 4, 80, 67, 101, 0, 15, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 64.175003051758, }, + [16] = { 0, 0, 5, 90, 76, 114, 0, 15, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 70.428001403809, }, + [17] = { 0, 0, 5, 102, 86, 129, 0, 16, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 76.906997680664, }, + [18] = { 0, 0, 6, 115, 96, 145, 0, 16, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 83.611999511719, }, + [19] = { 0, 0, 7, 129, 108, 163, 0, 16, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 90.542999267578, }, + [20] = { 0, 0, 8, 144, 122, 182, 0, 16, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 97.699996948242, }, + [21] = { 0, 0, 9, 162, 136, 204, 0, 17, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 105.08300018311, }, + [22] = { 0, 0, 10, 181, 152, 228, 0, 17, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 112.69200134277, }, + [23] = { 0, 0, 11, 202, 170, 255, 0, 17, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 120.52700042725, }, + [24] = { 0, 0, 12, 226, 190, 285, 0, 17, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 128.58799743652, }, + [25] = { 0, 0, 13, 252, 212, 318, 0, 18, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 136.875, }, + [26] = { 0, 0, 15, 281, 237, 355, 0, 18, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 145.38800048828, }, + [27] = { 0, 0, 16, 313, 264, 396, 0, 18, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 154.12699890137, }, + [28] = { 0, 0, 18, 349, 294, 441, 0, 18, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 163.09199523926, }, + [29] = { 0, 0, 20, 389, 328, 492, 0, 19, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 172.28300476074, }, + [30] = { 0, 0, 23, 434, 365, 548, 0, 19, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 181.69999694824, }, + [31] = { 0, 0, 25, 484, 407, 611, 0, 19, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 191.34300231934, }, + [32] = { 0, 0, 28, 539, 454, 681, 0, 19, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 201.21200561523, }, + [33] = { 0, 0, 32, 601, 506, 760, 0, 19, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 211.30700683594, }, + [34] = { 0, 0, 35, 671, 565, 847, 0, 19, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 221.62800598145, }, + [35] = { 0, 0, 39, 748, 630, 945, 0, 19, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 232.17500305176, }, + [36] = { 0, 0, 44, 835, 703, 1054, 0, 20, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 242.94799804688, }, + [37] = { 0, 0, 49, 932, 785, 1177, 0, 20, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 253.94700622559, }, + [38] = { 0, 0, 55, 1041, 876, 1314, 0, 20, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 265.17199707031, }, + [39] = { 0, 0, 61, 1163, 979, 1469, 0, 20, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 276.62298583984, }, + [40] = { 0, 0, 68, 1300, 1094, 1642, 0, 20, critChance = 11, statInterpolation = { 1, 1, 1, 1, 1, 1, 1, 1, }, actorLevel = 288.29998779297, }, + }, + }, + } +} skills["SupportEncroachingGroundPlayer"] = { name = "Encroaching Ground", description = "Supports Skills that create Ground Surfaces, causing those Surfaces to grow over time, up to a limit.", diff --git a/src/Export/Scripts/skills.lua b/src/Export/Scripts/skills.lua index eb7f8044eb..b0f826e15a 100644 --- a/src/Export/Scripts/skills.lua +++ b/src/Export/Scripts/skills.lua @@ -106,6 +106,12 @@ directiveTable.noGem = function(state, args, out) state.noGem = true end +-- #hideFromSideBar +-- Loads the skill but prevents it from being offered as an active skill choice. +directiveTable.hideFromSideBar = function(state, args, out) + out:write('\thideFromSideBar = true,\n') +end + -- #addSkillTypes [ [...]] -- skill types to be added to the skillTypes flags for this active skill directiveTable.addSkillTypes = function(state, args, out) diff --git a/src/Export/Skills/sup_int.txt b/src/Export/Skills/sup_int.txt index 2effa929e0..a7b75d26f6 100644 --- a/src/Export/Skills/sup_int.txt +++ b/src/Export/Skills/sup_int.txt @@ -644,6 +644,27 @@ statMap = { #mods #skillEnd +#skill SupportEmpoweredSparksPlayer +#set SupportEmpoweredSparksPlayer +#mods +#skillEnd + +#skill TriggeredSparkEmpowerPlayer +#hideFromSideBar +#set TriggeredSparkEmpowerPlayer +#flags +#mods +#skillEnd + +#skill TriggeredEmpoweredSparkPlayer +#set TriggeredEmpoweredSparkPlayer +#flags hit projectile duration +#mods +#set TriggeredEmpoweredSparkColdInfusedPlayer +#flags hit projectile duration +#mods +#skillEnd + #skill SupportEncroachingGroundPlayer #set SupportEncroachingGroundPlayer #mods diff --git a/src/Modules/CalcTools.lua b/src/Modules/CalcTools.lua index 20011dd87d..cda906b85e 100644 --- a/src/Modules/CalcTools.lua +++ b/src/Modules/CalcTools.lua @@ -83,7 +83,7 @@ end -- Check if given support skill can support the given active skill function calcLib.canGrantedEffectSupportActiveSkill(grantedEffect, activeSkill) - if grantedEffect.unsupported or activeSkill.activeEffect.grantedEffect.cannotBeSupported then + if activeSkill.activeEffect.grantedEffect.cannotBeSupported then return false end if grantedEffect.supportGemsOnly and not activeSkill.activeEffect.gemData then From cfcecfa4002c9df2be3826476076639aeee96110 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 3 Jun 2026 20:45:13 +1000 Subject: [PATCH 4/4] Fix spelling --- spec/System/TestSkills_spec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/System/TestSkills_spec.lua b/spec/System/TestSkills_spec.lua index 925fbdf042..d391879ad5 100644 --- a/spec/System/TestSkills_spec.lua +++ b/spec/System/TestSkills_spec.lua @@ -94,7 +94,7 @@ describe("TestSkills", function() assert.True(build.calcsTab.mainOutput.SpiritReservedPercent > oneCurseReservation) end) - it("keeps Virtuous armour scaling during accelerated skill recalcs", function() + it("Keeps Virtuous armour scaling during Full DPS loop", function() build.itemsTab:CreateDisplayItemFromRaw("New Item\nRazor Quarterstaff\nQuality: 0") build.itemsTab:AddDisplayItem() build.skillsTab:PasteSocketGroup("Virtuous Barrier 20/0 1")