diff --git a/Source/player.cpp b/Source/player.cpp index f89284ae0..406fd7907 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -2651,20 +2651,22 @@ bool PM_DoAttack(int pnum) || (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SWORD && player.InvBody[INVLOC_HAND_RIGHT]._iLoc == ILOC_TWOHAND)) && !(player.InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_SHIELD || player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD))))) { position = player.position.tile + right[player._pdir]; - dx = position.x; - dy = position.y; - int m = ((dMonster[dx][dy] > 0) ? dMonster[dx][dy] : -dMonster[dx][dy]) - 1; - auto &monster = Monsters[m]; - if (dMonster[dx][dy] != 0 && !CanTalkToMonst(monster) && monster.position.old.x == dx && monster.position.old.y == dy) { - if (PlrHitMonst(-pnum, m)) - didhit = true; + if (dMonster[position.x][position.y] != 0) { + int m = abs(dMonster[position.x][position.y]) - 1; + auto &monster = Monsters[m]; + if (!CanTalkToMonst(monster) && monster.position.old == position) { + if (PlrHitMonst(-pnum, m)) + didhit = true; + } } position = player.position.tile + left[player._pdir]; - dx = position.x; - dy = position.y; - if (dMonster[dx][dy] != 0 && !CanTalkToMonst(monster) && monster.position.old.x == dx && monster.position.old.y == dy) { - if (PlrHitMonst(-pnum, m)) - didhit = true; + if (dMonster[position.x][position.y] != 0) { + int m = abs(dMonster[position.x][position.y]) - 1; + auto &monster = Monsters[m]; + if (!CanTalkToMonst(monster) && monster.position.old == position) { + if (PlrHitMonst(-pnum, m)) + didhit = true; + } } }