update bot experimental

This commit is contained in:
2025-01-28 16:34:46 +08:00
parent 5a9092adfc
commit f3d720d91d
16 changed files with 272 additions and 375 deletions
+14 -32
View File
@@ -1,6 +1,7 @@
extends ActionLeaf
func tick(actor: Node, blackboard: Blackboard) -> int:
# Get target from blackboard
var target_pos = blackboard.get_value("move_target")
if not target_pos:
return FAILURE
@@ -8,37 +9,18 @@ func tick(actor: Node, blackboard: Blackboard) -> int:
if actor.action_points <= 0:
return FAILURE
# Verify target is still valid
if not actor.is_within_movement_range(target_pos):
return FAILURE
if actor.is_position_occupied(target_pos):
return FAILURE
var cell_item = actor.enhanced_gridmap.get_cell_item(Vector3i(target_pos.x, 0, target_pos.y))
if cell_item == -1 or cell_item in actor.enhanced_gridmap.non_walkable_items:
return FAILURE
# Move to position
actor.rotate_towards_target(target_pos)
var path = actor.enhanced_gridmap.find_path(Vector2(actor.current_position), Vector2(target_pos))
if path.size() <= 1:
return FAILURE
# Verify path is clear
var valid_path = true
for point in path.slice(1):
if actor.is_position_occupied(Vector2i(point.x, point.y)):
valid_path = false
break
if valid_path:
# Execute movement
if actor.is_within_movement_range(target_pos):
if actor.is_multiplayer_authority():
path.pop_front()
actor.rpc("start_movement_along_path", path)
actor.action_points -= 1
actor.clear_highlights()
return SUCCESS
var path = actor.enhanced_gridmap.find_path(
Vector2(actor.current_position),
Vector2(target_pos)
)
if path.size() > 1:
path.pop_front()
actor.rpc("start_movement_along_path", path)
actor.action_points -= 1
blackboard.set_value("current_action", "moving")
return SUCCESS
return FAILURE
-11
View File
@@ -1,11 +0,0 @@
class_name GrabAction extends ActionLeaf
func tick(actor: Node, blackboard: Blackboard) -> int:
var grab_position = blackboard.get_value("grab_position")
if not grab_position:
return FAILURE
if actor.grab_item(grab_position):
return SUCCESS
return FAILURE