50 lines
1.8 KiB
GDScript
50 lines
1.8 KiB
GDScript
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)
|