Small updates
This commit is contained in:
@@ -99,13 +99,14 @@ func _do_anchored(delta: float) -> void:
|
||||
_shot_timer = SHOT_COOLDOWN
|
||||
|
||||
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 proj = ENEMY_PROJECTILE.instantiate()
|
||||
proj.position = (get_parent() as Node2D).to_local(global_position)
|
||||
proj.direction = dir
|
||||
proj.speed = 120.0
|
||||
proj.speed = 180.0 # faster since not homing
|
||||
proj.damage = 1.0
|
||||
proj.max_range = 720.0
|
||||
proj.homing = true
|
||||
proj.homing_target = _player
|
||||
proj.homing = false
|
||||
AudioManager.play("enemy_shoot")
|
||||
get_parent().call_deferred("add_child", proj)
|
||||
+8
-11
@@ -107,7 +107,6 @@ func activate() -> void:
|
||||
_spawn_shop()
|
||||
data.cleared = true
|
||||
RoomData.RoomType.START:
|
||||
_spawn_entry_door()
|
||||
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")
|
||||
|
||||
|
||||
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:
|
||||
# 50% drop chance so body parts feel more valuable
|
||||
if randf() > 0.5:
|
||||
@@ -407,7 +397,14 @@ func _spawn_body_part_drop() -> void:
|
||||
contents.add_child(pickup)
|
||||
|
||||
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()
|
||||
pickup.item = load(chosen)
|
||||
pickup.position = Vector2.ZERO
|
||||
|
||||
@@ -39,6 +39,7 @@ var _grid_min: Vector2i = Vector2i.ZERO
|
||||
var _grid_max: Vector2i = Vector2i.ZERO
|
||||
var _parallax_offset: Vector2 = Vector2.ZERO
|
||||
var _player: Node2D = null
|
||||
var _revealed_positions: Array[Vector2i] = [] # rooms revealed by Fragmented Map
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Setup
|
||||
@@ -59,6 +60,7 @@ func _ready() -> void:
|
||||
EventBus.floor_map_ready.connect(_on_floor_map_ready)
|
||||
EventBus.room_entered_at.connect(_on_room_entered)
|
||||
EventBus.run_ended.connect(_on_run_ended)
|
||||
EventBus.room_revealed.connect(_on_room_revealed)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Signal handlers
|
||||
@@ -76,10 +78,22 @@ func _on_room_entered(grid_pos: Vector2i) -> void:
|
||||
|
||||
func _on_run_ended(_reached_hub: bool) -> void:
|
||||
_rooms_data.clear()
|
||||
_revealed_positions.clear()
|
||||
_player = null
|
||||
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:
|
||||
if _rooms_data.is_empty():
|
||||
return
|
||||
@@ -195,9 +209,13 @@ func _draw() -> void:
|
||||
var rect := Rect2(map_pos, ROOM_SIZE)
|
||||
|
||||
# Fog of war: unvisited rooms show as generic grey (hide type info)
|
||||
# Exception: revealed rooms (Fragmented Map) show their type dimmed
|
||||
var color: Color
|
||||
if is_visited:
|
||||
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:
|
||||
color = UNVISITED_COLOR
|
||||
color.a = UNVISITED_ALPHA
|
||||
|
||||
Reference in New Issue
Block a user