@@ -172,12 +172,15 @@ <h2 id="journal-title">SIGNAL LOG</h2>
172172let progressStorage = null ;
173173try { progressStorage = window . localStorage ; } catch { }
174174const savedProgress = LittleAndroidProgress . loadProgress ( progressStorage ) ;
175+ let progressGeneration = savedProgress . generation ;
175176for ( const fragment of signalFragments ) {
176177 fragment . discovered = savedProgress . discoveredFragments . includes ( fragment . id ) ;
177178 fragment . collected = savedProgress . collectedFragments . includes ( fragment . id ) ;
178179}
179180const discoveredNPCs = new Set ( savedProgress . discoveredNPCs ) ;
180- const quest = { complete : savedProgress . complete } ;
181+ const quest = {
182+ complete : savedProgress . complete || signalFragments . every ( fragment => fragment . collected ) ,
183+ } ;
181184
182185function isWalkable ( tx , ty ) {
183186 if ( tx < 0 || ty < 0 || tx >= MW || ty >= MH ) return false ;
@@ -963,6 +966,7 @@ <h2 id="journal-title">SIGNAL LOG</h2>
963966function currentProgress ( ) {
964967 return {
965968 version : LittleAndroidProgress . SAVE_VERSION ,
969+ generation : progressGeneration ,
966970 discoveredFragments : signalFragments . filter ( fragment => fragment . discovered ) . map ( fragment => fragment . id ) ,
967971 collectedFragments : signalFragments . filter ( fragment => fragment . collected ) . map ( fragment => fragment . id ) ,
968972 discoveredNPCs : [ ...discoveredNPCs ] ,
@@ -972,8 +976,23 @@ <h2 id="journal-title">SIGNAL LOG</h2>
972976
973977function persistProgress ( ) {
974978 const latest = LittleAndroidProgress . loadProgress ( progressStorage ) ;
975- const merged = LittleAndroidProgress . mergeProgress ( latest , currentProgress ( ) ) ;
979+ const merged = LittleAndroidProgress . mergeProgress (
980+ latest ,
981+ currentProgress ( ) ,
982+ signalFragments . map ( fragment => fragment . id ) ,
983+ ) ;
984+ progressGeneration = merged . generation ;
985+ for ( const fragment of signalFragments ) {
986+ fragment . discovered = merged . discoveredFragments . includes ( fragment . id ) ;
987+ fragment . collected = merged . collectedFragments . includes ( fragment . id ) ;
988+ }
989+ discoveredNPCs . clear ( ) ;
990+ for ( const identity of merged . discoveredNPCs ) discoveredNPCs . add ( identity ) ;
991+ quest . complete = merged . complete ;
992+ document . body . classList . toggle ( 'world-restored' , quest . complete ) ;
993+ updateQuestUI ( ) ;
976994 LittleAndroidProgress . saveProgress ( progressStorage , merged ) ;
995+ return merged ;
977996}
978997
979998function rememberNPC ( npc ) {
@@ -1028,7 +1047,9 @@ <h2 id="journal-title">SIGNAL LOG</h2>
10281047 discoveredNPCs . clear ( ) ;
10291048 quest . complete = false ;
10301049 document . body . classList . remove ( 'world-restored' ) ;
1031- LittleAndroidProgress . clearProgress ( progressStorage ) ;
1050+ const storedGeneration = LittleAndroidProgress . loadProgress ( progressStorage ) . generation ;
1051+ progressGeneration = Math . max ( progressGeneration , storedGeneration ) + 1 ;
1052+ LittleAndroidProgress . saveProgress ( progressStorage , currentProgress ( ) ) ;
10321053 updateQuestUI ( ) ;
10331054 updateJournal ( ) ;
10341055 showStatus ( 'SIGNAL SEARCH RESTARTED' , 2 ) ;
@@ -1041,8 +1062,7 @@ <h2 id="journal-title">SIGNAL LOG</h2>
10411062 confirmReset ( message ) :
10421063 typeof window . confirm === 'function' && window . confirm ( message ) ;
10431064 if ( ! confirmed ) return false ;
1044- resetQuest ( ) ;
1045- return true ;
1065+ return resetQuest ( ) ;
10461066}
10471067
10481068function performAction ( ) {
0 commit comments