Defence conversion: rates above 100% aren't scaled down, and a second target reduces the source base twice
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Lua
- Estrellas
- 1.9k
- Forks
- 461
- Merge medio
- 1 h 2 min
- PR fusionados (30 d)
- 1
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de PathOfBuildingCommunity/PathOfBuilding-PoE2
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#2560 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#2156 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#1857 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Quality from Shrine Sceptre doesn't apply to the Purity of... skillPosiblemente ocupada @lyy26299 la tomó hace 2 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#2575 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 66/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#2573 ·
Los mantenedores suelen responder en 1 día
Todos los issues de PathOfBuildingCommunity/PathOfBuilding-PoE2
Issues similares
-
examples/dnsdoctor: cleanup.sh stops at the first missing piece of a setup.sh that did not finishAbiertoseverity: low
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
luainkernel/lunatik#2263 ·
Los mantenedores suelen responder en 1 día
-
Nmap
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Renaming a folder corrupts History and Collections paths (prefix match without a "/" boundary)Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
koreader/koreader#16351 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100