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;