@@ -181,12 +181,15 @@ <h2 id="journal-title">SIGNAL LOG</h2>
181181try { progressStorage = window . localStorage ; } catch { }
182182const savedProgress = LittleAndroidProgress . loadProgress ( progressStorage ) ;
183183const feedback = LittleAndroidFeedback . createFeedbackController ( window , progressStorage ) ;
184+ let progressGeneration = savedProgress . generation ;
184185for ( const fragment of signalFragments ) {
185186 fragment . discovered = savedProgress . discoveredFragments . includes ( fragment . id ) ;
186187 fragment . collected = savedProgress . collectedFragments . includes ( fragment . id ) ;
187188}
188189const discoveredNPCs = new Set ( savedProgress . discoveredNPCs ) ;
189- const quest = { complete : savedProgress . complete } ;
190+ const quest = {
191+ complete : savedProgress . complete || signalFragments . every ( fragment => fragment . collected ) ,
192+ } ;
190193
191194function isWalkable ( tx , ty ) {
192195 if ( tx < 0 || ty < 0 || tx >= MW || ty >= MH ) return false ;
@@ -977,6 +980,7 @@ <h2 id="journal-title">SIGNAL LOG</h2>
977980function currentProgress ( ) {
978981 return {
979982 version : LittleAndroidProgress . SAVE_VERSION ,
983+ generation : progressGeneration ,
980984 discoveredFragments : signalFragments . filter ( fragment => fragment . discovered ) . map ( fragment => fragment . id ) ,
981985 collectedFragments : signalFragments . filter ( fragment => fragment . collected ) . map ( fragment => fragment . id ) ,
982986 discoveredNPCs : [ ...discoveredNPCs ] ,
@@ -986,8 +990,23 @@ <h2 id="journal-title">SIGNAL LOG</h2>
986990
987991function persistProgress ( ) {
988992 const latest = LittleAndroidProgress . loadProgress ( progressStorage ) ;
989- const merged = LittleAndroidProgress . mergeProgress ( latest , currentProgress ( ) ) ;
993+ const merged = LittleAndroidProgress . mergeProgress (
994+ latest ,
995+ currentProgress ( ) ,
996+ signalFragments . map ( fragment => fragment . id ) ,
997+ ) ;
998+ progressGeneration = merged . generation ;
999+ for ( const fragment of signalFragments ) {
1000+ fragment . discovered = merged . discoveredFragments . includes ( fragment . id ) ;
1001+ fragment . collected = merged . collectedFragments . includes ( fragment . id ) ;
1002+ }
1003+ discoveredNPCs . clear ( ) ;
1004+ for ( const identity of merged . discoveredNPCs ) discoveredNPCs . add ( identity ) ;
1005+ quest . complete = merged . complete ;
1006+ document . body . classList . toggle ( 'world-restored' , quest . complete ) ;
1007+ updateQuestUI ( ) ;
9901008 LittleAndroidProgress . saveProgress ( progressStorage , merged ) ;
1009+ return merged ;
9911010}
9921011
9931012function rememberNPC ( npc ) {
@@ -1046,7 +1065,9 @@ <h2 id="journal-title">SIGNAL LOG</h2>
10461065 discoveredNPCs . clear ( ) ;
10471066 quest . complete = false ;
10481067 document . body . classList . remove ( 'world-restored' ) ;
1049- LittleAndroidProgress . clearProgress ( progressStorage ) ;
1068+ const storedGeneration = LittleAndroidProgress . loadProgress ( progressStorage ) . generation ;
1069+ progressGeneration = Math . max ( progressGeneration , storedGeneration ) + 1 ;
1070+ LittleAndroidProgress . saveProgress ( progressStorage , currentProgress ( ) ) ;
10501071 updateQuestUI ( ) ;
10511072 updateJournal ( ) ;
10521073 showStatus ( 'SIGNAL SEARCH RESTARTED' , 2 ) ;
@@ -1059,8 +1080,7 @@ <h2 id="journal-title">SIGNAL LOG</h2>
10591080 confirmReset ( message ) :
10601081 typeof window . confirm === 'function' && window . confirm ( message ) ;
10611082 if ( ! confirmed ) return false ;
1062- resetQuest ( ) ;
1063- return true ;
1083+ return resetQuest ( ) ;
10641084}
10651085
10661086function performAction ( ) {
0 commit comments