This commit is contained in:
2026-01-29 03:04:24 +08:00
parent 6949e20a1f
commit e66ba7542c
12 changed files with 687 additions and 549 deletions
+21 -15
View File
@@ -64,15 +64,17 @@ func grab_item(grid_position: Vector2i) -> bool:
# Apply changes locally first, server will validate/sync
enhanced_gridmap.set_cell_item(cell, -1) # Remove item visually immediately
# Check if grabbed item is a holo tile (11-14) - add to powerup instead of triggering effect
var is_holo = item >= 11 and item <= 14
if is_holo:
# Add holo pickup to power-up manager (4 pickups = 1 bar)
var powerup_manager = player.get_node_or_null("PowerUpManager")
if powerup_manager:
powerup_manager.add_holo_pickup()
# Convert holo tile to normal tile (11->7, 12->8, 13->9, 14->10)
item = item - 4
# Handle Power-Up / Holo Tiles
# Holo Matrix: 11->7 (Heart), 12->8 (Diamond), 13->9 (Star), 14->10 (Coin)
if item >= 11 and item <= 14:
item = item - 4 # Convert to normal tile ID
# Check if it's a power up tile (7-10)
if item >= 7 and item <= 10:
var special_tiles_manager = player.get_node_or_null("SpecialTilesManager")
if special_tiles_manager:
# Add to inventory
special_tiles_manager.add_powerup_from_item(item)
player.playerboard[target_slot] = item # Add to playerboard immediately
@@ -83,7 +85,7 @@ func grab_item(grid_position: Vector2i) -> bool:
# Check if goal is completed after grabbing
_check_goal_completion()
# === Server Sync ===
if multiplayer.is_server():
# HOST/SERVER: Broadcast to all clients
@@ -207,12 +209,16 @@ func bot_try_grab_item() -> bool:
var empty_slot = player.playerboard.find(-1)
if empty_slot != -1:
if player.is_multiplayer_authority():
# Check if grabbed item is a holo tile (11-14) - add to powerup
# Convert Holo (11-14)
if item >= 11 and item <= 14:
var powerup_manager = player.get_node_or_null("PowerUpManager")
if powerup_manager:
powerup_manager.add_holo_pickup()
item = item - 4 # Convert to normal tile
item = item - 4
# Inventory Add
if item >= 7 and item <= 10:
var special_tiles_manager = player.get_node_or_null("SpecialTilesManager")
if special_tiles_manager:
special_tiles_manager.add_powerup_from_item(item)
player.playerboard[empty_slot] = item
player.rpc("sync_grid_item", current_cell.x, current_cell.y, current_cell.z, -1)
player.rpc("sync_playerboard", player.playerboard)