[gd_resource type="BehaviorTree" load_steps=49 format=3 uid="uid://cpcnbi81jqge4"]

[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_ce4la"]
[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="2_atyuj"]
[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="3_3mw7l"]
[ext_resource type="Script" path="res://demo/ai/tasks/back_away.gd" id="4_6dr32"]
[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="5_dho0d"]
[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="6_0pfsl"]

[sub_resource type="BlackboardPlan" id="BlackboardPlan_8ay3j"]
var/speed/name = &"speed"
var/speed/type = 3
var/speed/value = 400.0
var/speed/hint = 1
var/speed/hint_string = "10,1000,10"

[sub_resource type="BBNode" id="BBNode_lpri5"]
resource_name = "AnimationPlayer"
saved_value = NodePath("AnimationPlayer")

[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_p3e7a"]
animation_player = SubResource("BBNode_lpri5")
animation_name = &"idle"
blend = 0.1

[sub_resource type="BTRandomWait" id="BTRandomWait_j6cjm"]
min_duration = 2.0
max_duration = 3.0

[sub_resource type="BTSequence" id="BTSequence_5thv4"]
custom_name = "Chill"
children = [SubResource("BTPlayAnimation_p3e7a"), SubResource("BTRandomWait_j6cjm")]

[sub_resource type="BTCooldown" id="BTCooldown_oms7a"]
children = [SubResource("BTSequence_5thv4")]
trigger_on_failure = true

[sub_resource type="BTAction" id="BTAction_ohfp7"]
script = ExtResource("1_ce4la")
group = &"player"
output_var = &"target"

[sub_resource type="BTCondition" id="BTCondition_7a5nv"]
script = ExtResource("2_atyuj")
distance_min = 0.0
distance_max = 150.0
target_var = &"target"

[sub_resource type="BTAction" id="BTAction_ddvrs"]
script = ExtResource("3_3mw7l")
target_var = &"target"

[sub_resource type="BBNode" id="BBNode_c4nfu"]
resource_name = "AnimationPlayer"
saved_value = NodePath("AnimationPlayer")

[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_yytkn"]
await_completion = 3.0
animation_player = SubResource("BBNode_c4nfu")
animation_name = &"attack_3"
blend = 0.1

[sub_resource type="BTCooldown" id="BTCooldown_ejg6q"]
children = [SubResource("BTPlayAnimation_yytkn")]
duration = 3.0

[sub_resource type="BTSequence" id="BTSequence_eikr4"]
custom_name = "Melee"
children = [SubResource("BTAction_ohfp7"), SubResource("BTCondition_7a5nv"), SubResource("BTAction_ddvrs"), SubResource("BTCooldown_ejg6q")]

[sub_resource type="BTCondition" id="BTCondition_h75v8"]
script = ExtResource("2_atyuj")
distance_min = 0.0
distance_max = 300.0
target_var = &"target"

[sub_resource type="BTAction" id="BTAction_wpt7j"]
script = ExtResource("3_3mw7l")
target_var = &"target"

[sub_resource type="BBNode" id="BBNode_iv62h"]
resource_name = "AnimationPlayer"
saved_value = NodePath("AnimationPlayer")

[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_wnaul"]
animation_player = SubResource("BBNode_iv62h")
animation_name = &"walk"
blend = 0.1
speed = -1.0

[sub_resource type="BTAction" id="BTAction_h2efl"]
script = ExtResource("4_6dr32")
speed_var = &"speed"
max_angle_deviation = 0.7

[sub_resource type="BTTimeLimit" id="BTTimeLimit_wm5g2"]
children = [SubResource("BTAction_h2efl")]
time_limit = 1.0

[sub_resource type="BTSequence" id="BTSequence_wh4dl"]
custom_name = "Back away"
children = [SubResource("BTCondition_h75v8"), SubResource("BTAction_wpt7j"), SubResource("BTPlayAnimation_wnaul"), SubResource("BTTimeLimit_wm5g2")]

[sub_resource type="BTComment" id="BTComment_mqte5"]
custom_name = "Get into position"

[sub_resource type="BBNode" id="BBNode_edmui"]
resource_name = "AnimationPlayer"
saved_value = NodePath("AnimationPlayer")

[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_vjtpq"]
animation_player = SubResource("BBNode_edmui")
animation_name = &"walk"
blend = 0.1

[sub_resource type="BTAction" id="BTAction_4mmh0"]
script = ExtResource("5_dho0d")
target_var = &"target"
flank_side = 0
range_min = 300
range_max = 700
position_var = &"pos"

[sub_resource type="BTAction" id="BTAction_vb5c3"]
script = ExtResource("6_0pfsl")
target_position_var = &"pos"
speed_var = &"speed"
tolerance = 50.0
avoid_var = &""

[sub_resource type="BTTimeLimit" id="BTTimeLimit_jyks2"]
children = [SubResource("BTAction_vb5c3")]

[sub_resource type="BTComment" id="BTComment_ym6nj"]
custom_name = "Short break before action"

[sub_resource type="BTAction" id="BTAction_fkevy"]
script = ExtResource("3_3mw7l")
target_var = &"target"

[sub_resource type="BBNode" id="BBNode_lh25u"]
resource_name = "AnimationPlayer"
saved_value = NodePath("AnimationPlayer")

[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_vcjeq"]
animation_player = SubResource("BBNode_lh25u")
animation_name = &"idle"
blend = 0.1

[sub_resource type="BTWait" id="BTWait_42smh"]
duration = 0.2

[sub_resource type="BTComment" id="BTComment_nbp2b"]
custom_name = "Spit fire!"

[sub_resource type="BBNode" id="BBNode_cqw71"]
resource_name = "AnimationPlayer"
saved_value = NodePath("AnimationPlayer")

[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_214yn"]
await_completion = 3.0
animation_player = SubResource("BBNode_cqw71")
animation_name = &"spit"
blend = 0.1

[sub_resource type="BBNode" id="BBNode_dv5b5"]
resource_name = "."
saved_value = NodePath(".")

[sub_resource type="BTCallMethod" id="BTCallMethod_lk7i6"]
node = SubResource("BBNode_dv5b5")
method = &"spit_fire"

[sub_resource type="BTComment" id="BTComment_fndxk"]
custom_name = "Wind down"

[sub_resource type="BBNode" id="BBNode_m68ui"]
resource_name = "AnimationPlayer"
saved_value = NodePath("AnimationPlayer")

[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_m7gyp"]
animation_player = SubResource("BBNode_m68ui")
animation_name = &"idle"
blend = 0.1

[sub_resource type="BTRandomWait" id="BTRandomWait_v0el8"]
min_duration = 0.7
max_duration = 1.5

[sub_resource type="BTSequence" id="BTSequence_djtph"]
custom_name = "Spit fire"
children = [SubResource("BTComment_mqte5"), SubResource("BTPlayAnimation_vjtpq"), SubResource("BTAction_4mmh0"), SubResource("BTTimeLimit_jyks2"), SubResource("BTComment_ym6nj"), SubResource("BTAction_fkevy"), SubResource("BTPlayAnimation_vcjeq"), SubResource("BTWait_42smh"), SubResource("BTComment_nbp2b"), SubResource("BTPlayAnimation_214yn"), SubResource("BTCallMethod_lk7i6"), SubResource("BTComment_fndxk"), SubResource("BTPlayAnimation_m7gyp"), SubResource("BTRandomWait_v0el8")]

[sub_resource type="BTSelector" id="BTSelector_feba6"]
children = [SubResource("BTCooldown_oms7a"), SubResource("BTSequence_eikr4"), SubResource("BTSequence_wh4dl"), SubResource("BTSequence_djtph")]

[resource]
description = "Here, we use the [con]InRange[/con] condition task together with [comp]Sequence[/comp] and [comp]Selector[/comp] to create a reactive behavior for this agent. When the player comes close, this agent will attempt to hit them with a melee attack and move away afterward for a better ranged position."
blackboard_plan = SubResource("BlackboardPlan_8ay3j")
root_task = SubResource("BTSelector_feba6")
