[Scummvm-git-logs] scummvm master -> baabbeb8d908de16cb7aec783a7f84cf71f88852

neuromancer noreply at scummvm.org
Sat Feb 26 17:58:20 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
baabbeb8d9 HYPNO: implemented command to avoid certain enemy sounds in wet and removed some extra spaces in grammar files


Commit: baabbeb8d908de16cb7aec783a7f84cf71f88852
    https://github.com/scummvm/scummvm/commit/baabbeb8d908de16cb7aec783a7f84cf71f88852
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-26T18:58:30+01:00

Commit Message:
HYPNO: implemented command to avoid certain enemy sounds in wet and removed some extra spaces in grammar files

Changed paths:
    engines/hypno/arcade.cpp
    engines/hypno/grammar.h
    engines/hypno/grammar_arc.cpp
    engines/hypno/grammar_arc.y


diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index c99d6bd53be..96fc520b9b7 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -392,7 +392,8 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
 							s.lastFrame = s.bodyFrames[s.bodyFrames.size() - 1].lastFrame();
 							loadPalette(s.video->decoder->getPalette() + 3*s.paletteOffset, s.paletteOffset, s.paletteSize);
 							_shoots.push_back(s);
-							playSound(_soundPath + arc->enemySound, 1);
+							if (!s.noEnemySound)
+								playSound(_soundPath + arc->enemySound, 1);
 						}
 					}
 				}
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index 810ed975dc0..6fc6e3e1d88 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -63,7 +63,7 @@ enum HotspotType {
 
 enum ActionType {
 	MiceAction,
-	TimerAction,	
+	TimerAction,
 	PaletteAction,
 	BackgroundAction,
 	OverlayAction,
@@ -382,6 +382,7 @@ public:
 		animation = "NONE";
 		explosionAnimation = "";
 		lastFrame = 1024;
+		noEnemySound = false;
 	}
 	Common::String name;
 	Filename animation;
@@ -413,6 +414,7 @@ public:
 	uint32 lastFrame;
 	Filename explosionAnimation;
 	bool destroyed;
+	bool noEnemySound;
 };
 
 typedef Common::Array<Shoot> Shoots;
@@ -530,7 +532,7 @@ public:
 		frameNumber = 0;
 		frameImage = "";
 	}
-	
+
 	Transition(Common::String easy, Common::String hard)  {
 		type = TransitionLevel;
 		levelEasy = easy;
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 07c73c13bc1..20508c5b481 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -584,7 +584,7 @@ static const yytype_int16 yyrline[] =
      299,   303,   307,   311,   315,   319,   323,   327,   331,   335,
      339,   343,   347,   351,   355,   358,   362,   367,   371,   376,
      381,   385,   391,   392,   395,   396,   399,   403,   406,   413,
-     414
+     416
 };
 #endif
 
@@ -1251,7 +1251,7 @@ yyreduce:
   case 8: /* hline: CTOK NUM  */
 #line 87 "engines/hypno/grammar_arc.y"
                  {
-		g_parsedArc->id = (yyvsp[0].i); 
+		g_parsedArc->id = (yyvsp[0].i);
 		HYPNO_ARC_default_sound_rate = 0;
 		debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
 #line 1258 "engines/hypno/grammar_arc.cpp"
@@ -1259,7 +1259,7 @@ yyreduce:
 
   case 9: /* hline: FTOK NUM  */
 #line 91 "engines/hypno/grammar_arc.y"
-                   { 
+                   {
 		HYPNO_ARC_default_sound_rate = (yyvsp[0].i);
 		debugC(1, kHypnoDebugParser, "F %d", (yyvsp[0].i));
 	}
@@ -1268,7 +1268,7 @@ yyreduce:
 
   case 10: /* hline: DTOK NUM  */
 #line 95 "engines/hypno/grammar_arc.y"
-                    { 
+                    {
 		g_parsedArc->frameDelay = (yyvsp[0].i);
 		debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
 	}
@@ -1311,14 +1311,14 @@ yyreduce:
 
   case 16: /* hline: ONTOK NUM NUM  */
 #line 108 "engines/hypno/grammar_arc.y"
-                        { 
+                        {
 		if (Common::String("O0") == (yyvsp[-2].s)) {
 			g_parsedArc->objKillsRequired[0] = (yyvsp[-1].i);
 			g_parsedArc->objMissesAllowed[0] = (yyvsp[0].i);
 		} else if (Common::String("O1") == (yyvsp[-2].s)) {
 			g_parsedArc->objKillsRequired[1] = (yyvsp[-1].i);
 			g_parsedArc->objMissesAllowed[1] = (yyvsp[0].i);
-		} else 
+		} else
 			error("Invalid objective: '%s'", (yyvsp[-2].s));
 		debugC(1, kHypnoDebugParser, "ON %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
 #line 1325 "engines/hypno/grammar_arc.cpp"
@@ -1326,12 +1326,12 @@ yyreduce:
 
   case 17: /* hline: ONTOK NUM  */
 #line 118 "engines/hypno/grammar_arc.y"
-                    { 
+                    {
 		if (Common::String("O0") == (yyvsp[-1].s)) {
 			g_parsedArc->objKillsRequired[0] = (yyvsp[0].i);
 		} else if (Common::String("O1") == (yyvsp[-1].s)) {
 			g_parsedArc->objKillsRequired[1] = (yyvsp[0].i);
-		} else 
+		} else
 			error("Invalid objective: '%s'", (yyvsp[-1].s));
 		debugC(1, kHypnoDebugParser, "ON %d", (yyvsp[0].i));
 	}
@@ -1344,17 +1344,17 @@ yyreduce:
 		g_parsedArc->transitionVideo = (yyvsp[-2].s);
 		g_parsedArc->transitionTime = (yyvsp[-1].i);
 		g_parsedArc->transitionPalette = (yyvsp[0].s);
-		debugC(1, kHypnoDebugParser, "Tp %s %d %s", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].s)); 
+		debugC(1, kHypnoDebugParser, "Tp %s %d %s", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].s));
 	}
 #line 1350 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 19: /* hline: TTOK FILENAME NUM  */
 #line 133 "engines/hypno/grammar_arc.y"
-                            { 
+                            {
 		g_parsedArc->transitionVideo = (yyvsp[-1].s);
 		g_parsedArc->transitionTime = (yyvsp[0].i);
-		debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
 	}
 #line 1360 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1367,18 +1367,18 @@ yyreduce:
 
   case 21: /* hline: NTOK FILENAME  */
 #line 139 "engines/hypno/grammar_arc.y"
-                         { 
-		g_parsedArc->backgroundVideo = (yyvsp[0].s); 
-		debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s)); 
+                         {
+		g_parsedArc->backgroundVideo = (yyvsp[0].s);
+		debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
 	}
 #line 1375 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 22: /* hline: NSTOK FILENAME  */
 #line 143 "engines/hypno/grammar_arc.y"
-                          { 
-		g_parsedArc->backgroundVideo = (yyvsp[0].s); 
-		debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s)); 
+                          {
+		g_parsedArc->backgroundVideo = (yyvsp[0].s);
+		debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
 	}
 #line 1384 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1386,24 +1386,24 @@ yyreduce:
   case 23: /* hline: RTOK FILENAME  */
 #line 147 "engines/hypno/grammar_arc.y"
                          {
-		g_parsedArc->backgroundPalette = (yyvsp[0].s); 
+		g_parsedArc->backgroundPalette = (yyvsp[0].s);
 		debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
 #line 1392 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 24: /* hline: ITOK FILENAME  */
 #line 150 "engines/hypno/grammar_arc.y"
-                        { 
-		g_parsedArc->player = (yyvsp[0].s); 
-		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s)); 
+                        {
+		g_parsedArc->player = (yyvsp[0].s);
+		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
 	}
 #line 1401 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 25: /* hline: I1TOK FILENAME  */
 #line 154 "engines/hypno/grammar_arc.y"
-                         { 
-		debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s)); 
+                         {
+		debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
 	}
 #line 1409 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1419,7 +1419,7 @@ yyreduce:
                          {
 		if (Common::String("B0") == (yyvsp[-1].s))
 			g_parsedArc->beforeVideo = (yyvsp[0].s);
-		//else if (Common::String("B1") == $1) 
+		//else if (Common::String("B1") == $1)
 		//	g_parsedArc->beforeVideo = $2;
 		else if (Common::String("B2") == (yyvsp[-1].s))
 			g_parsedArc->nextLevelVideo = (yyvsp[0].s);
@@ -1440,7 +1440,7 @@ yyreduce:
 		else if (Common::String("BA") == (yyvsp[-1].s))
 			g_parsedArc->briefingVideo = (yyvsp[0].s);
 
-		debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s)); 
+		debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
 	}
 #line 1446 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1453,7 +1453,7 @@ yyreduce:
 			sampleRate = 22050;
 		else if (HYPNO_ARC_default_sound_rate > 0)
 			sampleRate = HYPNO_ARC_default_sound_rate;
- 
+
 		if (Common::String("S0") == (yyvsp[-2].s)) {
 			g_parsedArc->music = (yyvsp[-1].s);
 			g_parsedArc->musicRate = sampleRate;
@@ -1467,7 +1467,7 @@ yyreduce:
 			g_parsedArc->enemySound = (yyvsp[-1].s);
 			g_parsedArc->enemySoundRate = sampleRate;
 		}
-		debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); 
+		debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s));
 	}
 #line 1473 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1478,7 +1478,7 @@ yyreduce:
 		Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
 		segment.end = true;
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "HE %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "HE %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1484 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1487,8 +1487,8 @@ yyreduce:
 #line 212 "engines/hypno/grammar_arc.y"
                              {
 		Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
-		g_parsedArc->segments.push_back(segment); 
-		debugC(1, kHypnoDebugParser, "HL %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
+		g_parsedArc->segments.push_back(segment);
+		debugC(1, kHypnoDebugParser, "HL %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1494 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1498,7 +1498,7 @@ yyreduce:
                              {
 		Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "HU %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "HU %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1504 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1509,7 +1509,7 @@ yyreduce:
 		assert(Common::String((yyvsp[-2].s)).size() == 1);
 		Segment segment((yyvsp[-2].s)[0], (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "H %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1515 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1519,7 +1519,7 @@ yyreduce:
                             { // Workaround for BYTE == R
 		Segment segment('R', (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1525 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1529,7 +1529,7 @@ yyreduce:
                             { // Workaround for BYTE == A
 		Segment segment('A', (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1535 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1539,7 +1539,7 @@ yyreduce:
                             { // Workaround for BYTE == P
 		Segment segment('P', (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1545 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1549,7 +1549,7 @@ yyreduce:
                             { // Workaround for BYTE == P
 		Segment segment('L', (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1555 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1559,7 +1559,7 @@ yyreduce:
                               {
 		Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "HN %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "HN %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1565 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1569,7 +1569,7 @@ yyreduce:
                             {
 		Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "H %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1575 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1588,42 +1588,42 @@ yyreduce:
 
   case 44: /* bline: FNTOK FILENAME  */
 #line 269 "engines/hypno/grammar_arc.y"
-                      { 
+                      {
 		shoot = new Shoot();
 		if (Common::String("F0") == (yyvsp[-1].s))
 			shoot->animation = (yyvsp[0].s);
 		else if (Common::String("F4") == (yyvsp[-1].s))
 			shoot->explosionAnimation = (yyvsp[0].s);
-		debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s)); 
+		debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
 	}
 #line 1600 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 45: /* bline: FNTOK NONETOK  */
 #line 277 "engines/hypno/grammar_arc.y"
-                        { 
+                        {
 		shoot = new Shoot();
 		shoot->animation = "NONE";
-		debugC(1, kHypnoDebugParser, "FN NONE"); 
+		debugC(1, kHypnoDebugParser, "FN NONE");
 	}
 #line 1610 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 46: /* bline: FTOK FILENAME  */
 #line 282 "engines/hypno/grammar_arc.y"
-                        { 
+                        {
 		shoot = new Shoot();
 		shoot->animation = (yyvsp[0].s);
-		debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s)); 
+		debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
 	}
 #line 1620 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 47: /* bline: ITOK NAME  */
 #line 287 "engines/hypno/grammar_arc.y"
-                     { 
+                     {
 		shoot->name = (yyvsp[0].s);
-		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s)); 
+		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
 	}
 #line 1629 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1632,7 +1632,7 @@ yyreduce:
 #line 291 "engines/hypno/grammar_arc.y"
                       {  // Workaround for NAME == B1
 		shoot->name = (yyvsp[0].s);
-		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s)); 
+		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
 	}
 #line 1638 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1641,7 +1641,7 @@ yyreduce:
 #line 295 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == A
 		shoot->name = "A";
-		debugC(1, kHypnoDebugParser, "I A"); 
+		debugC(1, kHypnoDebugParser, "I A");
 	}
 #line 1647 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1650,7 +1650,7 @@ yyreduce:
 #line 299 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == C
 		shoot->name = "C";
-		debugC(1, kHypnoDebugParser, "I C"); 
+		debugC(1, kHypnoDebugParser, "I C");
 	}
 #line 1656 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1659,7 +1659,7 @@ yyreduce:
 #line 303 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == D
 		shoot->name = "D";
-		debugC(1, kHypnoDebugParser, "I D"); 
+		debugC(1, kHypnoDebugParser, "I D");
 	}
 #line 1665 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1668,7 +1668,7 @@ yyreduce:
 #line 307 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == F
 		shoot->name = "F";
-		debugC(1, kHypnoDebugParser, "I F"); 
+		debugC(1, kHypnoDebugParser, "I F");
 	}
 #line 1674 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1677,7 +1677,7 @@ yyreduce:
 #line 311 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == H
 		shoot->name = "H";
-		debugC(1, kHypnoDebugParser, "I H"); 
+		debugC(1, kHypnoDebugParser, "I H");
 	}
 #line 1683 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1686,7 +1686,7 @@ yyreduce:
 #line 315 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == I
 		shoot->name = "I";
-		debugC(1, kHypnoDebugParser, "I I"); 
+		debugC(1, kHypnoDebugParser, "I I");
 	}
 #line 1692 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1695,7 +1695,7 @@ yyreduce:
 #line 319 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == I
 		shoot->name = "J";
-		debugC(1, kHypnoDebugParser, "I J"); 
+		debugC(1, kHypnoDebugParser, "I J");
 	}
 #line 1701 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1704,7 +1704,7 @@ yyreduce:
 #line 323 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == N
 		shoot->name = "N";
-		debugC(1, kHypnoDebugParser, "I N"); 
+		debugC(1, kHypnoDebugParser, "I N");
 	}
 #line 1710 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1713,7 +1713,7 @@ yyreduce:
 #line 327 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == O
 		shoot->name = "O";
-		debugC(1, kHypnoDebugParser, "I O"); 
+		debugC(1, kHypnoDebugParser, "I O");
 	}
 #line 1719 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1722,7 +1722,7 @@ yyreduce:
 #line 331 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == P
 		shoot->name = "P";
-		debugC(1, kHypnoDebugParser, "I P"); 
+		debugC(1, kHypnoDebugParser, "I P");
 	}
 #line 1728 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1731,7 +1731,7 @@ yyreduce:
 #line 335 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == Q
 		shoot->name = "Q";
-		debugC(1, kHypnoDebugParser, "I Q"); 
+		debugC(1, kHypnoDebugParser, "I Q");
 	}
 #line 1737 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1740,7 +1740,7 @@ yyreduce:
 #line 339 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == R
 		shoot->name = "R";
-		debugC(1, kHypnoDebugParser, "I R"); 
+		debugC(1, kHypnoDebugParser, "I R");
 	}
 #line 1746 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1749,7 +1749,7 @@ yyreduce:
 #line 343 "engines/hypno/grammar_arc.y"
                       {  // Workaround for NAME == S1
 		shoot->name = (yyvsp[0].s);
-		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s)); 
+		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
 	}
 #line 1755 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1758,7 +1758,7 @@ yyreduce:
 #line 347 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == T
 		shoot->name = "T";
-		debugC(1, kHypnoDebugParser, "I T"); 
+		debugC(1, kHypnoDebugParser, "I T");
 	}
 #line 1764 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1767,7 +1767,7 @@ yyreduce:
 #line 351 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == L
 		shoot->name = "L";
-		debugC(1, kHypnoDebugParser, "I L"); 
+		debugC(1, kHypnoDebugParser, "I L");
 	}
 #line 1773 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1775,16 +1775,16 @@ yyreduce:
   case 64: /* bline: JTOK NUM  */
 #line 355 "engines/hypno/grammar_arc.y"
                     {
-		debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
 	}
 #line 1781 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 65: /* bline: A0TOK NUM NUM  */
 #line 358 "engines/hypno/grammar_arc.y"
-                        { 
+                        {
 		shoot->position = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
-		debugC(1, kHypnoDebugParser, "A0 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "A0 %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1790 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1793,15 +1793,15 @@ yyreduce:
 #line 362 "engines/hypno/grammar_arc.y"
                         {
 		shoot->objKillsCount = (yyvsp[-1].i);
-		shoot->objMissesCount = (yyvsp[0].i); 
-		debugC(1, kHypnoDebugParser, "R %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		shoot->objMissesCount = (yyvsp[0].i);
+		debugC(1, kHypnoDebugParser, "R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1800 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 67: /* bline: R01TOK NUM NUM  */
 #line 367 "engines/hypno/grammar_arc.y"
-                          { 
+                          {
 		shoot->objKillsCount = (yyvsp[-1].i);
 		shoot->objMissesCount = (yyvsp[0].i);
 		debugC(1, kHypnoDebugParser, "R0/1 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
@@ -1810,10 +1810,10 @@ yyreduce:
 
   case 68: /* bline: BNTOK NUM NUM  */
 #line 371 "engines/hypno/grammar_arc.y"
-                        { 
+                        {
 		FrameInfo fi((yyvsp[0].i), (yyvsp[-1].i));
 		shoot->bodyFrames.push_back(fi);
-		debugC(1, kHypnoDebugParser, "BN %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "BN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1819 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1830,7 +1830,7 @@ yyreduce:
 
   case 70: /* bline: P0TOK NUM NUM  */
 #line 381 "engines/hypno/grammar_arc.y"
-                        { 
+                        {
 		shoot->paletteSize = (yyvsp[-1].i);
 		shoot->paletteOffset = (yyvsp[0].i);
 		debugC(1, kHypnoDebugParser, "P0 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
@@ -1843,7 +1843,7 @@ yyreduce:
 		if ((yyvsp[-1].i) == 0 && (yyvsp[0].i) == 0)
 			error("Invalid O command (0, 0)");
 		shoot->deathPosition = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
-		debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1849 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1857,7 +1857,7 @@ yyreduce:
   case 73: /* bline: HTOK NUM  */
 #line 392 "engines/hypno/grammar_arc.y"
                     {
-		shoot->attackFrames.push_back((yyvsp[0].i)); 
+		shoot->attackFrames.push_back((yyvsp[0].i));
 		debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
 #line 1863 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1871,7 +1871,7 @@ yyreduce:
   case 75: /* bline: WTOK NUM  */
 #line 396 "engines/hypno/grammar_arc.y"
                     {
-		shoot->attackWeight = (yyvsp[0].i);  
+		shoot->attackWeight = (yyvsp[0].i);
 		debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
 #line 1877 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1879,8 +1879,8 @@ yyreduce:
   case 76: /* bline: DTOK NUM  */
 #line 399 "engines/hypno/grammar_arc.y"
                     {
-		shoot->pointsToShoot = (yyvsp[0].i);  
-		debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i)); 
+		shoot->pointsToShoot = (yyvsp[0].i);
+		debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
 	}
 #line 1886 "engines/hypno/grammar_arc.cpp"
     break;
@@ -1888,42 +1888,44 @@ yyreduce:
   case 77: /* bline: LTOK NUM NUM  */
 #line 403 "engines/hypno/grammar_arc.y"
                        {
-		debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
+		debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
 #line 1894 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 78: /* bline: SNTOK FILENAME enc  */
 #line 406 "engines/hypno/grammar_arc.y"
-                             { 
+                             {
 		if (Common::String("S1") == (yyvsp[-2].s))
 			shoot->deathSound = (yyvsp[-1].s);
 		else if (Common::String("S2") == (yyvsp[-2].s))
 			shoot->hitSound = (yyvsp[-1].s);
-		 
+
 		debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
 #line 1906 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 79: /* bline: NTOK  */
 #line 413 "engines/hypno/grammar_arc.y"
-               { debugC(1, kHypnoDebugParser, "N"); }
-#line 1912 "engines/hypno/grammar_arc.cpp"
+               {
+		shoot->noEnemySound = true;
+		debugC(1, kHypnoDebugParser, "N"); }
+#line 1914 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 80: /* bline: ZTOK  */
-#line 414 "engines/hypno/grammar_arc.y"
+#line 416 "engines/hypno/grammar_arc.y"
                {
-		g_parsedArc->shoots.push_back(*shoot); 
-		//delete shoot; 
+		g_parsedArc->shoots.push_back(*shoot);
+		//delete shoot;
 		//shoot = nullptr;
-		debugC(1, kHypnoDebugParser, "Z"); 
+		debugC(1, kHypnoDebugParser, "Z");
 	}
-#line 1923 "engines/hypno/grammar_arc.cpp"
+#line 1925 "engines/hypno/grammar_arc.cpp"
     break;
 
 
-#line 1927 "engines/hypno/grammar_arc.cpp"
+#line 1929 "engines/hypno/grammar_arc.cpp"
 
       default: break;
     }
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index a3880ca21be..b3e237d48fc 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -82,17 +82,17 @@ start: YXTOK { g_parsedArc->mode = $1; } header ZTOK RETTOK body XTOK
 header: hline header
 	| RETTOK header
 	| /* nothing */
-	; 
+	;
 
 hline: 	CTOK NUM {
-		g_parsedArc->id = $2; 
+		g_parsedArc->id = $2;
 		HYPNO_ARC_default_sound_rate = 0;
 		debugC(1, kHypnoDebugParser, "C %d", $2); }
-	| FTOK NUM { 
+	| FTOK NUM {
 		HYPNO_ARC_default_sound_rate = $2;
 		debugC(1, kHypnoDebugParser, "F %d", $2);
 	}
-	| DTOK NUM  { 
+	| DTOK NUM  {
 		g_parsedArc->frameDelay = $2;
 		debugC(1, kHypnoDebugParser, "D %d", $2);
 	}
@@ -105,22 +105,22 @@ hline: 	CTOK NUM {
 		g_parsedArc->objMissesAllowed[0] = $3;
 		debugC(1, kHypnoDebugParser, "O %d %d", $2, $3);
 	}
-	| ONTOK NUM NUM { 
+	| ONTOK NUM NUM {
 		if (Common::String("O0") == $1) {
 			g_parsedArc->objKillsRequired[0] = $2;
 			g_parsedArc->objMissesAllowed[0] = $3;
 		} else if (Common::String("O1") == $1) {
 			g_parsedArc->objKillsRequired[1] = $2;
 			g_parsedArc->objMissesAllowed[1] = $3;
-		} else 
+		} else
 			error("Invalid objective: '%s'", $1);
 		debugC(1, kHypnoDebugParser, "ON %d %d", $2, $3); }
-	| ONTOK NUM { 
+	| ONTOK NUM {
 		if (Common::String("O0") == $1) {
 			g_parsedArc->objKillsRequired[0] = $2;
 		} else if (Common::String("O1") == $1) {
 			g_parsedArc->objKillsRequired[1] = $2;
-		} else 
+		} else
 			error("Invalid objective: '%s'", $1);
 		debugC(1, kHypnoDebugParser, "ON %d", $2);
 	}
@@ -128,37 +128,37 @@ hline: 	CTOK NUM {
 		g_parsedArc->transitionVideo = $2;
 		g_parsedArc->transitionTime = $3;
 		g_parsedArc->transitionPalette = $4;
-		debugC(1, kHypnoDebugParser, "Tp %s %d %s", $2, $3, $4); 
+		debugC(1, kHypnoDebugParser, "Tp %s %d %s", $2, $3, $4);
 	}
-	| TTOK FILENAME NUM { 
+	| TTOK FILENAME NUM {
 		g_parsedArc->transitionVideo = $2;
 		g_parsedArc->transitionTime = $3;
-		debugC(1, kHypnoDebugParser, "T %s %d", $2, $3); 
+		debugC(1, kHypnoDebugParser, "T %s %d", $2, $3);
 	}
 	| TTOK NONETOK NUM { debugC(1, kHypnoDebugParser, "T NONE %d", $3); }
-	| NTOK FILENAME  { 
-		g_parsedArc->backgroundVideo = $2; 
-		debugC(1, kHypnoDebugParser, "N %s", $2); 
+	| NTOK FILENAME  {
+		g_parsedArc->backgroundVideo = $2;
+		debugC(1, kHypnoDebugParser, "N %s", $2);
 	}
-	| NSTOK FILENAME  { 
-		g_parsedArc->backgroundVideo = $2; 
-		debugC(1, kHypnoDebugParser, "N* %s", $2); 
+	| NSTOK FILENAME  {
+		g_parsedArc->backgroundVideo = $2;
+		debugC(1, kHypnoDebugParser, "N* %s", $2);
 	}
 	| RTOK FILENAME  {
-		g_parsedArc->backgroundPalette = $2; 
+		g_parsedArc->backgroundPalette = $2;
 		debugC(1, kHypnoDebugParser, "R %s", $2); }
-	| ITOK FILENAME { 
-		g_parsedArc->player = $2; 
-		debugC(1, kHypnoDebugParser, "I %s", $2); 
+	| ITOK FILENAME {
+		g_parsedArc->player = $2;
+		debugC(1, kHypnoDebugParser, "I %s", $2);
 	}
-	| I1TOK FILENAME { 
-		debugC(1, kHypnoDebugParser, "I1 %s", $2); 
+	| I1TOK FILENAME {
+		debugC(1, kHypnoDebugParser, "I1 %s", $2);
 	}
 	| QTOK NUM NUM { debugC(1, kHypnoDebugParser, "Q %d %d", $2, $3); }
 	| BNTOK FILENAME {
 		if (Common::String("B0") == $1)
 			g_parsedArc->beforeVideo = $2;
-		//else if (Common::String("B1") == $1) 
+		//else if (Common::String("B1") == $1)
 		//	g_parsedArc->beforeVideo = $2;
 		else if (Common::String("B2") == $1)
 			g_parsedArc->nextLevelVideo = $2;
@@ -179,7 +179,7 @@ hline: 	CTOK NUM {
 		else if (Common::String("BA") == $1)
 			g_parsedArc->briefingVideo = $2;
 
-		debugC(1, kHypnoDebugParser, "BN %s", $2); 
+		debugC(1, kHypnoDebugParser, "BN %s", $2);
 	}
 	| SNTOK FILENAME enc {
 		uint32 sampleRate = 11025;
@@ -187,7 +187,7 @@ hline: 	CTOK NUM {
 			sampleRate = 22050;
 		else if (HYPNO_ARC_default_sound_rate > 0)
 			sampleRate = HYPNO_ARC_default_sound_rate;
- 
+
 		if (Common::String("S0") == $1) {
 			g_parsedArc->music = $2;
 			g_parsedArc->musicRate = sampleRate;
@@ -201,59 +201,59 @@ hline: 	CTOK NUM {
 			g_parsedArc->enemySound = $2;
 			g_parsedArc->enemySoundRate = sampleRate;
 		}
-		debugC(1, kHypnoDebugParser, "SN %s", $2); 
+		debugC(1, kHypnoDebugParser, "SN %s", $2);
 	}
 	| HETOK BYTE NUM NUM {
 		Segment segment($2, $4, $3);
 		segment.end = true;
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "HE %x %d %d", $2, $3, $4); 
+		debugC(1, kHypnoDebugParser, "HE %x %d %d", $2, $3, $4);
 	}
 	| HLTOK BYTE NUM NUM {
 		Segment segment($2, $4, $3);
-		g_parsedArc->segments.push_back(segment); 
-		debugC(1, kHypnoDebugParser, "HL %x %d %d", $2, $3, $4); 
+		g_parsedArc->segments.push_back(segment);
+		debugC(1, kHypnoDebugParser, "HL %x %d %d", $2, $3, $4);
 	}
 	| HUTOK BYTE NUM NUM {
 		Segment segment($2, $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "HU %x %d %d", $2, $3, $4); 
+		debugC(1, kHypnoDebugParser, "HU %x %d %d", $2, $3, $4);
 	}
 	| HTOK NAME NUM NUM {
 		assert(Common::String($2).size() == 1);
 		Segment segment($2[0], $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H %s %d %d", $2, $3, $4); 
+		debugC(1, kHypnoDebugParser, "H %s %d %d", $2, $3, $4);
 	}
 	| HTOK RTOK NUM NUM { // Workaround for BYTE == R
 		Segment segment('R', $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H R %d %d", $3, $4); 
+		debugC(1, kHypnoDebugParser, "H R %d %d", $3, $4);
 	}
 	| HTOK ATOK NUM NUM { // Workaround for BYTE == A
 		Segment segment('A', $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H A %d %d", $3, $4); 
+		debugC(1, kHypnoDebugParser, "H A %d %d", $3, $4);
 	}
 	| HTOK PTOK NUM NUM { // Workaround for BYTE == P
 		Segment segment('P', $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H P %d %d", $3, $4); 
+		debugC(1, kHypnoDebugParser, "H P %d %d", $3, $4);
 	}
 	| HTOK LTOK NUM NUM { // Workaround for BYTE == P
 		Segment segment('L', $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H P %d %d", $3, $4); 
+		debugC(1, kHypnoDebugParser, "H P %d %d", $3, $4);
 	}
 	| H12TOK BYTE NUM NUM {
 		Segment segment($2, $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "HN %x %d %d", $2, $3, $4); 
+		debugC(1, kHypnoDebugParser, "HN %x %d %d", $2, $3, $4);
 	}
 	| HTOK BYTE NUM NUM {
 		Segment segment($2, $4, $3);
 		g_parsedArc->segments.push_back(segment);
-		debugC(1, kHypnoDebugParser, "H %x %d %d", $2, $3, $4); 
+		debugC(1, kHypnoDebugParser, "H %x %d %d", $2, $3, $4);
 	}
 	;
 
@@ -266,119 +266,119 @@ body: bline body
 	| /* nothing */
 	;
 
-bline: FNTOK FILENAME { 
+bline: FNTOK FILENAME {
 		shoot = new Shoot();
 		if (Common::String("F0") == $1)
 			shoot->animation = $2;
 		else if (Common::String("F4") == $1)
 			shoot->explosionAnimation = $2;
-		debugC(1, kHypnoDebugParser, "FN %s", $2); 
+		debugC(1, kHypnoDebugParser, "FN %s", $2);
 	}
-	| FNTOK NONETOK { 
+	| FNTOK NONETOK {
 		shoot = new Shoot();
 		shoot->animation = "NONE";
-		debugC(1, kHypnoDebugParser, "FN NONE"); 
+		debugC(1, kHypnoDebugParser, "FN NONE");
 	}
-	| FTOK FILENAME { 
+	| FTOK FILENAME {
 		shoot = new Shoot();
 		shoot->animation = $2;
-		debugC(1, kHypnoDebugParser, "FN %s", $2); 
+		debugC(1, kHypnoDebugParser, "FN %s", $2);
 	}
-	| ITOK NAME  { 
+	| ITOK NAME  {
 		shoot->name = $2;
-		debugC(1, kHypnoDebugParser, "I %s", $2); 
+		debugC(1, kHypnoDebugParser, "I %s", $2);
 	}
 	| ITOK BNTOK  {  // Workaround for NAME == B1
 		shoot->name = $2;
-		debugC(1, kHypnoDebugParser, "I %s", $2); 
+		debugC(1, kHypnoDebugParser, "I %s", $2);
 	}
 	| ITOK ATOK  { // Workaround for NAME == A
 		shoot->name = "A";
-		debugC(1, kHypnoDebugParser, "I A"); 
+		debugC(1, kHypnoDebugParser, "I A");
 	}
 	| ITOK CTOK  { // Workaround for NAME == C
 		shoot->name = "C";
-		debugC(1, kHypnoDebugParser, "I C"); 
+		debugC(1, kHypnoDebugParser, "I C");
 	}
 	| ITOK DTOK  { // Workaround for NAME == D
 		shoot->name = "D";
-		debugC(1, kHypnoDebugParser, "I D"); 
+		debugC(1, kHypnoDebugParser, "I D");
 	}
 	| ITOK FTOK  { // Workaround for NAME == F
 		shoot->name = "F";
-		debugC(1, kHypnoDebugParser, "I F"); 
+		debugC(1, kHypnoDebugParser, "I F");
 	}
 	| ITOK HTOK  { // Workaround for NAME == H
 		shoot->name = "H";
-		debugC(1, kHypnoDebugParser, "I H"); 
+		debugC(1, kHypnoDebugParser, "I H");
 	}
 	| ITOK ITOK  { // Workaround for NAME == I
 		shoot->name = "I";
-		debugC(1, kHypnoDebugParser, "I I"); 
+		debugC(1, kHypnoDebugParser, "I I");
 	}
 	| ITOK JTOK  { // Workaround for NAME == I
 		shoot->name = "J";
-		debugC(1, kHypnoDebugParser, "I J"); 
+		debugC(1, kHypnoDebugParser, "I J");
 	}
 	| ITOK NTOK  { // Workaround for NAME == N
 		shoot->name = "N";
-		debugC(1, kHypnoDebugParser, "I N"); 
+		debugC(1, kHypnoDebugParser, "I N");
 	}
 	| ITOK OTOK  { // Workaround for NAME == O
 		shoot->name = "O";
-		debugC(1, kHypnoDebugParser, "I O"); 
+		debugC(1, kHypnoDebugParser, "I O");
 	}
 	| ITOK PTOK  { // Workaround for NAME == P
 		shoot->name = "P";
-		debugC(1, kHypnoDebugParser, "I P"); 
+		debugC(1, kHypnoDebugParser, "I P");
 	}
 	| ITOK QTOK  { // Workaround for NAME == Q
 		shoot->name = "Q";
-		debugC(1, kHypnoDebugParser, "I Q"); 
+		debugC(1, kHypnoDebugParser, "I Q");
 	}
 	| ITOK RTOK  { // Workaround for NAME == R
 		shoot->name = "R";
-		debugC(1, kHypnoDebugParser, "I R"); 
+		debugC(1, kHypnoDebugParser, "I R");
 	}
 	| ITOK SNTOK  {  // Workaround for NAME == S1
 		shoot->name = $2;
-		debugC(1, kHypnoDebugParser, "I %s", $2); 
+		debugC(1, kHypnoDebugParser, "I %s", $2);
 	}
 	| ITOK TTOK  { // Workaround for NAME == T
 		shoot->name = "T";
-		debugC(1, kHypnoDebugParser, "I T"); 
+		debugC(1, kHypnoDebugParser, "I T");
 	}
 	| ITOK LTOK  { // Workaround for NAME == L
 		shoot->name = "L";
-		debugC(1, kHypnoDebugParser, "I L"); 
+		debugC(1, kHypnoDebugParser, "I L");
 	}
 	| JTOK NUM  {
-		debugC(1, kHypnoDebugParser, "J %d", $2); 
+		debugC(1, kHypnoDebugParser, "J %d", $2);
 	}
-	| A0TOK NUM NUM { 
+	| A0TOK NUM NUM {
 		shoot->position = Common::Point($2, $3);
-		debugC(1, kHypnoDebugParser, "A0 %d %d", $2, $3); 
+		debugC(1, kHypnoDebugParser, "A0 %d %d", $2, $3);
 	}
 	| RTOK NUM NUM  {
 		shoot->objKillsCount = $2;
-		shoot->objMissesCount = $3; 
-		debugC(1, kHypnoDebugParser, "R %d %d", $2, $3); 
+		shoot->objMissesCount = $3;
+		debugC(1, kHypnoDebugParser, "R %d %d", $2, $3);
 	}
-	| R01TOK NUM NUM  { 
+	| R01TOK NUM NUM  {
 		shoot->objKillsCount = $2;
 		shoot->objMissesCount = $3;
 		debugC(1, kHypnoDebugParser, "R0/1 %d %d", $2, $3); }
-	| BNTOK NUM NUM { 
+	| BNTOK NUM NUM {
 		FrameInfo fi($3, $2);
 		shoot->bodyFrames.push_back(fi);
-		debugC(1, kHypnoDebugParser, "BN %d %d", $2, $3); 
+		debugC(1, kHypnoDebugParser, "BN %d %d", $2, $3);
 	}
 	| KNTOK NUM NUM {
 		FrameInfo fi($3, $2);
 		shoot->explosionFrames.push_back(fi);
 		debugC(1, kHypnoDebugParser, "KN %d %d", $2, $3);
 	}
-	| P0TOK NUM NUM { 
+	| P0TOK NUM NUM {
 		shoot->paletteSize = $2;
 		shoot->paletteOffset = $3;
 		debugC(1, kHypnoDebugParser, "P0 %d %d", $2, $3); }
@@ -386,36 +386,38 @@ bline: FNTOK FILENAME {
 		if ($2 == 0 && $3 == 0)
 			error("Invalid O command (0, 0)");
 		shoot->deathPosition = Common::Point($2, $3);
-		debugC(1, kHypnoDebugParser, "O %d %d", $2, $3); 
+		debugC(1, kHypnoDebugParser, "O %d %d", $2, $3);
 	}
-	| CTOK NUM  { debugC(1, kHypnoDebugParser, "C %d", $2); } 
+	| CTOK NUM  { debugC(1, kHypnoDebugParser, "C %d", $2); }
 	| HTOK NUM  {
-		shoot->attackFrames.push_back($2); 
+		shoot->attackFrames.push_back($2);
 		debugC(1, kHypnoDebugParser, "H %d", $2); }
 	| VTOK NUM  { debugC(1, kHypnoDebugParser, "V %d", $2); }
 	| WTOK NUM  {
-		shoot->attackWeight = $2;  
+		shoot->attackWeight = $2;
 		debugC(1, kHypnoDebugParser, "W %d", $2); }
 	| DTOK NUM  {
-		shoot->pointsToShoot = $2;  
-		debugC(1, kHypnoDebugParser, "D %d", $2); 
+		shoot->pointsToShoot = $2;
+		debugC(1, kHypnoDebugParser, "D %d", $2);
 	}
 	| LTOK NUM NUM {
-		debugC(1, kHypnoDebugParser, "L %d %d", $2, $3); 
+		debugC(1, kHypnoDebugParser, "L %d %d", $2, $3);
 	}
-	| SNTOK FILENAME enc { 
+	| SNTOK FILENAME enc {
 		if (Common::String("S1") == $1)
 			shoot->deathSound = $2;
 		else if (Common::String("S2") == $1)
 			shoot->hitSound = $2;
-		 
+
 		debugC(1, kHypnoDebugParser, "SN %s", $2); }
-	| NTOK { debugC(1, kHypnoDebugParser, "N"); }
+	| NTOK {
+		shoot->noEnemySound = true;
+		debugC(1, kHypnoDebugParser, "N"); }
 	| ZTOK {
-		g_parsedArc->shoots.push_back(*shoot); 
-		//delete shoot; 
+		g_parsedArc->shoots.push_back(*shoot);
+		//delete shoot;
 		//shoot = nullptr;
-		debugC(1, kHypnoDebugParser, "Z"); 
+		debugC(1, kHypnoDebugParser, "Z");
 	}
 	;
 




More information about the Scummvm-git-logs mailing list