mirror of
https://github.com/kodzukye/scrap-signal.git
synced 2026-04-26 20:27:33 +00:00
- Add atelier tilemap (14x14 tiles) with dark atmosphere - Add Journal D-891 interactable with Matteo Corda narrative - Add pushable frozen robot (reuses PushableBox logic) - Add PassageTrigger to reveal hidden path via TileMapLayer - Add RepairStation for SCRAP-09 self-repair mini-game - Add scrap09 puzzle in RepairMinigame with valid connections - Add door to cour unlocked by scrap09_repaired flag
65 lines
1.5 KiB
GDScript
65 lines
1.5 KiB
GDScript
extends Node
|
|
|
|
signal inventory_changed
|
|
signal flag_changed(key: String, value: bool)
|
|
|
|
# Pièces requises par PNJ
|
|
const REPAIR_REQUIREMENTS := {
|
|
"vrac7": { "engrenage": 3},
|
|
"iris3": { "circuit": 1 },
|
|
}
|
|
|
|
var repaired := {
|
|
"vrac7": false,
|
|
"iris3": false,
|
|
}
|
|
var inventory := {}
|
|
var flags := {}
|
|
|
|
func get_flag(key: String) -> bool:
|
|
return flags.get(key, false)
|
|
|
|
func set_flag(key: String, value: bool) -> void:
|
|
flags[key] = value
|
|
flag_changed.emit(key, value)
|
|
|
|
# Items
|
|
func add_item(id: String, amount: int = 1) -> void:
|
|
if inventory.has(id):
|
|
inventory[id] += amount
|
|
inventory_changed.emit()
|
|
else:
|
|
inventory[id] = 1
|
|
inventory_changed.emit()
|
|
print("Inventaire : ", inventory)
|
|
|
|
func has_item(id: String) -> bool:
|
|
return inventory.get(id, 0) > 0
|
|
|
|
func remove_item(item_id: String, amount: int) -> void:
|
|
if inventory.has(item_id):
|
|
inventory[item_id] -= amount
|
|
if inventory[item_id] <= 0:
|
|
inventory.erase(item_id)
|
|
inventory_changed.emit()
|
|
|
|
# Robots repairs
|
|
func can_repair(npc_id: String) -> bool:
|
|
if repaired.get(npc_id, false):
|
|
return false # déjà réparé
|
|
var required = REPAIR_REQUIREMENTS.get(npc_id, {})
|
|
for item_id in required:
|
|
if inventory.get(item_id, 0) < required[item_id]:
|
|
return false
|
|
return true
|
|
|
|
func complete_repair(npc_id: String) -> void:
|
|
if not can_repair(npc_id):
|
|
return
|
|
# Consomme les pièces
|
|
var required = REPAIR_REQUIREMENTS[npc_id]
|
|
for item_id in required:
|
|
remove_item(item_id, required[item_id])
|
|
repaired[npc_id] = true
|
|
print("Réparation terminée : ", npc_id)
|