diff --git a/src/g_demo.cpp b/src/g_demo.cpp index 2b99a3134..4e08d1be5 100644 --- a/src/g_demo.cpp +++ b/src/g_demo.cpp @@ -303,18 +303,23 @@ boolean G_ConsiderEndingDemoRead(void) } // Demo failed sync during a sync test! Log the failure to be reported later. -static void G_FailStaffSync(staffsync_reason_t reason, UINT32 extra) +static boolean G_FailStaffSync(staffsync_reason_t reason, UINT32 extra) { if (!staffsync) - return; + return true; if (staffsync_results[staffsync_failed].reason != 0) - return; + return false; + + if (reason == SYNC_RNG && extra == PR_ITEM_DEBRIS) + return false; staffsync_results[staffsync_failed].map = gamemap; memcpy(&staffsync_results[staffsync_failed].name, player_names[consoleplayer], sizeof(player_names[consoleplayer])); staffsync_results[staffsync_failed].reason = reason; staffsync_results[staffsync_failed].extra = extra; + + return true; } void G_ReadDemoExtraData(void) @@ -486,11 +491,16 @@ void G_ReadDemoExtraData(void) if (demosynced) { - CONS_Alert(CONS_WARNING, "Demo playback has desynced (RNG class %d)!\n", i); - G_FailStaffSync(SYNC_RNG, i); + if (G_FailStaffSync(SYNC_RNG, i)) + { + CONS_Alert(CONS_WARNING, "Demo playback has desynced (RNG class %d)!\n", i); + storesynced = false; + } + } + else + { + storesynced = false; } - - storesynced = false; } } demosynced = storesynced;