40 lines
970 B
GDScript
40 lines
970 B
GDScript
extends Unit
|
|
class_name Enemy
|
|
|
|
var sighted: bool = true:
|
|
set(val):
|
|
sighted = val
|
|
visible = sighted
|
|
|
|
var target_citizen: Citizen = null
|
|
|
|
func _ready() -> void:
|
|
sighted = false
|
|
|
|
#go_to_destination(Vector3(17,1,15))
|
|
|
|
func _process(delta: float) -> void:
|
|
super(delta)
|
|
|
|
if target_citizen == null:
|
|
target_citizen = get_tree().get_nodes_in_group("Citizens").pick_random() as Citizen
|
|
|
|
if target_citizen != null:
|
|
var chase_action: UnitAction.ChaseAction = UnitAction.ChaseAction.new()
|
|
chase_action.unit = self
|
|
chase_action.target = target_citizen
|
|
action = chase_action
|
|
|
|
var status: Unit.TaskStatus = await wait_for_task_update()
|
|
if status != TaskStatus.DONE:
|
|
target_citizen = null
|
|
return
|
|
|
|
var attack_action: UnitAction.AttackUnitAction = UnitAction.AttackUnitAction.new()
|
|
attack_action.unit = self
|
|
attack_action.victim = target_citizen
|
|
action = attack_action
|
|
|
|
status = await wait_for_task_update()
|
|
target_citizen = null
|