class_name Quest const QuestObjective = preload("res://scripts/Quest/Objective/QuestObjective.gd"); enum QuestState { NOT_STARTED, ACTIVE, INACTIVE, FINISHED }; var questName:String; var questState:QuestState = QuestState.NOT_STARTED; var objectives:Array[QuestObjective] = []; var currentObjective = -1; func _init( questName:String, objectives:Array[QuestObjective] ) -> void: self.questName = questName; self.objectives = objectives; func getState() -> QuestState: return questState; func start(): print("Starting quest: " + questName); questState = QuestState.ACTIVE; currentObjective = 0; func nextObjective(): currentObjective = currentObjective + 1; if currentObjective >= objectives.size(): questState = QuestState.FINISHED; return null; return objectives[currentObjective];