fixed bugs with wrong X/Y access in element mask in MM engine
authorHolger Schemel <info@artsoft.org>
Fri, 19 May 2023 13:27:29 +0000 (15:27 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 19 May 2023 13:27:29 +0000 (15:27 +0200)
src/game_mm/mm_game.c

index 46f914de964302cd2f31fae73d811cdc1a99b7b2..bc72f5bd43c2169505ae7eaae1a1827c3437856e 100644 (file)
@@ -1708,8 +1708,8 @@ static boolean HitElement(int element, int hit_mask)
       int pos = getMaskFromElement(element);
 
       // check if we are entering empty space area after hitting edge
-      if (mm_masks[pos][dx1 / 2][dy1 / 2] != 'X' &&
-         mm_masks[pos][dx2 / 2][dy2 / 2] != 'X')
+      if (mm_masks[pos][dy1 / 2][dx1 / 2] != 'X' &&
+         mm_masks[pos][dy2 / 2][dx2 / 2] != 'X')
       {
        // we already know that we hit an edge, but use this function to go on
        if (HitOnlyAnEdge(hit_mask))
@@ -1998,7 +1998,7 @@ static boolean HitElement(int element, int hit_mask)
          {
            int pos = getMaskFromElement(element_side);
 
-           if (mm_masks[pos][dx / 2][dy / 2] == 'X')
+           if (mm_masks[pos][dy / 2][dx / 2] == 'X')
              laser.overloaded = TRUE;
          }
        }