From bc2c13e8ef67e5283c74e8ca2068292da6c6c97c Mon Sep 17 00:00:00 2001 From: k-bar <92504151+k-bar@users.noreply.github.com> Date: Mon, 30 May 2022 04:27:53 +0200 Subject: [PATCH] fix for monster melee hit monster (#4617) --- Source/monster.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index 38c6e8775..98964ea57 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1291,21 +1291,23 @@ void MonsterAttackMonster(int i, int mid, int hper, int mind, int maxd) auto &monster = Monsters[mid]; assert(monster.MType != nullptr); - if (!monster.IsPossibleToHit()) { - int hit = GenerateRnd(100); - if (monster._mmode == MonsterMode::Petrified) - hit = 0; - if (monster.TryLiftGargoyle()) - return; - if (hit < hper) { - int dam = (mind + GenerateRnd(maxd - mind + 1)) << 6; - monster._mhitpoints -= dam; - if (monster._mhitpoints >> 6 <= 0) { - StartDeathFromMonster(i, mid); - } else { - MonsterHitMonster(mid, i, dam); - } - } + if (!monster.IsPossibleToHit()) + return; + + int hit = GenerateRnd(100); + if (monster._mmode == MonsterMode::Petrified) + hit = 0; + if (monster.TryLiftGargoyle()) + return; + if (hit >= hper) + return; + + int dam = (mind + GenerateRnd(maxd - mind + 1)) << 6; + monster._mhitpoints -= dam; + if (monster._mhitpoints >> 6 <= 0) { + StartDeathFromMonster(i, mid); + } else { + MonsterHitMonster(mid, i, dam); } }