Defence conversion: rates above 100% aren't scaled down, and a second target reduces the source base twice
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Start in src/Modules/CalcDefence.lua, around the conversion scaling loop and the per-target base reduction described in the issue. Trace how conversion and gain-as rates are applied to each source, then run the relevant defence calculation tests and compare both reported builds. Done means rates above 100% are proportionally scaled and adding a gain-as target does not reduce the source base twice; linked PR #2572 indicates work is already underway.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Check version
- I'm running the latest version of Path of Building and I've verified this by checking the changelog
Check for duplicates
- I've checked for duplicate open and closed issues by using the search function of the issue tracker
Check for support
- I've checked that the calculation is supposed to be supported. If it isn't please open a feature request instead (Red text is a feature request).
What platform are you running Path of Building on?
Windows
What is the value from the calculation in-game?
Two conversion rules, both already intended by PoB's conversion code:
- When a source's conversions total more than 100%, each rate is scaled by 100/total. PoB clamps the total to 100 and has a loop to rescale the rates.
- A "gain as" rate does not reduce the source. Adding "Gain 20% of maximum Energy Shield as extra Armour" should not change the Energy Shield you keep or the Mana converted from it.
Expected values for the two attached builds (Custom Modifiers only):
- Build A: 50% of Maximum Life Converted to Energy Shield, plus "Convert 1% of maximum Life to twice as much Armour per 1% Chaos Resistance above 0%" at 75% Chaos Resistance, for 125% in total. The rates scale to 40% and 60%, giving Energy Shield 25 and Armour 84 (60% converted + 75% gained).
- Build B: Tattered Robe with 128 Energy Shield, "Convert 40% of maximum Energy Shield to maximum Mana" and "Gain 20% of maximum Energy Shield as extra Armour". Expected Energy Shield 77, Armour 26, Mana 104, the same Energy Shield and Mana as with the Mana conversion alone.
What is the value from the calculation in Path of Building?
- Build A: Energy Shield 31 and Armour 93. The rates are not scaled, so 125% of Life is handed out while Life drops to 1.
- Build B: Energy Shield 46 and Mana 83. The body armour's Energy Shield is reduced twice (36% kept instead of 60%), and the Mana conversion takes its 40% from the already reduced amount.
Cause (src/Modules/CalcDefence.lua on dev bb52d6b):
- Line 1375,
for name, val in ipairs(source.conversionRate) do.conversionRateis keyed by target name, soipairsnever iterates and the rates are never scaled down. - Line 1413,
source.basePerSlot[slot] = source.basePerSlot[slot] * (100 - source.totalConversion) / 100. This runs inside the per-target loop, so every target with a non-zero rate (conversion or gain-as) reduces the slot base again, and later targets take their share from the reduced base. This also happens when the total is below 100%.
The in-game combinations that reach these paths are uncommon, so both builds use Custom Modifiers. I'll open a PR with a fix and regression tests.
How to reproduce the issue
- Import Build A. The Calcs tab shows Energy Shield 31 and Armour 93. Removing either conversion line leaves the other's value unchanged, so nothing is scaled.
- Import Build B. The Calcs tab shows Energy Shield 46 and Mana 83. Removing the "Gain 20% of maximum Energy Shield as extra Armour" line gives Energy Shield 77 and Mana 104.
PoB for PoE2 build code
Build A:
eNqtW1tz4joSfs78Cpe3ztPWhEBCMjlF5hQBcqlKMixkZnafphS7AW1kySXJJJxff6ol34CYSGSeMFJ_3a3WpS-ye3-9JixYglRU8IuwfXgUBsAjEVM-vwi_P159_hL-9fVTb0z04tvsMqMMezpfPx30zJ-AqAh4PGBEqQeSwEX4IDiEQbQgkkQa5B0sgfUzLe5FDBehlhn2VuQTwucgw4Ah3UXYDoOEUD4V0TPoaymy1LRpIuegfxRqHv1qh8GSwotl-jgZjcKvnw4OemNGViCnmuhAaaIvwv4SJJnDkCRkDmGwJCyDi_DosNNpn3w5OT7rhq2dwMtMKu2PnqYAcQloH542Uo4ljGYziDRdwkBSPVgQHlWyGnFv0LYPOzvJ7zOmacoomjuHdJrob7a4N_N-FJqw4XhaM9Dxaffk5LzT_nL2DkroCtVE-ZPqxSUDiL1lIPJ2zqmGvaBjQZXge49sDdg4MRljlM-daCegQC6JphtKNfIWyRPle9jtnnAyEMphbpByDDICrr0AU4gEj71leCLv6AzcKb3GkQN8tdlvHKOpK5034_0U-kmkB6WXYXOAjzYTMnec5qnImCOlrk7JsyaiIbxWp2_jbrrl2oXVUuDGfl-zR0mfMg0OhHgOjW7GlYqdw7Pzbvfk5OSs3T390uiSFitFI8LuyStNsuSG6kfyDJVmx-fNK3y-0JzyeRO0026CXlEJ_qiBYPEeqAURqgl2etp8DlF-Q3jcj6JMkmhVQs4bp2BI5DMHpVzPdojdEdOUSlqtrPbRO5Tfucxl7IPJ97ALFM-5im5HiBT9iaS3PHo_3EHCtwawi34CkcAo7omBG2Dv0U5gDjwXt3JzBHcA0eKaUD4hLnsZfWBlpaOdRkXaulF3Mn3DqF1HgIeREPi2kTq7IJ5GGnGQ89V0QYFVozluu5AXeg1I6oA0Zq7Dncy9Ls9rxdShnkZBf-pG5akTel3fYSyJqvu4s90GttRutl2SGDYylubVCAzACzGW4v-YozE_2DQFxvwRe0obwowhTODKoHzujHAV0JeJyKqw6Px45_RZaqfZKyIOm2hPIM6itVioeQsXqfMlE9Gz6zhKlLG2F7SvNYmehyKe-02pF2Jdv2mWphIUbgVXBhhMTUDRWqD7uetA_W0Jsn4CHu2Ku9wFVNTOAspI0l3KBsR9LBgNbohpTo1r1M4Syvm8F0tIgGtTHroXDnHMGJ0tj2BCYpqpe9ASqtDwpHFGM8acKgSG0LFSMRYvIAcLrMQpP-p7UqVJjWfGlQT-98qZ_xq5k4ARjzOJ-8dZxibiLTGX2WymgqdsNrujSl-EYRCJ5Ino8l8mFeR_LOKRJsBAqSHRJIjztO8HkZRw3TbVzo3GjmlUQGS0KNhW_64IY08kes7591qmLotPA8IiZUTe8jTTATcF14Sq6Bfqi7XTMFBamlLv6OpqNHi8_THKtaxD1DNl7BfPkicsHdrfas1Orc8JIsEYSRXEF-GMMAVhQOOLcIrYKaCbCQOVPSlLfRH-oPBiOoegCWXKidsNLYuxdV6GT9XnwuknkZGkuArqjEZJiusWYlwFbiqZEuaWMlYTDItwut0sZWvGdVbW2wyI0ibWc-EyMDlhnQm2uA3lNkkJ2zBt3uY81Y-rFKzxto2iVymoFCI6o5G7gWul6DXbFFm4Cw9TPl7H2yYXsC0Dr6PzNiermgL0hlVtm9P6gois1tG2yQVc5grrDMpmwW-oduI0YtCnDJ3Xxsw-CG4WO-XzksCF4T1VkXWMGwy_6QXIoseFU19rWxJTW7unaHeylSlbrJkJW5zGYrLzOtS0uO16urVj8zanaVlLedeOsnqP44m4wWKScRqZZhd8EUKtcTBtjtOYZxdrU2jbnCxR5JZrRsgbnTaaObL7S0Hj7dNms_PDDE3W8Rv0wrziN7ApU0cnXleMqOeN3Za3NcLtzW8T-rumjOrVx5jgfv0YB9y2H-OAoWLihJ5shTGTncFLhSwD2E3Bc1B748tgd28ONiTfG24yBmfXMYQZ5kVv-Y6y62O8pjrjw0yS3buiGtQ7WjmcHe68rKP1Gqjd__ldx_bRZjs-zojy-Y1rvNnIqUyYb4AwvIcX7GMMNy97HKagkReWO7OU8Ljg9s0nym-2ntCK8Nhkb0Msq6oPaTnikKxqfHqtIh3sDQSf0XlA7Dsn5s8UNCZ0Rl7ZYgTYxvV8MMqUFsm9iFWVP3aP_gjELMgNHeBRHAwEX4LUEAdaBDYeCWxA8invCtoGldRRWgT6hUYQEBUkWbQIbBAQpCCR3BRgAhtY4HYKyJNYQnD0x6d_n3X_QPQmhbWjye8jWAgWg8wHMlhgcoo5ltrKa9-in0ZCRgsfwEJEzx70eOdNcQIHQsosxSruQK6mmpjTsmRw1MwhhkTwKyGTLak7QICLpYi_CsCXo9PjdyDG0kVCXuCOv5y6wIpwsYC9px4WETdFnRfvVe1EjXFvlNo5ADZV676rW-1lrBLkgNkynYsgLJT_BGJuiTcnufMeg7zCLhgzL95VyLN3kcVuchdWhuTlGmyfvWcWLEb7TzOivKa5XiF3nmbzLmNtg3Teoy8q0v4DKqFeo9qqmjsPbf0GxkfTvGxVraMdopLyDcRBJiVwvZ6-VkeVE48hnc0AufSTROCExk5n7BsMriVwEsM-PDBK5ID3x8A1W3miTRVy9V3tz4BiPGjqldHzQGRcT4HNakx2TJ-ic8q-zUzcveViCtig8PV0RkGarDUAju9UlHGIppqBySFJxrSNFw4MuPUG2sQYrTLIsKGJ-YePt0kqpA7gFX_GROpVGT1lCq6BgyQa4lsNySO86lwFE-Bgm8qjGnzOY5pALcQLVhuL2Y5AFZpnCux7Zj-BpIIbBKfMxkE5jzwK2hzlTuxBb8qEDqiG5DZG12Yex0_fJ3dYvLfmt7igtLQHJJi-kNQf19kD4ivqBlgC2gNwKeJVUK_zOKGumVgWiY-jGKF96PtJxrzGMaF87jWZBtDxBRz7jBmYzwhM6cJrCBbR8Ub4DMIUWby0sggfrfqe4-57jvoO_JYG0pf8JxkHg5EZh_o3FooJ_VDbdAFSBv9qewBrm--3oH2Utlt4L7FCb-B6rfy0Nu7EeAJ8ehAazA0othZ_esatBNOFeOnHSwxpH4VgqvQzJE2BV0l7DEpTTvJ6NLOFiJ65zyq8TX7HqfPLW-MgriG5s5-0cCGT8mXaev9_MoI1T-s2jJu6gzmJVteQVNoY75Wl6A6vIcHbNXUR9u_uwkDZJnW5Go6nhUdba7zCsGr9MwBbUcj1zV2bLQ_YEeHjowQoRpZCVBYG8E_9e598_doWwqPVLdcgOWHYkX_kg4-d4rnW3cHvfJQGucpvesziFzGOrnt00j3HK270rkSu-usijbW0BKh9DtTN3e73yZ0NPxZap-rPVuvl5eUwJXohZvBKGRxGImmlRCm6hM_mWvszcmr1-_3-5fwWf_o2cik49eynSCpfnljrkTS2q-rgoFfeMRUdQQyvD3YcYUC5Lp-VlsVzzqu1xqzXQvuaqcAJKCYCr8nz2_6ploZRczzztxDFqju2__5rpgif_pen2L3W1rdc_wAeF4mE
Build B:
eNqtW1tz6jgSfk5-hctb-7R1QiD3U2SmCJCEqiSHgeSc3acpxW5AG1nySjIJ8-u3WrKNgRgkMk_YUn_drdalLzLt3z8SFsxBKir4ddg8Og4D4JGIKZ9ehy_Pt98uw99_O2wPiZ79mNxklGFP67fDg7Z5CYiKgMddRpR6Iglch0-CQxhEMyJJpEE-wBxYJ9PiUcRwHWqZYe-SfET4FGQYMKS7DpthkBDKxyJ6A30nRZaaNk3kFPTPQs3jP5thMKfwbpk-j_r98LfDg4P2kJEFyLEmOlCa6OuwMwdJptAjCZlCGMwJy-A6PD5qtZqnl6cnF2dhYyvwJpNK-6PHKUBcAppH57WUQwn9yQQiTefQlVR3Z4RHS1m1uE9om0etreSPGdM0ZRTNnUNadfT3G9zreT8LTVhvOK4Y6OT87PT0qtW8vNiBEnqJqqP8RfXshgHE3jIQOZhyqmEv6FBQJfjeI1sB1k5MxhjlUyfaESiQc6LpmlK1vEXySvkednsknHSFcpgbpByCjIBrL8AYIsFjbxmeyAc6AXdKr3HkAF9t9htHf-xK5814P4V-EelB6WXYHOCjzYhMHad5LDLmSKmXp-RFHVEPPpanb-1uGnDtwmoucGPv1uxZ0tdMgwMhnkP9-2FJeX56dH520Tq7uji9uDy9qnVJs4WiEWGP5IMmWXJP9TN5g6VmzeZJ_RKfzjSnfFqHvTitg95SCf6ormDxHqgZEaoOdnlZfxBRfk943ImiTJJoUUKuauegR-QbB6VcD3eI3RHjlEq6XFrN4x2UL1zmMvbB5JvYBYoH3XLRbQuSou9IO-DR7oAHCT8ZwflWwAgigYHcKwNHxN4DHsEUeC5v4eYMHgCi2R2hfERc9jP6weUqPdlqVqStmnUr00_MWs9-FeBhJAR-bqSTo63SPM3U5yCni_GMAluO5_TchbzQrEtSB6QxdBXuZPBVeV5rpgr1NAp6VTcqT53Q9_oOY05U1dNdbDewpXaz7ZzEsJa31K9HYABeiKEU_8VMjfnBxikw5o_YU1oPJgxhAlcG5VNnhKuAjkxEVkkht-8PS-00e0XcYdPtEcRZ5BYRlQn0DRPRm-s4SpSxthe0ozWJ3noinvpNqRdiVb9xlqYSFG4FVwYYUY1A0Uq4--3MgfrHHGT1BDzeFny5C1hSOwsow0l3KWsQ97FgSLgmxoXYWUA5nY9iDglwbWpEj6JyLB9dXWwpEyngEYxITDP1CFrCMkKsj6kzxpwqBYbQsWIxFO8guzOsyCk_6keyTJdqPf6tBP7Xwpn_CrmTgD6PM4k7yFnGOuIzMTfZZKKC12wyeaBKX4dhEInklejyLZMK8heLeKYJMFCqRzQJ4jz9-0kkJVw3TdVzrbFlGhUQGc0Ktsu3W8LYK4necv7thqnP4lOXsEgZkQOeZjrgpvCaUBX9ifpiDTUMlJam5Nu_ve13nwc_-7mWVYh6o4z9ybPkFUuI9hd1spRj63WCSDBGUgXxdTghTEEY0Pg6HCN2DOhowkBlr8pSX4c_Kbybzh5oQply4nZPy6JslZfhs-xz4fSLyEhSXAVVRv0kxXULMa4CN5VMKXNDGasJBkY43W6WsrXjKivrb7pEaRPtuXDpmtSwygRb3IYySFLC1kybtzlP9fMiBWu8TaPoRQoqhYhOaORu4EpJesU2RTLuwsOUkVfxtskFbMvBq-i8zcmqphC9ZlXb5rS-ICKLVbRtcgGX2cIqg7JZ8HuqnTj1GXQoQ_-1NrNPgpvFTvm0JHBh-EhVZH3jGsMfegay6HHh1NHalsbUxu4p2p1sZaoXK2bCFqexmAy9CjUtbruebuzYvM1pWlaS3pWjrNrjeCKusRhlnEam2QVfBFErHEyb4zTm-cXKFNo2J0sU2eWKEfJGp41mjuzOXNB487RZ7_wyQ5N3_A16YWbxN7Apk0cnXreMqLe13Za31cLtDXAd-kVTRvXia0xwv36NA27br3HAUDFxQo82wpjR1uBliSwD2HXBU1B748tgd28ONiTfG24yBmfX0YMJ5kWf-Y6y62u8xjrjvUyS7btiOagdWjmcHe68rKP1Gqjd__mVx-bRZju-zojy6b1rvFnLqcyZ74EwvI8X7GsM1-98HKaglhcWPLOU8Ljg9sMnyq-3ntCK8Nhkbz0srKovadnnkCwqfNqNIh1sdwWf0GlA7Lcn5mUMGhM6I69sMQJs42o-GGVKi-RRxGqZP3YFn4PUwenxPwMxCRJr8MBGIYENQwItyg48aQ8xBA1a2xBEBfChJQmqkYBJ1SOYCRaDzHXqzjDPxHRJbaSon9GPIyGjmQ9gJqI3D3q8xqY4F10hZZZiSbYrF2NNzMFXMjiu5xBDIvitkMmG1C0gwHkvQqkCcHl8frIDYkpbRW5d4E4uz11gReRXwHaphxXBdVFXxfXcVtQQl3mpnQNgXbWznbpVvq8qQQ6YDdO5CMKq9y8g5t53fZJbuxjk5XLBmPmWbom82ImkSq-OcKewMrou12DzYpdZsLLsP82I8prmarnbeZrN54mVDdLaRV-Ul_0HVEK9RrVRAnce2up1io-meQVquY62iErKjwq7mZTA9WomujyqnHj06GQCyKWTJAInNHY6Yz9hcCeBkxj24YEBHwe8DAau2cITbQqKixe1PwOKoZ0pPUZvXZFxPQY2qTDZMn2KTin7MTEh9IaLKWDdwm3TCQVpEtAAOH4jUYYUmmoGJh0kGdPW9R8YcOMTtAkXGmW8YKMM84aPgyQVUgfwgT9DIvWiDIQyBXfAQRIN8UBD8gwfOlfBxCrYpvIABZ_z8CRQM_GOhcNitiNQheaZAvvp2C8gqeAGwSmzIQ3yqEYzIyKpXnwPXp4Gf7z0D5_gPUCSw2eiNU5BMBKvcLgSiXwPmq3Lwz8ywgzy-NCcICP4Hz4PkpTRiGqFL_9qHh9XI50VNsaWjyI2R3auUiDxBe-Bii9UGqhNqfkyFFufn62jPmiPmdAB1ZAMYnTK5nH4-jJ6wBsEu3AsLijXiAckGL-T1B_X2gPiK-oeWAL6U0DzU8CNiBdrIaaDmDsm5kX25QS4EUL70HeSjNWM43PAiPKp12QaQMsXcOIzZmA-IzD1E68hWETLG-EzCFPp8dLKIny06niOu-M56gfwWxpIX_IfZRwMRmYcqn_4UEzop8qmC5Ay-EfTA1jZfH8L2kdpu4X3Eiv0Gs4e24UjND4Mn56EBnMNi63FS9s4xGA8E--deI7B-LMQTJUekqQp8GXlIAalKSd5UZzZakjbXKoVfjK_aNX5DbJxEHeQPNj_13Ahk_LL3mp_7tGs2zAO9gGmJFrcQbLUxvjdLEVHfgcJXvGp67Dz8BAGyjapm0VvOC588UrjLbq91f8k2LJGrm_u2myNwo4IH58lQDGyFKKyOoEv1T8f5evXthAeLQZcg-SEYUf-jyN8bBXPle4W_ulIaZCL_LrJLH4R4-jOjk_PrvCeHb0rkYvOqkhjLS0BKv9NOsvd7svowQZOM61T9b3ReH9_P0qJnokJfFAGR5FIGilRis7hm7lb_4acGp1Op3MzHeBPx8ZcBae2_V-UypcnFpwkje2qOjholxddRUcQw8eTHUcYUK7LZ6Vl8ZzzaqwwazfQvmYqcAKKicC7-vyTg7GWhlF9JPaXEMWqO7Fv_zZThE__yYsD7cbGH8v-D6XvsSc=
Screenshots
No response
- Vorherrschende Sprache
- Lua
- Sterne
- 1.9k
- Forks
- 461
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus PathOfBuildingCommunity/PathOfBuilding-PoE2
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 80/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#2156 · 1 Kommentar ·
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#1857 · 2 Kommentare · 1 Reaktion ·
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 45/100
-
Quality from Shrine Sceptre doesn't apply to the Purity of... skillEvtl. vergeben @lyy26299 hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 68/100
Alle Issues in PathOfBuildingCommunity/PathOfBuilding-PoE2
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 63/100
Balatro-Multiplayer/BalatroMultiplayerAPI#55 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
silverbulletmd/silverbullet#2231 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
vim.pack: version cannot match branches when git column.ui is setEvtl. vergeben @tanloong hat das heute übernommen. Offenpackages
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
neovim/neovim#42682 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag