fixed bug with laser not passing alongside DF steel walls in MM engine
authorHolger Schemel <info@artsoft.org>
Wed, 18 Jan 2023 17:43:26 +0000 (18:43 +0100)
committerHolger Schemel <info@artsoft.org>
Wed, 18 Jan 2023 17:46:52 +0000 (18:46 +0100)
This bug only happened in certain special cases where the laser beam
had already touched a tile with DF style steel walls (from a side or
an angle where it cannot pass) and later touching the same tile again
from a different side or angle where it can pass (but without having
touched another DF steel wall on any other tile in between).

src/game_mm/mm_game.c

index 45c65634a9985556c75420f04edc463ead080198..48bc9a5b875724b6d3cd4e2190b32c17e5fb222f 100644 (file)
@@ -1120,6 +1120,14 @@ void ScanLaser(void)
     if (rf)
       DrawLaser(rf - 1, DL_LASER_ENABLED);
     rf = laser.num_edges;
+
+    if (!IS_DF_WALL_STEEL(element))
+    {
+      // only used for scanning DF steel walls; reset for all other elements
+      last_LX = 0;
+      last_LY = 0;
+      last_hit_mask = 0;
+    }
   }
 
 #if 0