Hi Andrej! Hi Martin!

Attached you find a patch for the guru meditation issue. I will
incoporate the changes in a new version and publish an updated version
of the game soon. You can safely close the bug now, I think.

Thank you for helping to make rockdodger a better game!
Robert 
diff -r 6f4d2c79329b data/iff.configdata.rock
Binary file data/iff.configdata.rock has changed
diff -r 6f4d2c79329b helpers/make_iff_parameters.hs
--- a/helpers/make_iff_parameters.hs	Fri Jul 31 21:34:40 2015 +0200
+++ b/helpers/make_iff_parameters.hs	Mon May 29 16:26:58 2017 +0200
@@ -28,7 +28,9 @@
 chunkHot = Cons (chunkIdFromString "CMAP") $ Chunk $ B.pack $ concat hotCol
 chunkCool = Cons (chunkIdFromString "CMAP") $ Chunk $ B.pack $ concat coolCol
 chunkMDOT = Cons (chunkIdFromString "MDOT") $ Chunk $ B.concat $ BL.toChunks $ runPut f
-  where f = do putWord32be 0x1D543 
+  where f = do putWord32be 0x1f040
+               putWord16be 0x0000
+
 formSpacedots = Cons (chunkIdFromString "SPDT") $ Form [ chunkSparkleNDOT ]
 
 formSparkles = Cons (chunkIdFromString "SPRK") $ Form [ chunkHot, chunkCool, chunkMDOT ]
diff -r 6f4d2c79329b sparkles.c
--- a/sparkles.c	Fri Jul 31 21:34:40 2015 +0200
+++ b/sparkles.c	Mon May 29 16:26:58 2017 +0200
@@ -33,6 +33,7 @@
 static sparkle_t *sparkles;
 static sparkle_t *sparkles_end;
 uint32_t max_bang_dots = MAX_BANG_DOTS;
+uint16_t mdot_flags = 0;
 
 sparkle_t *init_sparkles(uiff_ctx_t iff) {
   int32_t size;
@@ -50,6 +51,11 @@
       max_bang_dots = read32(iff.f);
       assert(printf("FORM.ROCK FORM.SPRK MDOT size = $%08X mdot = $%08X\n", size, max_bang_dots));
     }
+    if(size >= 6) {
+      //Chunk found and it is long enough...
+      mdot_flags = read16(iff.f);
+      assert(printf("FORM.ROCK FORM.SPRK MDOT size = $%08X mdot_flags = $%04hX\n", size, mdot_flags));
+    }
     uiff_rewind_group(&iff);
     index = 0;
     while((size = uiff_find_chunk_ctx(&iff, MakeID('C', 'M', 'A', 'P'))) > 0) {
@@ -158,7 +164,13 @@
   assert(hot_colours.clist != NULL);
   assert(cool_colours.clist != NULL);
   if(sparkles_end - sparkles >= max_bang_dots) {
+#ifdef DEBUG
     guru_meditation(GM_FLAGS_GREEN, GM_SS_Intuition | GM_GE_ProcCreate | GURU_SEC_bangdots, &create_sparkle);
+#else
+    if(mdot_flags != 0) {
+      guru_meditation(GM_FLAGS_GREEN, GM_SS_Intuition | GM_GE_ProcCreate | GURU_SEC_bangdots, &create_sparkle);
+    }
+#endif
   } else {
     sparkles_end->x = x;
     sparkles_end->y = y;

Reply via email to