From ab58d3d1eea44633d0f1ae23c9cd185435efeacc Mon Sep 17 00:00:00 2001 From: ephphatha Date: Mon, 5 Jul 2021 22:58:31 +1000 Subject: [PATCH] Reorder AddBeserk damage range adjustment calculations This avoids forcing floating point conversions, the operation can safely be expressed as integral operations given the range of GenerateRnd and the types chosen for MonsterStruct::m*Damage* --- Source/missiles.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 11c2cb199..30d44ecd0 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1347,12 +1347,12 @@ void AddBerserk(int mi, Point /*src*/, Point dst, int /*midir*/, int8_t /*mienem continue; i = 6; - auto slvl = static_cast(GetSpellLevel(id, SPL_BERSERK)); + auto slvl = GetSpellLevel(id, SPL_BERSERK); monster[dm]._mFlags |= MFLAG_BERSERK | MFLAG_GOLEM; - monster[dm].mMinDamage = ((double)(GenerateRnd(10) + 20) / 100 + 1) * (double)monster[dm].mMinDamage + slvl; - monster[dm].mMaxDamage = ((double)(GenerateRnd(10) + 20) / 100 + 1) * (double)monster[dm].mMaxDamage + slvl; - monster[dm].mMinDamage2 = ((double)(GenerateRnd(10) + 20) / 100 + 1) * (double)monster[dm].mMinDamage2 + slvl; - monster[dm].mMaxDamage2 = ((double)(GenerateRnd(10) + 20) / 100 + 1) * (double)monster[dm].mMaxDamage2 + slvl; + monster[dm].mMinDamage = (GenerateRnd(10) + 120) * monster[dm].mMinDamage / 100 + slvl; + monster[dm].mMaxDamage = (GenerateRnd(10) + 120) * monster[dm].mMaxDamage / 100 + slvl; + monster[dm].mMinDamage2 = (GenerateRnd(10) + 120) * monster[dm].mMinDamage2 / 100 + slvl; + monster[dm].mMaxDamage2 = (GenerateRnd(10) + 120) * monster[dm].mMaxDamage2 / 100 + slvl; int r = (currlevel < 17 || currlevel > 20) ? 3 : 9; monster[dm].mlid = AddLight(monster[dm].position.tile, r); UseMana(id, SPL_BERSERK);