This issue tracks the recent candy-survival fixes implemented on the candy_survival branch:
Persistent Candy Colors & Stacks Synchronization
Residual candy meshes and badges from previous games are now properly cleared at match start.
Late-joining / reconnecting clients now receive the current candy stack height/colors, HUD badges, and the Mekton's face color.
Initial Goal Syncing
Clients now correctly receive their starting goals immediately on connection via sync_player_goals RPC, fixing the empty goal UI board issue.
Color Cast Safety
Casted colors in sync_candy_stack to int to prevent float-to-int network serialization mismatch from resetting candies to default white.
Corrected Green & Yellow Color Swap (STAR & COIN)
STAR (9) is Green in the atlas textures and COIN (10) is Gold/Yellow. Swapped their candy mesh and Mekton face color mappings to align index 2 to Green and index 3 to Gold/Yellow.
Mekton Face Delivery Requirement Bypassed
Removed the face-color matching constraint in try_deliver(). Players can now deliver stacked candies at any time, and the HUD always displays "READY TO DELIVER!" when they have candy.
Disabled Cycle-End Scoring
Prevented cycle-end scoring from counting board matches, as points in Candy Survival are only supposed to be gained through Mekton deposits.
This issue tracks the recent candy-survival fixes implemented on the `candy_survival` branch:
1. **Persistent Candy Colors & Stacks Synchronization**
- Residual candy meshes and badges from previous games are now properly cleared at match start.
- Late-joining / reconnecting clients now receive the current candy stack height/colors, HUD badges, and the Mekton's face color.
2. **Initial Goal Syncing**
- Clients now correctly receive their starting goals immediately on connection via `sync_player_goals` RPC, fixing the empty goal UI board issue.
3. **Color Cast Safety**
- Casted colors in `sync_candy_stack` to `int` to prevent float-to-int network serialization mismatch from resetting candies to default white.
4. **Corrected Green & Yellow Color Swap (STAR & COIN)**
- STAR (9) is Green in the atlas textures and COIN (10) is Gold/Yellow. Swapped their candy mesh and Mekton face color mappings to align index 2 to Green and index 3 to Gold/Yellow.
5. **Mekton Face Delivery Requirement Bypassed**
- Removed the face-color matching constraint in `try_deliver()`. Players can now deliver stacked candies at any time, and the HUD always displays "READY TO DELIVER!" when they have candy.
6. **Disabled Cycle-End Scoring**
- Prevented cycle-end scoring from counting board matches, as points in Candy Survival are only supposed to be gained through Mekton deposits.
Added fix for the nonexistent action_interact input action. Switched the input action inside player_input_manager.gd to action_grab, which functions as the interact/delivery trigger for the Mekton in Candy Survival mode (as tile grabbing itself is automated).
Added fix for the nonexistent `action_interact` input action. Switched the input action inside `player_input_manager.gd` to `action_grab`, which functions as the interact/delivery trigger for the Mekton in Candy Survival mode (as tile grabbing itself is automated).
Added support for touch/mobile screens and bot controllers in Candy Survival mode. Mapped grab_item() to perform Mekton candy delivery when standing near the Mekton, and mapped grab_tekton() to trigger Ghost mode. This ensures all mobile buttons (Grab and TektonGrab) work correctly in this mode.
Added support for touch/mobile screens and bot controllers in Candy Survival mode. Mapped `grab_item()` to perform Mekton candy delivery when standing near the Mekton, and mapped `grab_tekton()` to trigger Ghost mode. This ensures all mobile buttons (Grab and TektonGrab) work correctly in this mode.
Added automatic delivery when walking next to the Mekton NPC. When the player walks within 1 grid cell of the Mekton (dist <= 1), the server automatically calls try_deliver(). This aligns it with the default delivery behavior of standard modes (walking onto the finish line).
Added automatic delivery when walking next to the Mekton NPC. When the player walks within 1 grid cell of the Mekton (dist <= 1), the server automatically calls try_deliver(). This aligns it with the default delivery behavior of standard modes (walking onto the finish line).
Remapped key bindings in Candy Survival mode: 1) Disabled Space (action_grab) for manual tile picking. 2) Disabled G (action_grab_tekton) for grabbing the Tekton. 3) Bound Q to trigger Knock. 4) Bound F (use_powerup) to trigger Ghost mode (Invisible).
Remapped key bindings in Candy Survival mode: 1) Disabled Space (action_grab) for manual tile picking. 2) Disabled G (action_grab_tekton) for grabbing the Tekton. 3) Bound Q to trigger Knock. 4) Bound F (use_powerup) to trigger Ghost mode (Invisible).
Integrated Candy Survival Ghost Mode with the Special Tiles and Powerup inventory system: 1) Allowed Ghost powerup tiles (ID 14) to spawn in the arena with a 15% probability. 2) Intercepted SpecialTilesManager pickups in Candy Survival to award additional native Ghost charges. 3) Linked active Ghost charge counts directly to SpecialTilesManager's inventory state so the onscreen PowerUpBtn (with the Ghost icon) dynamically appears and updates. 4) Rerouted PowerUpBtn clicks/activations to the server-side try_activate_ghost() method.
Integrated Candy Survival Ghost Mode with the Special Tiles and Powerup inventory system: 1) Allowed Ghost powerup tiles (ID 14) to spawn in the arena with a 15% probability. 2) Intercepted SpecialTilesManager pickups in Candy Survival to award additional native Ghost charges. 3) Linked active Ghost charge counts directly to SpecialTilesManager's inventory state so the onscreen PowerUpBtn (with the Ghost icon) dynamically appears and updates. 4) Rerouted PowerUpBtn clicks/activations to the server-side try_activate_ghost() method.
Refined Ghost Mode HUD visibility in Candy Survival mode: 1) Made the onscreen PowerUpBtn (Ghost icon) permanently visible during Candy Survival. When the player has 0 charges remaining, the button is displayed in a dimmed/disabled state, and when they have charges (> 0), it becomes fully active and white. 2) Call _update_special_inventory_for_ghosts() on player load/connect inside sync_state_to_player() to prevent network race conditions where the initial start-game RPC gets lost before the player scene has loaded.
Refined Ghost Mode HUD visibility in Candy Survival mode: 1) Made the onscreen PowerUpBtn (Ghost icon) permanently visible during Candy Survival. When the player has 0 charges remaining, the button is displayed in a dimmed/disabled state, and when they have charges (> 0), it becomes fully active and white. 2) Call _update_special_inventory_for_ghosts() on player load/connect inside sync_state_to_player() to prevent network race conditions where the initial start-game RPC gets lost before the player scene has loaded.
Added updates for HUD charges and stack counts: 1) Ensured starter charges (5x Knock, 5x Ghost) are correctly initialized locally on client load via HUD labels. 2) Set the CandyStackBadge label in the BottomContainer/HBoxContainer/ScorePanel to show the detailed color split ('Red: 0x Blue: 0x Green: 0x Yellow: 0x') immediately at match start, preventing placeholders. 3) Implemented and synchronized sync_knock_charge_count() RPC to update the Knock count label dynamically upon usage/backfire.
Added updates for HUD charges and stack counts: 1) Ensured starter charges (5x Knock, 5x Ghost) are correctly initialized locally on client load via HUD labels. 2) Set the CandyStackBadge label in the BottomContainer/HBoxContainer/ScorePanel to show the detailed color split ('Red: 0x Blue: 0x Green: 0x Yellow: 0x') immediately at match start, preventing placeholders. 3) Implemented and synchronized sync_knock_charge_count() RPC to update the Knock count label dynamically upon usage/backfire.
Restored Tekton grabbing/carrying logic in Candy Survival mode. Re-routed G key (action_grab_tekton) and mobile TektonGrab button back to standard player.grab_tekton() snatch/grab code, as Ghost Mode is now activated via F or the onscreen PowerUpBtn.
Restored Tekton grabbing/carrying logic in Candy Survival mode. Re-routed G key (action_grab_tekton) and mobile TektonGrab button back to standard player.grab_tekton() snatch/grab code, as Ghost Mode is now activated via F or the onscreen PowerUpBtn.
Updated spawning and reward logic in Candy Survival: 1) Disabled special tiles spawning in the arena, reverting setup_mission_tiles() back to spawning only standard candy tiles (IDs 7, 8, 9, 10). 2) Award players +1 Ghost charge every 2 completed missions inside on_blueprint_completed() on the server.
Updated spawning and reward logic in Candy Survival: 1) Disabled special tiles spawning in the arena, reverting setup_mission_tiles() back to spawning only standard candy tiles (IDs 7, 8, 9, 10). 2) Award players +1 Ghost charge every 2 completed missions inside on_blueprint_completed() on the server.
Permanently disabled special tiles from spawning in Candy Survival mode: 1) Modified scarcity_model.gd's get_tile_weights() to immediately return only standard tile weights when the active mode is Candy Survival. 2) Reverted setup_mission_tiles() in candy_survival_manager.gd to only choose from standard tile IDs. This ensures that no special tiles (IDs 11-14) spawn at startup or dynamically during floor randomizations/refills in Candy Survival.
Permanently disabled special tiles from spawning in Candy Survival mode: 1) Modified scarcity_model.gd's get_tile_weights() to immediately return only standard tile weights when the active mode is Candy Survival. 2) Reverted setup_mission_tiles() in candy_survival_manager.gd to only choose from standard tile IDs. This ensures that no special tiles (IDs 11-14) spawn at startup or dynamically during floor randomizations/refills in Candy Survival.
Disabled special tiles of Ghost from spawning when dropping the Tekton in Candy Survival: 1) Modified spawn_powerups_around() in special_tiles_manager.gd to spawn only common candy tiles (IDs 7-10) when the game mode is Candy Survival, matching the behavior of Stop n Go.
Disabled special tiles of Ghost from spawning when dropping the Tekton in Candy Survival: 1) Modified spawn_powerups_around() in special_tiles_manager.gd to spawn only common candy tiles (IDs 7-10) when the game mode is Candy Survival, matching the behavior of Stop n Go.
Implemented full visual animations and knockdown stun logic for the Knock (Q / action_knock_tekton) command in Candy Survival: 1) The attacker now plays their lunge bump animation (sync_bump) towards the target player when triggering a knock. If no target is present, the player lunges in place. 2) Upon a successful knock, the target player is staggered and knocked down (apply_stagger) for 2 seconds while their candies are transferred. 3) Upon a backfire (target has 0 candies), the attacker is staggered and knocked down (apply_stagger) for 2 seconds instead. 4) Added client-side charge checks to warn players in-game when out of Knock charges.
Implemented full visual animations and knockdown stun logic for the Knock (Q / action_knock_tekton) command in Candy Survival: 1) The attacker now plays their lunge bump animation (sync_bump) towards the target player when triggering a knock. If no target is present, the player lunges in place. 2) Upon a successful knock, the target player is staggered and knocked down (apply_stagger) for 2 seconds while their candies are transferred. 3) Upon a backfire (target has 0 candies), the attacker is staggered and knocked down (apply_stagger) for 2 seconds instead. 4) Added client-side charge checks to warn players in-game when out of Knock charges.
Fixed synchronization issue where local client's starting Knock/Ghost charge values were unpopulated (resulting in Q-knock being blocked immediately on start). 1) Populated local client player_knocks/player_ghosts dictionaries with START_KNOCK (5) and START_GHOST (5) immediately inside activate_client_side(). 2) Broadcast starting charge values via RPCs inside start_game_mode() to initialize all peers. 3) Allowed the generic 'action_knock_tekton' action to be processed by is_knock in Candy Survival mode to support customized/remapped keybinds.
Fixed synchronization issue where local client's starting Knock/Ghost charge values were unpopulated (resulting in Q-knock being blocked immediately on start). 1) Populated local client player_knocks/player_ghosts dictionaries with START_KNOCK (5) and START_GHOST (5) immediately inside activate_client_side(). 2) Broadcast starting charge values via RPCs inside start_game_mode() to initialize all peers. 3) Allowed the generic 'action_knock_tekton' action to be processed by is_knock in Candy Survival mode to support customized/remapped keybinds.
Enabled automatic candy deliveries to the central Mekton NPC on contact (adjacent distance <= 1 tile)
Disabled manual floor tile grabbing (Space) in Candy Survival mode
Restored standard G key and touch controls for grabbing/lifting the roaming Tekton character
Mapped Q key and action_knock_tekton action to trigger Knock
Mapped F key and onscreen PowerUpBtn to trigger Ghost mode (Invisible)
Resolved goal color mismatches (swapped Green Star/index 2 and Gold Coin/index 3, aligned NPC face color for Coin to Green)
Disabled cycle-end score conversions in GoalsCycleManager during Candy Survival mode
Configured players to start with 5x Knock and 5x Ghost charges
Synchronized local client and server starting charges reliably on match startup and client load
Made the onscreen PowerUpBtn permanently visible in Candy Survival (active/white when charges > 0, dimmed/disabled when charges == 0)
Disabled special/Ghost tiles from spawning on the arena floor (setup_mission_tiles) and during general map refills (scarcity_model.gd)
Disabled Ghost tiles from spawning when dropping the Tekton (spawn_powerups_around)
Programmed players to earn +1 Ghost charge for every 2 completed blueprints/missions
Implemented visual lunge bump (sync_bump) and Q-knock swing animations
Programmed successful knocks to steal all candies and knockdown target players (apply_stagger) for 2 seconds
Programmed empty-target knocks to backfire and knockdown the attacker (apply_stagger) for 2 seconds
Initialized CandyStackBadge in BottomContainer to show the detailed color splits immediately at match start
[ADT] Report
- Enabled automatic candy deliveries to the central Mekton NPC on contact (adjacent distance <= 1 tile)
- Disabled manual floor tile grabbing (Space) in Candy Survival mode
- Restored standard G key and touch controls for grabbing/lifting the roaming Tekton character
- Mapped Q key and action_knock_tekton action to trigger Knock
- Mapped F key and onscreen PowerUpBtn to trigger Ghost mode (Invisible)
- Resolved goal color mismatches (swapped Green Star/index 2 and Gold Coin/index 3, aligned NPC face color for Coin to Green)
- Disabled cycle-end score conversions in GoalsCycleManager during Candy Survival mode
- Configured players to start with 5x Knock and 5x Ghost charges
- Synchronized local client and server starting charges reliably on match startup and client load
- Made the onscreen PowerUpBtn permanently visible in Candy Survival (active/white when charges > 0, dimmed/disabled when charges == 0)
- Disabled special/Ghost tiles from spawning on the arena floor (setup_mission_tiles) and during general map refills (scarcity_model.gd)
- Disabled Ghost tiles from spawning when dropping the Tekton (spawn_powerups_around)
- Programmed players to earn +1 Ghost charge for every 2 completed blueprints/missions
- Implemented visual lunge bump (sync_bump) and Q-knock swing animations
- Programmed successful knocks to steal all candies and knockdown target players (apply_stagger) for 2 seconds
- Programmed empty-target knocks to backfire and knockdown the attacker (apply_stagger) for 2 seconds
- Initialized CandyStackBadge in BottomContainer to show the detailed color splits immediately at match start
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This issue tracks the recent candy-survival fixes implemented on the
candy_survivalbranch:Persistent Candy Colors & Stacks Synchronization
Initial Goal Syncing
sync_player_goalsRPC, fixing the empty goal UI board issue.Color Cast Safety
sync_candy_stacktointto prevent float-to-int network serialization mismatch from resetting candies to default white.Corrected Green & Yellow Color Swap (STAR & COIN)
Mekton Face Delivery Requirement Bypassed
try_deliver(). Players can now deliver stacked candies at any time, and the HUD always displays "READY TO DELIVER!" when they have candy.Disabled Cycle-End Scoring
Added fix for the nonexistent
action_interactinput action. Switched the input action insideplayer_input_manager.gdtoaction_grab, which functions as the interact/delivery trigger for the Mekton in Candy Survival mode (as tile grabbing itself is automated).Added support for touch/mobile screens and bot controllers in Candy Survival mode. Mapped
grab_item()to perform Mekton candy delivery when standing near the Mekton, and mappedgrab_tekton()to trigger Ghost mode. This ensures all mobile buttons (Grab and TektonGrab) work correctly in this mode.Added automatic delivery when walking next to the Mekton NPC. When the player walks within 1 grid cell of the Mekton (dist <= 1), the server automatically calls try_deliver(). This aligns it with the default delivery behavior of standard modes (walking onto the finish line).
Remapped key bindings in Candy Survival mode: 1) Disabled Space (action_grab) for manual tile picking. 2) Disabled G (action_grab_tekton) for grabbing the Tekton. 3) Bound Q to trigger Knock. 4) Bound F (use_powerup) to trigger Ghost mode (Invisible).
Integrated Candy Survival Ghost Mode with the Special Tiles and Powerup inventory system: 1) Allowed Ghost powerup tiles (ID 14) to spawn in the arena with a 15% probability. 2) Intercepted SpecialTilesManager pickups in Candy Survival to award additional native Ghost charges. 3) Linked active Ghost charge counts directly to SpecialTilesManager's inventory state so the onscreen PowerUpBtn (with the Ghost icon) dynamically appears and updates. 4) Rerouted PowerUpBtn clicks/activations to the server-side try_activate_ghost() method.
Refined Ghost Mode HUD visibility in Candy Survival mode: 1) Made the onscreen PowerUpBtn (Ghost icon) permanently visible during Candy Survival. When the player has 0 charges remaining, the button is displayed in a dimmed/disabled state, and when they have charges (> 0), it becomes fully active and white. 2) Call _update_special_inventory_for_ghosts() on player load/connect inside sync_state_to_player() to prevent network race conditions where the initial start-game RPC gets lost before the player scene has loaded.
Added updates for HUD charges and stack counts: 1) Ensured starter charges (5x Knock, 5x Ghost) are correctly initialized locally on client load via HUD labels. 2) Set the CandyStackBadge label in the BottomContainer/HBoxContainer/ScorePanel to show the detailed color split ('Red: 0x Blue: 0x Green: 0x Yellow: 0x') immediately at match start, preventing placeholders. 3) Implemented and synchronized sync_knock_charge_count() RPC to update the Knock count label dynamically upon usage/backfire.
Restored Tekton grabbing/carrying logic in Candy Survival mode. Re-routed G key (action_grab_tekton) and mobile TektonGrab button back to standard player.grab_tekton() snatch/grab code, as Ghost Mode is now activated via F or the onscreen PowerUpBtn.
Updated spawning and reward logic in Candy Survival: 1) Disabled special tiles spawning in the arena, reverting setup_mission_tiles() back to spawning only standard candy tiles (IDs 7, 8, 9, 10). 2) Award players +1 Ghost charge every 2 completed missions inside on_blueprint_completed() on the server.
Permanently disabled special tiles from spawning in Candy Survival mode: 1) Modified scarcity_model.gd's get_tile_weights() to immediately return only standard tile weights when the active mode is Candy Survival. 2) Reverted setup_mission_tiles() in candy_survival_manager.gd to only choose from standard tile IDs. This ensures that no special tiles (IDs 11-14) spawn at startup or dynamically during floor randomizations/refills in Candy Survival.
Disabled special tiles of Ghost from spawning when dropping the Tekton in Candy Survival: 1) Modified spawn_powerups_around() in special_tiles_manager.gd to spawn only common candy tiles (IDs 7-10) when the game mode is Candy Survival, matching the behavior of Stop n Go.
Implemented full visual animations and knockdown stun logic for the Knock (Q / action_knock_tekton) command in Candy Survival: 1) The attacker now plays their lunge bump animation (sync_bump) towards the target player when triggering a knock. If no target is present, the player lunges in place. 2) Upon a successful knock, the target player is staggered and knocked down (apply_stagger) for 2 seconds while their candies are transferred. 3) Upon a backfire (target has 0 candies), the attacker is staggered and knocked down (apply_stagger) for 2 seconds instead. 4) Added client-side charge checks to warn players in-game when out of Knock charges.
Fixed synchronization issue where local client's starting Knock/Ghost charge values were unpopulated (resulting in Q-knock being blocked immediately on start). 1) Populated local client player_knocks/player_ghosts dictionaries with START_KNOCK (5) and START_GHOST (5) immediately inside activate_client_side(). 2) Broadcast starting charge values via RPCs inside start_game_mode() to initialize all peers. 3) Allowed the generic 'action_knock_tekton' action to be processed by is_knock in Candy Survival mode to support customized/remapped keybinds.
[ADT] Report