feat: let villagers witness and trust the player restock
This commit is contained in:
@@ -34,6 +34,7 @@ func _ready() -> void:
|
||||
simulation_manager.event_knowledge_changed.connect(_on_helper_facts_changed)
|
||||
simulation_manager.event_knowledge_forgotten.connect(_on_helper_fact_forgotten)
|
||||
simulation_manager.relationship_changed.connect(_on_helper_relationship_changed)
|
||||
simulation_manager.relationship_changed.connect(_on_player_trust_changed)
|
||||
simulation_manager.npc_inventory_changed.connect(_on_helper_inventory_changed)
|
||||
simulation_manager.village_changed.connect(_on_village_changed)
|
||||
simulation_manager.state_restored.connect(_on_state_restored)
|
||||
@@ -112,6 +113,31 @@ func _on_helper_relationship_changed(
|
||||
_refresh_player_response()
|
||||
|
||||
|
||||
func _on_player_trust_changed(
|
||||
relationship: RelationshipStateRecord, cause_event: EconomicEventRecord
|
||||
) -> void:
|
||||
if relationship == null or cause_event == null:
|
||||
return
|
||||
if relationship.get_subject_id() != SimulationIds.PLAYER_ACTOR_ID:
|
||||
return
|
||||
if _is_active_need_supply(cause_event):
|
||||
return
|
||||
var observer_name := _get_npc_name(relationship.get_observer_id())
|
||||
_show_feedback(
|
||||
"Trust grows", "%s trusts you — you stocked the pantry." % observer_name, &"player_trust"
|
||||
)
|
||||
|
||||
|
||||
func _is_active_need_supply(cause_event: EconomicEventRecord) -> bool:
|
||||
var opportunity: OpportunityStateRecord = simulation_manager.get_active_opportunity()
|
||||
if opportunity == null:
|
||||
return false
|
||||
return (
|
||||
opportunity.get_target_id() == StringName(cause_event.data["destination_id"])
|
||||
and opportunity.get_resource_id() == StringName(cause_event.data["item_id"])
|
||||
)
|
||||
|
||||
|
||||
func _on_helper_inventory_changed(_npc: SimNPC, _item_id: StringName, _amount: float) -> void:
|
||||
_refresh_player_response()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user