- I call QuestListContainer.RecordData
- QuestListContainer.RecordData calls QuestStateSerializer.Serialize (line 338)
- That calls QuestStateSerializer.WriteQuestDataToStream (line 39)
- That calls Quest.UpdateCooldown (line 80)
- Finally this calls into BecomeOfferable, which sets it to be WaitingToStart (see snippet below)
TL;DR: If I save the quest while the user is in progress, they can't finish it, because it's changed from Active to WaitingToStart, instead of just saving it as Active.
Spoiler
Code: Select all
public void BecomeOfferable()
{
try
{
if (GetState() != QuestState.WaitingToStart) SetState(QuestState.WaitingToStart);
questOfferable(this);
SetQuestIndicatorState(questGiverID, QuestIndicatorState.Offer);
}
catch (Exception e) // Don't let exceptions in user-added events break our code.
{
if (Debug.isDebugBuild) Debug.LogException(e);
}
}