From 8e15018e2389d87d52f59914b5185642fab05293 Mon Sep 17 00:00:00 2001 From: adtpdn Date: Wed, 8 Jul 2026 15:52:30 +0800 Subject: [PATCH] fix(candy-survival): implement Mekton delivery in grab_item and Ghost mode in grab_tekton for mobile touch controls and bot support --- scenes/player.gd | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scenes/player.gd b/scenes/player.gd index 0d83c85..631bec1 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -2083,6 +2083,18 @@ func bot_try_grab_item() -> bool: #return true # ----------------------------------------------------------------- func grab_item(grid_position: Vector2i = current_position) -> bool: + if LobbyManager.game_mode == "Candy Survival": + # Check distance to Mekton NPC at (8, 8) + var dist = abs(current_position.x - 8) + abs(current_position.y - 8) + if dist <= 2: + var gm = get_node_or_null("/root/Main/CandySurvivalManager") + if gm and gm.active: + var pid = get("peer_id") if "peer_id" in self else name.to_int() + if multiplayer.is_server(): + gm.try_deliver(pid) + else: + gm.rpc_id(1, "try_deliver", pid) + return true return playerboard_manager.grab_item(grid_position) # ----------------------------------------------------------------- @@ -2445,6 +2457,16 @@ func grab_tekton(): if not is_multiplayer_authority() or is_carrying_tekton or is_frozen or is_stop_frozen: return + if LobbyManager.game_mode == "Candy Survival": + var gm = get_node_or_null("/root/Main/CandySurvivalManager") + if gm and gm.active: + var pid = get("peer_id") if "peer_id" in self else name.to_int() + if multiplayer.is_server(): + gm.try_activate_ghost(pid) + else: + gm.rpc_id(1, "try_activate_ghost", pid) + return + # 1. Check for nearby carrier to snatch from var carrier = _find_nearby_carrier() if carrier: