More work on quests
This commit is contained in:
49
data/quests/feral_pigs.gd
Normal file
49
data/quests/feral_pigs.gd
Normal file
@@ -0,0 +1,49 @@
|
||||
extends Quest
|
||||
|
||||
func _init() -> void:
|
||||
name = "Fight of the Feral Pigs"
|
||||
location = Quest.Locations.NESTORS_WOODS
|
||||
difficulty = 1
|
||||
super._init()
|
||||
|
||||
func setup() -> void:
|
||||
|
||||
var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3]
|
||||
var num_events = event_weights.pick_random()
|
||||
#The first event is guaranteed to be at the 50% mark.
|
||||
var first : bool = true
|
||||
var pranges : Array = []
|
||||
var margin : float = 0.1
|
||||
for i in range(num_events):
|
||||
var evt : Quest.Event = Quest.Event.new()
|
||||
evt.type = Quest.Event.Type.COMBAT
|
||||
evt.enemies = []
|
||||
for j in range(randi() %3 + 1):
|
||||
evt.enemies.append("feral pig")
|
||||
evt.time = 600
|
||||
evt.completed.connect(_on_combat_complete.bind(evt))
|
||||
if first:
|
||||
#Make invisible
|
||||
evt.progress_point = .5
|
||||
pranges.append([margin, evt.progress_point-margin])
|
||||
pranges.append([evt.progress_point+margin, 1 - margin])
|
||||
first = false
|
||||
else:
|
||||
evt.hidden = true
|
||||
pranges.shuffle()
|
||||
var range = pranges.pop_back()
|
||||
evt.progress_point = randf_range(range[0], range[1])
|
||||
if evt.progress_point - range[0] >= 2 * margin:
|
||||
pranges.append([range[0], evt.progress_point - margin])
|
||||
if range[1] - evt.progress_point >= 2 * margin:
|
||||
pranges.append([evt.progress_point + margin, range[1]])
|
||||
events.append(evt)
|
||||
events.sort_custom(func(a,b): return a.progress_point < b.progress_point)
|
||||
desc = "Pigs got out of Old John’s farm again. Poor fella don’t know up from down– at his age, he can’t help it. Trouble is, pigs are causing trouble in them there woods and John sure ain’t takin’ care of it. Handle 'em for us, would you?"
|
||||
location = Quest.Locations.NESTORS_WOODS
|
||||
rewards = {"exp":10, "gold":5}
|
||||
guild_rewards = {"glory":5, "gold":5}
|
||||
covenant_cost = 5
|
||||
|
||||
func _on_combat_complete(event : Quest.Event) -> void:
|
||||
rewards.gold += 2 * len(event.enemies)
|
||||
Reference in New Issue
Block a user