Small updates

This commit is contained in:
2026-03-11 16:49:33 -04:00
parent 48ba47d41b
commit c290b3a07c
3 changed files with 30 additions and 14 deletions
+4 -3
View File
@@ -99,13 +99,14 @@ func _do_anchored(delta: float) -> void:
_shot_timer = SHOT_COOLDOWN _shot_timer = SHOT_COOLDOWN
func _fire_at_player() -> void: func _fire_at_player() -> void:
# Fire at player's current position (not homing - player can dodge)
var dir := (_player.global_position - global_position).normalized() var dir := (_player.global_position - global_position).normalized()
var proj = ENEMY_PROJECTILE.instantiate() var proj = ENEMY_PROJECTILE.instantiate()
proj.position = (get_parent() as Node2D).to_local(global_position) proj.position = (get_parent() as Node2D).to_local(global_position)
proj.direction = dir proj.direction = dir
proj.speed = 120.0 proj.speed = 180.0 # faster since not homing
proj.damage = 1.0 proj.damage = 1.0
proj.max_range = 720.0 proj.max_range = 720.0
proj.homing = true proj.homing = false
proj.homing_target = _player AudioManager.play("enemy_shoot")
get_parent().call_deferred("add_child", proj) get_parent().call_deferred("add_child", proj)
+8 -11
View File
@@ -107,7 +107,6 @@ func activate() -> void:
_spawn_shop() _spawn_shop()
data.cleared = true data.cleared = true
RoomData.RoomType.START: RoomData.RoomType.START:
_spawn_entry_door()
data.cleared = true data.cleared = true
_: _:
data.cleared = true data.cleared = true
@@ -377,15 +376,6 @@ func _on_floor_exit_entered(body: Node) -> void:
get_tree().call_deferred("change_scene_to_file", "res://scenes/run/floor.tscn") get_tree().call_deferred("change_scene_to_file", "res://scenes/run/floor.tscn")
func _spawn_entry_door() -> void:
# Decorative open door behind spawn point - shows "you entered from here"
# Positioned at bottom of room (player spawns in center, door behind them)
var entry_door := StationDoor.new()
entry_door.position = Vector2(0, ROOM_H / 2.0 - 80) # near bottom wall
entry_door.setup_entry_door()
contents.add_child(entry_door)
func _spawn_body_part_drop() -> void: func _spawn_body_part_drop() -> void:
# 50% drop chance so body parts feel more valuable # 50% drop chance so body parts feel more valuable
if randf() > 0.5: if randf() > 0.5:
@@ -407,7 +397,14 @@ func _spawn_body_part_drop() -> void:
contents.add_child(pickup) contents.add_child(pickup)
func _spawn_run_item() -> void: func _spawn_run_item() -> void:
var chosen: String = ALL_ITEM_PATHS[randi() % ALL_ITEM_PATHS.size()] # Exclude Patch Kit from item rooms (shop-only item)
const PATCH_KIT_PATH := "res://data/run_items/patch_kit.tres"
var item_pool: Array[String] = []
for p in ALL_ITEM_PATHS:
if p != PATCH_KIT_PATH:
item_pool.append(p)
var chosen: String = item_pool[randi() % item_pool.size()]
var pickup = RUN_ITEM_PICKUP.instantiate() var pickup = RUN_ITEM_PICKUP.instantiate()
pickup.item = load(chosen) pickup.item = load(chosen)
pickup.position = Vector2.ZERO pickup.position = Vector2.ZERO
+18
View File
@@ -39,6 +39,7 @@ var _grid_min: Vector2i = Vector2i.ZERO
var _grid_max: Vector2i = Vector2i.ZERO var _grid_max: Vector2i = Vector2i.ZERO
var _parallax_offset: Vector2 = Vector2.ZERO var _parallax_offset: Vector2 = Vector2.ZERO
var _player: Node2D = null var _player: Node2D = null
var _revealed_positions: Array[Vector2i] = [] # rooms revealed by Fragmented Map
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Setup # Setup
@@ -59,6 +60,7 @@ func _ready() -> void:
EventBus.floor_map_ready.connect(_on_floor_map_ready) EventBus.floor_map_ready.connect(_on_floor_map_ready)
EventBus.room_entered_at.connect(_on_room_entered) EventBus.room_entered_at.connect(_on_room_entered)
EventBus.run_ended.connect(_on_run_ended) EventBus.run_ended.connect(_on_run_ended)
EventBus.room_revealed.connect(_on_room_revealed)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Signal handlers # Signal handlers
@@ -76,10 +78,22 @@ func _on_room_entered(grid_pos: Vector2i) -> void:
func _on_run_ended(_reached_hub: bool) -> void: func _on_run_ended(_reached_hub: bool) -> void:
_rooms_data.clear() _rooms_data.clear()
_revealed_positions.clear()
_player = null _player = null
queue_redraw() queue_redraw()
func _on_room_revealed() -> void:
# Fragmented Map effect: reveal types of adjacent unvisited rooms
if not _rooms_data.has(_current_pos):
return
var current_room: RoomData = _rooms_data[_current_pos]
for conn_pos in current_room.connections.values():
if conn_pos not in _revealed_positions:
_revealed_positions.append(conn_pos)
queue_redraw()
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
if _rooms_data.is_empty(): if _rooms_data.is_empty():
return return
@@ -195,9 +209,13 @@ func _draw() -> void:
var rect := Rect2(map_pos, ROOM_SIZE) var rect := Rect2(map_pos, ROOM_SIZE)
# Fog of war: unvisited rooms show as generic grey (hide type info) # Fog of war: unvisited rooms show as generic grey (hide type info)
# Exception: revealed rooms (Fragmented Map) show their type dimmed
var color: Color var color: Color
if is_visited: if is_visited:
color = ROOM_COLORS.get(room.type, ROOM_COLORS[RoomData.RoomType.COMBAT]) color = ROOM_COLORS.get(room.type, ROOM_COLORS[RoomData.RoomType.COMBAT])
elif pos in _revealed_positions:
color = ROOM_COLORS.get(room.type, ROOM_COLORS[RoomData.RoomType.COMBAT])
color.a = UNVISITED_ALPHA
else: else:
color = UNVISITED_COLOR color = UNVISITED_COLOR
color.a = UNVISITED_ALPHA color.a = UNVISITED_ALPHA