Stuff
This commit is contained in:
@@ -22,8 +22,67 @@ class Event:
|
||||
var time_elapsed
|
||||
signal completed()
|
||||
|
||||
var participants : Array = []
|
||||
var turn_queue : Array = []
|
||||
var busy_list : Array = []
|
||||
var dex_speed : int
|
||||
|
||||
func start_combat(adventurers : Array, enemies : Array) -> void:
|
||||
participants = []
|
||||
participants.append_array(adventurers)
|
||||
participants.append_array(enemies)
|
||||
|
||||
var c_order : Array = []
|
||||
var dex_speed = 0
|
||||
for p in participants:
|
||||
c_order.append([p, p.stats.dex])
|
||||
if p.stats.dex > dex_speed:
|
||||
dex_speed = p.stats.dex
|
||||
|
||||
c_order.sort_custom(func(a,b): return a[1] > b[1])
|
||||
var delay = 5
|
||||
var last_time = 0
|
||||
for c in c_order:
|
||||
var time = delay * dex_speed / c[1]
|
||||
turn_queue.append({"combatant":c[0], "time": time - last_time})
|
||||
last_time = time
|
||||
|
||||
func execute_attack(combatant, target) -> void:
|
||||
busy_list.append(target)
|
||||
#TODO: Make the combatant execute an attack
|
||||
#TODO: Make the target take damage
|
||||
|
||||
func execute_action(combatant) -> void:
|
||||
busy_list = [combatant]
|
||||
#TODO: Come up with other options than just swinging at each other
|
||||
var enemies : Array = get_enemy_list(combatant)
|
||||
var target = enemies.pick_random()
|
||||
execute_attack(combatant, target)
|
||||
|
||||
func get_enemy_list(combatant) -> Array:
|
||||
var lst = []
|
||||
for p in participants:
|
||||
if p != combatant:
|
||||
lst.append(p)
|
||||
return lst
|
||||
|
||||
func resolve_combat() -> void:
|
||||
pass
|
||||
|
||||
func process(delta : float) -> void:
|
||||
#TODO: Make quest combat work
|
||||
if type == Type.COMBAT:
|
||||
if len(busy_list) < 1:
|
||||
if len(turn_queue) > 0:
|
||||
turn_queue[0].time -= delta
|
||||
if turn_queue[0].time <= 0:
|
||||
var c = turn_queue.pop_front()
|
||||
if len(turn_queue) > 0:
|
||||
turn_queue[0].time += c.time
|
||||
execute_action(c.combatant)
|
||||
else:
|
||||
resolve_combat()
|
||||
|
||||
time_elapsed += delta
|
||||
if time_elapsed >= time:
|
||||
completed.emit()
|
||||
@@ -74,6 +133,7 @@ func complete() -> void:
|
||||
|
||||
func num_events() -> int:
|
||||
return len(events)
|
||||
|
||||
#TODO: Put in quest requirements
|
||||
func is_eligible(member : AdventurerData) -> bool:
|
||||
return !taken
|
||||
|
||||
Reference in New Issue
Block a user