Cast to long to avoid overflow when multiplying by the health (part 2)

This commit is contained in:
Arular101
2018-01-10 18:12:37 +01:00
committed by reaperrr
parent 30acee38c9
commit 24b7f7a23f
6 changed files with 17 additions and 7 deletions

View File

@@ -69,7 +69,8 @@ namespace OpenRA.Mods.Common.Traits
if (totalTiles == 0)
return;
damageThreshold = (Info.DamageThreshold * health.MaxHP + (100 - Info.DamageThreshold) * safeTiles * health.MaxHP / totalTiles) / 100;
// Cast to long to avoid overflow when multiplying by the health
damageThreshold = (int)((Info.DamageThreshold * (long)health.MaxHP + (100 - Info.DamageThreshold) * safeTiles * (long)health.MaxHP / totalTiles) / 100);
// Actors start with maximum damage applied
var delta = health.HP - damageThreshold;