feat: derive capable opportunity helpers

This commit is contained in:
Rijad Zuzo
2026-07-16 10:41:05 +02:00
parent 79dd503343
commit eaa15c076c
17 changed files with 648 additions and 40 deletions
+22 -5
View File
@@ -775,11 +775,28 @@ The second bounded Milestone 7 consumer is complete:
- the two proven consumers now share `VillageOpportunitySystem` and the common
lifecycle fields, while their evidence and care rules remain explicit.
Milestone 7 is not complete. The immediate next slice is a bounded
capable-helper query for an open need: derive one viable helper from existing
knowledge, relationship, action, inventory, and resource facts and expose the
reason for that result. Keep it read-only first; only a later proven slice
should let opportunity awareness influence autonomous task selection.
The first bounded capable-helper query is complete:
- an open need derives at most one living helper who knows its exact trigger,
has an existing familiar directed relationship with at least 0.6 trust toward
the interested villager, and is not that villager;
- the helper must either carry enough matching inventory to reach the target or
have a matching enabled, NPC-usable, sufficiently stocked finite resource
that is not reserved by someone else;
- ready inventory wins first, followed by higher trust, matching gather
profession, familiarity, and lowest stable NPC ID;
- `OpportunityHelperResult` exposes the exact opportunity, trigger, helper,
action, inventory source or finite-source count, resource, relationship
values, and concise reason without mutating RNG, tasks, reservations,
resources, or persisted state;
- food and wood scenarios re-derive the same result after restore, and the
village summary explains the current helper route from real simulation facts.
Milestone 7 is not complete. The immediate next slice is one bounded autonomous
consumer of this query: let the currently derived helper choose the reported
gather/deposit action through ordinary selection while preserving urgent
self-care and schedule precedence. Re-query rather than persisting assignment,
and do not add quest acceptance or reward state.
Recently completed: