This commit is contained in:
2025-08-21 11:41:16 -04:00
parent a5d5a05369
commit 906f761041
103 changed files with 2670 additions and 250 deletions

View File

@@ -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