Gameplay changes
This commit is contained in:
@@ -40,6 +40,30 @@ const FREEZE_DURATION := 1.5
|
||||
const SWEEP_PROJ_DAMAGE := 1.0
|
||||
const MINE_DAMAGE := 1.0
|
||||
|
||||
const BODY_PART_PICKUP = preload("res://scenes/upgrades/body_part_pickup.tscn")
|
||||
const RUN_ITEM_PICKUP = preload("res://scenes/items/run_item_pickup.tscn")
|
||||
|
||||
const ALL_PART_PATHS: Array[String] = [
|
||||
"res://data/body_parts/torso_reinforced_chassis.tres",
|
||||
"res://data/body_parts/torso_lightweight_frame.tres",
|
||||
"res://data/body_parts/left_arm_scatter_emitter.tres",
|
||||
"res://data/body_parts/left_arm_shield_projector.tres",
|
||||
"res://data/body_parts/right_arm_heavy_emitter.tres",
|
||||
"res://data/body_parts/right_arm_rapid_emitter.tres",
|
||||
]
|
||||
|
||||
const ALL_ITEM_PATHS: Array[String] = [
|
||||
"res://data/run_items/coolant_leak.tres",
|
||||
"res://data/run_items/overclock_module.tres",
|
||||
"res://data/run_items/scrap_magnet.tres",
|
||||
"res://data/run_items/memory_spike.tres",
|
||||
"res://data/run_items/rust_coat.tres",
|
||||
"res://data/run_items/static_discharge.tres",
|
||||
"res://data/run_items/fragmented_map.tres",
|
||||
"res://data/run_items/plating_shard.tres",
|
||||
"res://data/run_items/range_booster.tres",
|
||||
]
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# State
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -386,9 +410,35 @@ func _die() -> void:
|
||||
if is_instance_valid(entry["node"]):
|
||||
entry["node"].queue_free()
|
||||
_sweep_projs.clear()
|
||||
|
||||
# Always spawn item pickup
|
||||
_spawn_item_drop()
|
||||
# Also spawn body part if player doesn't have all
|
||||
_spawn_body_part_drop()
|
||||
|
||||
EventBus.boss_died.emit()
|
||||
queue_free()
|
||||
|
||||
func _spawn_item_drop() -> void:
|
||||
var chosen: String = ALL_ITEM_PATHS[randi() % ALL_ITEM_PATHS.size()]
|
||||
var pickup = RUN_ITEM_PICKUP.instantiate()
|
||||
pickup.item = load(chosen)
|
||||
pickup.global_position = global_position + Vector2(-30, 0)
|
||||
get_parent().add_child(pickup)
|
||||
|
||||
func _spawn_body_part_drop() -> void:
|
||||
var unacquired: Array[String] = []
|
||||
for path in ALL_PART_PATHS:
|
||||
if path not in UpgradeManager.acquired_part_paths:
|
||||
unacquired.append(path)
|
||||
if unacquired.is_empty():
|
||||
return
|
||||
var chosen: String = unacquired[randi() % unacquired.size()]
|
||||
var pickup = BODY_PART_PICKUP.instantiate()
|
||||
pickup.part = load(chosen)
|
||||
pickup.global_position = global_position + Vector2(30, 0)
|
||||
get_parent().add_child(pickup)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Visual — phase-aware tints (overrides EnemyBase._tick_flash)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user