ai action

master
chendian 1 year ago
parent 51d2725b7e
commit 242d86b912

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save