Tales-of-PKMN/game/quests/quest_data.gd

42 lines
1.3 KiB
GDScript

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]