chore: bootstrap nana-story M0

This commit is contained in:
Codex
2026-07-28 12:51:00 +08:00
commit 3dacc92423
71 changed files with 6840 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
{
"sourceBranch": {
"id": "branch_main",
"head": "node_006"
},
"fork": {
"fromNode": "node_002",
"newBranch": "branch_002",
"newHead": "node_007"
},
"assertions": {
"sourceHeadUnchanged": "node_006",
"newParent": "node_002",
"crossBranchStateLeak": false
}
}
@@ -0,0 +1,19 @@
{
"ops": [
{
"op": "transfer_item",
"item_id": "item_red_hairpin_001",
"from": "nana",
"to": "player",
"placement": "bag",
"mode": "stolen"
}
],
"assertions": {
"owner": "nana",
"holder": "player",
"nanaKnowsTransfer": false,
"visibleInPlayerInventory": true,
"hiddenFactsVisible": false
}
}
+29
View File
@@ -0,0 +1,29 @@
{
"ops": [
{
"op": "create_promise",
"promise": {
"id": "promise_return_before_dawn",
"promiser": "player",
"promisee": "nana",
"content": "天亮前一定回来",
"status": "accepted",
"weight": "major",
"created_at": "node_003",
"accepted_at": "node_003",
"resolved_at": null
}
},
{
"op": "adjust_relationship",
"from": "nana",
"to": "player",
"adjustment": {
"dimension": "hope",
"delta": 4,
"cause": "娜娜接受了玩家关于共同未来的明确许诺",
"judgment_rule": "nana.promises.accepted"
}
}
]
}
+89
View File
@@ -0,0 +1,89 @@
{
"storyId": "story_nana_demo",
"nodeId": "node_001",
"branchId": "branch_main",
"sceneId": "old_station_platform",
"sceneTitle": "旧青川站",
"characterName": "娜娜",
"beats": [
{
"id": "beat_001",
"kind": "narration",
"speaker": null,
"text": "雨水沿着废弃站台的铁棚落下。远处的钟停在四点十七分。",
"visual": {
"character": "nana",
"expression": "uneasy",
"pose": "holding_coat",
"scene": "old_station_platform_rain"
}
},
{
"id": "beat_002",
"kind": "dialogue",
"speaker": "娜娜",
"text": "你真的会在天亮前回来吗?",
"visual": {
"character": "nana",
"expression": "guarded",
"pose": null,
"scene": null
}
}
],
"suggestions": [
{
"id": "suggestion_promise",
"label": "认真答应她",
"draft": "我答应你,天亮前一定回来。"
},
{
"id": "suggestion_ask",
"label": "追问原因",
"draft": "你为什么这么在意天亮之前?"
},
{
"id": "suggestion_observe",
"label": "先观察她",
"draft": "我没有立刻回答,先看了看她攥紧外套的手。"
}
],
"inventory": [
{
"instanceId": "item_flashlight_001",
"name": "旧手电筒",
"description": "光线不算亮,但足以照清站台下方。",
"quantity": 1,
"placement": "bag",
"condition": "worn"
}
],
"knowledge": [
{
"id": "knowledge_station_clock",
"title": "停摆的站钟",
"summary": "站钟停在四点十七分,似乎并非自然损坏。",
"certainty": "confirmed"
}
],
"promises": [],
"relationship": {
"affinity": "warming",
"trust": "guarded",
"hope": "guarded",
"respect": "warming",
"intimacy": "guarded",
"attachment": "warming",
"updatedAtNode": null
},
"history": [
{
"id": "node_001",
"parentId": null,
"branchId": "branch_main",
"label": "雨夜车站",
"isCurrent": true
}
],
"canContinue": true
}
+28
View File
@@ -0,0 +1,28 @@
{
"request": {
"storyId": "story_nana_demo",
"branchId": "branch_main",
"expectedNodeId": "node_004",
"actionId": "action_search_locker",
"intent": "speak_or_act",
"input": "我趁娜娜看向铁轨时,检查她刚才挡住的储物柜。"
},
"recordedCheck": {
"id": "check_001",
"action_id": "action_search_locker",
"actor": "player",
"skill": "spot_hidden",
"target": 55,
"difficulty": "hard",
"bonus_dice": 0,
"roll": 24,
"result": "hard_success",
"pushed_from": null,
"node_id": "node_005"
},
"playerVisible": {
"riskWasNarratedBeforeCheck": true,
"containsRoll": false,
"containsTarget": false
}
}
+15
View File
@@ -0,0 +1,15 @@
{
"request": {
"storyId": "story_nana_demo",
"branchId": "branch_main",
"expectedNodeId": "node_001",
"actionId": "action_002",
"intent": "speak_or_act",
"input": "这里以前发生过什么?"
},
"expected": {
"committedNodeId": "node_002",
"stateOps": [],
"beatKinds": ["action", "dialogue"]
}
}