feat: Add new visual effects, player and lobby scenes, and a special tiles manager.
This commit is contained in:
@@ -259,6 +259,11 @@ func is_holo_tile(item_id: int) -> bool:
|
||||
# =============================================================================
|
||||
|
||||
func _execute_faster_speed():
|
||||
# VFX: show speed initiator on all peers
|
||||
if player.is_multiplayer_authority() and player.has_method("can_rpc") and player.can_rpc():
|
||||
player.rpc("play_skill_vfx", "skill_speed")
|
||||
elif player.has_method("play_skill_vfx"):
|
||||
player.play_skill_vfx("skill_speed")
|
||||
if player.movement_manager:
|
||||
player.movement_manager.set_speed_multiplier(1.5) # 50% faster
|
||||
active_buffs[SpecialEffect.FASTER_SPEED] = FASTER_DURATION
|
||||
@@ -266,6 +271,11 @@ func _execute_faster_speed():
|
||||
NotificationManager.send_message(player, "Speed Boost! (5s)", NotificationManager.MessageType.POWERUP)
|
||||
|
||||
func _execute_area_freeze(target_pos: Vector2i = Vector2i.ZERO):
|
||||
# VFX: show freeze initiator on all peers
|
||||
if player.is_multiplayer_authority() and player.has_method("can_rpc") and player.can_rpc():
|
||||
player.rpc("play_skill_vfx", "skill_freeze")
|
||||
elif player.has_method("play_skill_vfx"):
|
||||
player.play_skill_vfx("skill_freeze")
|
||||
var center_pos = target_pos
|
||||
|
||||
# Determine Level early for distance calculation
|
||||
@@ -368,6 +378,11 @@ func _execute_area_freeze(target_pos: Vector2i = Vector2i.ZERO):
|
||||
|
||||
|
||||
func _execute_block_floor(target_pos: Vector2i = Vector2i.ZERO):
|
||||
# VFX: show wall initiator on all peers
|
||||
if player.is_multiplayer_authority() and player.has_method("can_rpc") and player.can_rpc():
|
||||
player.rpc("play_skill_vfx", "skill_wall")
|
||||
elif player.has_method("play_skill_vfx"):
|
||||
player.play_skill_vfx("skill_wall")
|
||||
# "Wall Block" - Spawn line behind player
|
||||
var behind_pos = target_pos
|
||||
var last_dir = player.movement_manager.last_move_direction if player.movement_manager else Vector2i(0, 1)
|
||||
@@ -425,6 +440,11 @@ func _execute_block_floor(target_pos: Vector2i = Vector2i.ZERO):
|
||||
NotificationManager.send_message(player, "Defensive Wall Deployed!", NotificationManager.MessageType.POWERUP)
|
||||
|
||||
func _execute_invisible_mode(target: Node3D):
|
||||
# VFX: show ghost initiator on all peers (on the caster/player, not the target)
|
||||
if player.is_multiplayer_authority() and player.has_method("can_rpc") and player.can_rpc():
|
||||
player.rpc("play_skill_vfx", "skill_ghost")
|
||||
elif player.has_method("play_skill_vfx"):
|
||||
player.play_skill_vfx("skill_ghost")
|
||||
target.is_invisible = true
|
||||
invisible_timer = INVISIBLE_DURATION
|
||||
|
||||
|
||||
Reference in New Issue
Block a user