feat: add provenance-aware npc communication
This commit is contained in:
+19
-1
@@ -288,4 +288,22 @@ func _build_known_fact_display(npc: SimNPC) -> String:
|
||||
for other_npc in simulation_manager.npcs:
|
||||
name_map[other_npc.id] = other_npc.npc_name
|
||||
var latest_event := known_events[known_events.size() - 1] as EconomicEventRecord
|
||||
return "Known fact: %s" % latest_event.description(name_map)
|
||||
var provenance := ""
|
||||
if simulation_manager.has_method("get_known_event_record"):
|
||||
var known_record: KnownEventStateRecord = simulation_manager.get_known_event_record(
|
||||
npc.id, int(latest_event.data["event_id"])
|
||||
)
|
||||
if known_record != null:
|
||||
match known_record.get_acquisition_method():
|
||||
SimulationIds.KNOWLEDGE_ACQUISITION_PERFORMED:
|
||||
provenance = " (performed personally)"
|
||||
SimulationIds.KNOWLEDGE_ACQUISITION_WITNESSED:
|
||||
provenance = " (witnessed)"
|
||||
SimulationIds.KNOWLEDGE_ACQUISITION_COMMUNICATED:
|
||||
var source_name: String = name_map.get(
|
||||
known_record.get_source_npc_id(), "someone"
|
||||
)
|
||||
provenance = " (heard from %s)" % source_name
|
||||
SimulationIds.KNOWLEDGE_ACQUISITION_LEGACY:
|
||||
provenance = " (source not recorded)"
|
||||
return "Known fact: %s%s" % [latest_event.description(name_map), provenance]
|
||||
|
||||
Reference in New Issue
Block a user