41 lines
1 KiB
GDScript
41 lines
1 KiB
GDScript
class_name Quest
|
|
|
|
enum TYPE {ELIMINATION, DELIVERY, ESCORT, RACE, DIVERSE}
|
|
enum RESTRICTIONS{NO_DEATHS,NO_WEAPON,TIMER}
|
|
|
|
var type : Quest.TYPE = Quest.TYPE.ELIMINATION
|
|
var progress_max : int = 1
|
|
var progress : int = 0
|
|
var reward_money : float
|
|
var restrictions : Array[RESTRICTIONS] = []
|
|
var data : Dictionary = {}
|
|
var new : bool = true
|
|
|
|
signal quest_added
|
|
signal quest_ended
|
|
signal quest_failed
|
|
|
|
func create(type : TYPE, progress_max : int, reward_money : float, restrictions : Array[RESTRICTIONS] = [], data : Dictionary = {}) -> void:
|
|
self.type = type
|
|
self.progress_max = progress_max
|
|
self.reward_money = reward_money
|
|
self.restrictions = restrictions
|
|
self.data = data
|
|
quest_added.emit(self)
|
|
self.new = false
|
|
|
|
func do_progress() -> void:
|
|
progress += 1
|
|
if progress >= progress_max:
|
|
quest_ended.emit(true)
|
|
|
|
func fail() -> void:
|
|
quest_failed.emit(false)
|
|
|
|
func _restriction_no_deaths():
|
|
if restrictions.has(RESTRICTIONS.NO_DEATHS):
|
|
fail()
|
|
|
|
func _restriction_no_weapon():
|
|
if restrictions.has(RESTRICTIONS.NO_WEAPON):
|
|
fail()
|