feat: surface player routes for village needs

This commit is contained in:
Rijad Zuzo
2026-07-16 12:36:50 +02:00
parent d6e6a63048
commit 4f88d15e12
15 changed files with 417 additions and 47 deletions
+16 -4
View File
@@ -311,16 +311,25 @@ func _run() -> void:
runtime_opportunity.get_trigger_event_id() if runtime_opportunity != null else -1
)
var runtime_helper: OpportunityHelperResult = simulation_manager.get_active_opportunity_helper()
var runtime_player_response: OpportunityPlayerResponseResult = (
simulation_manager.get_active_opportunity_player_response()
)
_check(
(
runtime_opportunity != null
and runtime_helper == null
and runtime_player_response != null
and runtime_player_response.action_id == SimulationIds.ACTION_GATHER_WOOD
and runtime_player_response.target_id == SimulationIds.STORAGE_VILLAGE_WOODPILE
and runtime_player_response.available_source_count > 0
and not simulation_manager.npc_knows_event(witness.id, runtime_trigger_id)
and whisper_kicker.text == "VILLAGE NEED"
and contributor.npc_name in whisper_message.text
and "needs wood" in whisper_message.text
and whisper_kicker.text == "YOU CAN HELP"
and (
"Harvest a tree; wood goes straight to the village woodpile."
in whisper_message.text
)
),
"The real blocked-work need should surface while the distant helper remains uninformed"
"An unassisted blocked-work need should surface its real player harvest route"
)
_check(
(
@@ -330,6 +339,7 @@ func _run() -> void:
"Possible helper: none informed, trusted, and able to supply"
in village_stats_label.text
)
and "Player route: Gather Wood → Village Woodpile" in village_stats_label.text
and "◆ Find wood for Study" in inspector_label.text
and not contributor_visual.get_node("OpportunityConcernRoot").visible
),
@@ -348,6 +358,7 @@ func _run() -> void:
witness.id, runtime_trigger_id
)
runtime_helper = simulation_manager.get_active_opportunity_helper()
runtime_player_response = simulation_manager.get_active_opportunity_player_response()
_check(
(
communicated_trigger != null
@@ -357,6 +368,7 @@ func _run() -> void:
)
and communicated_trigger.get_source_npc_id() == contributor.id
and runtime_helper != null
and runtime_player_response == null
and runtime_helper.helper_npc_id == witness.id
and runtime_helper.action_id == SimulationIds.ACTION_GATHER_WOOD
and whisper_kicker.text == "NEWS TRAVELS"