fixed bug with cutting through laser emitter in special cases in MM engine
authorHolger Schemel <info@artsoft.org>
Wed, 18 Jan 2023 17:51:54 +0000 (18:51 +0100)
committerHolger Schemel <info@artsoft.org>
Wed, 18 Jan 2023 17:56:17 +0000 (18:56 +0100)
While the laser beam can be pointed at the middle of the laser emitter
element, and also can slightly touch it at its very edges, it should
not be possible to cut through it nearer to the middle, but without
really hitting the middle of the laser emitter.

src/game_mm/mm_game.c

index 48bc9a5b875724b6d3cd4e2190b32c17e5fb222f..bb027cd06f3e33d32271e283fa0941f9fec3cd7e 100644 (file)
@@ -1473,6 +1473,10 @@ boolean HitElement(int element, int hit_mask)
   // this is more precise: check if laser would go through the center
   if ((ELX * TILEX + 14 - LX) * YS != (ELY * TILEY + 14 - LY) * XS)
   {
+    // prevent cutting through laser emitter with laser beam
+    if (IS_LASER(element))
+      return TRUE;
+
     // skip the whole element before continuing the scan
     do
     {