Quest generating + quest adding interface + some bugfixes

This commit is contained in:
gotfishmakesticks 2023-11-16 16:46:31 +03:00
commit f4cf1ef4e9
7 changed files with 71 additions and 20 deletions

View file

@ -15,7 +15,7 @@ var base
@onready var current_quest = $QuestMenu/CurrentQuest
@onready var new_quest = $QuestMenu/NewQuest
@onready var accept_quest = $QuestMenu/NewQuest/AcceptQuest
@onready var new_quest_status = $QuestMenu/NewQuest/QuestStatus
var base_types = ["Power Supply", "Mining", "Food Production", "Trading", "Modules"]
func _ready():
@ -28,6 +28,7 @@ func _ready():
abandon_quest.button_up.connect(quest_abandon)
complete_quest.button_up.connect(quest_complete)
accept_quest.button_up.connect(quest_accept)
quest_status_update()
func update_lists():
buy_list.clear()
@ -109,6 +110,7 @@ func quest_abandon():
ship.quest.fail()
current_quest.visible = false
new_quest.visible = true
quest_status_update()
func quest_complete():
if !ship.quest_completed:
@ -117,23 +119,31 @@ func quest_complete():
ship.quest_completed = false
current_quest.visible = false
new_quest.visible = true
quest_status_update()
func quest_accept():
pass
ship.quest.create(base.quest.type, base.quest.progress_max, base.quest.reward_money, base.quest.restrictions, base.quest.data)
ship.quest.progress = 0
new_quest.visible = false
current_quest.visible = true
quest_status_update()
func quest_status_update():
var ship_has_quest = !ship.quest.new or ship.quest_completed
var upd_quest = ship.quest if ship_has_quest else base.quest
var upd_text = current_quest_status if ship_has_quest else new_quest_status
var restriction_typing = {
Quest.RESTRICTIONS.NO_DEATHS : '- Destruction of your ship will lead to quest failure.',
Quest.RESTRICTIONS.NO_WEAPON : '- Using any weapon (even accidently) is prohibited.',
Quest.RESTRICTIONS.TIMER : '- You have {sec} seconds to complete the quest since it is accepted.'
}
if ship.quest.data.has('timer'):
restriction_typing[Quest.RESTRICTIONS.TIMER] = restriction_typing[Quest.RESTRICTIONS.TIMER].format(ship.quest.data['timer'])
if upd_quest.data.has('timer'):
restriction_typing[Quest.RESTRICTIONS.TIMER] = restriction_typing[Quest.RESTRICTIONS.TIMER].format({"sec" : upd_quest.data['timer']})
var template = "Type: {type}\n\nObjective: {objective_text}\n\nReward: {reward} money units\n\nRestrictions: {restrictions}"
var typed_templates = {
Quest.TYPE.ELIMINATION : {
"type" : "Elimination",
"objective" : "Destroy {req} hostile ships [ {cur} / {req} ]".format({"cur" : ship.quest.progress, "req" : ship.quest.progress_max})
"objective" : "Destroy {req} hostile ships [ {cur} / {req} ]".format({"cur" : upd_quest.progress, "req" : upd_quest.progress_max})
},
Quest.TYPE.DELIVERY : {
@ -142,16 +152,16 @@ func quest_status_update():
}
}
var restrictions = ""
if len(ship.quest.restrictions) == 0 :
if len(upd_quest.restrictions) == 0 :
restrictions = "None"
else:
for restriction in ship.quest.restrictions:
restrictions.append("\n", restriction_typing[restriction])
for restriction in upd_quest.restrictions:
restrictions += "\n" + restriction_typing[restriction]
var formatting = {
"type" : typed_templates[ship.quest.type]['type'],
"objective_text" : typed_templates[ship.quest.type]['objective'],
"reward" : ship.quest.reward_money,
"type" : typed_templates[upd_quest.type]['type'],
"objective_text" : typed_templates[upd_quest.type]['objective'],
"reward" : upd_quest.reward_money,
"restrictions" : restrictions
}
current_quest_status.text = template.format(formatting)
upd_text.text = template.format(formatting)
complete_quest.disabled = !ship.quest_completed