More work on dialogue, portraits, customizer and intro
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
class_name Quest extends Resource
|
||||
|
||||
|
||||
#The list of available quests
|
||||
static var list : Array[Quest]
|
||||
|
||||
|
||||
enum Status{
|
||||
@@ -31,10 +32,13 @@ class Event:
|
||||
VICTORY,
|
||||
DEFEAT
|
||||
}
|
||||
var hidden : bool = false
|
||||
var type : Type = Type.WAIT
|
||||
var enemies : Array[String] = []
|
||||
var progress_point : float = 0
|
||||
var time : float = 1
|
||||
var time_elapsed
|
||||
var complete : bool = false
|
||||
signal completed()
|
||||
signal failed()
|
||||
|
||||
@@ -43,6 +47,21 @@ class Event:
|
||||
var busy_list : Array = []
|
||||
var combat_state
|
||||
var dex_speed : int
|
||||
|
||||
func setup() -> void:
|
||||
pass
|
||||
|
||||
func save_dict() -> Dictionary:
|
||||
var d : Dictionary = {}
|
||||
d.hidden = hidden
|
||||
d.type = type
|
||||
d.enemies = enemies
|
||||
d.progress_point = progress_point
|
||||
d.time = time
|
||||
d.time_elapsed = time_elapsed
|
||||
d.complete = complete
|
||||
return d
|
||||
|
||||
func start(quest : Quest) -> void:
|
||||
match(type):
|
||||
Type.WAIT:
|
||||
@@ -91,7 +110,7 @@ class Event:
|
||||
|
||||
func add_to_turn_queue(combatant) -> void:
|
||||
#Calculate time
|
||||
var time = dex_speed / combatant.stats.DEX
|
||||
var time = dex_speed / max(1, combatant.stats.DEX)
|
||||
#Walk through list to find insertion point
|
||||
var idx = -1
|
||||
for i in range(len(turn_queue)):
|
||||
@@ -191,12 +210,15 @@ class Event:
|
||||
CombatState.VICTORY:
|
||||
time_elapsed += delta
|
||||
if time_elapsed >= time:
|
||||
complete = true
|
||||
completed.emit()
|
||||
Type.WAIT:
|
||||
time_elapsed += delta
|
||||
if time_elapsed >= time:
|
||||
complete = true
|
||||
completed.emit()
|
||||
|
||||
var base_name : String = ""
|
||||
var name : String = "A Basic Quest"
|
||||
var desc : String = "The default quest, with no special anything."
|
||||
var difficulty : int = 1
|
||||
@@ -233,6 +255,7 @@ func fail() -> void:
|
||||
func complete() -> void:
|
||||
status = Status.COMPLETED
|
||||
status_changed.emit(Status.COMPLETED)
|
||||
questview.show_quest_complete()
|
||||
for reward in rewards.keys():
|
||||
if reward == "gold":
|
||||
questor.gain_gold(rewards[reward])
|
||||
@@ -268,3 +291,46 @@ func difficulty_name() -> String:
|
||||
4: return "Extreme"
|
||||
5: return "Legendary"
|
||||
_: return "Unknown"
|
||||
|
||||
static func load_quest_list() -> void:
|
||||
var path = ProjectSettings.get_setting_with_override("data/quests/directory")
|
||||
var dir = DirAccess.open(path)
|
||||
var quest : Quest
|
||||
if dir:
|
||||
dir.list_dir_begin()
|
||||
var filename = dir.get_next()
|
||||
while filename != "":
|
||||
if not dir.current_is_dir() and filename.get_extension() == "gd":
|
||||
var file = load(path + "/" + filename).new()
|
||||
if file is Quest:
|
||||
list.append(file)
|
||||
filename = dir.get_next()
|
||||
dir.list_dir_end()
|
||||
|
||||
static func generate(parameters : Dictionary) -> Quest:
|
||||
return null
|
||||
|
||||
func save_dict() -> Dictionary:
|
||||
var d : Dictionary = {}
|
||||
d.name = name
|
||||
d.base_name = base_name
|
||||
d.desc = desc
|
||||
d.difficulty = difficulty
|
||||
d.location = location
|
||||
d.steps = steps
|
||||
#TODO: Convert these!
|
||||
#d.rewards = rewards
|
||||
#d.guild_rewards = guild_rewards
|
||||
|
||||
d.covenant_cost = covenant_cost
|
||||
d.length = length
|
||||
d.progress = progress
|
||||
d.current_step = current_step
|
||||
d.taken = taken
|
||||
d.status = status
|
||||
|
||||
var lst : Array = []
|
||||
for evt in events:
|
||||
lst.append(evt.save_dict())
|
||||
d.events = lst
|
||||
return d
|
||||
|
||||
Reference in New Issue
Block a user