summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/Interaction.fs
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-29 06:51:21 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-29 06:51:21 +0800
commit2da1cbaf253245c437800e80b9aed9e8e47306b5 (patch)
tree29f1c383f0870db743221e08fde2d158f82a40b6 /src/LivingVillage.Desktop/Interaction.fs
parenta2103b24ae6f78da6c8906cbc49599850dcc49c3 (diff)
downloadliving-village-2da1cbaf253245c437800e80b9aed9e8e47306b5.tar.gz
p65: 职业切片五 货郎打听行情读 World.Rumors(中文行情短答 + 稿证据)
- Kernel Occupation 新增 freshReliableRumors/inquiryRumor/marketInquiryText(纯判定+文案, 对齐 Sim.latestRumorFor 新鲜度/可信度口径,全序命中规则,禁随机;不改 Sim.fs) - Desktop chooseIntent:货郎 OfferTrade 读对话前谣言池,Status=inquiry|<短答>;statusLabel 透出 - 真字补 17 字(东头西北巷口盐巴米布茶柴涨两文落些)并重出 atlas(340 字/384x528) - 红先 P65RumorInquiryTests(6 例):命中/幂等/陈旧·微弱·空池/仅货郎/非货郎回归逐字节/ save v2 头不变+v3 round-trip/穷举组合无缺字 - LV_P65_SHOT 钩子 + scripts/analyze-p65.py + docs/evidence/p65-*(PASS) - Desktop 320/320,Kernel 119/119;digest 953775FA…7F6C ×3 PASS
Diffstat (limited to 'src/LivingVillage.Desktop/Interaction.fs')
-rw-r--r--src/LivingVillage.Desktop/Interaction.fs16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/LivingVillage.Desktop/Interaction.fs b/src/LivingVillage.Desktop/Interaction.fs
index 75575dd..ba792d1 100644
--- a/src/LivingVillage.Desktop/Interaction.fs
+++ b/src/LivingVillage.Desktop/Interaction.fs
@@ -318,6 +318,12 @@ module M5Interaction =
match view.Task with
| Some task -> Occupation.biasResponse (Some task.Profile.Kind)
| None -> Sim.responseFor
+ // P65:货郎打听行情读**对话前**既有谣言池,产出中文行情短答。
+ // 非货郎 / 无职业 / 无命中谣言 → None,落回既有 dialogue 文案(旧行为逐字节不变)。
+ let inquiry =
+ match view.Task with
+ | Some task -> Occupation.marketInquiryText (Some task.Profile.Kind) intent world
+ | None -> None
match Sim.chooseDialogueWith respond menu.Target intent world with
| DialogueSucceeded(outcome, next) ->
// P-d 剧情线:每次玩家对话至多推进一段,摘要写年鉴(StoryAnnal)。
@@ -352,9 +358,12 @@ module M5Interaction =
PromptTargetPos = None
Task = advanced
Status =
- match taskMessage with
- | Some message -> "task|" + message
- | None -> sprintf "dialogue intent=%A response=%A" outcome.Intent outcome.Response
+ match inquiry with
+ | Some text -> "inquiry|" + text
+ | None ->
+ match taskMessage with
+ | Some message -> "task|" + message
+ | None -> sprintf "dialogue intent=%A response=%A" outcome.Intent outcome.Response
StatusTick = Some storyWorld.Tick }
| DialogueRejected(failure, next) ->
next,
@@ -585,6 +594,7 @@ module M5Interaction =
| value when value.StartsWith("chronicle") -> "年鉴已打开"
| "task panel open" -> "任务面板已打开"
| value when value.StartsWith("task|") -> value.Substring("task|".Length)
+ | value when value.StartsWith("inquiry|") -> value.Substring("inquiry|".Length)
| value when value.StartsWith("trade ok|") -> value.Substring("trade ok|".Length)
| value when value.StartsWith("trade fail|") -> "交易失败:" + value.Substring("trade fail|".Length)
| value when value.StartsWith("no dialogue") -> "当前没有可用对话"