Skip to content

Add support for various ailment and debuff mods#2134

Merged
LocalIdentity merged 7 commits into
PathOfBuildingCommunity:devfrom
majochem:feat/debuffMods
Jun 10, 2026
Merged

Add support for various ailment and debuff mods#2134
LocalIdentity merged 7 commits into
PathOfBuildingCommunity:devfrom
majochem:feat/debuffMods

Conversation

@majochem

@majochem majochem commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Description of the problem being solved:

Adds support for Passive Notables "Toxic Sludge" and "Dread Engineer's Concoction" via the following changes

  • Adds support for parsing ailment mods with slightly different wording like "magnitude of ignite against..." instead of "magnitude of ignite you inflict ..." as well as "duration of poisons" rather than just "duration of poison" (singular)
  • Adds support for generic "Condition:Slowed" which is set to true as long as there are any negative ActionSpeed or MovementSpeed mods affecting the enemy (purposely only checked for enemies for now, as there are no relevant effects for players)
  • Adds base movement speed penalty applied by "Hindered", which was previously only applied for "Maimed"
  • Adds base flags for "Maimed" and "Hindered" which enables generic mods like "Nearby enemies are hindered/maimed"
  • Adds SumNegativeValues() to ModStore as counter part to SumPositiveValues()

Steps taken to verify a working solution:

  • Mods get parsed
  • Effect for "against slowed" only gets applied if condition is met (chilled, maimed, hindered, temp chains)
  • Added automated test via TestDebuffs_spec.lua

Link to a build that showcases this PR:

eNrNW19z4jgSf575FC6u7i0DtvkTZ4vsFpBkwl6YsJCZ3D5tCVuANrLNWjIZ5tNfS7KNDQEkMg-Xh8SW-9cttbpb3W2n-9v3kFprnDASR9c1p27XLBz5cUCixXXt69PdJ6_2268fu2PEl4_zfkqoeOL--vFDV95Y_hIlyOc4ecBrTHspj0dxgK9rPElxzQoRiaax_4L55yROVyCgZvkUMfYFhUA0QdECJzULMR9HwWD74EscAZoKloBp16w1wa-K8XA0fpw81SyOkgXm3_KZ2385NZjVh-6Yog1Ophxxa41oCoiOY9evLmsWg7HrWg8Wixb4nvBawwTQTxPGb1AIlweBTr1Z_sk5TFcYBwdBhaBxgm_nc-xzssaDhPDBEkU-Po3ToHXLtKOUcrKiBDR_cCG2nSPuTzL3nFa943ayn2JaTzFH9GY8PYizq5QxN5XwTPiyT0G3x6QcwQ4XEeH4GNjxmnXb8y6ddsu1O06xUzFhcXQMeHV1WQdU03Nt79KtSD0NPiA1V5OWTgcppeCpWrQTzHCyRpyctaZBHM5IdHwTClEjFKFBzLge5RgnEBi4EWCK_RhiiakMQ-QDmWN9SqN1ZADT2Zy3jtupLp0x4_MmNIH4qkc5jVN6lLJTRL0pPxLq2jnVDf5-OtgOI36E1eXWpf45RmlvZa5j4XcaQTIhs5QfCfEdt9603ctW56rpbJcug8bt_fggrrmd9Hi5YcRHdIS-kzANIfI_oRd8eG5u09ta4GLJIwg4Z2DvSILPgA1iGujCSouEwyxmurjtPqHkJcKM6QZTCIenEKU5Cf89SNcupRH-L4J0GPm6XL9GSTYfXcQEnFVkPDOKddKDqpDM5_Ui1gQvcJSJ2-hBHjD2l58hqZwgfmx6V-UIrxFKhGYF6THN7nDV0GxJTVXEKTW16q0y0FBRAqKrqJIKSHIkJd6jNFv-LkbbTm4jnCw20yXBNDCjzvU1QCtNAyijjxnCAXFGe1SG6u1V5YTUk-YWFcjtGjGtU0YpQlHr6WCNAnyiQNhaJoZs3QgxTuK_RUVEzWCwDErNEWdKu8FzKmCx2EE4A7URugJ6SRiniebuKWKtzcsPfFXWTnCQ-nrJSFGn9ilU97rLKFBS2UbQHufIf7mJg4XZjhohqvObpqsVxCvhCScYfGrb5VwGMgCik8BuaR_BjY_FqZIAkfXoCtjSGggoMjldKTuAU6LsSiKmvZQt8SkBzt52jiBMhnDcyD7MKD5ykNSLiFnBPC8hJHxlsMbpC6H08LldauUwDCYzQQFJ2QhzuNcwCKjZtapoSajZCBjHr6CvpeiWHclF36KGJFljKgmOfmy0-VfItQTcRkGaCPfTlrGL2Irpp_M5s2bw-wEM6bpWs_w0Ybi4icMZ4tmdQjyREM4sxm4QRxaTncw7QjlOboBKyFAzxSjxlwJ4hyidQaQS7Laj4i7IKr1vKCEo4o401J1BVwwKwd2G7K6KqwGiPpNzGUarlFtRGs5wItGR7JUyYZJ_qeFs1oqS8UR2cW_v7m4HT8NvtzkiJMz_S2hBdFQzyFQdYKADStGK4eC6NkeUYVhGOmPq4XXtG8Gv0gVuMEeEsppFgFCOTLE40Yy4SRzUYFlXVfLa3ppwug1XwnBxIAwim9UzaD8hhcEYTElNQORWYvsVt217Uo-ROrAGiHGZ1Sk9lfrAelxEuzZbzmCbnuthh-EK0Uxydm2sCb5ZYQZJBZkTv6Ra-ewJnqkxI7344HLI3xS7XTlb9XjInq9ioC5NwKr9qtDZtZFWZc8406q6NoHfYB9la1eXJuCiUIgj8fpCcinGjDh9iSNp5BAfeoSKcy7b2VuKiwETho98iRN14GacRhBk8gFDx1GdroxP6d5IV6KlojS0ba7oQWXPQK1h2z3QdBpVRWfeTkxdtlLtqv3Yr3_1WKlcKdNhJcvS3AZVcqgtKJcfmivJCk61iEr1qekoMgb31jEJZHxQLrMzaBY04PR-PxtZUPwENkXJ-H5edxSxl2yns-uDcPVatoz-CuUu4Zv3MRE-9j4OwtXex0Fke-HZ6EmRgUyOJh9vy13k0aqapGrhi3T1bA4qqT4bLnN-TfSh0A_2LOqdUuwvRoziJ0-jG9DG1jH0WO0vSs5qJ3y8j5c6Fn_SQpW_q5cPpQBQfhthwAiO8fsiUTyXU1Eu32NExWvqmL6P4e5LFn1mb7gn9uN0haIg5_ZYzc7P1V7MGTCVxdaN6Kmyd80STutwc4xPt5GXc90xSvjGQqsVjrZzCzDjJELZEUxhA6bL-LUXrIURP8GOsJxUcntKMLZQ3rLyRVGoJgs3UH6Kt64o2fS2X9cMQVREgC0HZOnbmXblGxxBZYuPdxgUupssiZMFcv7Uza8joIgQzcYUD5jrpvwAyk6oM4FBy2vZzoXjtOyLtt1qX8Gl57YvXMf17Aun5XnuRbN9BSRN12t7gsa76NiXTSDx7DaArmyveeE0PRfGnaYD5G6z07pot6681kUTmLcvnHbbvrzoND3Pk7r40P06eZAXH5acr9gvjcbr62t9hfgynuPvhOI6lP2NFSwGtPhJFtOfhHYaPfjpL4a928Se9O__SEffRotH8p_R-M8-ur38m49dd9pmzO0_furNwx_Pm-HTfPz7uP0COCm4kUvuqk-gWEPdCdNNCGhETatbZLj5AzCD71-UysCMIl5cQ0X_ZU-VasVlVSptKQ2VdaOUq3STzaVRmUy3ISxH2qkwLXEhSz1mMTBD0RCNE_4Zh6L0g0n0Hh6Eyc5RSsXoHykSmYTqiChC1t_cjKeFq5QH70RKW_16pMTrQX36FcVJWLyPrslZPOAFlI-CTeE1mQeoLgTfekE2ID3RyaxBDloUzQR79YFabwuX3il7KzgSb0ALLyeRT9MAD6OsR5e50Q68EPOhCxO0_ikpZIefuv1M4xmizluDbj4oWjbKuWUP1OrHFAqMtWoYDYNseCZHpfWKsWeMVnH0GdIKjoOCQPXMRJ8rSdIVz3RsFwOlILnAoeAzwhwFiKPGkIPCG0LrDblSuCrJhdgcSb3nn-y5dmFgktxA91Kv_4fah5QyxNYzEkG5pH05rEYL7RdjP1fhJVFaCs8uwQOkRytPli3FOJqTReY26qbsN8WIxQmnWBYrwi1rFUdSPcYZnEkYRWV1XdfEuUPEGSbPQ9Vkybs0BsDBEia8i8ubmv-KMEpmG9g1HBLMLJRgy1eAj289A1sJDzxakigQvcOPjm3_W9haghEc8FYgD28LLcDMGEimkCcHOVIR-7J5ZfHYWslVfixWkjIeh6M4YPn0wRZ8vIwpiCp6uJ6b0wuuG2kfx-gvxRv1EqDUUHwb0PQ6FYD02XJ_9W2YvQ8qtxAOyKqC4OE4z57eBjjOZbuCqfQJ3sa0q1N782XVAWk5cArO5y-noj3L9NdTSDq1KHvPmAfK2QE7SDYgtyiwTkw0LL7TFWUReBAkwVCB0I0hWjbCN1-ZJoNiAQEO4-gOTuDTutrZlt23oNpTvSGQbEI1y3thGAsugf4OCfITm3PVae8Z6Wlv2Fnc7htYPVHVV-1Hg4LdqS6s3H57G-LuzDABuwNZkAXIT9BO79-xrfgMv1CAT-7G7ooLjzm95K1vLiFT1phu-w0rJ6JKl2-A_JeBOB-nmM6PW7q9z2aQJmLR-31XvUULLZ1e785-5e8StVQkT0WDHWVkQejjXDZ5Tgef9p4hld_PHHDDfes7rYLLHRWoL1CguJb_E5IV3Y0iFVG1s7zLC1_xLjJ7xzrlwLF6PtesH3Ec_ve69qnVcutXTa_V8ppuq9VUVYR4cZVbuC9qGZWGCEyWpXXU3Z_AwfPqUDq1W82m03KaTVV7ywTtGK-UYfXhs0rGZYZVKVgEh3Leld3vZV1HGFUqG1lkDgOoOmXBLdJJWT0DGXAez-CBLMal1n_Hr5ha6nm2TVMa8yqpuMmaAQol-6qWa4DoY8qNBTgGCKgHjej7cbCxqiFVAwUAIylqqyzHmr7mn6po4WQT20iSQphsyQRispGIHoRHzA33xMhI4pgzA3oo0taYGW6fa759JpB7TEMjJamNa5punDHgjHWfYeluydK7jSyUqU9oEsgepjJOP2OREzDVCZUBVEbSULSVLPxd_JFt0UqT80vMVXdKgLKbbmPvHxL_B-I8Wl8=

Before screenshot:

"against slowed enemies" node
image

"magnitude of ignite" node
image

After screenshot:

"against slowed enemies" node
image

"magnitude of ignite" node
image

majochem added 7 commits June 8, 2026 15:22
There were different wording variations for mods that affect ailment
magnitude on players or enemies. Some of which were not recognized yet.

Example:
- "magnitude of ignite you inflict" was recognized
- "magnitude of ignite on ... enemies" was not recognized
Equivalent to `SumPositiveValues()`, but for negative values instead.
In this case usefuly to calculate whether the enemy is "slowed"
NOTE: I am not 100% sure that this is the perfect place for this
processing to go, but it needed to be somewhere after all the other
debuffs like chill, maim, curses, etc. have been processed
Added to `flagTypes` to enable parsing of nearby enemies are ... type of
mods for those conditions
This was only done for "Maimed" before
@majochem majochem marked this pull request as ready for review June 8, 2026 13:59
@LocalIdentity LocalIdentity added the enhancement New feature, calculation, or mod label Jun 10, 2026

@LocalIdentity LocalIdentity left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably fix the parsing of mods like Nearby Enemies are Hindered, with 25% reduced Movement Speed so that it uses the hindered speed value but is fine for now as nothing actually cares about the speed atm

@LocalIdentity LocalIdentity merged commit 96ab5a1 into PathOfBuildingCommunity:dev Jun 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature, calculation, or mod

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants