26 lines
923 B
Plaintext
26 lines
923 B
Plaintext
/func _find_valid_drop_position/,/return Vector2i(-1, -1)/c\
|
|
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)
|