Files
tekton/scripts/behaviors/actions/do_grab.gd
T
2025-01-28 14:17:29 +08:00

28 lines
781 B
GDScript

extends ActionLeaf
func tick(actor: Node, blackboard: Blackboard) -> int:
var grab_position = blackboard.get_value("grab_position")
if not grab_position:
return FAILURE
# Find empty slot in playerboard
var empty_slot = actor.playerboard.find(-1)
if empty_slot == -1:
return FAILURE
# Get item at position
var cell = Vector3i(grab_position.x, 1, grab_position.y)
var item = actor.enhanced_gridmap.get_cell_item(cell)
if item == -1 or actor.action_points <= 0:
return FAILURE
# Grab the item
if actor.is_multiplayer_authority():
actor.playerboard[empty_slot] = item
actor.rpc("sync_grid_item", cell.x, cell.y, cell.z, -1)
actor.rpc("sync_playerboard", actor.playerboard)
actor.has_performed_action = true
actor.action_points -= 1
return SUCCESS