Defence conversion: rates above 100% aren't scaled down, and a second target reduces the source base twice
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- Lua
- Estrelas
- 1.9k
- Forks
- 469
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de PathOfBuildingCommunity/PathOfBuilding-PoE2
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 80/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#2156 · 1 comentário ·
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
PathOfBuildingCommunity/PathOfBuilding-PoE2#1857 · 2 comentários · 1 reação ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 56/100
-
Items on crafted bases missing from Data/Bases (e.g. Runemastered Long Quarterstaff) are silently droppedTalvez já em andamento @vaisest assumiu há 3 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
Todas as issues de PathOfBuildingCommunity/PathOfBuilding-PoE2
Issues semelhantes
-
bug forever
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
openmap-world/openmap#45 ·
Mantenedores costumam responder em até 1 dia
-
web
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
Good First Issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia
-
Deleting an active group/tab leaves view on deleted group and categories missing until redrawAbertabug triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Cidan/BetterBags#1265 ·
Mantenedores costumam responder em até 1 dia
-
Data lead: beatfeverAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
reacher-z/Awesome-REA#3601 ·
Mantenedores costumam responder em até 1 dia