extends Resource class_name QuestData enum QuestState { LOCKED, AVAILABLE, ACTIVE, COMPLETED, FAILED } enum Category { MAIN, SIDE, HIDDEN } @export var quest_id: StringName = &"" @export var title: String = "" @export_multiline var description: String = "" @export var category: Category = Category.SIDE @export var objectives: Array[QuestObjective] = [] @export var rewards: Array[QuestReward] = [] @export var prerequisites: Array[StringName] = [] @export var requires_manual_unlock: bool = false @export var chapter_index: int = 0 ## NOUVEAU : conditions sur les flags pour que la quête soit disponible. ## Exemple : ## { &"prof_rencontre": true, &"badges_gagnes": 3 } @export var required_flags: Dictionary = {} ## NOUVEAU : si l'un de ces flags est vrai, la quête ne se débloque PAS. ## Utile pour les choix exclusifs (ex: avoir choisi la Team Rocket). @export var blocking_flags: Dictionary = {} var state: QuestState = QuestState.LOCKED func get_required_objectives() -> Array[QuestObjective]: return objectives.filter(func(o): return not o.is_optional) func are_all_objectives_complete() -> bool: for obj in get_required_objectives(): if not obj.is_complete(): return false return true func get_state_name() -> String: return QuestState.keys()[state] func get_category_name() -> String: return Category.keys()[category]