feat: Introduce core game systems for special tile effects, power-up management, player movement, and initial UI screens.
This commit is contained in:
@@ -34,7 +34,7 @@ func get_skill_affected_area(effect: int, center_pos: Vector2i) -> Array[Vector2
|
||||
|
||||
match effect:
|
||||
SpecialEffect.AREA_FREEZE:
|
||||
# Preview 3 blocks ahead of current hover (if we ever re-enable targeting)
|
||||
# Preview 2 blocks ahead of current hover (if we ever re-enable targeting)
|
||||
area.append(center_pos)
|
||||
|
||||
SpecialEffect.BLOCK_FLOOR:
|
||||
@@ -190,6 +190,11 @@ func activate_effect(effect: int, target_player: Node3D = null):
|
||||
print("PowerUp %s on cooldown." % SpecialEffect.keys()[effect])
|
||||
return
|
||||
|
||||
# Check Attack Mode Restriction
|
||||
if player.get("is_attack_mode") and effect == SpecialEffect.INVISIBLE_MODE:
|
||||
NotificationManager.send_message(player, "Cannot enter Ghost mode while in Attack Mode!", NotificationManager.MessageType.WARNING)
|
||||
return
|
||||
|
||||
# Check Carrying Restriction
|
||||
if player.get("is_carrying_tekton") and effect != SpecialEffect.FASTER_SPEED:
|
||||
NotificationManager.send_message(player, "Cannot use this power while carrying a Tekton!", NotificationManager.MessageType.WARNING)
|
||||
@@ -250,9 +255,9 @@ func _execute_area_freeze(target_pos: Vector2i = Vector2i.ZERO):
|
||||
|
||||
if center_pos == Vector2i.ZERO:
|
||||
# Calculate distance ahead based on Level
|
||||
# Gap of 3 floors = 4 tiles ahead
|
||||
# Gap of 5 floors = 6 tiles ahead
|
||||
var distance = 4 if current_lvl < 5 else 6
|
||||
# Gap of 2 floors = 3 tiles ahead
|
||||
# Gap of 4 floors = 5 tiles ahead
|
||||
var distance = 3 if current_lvl < 5 else 5
|
||||
|
||||
var movement = player.movement_manager
|
||||
if movement and movement.current_move_direction != Vector2i.ZERO:
|
||||
|
||||
Reference in New Issue
Block a user