fix(candy-survival): implement stagger (knockdown), lunge visual bump, and target stealing/backfire animations for Knock (Q)
This commit is contained in:
@@ -395,11 +395,21 @@ func try_knock(attacker: int, target: int) -> bool:
|
||||
var target_colors = player_candy_colors.get(target, [])
|
||||
var target_candies = target_colors.size()
|
||||
|
||||
var attacker_node = main_scene.get_node_or_null(str(attacker))
|
||||
var target_node = main_scene.get_node_or_null(str(target))
|
||||
|
||||
if attacker_node and target_node:
|
||||
attacker_node.rpc("sync_bump", target_node.current_position)
|
||||
|
||||
if target_candies == 0:
|
||||
# Backfire: both lose a charge
|
||||
player_knocks[attacker] = player_knocks.get(attacker, 0) - 1
|
||||
rpc("sync_knock_charge_count", attacker, player_knocks[attacker])
|
||||
# Attacker is also knocked down briefly (visual handled by caller)
|
||||
|
||||
# Attacker is also knocked down briefly (backfire)
|
||||
if attacker_node:
|
||||
attacker_node.rpc("apply_stagger", 2.0)
|
||||
|
||||
rpc("sync_knock_result", attacker, target, 0)
|
||||
return false
|
||||
|
||||
@@ -416,6 +426,10 @@ func try_knock(attacker: int, target: int) -> bool:
|
||||
rpc("sync_knock_charge_count", attacker, player_knocks[attacker])
|
||||
player_last_knocked_by[target] = attacker
|
||||
|
||||
# Target is knocked down / staggered on successful knock
|
||||
if target_node:
|
||||
target_node.rpc("apply_stagger", 2.0)
|
||||
|
||||
_add_score(attacker, target_candies * 100)
|
||||
_update_candy_badge(attacker)
|
||||
_update_candy_badge(target)
|
||||
|
||||
Reference in New Issue
Block a user