* Fix Spiritblade conversion and Moonbenders Wing gain mods
We previously only calculated conversion at the skill level with no handling for local weapon mods so we applied them globally with some hacky condition checks that still had issues
Now we use the cfg passes to build tables for each weapon hand and a global skill table
The random gain/convert mods require a cache of the processed mods so that a global skill mod doesn't end up in each cfg and counting 3 times.
* Fix override to main hand
---------
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
* Add default values for melee and projectile distance to enemy
Defaulting the value to 15 for melee distance and 30 for projectile distance allows skills to better filter some uniques and skill gems
e.g. Close combat for melee skills, Far shot / point blank, freezing pulse damage and many more that rely on either `DistanceRamp` or `MeleeProximity` mods
* Default range to 40
---------
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
Rune Daggers were not counting as different weapon types for the purpose of the Mastery that increases your damage when using 2 different weapon types
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
Rune graft of Refraction prevents the additional projectiles from adding chains
Also fixes the Runegraft with Spectral Helix, Split Arrow of Splitting, Splitting Steel, and Ice Spear of Splitting
Also realised I had the parsing incorrect fo the mod in ModParser so it was causing a crash on dev when trying to press alt
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
* Fix Heraldry not granting Exposure to enemies
With my change in #9173, I moved the place in the file where EnemyModifiers were calculated but didn't realise that they also need to be recalculated later so that mods that rely on "AffectedBy" x still work
Changed it to use a cache so it doesn't duplicate earlier added mods
* Test for bug
* Fix test
* Enemy curse effect test
---------
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
Trade query was running in a random order due to pairs JIT stuff
Fixed it to use the correct order and also updated it to no longer inherits the subtype for all bases in the same section
Fixes the flask generation mod with a `overrideModLineSingular` entry
Uses the new rune dagger wording too
--- User Interface ---
- Fix incorrect tooltip when crafting some flask mods (LocalIdentity)
- Fix Damage Gain breakdown including skill conversion (LocalIdentity)
- Fix insufficient skill cost warning applying to other skills (LocalIdentity)
--- Fixed Calculations ---
- Fix Spectre conversion multiplier applying to "gain as x" mods and Chaos damage (LocalIdentity)
- Fix Pyroclast Mine Exposure being inverted and unscalable (LocalIdentity)
--- Fixed Behaviours ---
- Fix Intuitive Leap, Thread of Hope and Impossible Escape not parsing correctly (Wires77)
- Fix mod order when crafting Grafts (LocalIdentity)
- Fix "Farewell to Flesh" not applying to Agony Crawler ailment damage (LocalIdentity)
- Fix Dying Breath Curse effect mod not working (LocalIdentity)
enemyDB was not populated with `EnemyModifier` mods until doActorMisc was run on line 3078 so all the calls to enemyDB before that could be potentially missing mods
We now pull the call out of doMisc and run it early in the pass so all the subsequent calls to enemyDB will include them
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
When checking to see if we should apply the red text to a skills resource cost value we were checking the list of all skills that had a warning for that cost type instead of just the active skill in the sidebar
Decided to change the variable name for the list so that we can still use other `statData.stat.."Warning"` for other stats if we want
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
The breakdown for skill conversion and damage gained were grouped together to make 1 value instead of being separate table columns
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
For some reason I was inverting the value of the exposure and also forgot to remove the unscaleable tag from the mod
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
The `GetStat` code relied on using `cfg.summonSkillName` to match names for the skills but when we handle the ailments we were not including summonSkillName in the cfg so it would fail to match and not grant Ailment damage to Agony Crawler
Also added a floor to the returned value as it was a float before
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
Some graft mods had identical statOrder values and the same level requirement so it would then fall back to the random order the pairs list added the mods in
Instead now we sort based on Id if the statOrder and level values are the same
Making the change also requires change the lastSeries list to no longer prepend the values
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
When crafting mods on items that used a `less x` mod, we flipped the order of the values so they would smoothly transition between tiers instead of jumping
e.g. (45-49)% less Duration, (40-44)% less Duration, (35-39)% less Duration
We didn't update the range slider tooltip though so it was still jumping and was not representing the value on the item
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
The new conversion damage multiplier was meant to only apply to conversion from phys to elemental damage types
It is also not meant to apply to damage gain mods but since we grouped them into the same multiplier value it was mistakenly working
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
--- Keepers of the Flame ---
- Update and add new 3.27 skills (LocalIdentity)
- Add new Wand and Ring item bases (LocalIdentity)
- Add initial support for Grafts (LocalIdentity)
- Add initial support for Foulborn unique mods (Wires77)
- Add Support for new Monster Phys damage conversion logic (LocalIdentity)
- Add support for "Farewell to Flesh" (Lycia Bloodline Herald Ascendancy Node) (majochem)
- Add instant buyout to search URLs (Goufix)
--- User Interface ---
- Show Foulborn Icon on new Foulborn uniques and flavour text on new base items (Blitz54)
- Sort Replica Dragonfang's Flight mods (Wires77)
- Fix "The Tactician" missing flavour text (Nightblade)
--- Fixed Calculations ---
- Fix Warcry uptime when using Dual Strike of Ambidexterity (LocalIdentity)
--- Fixed Behaviours ---
- Fix Gem dropdown tooltip not updating when hovering over gems (LocalIdentity)
- Fix Aul Bloodline Aura nodes always applying (LocalIdentity)
- Fix Everlasting Sacrifice not showing the config from the Chaos Ascendancy (Wires77)
- Fix Intuitive Leap, Thread of Hope and Impossible Escape not working (n1tr0xs)
- Fix legacy Curse cluster not appearing on tree sometimes (LocalIdentity)
- Fix Overexertion and Echoes of Creation counting duplicate Warcries (LocalIdentity)
- Fix Chaos Inoculation not disabling Righteous Fire Buff and Degen (LocalIdentity)
--- Accuracy Improvements ---
- Fix Burning Ground from Replica Siegebreaker not working (pabgarbar)
--- Other changes ---
- Fix broken header images on Linux (ZereoX)
Monsters lost the % more damage multiplier on a lot of skills that converted damage. To make up for this, they now gain a % more damage bonus to the elemental damage that has been converted from physical
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
* Export Foulborn unique mods and mapping
* Sort mods
* Remove Foulborn mods
* Export mod description, not id
* Colorize and import mutated mods
* Indent with tabs
We had not processed player charges before calculating aura affect so the max charges value was defaulting to 0. We now run the charges first pass before the aura's and buffs are calculated
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
* Export dat files
* Export Graft mods
Had to modify the `loadStatFile` to be able to load the graft stat description file
* Export Graft bases
Need to have an empty unique file otherwise it causes a crash
* Add graft to item crafter and import from character
---------
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
The count for the number of Warcries exerting a skill was not counting the number of unique warcries but instead the number of warcries in the build. We now make a list of warcries that are affecting the skill and don't add a count to the multiplier if the buff has already been counted once
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
The calc was not using globalOutput for the Speed values so was incorrect in a number of calcs
Co-authored-by: LocalIdentity <localidentity2@gmail.com>
The list was using the gemInstance of the top gem whenever you hovered over any of the gems to it never updated.
Used the same method as in PoB 2 with a slight difference to handle gem quality
Co-authored-by: LocalIdentity <localidentity2@gmail.com>