The game I am currently working on has some particular quest functionality that is not included in the default DSFU - or at least I don't think it is. Specifically, I want each quest to have a timestamp which is updated every time the user performs an action related to this quest, and only the two most recent quests should be shown in the tracker HUD. I've managed to include a timestamp and update it by adding custom delegate implementations for SetQuest(Entry)State, but that's not sufficient. I also want the quest timestamp to be updated when a variable related to that quest changes value, for instance.
So I've run into a few questions.
- What is the best approach for writing ones own QuestLog class? I can get part of the way with the provided delegate overrides, but not for everything I want. The QuestLog also doesn't seem to be designed with overriding the full class in mind, since it's essentially a collection of static methods that are being called from throughout DSFU. I've resorted to adapting the source code of the QuestLog class itself, which is fine as long as I don't need to upgrade to a newer version of DSFU.
- When are the AddQuest methods executed? I added some prints to those methods, but they never seem to run - unless these methods are triggered from the editor somehow.
- Is there a way (a trigger or something) to execute an action on variable value change? I've experimented with ConditionObserver, but it seems like that's meant to trigger actions when a variable becomes larger / smaller / equal than a certain value, rather than "on any variable change".