extends Node var base: Base ## Quest this node holds var quest: Quest ## Const of answer when quest is null const NO_QUEST = "BASE_TAKE_QUEST_FAILED" ## Const of answer when quest is not null const HAS_QUEST = "BASE_TAKE_QUEST_SUCCEED" ## Const of quest types const QUEST_TYPE = { Quest.Type.Elimination: "BASE_QUEST_ELIMINATION", Quest.Type.Delivery: "BASE_QUEST_DELIVERY" } ## Const of restrictions const RESTRICTIONS = { Quest.Restriction.NoDeaths: "BASE_QUEST_RESTRICTION_NO_DEATHS", Quest.Restriction.NoWeapon: "BASE_QUEST_RESTRICTION_NO_WEAPON", Quest.Restriction.Timer: "BASE_QUEST_RESTRICTION_TIMER" } ## Answer about fetching quest var answer: String = "" ## Last quest info var info: String = "" func _ready(): get_tree().create_timer(0.05).timeout.connect(fetch_quest) func fetch_quest(): base = get_parent().base quest = base.quest make_answer(quest) ## Makes quest fetch answer func make_answer(quest: Quest): var has_quest = quest != null if !has_quest: answer = tr(NO_QUEST) return get_info(quest) answer = tr(HAS_QUEST).format({"quest_info": info}) ## Gets quest info func get_info(quest: Quest): var quest_format = {} match quest.type: Quest.Type.Elimination: quest_format["amount"] = quest.progress_max quest_format["target_class"] = tr(quest.data["target_class"]) Quest.Type.Delivery: quest_format["base_name"] = tr(quest.data["base_name"]) var restrictions = "" for restriction in quest.restrictions: restrictions += tr(RESTRICTIONS[restriction]) + "\n" quest_format["restrictions"] = restrictions quest_format["reward"] = quest.reward_money var quest_info = tr(QUEST_TYPE[quest.type]).format(quest_format) info = quest_info ## Assigns quest to player by returning it and nullifying self quest func assign_to_player() -> Quest: quest.data["given_by"] = base.base_name quest.status = Quest.Status.Taken var temp_quest = quest quest = null base.quest = null make_answer(quest) return temp_quest