Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
LocalIdentity committed Aug 24, 2023
2 parents 89c9a87 + 1eb20f4 commit afd9254
Show file tree
Hide file tree
Showing 37 changed files with 7,666 additions and 6,724 deletions.
10,446 changes: 5,247 additions & 5,199 deletions CHANGELOG.md

Large diffs are not rendered by default.

51 changes: 47 additions & 4 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,64 @@
VERSION[2.33.0][2023/08/25]

--- New to Path of Building ---
* Support for triggered skills has been reworked (Paliak)
* Calculations of effective triggered skills trigger rate should now be more accurate
* Improve cooldown breakpoint interactions with skills that add Cast time
* Implemented all currently existing trigger skills that POB is capable of supporting. Including:
* CWDT
* Spell Slinger
* Counter-attack skills
* Arcanist brand
* Tawhoa's Chosen
* Battlemage's Cry
* Add support for Trigger Bots
* Add support for Flamewood Support
* Add Support for Guardian's minion RF skill (LocalIdentity)

--- Fixed Crashes ---
* Fix crash when using Ruthless Support in a Poison build (LocalIdentity)
* Fix crash when trying to edit Energy Blade weapon (Wires77)
* Fix crash when viewing resist breakdown while having Chieftains Valako Ascendancy (Paliak)

--- User Interface ---
* Trigger related breakdowns should now be more descriptive (Paliak)
* Improve breakdowns for skills that add Cast time (Paliak)
* Display Cast when Damage Taken threshold in the trigger rate section (Paliak)

--- Accuracy Improvements ---
* Fix inaccuracies caused by incorrect handling of skill cooldown during skill rotation simulation (Paliak)
* Triggers should now correctly account for source rate modifiers such as crit chance and accuracy (Paliak)
* Fix many self triggers counting as self-cast (Paliak)
* Fix incorrect handling of gems supported by more than one trigger (Paliak)

--- Fixed Bugs ---
* Fix Volatility from applying multiple times when conversion is present (Regisle)
* Fix Chain count box not appearing sometimes (LocalIdentity)
* Fix Cold Exposure mastery not working correctly (LocalIdentity)
* Fix gems not benefiting from Supports sometimes (LocalIdentity)
* Fix Trauma Duration sometimes using skill Duration (LocalIdentity)
* Fix Strength of Blood Keystone not working (LocalIdentity)


VERSION[2.32.2][2023/08/24]

--- Fixed Bugs ---
* Fix crash caused by usage of incorrect breakdown table (Paliak)
* Fix lua error when hovering Ascendant nodes (Wires77)


VERSION[2.32.1][2023/08/24]

--- Fixed Bugs ---
* Fix crash when opening some minion builds
* Fix Timeless jewel stats disappearing when applying a tattoo
* Fix crash when opening some minion builds (Paliak)
* Fix Timeless jewel stats disappearing when applying a tattoo (Wires77)

VERSION[2.32.0][2023/08/24]

--- New to Path of Building ---
* Add support for tattoos (Wires77)
* Add support for Ruthless tree (Wires77)
* Add support for 3.22 skill gems by (LocalIdentity, Lilylicious, Regisle, Paliak, Wires77, deathbeam)
* Add support for 3.22 skill gems (LocalIdentity, Lilylicious, Regisle, Paliak, Wires77, deathbeam)
* Full Support
* Locus Mine
* Devour
Expand All @@ -32,7 +75,7 @@ VERSION[2.32.0][2023/08/24]
* Add support for new Chieftain and Guardian ascendancy nodes (Paliak)
* Add initial support for Guardian minion nodes (LocalIdentity)
* Add self-hit calculations for Scolds Bridle, Eye of Innocence and Heartbound Loop (Paliak)
* Add support for new Ancestor uniques by (Wires77, LocalIdentity)
* Add support for new Ancestor uniques (Wires77, LocalIdentity)
* Improve startup time (Lancej)

--- User Interface ---
Expand Down
11 changes: 9 additions & 2 deletions src/Classes/ImportTab.lua
Original file line number Diff line number Diff line change
Expand Up @@ -767,8 +767,9 @@ function ImportTabClass:ImportItem(itemData, slotName)
end
end
item.name = oneHanded and "Energy Blade One Handed" or "Energy Blade Two Handed"
itemData.implicitMods = nil
itemData.explicitMods = nil
item.rarity = "NORMAL"
itemData.implicitMods = { }
itemData.explicitMods = { }
end
for baseName, baseData in pairs(self.build.data.itemBases) do
local s, e = item.name:find(baseName, 1, true)
Expand Down Expand Up @@ -846,8 +847,14 @@ function ImportTabClass:ImportItem(itemData, slotName)
if itemData.sockets and itemData.sockets[1] then
item.sockets = { }
for i, socket in pairs(itemData.sockets) do
if socket.sColour == "A" then
item.abyssalSocketCount = item.abyssalSocketCount or 0 + 1
end
item.sockets[i] = { group = socket.group, color = socket.sColour }
end
if item.abyssalSocketCount and item.abyssalSocketCount > 0 then
t_insert(itemData.explicitMods, "Has " .. item.abyssalSocketCount .. " Abyssal Sockets")
end
end
if itemData.socketedItems then
self:ImportSocketedItems(item, itemData.socketedItems, slotName)
Expand Down
3 changes: 2 additions & 1 deletion src/Classes/Item.lua
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ function ItemClass:ParseRaw(raw)
end

-- Found the name for a rare or unique, but let's parse it if it's a magic or normal or Unidentified item to get the base
if not (self.rarity == "NORMAL" or self.rarity == "MAGIC" or unidentified) or self.name:match("Energy Blade") then
if not (self.rarity == "NORMAL" or self.rarity == "MAGIC" or unidentified) then
l = l + 1
end
end
Expand Down Expand Up @@ -1574,6 +1574,7 @@ function ItemClass:BuildModList()
noSupports = skill.noSupports,
source = self.modSource,
triggered = skill.triggered,
triggerChance = skill.triggerChance
})
end
end
Expand Down
6 changes: 3 additions & 3 deletions src/Data/Global.lua
Original file line number Diff line number Diff line change
Expand Up @@ -291,9 +291,9 @@ SkillType = {
ProjectilesNotFired = 124,
TotemsAreBallistae = 125,
SkillGrantedBySupport = 126,
PreventHexTransfer = 126,
MinionsAreUndamageable = 126,
InnateTrauma = 126,
PreventHexTransfer = 127,
MinionsAreUndamageable = 128,
InnateTrauma = 129,
}

GlobalCache = {
Expand Down
25 changes: 21 additions & 4 deletions src/Data/SkillStatMap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,10 @@ return {
skill("triggeredByCraft", nil, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
},
["support_cast_on_mana_spent"] = {
skill("triggeredByManaSpent", true, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
skill("triggeredByKitavaThirst", true, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
},
["cast_when_cast_curse_%"] = {
skill("triggeredByCurseOnCurse", true, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Hex }),
},
["display_mirage_warriors_no_spirit_strikes"] = {
skill("triggeredBySaviour", true, { type = "SkillType", skillType = SkillType.Attack } ),
Expand All @@ -197,7 +200,7 @@ return {
skill("chanceToTriggerOnCrit", nil, { type = "SkillType", skillType = SkillType.Attack }),
},
["cast_spell_on_linked_melee_kill"] = {
skill("triggeredByMeleeKill", true, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
skill("triggeredByMeleeKill", true, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }, { type = "Condition", var = "KilledRecently" }),
},
["cast_linked_spells_on_melee_kill_%"] = {
skill("chanceToTriggerOnMeleeKill", nil , { type = "SkillType", skillType = SkillType.Attack }, { type = "SkillType", skillType = SkillType.Melee })
Expand All @@ -211,6 +214,21 @@ return {
["triggered_by_spiritual_cry"] = {
skill("triggeredByGeneralsCry", true, { type = "SkillType", skillType = SkillType.Melee }, { type = "SkillType", skillType = SkillType.Attack }),
},
["cast_on_damage_taken_threshold"] = {
skill("triggeredByDamageTaken", nil, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
},
["cast_on_stunned_%"] = {
skill("triggeredByStunned", nil, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
},
["trigger_on_attack_hit_against_rare_or_unique"] = {
skill("triggerMarkOnRareOrUnique", true, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Mark }),
},
["melee_counterattack_trigger_on_block_%"] = {
skill("triggerCounterAttack", nil, { type = "SkillType", skillType = SkillType.Attack }, { type = "SkillType", skillType = SkillType.Triggerable }),
},
["melee_counterattack_trigger_on_hit_%"] = {
skill("triggerCounterAttack", nil, { type = "SkillType", skillType = SkillType.Attack }, { type = "SkillType", skillType = SkillType.Triggerable }),
},
["holy_relic_trigger_on_parent_attack_%"] = {
skill("triggeredByParentAttack", true, { type = "SkillType", skillType = SkillType.Triggerable }),
},
Expand Down Expand Up @@ -1650,9 +1668,8 @@ return {
mod("MaxDoom", "BASE", nil),
},
["triggered_vicious_hex_explosion"] = {
skill("triggeredWhenHexEnds", true, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
skill("triggeredWhenHexEnds", nil, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
},

-- Aura
["non_curse_aura_effect_+%"] = {
mod("AuraEffect", "INC", nil, 0, 0, { type = "SkillType", skillType = SkillType.AppliesCurse, neg = true }),
Expand Down
1 change: 1 addition & 0 deletions src/Data/Skills/act_dex.lua
Original file line number Diff line number Diff line change
Expand Up @@ -10997,6 +10997,7 @@ skills["ChannelledSnipeSupport"] = {
requireSkillTypes = { SkillType.RangedAttack, SkillType.ThresholdJewelRangedAttack, SkillType.OR, SkillType.Triggerable, SkillType.AND, },
addSkillTypes = { SkillType.Triggered, SkillType.Cooldown, },
excludeSkillTypes = { SkillType.SummonsTotem, SkillType.Trapped, SkillType.RemoteMined, SkillType.HasReservation, SkillType.Vaal, SkillType.Instant, SkillType.Channel, },
isTrigger = true,
ignoreMinionTypes = true,
weaponTypes = {
["Bow"] = true,
Expand Down
7 changes: 6 additions & 1 deletion src/Data/Skills/act_int.lua
Original file line number Diff line number Diff line change
Expand Up @@ -914,6 +914,7 @@ skills["SupportDarkRitual"] = {
requireSkillTypes = { SkillType.AppliesCurse, SkillType.Hex, SkillType.AND, },
addSkillTypes = { SkillType.Triggered, },
excludeSkillTypes = { SkillType.Trapped, SkillType.RemoteMined, SkillType.SummonsTotem, SkillType.AuraAffectsEnemies, SkillType.InbuiltTrigger, },
isTrigger = true,
statDescriptionScope = "gem_stat_descriptions",
statMap = {
["apply_linked_curses_with_dark_ritual"] = {
Expand Down Expand Up @@ -9542,6 +9543,7 @@ skills["SupportSpellslinger"] = {
requireSkillTypes = { SkillType.Triggerable, SkillType.Spell, SkillType.AND, },
addSkillTypes = { SkillType.Triggered, SkillType.HasReservation, SkillType.Cooldown, },
excludeSkillTypes = { SkillType.Trapped, SkillType.RemoteMined, SkillType.SummonsTotem, SkillType.HasReservation, SkillType.Triggered, SkillType.NOT, SkillType.AND, SkillType.InbuiltTrigger, },
isTrigger = true,
supportGemsOnly = true,
ignoreMinionTypes = true,
statDescriptionScope = "gem_stat_descriptions",
Expand All @@ -9553,6 +9555,7 @@ skills["SupportSpellslinger"] = {
mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment)),
},
["spellslinger_trigger_on_wand_attack_%"] = {
skill("triggeredBySpellSlinger", nil, { type = "SkillType", skillType = SkillType.Triggerable }, { type = "SkillType", skillType = SkillType.Spell }),
},
},
baseMods = {
Expand Down Expand Up @@ -9712,6 +9715,7 @@ skills["SupportBrandSupport"] = {
requireSkillTypes = { SkillType.Triggerable, SkillType.Spell, SkillType.AND, },
addSkillTypes = { SkillType.Triggered, },
excludeSkillTypes = { SkillType.Trapped, SkillType.RemoteMined, SkillType.SummonsTotem, SkillType.HasReservation, SkillType.InbuiltTrigger, },
isTrigger = true,
ignoreMinionTypes = true,
statDescriptionScope = "gem_stat_descriptions",
addFlags = {
Expand All @@ -9725,7 +9729,7 @@ skills["SupportBrandSupport"] = {
mod("AreaOfEffect", "MORE", nil),
},
["trigger_brand_support_hit_damage_+%_final_vs_branded_enemy"] = {
mod("TriggeredDamage", "MORE", nil, ModFlag.Hit, 0, { type = "Condition", var = "TargetingBrandedEnemy"}),
mod("TriggeredDamage", "MORE", nil, 0, 0, { type = "Condition", var = "TargetingBrandedEnemy"}),
},
},
addSkillTypes = { SkillType.Brand, },
Expand Down Expand Up @@ -11513,6 +11517,7 @@ skills["TempestShield"] = {
chaining = true,
},
baseMods = {
skill("triggerCounterAttack", 100, { type = "SkillType", skillType = SkillType.Spell }),
flag("ShockImmune"),
},
qualityStats = {
Expand Down
22 changes: 21 additions & 1 deletion src/Data/Skills/act_str.lua
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,9 @@ skills["AbyssalCry"] = {
["infernal_cry_covered_in_ash_fire_damage_taken_%_per_5_monster_power"] = {
mod("InfernalFireTakenPer5MP", "BASE", nil),
},
["infernal_cry_empowered_attacks_trigger_combust_display"] = {
-- Display only
},
},
baseFlags = {
warcry = true,
Expand Down Expand Up @@ -311,6 +314,11 @@ skills["InfernalCryOnHitExplosion"] = {
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
statMap = {
["triggered_by_infernal_cry"] = {
-- Display only
},
},
baseFlags = {
attack = true,
melee = true,
Expand Down Expand Up @@ -1030,6 +1038,9 @@ skills["BattlemagesCry"] = {
["divine_cry_critical_strike_chance_+%_per_5_power_up_to_cap%"] = {
mod("BattlemageCritChancePer5MP", "BASE", nil),
},
["display_battlemage_cry_exerted_attacks_trigger_supported_spell"] ={
-- Display only
},
},
baseFlags = {
area = true,
Expand Down Expand Up @@ -1116,8 +1127,17 @@ skills["BattlemagesCrySupport"] = {
requireSkillTypes = { SkillType.Spell, SkillType.Triggerable, SkillType.AND, },
addSkillTypes = { SkillType.Triggered, },
excludeSkillTypes = { SkillType.Trapped, SkillType.RemoteMined, SkillType.SummonsTotem, SkillType.HasReservation, SkillType.InbuiltTrigger, },
isTrigger = true,
ignoreMinionTypes = true,
statDescriptionScope = "gem_stat_descriptions",
statMap = {
["support_divine_cry_damage_+%_final"] = {
mod("Damage", "MORE", nil),
},
["triggered_by_divine_cry"] = {
skill("triggeredByBattleMageCry", true),
},
},
qualityStats = {
Default = {
{ "dummy_stat_display_nothing", 0 },
Expand Down Expand Up @@ -1523,7 +1543,7 @@ skills["Boneshatter"] = {
mod("TraumaSelfDamageTakenLife", "BASE", nil),
},
["boneshatter_trauma_base_duration_ms"] = {
skill("duration", nil),
mod("TraumaDuration", "BASE", nil),
div = 1000,
},
},
Expand Down
23 changes: 23 additions & 0 deletions src/Data/Skills/minion.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1443,6 +1443,29 @@ skills["InfernalLegion"] = {
},
}

skills["GuardianSentinelFireAura"] = {
name = "Burning Aura",
hidden = true,
color = 4,
baseFlags = {
spell = true,
area = true,
},
skillTypes = { [SkillType.DamageOverTime] = true, [SkillType.CausesBurning] = true },
baseMods = {
skill("FireDot", 1, { type = "Multiplier", var = "GuardianSentinelFireAuraBaseDamage" }, { type = "PercentStat", stat = "Life", percent = 1}),
skill("dotIsArea", true),
skill("radius", 1, { type = "Multiplier", var = "GuardianSentinelFireAuraRadius" }),
},
qualityStats = {
},
stats = {
},
levels = {
[1] = { cost = { } },
},
}

skills["MeleeAtAnimationSpeedUnique"] = {
name = "Default Attack",
hidden = true,
Expand Down
Loading

0 comments on commit afd9254

Please sign in to comment.