25 lines
839 B
Plaintext
25 lines
839 B
Plaintext
func _find_valid_drop_position() -> Vector2i:
|
|
# Try random adjacent cells
|
|
var neighbors = enhanced_gridmap.get_neighbors(current_position, 0)
|
|
neighbors.shuffle()
|
|
|
|
for neighbor in neighbors:
|
|
var pos = neighbor.position
|
|
# Check item layer
|
|
var item_cell = Vector3i(pos.x, 1, pos.y)
|
|
if enhanced_gridmap.get_cell_item(item_cell) == -1:
|
|
if not is_position_occupied(pos):
|
|
# Gauntlet Mode explicit overrides
|
|
var gm = null
|
|
var main_gauntlet = get_tree().root.get_node_or_null("Main")
|
|
if main_gauntlet and main_gauntlet.get("gauntlet_manager"):
|
|
gm = main_gauntlet.gauntlet_manager
|
|
if gm and gm.is_active:
|
|
if pos.x == 0 or pos.x == gm.ARENA_COLUMNS - 1 or pos.y == 0 or pos.y == gm.ARENA_ROWS - 1:
|
|
continue
|
|
if gm._is_npc_zone(pos):
|
|
continue
|
|
return pos
|
|
|
|
return Vector2i(-1, -1)
|