@@ -194,4 +194,56 @@ public void AutoQuest_OnlyRestartsSlotZero()
194194 Assert . AreEqual ( 1 , _resourceManager . ActiveQuests . Count , "Slot 0 SHOULD have restarted." ) ;
195195 Assert . AreEqual ( 0 , _resourceManager . ActiveQuests . First ( ) . SlotIndex ) ;
196196 }
197+
198+ [ TestMethod ]
199+ public void AutoQuest_RestartsRefinementsInSlotZero ( )
200+ {
201+ var character = _resourceManager ! . Characters [ 0 ] ;
202+ var recruit = _cadences ! . All . First ( c => c . Name == "Recruit" ) ;
203+ var student = _cadences ! . All . First ( c => c . Name == "Student" ) ;
204+ var basicGem = _items ! . All . First ( i => i . Name == "Basic Gem" ) ;
205+ var ability = student . Abilities . First ( a => a . Ability . Name == "Refine Fire" ) . Ability ;
206+ var recipe = ContentHost . GetContent < ItemRefinements > ( ) . ByKey [ ability ] . Recipes [ basicGem ] ;
207+ var refinement = new RefinementData ( ability , basicGem , recipe , "Magic" ) ;
208+
209+ _resourceManager . UnlockCadence ( recruit ) ;
210+ _resourceManager . UnlockCadence ( student ) ;
211+ _resourceManager . UnlockedAbilities . Add ( "Recruit:AutoQuest I" ) ;
212+ _resourceManager . UnlockedAbilities . Add ( "Student:Refine Fire" ) ;
213+
214+ _resourceManager . JunctionManager . AssignCadence ( recruit , character , _resourceManager . UnlockedAbilities ) ;
215+ _resourceManager . JunctionManager . AssignCadence ( student , character , _resourceManager . UnlockedAbilities ) ;
216+ _resourceManager . SetAutoQuestEnabled ( character , true ) ;
217+
218+ // Add materials for multiple runs
219+ _resourceManager . Inventory . Add ( basicGem , 10 ) ;
220+
221+ // Start refinement in slot 0
222+ _resourceManager . StartQuest ( refinement , character ) ;
223+ Assert . AreEqual ( 1 , _resourceManager . ActiveQuests . Count ) ;
224+ var progress = _resourceManager . ActiveQuests [ 0 ] ;
225+ Assert . AreEqual ( 0 , progress . SlotIndex ) ;
226+
227+ // Simulate completion
228+ _resourceManager . ReceiveRewards ( progress . Item ) . Wait ( ) ;
229+ _resourceManager . RemoveActiveQuest ( progress ) ;
230+
231+ // Logic from Home.razor.cs
232+ bool isRecurring = ( progress . Item is QuestData q && q . Type == QuestType . Recurring ) ||
233+ ( progress . Item is RefinementData ) ;
234+
235+ if ( progress . SlotIndex == 0 && isRecurring )
236+ {
237+ if ( _resourceManager . IsAutoQuestEnabled ( progress . Character ) && _resourceManager . CanAutoQuest ( progress . Character ) )
238+ {
239+ if ( _resourceManager . CanAfford ( progress . Item , progress . Character ) )
240+ {
241+ _resourceManager . StartQuest ( progress . Item , progress . Character , - 1.5 ) ;
242+ }
243+ }
244+ }
245+
246+ Assert . AreEqual ( 1 , _resourceManager . ActiveQuests . Count , "Refinement should have auto-restarted." ) ;
247+ Assert . AreEqual ( 0 , _resourceManager . ActiveQuests [ 0 ] . SlotIndex ) ;
248+ }
197249}
0 commit comments