feat: surface open opportunity need on villager field note
This commit is contained in:
@@ -841,10 +841,20 @@ Next:
|
||||
|
||||
1. Let an inspected villager who owns an open opportunity surface that exact
|
||||
village need plus the authoritative direct-help route, capable helper, or
|
||||
honest unavailable state that currently exists.
|
||||
honest unavailable state that currently exists. **Complete:** the quiet
|
||||
`VillagerFieldNoteHud` now shows a restrained `Need` line for exactly that
|
||||
note, derived from the existing player-response/helper queries and the real
|
||||
storage state. It names the helper when one is capable, shows the direct
|
||||
finite-resource-to-storage route when the player response derives it, or
|
||||
honestly states why help is unavailable, and it re-derives from live facts
|
||||
after restore without entering saves.
|
||||
2. Prove that the ordinary finite-resource-to-storage harvest resolves an
|
||||
available player route and updates the context without dialogue branching,
|
||||
acceptance state, rewards, a quest log, or saved presentation state.
|
||||
**Complete:** a runtime scenario stages the real pantry crisis, surfaces the
|
||||
need for its interested villager, and proves that one ordinary
|
||||
`harvest_resource_node` extraction resolves the same open opportunity and
|
||||
clears the need segment on the next refresh.
|
||||
|
||||
Do not start with GIS data, a full city, a large asset pack, or more NPC
|
||||
mechanics. The next proof is a beautiful stage for the systems that already
|
||||
|
||||
@@ -984,6 +984,25 @@ resolve the need without adding a dialogue tree, quest acceptance, rewards, a
|
||||
quest log, reputation, a generic conversation framework, or saved presentation
|
||||
state in that slice.
|
||||
|
||||
The first bounded field-note opportunity surfacing slice is complete:
|
||||
|
||||
- `VillagerInspectionResult` now carries an optional read-only
|
||||
`VillagerOpportunityNote` that is present only when the inspected villager is
|
||||
the interested party of an open village opportunity;
|
||||
- `VillagerOpportunityNote.derive` decides the honest help state from the
|
||||
existing authoritative queries: the derived player-response route wins, then
|
||||
the capable helper by name, then a real unavailable reason (need already met,
|
||||
storage has no room, no stocked source in reach, or no storage at all);
|
||||
- the quiet `VillagerFieldNoteHud` shows a restrained `Need` line for exactly
|
||||
that note, coexists with the existing `E` prompt and cinematic mode, and
|
||||
re-derives it from live state without entering saves or drawing RNG;
|
||||
- a real player finite-resource harvest resolves the same open
|
||||
`OpportunityStateRecord` through the existing economy/event history, and the
|
||||
need segment clears on the next refresh;
|
||||
- unit, runtime, and query-neutrality checks cover the derive branches, the
|
||||
staged pantry-crisis surfacing, helper naming, ordinary harvest resolution,
|
||||
and the absence of saved presentation state.
|
||||
|
||||
Recently completed:
|
||||
|
||||
- `Jajce Villager Field Note 12`: a separate player-facing note selects the
|
||||
|
||||
Reference in New Issue
Block a user