You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support for "Fleshrender" unique (and general poison stacking mechanics) (#9533)
* Rename `doublePoisonChance` to `additionalPoisonChance`
Renamed for clarity as it is not actually a "doubling" effect
* Add additional poisons and poison stack limits
- parsing and logic for application of more than 1 additional poison per
hit via "inflict X additional poisons on the same target ..."
- parsing and logic for poison stack limit via "cannot poison enemies
with at least X poisons on them"
- adds parsing and logic for additional `CannotMultiplie` flag that will
apply to Viper Strike of the Mamba as of 3.28
* Adjust `PoisonStacks` breakdown
* Add parsing for "Wither on Hit with this weapon against Enemies with at least 12 Poisons on them"
Just setting `Condition:CanWither` flag for now, as actually checking
for number of poisons seems overkill and eliminates too many edge cases
* Add `ModStoreClass:Min()` to `ModStore.lua`
This is the counterpart to `ModStoreClass:Max()` and gives back the
lowest modifier value. This makes sense for things like the poison stack
limit, where neither "BASE" nor "OVERRIDE" would work for multiple mods
* Change `PoisonStackLimit` to use `"MIN"` modType
* Add `"MAX"` & `"MIN"` modType explanation to docs
"MAX" already existed and was used, but was missing from `modSyntax.md`,
so I added the explanation for both now
* Add `PoisonStackLimit` to Viper Strike of the Mamba
* Further improve PoisonStacks breakdown
- Now shows active poison stack limit
- Now shows what uncapped poison stacks would be (to gauge if you're
close to being under cap)
- Changed wording of "Capped to 1" for `Condition:SinglePoison` hint to
"Assume non-Poisoned Enemy" because that is what it is actually used
for
* Appease the spell checking gods `hitrate` -> `hit rate`
---------
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
Copy file name to clipboardExpand all lines: docs/modSyntax.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,7 @@ Used as a key, so you can reference this mod elsewhere in PoB. Can really be an
13
13
- "OVERRIDE": used when you want to ignore any calculations done on this mod and just use the value (e.g. "your resistances are 78%" from Loreweave)
14
14
- "FLAG": used for conditions. Value will be true/false when this type is used.
15
15
- When you need the "FLAG" ModType, consider using the function `flag(name, source, modFlags, keywordFlags, extraTags)` instead. This method shortens the code and clarifies the intent. For example, `flag("ZealotsOath", { type = "Condition", var = "UsingFlask" })` is the same as `mod("ZealotsOath", "FLAG", true, { type = "Condition", var = "UsingFlask" })`
16
+
- "MAX" and "MIN": used for values where only the highest or lowest value should take effect respectively. Examples are `"ImprovedMinionDamageAppliesToPlayer"` for "Increases and Reductions to Minion Damage apply ... at X% of their value" or `"PoisonStackLimit"` for "Cannot Poison Enemies with at least X Poisons on them"
16
17
### Value
17
18
This represents the raw value of the mod. When it's used in the skills to map from the skill data, this will be `nil`, as it pulls the number from the gem based on the level.
Copy file name to clipboardExpand all lines: src/Data/ModCache.lua
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -5086,7 +5086,7 @@ c["325% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShie
5086
5086
c["33% chance to Blind nearby Enemies when gaining Her Blessing"]={{}," to Blind nearby Enemies when gaining Her Blessing "}
5087
5087
c["33% chance to Blind nearby Enemies when gaining Her Blessing 100% chance to Avoid being Ignited, Chilled or Frozen with Her Blessing"]={{[1]={flags=0,keywordFlags=0,name="AvoidIgnite",type="BASE",value=33}}," to Blind nearby Enemies when gaining Her Blessing 100% chance , Chilled or Frozen with Her Blessing "}
5088
5088
c["33% chance to gain a Frenzy Charge on Kill"]={nil,"a Frenzy Charge "}
5089
-
c["33% chance to inflict an additional Poison on the same Target when you inflict Poison"]={{[1]={flags=0,keywordFlags=0,name="DoublePoisonChance",type="BASE",value=33}},nil}
5089
+
c["33% chance to inflict an additional Poison on the same Target when you inflict Poison"]={{[1]={flags=0,keywordFlags=0,name="AdditionalPoisonChance",type="BASE",value=33}},nil}
5090
5090
c["33% increased Attack Damage against Bleeding Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Bleeding"},flags=1,keywordFlags=0,name="Damage",type="INC",value=33}},nil}
5091
5091
c["33% increased Attack Speed while Ignited"]={{[1]={[1]={type="Condition",var="Ignited"},flags=1,keywordFlags=0,name="Speed",type="INC",value=33}},nil}
@@ -5291,7 +5291,7 @@ c["40% chance to Suppress Spell Damage while your Off Hand is empty"]={{[1]={[1]
5291
5291
c["40% chance to cause Bleeding on Melee Hit"]={{[1]={flags=260,keywordFlags=0,name="BleedChance",type="BASE",value=40}},nil}
5292
5292
c["40% chance to deal Double Damage while Focused"]={{[1]={[1]={type="Condition",var="Focused"},flags=0,keywordFlags=0,name="DoubleDamageChance",type="BASE",value=40}},nil}
5293
5293
c["40% chance to gain a Frenzy Charge for each enemy you hit with a Critical Strike"]={nil,"a Frenzy Charge for each enemy you hit with a Critical Strike "}
5294
-
c["40% chance to inflict an additional Poison on the same Target when you inflict Poison"]={{[1]={flags=0,keywordFlags=0,name="DoublePoisonChance",type="BASE",value=40}},nil}
5294
+
c["40% chance to inflict an additional Poison on the same Target when you inflict Poison"]={{[1]={flags=0,keywordFlags=0,name="AdditionalPoisonChance",type="BASE",value=40}},nil}
5295
5295
c["40% chance when you Kill a Scorched Enemy to Burn Each surrounding Enemy for 4 seconds, dealing 8% of the Killed Enemy's Life as Fire Damage per second"]={{[1]={flags=0,keywordFlags=0,name="Life",type="BASE",value=40}}," when you Kill a Scorched Enemy to Burn Each surrounding Enemy , dealing 8% of the Killed Enemy's as Fire Damage per second "}
5296
5296
c["40% faster start of Energy Shield Recharge"]={{[1]={flags=0,keywordFlags=0,name="EnergyShieldRechargeFaster",type="INC",value=40}},nil}
5297
5297
c["40% faster start of Energy Shield Recharge while affected by Discipline"]={{[1]={[1]={type="Condition",var="AffectedByDiscipline"},flags=0,keywordFlags=0,name="EnergyShieldRechargeFaster",type="INC",value=40}},nil}
-- Calc how many hits will poison before limit is reached and theoretical max poison stacks, which is different from `poisonStackLimit` due to "additional" poison mechanics
Copy file name to clipboardExpand all lines: src/Modules/ModParser.lua
+5-1Lines changed: 5 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -3725,7 +3725,11 @@ local specialModList = {
3725
3725
mod("Damage", "INC", num, nil, 0, KeywordFlag.Poison, { type = "Condition", var = "SinglePoison" }, { type = "SkillName", skillNameList = { "Sunder", "Ground Slam" }, includeTransfigured = true })
3726
3726
} end,
3727
3727
["poisons on you expire (%d+)%% slower"] = function(num) return { mod("SelfPoisonDebuffExpirationRate", "BASE", -num) } end,
3728
-
["(%d+)%% chance to inflict an additional poison on the same target when you inflict poison"] = function(num) return { mod("DoublePoisonChance", "BASE", num) } end,
3728
+
["(%d+)%% chance to inflict an additional poison on the same target when you inflict poison"] = function(num) return { mod("AdditionalPoisonChance", "BASE", num) } end,
3729
+
["inflict (%d+) additional poisons? on the same target when you inflict poisons? with this weapon"] = function(num) return { mod("AdditionalPoisonStacks", "BASE", num, { type = "Condition", var = "{Hand}Attack" } ) } end,
3730
+
["cannot poison enemies with at least (%d+) poisons? on them"] = function(num) return { mod("PoisonStackLimit", "MIN", num ) } end,
3731
+
["cannot inflict multiple poisons in the same hit"] = { flag("CannotMultiplePoison") },
3732
+
["wither on hit with this weapon against enemies with at least (%d+) poisons on them"] = { flag("Condition:CanWither") },
3729
3733
-- Suppression
3730
3734
["y?o?u?r? ?chance to suppress spell damage is lucky"] = { flag("SpellSuppressionChanceIsLucky") },
3731
3735
["y?o?u?r? ?chance to suppress spell damage is unlucky"] = { flag("SpellSuppressionChanceIsUnlucky") },
0 commit comments