197 lines
7.8 KiB
Text
197 lines
7.8 KiB
Text
[gd_scene format=3 uid="uid://cu1nh3rbcnn3w"]
|
|
|
|
[ext_resource type="PackedScene" uid="uid://hirlnhjbqv2u" path="res://assets/characters/bot.blend" id="1_fssyu"]
|
|
[ext_resource type="Script" uid="uid://66dkrpu2h7kw" path="res://behaviours/move_to_target.gd" id="2_exeof"]
|
|
[ext_resource type="Script" uid="uid://bm6unenoiyy5h" path="res://behaviours/follow_target.gd" id="2_klwnj"]
|
|
[ext_resource type="Script" uid="uid://bp4utstetxnhr" path="res://behaviours/animate.gd" id="3_klwnj"]
|
|
[ext_resource type="PackedScene" uid="uid://deuif6d8spece" path="res://objects/awareness_area.tscn" id="3_tpgvx"]
|
|
[ext_resource type="PackedScene" uid="uid://dplnyssh3gglv" path="res://objects/smokebomb.tscn" id="4_obqat"]
|
|
[ext_resource type="PackedScene" uid="uid://ljmtmtljlyoc" path="res://objects/debug_label.tscn" id="5_jh7vn"]
|
|
|
|
[sub_resource type="GDScript" id="GDScript_klwnj"]
|
|
resource_name = "NinjaBody"
|
|
script/source = "extends CharacterBody3D
|
|
|
|
@export var player : Node3D
|
|
|
|
var hurt_high : bool = false
|
|
var target : Node3D
|
|
|
|
func _physics_process(delta : float):
|
|
var motion : Vector3 = %AnimationPlayer.get_root_motion_position() / delta
|
|
velocity = motion.x * global_basis.x + motion.z * global_basis.z + velocity.y * Vector3.UP
|
|
velocity += get_gravity() * delta
|
|
move_and_slide()
|
|
|
|
func get_hiding_spot():
|
|
return null if %HidingSpotAwareness.aware.is_empty() else %HidingSpotAwareness.aware[0]
|
|
"
|
|
|
|
[sub_resource type="GDScript" id="GDScript_jh7vn"]
|
|
resource_name = "EnemyInPlayerRange"
|
|
script/source = "extends BehaviourAction
|
|
|
|
@onready var body := get_behaviour_tree().get_parent() as CharacterBody3D
|
|
|
|
func _enter() -> int:
|
|
return Success if body.player.target and body.player.target.is_in_group(\"EnemyHitbox\") else Fail
|
|
"
|
|
|
|
[sub_resource type="GDScript" id="GDScript_exeof"]
|
|
resource_name = "SelectHidingSpot"
|
|
script/source = "extends BehaviourAction
|
|
|
|
@onready var body := get_behaviour_tree().get_parent() as CharacterBody3D
|
|
|
|
func _enter() -> int:
|
|
body.target = body.get_hiding_spot()
|
|
if body.target != null:
|
|
return Success
|
|
else:
|
|
return Fail
|
|
"
|
|
|
|
[sub_resource type="GDScript" id="GDScript_obqat"]
|
|
resource_name = "SelectEnemy"
|
|
script/source = "extends BehaviourAction
|
|
|
|
@onready var body := get_behaviour_tree().get_parent() as CharacterBody3D
|
|
|
|
func _enter() -> int:
|
|
if body.player.target and body.player.target.is_in_group(\"EnemyHitbox\"):
|
|
body.target = body.player.target
|
|
return Success
|
|
else:
|
|
return Fail
|
|
"
|
|
|
|
[sub_resource type="GDScript" id="GDScript_tyg5v"]
|
|
resource_name = "ThrowSmokeBomb"
|
|
script/source = "extends BehaviourAction
|
|
|
|
@export var smoke_bomb : PackedScene
|
|
|
|
@onready var body := get_behaviour_tree().get_parent() as CharacterBody3D
|
|
|
|
func _enter() -> int:
|
|
if not body.target or not smoke_bomb:
|
|
return Fail
|
|
var instance := smoke_bomb.instantiate() as Node3D
|
|
if not instance:
|
|
push_error(\"what? (invalid smoke bomb scene, ensure root is Node3D derived)\")
|
|
return Fail
|
|
instance.position = body.target.global_position
|
|
get_tree().current_scene.add_child(instance)
|
|
return Success
|
|
"
|
|
|
|
[sub_resource type="GDScript" id="GDScript_o1uh3"]
|
|
resource_name = "WaitForSafety"
|
|
script/source = "extends BehaviourAction
|
|
|
|
@onready var body := get_behaviour_tree().get_parent() as CharacterBody3D
|
|
|
|
func _enter() -> int:
|
|
return Running
|
|
|
|
func _execute() -> int:
|
|
return Running if body.player.target and body.player.target.is_in_group(\"EnemyHitbox\") else Success
|
|
"
|
|
|
|
[sub_resource type="GDScript" id="GDScript_tpgvx"]
|
|
resource_name = "SelectPlayer"
|
|
script/source = "extends BehaviourAction
|
|
|
|
@onready var body := get_behaviour_tree().get_parent() as CharacterBody3D
|
|
|
|
func _enter() -> int:
|
|
body.target = body.player
|
|
return Success if body.player else Fail
|
|
"
|
|
|
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lyptg"]
|
|
albedo_color = Color(0.4745098, 0.16862746, 0.61960787, 1)
|
|
|
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_lyptg"]
|
|
radius = 0.30273438
|
|
|
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_exeof"]
|
|
height = 6.5117188
|
|
radius = 13.45459
|
|
|
|
[node name="Ninja" unique_id=1341242765 instance=ExtResource("1_fssyu")]
|
|
collision_layer = 2
|
|
collision_mask = 3
|
|
script = SubResource("GDScript_klwnj")
|
|
|
|
[node name="BehaviourTree" type="BehaviourTree" parent="." index="0" unique_id=1843075231]
|
|
|
|
[node name="BehaviourRepeater" type="BehaviourRepeater" parent="BehaviourTree" index="0" unique_id=1408557668]
|
|
|
|
[node name="BehaviourSelector" type="BehaviourSelector" parent="BehaviourTree/BehaviourRepeater" index="0" unique_id=487995934]
|
|
|
|
[node name="SequenceCombat" type="BehaviourSequence" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector" index="0" unique_id=664462649]
|
|
|
|
[node name="EnemyInPlayerRange" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceCombat" index="0" unique_id=1499130003]
|
|
script = SubResource("GDScript_jh7vn")
|
|
|
|
[node name="SelectHidingSpot" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceCombat" index="1" unique_id=1743644615]
|
|
script = SubResource("GDScript_exeof")
|
|
|
|
[node name="MoveToHide" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceCombat" index="2" unique_id=1071198062]
|
|
script = ExtResource("2_exeof")
|
|
|
|
[node name="PlayHide" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceCombat" index="3" unique_id=1052844547]
|
|
script = ExtResource("3_klwnj")
|
|
anim_name = "duck"
|
|
wait_for_finish = false
|
|
|
|
[node name="SelectAttacker" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceCombat" index="4" unique_id=520574199]
|
|
script = SubResource("GDScript_obqat")
|
|
|
|
[node name="ThrowSmokeBomb" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceCombat" index="5" unique_id=1944021610]
|
|
script = SubResource("GDScript_tyg5v")
|
|
smoke_bomb = ExtResource("4_obqat")
|
|
|
|
[node name="WaitForSafety" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceCombat" index="6" unique_id=622297891]
|
|
script = SubResource("GDScript_o1uh3")
|
|
|
|
[node name="SequenceFollowPlayer" type="BehaviourSequence" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector" index="1" unique_id=1977466711]
|
|
|
|
[node name="SelectPlayer" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceFollowPlayer" index="0" unique_id=92830272]
|
|
script = SubResource("GDScript_tpgvx")
|
|
|
|
[node name="FollowTarget" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector/SequenceFollowPlayer" index="1" unique_id=282888066]
|
|
script = ExtResource("2_klwnj")
|
|
target_distance = 3.0
|
|
|
|
[node name="Idle" type="BehaviourAction" parent="BehaviourTree/BehaviourRepeater/BehaviourSelector" index="2" unique_id=1038185599]
|
|
script = ExtResource("3_klwnj")
|
|
anim_name = "duck"
|
|
allow_interrupt = false
|
|
wait_for_finish = false
|
|
blend = 0.2
|
|
|
|
[node name="Mesh" parent="Character/Skeleton3D" parent_id_path=PackedInt32Array(750883464) index="0" unique_id=233192374]
|
|
material_override = SubResource("StandardMaterial3D_lyptg")
|
|
|
|
[node name="AnimationPlayer" parent="." index="2" unique_id=1278488642]
|
|
unique_name_in_owner = true
|
|
root_motion_track = NodePath("Character/Skeleton3D:root")
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="." index="3" unique_id=1579307622]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
|
shape = SubResource("CapsuleShape3D_lyptg")
|
|
|
|
[node name="HidingSpotAwareness" parent="." index="4" unique_id=986494999 instance=ExtResource("3_tpgvx")]
|
|
unique_name_in_owner = true
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.92650235, 0)
|
|
target_group = "HidingSpot"
|
|
|
|
[node name="CollisionShape3D" parent="HidingSpotAwareness" index="0" unique_id=2035583636]
|
|
shape = SubResource("CylinderShape3D_exeof")
|
|
|
|
[node name="DebugLabel" parent="." index="5" unique_id=1911478572 instance=ExtResource("5_jh7vn")]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.1390142, 0)
|
|
|
|
[editable path="HidingSpotAwareness"]
|