From 0bfa651ae4730b1224f5058e30d7635a36daea34 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 30 Sep 2020 01:44:45 +1000 Subject: [PATCH] Fixes Fix Maim quality crash Fix mods on Cloud Retch Spectre Fix parsing for some tool tips Fix Cremation Hit Time override Add Flame Wall added damage buff Fix Catalysts Fix support for new Curse/Mark on Hit mods --- Classes/Item.lua | 10 +++++----- Data/3_0/Skills/act_dex.lua | 4 +++- Data/3_0/Skills/act_int.lua | 8 +++++++- Data/3_0/Skills/spectre.lua | 7 +++++-- Data/3_0/Skills/sup_str.lua | 2 +- Export/Skills/act_dex.txt | 4 +++- Export/Skills/act_int.txt | 6 ++++++ Export/Skills/spectre.txt | 4 ++-- Export/Skills/sup_str.txt | 2 +- Modules/ConfigOptions.lua | 4 ++++ Modules/ModParser-3_0.lua | 5 +++++ Modules/StatDescriber.lua | 4 ++++ 12 files changed, 46 insertions(+), 14 deletions(-) diff --git a/Classes/Item.lua b/Classes/Item.lua index 73c68cf5..c8e59ea6 100644 --- a/Classes/Item.lua +++ b/Classes/Item.lua @@ -14,12 +14,12 @@ local dmgTypeList = {"Physical", "Lightning", "Cold", "Fire", "Chaos"} local catalystList = {"Abrasive", "Fertile", "Imbued", "Intrinsic", "Prismatic", "Tempering", "Turbulent"} local catalystTags = { { "attack" }, - { "life", "mana" }, + { "life", "mana", "resource" }, { "caster" }, - { "jewellery_attribute" }, - { "jewellery_resistance" }, - { "jewellery_defense" }, - { "jewellery_elemental" }, + { "jewellery_attribute", "attribute" }, + { "jewellery_resistance", "resistance" }, + { "jewellery_defense", "defences" }, + { "jewellery_elemental" ,"elemental_damage" }, } local function getCatalystScalar(catalystId, tags, quality) diff --git a/Data/3_0/Skills/act_dex.lua b/Data/3_0/Skills/act_dex.lua index 55defe74..dd8e1792 100644 --- a/Data/3_0/Skills/act_dex.lua +++ b/Data/3_0/Skills/act_dex.lua @@ -1795,11 +1795,13 @@ skills["CorpseEruption"] = { ["cremation_fires_projectiles_faster_+%_final"] = { skill("cremationFireRateIncrease", nil), div = 100 + }, + ["base_skill_show_average_damage_instead_of_dps"] = { } }, preDamageFunc = function(activeSkill, output) if activeSkill.skillPart == 1 then - activeSkill.skillData.hitTimeOverride = activeSkill.skillData.cremationFireRate * ((activeSkill.skillData.cremationFireRateIncrease or 0) + 1) + activeSkill.skillData.hitTimeOverride = activeSkill.skillData.cremationFireRate / (1 + (activeSkill.skillData.cremationFireRateIncrease or 0)) end end, baseFlags = { diff --git a/Data/3_0/Skills/act_int.lua b/Data/3_0/Skills/act_int.lua index 45e736e5..9cbdbb08 100644 --- a/Data/3_0/Skills/act_int.lua +++ b/Data/3_0/Skills/act_int.lua @@ -3309,7 +3309,13 @@ skills["Firewall"] = { }, ["firewall_applies_%_fire_exposure"] = { mod("FireExposure", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), - } + }, + ["flame_wall_minimum_added_fire_damage"] = { + mod("FireMin", "BASE", nil, ModFlag.Projectile, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Flame Wall", effectCond = "FlameWallAddedDamage" }), + }, + ["flame_wall_maximum_added_fire_damage"] = { + mod("FireMax", "BASE", nil, ModFlag.Projectile, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Flame Wall", effectCond = "FlameWallAddedDamage" }), + }, }, baseFlags = { spell = true, diff --git a/Data/3_0/Skills/spectre.lua b/Data/3_0/Skills/spectre.lua index 47d9a025..e2d79046 100644 --- a/Data/3_0/Skills/spectre.lua +++ b/Data/3_0/Skills/spectre.lua @@ -4924,7 +4924,7 @@ skills["BetrayalSecretPoliceCurveDagger1"] = { [2] = { -20, 1500, 20, 50, 0, 0, levelRequirement = 100, statInterpolation = { 1, 1, 1, 1, 2, 1, }, }, }, } -skills["AtlasEyrieKiwethMortar"] = { +skills["AtlasEyrieKiwethMortarSpectre"] = { name = "Mortar", hidden = true, color = 4, @@ -4949,13 +4949,14 @@ skills["AtlasEyrieKiwethMortar"] = { "projectile_spread_radius", "spell_minimum_base_cold_damage", "spell_maximum_base_cold_damage", + "number_of_projectiles_override", "is_area_damage", "base_is_projectile", "projectile_uses_contact_position", "use_scaled_contact_offset", }, levels = { - [1] = { 0, 0.80000001192093, 1.2000000476837, critChance = 5, cooldown = 10, levelRequirement = 0, statInterpolation = { 1, 3, 3, }, }, + [1] = { 0, 0.80000001192093, 1.2000000476837, 1, critChance = 5, cooldown = 10, levelRequirement = 0, statInterpolation = { 1, 3, 3, 1, }, }, }, } skills["AtlasEyrieKiwethMortarShards"] = { @@ -4968,6 +4969,8 @@ skills["AtlasEyrieKiwethMortarShards"] = { statDescriptionScope = "skill_stat_descriptions", castTime = 1, baseFlags = { + spell = true, + hit = true, projectile = true, triggerable = true, }, diff --git a/Data/3_0/Skills/sup_str.lua b/Data/3_0/Skills/sup_str.lua index 12c804a2..89a04af4 100644 --- a/Data/3_0/Skills/sup_str.lua +++ b/Data/3_0/Skills/sup_str.lua @@ -2313,7 +2313,7 @@ skills["SupportMaim"] = { mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Maim" }, { type = "Condition", var = "Maimed" }), }, ["chance_to_bleed_on_hit_%_vs_maimed"] = { - mod("BleedChance", "BASE", nil, 0, 0, { type = "ActorCondition", actor = "enemy", condition = "Maimed"}) + mod("BleedChance", "BASE", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "Maimed" }) } }, baseMods = { diff --git a/Export/Skills/act_dex.txt b/Export/Skills/act_dex.txt index 6c1366f8..96266ca1 100644 --- a/Export/Skills/act_dex.txt +++ b/Export/Skills/act_dex.txt @@ -346,11 +346,13 @@ local skills, mod, flag, skill = ... ["cremation_fires_projectiles_faster_+%_final"] = { skill("cremationFireRateIncrease", nil), div = 100 + }, + ["base_skill_show_average_damage_instead_of_dps"] = { } }, preDamageFunc = function(activeSkill, output) if activeSkill.skillPart == 1 then - activeSkill.skillData.hitTimeOverride = activeSkill.skillData.cremationFireRate * ((activeSkill.skillData.cremationFireRateIncrease or 0) + 1) + activeSkill.skillData.hitTimeOverride = activeSkill.skillData.cremationFireRate / (1 + (activeSkill.skillData.cremationFireRateIncrease or 0)) end end, #baseMod skill("radius", 15) diff --git a/Export/Skills/act_int.txt b/Export/Skills/act_int.txt index d41a0b0f..39c68f3b 100644 --- a/Export/Skills/act_int.txt +++ b/Export/Skills/act_int.txt @@ -580,6 +580,12 @@ local skills, mod, flag, skill = ... }, ["firewall_applies_%_fire_exposure"] = { mod("FireExposure", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff" }), + }, + ["flame_wall_minimum_added_fire_damage"] = { + mod("FireMin", "BASE", nil, ModFlag.Projectile, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Flame Wall", effectCond = "FlameWallAddedDamage" }), + }, + ["flame_wall_maximum_added_fire_damage"] = { + mod("FireMax", "BASE", nil, ModFlag.Projectile, 0, { type = "GlobalEffect", effectType = "Buff", effectName = "Flame Wall", effectCond = "FlameWallAddedDamage" }), } }, #baseMod skill("radiusLabel", "Flame Wall Length:") diff --git a/Export/Skills/spectre.txt b/Export/Skills/spectre.txt index 7415b141..9863ed31 100644 --- a/Export/Skills/spectre.txt +++ b/Export/Skills/spectre.txt @@ -796,12 +796,12 @@ local skills, mod, flag, skill = ... #flags attack projectile triggerable #mods -#skill AtlasEyrieKiwethMortar Mortar +#skill AtlasEyrieKiwethMortarSpectre Mortar #flags spell hit area projectile triggerable #mods #skill AtlasEyrieKiwethMortarShards Mortar Shards -#flags projectile triggerable +#flags spell hit projectile triggerable #mods #skill GAHeistThugRangedArrowShotgun Arrow Shotgun diff --git a/Export/Skills/sup_str.txt b/Export/Skills/sup_str.txt index 7685fe8c..3b6c7e9f 100644 --- a/Export/Skills/sup_str.txt +++ b/Export/Skills/sup_str.txt @@ -254,7 +254,7 @@ local skills, mod, flag, skill = ... mod("PhysicalDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Maim" }, { type = "Condition", var = "Maimed" }), }, ["chance_to_bleed_on_hit_%_vs_maimed"] = { - mod("BleedChance", "BASE", nil, 0, 0, { type = "ActorCondition", actor = "enemy", condition = "Maimed"}) + mod("BleedChance", "BASE", nil, 0, 0, { type = "ActorCondition", actor = "enemy", var = "Maimed" }) } }, #mods diff --git a/Modules/ConfigOptions.lua b/Modules/ConfigOptions.lua index d754b9e3..67c96359 100644 --- a/Modules/ConfigOptions.lua +++ b/Modules/ConfigOptions.lua @@ -160,6 +160,10 @@ return { modList:NewMod("MinionModifier", "LIST", { mod = modLib.createMod("MovementSpeed", "INC", 10, "Feeding Frenzy") }, "Config") modList:NewMod("MinionModifier", "LIST", { mod = modLib.createMod("Speed", "INC", 10, "Feeding Frenzy") }, "Config") end }, + { label = "Flame Wall:", ifSkill = "Flame Wall" }, + { var = "flameWallAddedDamage", type = "check", label = "Projectile Travelled through Flame Wall?", ifSkill = "Flame Wall", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:FlameWallAddedDamage", "FLAG", true, "Config") + end }, { label = "Frostbolt:", ifSkill = "Frostbolt" }, { var = "frostboltExposure", type = "check", label = "Can you apply Exposure?", ifSkill = "Frostbolt", apply = function(val, modList, enemyModList) modList:NewMod("ColdExposureChance", "BASE", 20, "Config") diff --git a/Modules/ModParser-3_0.lua b/Modules/ModParser-3_0.lua index d685781f..ddaa14d5 100644 --- a/Modules/ModParser-3_0.lua +++ b/Modules/ModParser-3_0.lua @@ -1700,6 +1700,7 @@ local specialModList = { ["trigger level (%d+) (.+) when you use a skill while you have a spirit charge"] = function(num, _, skill) return extraSkill(skill, num) end, ["trigger level (%d+) (.+) when you hit an enemy while cursed"] = function(num, _, skill) return extraSkill(skill, num) end, ["trigger level (%d+) (.+) when you hit a bleeding enemy"] = function(num, _, skill) return extraSkill(skill, num) end, + ["trigger level (%d+) (.+) when you hit a rare or unique enemy"] = function(num, _, skill) return extraSkill(skill, num) end, ["trigger level (%d+) (.+) when you kill a frozen enemy"] = function(num, _, skill) return extraSkill(skill, num) end, ["trigger level (%d+) (.+) when you consume a corpse"] = function(num, _, skill) return skill == "summon phantasm skill" and extraSkill("triggered summon phantasm skill", num) or extraSkill(skill, num) end, ["trigger level (%d+) (.+) when you attack with a bow"] = function(num, _, skill) return extraSkill(skill, num) end, @@ -1723,6 +1724,10 @@ local specialModList = { ["attack with level (%d+) (.+) when you kill a bleeding enemy"] = function(num, _, skill) return extraSkill(skill, num) end, ["triggers? level (%d+) (.+) when you kill a bleeding enemy"] = function(num, _, skill) return extraSkill(skill, num) end, ["curse enemies with (%D+) on %a+"] = function(_, skill) return extraSkill(skill, 1, true) end, + ["curse enemies with (%D+) on %a+, with (%d+)%% increased effect"] = function(_, skill, num) return { + mod("ExtraSkill", "LIST", { skillId = gemIdLookup[skill], level = 1 }), + mod("CurseEffect", "INC", tonumber(num), { type = "SkillName", skillName = gemIdLookup[skill] }), + } end, ["curse enemies with level (%d+) (%D+) on %a+, which can apply to hexproof enemies"] = function(num, _, skill) return extraSkill(skill, num, true) end, ["curse enemies with level (%d+) (.+) on %a+"] = function(num, _, skill) return extraSkill(skill, num, true) end, ["[ct][ar][si][tg]g?e?r?s? (.+) on %a+"] = function(_, skill) return extraSkill(skill, 1, true) end, diff --git a/Modules/StatDescriber.lua b/Modules/StatDescriber.lua index a1a073f3..1bc853d9 100644 --- a/Modules/StatDescriber.lua +++ b/Modules/StatDescriber.lua @@ -103,6 +103,10 @@ local function applySpecial(val, spec) elseif spec.k == "milliseconds_to_seconds_0dp" then val[spec.v].min = val[spec.v].min / 1000 val[spec.v].max = val[spec.v].max / 1000 + elseif spec.k == "milliseconds_to_seconds_1dp" then + val[spec.v].min = round(val[spec.v].min / 1000, 1) + val[spec.v].max = round(val[spec.v].max / 1000, 1) + val[spec.v].fmt = "g" elseif spec.k == "milliseconds_to_seconds_2dp" then val[spec.v].min = round(val[spec.v].min / 1000, 2) val[spec.v].max = round(val[spec.v].max / 1000, 2)