{
if (_questRegistry.TryGetQuest(questId, out Quest? quest))
{
- _questController.SimulateQuest(quest);
+ byte sequenceId = 0;
+ int stepId = 0;
+ if (arguments.Length >= 2 && byte.TryParse(arguments[1], out byte parsedSequence))
+ {
+ QuestSequence? sequence = quest.FindSequence(parsedSequence);
+ if (sequence != null)
+ {
+ sequenceId = (byte)sequence.Sequence;
+ if (arguments.Length >= 3 && int.TryParse(arguments[2], out int parsedStep))
+ {
+ QuestStep? step = sequence.FindStep(parsedStep);
+ if (step != null)
+ stepId = parsedStep;
+ }
+ }
+ }
+
+ _questController.SimulateQuest(quest, sequenceId, stepId);
_chatGui.Print($"Simulating quest {questId} ({quest.Info.Name}).", MessageTag, TagColor);
}
else
}
else
{
- _questController.SimulateQuest(null);
+ _questController.SimulateQuest(null, 0, 0);
_chatGui.Print("Cleared simulated quest.", MessageTag, TagColor);
}
}
Stop(label);
}
- public void SimulateQuest(Quest? quest)
+ public void SimulateQuest(Quest? quest, byte sequence, int step)
{
_logger.LogInformation("SimulateQuest: {QuestId}", quest?.Id);
if (quest != null)
- _simulatedQuest = new QuestProgress(quest);
+ _simulatedQuest = new QuestProgress(quest, sequence, step);
else
_simulatedQuest = null;
}
public int Step { get; private set; }
public StepProgress StepProgress { get; private set; } = new(DateTime.Now);
- public QuestProgress(Quest quest, byte sequence = 0)
+ public QuestProgress(Quest quest, byte sequence = 0, int step = 0)
{
Quest = quest;
- SetSequence(sequence);
+ SetSequence(sequence, step);
}
- public void SetSequence(byte sequence)
+ public void SetSequence(byte sequence, int step = 0)
{
Sequence = sequence;
- SetStep(0);
+ SetStep(step);
}
public void SetStep(int step)
ImGui.SameLine();
if (ImGui.Button("Clear sim"))
{
- _questController.SimulateQuest(null);
+ _questController.SimulateQuest(null, 0, 0);
_movementController.Stop();
_questController.Stop("ClearSim");