diff --git a/scene/ai/bullet01.tscn b/scene/ai/bullet01.tscn index 9340f6d..d21e519 100644 --- a/scene/ai/bullet01.tscn +++ b/scene/ai/bullet01.tscn @@ -1,28 +1,73 @@ -[gd_scene load_steps=6 format=3 uid="uid://bng8h2cdq0j5m"] +[gd_scene load_steps=9 format=3 uid="uid://bgku27xawscbt"] [ext_resource type="Script" path="res://addons/beehave/nodes/beehave_tree.gd" id="1_r673b"] +[ext_resource type="Script" path="res://addons/beehave/nodes/composites/selector.gd" id="2_5ltau"] [ext_resource type="Script" path="res://addons/beehave/nodes/composites/sequence.gd" id="3_yeaa5"] +[ext_resource type="Script" path="res://addons/beehave/nodes/leaves/blackboard_compare.gd" id="4_40g6e"] [ext_resource type="Script" path="res://script/ai/action/action_destroy.gd" id="5_0a0n1"] [ext_resource type="Script" path="res://script/ai/action/action_wait.gd" id="6_omj7f"] +[ext_resource type="Script" path="res://addons/beehave/nodes/leaves/blackboard_set.gd" id="7_42vmm"] [ext_resource type="Script" path="res://script/ai/action/action_attack1.gd" id="7_wcjhl"] [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_r673b") -blackboard = NodePath("@Node@80344") +blackboard = NodePath("@Node@19131") -[node name="SequenceComposite" type="Node" parent="."] +[node name="SelectorComposite" type="Node" parent="."] +script = ExtResource("2_5ltau") + +[node name="SequenceComposite" type="Node" parent="SelectorComposite"] script = ExtResource("3_yeaa5") -[node name="ActionWait2" type="Node" parent="SequenceComposite"] +[node name="BlackboardCompareCondition" type="Node" parent="SelectorComposite/SequenceComposite"] +script = ExtResource("4_40g6e") +left_operand = "stage" +right_operand = "0" + +[node name="ActionWait" type="Node" parent="SelectorComposite/SequenceComposite"] script = ExtResource("6_omj7f") wait_time = 0.1 -[node name="ActionAttack1" type="Node" parent="SequenceComposite"] +[node name="ActionAttack1" type="Node" parent="SelectorComposite/SequenceComposite"] script = ExtResource("7_wcjhl") -[node name="ActionWait" type="Node" parent="SequenceComposite"] +[node name="BlackboardSetAction" type="Node" parent="SelectorComposite/SequenceComposite"] +script = ExtResource("7_42vmm") +key = "stage" +value = "2" + +[node name="SequenceComposite2" type="Node" parent="SelectorComposite"] +script = ExtResource("3_yeaa5") + +[node name="BlackboardCompareCondition" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("4_40g6e") +left_operand = "stage" +right_operand = "1" + +[node name="ActionWait" type="Node" parent="SelectorComposite/SequenceComposite2"] script = ExtResource("6_omj7f") wait_time = 0.1 -[node name="ActionDestroy" type="Node" parent="SequenceComposite"] +[node name="ActionAttack1" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("7_wcjhl") + +[node name="BlackboardSetAction2" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("7_42vmm") +key = "2" +value = "2" + +[node name="BlackboardSetAction" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("7_42vmm") +key = "stage" +value = "2" + +[node name="SequenceComposite3" type="Node" parent="SelectorComposite"] +script = ExtResource("3_yeaa5") + +[node name="BlackboardCompareCondition" type="Node" parent="SelectorComposite/SequenceComposite3"] +script = ExtResource("4_40g6e") +left_operand = "stage" +right_operand = "2" + +[node name="ActionDestroy" type="Node" parent="SelectorComposite/SequenceComposite3"] script = ExtResource("5_0a0n1") diff --git a/scene/ai/bullet02.tscn b/scene/ai/bullet02.tscn index 1a5dae6..26c1e9f 100644 --- a/scene/ai/bullet02.tscn +++ b/scene/ai/bullet02.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://c81t2x7d7tb3p"] +[gd_scene load_steps=6 format=3 uid="uid://bdwwmat306mff"] [ext_resource type="Script" path="res://addons/beehave/nodes/beehave_tree.gd" id="1_go1b5"] [ext_resource type="Script" path="res://addons/beehave/nodes/composites/sequence.gd" id="2_k8nph"] @@ -8,7 +8,7 @@ [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_go1b5") -blackboard = NodePath("@Node@80344") +blackboard = NodePath("@Node@19132") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("2_k8nph") diff --git a/script/ai/action.gd b/script/ai/action.gd index e6c504c..6b69a67 100644 --- a/script/ai/action.gd +++ b/script/ai/action.gd @@ -17,10 +17,11 @@ func tick(actor: Node, blackboard: Blackboard) -> int: var character: Character = get_character(actor) if character.get_status("is_stagger") or character.get_status("is_stun"): return FAILURE - return run(character) + return run(character, blackboard) func init(character: Character): pass -func run(character: Character) -> int: return FAILURE +func run(character: Character, blackboard: Blackboard) -> int: + return FAILURE diff --git a/script/ai/action/action_attack1.gd b/script/ai/action/action_attack1.gd index b1e6ac3..602a0d0 100644 --- a/script/ai/action/action_attack1.gd +++ b/script/ai/action/action_attack1.gd @@ -1,7 +1,7 @@ extends Action class_name ActionAttack1 -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: var is_hit: bool = character.attack1() if is_hit: return SUCCESS diff --git a/script/ai/action/action_attack2.gd b/script/ai/action/action_attack2.gd index 5f03e1f..40dbb24 100644 --- a/script/ai/action/action_attack2.gd +++ b/script/ai/action/action_attack2.gd @@ -1,7 +1,7 @@ extends Action class_name ActionAttack2 -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: var is_hit: bool = character.attack2() if is_hit: return SUCCESS diff --git a/script/ai/action/action_blackboard_set.gd b/script/ai/action/action_blackboard_set.gd new file mode 100644 index 0000000..17e2564 --- /dev/null +++ b/script/ai/action/action_blackboard_set.gd @@ -0,0 +1,10 @@ +extends Action +class_name ActionBlackboardSet + +@export var key: String +@export var value: Variant + + +func run(character: Character, blackboard: Blackboard) -> int: + blackboard.set(key, value) + return SUCCESS diff --git a/script/ai/action/action_destroy.gd b/script/ai/action/action_destroy.gd index 1c45773..ee0d8cd 100644 --- a/script/ai/action/action_destroy.gd +++ b/script/ai/action/action_destroy.gd @@ -1,7 +1,7 @@ extends Action class_name ActionDestroy -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: Global.character_mgr.destroy_character(character.id()) return SUCCESS diff --git a/script/ai/action/action_find_target.gd b/script/ai/action/action_find_target.gd index 30dccf0..2464c5e 100644 --- a/script/ai/action/action_find_target.gd +++ b/script/ai/action/action_find_target.gd @@ -1,6 +1,6 @@ extends Action class_name ActionFindTarget -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: character.move_stop() return SUCCESS diff --git a/script/ai/action/action_print.gd b/script/ai/action/action_print.gd index d98dd6e..3b1846c 100644 --- a/script/ai/action/action_print.gd +++ b/script/ai/action/action_print.gd @@ -4,6 +4,6 @@ class_name ActionPrint @export var context: String -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: print(context) return SUCCESS diff --git a/script/ai/action/action_stop_move.gd b/script/ai/action/action_stop_move.gd index b5262cd..40d0669 100644 --- a/script/ai/action/action_stop_move.gd +++ b/script/ai/action/action_stop_move.gd @@ -1,7 +1,7 @@ extends Action class_name ActionStopMove -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: var player_id: int = Global.character_mgr.get_player_id() character.set_target(player_id) return SUCCESS diff --git a/script/ai/action/action_wait.gd b/script/ai/action/action_wait.gd index 80718e6..718d182 100644 --- a/script/ai/action/action_wait.gd +++ b/script/ai/action/action_wait.gd @@ -6,7 +6,7 @@ class_name ActionWait var wait_time_left: float -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: wait_time_left += get_physics_process_delta_time() if wait_time_left >= wait_time: wait_time_left = 0 diff --git a/script/ai/action_with_target.gd b/script/ai/action_with_target.gd index c77bbc2..4853e30 100644 --- a/script/ai/action_with_target.gd +++ b/script/ai/action_with_target.gd @@ -4,11 +4,12 @@ class_name ActionWithTarget func init(character: Character): pass -func run(character: Character) -> int: +func run(character: Character, blackboard: Blackboard) -> int: var target: Character = Global.character_mgr.get_character(character.get_status("target")) if not target: return FAILURE - return execute(character, target) + return execute(character, target, blackboard) -func execute(character: Character, target: Character) -> int: return FAILURE +func execute(character: Character, target: Character, blackboard: Blackboard) -> int: + return FAILURE diff --git a/script/ai/action_with_target/action_move_to_target.gd b/script/ai/action_with_target/action_move_to_target.gd index ea5a357..22db4a3 100644 --- a/script/ai/action_with_target/action_move_to_target.gd +++ b/script/ai/action_with_target/action_move_to_target.gd @@ -1,7 +1,7 @@ extends ActionWithTarget class_name ActionMoveToTarget -func execute(character: Character, target: Character) -> int: +func execute(character: Character, target: Character, blackboard: Blackboard) -> int: var dir: Vector2 = target.pos2D() - character.pos2D() var dist: float = dir.length() if dist < 1: