Cast to long to avoid overflow when multiplying by the health

This commit is contained in:
Arular101
2018-01-04 00:23:40 +01:00
committed by reaperrr
parent 32b0170785
commit 30acee38c9
9 changed files with 38 additions and 19 deletions

View File

@@ -60,8 +60,9 @@ namespace OpenRA.Mods.Common.Traits
var dudesValue = info.ValuePercent * cost / 100;
if (health != null)
{
if (100 * health.HP >= info.MinHpPercent * health.MaxHP)
dudesValue = health.HP * dudesValue / health.MaxHP;
// Cast to long to avoid overflow when multiplying by the health
if (100L * health.HP >= info.MinHpPercent * (long)health.MaxHP)
dudesValue = (int)((long)health.HP * dudesValue / health.MaxHP);
else
dudesValue = 0;
}