Skip to content

Commit 3fefa8b

Browse files
committed
Enable AutoQuest for refinement tasks in Slot 0
1 parent 4409750 commit 3fefa8b

2 files changed

Lines changed: 58 additions & 3 deletions

File tree

Mythril.Blazor/Pages/Home.razor.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,16 @@ protected async Task OnCompletionAnimationEnd(QuestProgress completedProgress)
146146
SnackbarService.Show($"Completed: {completedProgress.Name}", "success");
147147

148148
// Auto-restart logic (Only for Slot 0)
149-
if (completedProgress.SlotIndex == 0 && completedProgress.Item is QuestData quest && quest.Type == QuestType.Recurring)
149+
bool isRecurring = (completedProgress.Item is QuestData q && q.Type == QuestType.Recurring) ||
150+
(completedProgress.Item is RefinementData);
151+
152+
if (completedProgress.SlotIndex == 0 && isRecurring)
150153
{
151154
if (resourceManager.IsAutoQuestEnabled(completedProgress.Character) && resourceManager.CanAutoQuest(completedProgress.Character))
152155
{
153-
if (resourceManager.CanAfford(quest))
156+
if (resourceManager.CanAfford(completedProgress.Item, completedProgress.Character))
154157
{
155-
resourceManager.StartQuest(quest, completedProgress.Character, -1.5);
158+
resourceManager.StartQuest(completedProgress.Item, completedProgress.Character, -1.5);
156159
}
157160
}
158161
}

Mythril.Tests/LogisticsTests.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)