/
mrFeld
/
Platformer
Обзор
Документация
Войти
/
mrFeld
/
Platformer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Script/Quests/quest.gd
60 строк
2 KB
Neterov Vladimir
item_questV0.1
04 янв 2026, 15:42
04 янв 2026, 15:42
40fc304
Код
Авторство
О чём код?
class_name Quest extends QuestManager @export var quest_id: String = "quest_1" func start_quest() -> void: if quest_status == QuestStatus.available: quest_status = QuestStatus.started QuestBox.visible = true QuestTitle.text = quest_name QuestDescription.text = quest_description var data: Dictionary = make_quest_data() data["status"] = "started" add_quest(quest_id, data) func reached_goal() -> void: if quest_status == QuestStatus.started: quest_status = QuestStatus.reached_goal QuestDescription.text = reached_goal_text if active_quests.has(quest_id): var quest: Dictionary = active_quests[quest_id] quest["status"] = "reached_goal" active_quests[quest_id] = quest quest_updated.emit(quest_id, quest) func finish_quest() -> void: if quest_status == QuestStatus.reached_goal: quest_status = QuestStatus.finished QuestBox.visible = false _complete_quest(quest_id) PlayerInventory.add_item(reward[0], reward[1]) func increase_progress(amount: float) -> void: add_progress(quest_id, amount) if active_quests.has(quest_id): var quest: Dictionary = active_quests[quest_id] var progress: float = float(quest.get("progress", 0.0)) var goal: float = float(quest.get("goal", 1.0)) if progress >= goal and quest_status == QuestStatus.started: reached_goal() func on_item_collected(item_name: String, amount: int = 1) -> void: # Засчитываем только во время выполнения квеста if quest_status != QuestStatus.started: return # Если required_item_name не задан — значит этот квест не "сборочный" if required_item_name == "": return # Засчитываем только нужный предмет if item_name != required_item_name: return # Нужный предмет — добавляем прогресс increase_progress(float(amount))