From bbd49abfb012102cb288fa4031fee6ed83d78da2 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sun, 18 Oct 2026 06:15:38 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E6=9C=AF=E8=AF=AD):=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9C=AF=E8=AF=AD=E5=88=B7=E6=96=B0=E6=89=B9?= =?UTF-8?q?=E5=85=A8=E9=87=8F=E5=85=A5=E5=BA=93=E2=80=94=E2=80=942026-10-1?= =?UTF-8?q?8=20=E7=94=A8=E6=88=B7=E8=A3=81=E5=AE=9A=EF=BC=88=E9=87=91?= =?UTF-8?q?=E5=B8=81/=E6=8F=92=E6=97=97/=E6=97=97/=E9=9B=B7=E6=A0=BC/?= =?UTF-8?q?=E6=83=A9=E7=BD=9A=E6=A0=BC=20=E4=BA=94=E8=AF=8D=EF=BC=89design?= =?UTF-8?q?/+tools/=20=E5=9F=9F=E8=90=BD=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 术语表 v1.13:GP 唯一正式命名(删「局内金币」别名)+旗/控制词条更名封印/控制+封印定性由「插旗的对外表达」更正为正式动作名(全库统一、非比喻)+禁用字面从对外命名扩为全库+删「机制文档内部用语不受限」条款+退役词对照表补三行(金币→GP/插旗→封印/旗→封印印记)+危险格词条「被旗控制」→「被封印控制」+B3 豁免例举去旗 - 机检扩容 tools/doc_term_audit.py:RETIRED_TERMS 新增 金币→GP、插旗|标旗→封印 两行(DEFAULT_DIRS 不变,game/ 扫描归代码批);拔旗|撤旗行继任措辞随批换代(插旗不可逆→封印不可逆) - GDD 全域正文换代约 200 行/31 文件:金币→GP(金币袋→GP 袋)、插旗/标旗→封印、雷格/惩罚格→危险格(2026-10-11 退役批存量补扫)、旗概念→封印印记(旗判定→封印判定/标中旗→封印标中/标错旗→标错封印/旗格→封印格/旗位→封印位等复合词系);00-游戏概念「封印降级为类型风味词」定性翻转;修订记录/版本历史/禁令引举/更名记载等留档行零动 - registry/entities.yaml(信标网络可达性/事件序/回执驱动三处)+art 五件(art-bible 封印印记六处/comfyui 背旗→背负封印印记/两清单)+dev 七件(architecture 旗集→封印集/code-conventions-cases/test-conventions/架构图 html json 四件)随批换代 - tools 四脚本注释与图内标注换代(clear_dominance_audit/render_sample_sheet×2/analyze_playtest;代码标识符零动归代码批) - design/qa/代码术语审计报告-2026-10-18.md 随批入库(本批参考素材,06:578 引用闭合 doc_link 死链) - 06-待办清单/术语表两在途脏件(代码术语批 06 登记+A 表头「不用→禁用」)随批一并入库 自检:doc_term_audit --strict 零疑似现行(45 文件 434 命中全留档类);文档域六闸验收通过无新增红(gdd_lint R3 对 00 正文修订注记一次打回已去注记化改写;doc_link 死链经报告入库闭合);正文残留仅 06:73「拔旗」一处(件派生动词白名单豁免语境、机检同款豁免,设计意图记录不动) --- design/art/art-assets-checklist.md | 6 +- design/art/art-bible.md | 18 +-- design/art/art-status-checklist.md | 2 +- design/art/comfyui-prompts.md | 2 +- design/dev/architecture/architecture.md | 4 +- .../dev/architecture/code-architecture.html | 8 +- .../dev/architecture/code-architecture.json | 4 +- design/dev/architecture/gdd-architecture.html | 6 +- design/dev/architecture/gdd-architecture.json | 2 +- design/dev/code-conventions-cases.md | 4 +- design/dev/test-conventions.md | 4 +- design/gdd/00-游戏概念.md | 4 +- design/gdd/01-核心循环.md | 8 +- design/gdd/02-系统清单.md | 2 +- design/gdd/05-不做清单.md | 2 +- design/gdd/06-待办清单.md | 14 +- design/gdd/07-体验验证清单.md | 12 +- design/gdd/08-Alpha版本标准.md | 2 +- design/gdd/systems/冒险循环/关卡节点图生成.md | 2 +- design/gdd/systems/冒险循环/冒险结构.md | 6 +- design/gdd/systems/冒险循环/奇物.md | 32 ++--- design/gdd/systems/冒险循环/难度曲线与Boss.md | 2 +- design/gdd/systems/战斗循环/地图战斗资源.md | 8 +- design/gdd/systems/战斗循环/增益状态.md | 14 +- design/gdd/systems/战斗循环/战斗结算.md | 26 ++-- design/gdd/systems/战斗循环/战斗表现.md | 8 +- design/gdd/systems/战斗循环/敌人系统.md | 8 +- design/gdd/systems/排雷循环/地形变异.md | 8 +- design/gdd/systems/排雷循环/排雷玩法.md | 64 +++++----- design/gdd/systems/排雷循环/棋盘生成.md | 2 +- design/gdd/systems/排雷循环/行动经济.md | 34 ++--- design/gdd/systems/表现与支撑/HUD框架.md | 8 +- design/gdd/systems/表现与支撑/存档序列化.md | 2 +- design/gdd/systems/表现与支撑/教学引导.md | 6 +- design/gdd/systems/表现与支撑/音频.md | 4 +- design/gdd/systems/跨局循环/秘宝.md | 8 +- design/gdd/systems/跨局循环/锻造工坊.md | 2 +- design/gdd/ux/battle.md | 24 ++-- design/gdd/ux/interaction-patterns.md | 2 +- design/gdd/ux/level-map.md | 2 +- design/gdd/ux/shop.md | 4 +- design/gdd/术语表.md | 22 ++-- design/qa/代码术语审计报告-2026-10-18.md | 120 ++++++++++++++++++ design/registry/entities.yaml | 4 +- tools/analyze_playtest.py | 2 +- tools/clear_dominance_audit.py | 2 +- tools/doc_term_audit.py | 8 +- tools/render_sample_sheet.py | 6 +- tools/render_sample_sheet_v3.py | 6 +- 49 files changed, 345 insertions(+), 205 deletions(-) create mode 100644 design/qa/代码术语审计报告-2026-10-18.md diff --git a/design/art/art-assets-checklist.md b/design/art/art-assets-checklist.md index 1f010956..cc021af5 100644 --- a/design/art/art-assets-checklist.md +++ b/design/art/art-assets-checklist.md @@ -26,7 +26,7 @@ | 条款 | 对出图的具体要求 | |---|---| | 一句话视觉规则 | 明快的地牢,轻快的扫荡,仔细的推理——**明亮像素幻想,全年龄,非暗黑**,角色 2~3 头身 | -| 原则一「预告上格」 | 格内绘制优先级 **数字(含色牌)> 小人 > 旗 > 变异纹带 > 装饰变体 > 底色**;任何元素禁止遮挡数字字形区;类型微光为底效泛光层,不入遮挡栈 | +| 原则一「预告上格」 | 格内绘制优先级 **数字(含色牌)> 小人 > 封印印记 > 变异纹带 > 装饰变体 > 底色**;任何元素禁止遮挡数字字形区;类型微光为底效泛光层,不入遮挡栈 | | 原则二「明亮为皮,明度分档为骨」(v3.0) | 暖倾向;数字亮墨直画已开格底(候选亮墨 L≥0.55 / 已开底 L 0.20–0.32,样张 v3 冻结),对比 ≥4.5:1;色牌 `#F5EAD3` 降级为复杂格底后备(牌上深墨 L≤0.027);未开格底 L≥0.30、HSV 饱和 ≤0.55 | | 原则三「一砖一世界」 | 变体优先换色板不加新资产;危险状态必须**形状+颜色双通道**(色弱灰度可辨) | | 类型预读单通道(§4.6.3) | 未开格 = **类型常显微光**(五组色带 §4.2:芥末黄/黄绿/青/紫罗兰/绯红,色相+明度双码,均候选值,避 300°–345° 禁入带,样张批冻结);不呈现极性、不泄危险格与安全格〔角嵌形状通道 2026-09-28 退役——用户裁微光格只留微光〕 | @@ -115,7 +115,7 @@ - **联动**:正式节点图 UI 设计未成文(登记待办:排秘宝内容批后与美术批同期待拍板);HUD框架义务清单漏「关卡节点地图」行,顺带补。 - **现状**:程序化占位,够试玩。 -### 3.3 雷 / 旗 / 数字格面像素化 ⚙ +### 3.3 雷 / 封印印记 / 数字格面像素化 ⚙ - **要什么**:格子样张通过后按冻结参数出全套砖面资产(含图类型换色板组)。 - **来源**:⚙ 脚本管线自产——未开/已开/危险格/变异纹带是扫雷专属语义〔角嵌纹样 2026-09-28 退役〕,素材站没有对的;砖面**纹理底噪**可 ♻ 用 CC0 无缝石/土纹理作脚本管线的纹理输入,量化到色板(混合路线)。 @@ -165,7 +165,7 @@ ## 6. 执行顺序(依赖链) ``` -格子样张(1.1) ──┬─> 雷旗数字格面(3.3) +格子样张(1.1) ──┬─> 雷/封印印记/数字格面(3.3) │ 战斗一屏样张(1.2) ──> 角色终稿(2.1/2.2) ──> 意图动画三档(2.3) ──> 演出类(P4) │ diff --git a/design/art/art-bible.md b/design/art/art-bible.md index 956cc435..3e06ffde 100644 --- a/design/art/art-bible.md +++ b/design/art/art-bible.md @@ -78,7 +78,7 @@ ### 2.1 挖掘阶段(核心状态,占时最长) - **主情绪**:棋手式清明专注——视线始终被数字牵引,画面无一处杂音抢焦;久推不生视觉疲劳 -- **色彩性格**:暖石色低饱和打底(世界中层),高饱和高亮只属于信息面层(数字与旗) +- **色彩性格**:暖石色低饱和打底(世界中层),高饱和高亮只属于信息面层(数字与封印印记) - **氛围形容词**:清爽、井然、可读、耐心 - **能量**:2/10 - **承载元素**:可挖域**接触带呼吸微光**——光画在英雄格周界的接触面上(正交邻墙=整条边,斜向邻墙=共享角点+向两侧各延伸半条边,画法 §3.2,蓝族色 §4.2)——画面里唯一在动的,是玩家的思路 @@ -89,7 +89,7 @@ - **色彩性格**:情绪不走明度(§2 禁令),色彩转向金橙主导、饱和拉高;数字色转译为弹道色沿行推进 - **氛围形容词**:酣畅、递进、一气呵成 - **能量**:7/10,随连击爬升 -- **承载元素**:兑现光带逐行横扫棋盘,开格化箭雨、旗化暴击砸向敌人,因果全程可见可归因 +- **承载元素**:兑现光带逐行横扫棋盘,开格化箭雨、印记化暴击砸向敌人,因果全程可见可归因 ### 2.3 清图奖励与换图 @@ -97,7 +97,7 @@ - **色彩性格**:全屏饱和峰值:金粒喷泉与彩纸迸发,饱和瞬时拉满后回落;明度不动(§2 情绪禁令) - **氛围形容词**:丰收、轻快、干脆 - **能量**:8/10,尖峰后速降 -- **承载元素**:最后一格碎砖中喷出的金币喷泉,叮当落入 UI 钱袋 +- **承载元素**:最后一格碎砖中喷出的 GP 喷泉,叮当落入 UI 钱袋 ### 2.4 战斗胜利 @@ -113,7 +113,7 @@ - **色彩性格**:情绪不走明度(§2 禁令),色相转暖灰掺暮蓝;全作禁血红与黑场,唯此一拍最静 - **氛围形容词**:惋惜、安静、余温、可再来 - **能量**:1/10 -- **承载元素**:小人坐在碎砖上摇头掸灰,插过的旗(封印印记)逐面化作光点收回行囊 +- **承载元素**:小人坐在碎砖上摇头掸灰,落下的封印印记逐枚化作光点收回行囊 ### 2.6 Boss 与精英遭遇 @@ -141,7 +141,7 @@ ### 状态间区分度自检 -推理与兑现靠「谁在动 + 饱和」区分:挖掘时棋盘静止,唯光标微光在动、高饱和只在数字上;结算时棋盘自体运动,金色光带横扫、饱和扩散至全屏。胜利与失败以**色相**即判(金蜡封对暮蓝收旗),Boss 战以紫赤色相是否登场作标记。 +推理与兑现靠「谁在动 + 饱和」区分:挖掘时棋盘静止,唯光标微光在动、高饱和只在数字上;结算时棋盘自体运动,金色光带横扫、饱和扩散至全屏。胜利与失败以**色相**即判(金蜡封对暮蓝收印),Boss 战以紫赤色相是否登场作标记。 (风险呼应:自动战斗过场化 → 2.2 可见兑现与爆发支点;「我算对了」缺高光 → 2.2 爆发支点;全年龄失败表现 → 2.5 有分量不压抑。) @@ -186,7 +186,7 @@ > 尾注「←」同第 3 节:P1–P4=支柱(P1 推理的掌控感/P2 规划的延迟兑现/P3 风险与收益同源/P4 地牢下探隐喻,语义见 §1.2「锚定」注);原一/二/三=1.2 支撑原则;§x=对应节。本节只定用色;凡涉具体变异、状态种类之处一律「待 GDD 定夺」,只规定"若有,则如何用色"。 -**总纲|彩为世,墨为信**:逻辑信息(数字、UI 数据、物件轮廓)一律用**近黑暖墨族**;世界与物件(砖、旗面、金、氛围)用彩。墨管可读,彩管气质。←原一/原二;§3.3 +**总纲|彩为世,墨为信**:逻辑信息(数字、UI 数据、物件轮廓)一律用**近黑暖墨族**;世界与物件(砖、封印面、金、氛围)用彩。墨管可读,彩管气质。←原一/原二;§3.3 ### 4.1 主色板 @@ -239,7 +239,7 @@ 1. 已开 vs 未开:§3.2 完整/碎裂形承载,无需另加 2. 已开 vs 变异格:纹带形状通道,灰度截图可辨,无需另加 -3. 旗 vs 巢穴(危险格):旗形物件对砖面巢穴纹,无需另加 +3. 封印印记 vs 巢穴(危险格):印记形物件对砖面巢穴纹,无需另加 4. 奖励金 vs 危险红(色弱下皆偏褐):§3.1 道具点两类剪影 + §3.4 满圆对刺缺 + 金粒运动,无需另加 5. Boss 紫赤 vs 其他敌:§5.1 形状独占,无需另加 6. 小人蓝 vs 青墨数字:明度悬殊 + 小人轮廓与底盘,无需另加 @@ -298,7 +298,7 @@ | magic_recoil | magic 负向 | 魔法反噬 | 红族缺框 | | ap_up | action 正向 | 行动点 +1——疾步/沙漏 | 金族满框 | | ap_drain | action 负向 | 迟滞——沙漏倒置 | 红族缺框 | -| gp_coin | gp 正向 | 金币袋——钱币/财货 | 金族满框 | +| gp_coin | gp 正向 | GP 袋——钱币/财货 | 金族满框 | | gp_lose | gp 负向 | 破财 | 红族缺框 | | clear_blast | 清图槽 | 清图群伤——blast 族、整图作用域 | 按正向视觉 | @@ -320,7 +320,7 @@ | pierce | 穿刺族 | 破甲/锐锥 | | magic | 魔法族 | 秘法/星辰 | | action | 行动族 | 行动点/疾步 | -| gp | 金币族 | 钱币/财货 | +| gp | GP 族 | 钱币/财货 | - **呈现约束(2026-09-28 角嵌退役批更新)**:未开格呈现**类型微光单通道**(五组色带,§4.2「类型微光色带」,色相+明度双码;样张 v2 定稿 2026-09-28;可见范围与时机见《HUD框架》「未开格类型微光」节);不呈现极性、不呈现雷/安(信息口径见该权威定义节);样张批微光组间互辨抽测含明度档互辨(误读率指标出处见《地图战斗资源》极性提案)。 - **状态声明**:键集九值封闭(attack/defense/heal/blast/weaken/pierce/magic/action/gp,与 RewardTable 现行 cell_type 词表一致),扩键走本节修订。 diff --git a/design/art/art-status-checklist.md b/design/art/art-status-checklist.md index 4ccecf17..40c8196a 100644 --- a/design/art/art-status-checklist.md +++ b/design/art/art-status-checklist.md @@ -27,7 +27,7 @@ |---|---|---| | 格面资源徽章 19 枚 | ◐ | [art-bible](art-bible.md) §4.6 | | 关卡节点图图标组 | ◐ | [art-assets-checklist](art-assets-checklist.md) §3.2(正式 UI 设计未成文) | -| 雷/旗/数字砖面全套 | ◐ | [art-bible](art-bible.md) §1.4/§3.2(前置:格子样张) | +| 雷/封印印记/数字砖面全套 | ◐ | [art-bible](art-bible.md) §1.4/§3.2(前置:格子样张) | | 增益状态效果图标 9 枚 | ✅ 已接入(2026-09-24 状态记录 156) | [art-bible](art-bible.md) §4.6.1(候选原稿:状态图标批 2026-09-23 远程出图,归 candidates 档——路径描述性引用,归档纪律见 art-bible §8.3) | | 营地与元进度件 | ◐ | [art-bible](art-bible.md) §4.4 | | 字体(数字像素字 + 中文像素字) | ◐ | [art-bible](art-bible.md) §4.4 | diff --git a/design/art/comfyui-prompts.md b/design/art/comfyui-prompts.md index 58b2bb49..b11eb97b 100644 --- a/design/art/comfyui-prompts.md +++ b/design/art/comfyui-prompts.md @@ -48,7 +48,7 @@ Pixel art style. true pixel art game sprite drawn on a tiny 48x72 pixel canvas, realistic, photorealistic, 3d render, photo, dark, grimdark, horror, gore, blood, scary, creepy, text, letters, numbers, watermark, signature, logo, frame, border, ui, gradient background, scenery, dungeon background, multiple characters, crowd, black outline, heavy dark outline, back view, side view, isometric, blurry, jpeg artifacts, smooth lines, anti-aliasing, gradient shading, painterly, glossy, high detail, vector illustration, red clothes, gold armor ``` -- **规格**:剪影窄、直立、对称、轮廓凹凸 ≤2(§5.1 小人原型;背旗为唯一破例件,记账 +1,旗面恒定画右);主角是全作唯一蓝色角色。 +- **规格**:剪影窄、直立、对称、轮廓凹凸 ≤2(§5.1 小人原型;背负封印印记为唯一破例件,记账 +1,印记面恒定画右);主角是全作唯一蓝色角色。 ### 2.2 攻击态 diff --git a/design/dev/architecture/architecture.md b/design/dev/architecture/architecture.md index 26d280f5..280b86e0 100644 --- a/design/dev/architecture/architecture.md +++ b/design/dev/architecture/architecture.md @@ -103,7 +103,7 @@ | 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API | |---|---|---|---|---| | **board_generator**(A1) | 生成算法(五阶段管线)、BoardGenTable 回填、生成期指标集、合法性谓词(clearable / R₀≠S / min_safe)、可推理率度量(metric_version);生成姿态 = MVP 同步生成 + 加载幕(切片实证 10×10/12×12 同步可接受,WorkerThread 留扩展) | `generate(L, D, rng) -> Board`;度量独立入口×3(推理器 / F3 度量 / 合法性谓词——独立纯函数、同一实现) | ConfigDB(BoardGenTable/VariationTable);board_gen 流(一次 open_stream = 一张图);dig_ap_cost 只读 | 无 | -| **minesweeper_rules**(A2) | 棋盘状态(已开集 O / 旗集 G / 小人位)、三事件面、批次仲裁、install 四不变式 | `install_board(board)`;`settle_batch(intents)`(唯一提交入口);try_dig / try_flag_place / try_flag_pull / try_move(便捷形);`compute_move_path(cell)` 只读;`retire_board()`;三源拒绝(board_face / resource_face / phase)+ sub_reason 封闭枚举 | A1 产物(Board class_name 数据契约);A3 try_spend / last_round_end / 相位 | 无(零表读取、零 UI——切片实证) | +| **minesweeper_rules**(A2) | 棋盘状态(已开集 O / 封印集 G / 小人位)、三事件面、批次仲裁、install 四不变式 | `install_board(board)`;`settle_batch(intents)`(唯一提交入口);try_dig / try_flag_place / try_flag_pull / try_move(便捷形);`compute_move_path(cell)` 只读;`retire_board()`;三源拒绝(board_face / resource_face / phase)+ sub_reason 封闭枚举 | A1 产物(Board class_name 数据契约);A3 try_spend / last_round_end / 相位 | 无(零表读取、零 UI——切片实证) | | **unit_container**(B2) | hero/enemy 单位实例(hp/atk/实例池:池快照+冷却+摇定动作+保底计数)、行值快照 | spawn / query_alive / rollable_skills / special_skills / set_pending_action / pending_action / basic_streak / commit_action / tick_cooldowns / apply_damage / heal / default_target / ambush_grant_plan / despawn_all(2026-09-16 敌人技能池批:query_beat/query_attack/advance 随行为环退役) | ConfigDB(EnemyTable/SkillTable/HeroTable) | 无 | | **reward_economy**(B4) | 格面资源身份映射(install 期预分配、Ready 只读、换图映射消亡)、极性路由字典面((类型, 极性)→ 字典行查询;路由执行归 B1 授予段)、F6 当量供给投影 | 封闭 API:roll_board / query_identity / query_full_snapshot / grant / grant_clear / retire_mapping / polarity_row / equivalence_supply / phase / weighted_pick;另有 is_mapped 静默布尔投影(批量工具用) | ConfigDB(RewardTable);reward_roll 流(scope = 每次 install 批) | 无 | | **helper_items**(A5,切片已实装秘宝域) | HelperItemTable、探测显影语义 | (契约规范源:`../../gdd/systems/跨局循环/秘宝.md`——桥接位:A2 查询接口 + A4 counter_item_ids) | A2 / A4 / B4 | 无 | @@ -263,7 +263,7 @@ ``` Input(鼠标)→ D1 输入翻译 → 意图对象 → A2.settle_batch(唯一提交入口) - → A3.try_spend(原子扣减)→ A2 棋盘效果(挖/连锁/旗/移动)→ 三事件外发 + → A3.try_spend(原子扣减)→ A2 棋盘效果(挖/连锁/封印/移动)→ 三事件外发 → [棋盘渲染:D1 BoardView 按事件增量重绘;无事件帧 = 静态 + 动效] → 轮次结束 → A3 Waiting → B1 结算编排(段序七段)→ 明细步骤流 → D1 结算屏逐行呈现 ``` diff --git a/design/dev/architecture/code-architecture.html b/design/dev/architecture/code-architecture.html index 508bdf24..7cb8b76d 100644 --- a/design/dev/architecture/code-architecture.html +++ b/design/dev/architecture/code-architecture.html @@ -5165,7 +5165,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE. - + @@ -5628,9 +5628,9 @@ OTHER DEALINGS IN THE FONT SOFTWARE. - + - 翻开·插旗·和弦 + 翻开·封印·和弦 @@ -5871,7 +5871,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.

战斗动作链

    -
  • • 棋盘区 翻开/插旗/和弦 → 组合根 → 战斗编排器规则判定
  • +
  • • 棋盘区 翻开/封印/和弦 → 组合根 → 战斗编排器规则判定
  • • 结算回流:血量攻防→角色信息区 · 受击演出→展示区 · AP 扣减与提示→棋盘区
  • • 秘宝槽点击走两步交互:角色信息区 → 棋盘区/即刻生效
diff --git a/design/dev/architecture/code-architecture.json b/design/dev/architecture/code-architecture.json index d90646d6..a5ca29ce 100644 --- a/design/dev/architecture/code-architecture.json +++ b/design/dev/architecture/code-architecture.json @@ -601,7 +601,7 @@ "id": "board-main", "from": "board", "to": "main", - "label": "翻开·插旗·和弦", + "label": "翻开·封印·和弦", "fromSide": "top", "toSide": "bottom" }, @@ -680,7 +680,7 @@ "dot": "emerald", "title": "战斗动作链", "items": [ - "棋盘区 翻开/插旗/和弦 → 组合根 → 战斗编排器规则判定", + "棋盘区 翻开/封印/和弦 → 组合根 → 战斗编排器规则判定", "结算回流:血量攻防→角色信息区 · 受击演出→展示区 · AP 扣减与提示→棋盘区", "秘宝槽点击走两步交互:角色信息区 → 棋盘区/即刻生效" ] diff --git a/design/dev/architecture/gdd-architecture.html b/design/dev/architecture/gdd-architecture.html index 7e88526d..e6734edb 100644 --- a/design/dev/architecture/gdd-architecture.html +++ b/design/dev/architecture/gdd-architecture.html @@ -5184,8 +5184,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE. ACTION_ECONOMY
- - 排雷循环 · 挖格·插旗·连锁展开 · 局内 · 一条命的冒险 · MINESWEEPER_CYCLE + + 排雷循环 · 挖格·封印·连锁展开 · 局内 · 一条命的冒险 · MINESWEEPER_CYCLE 排雷循环 - 挖格·插旗·连锁展开 + 挖格·封印·连锁展开 MINESWEEPER_CYCLE diff --git a/design/dev/architecture/gdd-architecture.json b/design/dev/architecture/gdd-architecture.json index b165f26e..cc6af465 100644 --- a/design/dev/architecture/gdd-architecture.json +++ b/design/dev/architecture/gdd-architecture.json @@ -27,7 +27,7 @@ "id": "minesweeper", "type": "frontend", "label": "排雷循环", - "sublabel": "挖格·插旗·连锁展开", + "sublabel": "挖格·封印·连锁展开", "tag": "MINESWEEPER_CYCLE", "pos": [ 236, diff --git a/design/dev/code-conventions-cases.md b/design/dev/code-conventions-cases.md index f98187e4..b099d139 100644 --- a/design/dev/code-conventions-cases.md +++ b/design/dev/code-conventions-cases.md @@ -20,7 +20,7 @@ main.gd 头注曾累积 42 行——历次提交各自追加「本批做了什 ## 2.1 信号契约缺失(软锁) -旗动作花完末点 AP 后相位翻 Waiting 但不发 round_end,结算点依赖该事件 → 整局软锁;自动玩家不用旗,冒烟路径覆盖不全没抓住。 +封印动作花完末点 AP 后相位翻 Waiting 但不发 round_end,结算点依赖该事件 → 整局软锁;自动玩家不用封印,冒烟路径覆盖不全没抓住。 ## 2.2 标识符语义错位 @@ -47,7 +47,7 @@ spawn 把 hero 的 max_hp 设为入参 hero_hp——跨战斗携带 HP 时上限 | 缺陷 | 现象 | 对应规则 | |---|---|---| | UI 抖动 / "第3轮"消失 | 悬停文案换行推挤侧栏,末行被挤出视口 | 1.1 拆分 + 视图定长槽 | -| Boss 战 AP 用完不结算(软锁) | 插旗耗尽末点 AP 后整局冻结 | 2.1 事件发射完整性 | +| Boss 战 AP 用完不结算(软锁) | 封印耗尽末点 AP 后整局冻结 | 2.1 事件发射完整性 | | 道具使用后不消失 | 选用件留存、邻件被误耗 | 2.2 标识符语义单一 | | 调整板点击无反应 | 面板已实现但被开始层遮挡 | 2.3 层级规则 + test-conventions §2 | | 上帝对象 | main.gd ~1100 行 | 1.1–1.3 | diff --git a/design/dev/test-conventions.md b/design/dev/test-conventions.md index 22c7fa35..79e522aa 100644 --- a/design/dev/test-conventions.md +++ b/design/dev/test-conventions.md @@ -21,13 +21,13 @@ ## 3. 缺陷修复必须沉淀回归断言 -每个缺陷修复必须在探针或冒烟中留下能抓住该缺陷的断言(例:旗动作耗尽 AP → 必须进入第 2 轮; +每个缺陷修复必须在探针或冒烟中留下能抓住该缺陷的断言(例:封印动作耗尽 AP → 必须进入第 2 轮; 选用道具 → 库存态必须变 Used)。没有回归断言的修复视为未完成。 ## 4. 提交前全量验证 交付前跑 `tools/run_all_gates.sh`(不带 `--quick`)全绿——该脚本是全部验证闸的唯一入口与唯一清单,本文禁另列闸件清单。闸件增减只改脚本。 -行为探针使用随机化玩家行为(旗/停手/刷新/无效点击)——自动玩家不做的动作就是测试盲区。 +行为探针使用随机化玩家行为(封印/停手/刷新/无效点击)——自动玩家不做的动作就是测试盲区。 ## 5. 测试函数怎么写——验收清单条目的落码规范 diff --git a/design/gdd/00-游戏概念.md b/design/gdd/00-游戏概念.md index 2f8a8fb8..0938e71c 100644 --- a/design/gdd/00-游戏概念.md +++ b/design/gdd/00-游戏概念.md @@ -29,7 +29,7 @@ |---|---| | 扫雷图 | 被巢穴侵染的地牢厅室;清图 = 肃清本间厅室,下探更深 | | 雷 / 危险格 | **危险格**(对外属名)——惊动则怪物倾巢而出占得先机,巢已空、残址可通行(机制文档统一称危险格,2026-10-11 用户裁无类型划分) | -| 旗 / 插旗 | **控制**(玩家可见动词,类型无关)——标中 = 巢穴废置、巢主失庇护(怪物被削弱);"封印/镇/反制"降级为类型风味词 | +| 封印 / 控制 | **控制**(玩家可见动词,类型无关)——标中 = 巢穴废置、巢主失庇护(怪物被削弱);封印=正式动作名(全库统一),镇/反制仅系类型风味词 | | 连锁展开 | **坍塌显形**——挖穿薄壳,整片松动地面塌陷露出 | | 标错 | **控制失败的失控反噬**——机制上的随机读作"失控",反噬流向不可控 | | 道具 / 奖励 | 前人探险者的遗落物(氛围背景句,登记不锁;宝箱呈现只绑定可使用道具类奖励) | @@ -55,7 +55,7 @@ | 爆破工兵包 | 行动点 + 探巢的稀有秘宝 | aux_items | | 地精 / 熊地精 / 食人魔酋长 | 首发三敌种(末者为 Boss) | enemy | | 第一层 · 地精洞窟 | 首关层名 | level_table | -| 封印 | 插旗动作的呈现名——对未开格(巢穴)插旗即实施封印,旗 = 封印印记 | terminology | +| 封印 | 正式动作名(全库统一,非比喻、非呈现层别名)——对未开格(巢穴)实施封印,印记=封印印记 | terminology | 注意:上表六件秘宝为旧目录,已全数退役、只作素材库(新现行事实源=[秘宝](systems/跨局循环/秘宝.md)「目录(重设计 v1)」节——新目录 15 件为代号制、正式命名归用户);registry 登记行随实装批迁移后本表同步。 diff --git a/design/gdd/01-核心循环.md b/design/gdd/01-核心循环.md index 43226c92..fbdb09c2 100644 --- a/design/gdd/01-核心循环.md +++ b/design/gdd/01-核心循环.md @@ -7,13 +7,13 @@ 每场战斗都在一张雷图上打。战斗本身不用手操——你能做的全部决策,都在它的"准备期"里: 1. 开局一张新雷图,每轮发给你行动点,每轮预算见[行动经济](systems/排雷循环/行动经济.md)。 -2. 用行动点做排雷决策:挖开安全格,拿增益和道具;控制(插旗)巢穴,削弱里面的怪物;点错惊动巢穴,怪物反而变强。 +2. 用行动点做排雷决策:挖开安全格,拿增益和道具;控制(封印)巢穴,削弱里面的怪物;点错惊动巢穴,怪物反而变强。 3. 行动点用尽——或者你主动停手——这一轮结束,轮末自动结算:你这一轮扫雷攒下的因,逐行兑现成战斗的果。你拿的增益打了出去,你控制的巢穴变成怪物的虚弱,你惊动的巢穴变成怪物的警觉(护甲变硬、伤害账轮末才落)。 4. 敌人没死光、你还活着,就进下一轮,同一张图接着挖;图开完了,发清图奖励,换一张新图接着打。 ``` 开局:装一张新雷图 + 发本轮行动点 - → 用行动点做排雷决策(挖安全格拿增益/道具 · 插旗控制巢穴 · 点错惊动巢穴) + → 用行动点做排雷决策(挖安全格拿增益/道具 · 封印控制巢穴 · 点错惊动巢穴) → 行动点用尽 或 主动停手 → 轮末自动结算:本轮攒的因逐行兑现成战斗的果 → 判定(先判你,再判敌人) 你倒下 → 战斗失败 → 冒险结束(见「死了之后」) @@ -43,7 +43,7 @@ → 任意一场战斗倒下 → 冒险结束 ``` -路上的商店房是关底 Boss 前一位的补给点:战斗掉落的金币(GP)在这花掉,换攻击、生命上限或护甲的提升——打完仗钱到账,进店花掉,带着变强去见关底 Boss。 +路上的商店房是关底 Boss 前一位的补给点:战斗掉落的 GP 在这花掉,换攻击、生命上限或护甲的提升——打完仗钱到账,进店花掉,带着变强去见关底 Boss。 一条血走完整场冒险:战后剩多少血就带多少进下一场,恢复点回一部分,通关一关回一部分血、再从三选一里挑一件提升带走。所以越往后,你越在意"这局已经走到第几层"。 @@ -121,7 +121,7 @@ |---|---|---| | 秘宝 | 开局前在营地从目录自主装配、整局冒险生效的**角色机能件**——「这局我想怎么玩」的事先宣言 | 存档级(营地)→ 冒险级 | | 奇物 | 冒险途中经渠道获得、当局清零的增益——「这一局我捞到了什么」的过程性成长 | 冒险级 → 冒险级清零 | -| 地图战斗资源 | 格子上装板摇号预分配、回合内挖格/标旗获取并结算的一次性兑付——「挖这一格得到什么」的收益语言 | 回合级获取 → 回合级结算(写入各档账);身份生成=装板期(节点内,随换图重摇) | +| 地图战斗资源 | 格子上装板摇号预分配、回合内挖格/封印获取并结算的一次性兑付——「挖这一格得到什么」的收益语言 | 回合级获取 → 回合级结算(写入各档账);身份生成=装板期(节点内,随换图重摇) | ### 机能与机制的判定尺 diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index 65810c32..1c83c015 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -24,7 +24,7 @@ | 文件 | 一句话概要 | 状态 | |---|---|---| | `棋盘生成.md` | 棋盘怎么生成、怎么保证可推理可通关 | 已定稿·自旧体系迁移 | -| `排雷玩法.md` | 挖格、插旗、连锁展开等扫雷规则本体 | 已定稿·自旧体系迁移 | +| `排雷玩法.md` | 挖格、封印、连锁展开等扫雷规则本体 | 已定稿·自旧体系迁移 | | `行动经济.md` | 每轮行动点怎么花、停手与刷新的代价 | 已定稿·自旧体系迁移 | | `地形变异.md` | 格子的非雾变异(首批四类型:荆棘丛/藤蔓缠绕/岩浆/烬覆) | 已定稿·首批类型落地 | diff --git a/design/gdd/05-不做清单.md b/design/gdd/05-不做清单.md index 9475d1c9..1ba95c7e 100644 --- a/design/gdd/05-不做清单.md +++ b/design/gdd/05-不做清单.md @@ -9,7 +9,7 @@ - **重叙事**:不写前人日志、剧情演出这类长篇文本。世界观只做碎片点缀,卖点在玩法不在文本。 - **即时操作玩法**:所有决策都在回合内慢慢想,不考反应、不考手速。任何"限时点击""走位闪避"都免谈。 - **chord(经典扫雷的双击快开)**:本作每一格的兑现都要花行动点,chord 一键开一片会让行动点预算失去意义。 -- **抽象货币 / 中间资源折算**:扫雷收益全部直接兑成战斗效果,中间隔一层货币会稀释"排雷的因 = 战斗的果"这条因果可见的底线。**显式例外:格面金币(GP,显示名「金币」)**——金币有定名、明码定价与余额常驻呈现,因果链 = 排雷 → 战斗 → 金币 → 属性提升,每一段玩家都看得见,可见性底线不破;金币之外不再引入任何"扫雷收益折算成货币再兑换效果"的夹层。 +- **抽象货币 / 中间资源折算**:扫雷收益全部直接兑成战斗效果,中间隔一层货币会稀释"排雷的因 = 战斗的果"这条因果可见的底线。**显式例外:格面 GP(显示名「GP」)**——GP 有定名、明码定价与余额常驻呈现,因果链 = 排雷 → 战斗 → GP → 属性提升,每一段玩家都看得见,可见性底线不破;GP 之外不再引入任何"扫雷收益折算成货币再兑换效果"的夹层。 - **旗做成背包道具或限量**:旗只是棋盘上的标记,想用多少用多少;它的稀缺性由行动点价目承载,不做第二重限制。 - **未开格预读危险格与安全格**:扫雷是本作的本征玩法,预读「这格是不是雷」会拆掉推理。允许"恢复推理原料"类道具(显影/预读窄域),不允许替代推理。**类型身份不在本条禁止之列**——类型微光只读「这格兑什么」、不读危险格与安全格,推理本体不受蚀(呈现现行事实源归 [HUD框架](systems/表现与支撑/HUD框架.md)「未开格类型微光」节)。 - **第二套随机惩罚**:所有风险都从雷和未知格派生,不再引入平行的随机惩罚源——惩罚多了,玩家就没法归因了。 diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index d916b64c..f7d1f2a4 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -66,14 +66,14 @@ **二期件组**(触发=迭代 12 出口读数+用户点名立项;各件机制形态已定,数值 provisional): - **战斗→扫雷跨阶段回流**(穿刺流):击杀轻甲敌人返还 1 AP——战斗收益反哺开格动机;AP 经济新管道,谨慎件(威胁红线③边缘,立项须专项论证) -- **穿甲锥**(穿刺×标旗协同桥):对被控制危险格的敌人穿刺伤害再提升 +- **穿甲锥**(穿刺×封印协同桥):对被控制危险格的敌人穿刺伤害再提升 - **孤注一掷**(普攻流二期锚点件):每轮攻击次数减至 1、该次伤害大幅倍增——攻击频率规则改写 - **悬浮魔法球**(魔法流二期):轮末召唤物环绕,每轮自动对最强敌人造成魔法伤害——需战斗单位系统新增实体类型(召唤物/持续伤害源) - **商店置换服务「符文重铸」**:攻击类型族后期流派转换(花 GP 重掷攻击类型相关件)——商店新交互 - **件派生动词白名单(非信息类)**:拔旗回收返 AP/定向熄灭伤害型地形格/重掷 RAP 等第三盘面动作——**触发条件=件池 ≥30 种后玩家仍反馈操作重复且定位在操作层(非决策层)**;信息类派生动词维持全禁(R4 甲,见下备选组) - **三期:合成进化**:两件同名/同标签件合成升品(Ball x Pit 式)——池深不足时的解药,三期再议 -**淘金流立派缓议**(定位=支撑引擎非胜利条件;触发=先作件族挂配套池观察、数据支持后再立派):吝啬鬼账本/金脉共鸣(每持有 ~N GP 攻击 +~X——GP 进伤害公式新缩放源)/贪婪契约(商店折扣+金币掉落增税,正负双修)/消费回馈(商店购买附赠同类临时增益)/战利品鉴定(三选一必含 1 件高稀有度)。 +**淘金流立派缓议**(定位=支撑引擎非胜利条件;触发=先作件族挂配套池观察、数据支持后再立派):吝啬鬼账本/金脉共鸣(每持有 ~N GP 攻击 +~X——GP 进伤害公式新缩放源)/贪婪契约(商店折扣+GP 掉落增税,正负双修)/消费回馈(商店购买附赠同类临时增益)/战利品鉴定(三选一必含 1 件高稀有度)。 **R4 乙备选案(2026-10-03 用户裁甲=信息型永不对冲,本组冻结)**: - 信息型清除工具件族(「除尘风箱」类:限价限量清除藤蔓/烬覆/矿尘遮蔽、恢复数字) @@ -570,3 +570,13 @@ **归属**:营地交互重做(数据层+呈现层+美术线;五卡路径见状态行,批次归属与波次由用户按工作量另裁) **状态**:文档设计已闭合(design/research/需求澄清-营地交互重做-2026-10-18.md v1.0)+待美术设计+已写卡(design/research/需求卡片-存档制数据层改造批-2026-10-18.md)+已写卡(design/research/需求卡片-主菜单三入口化批-2026-10-18.md)+已写卡(design/research/需求卡片-选档界面新建批-2026-10-18.md)+已写卡(design/research/需求卡片-营地场景图新建批-2026-10-18.md)+已写卡(design/research/需求卡片-ESC浮窗与营地顶栏批-2026-10-18.md) + +--- + +#### 代码术语刷新批——禁用词全库清扫+flag→seal 标识符重命名(2026-10-18 登记,来源=会话提及,设计面=工程直入) + +**现状**:2026-10-18 用户裁定三组术语刷新(记忆 `project-terminology-rulings-20261018.md`):①GP 是唯一正式命名,「金币」系 AI 噪音全库禁用;②「插旗」全库禁用,正式动作名=封印,「旗」概念不存在;③代码英文标识符 flag_* 全换 seal_*。另「雷格」「惩罚格」2026-10-11 已裁退役→危险格,代码域尚未执行。审计报告(`design/qa/代码术语审计报告-2026-10-18.md`)实查:game/ 目录命中约 757 处(flag_ 标识符 314 处/29 个 .gd+4 个 .tres;中文禁用词 金币 116 处/插旗 210 处/雷格 109 处),涉及核心逻辑(minesweeper_rules.gd、battle_orchestrator.gd、grant_segment.gd)、数据表(feats.tres、settlement.tres、action_economy.tres、reward.tres)、呈现层(board_view.gd、shop_overlay_view.gd、legend_overlay.gd)与冒烟测试(smoke_all.gd 单文件 105 处 flag_)。文档面(design/)由另批处理,本条只覆盖 game/ 代码域。 + +**归属**:全工程(排雷循环/战斗循环/冒险循环/呈现层/数据表/冒烟测试均触及;主责=术语表裁定执行) + +**状态**:待写卡 diff --git a/design/gdd/07-体验验证清单.md b/design/gdd/07-体验验证清单.md index 6a9b0113..e29257e9 100644 --- a/design/gdd/07-体验验证清单.md +++ b/design/gdd/07-体验验证清单.md @@ -20,7 +20,7 @@ | 改动 | 旧行为 | 新行为 | 直接体感 | |---|---|---|---| | 硬化(敌方技) | 主角打硬化目标**翻倍**(符号 bug) | 主角攻击**折半** | Boss 战显著变长变难(预期内) | -| 削弱(标中旗) | 叠层 ×2 可把敌方输出压到归零(免伤轮) | 持续 2 次结算、重复标中只续时不叠层,输出恒 ≥35% | 每轮必有承伤,插旗从"阶段性安全"变"持续减伤" | +| 削弱(封印标中) | 叠层 ×2 可把敌方输出压到归零(免伤轮) | 持续 2 次结算、重复标中只续时不叠层,输出恒 ≥35% | 每轮必有承伤,封印从"阶段性安全"变"持续减伤" | | 增伤(安全格) | 只加成普攻段,充能段不吃 | 加成全部输出(乘区接线批;2026-09-19 充能退役后 = 单分量全吃) | 边挖边拿增伤时伤害明显变高 | | 乏力(踩雷负向) | 无感(乘区没接线,死效果) | 输出合计 −25% | 踩雷后攻击真的变弱了 | | 失衡(标错旗) | 承伤加深 +25% | 护甲等级 −1(现行表值 magnitude −1 ac,更易被命中) | 惩罚变隐性——挨打概率上升而非每刀固定加深 | @@ -60,9 +60,9 @@ ### ⑤ 失衡换轴的归因可读性(P2 关注) -- **观测什么**:标错旗吃失衡后,玩家能否读懂"为什么这几刀特别容易挨打"(护甲等级 −1 → 命中更难被闪开)。 +- **观测什么**:标错封印吃失衡后,玩家能否读懂"为什么这几刀特别容易挨打"(护甲等级 −1 → 命中更难被闪开)。 - **预期**:惩罚变隐性是换轴的已知代价——承伤加深是"每刀固定变疼",AC 降低是"挨打概率与档位变差",后者更难直觉归因。 -- **红灯信号**:试玩者完全无法把"挨打变疼"与标错旗关联起来。 +- **红灯信号**:试玩者完全无法把"挨打变疼"与标错封印关联起来。 - **结论回流**:归因呈现面已随迭代 6/8 落地(状态图标九枚+明细行文案);失衡幅度现行 AC −1,调整归数值批(Beta 阶段,未排期)计划书(待 U0)。 ### ⑥ 速杀退化预警(监控口径,2026-09-18 定案) @@ -83,7 +83,7 @@ - **语义锚(2026-09-19 落地实测锁定,smoke_all `_smoke_flag_irreversible_quadrants` 断言在案)**:插旗安全格直挖 = 零惩罚零奖励(正向兑付作废、作废归因行恰一次、标空不判);插旗危险格直挖 = 只受挖雷一层惩罚(mine_hit 照常)、标中不发;不挖留判 = 标中/标空照常;flag_pull 出目录拒绝、重复插旗 flag_present 拒绝。 - **预期**:无基线,首跑即基线——随真人试玩批次 2 起采(模拟画像不拔旗,此面只有真人数据有效)。 - **红灯信号**:误旗后放弃纠错占比异常高(直挖免费但④零奖励仍可能劝退纠错——玩家改绕路不挖)或④触发后局部推进明显迟滞(零奖励力度过狠的体验证据)——红灯仅作曲线调参批输入,**不在试玩现场改机制**。 -- **结论回流**:读数 → 曲线调参批复核情况④零奖励力度与旗价目;提案已转正,无后续评估义务。 +- **结论回流**:读数 → 曲线调参批复核情况④零奖励力度与封印价目;提案已转正,无后续评估义务。 ### ⑨ 真人批试玩指引(验收重测批修正锚,2026-09-19 立项——照此单试玩即可) @@ -94,7 +94,7 @@ 2. **削弱后的承伤**(②):吃削弱那几轮挨打是不是明显变疼; 3. **增伤手感**(③):增益期伤害是不是"明显变高但不爆炸"; 4. **乏力可感知性**(④):踩雷后下一轮输出下降感不感觉得到; -5. **失衡归因**(⑤):标错旗之后挨打变疼,能不能猜到"为什么"; +5. **失衡归因**(⑤):标错封印之后挨打变疼,能不能猜到"为什么"; 6. **刷新冲动**(⑦基线复核):有没有"想换一张图"的时刻?觉得刷新 1 行动点贵不贵? 7. **速杀自察**(⑥):打完战斗时图上是不是还剩大半没挖(跳过棋盘直接杀敌的冲动多不多)。 @@ -137,7 +137,7 @@ ### ⑫ 旗溢价兑付与标旗激励(2026-10-05 挖掘风险不等式判式换代批顺带登记——迭代14②号卡) - **机制一句**:标中旗的正向兑付现在按同型正向 ×1.25 兑付(`settlement.tres` flag_hit_premium=125 provisional——条款3 条件二旗溢价形态 a),标空与挖格兑付不变;危险格与安全格同池结构零触碰。 -- **看什么(实机目检,约 5 分钟)**:①插旗标中一面旗,结算明细的兑付数值应比改前同类行略大(增伤 50→63 / 削弱 65→81 / 急救 2→3 / 金币袋 3→4;盾牌加护与行动点 1 点量纲不变=整数粒度地板);②挖安全格与标空惩罚行数值应与改前逐位相同;③战斗结算帮助文案如有旗相关行,无自造词。 +- **看什么(实机目检,约 5 分钟)**:①封印标中一处危险格,结算明细的兑付数值应比改前同类行略大(增伤 50→63 / 削弱 65→81 / 急救 2→3 / GP 袋 3→4;盾牌加护与行动点 1 点量纲不变=整数粒度地板);②挖安全格与标空惩罚行数值应与改前逐位相同;③战斗结算帮助文案如有封印相关行,无自造词。 - **行为读数(改前改后 MC 锚已采,判读随出口报告顺带交付)**:η=标中÷插旗 与 标旗率 位移 ≥5pp 判「有感」;行为无效 δ 仍保留+登记「行为无感」(判式诚实性不依赖行为弹性——2026-10-04 grill Q4 裁)。 - **红灯信号**:标旗 rush 复发(首轮全标旗不挖——δ 与完美排雷 ×2 叠加通胀是既有联动面:旗溢价三件套 δ↔p_perfect↔ap_per_round 同窗检算,难度曲线与Boss 调参联动表在册)。 - **结论回流**:体感 → 本条目记录;数值终值(δ 值与 ×1.5 档留后手)归调参批,不在试玩现场改数。**判式换代文本(行动经济 F1 条款3/战斗结算 验收标准/难度曲线与Boss 联动表三处修订稿)顺带呈用户人闸**——追认单随出口报告。 diff --git a/design/gdd/08-Alpha版本标准.md b/design/gdd/08-Alpha版本标准.md index acd24d3e..fb11241e 100644 --- a/design/gdd/08-Alpha版本标准.md +++ b/design/gdd/08-Alpha版本标准.md @@ -183,7 +183,7 @@ | 重叙事(长篇文本与剧情演出) | [05-不做清单](05-不做清单.md) | | 即时操作玩法 | [05-不做清单](05-不做清单.md) | | chord(双击快开) | [05-不做清单](05-不做清单.md) | -| 旗做成背包道具或限量 | [05-不做清单](05-不做清单.md) | +| 封印印记做成背包道具或限量 | [05-不做清单](05-不做清单.md) | | 抽象货币 / 中间资源折算 | [05-不做清单](05-不做清单.md) | | 多波战斗 | [05-不做清单](05-不做清单.md) | | 遗物式构筑协同 | [05-不做清单](05-不做清单.md) | diff --git a/design/gdd/systems/冒险循环/关卡节点图生成.md b/design/gdd/systems/冒险循环/关卡节点图生成.md index 405bb59f..d1a552fb 100644 --- a/design/gdd/systems/冒险循环/关卡节点图生成.md +++ b/design/gdd/systems/冒险循环/关卡节点图生成.md @@ -130,7 +130,7 @@ #### 证据面 A:随机流与「增流」是什么(拍板点②的背景) -**人话**:本项目的随机数只有一个总入口(随机服务,代码名 rng_service),硬性红线禁止任何代码绕开它自己掷骰——"同一个种子+同样操作序列 = 逐位相同的一局"靠这条保证,调试复盘和模拟对账都依赖它。总入口内部按用途分账:每种用途占一栏,叫一条**流**(本文含义:随机服务内部按用途分开记账的一栏独立随机序列,各有各的编号,互不串账)。现行清单七条:雷图生成、奖励抽取、敌人数量掷骰、命中掷点、出招摇号、变异布置、金币掉落——清单是封闭的,新用途必须在清单里开新栏。 +**人话**:本项目的随机数只有一个总入口(随机服务,代码名 rng_service),硬性红线禁止任何代码绕开它自己掷骰——"同一个种子+同样操作序列 = 逐位相同的一局"靠这条保证,调试复盘和模拟对账都依赖它。总入口内部按用途分账:每种用途占一栏,叫一条**流**(本文含义:随机服务内部按用途分开记账的一栏独立随机序列,各有各的编号,互不串账)。现行清单七条:雷图生成、奖励抽取、敌人数量掷骰、命中掷点、出招摇号、变异布置、GP 掉落——清单是封闭的,新用途必须在清单里开新栏。 图模板抽签是一笔新用途的随机账,要在清单里新开一栏(拟名 `node_map`)——「增流」就是这个动作:**给封闭流清单加一条新流**。它之所以要拍板:加流有固定成本(改代码 + 补一组校验用黄金向量 + 加冒烟断言,纪律规定的三件套),不是随手配置。 diff --git a/design/gdd/systems/冒险循环/冒险结构.md b/design/gdd/systems/冒险循环/冒险结构.md index 1f6ac969..6d414938 100644 --- a/design/gdd/systems/冒险循环/冒险结构.md +++ b/design/gdd/systems/冒险循环/冒险结构.md @@ -20,7 +20,7 @@ | 冒险生命周期 | 待机 / 进行中 / 结算中三态,与完成、失败、放弃三种结局的判定和产出 | | 关卡序列 | 关卡表(逐关一行的配置表)行集内容的责任方;推进规则:线性、无跳关 | | 生命账本 | 跨战斗生命持久性的冒险侧账本:每战交出、战后收回、两个恢复口 | -| GP 冒险账本 | 战斗掉落货币的局内账本(显示名「金币」):战斗完成统一入账、商店购买出账、冒险收束清零;统一冒险加算区(商店购买与大奖励同账) | +| GP 冒险账本 | 战斗掉落货币的局内账本(显示名「GP」):战斗完成统一入账、商店购买出账、冒险收束清零;统一冒险加算区(商店购买与大奖励同账) | | 关卡大奖励 | 非末关通关的两层兑付:专长三选一(选择型,按档配比加权抽取——迭代 20 换代)+ 部分回血(固定型);钥石退役出大奖励,改 Boss/精英击杀战斗掉落 | | 失败重开与放弃 | 倒下即冒险终;重开等于全新一轮;放弃与失败同型结算 | | 主种子接线 | 一场冒险一个主种子,冒险内一切随机数派生自它 | @@ -134,7 +134,7 @@ MVP 的序列是三关线性:地精洞窟→幽暗地域→灰矮人矿城(2 ### GP 冒险账本:战斗掉落的局内钱包与统一冒险加算区 -GP(显示名「金币」)是冒险内的一次性属性提升货币:战斗胜利掉落、商店房消费、冒险结束清零。它与钥石记账完全分离——钥石跨局持久、入存档;GP 局内有效、不入存档、不入冒险摘要五件事清单。账本语义归本文,商店房的开闭交互归[关卡节点地图](关卡节点地图.md)。 +GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜利掉落、商店房消费、冒险结束清零。它与钥石记账完全分离——钥石跨局持久、入存档;GP 局内有效、不入存档、不入冒险摘要五件事清单。账本语义归本文,商店房的开闭交互归[关卡节点地图](关卡节点地图.md)。 **独立资源口径**(框架见[核心循环](../../01-核心循环.md)「生命周期轴」节):GP 与钥石是两条平行独立资源,不立统一上位概念——GP=冒险级独立资源账(本节),钥石=存档级账(归[元进度](../跨局循环/元进度.md))。各层对 GP 的兑付都是**一次性转换入账**:转换源(奇物 GP 袋、格面 gp 型等)结算即消尽,只有钱包长存——这是「类A→类C」的转换关系,不是「奖励横跨多层」。 @@ -146,7 +146,7 @@ GP(显示名「金币」)是冒险内的一次性属性提升货币:战斗 | 商店购买 | 出 | 商店房购买按现行价扣减钱包,余额不足拒绝。价格公式(**v0.13 换代——pool 模式现行**):ceil(基价 × b^(关序−1) × A^(本次进店已购次数)),A=店内递增/b=跨关递增表因子(provisional 1.8/1.1),ceil 向上单一取整(玩家不利向,杜绝「差 1 GP 反复钓」套利角);legacy 固定三件模式(shop=off 对照承载)沿用旧式 = 基价 + 关级价格加成 + 步长 × 已购档数 | | 冒险收束 | 清零 | 完成 / 失败 / 放弃三种结局都清零;重开后钱包从零开始 | -**战斗内缓冲隔离**:战斗进行中从格面兑付拿到的 GP(金币袋正向、破财负向——字典归[地图战斗资源](../战斗循环/地图战斗资源.md))不直接进钱包,而是记入战斗域的中间态缓冲;战斗完成时缓冲随掉落掷定与关级加值一并折进 gp_dropped 统一到账。钱包只在战斗边界变动,战斗域自身零钱包状态——这条隔离让战斗结算保持"折算归我、账本归冒险结构"的既有边界。 +**战斗内缓冲隔离**:战斗进行中从格面兑付拿到的 GP(GP 袋正向、破财负向——字典归[地图战斗资源](../战斗循环/地图战斗资源.md))不直接进钱包,而是记入战斗域的中间态缓冲;战斗完成时缓冲随掉落掷定与关级加值一并折进 gp_dropped 统一到账。钱包只在战斗边界变动,战斗域自身零钱包状态——这条隔离让战斗结算保持"折算归我、账本归冒险结构"的既有边界。 **统一冒险加算区**:商店购买的属性提升与奖励节点三选一的属性件记**同一本账**——加算区四轴 {攻击, 生命上限, 护甲等级, 行动点},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效(与生命账本的上参同一条通道)。购买生命上限时:pool 模式(v0.13——货架件=奖励件本体)只加上限不回当前生命(与三选一件同语义);legacy 模式当前生命与上限同步 +Δ(生命账本的连带写入口)。属性轴累加源 = 商店购买与奖励节点三选一属性件两类;行动点轴累加源 = 奖励节点三选一 AP 件与商店 AP 件两类(每场战斗开始的首轮行动点基线 +1,语义细节归[行动经济](../排雷循环/行动经济.md)跨冒险加成轴节;~~全冒险获取次数上限最紧 provisional 2 次~~——v0.14 次数上限退役,池消耗即上限,pool 模式下商店购买与三选一共用令牌库,见下)。 diff --git a/design/gdd/systems/冒险循环/奇物.md b/design/gdd/systems/冒险循环/奇物.md index 219f7984..9e431e89 100644 --- a/design/gdd/systems/冒险循环/奇物.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -22,7 +22,7 @@ ### 设计原则 1. **触发器句式**:每件专长的效果声明为「当 X 时 Y」(on / when / do 三字段,词表=效果引擎封闭集)。件的性格来自它挂在哪个事件上;combo 靠事件共享自然涌现——不设流派标签、不设档位机制。 -2. **事件族组织**(设计侧分组工具,不上卡面):开格系 / 插旗系 / 踩雷系 / 节奏系 / 战斗系五族。族名禁上玩家可见面(命名铁律)。 +2. **事件族组织**(设计侧分组工具,不上卡面):开格系 / 封印系 / 踩雷系 / 节奏系 / 战斗系五族。族名禁上玩家可见面(命名铁律)。 3. **准入校验**:代价与收益须同账可核算——「纯代价件」禁止出生;契约件的代价必须一句话讲得清(契约不可怕,糊涂账才可怕)。 4. **信息红线**:禁止任何效果让数字说谎(信息规则不豁免);揭示类效果只揭真格。 5. **防兑换环**:互相转换的通道必须有损耗或每轮上限;单向通道优先。 @@ -42,7 +42,7 @@ | 爆破会计 | on 轮末:本轮挖格花费 AP ≥5 → +1 GP | 勤奋奖,账透明(扩签:本轮挖格花费) | | 边陲矿工 | on 挖开棋盘边缘格:产出 +1 | 微光时代可规划的路线选择(扩签:边缘格判定) | -**插旗系(4)** +**封印系(4)** | 代号 | on / when / do(声明要点) | 账 | |---|---|---| @@ -71,7 +71,7 @@ | 代号 | on / when / do(声明要点) | 账 | |---|---|---| -| 破封一击 | on 挖开有旗的危险格:额外 +1 层(疼痛记忆同账) | 旗=标定引信、挖=引爆——推理定位的显式回报;挂棋盘事实(挖开格当时有旗)非玩家意图判定(扩签:被挖格当时有旗) | +| 破封一击 | on 挖开有封印印记的危险格:额外 +1 层(疼痛记忆同账) | 印记=标定引信、挖=引爆——推理定位的显式回报;挂棋盘事实(挖开格当时有封印印记)非玩家意图判定(扩签:被挖格当时有封印印记) | **节奏系(3)** @@ -100,13 +100,13 @@ | 代号沿用 | 目标族 | on / when / do 要点 | 备注 | |---|---|---|---| | 淬毒刃纹 | 战斗系(克制向) | on attack_commit;when 克制(advantageous);do 追加 +N | 数值归调参批 | -| 封印爆裂 | 插旗系 | on flag_hit;do 全体存活敌 N 群伤 | 插旗系补第 4 件;数值归调参批 | +| 封印爆裂 | 封印系 | on flag_hit;do 全体存活敌 N 群伤 | 封印系补第 4 件;数值归调参批 | 惊巢反制=退役进素材库(不迁入)。 ### 扩签登记(迭代 20 实装已承载——2026-10-12 追认④写入文档换代) -- **落地结果**:事实候选 10 条中 6 条落 FACTS 词位(边缘格判定/空白连锁判定/单次伤害量/被挖格当时有旗/雷罚伤害量/生命比例),4 条改道 adventure 域计数器(类型集合计数器/本轮挖格花费/本轮开格数/本轮踩雷数计数器——跨事件累积量走计数器+value_event 比较,不占 fact 词位,T0 定架构);停手事件已落(dig_stop);实现随裁补位=battle_won 事件(战地包扎所需,登记未列)、mod_eq 算子(周期触发)、hp_ratio(百分比 int 口径)等 3 项事实、新效果类型 7 项。 +- **落地结果**:事实候选 10 条中 6 条落 FACTS 词位(边缘格判定/空白连锁判定/单次伤害量/被挖格当时有封印印记/雷罚伤害量/生命比例),4 条改道 adventure 域计数器(类型集合计数器/本轮挖格花费/本轮开格数/本轮踩雷数计数器——跨事件累积量走计数器+value_event 比较,不占 fact 词位,T0 定架构);停手事件已落(dig_stop);实现随裁补位=battle_won 事件(战地包扎所需,登记未列)、mod_eq 算子(周期触发)、hp_ratio(百分比 int 口径)等 3 项事实、新效果类型 7 项。 - **连带**:净化工兵退役,rewrite_board 效果类型自引擎除名(扩签「暂缓:清图事件」不受影响,继续挂起)。 - **暂缓**:清图事件(随清图奖励题)。 @@ -154,7 +154,7 @@ **边界判据(一句话)**:**一次冒险内获得、冒险收束即清零的,是奇物;跨冒险跟着你走的,是秘宝。** -这条判据走的是生命周期,不走"是不是物品"。原因:奇物这个筐里既装"角色自身的变化",也装金币这类一次性兑付物——用"拿在手里 vs 带在身上"去切,切不开它们,但用"当局清零 vs 跨局保留"能一刀切开,且对筐里所有东西都成立。 +这条判据走的是生命周期,不走"是不是物品"。原因:奇物这个筐里既装"角色自身的变化",也装 GP 这类一次性兑付物——用"拿在手里 vs 带在身上"去切,切不开它们,但用"当局清零 vs 跨局保留"能一刀切开,且对筐里所有东西都成立。 ## 系统范围 @@ -220,7 +220,7 @@ #### 1.3 资源:转换源凭证 -资源这一类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西。成员现行事实源=本文件「资源(重设计·基础框架 v1)」节的**凭证件表(新 5+留任 2)**;旧枚举四项的去向:行动点上限归属性值提升轴(见 1.2)、刷新次数由刷新券替代、金币与回复留任为小金币袋/应急口粮。 +资源这一类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西。成员现行事实源=本文件「资源(重设计·基础框架 v1)」节的**凭证件表(新 5+留任 2)**;旧枚举四项的去向:行动点上限归属性值提升轴(见 1.2)、刷新次数由刷新券替代、GP 与回复留任为小 GP 袋/应急口粮。 **资源为什么单独成一类**:它的成员不满足"抬高战斗属性"(那归属性值提升),也不满足"改写规则"(那归专长),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。即时兑付的金币与回复同留本类、不独立成第四类(2026-10-05 用户定)——判据与资源完全同源,拆出去只会让读者多查一张表。 @@ -265,7 +265,7 @@ |---|---|---|---| | **专长** | 凭证形式(见 2.2) | 凭证形式(见 2.2) | **直接给**(唯一的直接渠道) | | **属性值提升** | 出 | 出(口径「训练」) | 不出现 | -| **资源** | 出 | 出(**金币除外**,见 2.4) | 不出现 | +| **资源** | 出 | 出(**GP 除外**,见 2.4) | 不出现 | **这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**凭证**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奇物的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 @@ -292,7 +292,7 @@ **它归专长,不归资源**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于专长。所以在交叉表上,专长在非 Boss 渠道的表现是**只以凭证形式出现**,不是"不出现"。 -**为什么非 Boss 渠道只给凭证**:如果商店也能直接买到一个指定的专长,玩家就能用金币把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。凭证保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。 +**为什么非 Boss 渠道只给凭证**:如果商店也能直接买到一个指定的专长,玩家就能用 GP 把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。凭证保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。 ##### 凭证的三个性质 @@ -342,7 +342,7 @@ **所以要害不是"有没有例外",而是"例外能不能被算出来"**。三层清单不是不能用,但每一条都必须写出理由;一条写不出理由的例外,就是坏味道,应该回头质疑分类是不是分错了。 -**为什么不干脆拆成第四个分类(零例外的那条路)**:分类轴回答的是"给的是什么",金币给的是余量,和刷新券、储备金袋同类。按"能不能进商店"去反推分类,等于**用渠道轴的性质去切分类轴**,两根轴又缠回一起了——这是本文件 v2.0 专门拆开的东西,不能为了消灭一条例外再缠回去。而且为一个只有一项的分类立枚举,读者会以为它和另三类是同一重量级的划分,实际它只是某一项恰好踩到了一条经济规则。 +**为什么不干脆拆成第四个分类(零例外的那条路)**:分类轴回答的是"给的是什么",GP 给的是余量,和刷新券、储备金袋同类。按"能不能进商店"去反推分类,等于**用渠道轴的性质去切分类轴**,两根轴又缠回一起了——这是本文件 v2.0 专门拆开的东西,不能为了消灭一条例外再缠回去。而且为一个只有一项的分类立枚举,读者会以为它和另三类是同一重量级的划分,实际它只是某一项恰好踩到了一条经济规则。 三个方案的真实代价,摆出来不藏: @@ -358,7 +358,7 @@ | 约束 | 层 | 理由 | |---|---|---| -| 金币不进商店 | 二层·可计算条件 | 计价物不自售——商店的计价物是 GP | +| GP 不进商店 | 二层·可计算条件 | 计价物不自售——商店的计价物是 GP | | 专长在非 Boss 渠道只给凭证 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | | 属性值提升与资源不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | @@ -372,7 +372,7 @@ - **作用对象**:角色本人,以及角色参与的结算过程。奇物不改敌人、不改棋盘生成、不改关卡内容。 - **刷新券的例外**:凭证不进持有集——到手即结算进刷新存量账(冒险级)、加完消尽。它作用在三选一界面上,改的是"这一局里你能重抽几次",而不是角色身上的任何数字。它是资源里唯一一条作用对象不是角色的项——留在这里是因为它满足另外两条:当局获得、当局有效。 -- **时间范围**:整局冒险。专长与属性值提升自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;即时兑付凭证(小金币袋 / 应急口粮)拿到即结算消尽。 +- **时间范围**:整局冒险。专长与属性值提升自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;即时兑付凭证(小 GP 袋 / 应急口粮)拿到即结算消尽。 - **归属范围**:不进账号永久进度,不带到下一次冒险。 ### 4. 生命周期 @@ -408,7 +408,7 @@ | 类型 | 内容 | |---|---| -| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包、三选一界面 | +| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内 GP 钱包、三选一界面 | | 依赖(数据) | `feats.tres`(专长定义行)、`adventure.tres`(属性值提升与资源的种类配额与值)、`shop.tres`(货架取舍) | | 输出(对外) | 持有集、生效中的分类投影、剩余候选池、可用重抽次数 | | 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | @@ -443,8 +443,8 @@ 5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"专长/属性值提升/资源"描述,禁止另造称呼。 7. 刷新凭证不进角色加算区、不进持有集——刷新券到手即结算进刷新存量账,只改三选一界面的可用重抽次数。 -8. 即时兑付凭证(小金币袋/应急口粮)不进持有集——到手即结算消尽。 -9. 金币不出现在商店货架上——这是「计价物不自售」可计算条件自动判定的结果,不是给金币单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 +8. 即时兑付凭证(小 GP 袋/应急口粮)不进持有集——到手即结算消尽。 +9. GP 不出现在商店货架上——这是「计价物不自售」可计算条件自动判定的结果,不是给 GP 单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 10. 一个渠道一旦确定要出某个分类,该分类的成员就都在它的池子里——"渠道出哪些分类"不受这条约束,那是渠道轴的定位。 11. 凭证拿到即开,不进持有集,玩家无法囤积——选中或买下的同一时刻就开专长三选一。 12. 凭证带有计步保底:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享,刷新后的重新展示计入次数,限购用满后保底不再触发。 @@ -485,7 +485,7 @@ | **v3.9** | 2026-10-09 | **B3/B4 两裁写入文档(用户令)**:①P1 后置「两项合成高阶项」注销——非用户设计意图的脏信息,合成方向若需要按新体系重新生一件;②§3 刷新次数例外句口径换代——一律按最新设计口径:刷新次数由刷新券替代(凭证到手即结算进刷新存量账、加完消尽不进持有集),旧「进同一份持有账本」表述作废、随实装批整节删除 | | **v3.10** | 2026-10-09 | 文档正确性审查批·独立复核(worktree docaudit-2026-10-09):①§1.3 异质性节「被写入的账」清单对齐凭证件表——旧四项时代「AP 上限」摘除(已归属性值提升轴,§1.2 在途注),补生命账/秘宝充能两账;②依赖与输出表 `relics.tres` 改 `feats.tres`(表文件已随词族对齐批换代,data/tables/ 无 relics.tres——代码实证) | | **v3.11** | 2026-10-10 | **正文换代批(方案甲,用户裁「旧的删、误标改」——同秘宝.md v2.2 同法)**:①头部冻结横幅摘除——所指「流派/档位/27 件清单」旧章节正文已不存在,名单承载=[道具退役素材库](../../../research/道具退役素材库.md)表二;②专长/资源两节引言去「冻结遗留态/随实装批整体替换」错标,各落一句「新框架实装批落地前,现役代码按同框架运行」;③§1.3 旧资源四项枚举表删除(成员去向一行交代:行动点上限归属性值提升轴/刷新次数由刷新券替代/金币回复留任为小金币袋/应急口粮),回复归属裁定并入「资源为什么单独成一类」段;④§1.2 在途注与 §3 刷新例外去标注改正文(行动点上限归本轴/刷新券口径一律按最新设计);⑤§1.6 单件举例换新框架件(奥术余烬/贯穿射击→双管镐/疼痛记忆);⑥「谓词」用词清除——「可计算谓词」改「可计算条件」(正文与验收,版本历史行引述豁免);⑦验收 4/7/8/9 换代新口径+尾部现役代码运行线;⑧P1/P2 括注清算(已清偿/已注销条目由版本历史承载)+待办节收编为 06 单点指针。真旧内容承载=素材库表二+git 历史 | -| **v3.12** | 2026-10-11 | **自爆流扩容批(用户逐裁——踩雷系从被动补偿转主动输出循环)**:踩雷/受伤系 3→7——新增爆芯(踩雷→本轮攻击 +N,走面板乘区)/连爆(同轮多雷递进加层,与疼痛记忆 combo 涌现)/爆心冲击(踩雷→全体敌 雷伤×倍率 直伤,倍率 >1 结构锚——「角色与怪物互相吃伤害」系用户形态本体:开安全格零代价、引爆有代价故回报须更高)/雷蜜(踩雷→回复 N,比值 <1 结构锚);新增跨族桥引信标定(挖开有旗危险格→+1 层——旗=标定引信、挖=引爆,插旗×踩雷推理闭环);扩签登记 +3(本轮踩雷数计数器/被挖格当时有旗/雷罚伤害量);**踩雷转化对账锚**顺带登记(净血账期望须为负,两轮压不住砍血蜜——喂雷流 R5 甲教训同源的 kill-switch);用户裁定:主动/误踩不判定(不预判玩家意图,拿件自选收益最高操作)、爆芯走面板、爆心冲击按倍率非折扣;防御向两件(保险丝/安全帽)保留不动——双刃剑两刃相辅相成;附带修正基础件表战斗系计数 3→2(v3.0 起表头与行数不符),件表总 18→23 | +| **v3.12** | 2026-10-11 | **自爆流扩容批(用户逐裁——踩雷系从被动补偿转主动输出循环)**:踩雷/受伤系 3→7——新增爆芯(踩雷→本轮攻击 +N,走面板乘区)/连爆(同轮多雷递进加层,与疼痛记忆 combo 涌现)/爆心冲击(踩雷→全体敌 雷伤×倍率 直伤,倍率 >1 结构锚——「角色与怪物互相吃伤害」系用户形态本体:开安全格零代价、引爆有代价故回报须更高)/雷蜜(踩雷→回复 N,比值 <1 结构锚);新增跨族桥引信标定(挖开有旗危险格→+1 层——印记=标定引信、挖=引爆,插旗×踩雷推理闭环);扩签登记 +3(本轮踩雷数计数器/被挖格当时有封印印记/雷罚伤害量);**踩雷转化对账锚**顺带登记(净血账期望须为负,两轮压不住砍血蜜——喂雷流 R5 甲教训同源的 kill-switch);用户裁定:主动/误踩不判定(不预判玩家意图,拿件自选收益最高操作)、爆芯走面板、爆心冲击按倍率非折扣;防御向两件(保险丝/安全帽)保留不动——双刃剑两刃相辅相成;附带修正基础件表战斗系计数 3→2(v3.0 起表头与行数不符),件表总 18→23 | | **v3.13** | 2026-10-11 | **生存件扩容批(用户令「增加生存类的个数」——四类盘点呈报后逐裁)**:件表 23→27——①石肤(on 受伤:AC +1 本场累计上限 M)入踩雷/受伤系——恒定减伤形态被否(用户裁「太硬霸」),改受击成长型护甲;②背水(when 生命 ≤50%:受伤额外 −N)入踩雷/受伤系——风险联动减伤,低血不再是纯劣势;生命比例条件事实系其实现前置需求,用户批扩签+待办登记 06;③铁旗(on 标中:本轮 AC +N)入插旗系——生存奖励挂正确推理,与旗语回响共享事件;④战地包扎(on 战斗胜利:回复 N)入战斗系——战后通用恢复,补「恢复只服务自爆流」缺口。四类占比换代:减伤 2(安全帽/背水)/护甲 3(保险丝/石肤/铁旗)/恢复 2(雷蜜/战地包扎)对增伤 8 ≈ 1:1;用户口径订正=保险丝护盾归提升护甲类(AC 判定)、减伤专指受击直接扣减伤害 | | **v3.14** | 2026-10-11 | **实装前置两项裁定写入文档(用户裁)**:①§2.5——Boss 渠道直接给专长(主渠道、唯一直接渠道)**已裁随专长实装批本批落地不再分期**;②§2.5 新增池结构选型澄清——池结构正主=案 D(v3.3 用户定夺在案:归档打底做翼+曝光槽 2+1+令牌=出现次数上限),「概率与上限解耦」实现路径(v3.4 在册三案)系**实装侧自选项非用户裁定项**(原裁定「实现设计不定于现在」=实装批内依代码事实自选不再上问)——成因=会话误将实装侧自选升级为用户裁定项重问已定夺事项,经历史记录(2026-10-07 讨论记忆+TP0 令牌池天然兼顾核实结论)找回定夺后澄清;06 渠道分工条状态行顺带同步 | | **v3.15** | 2026-10-11 | **专长件第一版命名批(用户裁——对外命名纪律:无「雷」无「插旗」,插旗对外=封印、危险格对外风味=地下城陷阱/怪物巢穴;「扫雷插旗」系内部开发用语、对外=探索/挖掘地下城)**:九件代号换代——插旗系:旗语回响→**封印回响**/猎旗手→**封印匠**/铁旗→**封印桩**;踩雷/受伤系:爆芯→**陷阱本能**/连爆→**连环陷阱**/爆心冲击→**陷阱爆发**/雷蜜→**血蜜**;跨族桥:引信标定→**破封一击**;迁入登记:标中殉爆→**封印爆裂**;示警烟火/疼痛记忆/保险丝/见血开窍/石肤/背水/爆破会计等保留(无雷/旗字);纪律登记=术语表新增「对外命名纪律」节(v1.6);版本历史行引用旧代号系留痕不动;命名纪律试例=件名,后续全部对外命名(显示名/UI 文案)同尺 | diff --git a/design/gdd/systems/冒险循环/难度曲线与Boss.md b/design/gdd/systems/冒险循环/难度曲线与Boss.md index 727b009a..49c5bfaf 100644 --- a/design/gdd/systems/冒险循环/难度曲线与Boss.md +++ b/design/gdd/systems/冒险循环/难度曲线与Boss.md @@ -167,7 +167,7 @@ GP(显示名「金币」)与商店房随 2026-09-20 GP+商店房批落地, | 杠杆位 | 口径 | 说明 | |---|---|---| -| GP 掉落均值与方差 | 普通 / 精英(预留行)/ Boss 三行掷定区间 | 掉落量级与战斗节奏同族;格面 gp 型(金币袋,低概率)是"惊喜意外获取"的补充供给 | +| GP 掉落均值与方差 | 普通 / 精英(预留行)/ Boss 三行掷定区间 | 掉落量级与战斗节奏同族;格面 gp 型(GP 袋,低概率)是"惊喜意外获取"的补充供给 | | 关级掉落加值 | 逐关一行 | 关间供给抬升的半边 | | 关级价格加成 | 逐关一行 | 关间价格上涨对应关间掉落上升的另一半——两轴同向联动的对子(legacy 模式轴;pool 模式由 b 因子承载同一杠杆位) | | 货架基价 | pool_shelf 六行(攻击 / 生命上限 / 护甲 / 行动点件 / 凭证 / 回复) | **v0.22 换代**:重复购买爬价由 A 链承载(同店买越多越贵)+ b 跨关递增(后关整体更贵),步长逐档递增语义退役随 legacy 模式保留 | diff --git a/design/gdd/systems/战斗循环/地图战斗资源.md b/design/gdd/systems/战斗循环/地图战斗资源.md index 2f854470..48be18b9 100644 --- a/design/gdd/systems/战斗循环/地图战斗资源.md +++ b/design/gdd/systems/战斗循环/地图战斗资源.md @@ -95,14 +95,14 @@ | 档 | 成员 | 概率位 | 保底上限 | 型级保底登记 | |---|---|---|---|---| | T1 攻击类 | attack / blast / pierce / magic | 最高 | 0 | 无 | -| T2 增益类·GP 小袋 | defense / weaken / 小金币袋(gp) | 中 | 0 | 无 | +| T2 增益类·GP 小袋 | defense / weaken / 小 GP 袋(gp) | 中 | 0 | 无 | | T3 回复(可保底档) | heal(将来可扩) | 低 | 1 | heal = 每板 ≥1 | | T4 惊喜类(永不保底档) | action / 大宝箱(大额 GP,枚举新增归实装批)/ 未来稀有型 | 极致罕见 | 0 | 永不登记 | - **档由两个参数定义:概率位 + 保底上限**。「永不保底」不单立规则——T4 的保底上限 = 0 即其统一表达;T1/T2 上限同为 0。 - **保底数量挂在型上、不挂在档上**:每个型各自登记「每板至少出几个」。档内登记保底的型数 ≤ 档上限 → 全部兑现;> 上限 → 每板从登记型中随机选定「上限」个兑现,其余型该板按普通概率出现、不保底。 - **补签纪律**:执行序 = 装板摇号(含偏运硬币/board_skew 投影)→ 按上限定本期保底型集合 → 校验补签 → 板上全程只读。补签只改类型身份:危险格与安全格不动(补签格可为雷可为安全格,危险格与安全格同池不破)、不消费权重(补签不是一次取号)、清图判定不动、不泄露元信息(补签格与摇号格不可区分)。粒度 = 板,换板重新校验。 -- **GP 数值锚**:以战斗结束 GP 奖励为锚——小金币袋 ≈ 其 1/10、大宝箱 ≈ 其 1 倍(具体数值归调参批)。 +- **GP 数值锚**:以战斗结束 GP 奖励为锚——小 GP 袋 ≈ 其 1/10、大宝箱 ≈ 其 1 倍(具体数值归调参批)。 - 大宝箱为枚举新增(九型→十型走本文修订流程,不随手加行);微光归通用增益组(五色相不变,组内不细分正好容下)。 - **对外稀有度映射**(现行事实源=[核心循环](../../01-核心循环.md)「档位与获取规则」节):T1=普通 / T2=优秀 / T3=稀有 / T4=传说;任何概率提升禁止改变本档保底承诺(保底=承诺非概率)。 @@ -113,7 +113,7 @@ | 玩家动作 | 安全格 | 危险格 | |---|---|---| | 开格 | **+类型**:该格资源的正向兑付(奖励) | **−类型**:该格资源的负向兑付(惩罚) | -| 标旗且留到轮末判定 | **−类型**:标错,该格资源的负向兑付(惩罚) | **+类型**:标中,该格资源的正向兑付(奖励) | +| 封印且留到轮末判定 | **−类型**:标错,该格资源的负向兑付(惩罚) | **+类型**:标中,该格资源的正向兑付(奖励) | | 插旗格直接挖开(插旗不可逆批 2026-09-19) | 零兑付(四情况④:零惩罚零奖励——标空不判、正向作废) | **−类型**照常(四情况②:只受挖雷一层惩罚——标中不发) | 矩阵的定义归本文;把矩阵跑起来的路由(结算队列、判定基线、逐行兑付)归[战斗结算](战斗结算.md)的授予段。blast 型负向 = 警觉。矩阵只描述现行规则;被本矩阵取代的旧体系与历次结构变更(撤旗退役、伏击换装等)一律记版本历史,不在正文复述。 @@ -152,7 +152,7 @@ ### 清图奖励对象:整图封装,可配置可替换 -清图奖励不属于任何一格的格面资源——它是作用域为整张板的独立奖励对象:把一张图的雷全部清完(全部安全格开完)时结算发的那一份。装板摇号时与格子资源同批判尾摇定身份;清图批兑付恰好一次;完美排雷(零误标且至少标中一面旗)追加第二份同身份兑付。 +清图奖励不属于任何一格的格面资源——它是作用域为整张板的独立奖励对象:把一张图的雷全部清完(全部安全格开完)时结算发的那一份。装板摇号时与格子资源同批判尾摇定身份;清图批兑付恰好一次;完美排雷(零误标且至少一次封印标中)追加第二份同身份兑付。 它是可配置可替换的封装:数据面上是清图池里的一行(现行默认槽 clear_default),换行即换内容,机制零改动。按图类型差异化已留结构位——`clear_<图类型>` 命名空间预留,不同地图类型可以配不同的清图奖励;词表现行 = {dungeon, underdark, deep_underdark}(2026-09-19 定稿两值、第三关内容批 2026-09-20 增 deep_underdark,玩家侧「地图类型」),差异化内容启用随内容批。 diff --git a/design/gdd/systems/战斗循环/增益状态.md b/design/gdd/systems/战斗循环/增益状态.md index 87b24b31..58b63682 100644 --- a/design/gdd/systems/战斗循环/增益状态.md +++ b/design/gdd/systems/战斗循环/增益状态.md @@ -5,7 +5,7 @@ ## 设计目的 -战斗里有一类效果不在当场一次性用掉,而要管上几次结算:挖开安全格拿到的主角增益、标中旗带来的怪物削弱、踩雷喂给怪物的增强(警觉——blast 型负向)、标错旗招来的负向兑付,都是这类。本文把它们统称"状态":发给主角的有益效果叫增益(失衡与乏力是例外——它们是发给主角的减益),发给敌人的负面效果叫减益;敌方侧的增强同样是状态——几个方向共用一本账。 +战斗里有一类效果不在当场一次性用掉,而要管上几次结算:挖开安全格拿到的主角增益、封印标中带来的怪物削弱、踩雷喂给怪物的增强(警觉——blast 型负向)、标错封印招来的负向兑付,都是这类。本文把它们统称"状态":发给主角的有益效果叫增益(失衡与乏力是例外——它们是发给主角的减益),发给敌人的负面效果叫减益;敌方侧的增强同样是状态——几个方向共用一本账。 增益状态就是这本账:一个容器收下全部状态,用同一套规矩管理——发入、合并(同一种效果重复拿到时按表行策略处理:叠层加一,或只刷新剩余次数——读 `status_effects.tres` 逐行 stack_policy)、衰减(每次结算后剩余次数减一,减到零效果消失)、清空(战斗结束全部清除)。没有它,几类效果得各写一套计时逻辑,结算明细也无法逐行指回"这效果是我哪步棋带来的"。容器管机制、不管数值从哪来:某个效果该多大,由各收益系统的表去定,容器只照章入账、按次衰减。 @@ -34,7 +34,7 @@ ## 在核心循环中的位置 ``` -扫雷阶段:挖格 / 插旗 / 踩雷 ──(事实流)──▶ 战斗结算(轮末逐行兑现)──(授予 / 查询兑付 / 衰减)──▶ 增益状态 ──▶ 效果落进结算公式 +扫雷阶段:挖格 / 封印 / 踩雷 ──(事实流)──▶ 战斗结算(轮末逐行兑现)──(授予 / 查询兑付 / 衰减)──▶ 增益状态 ──▶ 效果落进结算公式 ``` 增益状态站在轮末结算这一段,是战斗结算身后的状态仓库:扫雷攒下的因里,凡是"要管上几次结算"的那部分都存在它这里。扫雷事实不直接进容器——战斗结算每轮把事实兑换成状态发入,兑付时再来读生效清单。 @@ -43,7 +43,7 @@ ### 一个容器管全部方向:增益减益同账本 -主角的增益与减益、敌方的削弱与增强——各个方向的效果在容器里是同一种东西,都叫状态实例(容器里的一份效果,带层数与剩余次数),走同一套受理、合并、倒数、清除的语义。踩雷的惩罚与标中旗的收益共用同一本账,玩家能在同一种读法下看到雷的两面:一边喂强敌人,一边拆它的皮。 +主角的增益与减益、敌方的削弱与增强——各个方向的效果在容器里是同一种东西,都叫状态实例(容器里的一份效果,带层数与剩余次数),走同一套受理、合并、倒数、清除的语义。踩雷的惩罚与封印标中的收益共用同一本账,玩家能在同一种读法下看到雷的两面:一边喂强敌人,一边拆它的皮。 容器四条硬规矩: @@ -58,14 +58,14 @@ ### 授予只在结算时发生:事实换状态的唯一入口 -状态只在轮末结算时发入容器。挖掘期的挖格、插旗、踩雷都不直接改容器——棋盘只上报"发生了什么"的事实,战斗结算在每轮结算时把事实统一兑换成状态发进来。这个授予入口是唯一的:棋盘和奖励背包都没有直通通道。 +状态只在轮末结算时发入容器。挖掘期的挖格、封印、踩雷都不直接改容器——棋盘只上报"发生了什么"的事实,战斗结算在每轮结算时把事实统一兑换成状态发进来。这个授予入口是唯一的:棋盘和奖励背包都没有直通通道。 每笔状态随身携带归因记录:来源类别五选一、来自哪个格子、发生在第几轮。结算明细因此能逐行回答"这效果是我哪步棋带来的"。 | 来源类别 | 什么时候发生 | 发给谁 | |---|---|---| | 安全格 | 挖开安全格拿到增益 | 主角 | -| 标中旗 | 轮末旗判定标中(危险格被控制) | 敌方,削弱 | +| 封印标中 | 轮末封印判定标中(危险格被控制) | 敌方,削弱 | | 踩雷 | 挖开危险格并惊动 | 敌方,增强 | | 清图奖励 | 清图奖励槽含增益时 | 随行定,路径归[地图战斗资源](地图战斗资源.md)定稿 | | 标空旗 | 轮末旗判定标空(标了但格不是雷) | 该安全格格面资源的负向兑付(极性矩阵"标错"分支——2026-09-15 起不再三选一);载体裁决归[战斗结算](战斗结算.md) | @@ -180,7 +180,7 @@ empower 与 fortify 是敌方技能池增益技在容器侧的数据落点(技 ## P0 最小闭环 1. 战斗结算通知战斗开始:容器开账,空容器进入可用状态。 -2. 轮末结算时,战斗结算把这一轮的扫雷事实兑换成授予:挖开安全格给主角上增益、标中旗削弱敌人、踩雷给敌方上增强、标空旗触发反噬——授予入口是唯一进货口。 +2. 轮末结算时,战斗结算把这一轮的扫雷事实兑换成授予:挖开安全格给主角上增益、封印标中削弱敌人、踩雷给敌方上增强、标空封印触发反噬——授予入口是唯一进货口。 3. 容器按表行合并策略受理(新建 / 叠一层 / 刷新),实例立即生效并携带归因记录。 4. 战斗结算查询生效清单,逐行兑付进结算公式(有效值 = 层数 × 行值)。 5. 兑付完做轮末衰减:全部实例剩余次数减一,归零移除——先兑付、后衰减。 @@ -210,7 +210,7 @@ empower 与 fortify 是敌方技能池增益技在容器侧的数据落点(技 | attack_up 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 增伤;当量锚的参照对象(最低档主角增益) | | ac_up 幅度 | 护甲等级 [−20,20] 且非 0 | ac 行 magnitude | 盾牌加护;掷点折扣判定阈值 = 基准 AC(读 hero 表)逐层 +1,不入任何池、消费归[战斗结算](战斗结算.md)掷点判定 | | alert 幅度 | [0, 4] | ac 行 magnitude | 警觉(敌方护甲等级 +1/层 provisional);消费 = 战斗结算护甲等级掷点判定 | -| weaken 幅度 | 百分比取值域 [60,85],取负生效 | percent 行 magnitude | 削弱;须过"标中旗锚"对照 | +| weaken 幅度 | 百分比取值域 [60,85],取负生效 | percent 行 magnitude | 削弱;须过"封印标中锚"对照 | | enrage 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 暴走;attack 型负向行,进敌方输出修正池 | | off_guard 幅度 | 护甲等级 [−20,20] 且非 0 | ac 行 magnitude | 失衡;标空旗反噬载体,掷点判定阈值逐层下调(2026-09-18 换装 AC 轴,不入池、退出 hero_defense 池) | | sapped 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 乏力;危险格负向 weaken 型,进主角输出修正池(2026-09-15 格面资源批补登记) | diff --git a/design/gdd/systems/战斗循环/战斗结算.md b/design/gdd/systems/战斗循环/战斗结算.md index f9eec3de..ec7578de 100644 --- a/design/gdd/systems/战斗循环/战斗结算.md +++ b/design/gdd/systems/战斗循环/战斗结算.md @@ -5,7 +5,7 @@ ## 设计目的 -玩家在雷图上做的每个决策——挖开的格、插中的旗、踩到的雷——都不会立即生效,而是等轮末由本系统逐行兑换成战斗结果。战斗结算是战斗域的编排与结算中枢:每轮怎么收场、收益怎么折成数值、胜负怎么判定,全部由它编排和裁决。[核心循环](../../01-核心循环.md)里那句"自动战斗不是过场,是阅卷"说的就是它——每一行结算都能指回玩家刚才的哪一步棋。 +玩家在雷图上做的每个决策——挖开的格、落下的封印、踩到的雷——都不会立即生效,而是等轮末由本系统逐行兑换成战斗结果。战斗结算是战斗域的编排与结算中枢:每轮怎么收场、收益怎么折成数值、胜负怎么判定,全部由它编排和裁决。[核心循环](../../01-核心循环.md)里那句"自动战斗不是过场,是阅卷"说的就是它——每一行结算都能指回玩家刚才的哪一步棋。 它还是战斗域内唯一的跨系统调用发起方:敌人、状态、奖励、棋盘各系统彼此不直接调用,一切编排从这里走。没有这个枢纽,扫雷攒下的因没有兑付面,战斗的果也无法归因。 @@ -41,7 +41,7 @@ ## 在核心循环中的位置 ``` -挖掘期:玩家开格 / 标旗 / 停手 ──(事实流 + 账本扣费)──▶ 战斗结算(轮末五段兑现)──▶ 胜负 / 换图 / 冒险推进 +挖掘期:玩家开格 / 封印 / 停手 ──(事实流 + 账本扣费)──▶ 战斗结算(轮末五段兑现)──▶ 胜负 / 换图 / 冒险推进 ``` 本系统站在"扫雷结束、结果揭晓"的那一段:挖掘期它只安静缓冲[排雷玩法](../排雷循环/排雷玩法.md)上报的事实流,不做任何兑付;轮末把这一轮攒下的因逐行兑现成战斗的果。再往下游,胜负去向交[冒险结构](../冒险循环/冒险结构.md)接手,明细交[HUD 框架](../表现与支撑/HUD框架.md)呈现。 @@ -58,7 +58,7 @@ | 段 | 干什么 | |---|---| -| ① 授予段 | 结算队列先过滤再分批兑换:开格、旗判定、清图,按极性矩阵路由(资源/增益/治疗/行动点/GP 当场兑付;伤害形态单据暂存不兑,详见授予段一节) | +| ① 授予段 | 结算队列先过滤再分批兑换:开格、封印判定、清图,按极性矩阵路由(资源/增益/治疗/行动点/GP 当场兑付;伤害形态单据暂存不兑,详见授予段一节) | | ② 增益/减益段 | 把主角与敌人身上的活跃效果一次性合成本结算的修正池(同侧百分比修正的加总桶) | | ③ 战斗段 | 主角先基础攻击一次,随后敌人按行序逐个结算攻击,最后地图奖励与惩罚的伤害兑付在段末统一落地(详见战斗段一节) | | ④ 衰减段 | 移除到期的临时效果;每轮恰好一次,含末轮——清图奖励先兑付、效果后衰减 | @@ -78,13 +78,13 @@ | 伤害行 | 每次伤害一行:目标、伤害分量、修正终值、击杀标记;吃护甲等级掷点的分量,掷点读数与折扣档位随行留档,nat20 暴击随行标记并金框高亮(行型封闭清单不变) | | 治疗行 | 治疗生效一行:封顶后的真实回复量 | | 奖励未生效行 | 满层拒收、满血治疗等合法例外一行 | -| 标旗未中行 | 旗插空的零值归因行,每颗雷只记一次;标错的负向兑付另记效果行 | +| 封印未中行 | 封印落空的零值归因行,每颗雷只记一次;标错的负向兑付另记效果行 | | 蓄力行 | 敌人本拍蓄力不动手(攒下一击)时记一行 **(2026-09-16 敌人技能池批改型为施放行 `cast`:敌人本拍施放增益技——0 伤害动作、具名技能、不掷不折〔原"不兑付伏击"读怪奖励语义随 2026-09-20 八型批伏击退役作废〕;蓄力语义改写为纯攻击增益技,见[敌人系统](敌人系统.md))** | | 衰减行 | 到期临时效果移除一行 | | 判定行 | 胜 / 负 / 继续各一行;终局判定行同时是胜负画面的数据锚 | | 高光行 | 完美排雷成立时一行,只记实际有效兑付 | -每行还携带公共字段:来源类别、来源格、轮次、显示名、数值,以及可空的高光标记(用于强调标中旗、清图奖励这类值得高亮的结果)。没生效也要留痕:两类"未生效"行如实记录合法例外,呈现时聚合计数,不逐行刷屏。 +每行还携带公共字段:来源类别、来源格、轮次、显示名、数值,以及可空的高光标记(用于强调封印标中、清图奖励这类值得高亮的结果)。没生效也要留痕:两类"未生效"行如实记录合法例外,呈现时聚合计数,不逐行刷屏。 任何一行找不到来源即断言失败——宁可返回错误,也不让"合并到看不出来源"的呈现混过数据层。但有些行天然没有棋盘来源,断言为此留了两层豁免,豁免集合是封闭清单,改动同样走本文修订。 @@ -98,7 +98,7 @@ ### 收益对照表:所有收益共用同一把尺子 -开安全格给正向、标中旗给正向、踩雷与标错给负向、清图给清图奖励对象——来源不同、形态不同,但玩家必须能回答"挖这一格值不值",所以全部收益用一张效果档位对照表归一换算。折算单位是当量:1 当量等于 1 点主角生命的期望净变化。这张表是[行动经济](../排雷循环/行动经济.md)五条经济契约第一条"单一当量"的载体;本系统是全部五条契约的唯一对账责任方(契约本体见该文档,对账现状登记 [06-待办清单](../../06-待办清单.md))。 +开安全格给正向、封印标中给正向、踩雷与标错给负向、清图给清图奖励对象——来源不同、形态不同,但玩家必须能回答"挖这一格值不值",所以全部收益用一张效果档位对照表归一换算。折算单位是当量:1 当量等于 1 点主角生命的期望净变化。这张表是[行动经济](../排雷循环/行动经济.md)五条经济契约第一条"单一当量"的载体;本系统是全部五条契约的唯一对账责任方(契约本体见该文档,对账现状登记 [06-待办清单](../../06-待办清单.md))。 **结论**:单一线性换算全源共用,禁止分源改率;百分比效果按"每个结算的瞬时当量"口径折算。 @@ -119,7 +119,7 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × ### 授予段兑付:极性路由,四类动作各归各账 -授予段消费结算队列。**队列与判定基线**:挖掘期玩家对格子的动作——开格、标旗——都进入结算队列;结算逐批兑付,不走逐动作出栈直算。旗判定以轮末在场旗位为基线:被直接挖开的旗已随挖掘消失、不在基线(零兑付——标中 / 标空让位于挖掘本体结局,见下文插旗不可逆四情况);开格事实不可撤(已开格无法回退)。过滤后按触发源分三批兑换,每格受理、每旗判定恰好一次。 +授予段消费结算队列。**队列与判定基线**:挖掘期玩家对格子的动作——开格、封印——都进入结算队列;结算逐批兑付,不走逐动作出栈直算。封印判定以轮末在场封印位为基线:被直接挖开的封印已随挖掘消失、不在基线(零兑付——标中 / 标空让位于挖掘本体结局,见下文封印不可逆四情况);开格事实不可撤(已开格无法回退)。过滤后按触发源分三批兑换,每格受理、每封印判定恰好一次。 兑付走**极性矩阵**(定义归[地图战斗资源](地图战斗资源.md)):开安全格 → 该格格面资源的正向;开危险格 → 负向;标中旗 → 该危险格资源的正向;标错旗 → 该安全格资源的负向。九型字典里每型各有一行正向、一行负向(gp 型随 2026-09-20 GP+商店房批增补——gp 正负两向兑付 = 战斗内 GP 缓冲,见下方兑付形态表);伏击随 2026-09-20 八型批退役,blast 型负向现况 = 警觉(敌方护甲等级 +1)。 @@ -128,14 +128,14 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 情况 | 兑付 | |---|---| | ① 插危险格、留到轮末判定 | 标中照常(该危险格资源正向) | -| ② 插危险格、再直接挖开 | 只受挖雷一层惩罚(该危险格资源负向照常兑付;挖雷惩罚因惊动触发);标中不发(旗已随挖掘消失、不入判定基线) | +| ② 插危险格、再直接挖开 | 只受挖雷一层惩罚(该危险格资源负向照常兑付;挖雷惩罚因惊动触发);标中不发(封印已随挖掘消失、不入判定基线) | | ③ 插安全格、留到轮末判定 | 标空惩罚照常(该安全格资源负向) | | ④ 插安全格、再直接挖开 | 零惩罚零奖励——正向兑付作废,记「奖励作废(插旗格直接挖开)」归因行(reward_ineffective 行型);标空判定同②自然缺席 | | 批 | 兑付 | |---|---| -| 挖格批 | 开到的安全格逐格兑该格资源的正向(插旗格直挖除外——四情况④零奖励);开到的危险格逐格兑该格资源的负向(插旗危险格照常——四情况②) | -| 旗判定批 | 标中则兑该危险格资源的正向,每颗雷的资格只兑一次;标空则记"标旗未中"归因行,并兑该安全格资源的负向 | +| 挖格批 | 开到的安全格逐格兑该格资源的正向(封印格直挖除外——四情况④零奖励);开到的危险格逐格兑该格资源的负向(封印危险格照常——四情况②) | +| 封印判定批 | 标中则兑该危险格资源的正向,每颗雷的资格只兑一次;标空则记"封印未中"归因行,并兑该安全格资源的负向 | | 清图批 | 清图奖励对象恰好发一次;完美排雷追加第二份同身份兑付 | 授予段当场只兑非伤害形态(增益、治疗、行动点、GP 缓冲、警觉加层);**伤害形态兑付(爆裂、直伤、反噬)以伤害单据暂存,攒到战斗段末统一结账**(2026-10-06 用户裁——地图伤害账殿后,见[伤害单据与伤害控制器](#伤害单据与伤害控制器所有伤害走同一道门)与战斗段两节)。暂存单在授予段按「将兑付」回报——授予段内依赖兑付读数的流程决策(完美排雷第二份、高光份数)依据开单时点事实判定,该时点敌人存活有保证;战斗段末实际结账若目标已灭,控制器自记「奖励未生效」行。 @@ -149,7 +149,7 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 即时治疗(flat) | heal 正向 | 主角按表值回复并封顶上限 | 满血时零兑付,记"奖励未生效"行 | | 直伤(flat) | heal 负向 | 主角在战斗段末扣表值生命(暂存单殿后统一落地),不经增益状态 | 主角倒下则地图账整体不兑,逐单留"未生效"行 | | 警觉加层 | blast 负向 | 敌方全体护甲等级 +1/层(读 `reward.tres` enemy_alert 行 → `status_effects.tres` alert 行),入增益状态容器 | 直授无上限;战斗段由防守方护甲等级读数消费 | -| GP 缓冲(flat) | gp 正 / 负向 | 金币袋 / 破财按 power 记入战斗内 GP 缓冲(+power / −power);缓冲随战斗完成折进 battle_finished 的 gp_dropped 统一到账(钱包账本归[冒险结构](../冒险循环/冒险结构.md)) | 无拒收态——缓冲只在战斗边界与钱包结算,战斗域零钱包状态 | +| GP 缓冲(flat) | gp 正 / 负向 | GP 袋 / 破财按 power 记入战斗内 GP 缓冲(+power / −power);缓冲随战斗完成折进 battle_finished 的 gp_dropped 统一到账(钱包账本归[冒险结构](../冒险循环/冒险结构.md)) | 无拒收态——缓冲只在战斗边界与钱包结算,战斗域零钱包状态 | | 行动点修正 | action 正/负向 | 下轮行动点 ±power(action_economy 排队,下一轮开始兑现后清零;下限 0) | 排队净值不跨轮保留;明细记效果行(effect_id=ap_delta) | 警觉(blast 负向——2026-09-20 八型批伏击退役换装)为敌方 side-wide 状态:多个敌人共享同一状态值、互不消耗,只活一轮、轮末清零;战斗段由防守方护甲等级读数消费(我打敌 = 敌方 armor_class + Σ敌方侧 ac 型状态)。其余各型负向受池 clamp 与叠层上限承载。 @@ -297,7 +297,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 ## P0 最小闭环 1. 战斗开始序列跑完(关闸门、开容器、掷骰定敌数、生成敌人、装板并预分配资源、发开轮通知 + 开轮摇号),进入第一轮挖掘期。 -2. 挖掘期本系统只缓冲事实流(开格、标旗入结算队列),不做任何兑付。 +2. 挖掘期本系统只缓冲事实流(开格、封印入结算队列),不做任何兑付。 3. 轮末自动触发五段结算,触发与事件到达序无关。 4. 授予段按判定基线过滤(被挖开的旗不入判定),再按极性矩阵三批兑现:开安全格兑正向(插旗安全格直挖 = 四情况④零奖励作废行)、开危险格 / 标错旗兑负向(插旗危险格直挖照常——四情况②)、清图发清图奖励对象(完美乘数读 settlement.tres p_perfect)。 5. 增益合成、主角先手加逐敌按摇定技能兑付(伤害技三乘法链 / 增益技施放行)加地图伤害账殿后(暂存单随战斗段末统一结账)、衰减恰好一次。 @@ -308,7 +308,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 | 优先级 | 内容 | 后置原因 | |---|---|---| -| P1 | 深度高光形态(标中旗即时动画、音画同步) | 数据面标记与当轮兑付已落,表现形态归[战斗表现](战斗表现.md)与美术 | +| P1 | 深度高光形态(封印标中即时动画、音画同步) | 数据面标记与当轮兑付已落,表现形态归[战斗表现](战斗表现.md)与美术 | | P2 | 回放切点续玩 | 依赖[存档序列化](../表现与支撑/存档序列化.md)的快照能力实现 | ## 调参表 diff --git a/design/gdd/systems/战斗循环/战斗表现.md b/design/gdd/systems/战斗循环/战斗表现.md index 48d1fb8c..324345e0 100644 --- a/design/gdd/systems/战斗循环/战斗表现.md +++ b/design/gdd/systems/战斗循环/战斗表现.md @@ -50,7 +50,7 @@ 战斗屏是挖掘与结算两种形态共用的同一张屏:常驻双舞台(白话:战斗画面与扫雷图同屏常驻,像同一块屏上的两个舞台),结算期不切换场景,裁决与理由见 [battle.md 布局决策 1](../../ux/battle.md)。所以战斗表现的工作不是另做一个战斗场景,而是在既有呈现上叠加动画密度与演出——这是本系统范围边界的第一条。 -"发生什么"与"怎么动"因此分了工:敌人死亡是血条归零后灰化加碎裂退场、禁止瞬间消失,结算明细带逐行滚动,完美排雷与标中旗有高光行强调——这些呈现语义已由 battle.md 与 HUD 框架定稿,本文不复述。本文将来承接的只是其上的动画密度:受击反馈、弹道、退场动画等类别。 +"发生什么"与"怎么动"因此分了工:敌人死亡是血条归零后灰化加碎裂退场、禁止瞬间消失,结算明细带逐行滚动,完美排雷与封印标中有高光行强调——这些呈现语义已由 battle.md 与 HUD 框架定稿,本文不复述。本文将来承接的只是其上的动画密度:受击反馈、弹道、退场动画等类别。 资产侧同理,这也是双舞台带来的管线约束:若舞台形态悬而未决,同一份角色资产可能因舞台不同而重画。现行解法是剪影跨舞台通用——角色剪影按"棋盘、结算画面与任一战斗舞台通用"设计,不为舞台未决问题付重画成本(art-bible §5.1;原 §3.1,2026-09-22 迁 §5.1)。 @@ -65,14 +65,14 @@ | 奖励未生效行的呈现 | [增益状态](增益状态.md)定稿时登记(数据源是[战斗结算](战斗结算.md)的明细协议) | 让这类行在演出中可读、不被吞掉 | | 效果来源格的可读化 | 同上(候选形态:缩略图或格子高亮,坐标不直接呈现) | 把"效果来自哪一格"翻译成玩家可读的演出 | | 坍塌显形的连锁动画 | [游戏概念](../../00-游戏概念.md)的概念层拍板——坍塌显形是[连锁展开](../排雷循环/排雷玩法.md)的玩家可见名,与音频方向同批配对登记 | 连锁展开触发时的连锁演出 | -| 高光兑现的演出强化 | 完美排雷与标中旗强调的机制及呈现位已由战斗结算与 battle.md 定稿 | 在既有高光行呈现之上加强演出密度 | +| 高光兑现的演出强化 | 完美排雷与封印标中强调的机制及呈现位已由战斗结算与 battle.md 定稿 | 在既有高光行呈现之上加强演出密度 | | 伤害数字 | 归档索引中本系统的旧范围一句话即含"伤害数字" | 落点未定:预告上格原则与"敌人不占格、兑现发生在战斗画面区"如何相容,见待设计问题清单 | ### 前置美术测试是硬前置 正式设计本文之前,必须先做一次"战斗表现美术测试":用一屏样张(一张按候选方案画成的试验图)锁定角色剪影、动画方案、战斗空间三件事。这是旧体系评审登记的排期硬前置,不是建议;battle.md 也登记了该测试须按双舞台布局出样。样张未过,不启动任何终稿资产与动画设计。 -附着在同一次样张上的还有一项已登记的裁决(登记出处 = 敌人系统的呈现契约):敌人层绘制优先级的插入位置——白话就是敌人的姿态精灵画在绘制顺序的哪一层,会不会、以及如何与棋盘上的数字、旗、小人发生遮挡。它随美术测试一并裁决,不在本文提前定。 +附着在同一次样张上的还有一项已登记的裁决(登记出处 = 敌人系统的呈现契约):敌人层绘制优先级的插入位置——白话就是敌人的姿态精灵画在绘制顺序的哪一层,会不会、以及如何与棋盘上的数字、封印印记、小人发生遮挡。它随美术测试一并裁决,不在本文提前定。 两项相邻裁定已有结论,设计时直接继承:**敌人呈现形态已裁决(2026-09-20 用户看对照样张拍板)——全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条正下方,卡片式整体退役**(06 待办「敌人卡形态」解决移除,状态记录 99;battle.md 起草条款已随裁决改写,对照样张存档 `production/mockups/`);art-bible 的图标键契约已冻结,动画设计不必等图标终稿。 @@ -88,7 +88,7 @@ 2. **剪影跨舞台通用(灰度通道)**:同一角色剪影转灰度后在三个语境下仍可辨认为同一角色——识别只靠轮廓通道、不借格底色(art-bible §5.1 已锁事实的样张检验)。 3. **动画方案可读**:三组关键帧条按序翻看能读懂"发生了什么":受击反馈先于死亡、退场有过程禁止瞬消、高光行强调可辨;每组动画能指认其减动效简化形态(时长减半或直达终态)。 4. **战斗空间成立**:双舞台同屏下挖掘期视线锚在棋盘区、结算期锚在明细带与战斗画面区(B 区),两舞台边界清晰、无焦点争夺。 -5. **敌层插入位置可裁**:遮挡对照组足以裁决敌人姿态精灵画进绘制顺序的哪一层——任何层叠组合下数字、旗、小人禁止被遮挡到不可辨。 +5. **敌层插入位置可裁**:遮挡对照组足以裁决敌人姿态精灵画进绘制顺序的哪一层——任何层叠组合下数字、封印印记、小人禁止被遮挡到不可辨。 判定与回退:第 1 项不过即演出元素回炉,禁止以牺牲可读性换氛围(改演出、不动数字口径);第 2–4 项不过对应资产或方案回炉重交,已过项结果保留。第 5 项(敌层插入位置)不产生过/不过,产出一条裁决记录:插入位置结论由[敌人系统](敌人系统.md)的呈现契约登记(~~敌人卡形态对照~~半边已于 2026-09-20 提前裁决完成——全站桩定稿,结论已回写 battle.md 起草条款)。样张通过 = 角色剪影、动画方案、战斗空间、敌层插入位置四件锁定物冻结;通过前不启动任何终稿资产与动画设计。 diff --git a/design/gdd/systems/战斗循环/敌人系统.md b/design/gdd/systems/战斗循环/敌人系统.md index b9eb2a4b..6bbcd8fe 100644 --- a/design/gdd/systems/战斗循环/敌人系统.md +++ b/design/gdd/systems/战斗循环/敌人系统.md @@ -7,7 +7,7 @@ 敌人系统回答战斗里四个问题:对面是谁、有多强、接下来要干什么、怎么被打死。它同时管主角和敌人的数据面——双方共用同一套受伤与死亡的接口,所以它也是踩雷代价的收件人:惊动危险格喂给怪物的每一分优势,最终都落在它管的血量上。没有它,惩罚没有落点、胜负没有主体、难度曲线没有施加对象。 -它向玩家兑现三条承诺。威胁可推测:特殊技有一次开轮类型级预告、结算明细具名到技能,普攻之外的行动都读得懂来龙去脉。强弱有来处:它强是我踩雷喂的,它弱是我插旗拆的。越下越险:深层敌人更凶,是下探氛围的可见刻度。反向护栏只有一条——威胁绝不能是无源暗账,玩家说不出"它为什么变强、这一拳为什么这么重",就是本系统失职。 +它向玩家兑现三条承诺。威胁可推测:特殊技有一次开轮类型级预告、结算明细具名到技能,普攻之外的行动都读得懂来龙去脉。强弱有来处:它强是我踩雷喂的,它弱是我封印拆的。越下越险:深层敌人更凶,是下探氛围的可见刻度。反向护栏只有一条——威胁绝不能是无源暗账,玩家说不出"它为什么变强、这一拳为什么这么重",就是本系统失职。 出招的质感目标是动作游戏怪物 AI:以普通攻击为基底,随机时机出特殊技——出招序列不可背诵,但每一次出手都离散、具名、可归因。 @@ -31,7 +31,7 @@ | 摇号执行与结算编排(何时摇、伤害合成、死亡判定时机、护甲克制矩阵) | [战斗结算](战斗结算.md) | | 状态层数的存放与衰减(削弱层池、蓄力/硬化/警觉增益) | [增益状态](增益状态.md) | | 奖励内容与掉落 | [地图战斗资源](地图战斗资源.md) | -| 棋盘规则(挖格、插旗、惊动危险格等事实的发生) | [排雷玩法](../排雷循环/排雷玩法.md) | +| 棋盘规则(挖格、封印、惊动危险格等事实的发生) | [排雷玩法](../排雷循环/排雷玩法.md) | | 遭遇构成(何时开战、坐标与数量怎么定) | [关卡节点地图](../冒险循环/关卡节点地图.md);跨战斗血量保留归[冒险结构](../冒险循环/冒险结构.md)(生命账本) | | 单位数值曲线、池权重/冷却/保底投值与难度修饰 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | | 呈现(线索映射清单、顺位与血条、摇定动画、受击与死亡演出) | [HUD 框架](../表现与支撑/HUD框架.md) 与 [战斗表现](战斗表现.md) | @@ -43,7 +43,7 @@ 战斗开始:战斗结算按遭遇坐标调本系统生成单位(池快照成实例池)──▶ 每轮开轮摇号定拍 → 轮末结算按技能行兑现 ──▶ 敌全灭 / 主角归零,回流战斗结算判胜负 ``` -敌人系统站在"战斗兑现"这一段的单位层。上游是战斗结算的编排调用,以及经它转化而来的棋盘事实(踩了雷、插了旗);下游回给战斗结算两样东西——胜负判定素材和带来源的伤害分量。 +敌人系统站在"战斗兑现"这一段的单位层。上游是战斗结算的编排调用,以及经它转化而来的棋盘事实(踩了雷、落了封印);下游回给战斗结算两样东西——胜负判定素材和带来源的伤害分量。 ## 核心规则 @@ -182,7 +182,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 ## 依赖与输出 -本系统编排被动:全部调用集中在战斗结算,棋盘事实(踩雷、插旗)经它转化后才作用于单位;本系统零随机、零界面、零事件订阅。下表就是删除任何一方时的影响面清单。 +本系统编排被动:全部调用集中在战斗结算,棋盘事实(踩雷、封印)经它转化后才作用于单位;本系统零随机、零界面、零事件订阅。下表就是删除任何一方时的影响面清单。 | 方向 | 系统 | 接口要点 | |---|---|---| diff --git a/design/gdd/systems/排雷循环/地形变异.md b/design/gdd/systems/排雷循环/地形变异.md index eff8d379..c6779fe5 100644 --- a/design/gdd/systems/排雷循环/地形变异.md +++ b/design/gdd/systems/排雷循环/地形变异.md @@ -11,7 +11,7 @@ ## 系统范围 -边界这样划:地形变异只管"变异是什么、以什么形式存在、遵守什么纪律"。变异怎么随战斗初始化布置归战斗结算的编排序;挖格、插旗、连锁展开怎么执行归排雷玩法。 +边界这样划:地形变异只管"变异是什么、以什么形式存在、遵守什么纪律"。变异怎么随战斗初始化布置归战斗结算的编排序;挖格、封印、连锁展开怎么执行归排雷玩法。 负责: @@ -28,7 +28,7 @@ | 不负责 | 归谁 | |---|---| | 布置的编排时点与算法执行(变异格赋予在棋盘设置顺序第 4 步) | [战斗结算](../战斗循环/战斗结算.md)(编排段执行面);布置参数数值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | -| 挖格、插旗、连锁展开的规则本体 | [排雷玩法](排雷玩法.md) | +| 挖格、封印、连锁展开的规则本体 | [排雷玩法](排雷玩法.md) | | 反制道具的效果、时效与定价 | [秘宝](../跨局循环/秘宝.md) | | 数值表本体与读取机制 | [数据配置](../表现与支撑/数据配置.md) | | 界面呈现(数字遮蔽的渲染执行) | [HUD 框架](../表现与支撑/HUD框架.md) | @@ -83,7 +83,7 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 ### 零特判原则(承重约束) -变异禁止改写扫雷规则本体:挖格、插旗、连锁展开的判定与执行不增加任何变异分支,代码里不允许出现"这格带某变异所以就……"。这是框架的承重约束——它保证每加一类变异都不需要回头修改规则本体,玩家面对的也始终是同一套扫雷规则,而不是一套到处开洞的例外。 +变异禁止改写扫雷规则本体:挖格、封印、连锁展开的判定与执行不增加任何变异分支,代码里不允许出现"这格带某变异所以就……"。这是框架的承重约束——它保证每加一类变异都不需要回头修改规则本体,玩家面对的也始终是同一套扫雷规则,而不是一套到处开洞的例外。 交互全部走数据侧:规则本体只读取格子数据并按数据行动,变异的全部影响经由数据与读取方之间的约定产生(伤害型由战斗结算兑付、信息型由呈现层遮蔽)。若未来某类变异的机制确实需要规则本体做出区分,那是一次同时修订排雷玩法与本文的正式变更,不是框架默认允许的能力。 @@ -150,7 +150,7 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 ## 验收标准 - 候选池空合法:门控筛空(池空或候选域碎片化不足)时静默零布置,配置加载零错误、零警告。 -- 零特判(负验收):排雷玩法的挖格、插旗、连锁展开执行路径中不存在任何按变异类型分支的代码;读取方按 effect/trigger/placement 枚举路由。 +- 零特判(负验收):排雷玩法的挖格、封印、连锁展开执行路径中不存在任何按变异类型分支的代码;读取方按 effect/trigger/placement 枚举路由。 - 数据生命周期:格子携带的变异是只读数据——战斗初始化末段布置、随图消亡,布置后零运行时写入,无跨图存续;生成器产物恒零变异格。 - 布置域:变异格全在初始展开区外(伤害型 closed_only 由设置顺序结构保障)且不吃危险格;每图至多一种类型;连通片 ≤ pack_max。 - 配套义务闭环(**已作废,2026-10-03 终裁**):原「定稿批须含反制兑现条目否则验收不通过」随反制道具配套义务一并作废;counter_items 恒空为合法态。 diff --git a/design/gdd/systems/排雷循环/排雷玩法.md b/design/gdd/systems/排雷循环/排雷玩法.md index baf4fb01..20c22441 100644 --- a/design/gdd/systems/排雷循环/排雷玩法.md +++ b/design/gdd/systems/排雷循环/排雷玩法.md @@ -1,26 +1,26 @@ # 排雷玩法 -> 一句话:挖格、插旗、连锁展开等扫雷规则本体 +> 一句话:挖格、封印、连锁展开等扫雷规则本体 > 状态:已定稿(自旧体系迁移) ## 设计目的 -排雷玩法是扫雷规则本体:玩家在地牢厅室里做的每个动作——挖格、插旗、移动——都由它裁决,并把发生的事实如实上报给全项目。它不决定每个动作花多少钱(账本归[行动经济](行动经济.md)),也不决定收益怎么兑现成战斗效果(归[战斗结算](../战斗循环/战斗结算.md))——它只保证棋盘上的事实真实、顺序确定:数字从不说谎,每个拒绝有据可查。没有它,[棋盘生成](棋盘生成.md)生成的板没有发生地,战斗结算也没有事实来源。 +排雷玩法是扫雷规则本体:玩家在地牢厅室里做的每个动作——挖格、封印、移动——都由它裁决,并把发生的事实如实上报给全项目。它不决定每个动作花多少钱(账本归[行动经济](行动经济.md)),也不决定收益怎么兑现成战斗效果(归[战斗结算](../战斗循环/战斗结算.md))——它只保证棋盘上的事实真实、顺序确定:数字从不说谎,每个拒绝有据可查。没有它,[棋盘生成](棋盘生成.md)生成的板没有发生地,战斗结算也没有事实来源。 -格子的正式名称全库统一(2026-10-11 用户裁):有惩罚的格子一律称**危险格**(原内部名「雷格」与界面名「惩罚格」统一并退役,见[术语表](../../术语表.md);同日补裁=无具体类型划分,怪物巢穴类型概念退役)——惊动危险格则怪物倾巢而出、敌方占得先机;插旗叫**控制**(标中则化险为利)、连锁展开叫**坍塌显形**(挖穿薄壳,整片塌陷露出)、标错叫**控制失败**。本文一律使用「危险格」。 +格子的正式名称全库统一(2026-10-11 用户裁):有惩罚的格子一律称**危险格**(原内部名「雷格」与界面名「惩罚格」统一并退役,见[术语表](../../术语表.md);同日补裁=无具体类型划分,怪物巢穴类型概念退役)——惊动危险格则怪物倾巢而出、敌方占得先机;封印叫**控制**(标中则化险为利)、连锁展开叫**坍塌显形**(挖穿薄壳,整片塌陷露出)、标错叫**控制失败**。本文一律使用「危险格」。 ## 系统范围 -边界这样划:一个动作"碰棋盘"的部分全归这里——合不合法、执行后格子变成什么样、翻开了哪些格、旗立在哪;"花多少钱"归行动经济,"兑现成什么战斗效果"归战斗结算,"画成什么样"归 HUD 框架,"格子怎么生出来"归棋盘生成。本系统自己不含任何玩法数值、零随机、也不认界面:同一张板、同一份动作序列,必然得到逐位相同的结果。 +边界这样划:一个动作"碰棋盘"的部分全归这里——合不合法、执行后格子变成什么样、翻开了哪些格、封印印记立在哪;"花多少钱"归行动经济,"兑现成什么战斗效果"归战斗结算,"画成什么样"归 HUD 框架,"格子怎么生出来"归棋盘生成。本系统自己不含任何玩法数值、零随机、也不认界面:同一张板、同一份动作序列,必然得到逐位相同的结果。 负责: | 负责 | 说明 | |---|---| -| 全部棋盘面规则 | 动作合法性(相邻、开未开、旗位)、连锁展开、数字提示、旗的棋盘状态、清图判定(安全格是否全部开完) | +| 全部棋盘面规则 | 动作合法性(相邻、开未开、封印位)、连锁展开、数字提示、封印印记的棋盘状态、清图判定(安全格是否全部开完) | | 开局初始展开 | 装板事务:结构前提校验、免费展开出生开阔地、小人落位 | | 单一结算入口 | 玩家意图只从批次结算入口进,按固定语义序仲裁 | -| 三种对外事件 | 挖开格、旗判定、轮次结束——全项目的事实流源头 | +| 三种对外事件 | 挖开格、封印判定、轮次结束——全项目的事实流源头 | | 拒绝原因清单 | 每个被拒动作带可辨原因,供呈现层区分"棋盘面非法 vs 资源不足" | 不负责: @@ -43,9 +43,9 @@ ## 核心规则 -### 挖、插旗、移动:每个动作怎么才算合法 +### 挖、封印、移动:每个动作怎么才算合法 -玩家对棋盘只做三件事:挖未开格、插旗,以及移动小人(玩家摆在棋盘上的探险者棋子)。前两个是付费动作,按标准动作价计费(价目见 `game/data/tables/action_economy.tres`;每轮的决策预算,账本归[行动经济](行动经济.md));本文只管棋盘面这一半,总纲只有一条:付费动作只能作用于小人周围一圈 8 格(8 向相邻)之内。 +玩家对棋盘只做三件事:挖未开格、封印,以及移动小人(玩家摆在棋盘上的探险者棋子)。前两个是付费动作,按标准动作价计费(价目见 `game/data/tables/action_economy.tres`;每轮的决策预算,账本归[行动经济](行动经济.md));本文只管棋盘面这一半,总纲只有一条:付费动作只能作用于小人周围一圈 8 格(8 向相邻)之内。 移动不花行动点:点任何已开格,小人沿已探明区一次走到位,"已探明区"包括踩过的危险格残址。点击已开格的唯一含义就是移动——本作没有经典扫雷里"双击数字格一键翻开周围"的 chord(双击快开),每一格的兑现都必须花行动点。 @@ -53,15 +53,15 @@ | 动作 | 合法对象 | 棋盘面拒绝情形 | |---|---|---| -| 挖 | 8 向相邻、未开(有旗照挖) | 不相邻 / 已开过 | -| 插旗 | 8 向相邻、未开、无旗 | 不相邻 / 已开过 / 已有旗 | +| 挖 | 8 向相邻、未开(有封印照挖) | 不相邻 / 已开过 | +| 封印 | 8 向相邻、未开、无封印 | 不相邻 / 已开过 / 已有封印 | | 移动 | 任意已开格,且能只经已开格连通到达 | 目标未开 / 无连通路径 | -每个被拒动作都带一个可辨的拒绝原因;原因只能取自一份固定清单,清单外没有别的来源。三个来源互不混淆:棋盘面非法(上表各情形,细因彼此数据可分——"已有旗"和"不相邻"必须是两个可区分的原因)、资源不足(判定权在行动经济)、相位不对(本轮已收尾,不收动作)。玩家看到的文案归[HUD 框架](../表现与支撑/HUD框架.md)。 +每个被拒动作都带一个可辨的拒绝原因;原因只能取自一份固定清单,清单外没有别的来源。三个来源互不混淆:棋盘面非法(上表各情形,细因彼此数据可分——"已有封印"和"不相邻"必须是两个可区分的原因)、资源不足(判定权在行动经济)、相位不对(本轮已收尾,不收动作)。玩家看到的文案归[HUD 框架](../表现与支撑/HUD框架.md)。 ``` 一个意图进来 - ├─ 棋盘面判定(本系统):不相邻?开过了?旗位不对?── 任一命中 → 拒绝,状态不变 + ├─ 棋盘面判定(本系统):不相邻?开过了?已有封印?── 任一命中 → 拒绝,状态不变 ├─ 扣费(行动经济):点数不够 → 拒绝(资源不足),状态不变 └─ 都过 → 执行:改棋盘、上报事实 移动免费直达,不经扣费。 @@ -73,21 +73,21 @@ 每个已开安全格都亮着一个数字,恒等于它周围 8 格里的雷数。这条"数字恒真"是全部推理的地基:数据层从不说谎,呈现层怎么遮掩都不改真值——任何让数字失真的实现都在禁止之列。 -挖开一个数字为 0 的格(周围一圈没有雷)时,它周围未插旗的安全格免费连锁全开,一路递推到没有新的 0 格为止——这就是连锁展开,玩家看到的是"坍塌显形":挖穿一层薄壳,整片松动的地面塌陷露出。连锁格只扣首格挖掘按价计的一笔,照常计入清图进度(清图 = 开完全部安全格),格面资源资格也照常——连锁开出的格与单挖的格同权,资源身份归[地图战斗资源](../战斗循环/地图战斗资源.md)、极性兑付归[战斗结算](../战斗循环/战斗结算.md),本系统不区分。 +挖开一个数字为 0 的格(周围一圈没有雷)时,它周围未封印的安全格免费连锁全开,一路递推到没有新的 0 格为止——这就是连锁展开,玩家看到的是"坍塌显形":挖穿一层薄壳,整片松动的地面塌陷露出。连锁格只扣首格挖掘按价计的一笔,照常计入清图进度(清图 = 开完全部安全格),格面资源资格也照常——连锁开出的格与单挖的格同权,资源身份归[地图战斗资源](../战斗循环/地图战斗资源.md)、极性兑付归[战斗结算](../战斗循环/战斗结算.md),本系统不区分。 -连锁遇到旗就停:旗格不被链开,也不给更远的格当传播跳板。旗按价计费,正是玩家亲手买下的"链阻断器"——对一片不敢确定的地,提前插一面旗,塌方到它为止。 +连锁遇到封印就停:封印格不被链开,也不给更远的格当传播跳板。封印按价计费,正是玩家亲手买下的"链阻断器"——对一片不敢确定的地,提前落一枚封印印记,塌方到它为止。 -清图在每次挖完成后判定;插旗、移动都不改已开格,永远不会触发清图。 +清图在每次挖完成后判定;封印、移动都不改已开格,永远不会触发清图。 | 连锁展开的性质 | 含义 | |---|---| | 免费 | 只扣首格按价计的一笔,连锁翻开的格不另收费 | | 计入清图进度 | 连锁开的格照常算进"全部安全格开完"的判定 | | 资源资格照常 | 连锁开出的安全格与单挖的安全格同权 | -| 遇旗即止 | 旗格不入链、不作传播跳板;旗留在原地,轮末照常判定 | +| 遇封印即止 | 封印格不入链、不作传播跳板;封印印记留在原地,轮末照常判定 | ``` -挖开 0 格 → 翻开周围 8 向未插旗的安全格 → 新开格里还有 0 格吗? +挖开 0 格 → 翻开周围 8 向未封印的安全格 → 新开格里还有 0 格吗? ├─ 有 → 对每个新 0 格重复上一行 └─ 没有 → 连锁结束(整段只扣首格按价计的一笔) ``` @@ -119,7 +119,7 @@ ### 踩过的雷能走:已引爆危险格的通行规则 -挖开危险格不是死亡,是事实上报:轮次不结束,危险格从此算已开——小人能站上去,也能穿过它继续挖。挖开后的危险格不计清图进度(图不是靠踩雷清的)、不能再挖、不能再插旗;同一轮连挖多颗雷,每颗都是独立的事实,逐颗上报。 +挖开危险格不是死亡,是事实上报:轮次不结束,危险格从此算已开——小人能站上去,也能穿过它继续挖。挖开后的危险格不计清图进度(图不是靠踩雷清的)、不能再挖、不能再封印;同一轮连挖多颗雷,每颗都是独立的事实,逐颗上报。 因此挖已知雷成了一条"有价捷径":按价计费、给敌方送去优势,换来一条穿行的近路。它既是玩家主动抄近路的权衡,也是棋盘被挖残时的兜底通路。惊动危险格的代价在轮末结算兑现,归[战斗结算](../战斗循环/战斗结算.md)。 @@ -127,12 +127,12 @@ |---|---| | 可通行 | 移动可以经过、可以站立;穿越仍按移动规则找已开区路径 | | 不计清图 | 不算安全格,"全部安全格开完"的判定不认它 | -| 不可再操作 | 不能再挖,也不能插旗 | +| 不可再操作 | 不能再挖,也不能封印 | | 事实已上报 | 轮次不结束;惩罚由战斗结算在轮末兑现 | 举证:本节为格态规则,无计算。 -### 旗立得住、也带不走:旗的生命周期与换图重置 +### 封印立得住、也带不走:封印印记的生命周期与换图重置 旗是棋盘状态的一部分,不是背包里的实物:插上的旗跨轮保留、随图存续,没有数量上限,也没有任何移除手段(拔旗已退役——旗只能被挖开,不能被撤下)。每次轮次结束(行动点耗尽、玩家停手或清图时),本系统对当时在场的每一面旗如实上报一条判定——旗下是雷记标中(玩家看到危险格被控制、化险为利),不是雷记标空;旗一直插在雷上,就每轮如实重复上报标中,去重是[战斗结算](../战斗循环/战斗结算.md)的事,本系统只报事实。被直接挖开的旗随挖掘消失、不在轮末在场基线里,自然不报判定;插旗本身不发事件,界面反馈走调用返回值。 @@ -150,9 +150,9 @@ | 随战斗结束消失 | 整板退役 | 与板一同清空 | ``` -插旗(按价计费,界面即时反馈)→ 旗立在未开格上,跨轮保留 -每次轮次结束 → 逐旗判定,如实上报(标中 / 标空) -换图(清图或刷新)或战斗结束 → 旗随旧图全量消失 +封印(按价计费,界面即时反馈)→ 封印印记立在未开格上,跨轮保留 +每次轮次结束 → 逐封印判定,如实上报(标中 / 标空) +换图(清图或刷新)或战斗结束 → 封印印记随旧图全量消失 ``` 举证:本节为状态生命周期规则,无计算。 @@ -165,14 +165,14 @@ |---|---|---| | 最先 | 能清图的挖 | 执行后图即全开的挖——防止"耗尽优先"把清图高光结算成最差结局 | | 次之 | 停手 | 玩家主动收轮 | -| 其余 | 普通挖、插旗、移动 | 同类内按提交顺序 | +| 其余 | 普通挖、封印、移动 | 同类内按提交顺序 | 对外,本系统只发三种事件、不订阅任何东西;事件集合封闭,增删事件就是接口修订: | 事件 | 何时发 | 内容 | |---|---|---| | 挖开格 | 每开一格(初始展开、连锁、单挖各算) | 哪格、安全还是雷、数字、经哪条路开的、有无格面资源资格(封锁格恒无;安全格与危险格恒有——资源本体与极性兑付归[地图战斗资源](../战斗循环/地图战斗资源.md),本系统不区分) | -| 旗判定 | 每次轮次结束时逐旗一条 | 哪面旗、标中还是标空 | +| 封印判定 | 每次轮次结束时逐封印一条 | 哪处封印、标中还是标空 | | 轮次结束 | 每轮恰一条 | 这轮怎么结束的(清图 / 耗尽)、下一轮换不换图的建议 | 这套"只发不收"是全项目唯一允许的下游反向接线:订阅方被动接收事实,本系统零依赖下游、不知道谁在听。战斗结算订阅事件流、轮末逐行兑现收益;停手路径的轮次结束事件由[行动经济](行动经济.md)直发,本系统不重复发。 @@ -181,7 +181,7 @@ 一批意图到达 → 按语义序重排(能清图的挖 > 停手 > 其余,同类按提交序) → 逐个执行,轮次结束第一次成立处定赢家,其后意图丢弃 - → 收轮:先把旗判定逐条报完,再报轮次结束 + → 收轮:先把封印判定逐条报完,再报轮次结束 ``` 举证:本节为事务顺序与接口封闭规则,无计算。 @@ -203,10 +203,10 @@ 最小闭环只保留跑通"装板—挖—收轮—兑现—换图"必需的规则: 1. 战斗开始装上新图:校验结构前提,违例拒绝;初始展开免费翻开出生开阔地,小人落位。 -2. 玩家每帧提交一个意图:挖(判棋盘面,请账本按价扣费,开格加连锁并逐格上报;有旗格照挖、旗随挖掘消失)、插旗(按价计费,旗入棋盘,零事件)、移动(免费,已开区一次走到位)。 +2. 玩家每帧提交一个意图:挖(判棋盘面,请账本按价扣费,开格加连锁并逐格上报;有封印格照挖、封印印记随挖掘消失)、封印(按价计费,封印印记入棋盘,零事件)、移动(免费,已开区一次走到位)。 3. 被拒动作带可辨原因、状态不变;批次内轮次结束首次成立处定赢家,其后意图丢弃。 -4. 收轮:先报完在场旗的逐条判定,再报轮次结束(停手路径由行动经济直发)。 -5. 战斗结算订阅事件流逐行兑现;清图或刷新换图时按它回发的指令装新图,旧板旗全量失效,回到第 1 步。 +4. 收轮:先报完在场封印的逐条判定,再报轮次结束(停手路径由行动经济直发)。 +5. 战斗结算订阅事件流逐行兑现;清图或刷新换图时按它回发的指令装新图,旧板封印印记全量失效,回到第 1 步。 ## P1 / P2 后置 @@ -227,14 +227,14 @@ - 数字恒真:任意已开安全格的数字恒等于其 8 向相邻雷数;出生区无雷、数字恒真、初始展开不吞全图三条结构前提任一不满足时,装板被拒绝。 - 初始展开恰等:装板后翻开的格集合恰为"出生 3×3 加连通开阔地"——不止 3×3,也不外扩一圈;全程免费、恒无格面资源(封锁格)、计入清图进度;跨轮不重放。 -- 连锁免费且遇旗即止:一次触发连锁翻开任意多格,扣费恒为首格按价计的一笔;旗格不被链开、不作传播跳板;连锁格计入清图进度、资源资格照常。 +- 连锁免费且遇封印即止:一次触发连锁翻开任意多格,扣费恒为首格按价计的一笔;封印格不被链开、不作传播跳板;连锁格计入清图进度、资源资格照常。 - 挖旗格放行(插旗不可逆批 2026-09-19):有旗格直接挖开被受理——旗随挖掘消失、该旗轮末不判;重复插旗仍被"已有旗"拒绝;兑付改判四情况(标中不发 / 安全格零奖励)归战斗结算。 - 已引爆危险格可通行:挖雷后轮次不结束,小人可站、可经已开区穿行续挖;危险格不计清图、不可再挖再插旗。 - 移动合法且预览同源:目标未开或无已开区连通路径时拒绝;路径预览与实际执行逐格相同;移动免费、零事件。 - 批次仲裁与到达序无关:同一批意图按任意顺序提交,结束路径与结算结果一致;赢家定出后其余意图丢弃——零棋盘效果、零扣费、零事件,且丢弃区别于拒绝。 -- 收轮事件序:先报完全部旗判定,再报轮次结束;轮次结束每轮恰一条,停手路径由行动经济直发、本系统不双发。 +- 收轮事件序:先报完全部封印判定,再报轮次结束;轮次结束每轮恰一条,停手路径由行动经济直发、本系统不双发。 - 拒绝三源可辨:棋盘面非法、资源不足、相位不对三类原因互异可判定;任何拒绝零副作用。 -- 换图重置:清图换图时旧旗先判定后消失;刷新换图时旧旗未判定即失效、零兑付、行动点不返还;新板旗为空、初始展开按新板重来。 +- 换图重置:清图换图时旧封印印记先判定后消失;刷新换图时旧封印印记未判定即失效、零兑付、行动点不返还;新板封印为空、初始展开按新板重来。 - 确定性回放:同一张板、同一份意图序列驱动两次,事件流逐条逐位相同(本系统零随机)。 ## 待办 diff --git a/design/gdd/systems/排雷循环/棋盘生成.md b/design/gdd/systems/排雷循环/棋盘生成.md index b9d7b2c7..1c10d055 100644 --- a/design/gdd/systems/排雷循环/棋盘生成.md +++ b/design/gdd/systems/排雷循环/棋盘生成.md @@ -26,7 +26,7 @@ | 不负责 | 归谁 | |---|---| -| 挖掘、插旗、连锁展开的执行 | [排雷玩法](排雷玩法.md) | +| 挖掘、封印、连锁展开的执行 | [排雷玩法](排雷玩法.md) | | 换图时机与轮次编排 | [战斗结算](../战斗循环/战斗结算.md)(本系统纯被调用) | | 难度数值定多少 | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md)(调参所有权在对方) | | 变异内容与解锁节奏 | [地形变异](地形变异.md)(布置执行位在其自身——战斗初始化第 4 步,不在本管线) | diff --git a/design/gdd/systems/排雷循环/行动经济.md b/design/gdd/systems/排雷循环/行动经济.md index 3b9e2c86..259a69b0 100644 --- a/design/gdd/systems/排雷循环/行动经济.md +++ b/design/gdd/systems/排雷循环/行动经济.md @@ -5,7 +5,7 @@ ## 设计目的 -每场战斗里,玩家真正在花的钱只有一种:行动点(AP)。行动经济就是这本账——每轮发给你固定的行动点,挖格、插旗按统一价目计费(价目见 `game/data/tables/action_economy.tres`),花完这一轮就结束了。没有这本账,"挖这一格值不值"就没有统一的价格语言。 +每场战斗里,玩家真正在花的钱只有一种:行动点(AP)。行动经济就是这本账——每轮发给你固定的行动点,挖格、封印按统一价目计费(价目见 `game/data/tables/action_economy.tres`),花完这一轮就结束了。没有这本账,"挖这一格值不值"就没有统一的价格语言。 它还要给"我不想赌了"一个体面的出口:主动停手能把剩余行动点 1:1 存进储备池,攒够了可以当场换掉整张雷图。推理本身不收钱——连锁展开免费——花钱的只是"兑现"这个动作。 @@ -85,7 +85,7 @@ ### 挖掘期刷新:花储备换新图 -储备池唯一的支出是刷新雷图。玩家在挖掘期经界面入口发起,储备值不低于刷新门槛(rap_refresh_cost,见 action_economy.tres)时扣费,当场换一张新图继续挖。注意刷新不终结这一轮:行动点不重置、本轮剩余行动点保留;但换来的新图不发清图奖励(它又不是清图),旧图上的旗随旧图一起失效(插旗花的钱不退)。 +储备池唯一的支出是刷新雷图。玩家在挖掘期经界面入口发起,储备值不低于刷新门槛(rap_refresh_cost,见 action_economy.tres)时扣费,当场换一张新图继续挖。注意刷新不终结这一轮:行动点不重置、本轮剩余行动点保留;但换来的新图不发清图奖励(它又不是清图),旧图上的封印印记随旧图一起失效(封印花的钱不退)。 每轮最多刷新次数=表值 refresh_cap_per_round(现行 2)(轮内计数,开轮重置),没有冷却,每次独立检查门槛并扣费。已用次数与剩余次数为只读观测量(切片实现在战斗编排器侧计数,HUD 刷新按钮「剩 N 次」文案即其消费方)——客户端可现读,不经可变状态外泄。禁止"攒满就自动刷"——刷新永远是玩家的决定。 @@ -108,31 +108,31 @@ 加成轴是战斗开始的一次性基线抬升,不是逐轮增税;修正队列(上节)与加成轴在开轮时相加兑现,互不挤占。「每战 +1 AP」的强度评估与通关率带重扫义务归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)调参批。 -### 标中旗的兑付约束 +### 封印标中的兑付约束 -插旗标中了危险格,收益在当轮结算兑付(标中 = 危险格被控制、里面怪物被削弱)。兑付受五条硬约束,核心思想是"认雷不认旗": +封印标中了危险格,收益在当轮结算兑付(标中 = 危险格被控制、里面怪物被削弱)。兑付受五条硬约束,核心思想是"认雷不认封印": | 约束 | 含义 | |---|---| | 一次性 | 每颗雷在一场战斗内至多兑付一次,资格随首次兑付消费 | -| 当轮结算 | 旗只是当轮兑付的载体,不囤积到以后 | +| 当轮结算 | 封印印记只是当轮兑付的载体,不囤积到以后 | | 资格认危险格实例 | 挖开重插同一格(旗随挖掘消失),不恢复已消费的资格——堵死"重复计费重插刷收益"的农场(注:拔旗动作已退役,插旗不可逆批 2026-09-19) | | 不逐轮重复 | 同一颗雷的收益不会每轮反复发 | | 换图重置 | 新图的雷是新实例,资格自然重来 | ### 收益直兑与五条经济契约 -扫雷侧的全部收益都以战斗效果直接兑现:挖开安全格给主角加增益、标中旗给怪物加减益、惊动危险格给敌方上增益、清图发奖励。不存在中间货币、不存在折算乘数——折算公式根本不存在。 +扫雷侧的全部收益都以战斗效果直接兑现:挖开安全格给主角加增益、封印标中给怪物加减益、惊动危险格给敌方上增益、清图发奖励。不存在中间货币、不存在折算乘数——折算公式根本不存在。 这本账对下游立了五条经济契约,保证"推理的收益大于盲赌的代价"这条底线在数值上闭合: 1. **单一当量**:所有收益来源用同一张效果对照表归一换算,不允许分源改率。 -2. **标中旗锚**:标中旗的减益档位必须严格高于最低档安全格增益——否则没人愿意插旗。 +2. **封印标中锚**:封印标中的减益档位必须严格高于最低档安全格增益——否则没人愿意封印。 3. **挖掘风险不等式**(2026-10-05 判式换代批重立——迭代14②号卡;原"敌方伏击暴露不等式"2026-09-20 随伏击机制退役作废,惩罚当量对账模型由本条重立承接,详细推导见下方推导节):聚合健康式 + 旗溢价条件二 + β 比值带判读,三层口径并行立(2026-10-04 用户裁 P2)。 4. **清图奖励大于零**,并预留按图类型差异化分支的结构位。 5. **清图支配性**:推到底清图的期望收益,不低于"确定格挖完就弃图刷新"的期望收益——否则清图玩法会被刷新策略淘汰。 -**结论**:五条契约由战斗结算作为唯一对账责任方闭合验收;概率侧由棋盘生成的可推理率参数锚定;条款3 数值层由 β 比值带 [1.2, 2.5] 判读看护(常设重跑入口 `tools/clear_dominance_audit.py`),旗边际结构层由条件二旗溢价接替(机制载体 settlement.flag_hit_premium)。 +**结论**:五条契约由战斗结算作为唯一对账责任方闭合验收;概率侧由棋盘生成的可推理率参数锚定;条款3 数值层由 β 比值带 [1.2, 2.5] 判读看护(常设重跑入口 `tools/clear_dominance_audit.py`),封印边际结构层由条件二封印溢价接替(机制载体 settlement.flag_hit_premium)。 推导: @@ -147,13 +147,13 @@ 下限 0 = 盲挖不为负;上限不设(旧 U_band 删,2026-10-04 grill Q3 裁)—— 收益端通胀防护由 β 比值带的 β_hi 独家承载(同一约束单一承载)。 - 旗边际引理(同池结构定理):危险格与安全格同池 + 极性矩阵同字典 ⇒ 标中旗兑付分布 ≡ 安全格 + 封印边际引理(同池结构定理):危险格与安全格同池 + 极性矩阵同字典 ⇒ 封印标中兑付分布 ≡ 安全格 兑付分布,EV_flag − EV_blind = (q + ρ̂ − 1)·(E_dig + V_mine),符号只由 q + ρ̂ − 1 - 决定 ⇒ 「旗优于盲挖 ⇔ q > 1−ρ̂」,与全部当量表值无关(风险端定价动不了这一支); - 标中旗对「挖已知安全格」的边际恒 ≤ 0(= −(1−q)(E_dig+V_mine))——L2 结构破线层, + 决定 ⇒ 「封印优于盲挖 ⇔ q > 1−ρ̂」,与全部当量表值无关(风险端定价动不了这一支); + 封印标中对「挖已知安全格」的边际恒 ≤ 0(= −(1−q)(E_dig+V_mine))——L2 结构破线层, 由条件二接替。 - 条件二(旗溢价式)——L2 结构破线的正当化条款: + 条件二(封印溢价式)——L2 结构破线的正当化条款: E[标中兑付当量] ≥ (1+δ)·E_dig(u) δ = 旗溢价系数,现行 0.25(provisional,2026-10-04 用户裁 P3);实施形态 = (a) 兑付溢价——标中兑付按同型正向 ×(1+δ)(改战斗结算兑付公式一处,机制载体 @@ -186,7 +186,7 @@ | ρ̂ | 雷率:名义 0.25 与实测幸存雷率(10×10 ≈ 0.129 / 12×12 ≈ 0.157)双口径并报,主表用名义(保守) | board_gen.tres + board_stat_probe 读数 | | q | 玩家对目标格为雷的置信 | 玩家侧行为量(可推理格 q ∈ {0,1}) | | β 带 | V_mine/E_dig 判读带 [1.2, 2.5] | registry clause3 重立条(本批登记) | -| δ | 旗溢价系数 0.25 provisional | settlement.tres flag_hit_premium = 125 | +| δ | 封印溢价系数 0.25 provisional | settlement.tres flag_hit_premium = 125 | ### 配置纪律 @@ -203,12 +203,12 @@ | 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 行动点与储备池常显;刷新入口;清零反馈;动作被拒原因的双源呈现(棋盘非法 vs 资源不足) | | 下游 | [教学引导](../表现与支撑/教学引导.md) | 价目与"储备池战斗结束清零"的教学口径来源 | -账本对外是一组封闭的布尔入口(开轮 / 挖 / 插旗 / 停手 / 刷新 / 结算完成通知 / 战斗结束通知):受理返回真、拒绝返回假且状态不变。相位非法的拒绝附带调试诊断,但不致命中止——进程致命只留给数据配置通道。 +账本对外是一组封闭的布尔入口(开轮 / 挖 / 封印 / 停手 / 刷新 / 结算完成通知 / 战斗结束通知):受理返回真、拒绝返回假且状态不变。相位非法的拒绝附带调试诊断,但不致命中止——进程致命只留给数据配置通道。 ## P0 最小闭环 1. 战斗结算发开轮通知:行动点硬重置为表值,储备池不动,进入可操作状态。 -2. 玩家挖 / 插旗,每个动作过账本按价扣费;连锁展开免费且计入清图进度。 +2. 玩家挖 / 封印,每个动作过账本按价扣费;连锁展开免费且计入清图进度。 3. 玩家可随时停手(剩余行动点 1:1 入库),或储备够门槛时刷新换图(每轮次数上限读 `data/tables/action_economy.tres`)。 4. 结束路径在账本事务内仲裁,只裁一个赢家。 5. 轮末两字段消息发给战斗结算,后者把收益逐行兑现进结算明细。 @@ -231,7 +231,7 @@ |---|---|---|---| | ap_per_round | int [1, 32] | 表值 | 每轮行动点;兼作停手转存的规模旋钮 | | dig_ap_cost | int [1, 8] | 表值 | 挖单格成本(下限 1:为 0 则预算系统失效) | -| flag_place_ap_cost | int [0, 8] | 表值 | 插旗成本 | +| flag_place_ap_cost | int [0, 8] | 表值 | 封印成本 | | rap_refresh_cost | int [1, 64] | 表值 | 刷新门槛;默认等于每轮预算,构成"满预算停手 = 恰好一刷"的基线节拍 | | move_ap_cost | int | 表值(冻结 0) | 移动免费——冻结,非调参项 | | chain_ap_cost | int | 表值(冻结 0) | 连锁免费——冻结,非调参项 | @@ -249,7 +249,7 @@ - 耗尽即收轮:行动点扣到 0 的瞬间轮次结束,此后一切动作请求被拒绝且状态不变。 - 仲裁唯一:最后 1 点行动点挖开最后一个安全格时,判清图(剩余清零 + 换图 + 清图奖励),不判耗尽;输出恰一条。 - 停手 1:1:剩余 3 点停手,储备池加 3,下轮同图继续。 -- 刷新规则:储备不足时刷新被拒绝且状态不变;同一轮第 3 次刷新被拒绝;刷新不重置行动点、不发清图奖励、旧图上的旗失效。 +- 刷新规则:储备不足时刷新被拒绝且状态不变;同一轮第 3 次刷新被拒绝;刷新不重置行动点、不发清图奖励、旧图上的封印印记失效。 - 储备清零:战斗结束信号到达后储备池归 0,账本进入休眠。 - 跨字段校验:任一动作成本配置超过每轮预算时,加载期致命中止。 - 零随机:同一动作序列驱动两个独立账本实例,轮次结束记录与储备轨迹逐项相同。 diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index 8482205c..18d9a2fc 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -102,7 +102,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 数据面 | 刷新时点 | |---|---| -| 棋盘(旗、小人位置) | 意图批次调用返回后重查 | +| 棋盘(封印印记、小人位置) | 意图批次调用返回后重查 | | 行动点 / 储备 | 每次写路径回执后重读 | | 状态效果 | 绑定结算编排完成时点 | | 已开格奖励身份 | 已开格揭显时经身份解析只读回调查询(`query_identity`,组合根注入) | @@ -196,7 +196,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 方向 | 系统 | 接口要点 | |---|---|---| -| 上游 | [排雷玩法](../排雷循环/排雷玩法.md) | 棋盘只读投影(格态、数字、旗、小人)与移动路径查询;玩家意图批次经组合根提交 | +| 上游 | [排雷玩法](../排雷循环/排雷玩法.md) | 棋盘只读投影(格态、数字、封印印记、小人)与移动路径查询;玩家意图批次经组合根提交 | | 上游 | [行动经济](../排雷循环/行动经济.md) | 行动点 / 储备 / 相位只读值;刷新入口可用性预判加返回值兜底 | | 上游 | [战斗结算](../战斗循环/战斗结算.md) | 明细流水是结算明细带的统一数据源(现行 9 类行封闭协议);段序编排信号经组合根接线 | | 上游 | [敌人系统](../战斗循环/敌人系统.md) | 英雄与敌人的只读投影(血量、顺位、摇定动作〔pending_skill/type/name〕、敌方增益 effects、存活——经战斗结算呈现快照;敌人技能池批批 2 定稿:当前拍/行动环进度字段拆除,池与权重不公开) | @@ -270,11 +270,11 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 - 已开 / 未开格态在灰度截图下可逐格分类;已引爆危险格"可通行可读"(已开底加巢穴纹、可作移动目标)。 - 类型微光:微光只在英雄周围 8 格内的未开格显示;出圈即灭、入圈即亮;已开格与封锁格恒无微光;微光呈现不随格是雷是安变化(不泄危险格与安全格)。(迭代 30 卡①实装后转正式验收) - 视野迷雾:棋盘仅菱形灯光区内完整渲染;区外已开格灰显可读、区外未开格不可见;灯光区随角色移动跟随;同一张板同一份动作序列,迷雾开关两种状态下的结算结果逐位一致(纯呈现,零游戏数据改动)。 -- 悬停光标三语义(移动 / 挖 / 旗)随目标切换并高亮目标格;悬停已开格画出合法路径(不可达不显示);可挖域常驻呼吸微光。 +- 悬停光标三语义(移动 / 挖 / 封印)随目标切换并高亮目标格;悬停已开格画出合法路径(不可达不显示);可挖域常驻呼吸微光。 - 一帧内意图整批到达,停手点击终结当帧收集。 - 每次拒绝可感知:棋盘面、资源面、相位三类各有呈现且前两类可区分;停手被改判(本轮已清图)玩家可感知;拒绝反馈图标加文案双通道。 - 结算逐行实时滚出且每行带来源标注;未生效类行聚合计数并带形状冗余;零值行不被吞;效果行的单次贡献与池合成值分示、禁相加误读。 -- 高光三档:标中旗行金框、清图奖励行金框、完美排雷全屏喝彩级——庆祝不打在空兑现上(首份即零兑付则不发高光)。 +- 高光三档:封印标中行金框、清图奖励行金框、完美排雷全屏喝彩级——庆祝不打在空兑现上(首份即零兑付则不发高光)。 - 状态槽显示图标加层数加剩余结算次数,悬停见来源;极性按键级表呈现(金满框 / 红缺框),空态整排隐藏、数据框上移补位;战斗结束全清有微文案。 - 敌人呈现(站桩立绘,2026-09-20 全站桩拍板后载体由敌人卡改为无框立绘+底座,义务面平移不重述):意图占位 = 本拍摇定结果的动画占位(敌人技能池批三档可见性——普通攻击零表示、特殊技类型级提示〔攻/防系两型〕,不预告技能名与数值、池与权重不公开)且挖掘期全程可见、映射跨局恒定、顺位可读、血量数字可读、敌方共享层数各立绘同值(血条悬浮头顶、状态小图标挂血条正下方);死亡灰化加碎裂退场(禁止瞬间消失)且就地更新不丢灰化态。 - 终局:胜利金蜡封、失败暮蓝氛围层(明度不变);储备清零与状态全清两反馈不合并、时序不倒挂(关卡末清库反馈义务载体 = 秘宝背包〔关卡域库存恒空机械惰性承载,拆线归实装批——见「轮次生命周期」同款节注于战斗结算〕,随秘宝 P0 落地补验收)。 diff --git a/design/gdd/systems/表现与支撑/存档序列化.md b/design/gdd/systems/表现与支撑/存档序列化.md index ea9433d7..32765ff5 100644 --- a/design/gdd/systems/表现与支撑/存档序列化.md +++ b/design/gdd/systems/表现与支撑/存档序列化.md @@ -54,7 +54,7 @@ SaveManager 不依赖任何玩法系统就能工作:它是被动的承载方 第一条边界:数据表与存档分家。表是配方,所有玩家一致;存档是玩家进度,每人不同。存档只记进度事实(得了什么、解锁了什么),不把数值配方写进存档——数值改版后,旧存档仍按加载时的数据表解释。这条边界从"数值单一事实源在数据表"的纪律直接推出,细节以[数据配置](数据配置.md)为准。 -第二条边界是反面清单:局内资源不入存档。行动点、储备行动点、道具库存、生命账本、GP(金币)全部单局清零——各归各的系统管,没有局内数值需要持久化。若未来某局内资源要开放跨局携带(如储备行动点跨战斗携带),须修订其池规则并向本系统登记持久化归属,禁止静默超域。 +第二条边界是反面清单:局内资源不入存档。行动点、储备行动点、道具库存、生命账本、GP 全部单局清零——各归各的系统管,没有局内数值需要持久化。若未来某局内资源要开放跨局携带(如储备行动点跨战斗携带),须修订其池规则并向本系统登记持久化归属,禁止静默超域。 **唯一豁免 = `breakpoint` 断点域**(2026-09-29 迭代 8 卡①顺带修订):断点是冒险进行中的瞬态快照,不是跨局携带——里面的生命/GP/道具库存只在「续玩上局」时还原进局内,冒险收束(通关/失败/放弃)即整域清除,永远不会渗进永久进度。反面清单的管辖对象因此收窄为 `meta` 永久进度域(冒烟域界扫描顺带收窄到 meta 域);断点域自身的字段口径归[冒险结构](../冒险循环/冒险结构.md)登记。 diff --git a/design/gdd/systems/表现与支撑/教学引导.md b/design/gdd/systems/表现与支撑/教学引导.md index e64db54c..62985068 100644 --- a/design/gdd/systems/表现与支撑/教学引导.md +++ b/design/gdd/systems/表现与支撑/教学引导.md @@ -5,7 +5,7 @@ ## 设计目的 -这游戏有两层玩法——扫雷推理和自动战斗——而"扫雷攒下的因,逐行兑现成战斗的果"这条因果线,是新手最容易断掉的一环。教学引导的任务,就是让玩家不读说明书也能自己接上这条线:学会挖、插旗、移动三个基本动作,看懂结算明细在回答他刚才的哪一步棋,知道"停手"和"刷新"这两个风险管理出口的存在。 +这游戏有两层玩法——扫雷推理和自动战斗——而"扫雷攒下的因,逐行兑现成战斗的果"这条因果线,是新手最容易断掉的一环。教学引导的任务,就是让玩家不读说明书也能自己接上这条线:学会挖、封印、移动三个基本动作,看懂结算明细在回答他刚才的哪一步棋,知道"停手"和"刷新"这两个风险管理出口的存在。 ## 系统范围 @@ -53,7 +53,7 @@ HUD 框架定稿时已为教学留好两个承载位,本系统的内容将来 | 条目 | 来源 | 要教的事 | |---|---|---| -| 行动点价目 | [行动经济](../排雷循环/行动经济.md) | 挖 / 插旗各花多少、移动与连锁免费 | +| 行动点价目 | [行动经济](../排雷循环/行动经济.md) | 挖 / 封印各花多少、移动与连锁免费 | | 储备池清零提示 | [行动经济](../排雷循环/行动经济.md) | 必须说清"储备行动点在战斗结束时清零",防止"攒的钱凭空没了"的误读 | | 旗是一次性承诺的首遇提示 | [排雷玩法](../排雷循环/排雷玩法.md)(插旗不可逆批 2026-09-19) | 经典扫雷玩家会习惯性右键拔旗——本作旗不能拔,插上就是承诺;想改主意就左键直接挖开(安全格零奖励、危险格吃挖雷惩罚)。每场冒险提示一次,非模态 | | chord 不存在的首遇提示 | [HUD 框架](HUD框架.md)(承接排雷玩法的呈现义务) | 经典扫雷玩家会习惯性双击数字格——本作没有 chord,点数字格 = 移动小人。每场冒险提示一次,非模态 | @@ -97,7 +97,7 @@ HUD 框架定稿时已为教学留好两个承载位,本系统的内容将来 待设计。方向性判据(供未来定稿参考): -- 玩家不看任何外部说明,能完成挖 / 插旗 / 移动三个动作,并说出每个动作花多少行动点。 +- 玩家不看任何外部说明,能完成挖 / 封印 / 移动三个动作,并说出每个动作花多少行动点。 - 玩家能在结算明细里指出至少一行收益来自他刚才的哪一步操作。 - 首次提示不重复轰炸:同一提示每场冒险至多出现一次。 diff --git a/design/gdd/systems/表现与支撑/音频.md b/design/gdd/systems/表现与支撑/音频.md index fe188a79..aaef039d 100644 --- a/design/gdd/systems/表现与支撑/音频.md +++ b/design/gdd/systems/表现与支撑/音频.md @@ -34,7 +34,7 @@ ## 在核心循环中的位置 ``` -扫雷段(挖格、插旗、惊动危险格的即时反馈)──▶ 轮末结算段(逐行兑现的结算反馈)──▶ 终局(胜负反馈) +扫雷段(挖格、封印、惊动危险格的即时反馈)──▶ 轮末结算段(逐行兑现的结算反馈)──▶ 终局(胜负反馈) 音频不是循环里的一段,而是贴在循环各段上的听觉反馈层 ``` @@ -150,7 +150,7 @@ 2. 音效清单成品与优先级:把挂点候选逐个定成正式音效——哪些先做、哪些合并、哪些不做。 3. 混音与总线方案:音乐与音效怎么分层、相对音量关系怎么定。 4. 与减动效选项的关系:呈现侧已承诺减动效——音频侧是否配对应的减噪、动态范围收缩,未拍板。 -5. 四个基础反馈位之外的基础音效(插旗、移动、清图奖励等)尚未见挂点登记——是否补登记、归谁提出,未定。 +5. 四个基础反馈位之外的基础音效(封印、移动、清图奖励等)尚未见挂点登记——是否补登记、归谁提出,未定。 ## 版本历史 diff --git a/design/gdd/systems/跨局循环/秘宝.md b/design/gdd/systems/跨局循环/秘宝.md index 17cb178f..d3500780 100644 --- a/design/gdd/systems/跨局循环/秘宝.md +++ b/design/gdd/systems/跨局循环/秘宝.md @@ -55,7 +55,7 @@ | 代号 | item_id | 一句话 | 写哪本账/时点 | 解锁(迭代 22 实态) | 效果实现 | |---|---|---|---|---|---| | 天眼 | sky_eye | 每关一次:选 3×3,危险格显示且安全格直接开 | 真视+开格复合/主动 | 条件:通关 ≥3 且 Boss 击杀 ≥4 provisional | reveal_tiles+safe_dig(关卡级充能;安全格开格按普通挖格全额兑付免 AP——C5 裁) | -| 信标网络 | beacon_network | 插旗不限相邻(可对任何未开格插旗) | 旗的可达性规则/常时 | 条件:真视类工具累计使用 ≥10 provisional(vision_used 生涯计数域) | 参数面 flag_range_free | +| 信标网络 | beacon_network | 封印不限相邻(可对任何未开格封印) | 封印的可达性规则/常时 | 条件:真视类工具累计使用 ≥10 provisional(vision_used 生涯计数域) | 参数面 flag_range_free | ## 设计骨架(可设计方向 × 代价空间) @@ -141,7 +141,7 @@ 凡是"直接告诉你危险格在哪"的效果(下文称真视),一次最多照亮 3×3 的窗口,任何道具都不允许全图看雷。全图级范围只留给恢复推理原料类的效果——显影、预读这类把已有事实交还玩家的信息,允许大范围(原则上被允许,见不做清单的边界锚)。这条限制写进数据校验:任何真视类道具的目标域字段超过 3×3,加载数据时直接返回错误并拒绝——护栏由加载期强制,不靠运行时拦截。 -**道具的收益在"少赌",不在"单赌更安全"**:信息类道具不改变棋盘,只减少玩家必须盲赌的次数。真视把 k 格移出盲挖候选域——这 k 格从"要赌"变成"必避或必旗"的确定决策;情报类道具抬高棋盘可推理率,收缩"只能赌"的格子池。单次盲赌的命中率会随格子池收缩而上升,这是正常读数——收益按"赌的次数变少、期望踩雷下降"计,不按单次命中率计。 +**道具的收益在"少赌",不在"单赌更安全"**:信息类道具不改变棋盘,只减少玩家必须盲赌的次数。真视把 k 格移出盲挖候选域——这 k 格从"要赌"变成"必避或必封印"的确定决策;情报类道具抬高棋盘可推理率,收缩"只能赌"的格子池。单次盲赌的命中率会随格子池收缩而上升,这是正常读数——收益按"赌的次数变少、期望踩雷下降"计,不按单次命中率计。 ``` 残余盲赌安全格数 n_s = (1 − ι) × |S| @@ -176,7 +176,7 @@ 所有会失败的情况都被前两步拦下,后两步在合法输入下不会失败——"产生效果"和"消耗道具"永远成对发生。带两个效果的稀有道具,施加顺序钉死为先空间效果、后加行动点;定义表里效果的书写顺序不承载运行时语义。 -用道具不扣行动点:成本在装配时已经付过——它占了一格同调位;挖格、插旗的价格不受任何影响。道具只产生信息与行动点、不产生动作:使用入口仅线香/天眼两主动件——不会自动替你挖,也不会自动替你插旗(试炼镐的自动兑付是行为转化的兑付、非使用动作——它不挖格不插旗,只在玩家自己挖格时按开格数兑行动点)。真视尤其要说清:它是信息不是保护,被标出的危险格挖开照样惊动;靠真视插旗仍按标准动作价计费(价目见 action_economy.tres),标中收益照走既有结算路径。本节纯流程,无计算。 +用道具不扣行动点:成本在装配时已经付过——它占了一格同调位;挖格、封印的价格不受任何影响。道具只产生信息与行动点、不产生动作:使用入口仅线香/天眼两主动件——不会自动替你挖,也不会自动替你封印(试炼镐的自动兑付是行为转化的兑付、非使用动作——它不挖格不封印,只在玩家自己挖格时按开格数兑行动点)。真视尤其要说清:它是信息不是保护,被标出的危险格挖开照样惊动;靠真视封印仍按标准动作价计费(价目见 action_economy.tres),标中收益照走既有结算路径。本节纯流程,无计算。 ### 信息住在哪:整图叠加层,随图消亡 @@ -250,7 +250,7 @@ playtest 预警(预注册,归难度曲线与Boss): - 零消耗拒绝:目标不合法(例如点在已挖开的格子上)时道具不消耗、装配位不变、反馈可辨认;整图零信息时图标置灰、入口禁用。 - 边缘受理:3×3 窗口中心格贴板角时照常受理,按窗口与棋盘的交集(角 4 格)结算并正常消耗。 - 顺序钉死:组合道具先空间效果、后加行动点;任何合法使用中"产生效果"与"消耗"成对发生。 -- 使用零扣费:使用前后,除加量道具自身的入账外行动点读数不变;挖格与插旗价格不受影响。 +- 使用零扣费:使用前后,除加量道具自身的入账外行动点读数不变;挖格与封印价格不受影响。 - 随图消亡与充能账:换图、弃图刷新、战斗结束时叠加层清空;主动件充能耗尽即不可用,充能每冒险开始重置。 - 零随机与零特判:同一操作序列重放两遍,装配与充能账、叠加层投影逐位相同;排雷玩法代码中无为本系统而写的分支。 - 装配不可变:装配只在冒险开始前于营地配置,冒险中不存在任何更换途径(拾取与效果均不产生装配变化,2026-10-11 用户裁)——验收含「冒险全程装配快照逐位不变」断言。 diff --git a/design/gdd/systems/跨局循环/锻造工坊.md b/design/gdd/systems/跨局循环/锻造工坊.md index 9aa45c71..99375ce3 100644 --- a/design/gdd/systems/跨局循环/锻造工坊.md +++ b/design/gdd/systems/跨局循环/锻造工坊.md @@ -96,7 +96,7 @@ ### 经济 -- **纯钥石(5b 裁)**:与现役属性锻造、天赋树(树全钥石单币)、同调刷新升级同币同柜。原案语义是"攻击力提升改造"——同一笔钱换个花法。金币(GP)=局内一次性货币、局内清零不入存档、与钥石永不互兑,两币分工是拍板条款,不引入局外金币余额域或第三货币。(用户裁定注:当前没有其他材料,钥石就是统一货币;**后续若要分出专用币或材料,届时再重构设计,不预先建面**。) +- **纯钥石(5b 裁)**:与现役属性锻造、天赋树(树全钥石单币)、同调刷新升级同币同柜。原案语义是"攻击力提升改造"——同一笔钱换个花法。GP = 局内一次性货币、局内清零不入存档、与钥石永不互兑,两币分工是拍板条款,不引入局外 GP 余额域或第三货币。(用户裁定注:当前没有其他材料,钥石就是统一货币;**后续若要分出专用币或材料,届时再重构设计,不预先建面**。) - **几何递增定价**:每级价格 = 基础价 × 150%^(已购级数)(历史考古参数:单次 20 钥石、公比 150%——`meta.tres:82-84` 退役批注;forge_products 行族已随迭代 21 T5 退役、无现役计价字段可沿,实装投值归 M4 从零标定);路线解锁 = 一次性解锁价(量纲 ≈ 中段几级锻造花费)。全部终值归 M4。 - **零材料经济(5c 裁)**:不引入账号层锻造材料。现役效果引擎的 grant_material 是**局内**材料计数器(如雷区图谱),不是账号层库存;账号层材料=全新经济面(存档域/获取渠道/囤积规则全套新建),原案全文只字未提材料,武器差异化的价值轴是类型(与预留的特效位)不是采集刷料。 diff --git a/design/gdd/ux/battle.md b/design/gdd/ux/battle.md index 81d9cd84..9983ae1c 100644 --- a/design/gdd/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -13,7 +13,7 @@ ## Purpose & Player Need -战斗屏是 Dungeon Sweeper 的核心玩法屏——游戏的全部 agency(排雷规划)都发生在这里。玩家在此屏完成完整轮次循环:**用本轮 AP 在扫雷图上挖掘/标旗 → 主动停手或 AP 耗尽 → 观看轮末自动战斗结算逐行兑现 → 下一轮**。 +战斗屏是 Dungeon Sweeper 的核心玩法屏——游戏的全部 agency(排雷规划)都发生在这里。玩家在此屏完成完整轮次循环:**用本轮 AP 在扫雷图上挖掘/封印 → 主动停手或 AP 耗尽 → 观看轮末自动战斗结算逐行兑现 → 下一轮**。 一句话目的:**让"我算对了"的推理过程与它的战果兑现同屏可见、互为因果。** @@ -80,9 +80,9 @@ 本屏必须传达的全部信息,按注视优先级分五层: -1. **扫雷图本体**(第一注视点,挖掘期占视觉预算大头):两格态(已开格 / 未开格——排雷玩法×6② 一眼可辨)、数字、旗、小人、可挖域(8 向相邻常驻指示)、变异纹理 +1. **扫雷图本体**(第一注视点,挖掘期占视觉预算大头):两格态(已开格 / 未开格——排雷玩法×6② 一眼可辨)、数字、封印印记、小人、可挖域(8 向相邻常驻指示)、变异纹理 2. **本轮行动资源**:AP 余量(决定还能挖几格)、RAP 池(弃图刷新货币)、停手/弃图刷新按钮——紧贴棋盘上缘(动作发生地) -3. **战果兑现面**(结算期为第一注视点):敌人血条变化、逐行结算明细、高光(完美排雷/标中旗) +3. **战果兑现面**(结算期为第一注视点):敌人血条变化、逐行结算明细、高光(完美排雷/封印标中) 4. **规划面**(边缘注视,常读):攻击值与修正来源(C 区数据框)、敌人意图徽标与顺位(B 区站桩);HP 与状态效果由单位本体(B 区站桩)唯一承载——数据框不重复展示 5. **进度语境**:轮次/阶段指示、图例入口(关卡节点进度常驻关卡画面,战斗屏不承载——见 Navigation Position) @@ -132,7 +132,7 @@ **布局决策 1(本 spec 最大决策,用户拍板)**:**常驻双舞台分屏**——战斗画面与扫雷图同屏常驻,挖掘期敌人待机可见,结算期不切场景。 - 备选(已否决):Peglin 式"结算时才切入独立战斗场景"——切换打断推理心流,且资产管线成本翻倍 - **对战斗表现双舞台陷阱的输入**:game-concept 登记的"战斗发生在棋盘上还是独立场景"悬念,由本布局裁决为**第三形态:同屏双舞台**。战斗表现定稿前的"战斗表现美术测试"(一屏样张)应按此布局出样 -- 敌人不占格(敌人系统已锁)与本布局自洽:敌人实体只存在于 B 区,棋盘永远只有数字/旗/小人/变异 +- 敌人不占格(敌人系统已锁)与本布局自洽:敌人实体只存在于 B 区,棋盘永远只有数字/封印印记/小人/变异 **棋盘格尺寸公式**:`cell = floor(min(D宽−padding, D高−AP条−padding) / N)`,N∈{10,12,13,14}(棋盘生成 D1–D4 行;13×13/14×14 随第三关内容批扩板)。1280×800 下 12×12 → 36px,10×10 → 45px(格边长三方取值不一致已登记 06,扩板定档时统一处置)。数字字号 ≥ 格高的 50%,像素字体整数倍缩放(canvas_items stretch 保证清晰)。 @@ -220,7 +220,7 @@ | **结算阶段** | round_end 触发(AP 尽/停手/清图) | D 区锁输入(棋盘去饱和 + 金橙色相偏移,明度不变,数字保持全对比);B 区播放五段编排演出(授予段 → 增益/减益段 → 战斗段 → 衰减段 → 判定段,战斗结算 段序冻结);明细带展开 84px 逐行滚动;阶段指示→"结算中";能量 7/10 | | **清图瞬间** | 全部安全格开完 | 金粒喷泉 + 彩纸 3–5s 即收(§2.3);清图奖励行强调呈现(H2,地图战斗资源×④——金框高亮行);随后换新图 install | | **完美排雷高光** | 战斗结算高光判定(全图标中/零误标类) | 全屏喝彩级反馈(§2.2 最高档):金光带加倍扫射 + 「完美排雷 ×2」横幅——P2 爆发兑现节点(创意风险 #2 落点) | -| **标中旗高光** | flag_judged{hit=true} | 该旗化暴击弹道加重 + 明细行金框——chord 缺席的即时兑现补偿(创意风险 #3 落点) | +| **封印标中高光** | flag_judged{hit=true} | 该印记化暴击弹道加重 + 明细行金框——chord 缺席的即时兑现补偿(创意风险 #3 落点) | | **敌人死亡呈现** | 敌 hp=0(流水行击杀标记) | 该敌人立绘血条归零 → 立绘灰化 + 碎裂退场(**禁瞬消**——敌人系统资产下限「死亡瞬间须可辨识、禁止直接消失」,同等 blocking);战斗段短路的重击被掐灭不产行动明细行,由行序可推断(战斗结算);动画密度归战斗表现,呈现语义在本 spec | | **胜利终局** | verdict=win | 金蜡封落于**扫雷图区中央**(§2.4 字面锚定),全屏暖白金 overlay;判定行 + 「下一节点」;明细回看入口;状态图标行全清可见反馈(增益状态×4④——B 区主角站桩图标逐枚化光收回 + 微文案「状态随战斗结束消散」,防「我的增益哪去了」误读) | | **失败终局** | verdict=lose(hero hp=0,战斗段短路) | 明度不变的暮蓝 #5A6C8C 氛围 overlay(全作唯一暮蓝档);小人坐砖掸灰、插过的旗逐面化光点收回(§2.5);判定行 +「返回」(明细回看已随 P-C7 退役——回看归「生涯」);状态图标行全清可见反馈(增益状态×4④,同胜利) | @@ -252,13 +252,13 @@ | 胜利 overlay | 下一节点 | 左键 | → 关卡画面(选路枢纽)/ 关卡结算(末节点) | LevelRunner 推进 | | 失败 overlay | 返回 | 左键 | → 存档/营地 | 冒险终结 | -**单意图帧纪律**(排雷玩法×6⑥):一帧内 collected 意图整批提交,stop 点击终结当帧收集;F4 语义序仲裁为防御性兜底。悬停预承诺三态光标:移动(箭头)/挖(镐)/旗(旗形)——左键双义(移动 vs 挖)的消歧完全依赖格态一瞥可辨 + 光标区分(误挖不可逆的感知保险)。 +**单意图帧纪律**(排雷玩法×6⑥):一帧内 collected 意图整批提交,stop 点击终结当帧收集;F4 语义序仲裁为防御性兜底。悬停预承诺三态光标:移动(箭头)/挖(镐)/封印(印记形)——左键双义(移动 vs 挖)的消歧完全依赖格态一瞥可辨 + 光标区分(误挖不可逆的感知保险)。 **复合意图(排雷玩法评估项留痕)**:点击远格 = 自动 move+dig 的两击摩擦消解——**MVP 不做**(留痕 2026-09-12:免费移动高频,两击摩擦符合 P4 ≤2 观测假设;排雷玩法 L298 评估项)。 **可挖域常驻指示**:小人 8 向相邻未开格呼吸微光(§2.1 唯一在动的元素);不可挖域(非相邻)悬停显示禁止光标 + 首次 toast 提示「需先走近(点击已开格移动,免费)」。 -**chord 肌肉记忆首遇提示**(排雷玩法×6③):经典扫雷玩家首日尝试双击快开时,非模态 toast 每 run 一次:「本作无双击快开——插旗后轮末自动判定标中;点数字格可移动小人」(含排雷玩法登记锚点「点击数字格 = 移动小人」)。文案定稿权归实现期文案 pass。 +**chord 肌肉记忆首遇提示**(排雷玩法×6③):经典扫雷玩家首日尝试双击快开时,非模态 toast 每 run 一次:「本作无双击快开——封印后轮末自动判定标中;点数字格可移动小人」(含排雷玩法登记锚点「点击数字格 = 移动小人」)。文案定稿权归实现期文案 pass。 --- @@ -340,9 +340,9 @@ - **源语言中文(CJK)**:运行时默认字体无 CJK 字形——**CJK 字体随包为硬性前置**(已锁),实现 AC 覆盖 - **按钮文案单行约束**:「停手」「弃图刷新」——按钮宽度按 4 汉字上限设计;译为英文("Hold"/"Reroll")不超 1.6× 不破版;德语长词("Aufgeben+Neu"类复合词)风险 HIGH——弃图刷新按钮允许两行或图标+缩写 -- **明细带行文案**:来源标注格式「{行为} {值} → {目标}(来源)」为模板插值,最长 token = 来源标签(4 汉字,如「清图奖励」「标旗未中」——settlement source_label_map 封闭枚举);行模板预留 40% 膨胀宽度(固定槽高 + clip 兜底) +- **明细带行文案**:来源标注格式「{行为} {值} → {目标}(来源)」为模板插值,最长 token = 来源标签(4 汉字,如「清图奖励」「封印未中」——settlement source_label_map 封闭枚举);行模板预留 40% 膨胀宽度(固定槽高 + clip 兜底) - **数字格式**:全部整数,无本地化格式需求;AP 点阵为图形载体不依赖文本 -- **术语表锚定**:旗/雷/停手/弃图刷新/轮次/结算 已在 GDD 体系内定名,译文须同步 registry terminology(五词条先例) +- **术语表锚定**:封印/雷/停手/弃图刷新/轮次/结算 已在 GDD 体系内定名,译文须同步 registry terminology(五词条先例) --- @@ -353,13 +353,13 @@ - [ ] 1280×800 与 16:9 全屏(canvas_items/expand)下三区(B/C/D)无遮挡、无重叠、无内容裁切(棋盘 12×12 全部格子 + 数字完整可见) - [ ] 进入战斗屏 ≤500ms 内可交互(棋盘 install 淡入完成后首格可点);同屏 draw calls < 200(technical-preferences 预算) - [ ] 两种格态(已开格 / 未开格)灰度截图下一眼可辨(排雷玩法×6②) -- [ ] 悬停光标区分移动/挖/旗三语义;可挖域(8 向相邻)常驻指示;非相邻格悬停显禁止反馈(排雷玩法×6③) +- [ ] 悬停光标区分移动/挖/封印三语义;可挖域(8 向相邻)常驻指示;非相邻格悬停显禁止反馈(排雷玩法×6③) - [ ] 已引爆危险格呈"可通行可读"(排雷玩法×6④) - [ ] 全部数字对所在格底对比 ≥4.5:1;明度分层规则无违例(art-bible §2/§4.1,v3.0——状态区分不走明度,格底功能分档合法) **交互与反馈** -- [ ] 挖/移/旗/停手/刷新全部操作纯鼠标可完成;stop 意图经 `settle_batch` 提交(代码走查 + 探针断言) +- [ ] 挖/移/封印/停手/刷新全部操作纯鼠标可完成;stop 意图经 `settle_batch` 提交(代码走查 + 探针断言) - [ ] 每次拒绝(棋盘面/资源面/相位)玩家可感知且两源可区分;voided(至少 stop 作废)可感知(排雷玩法×6⑥、行动经济双源) - [ ] 弃图刷新消耗 RAP 8 点、本轮上限 2 次可见(按钮文案实时「剩 N 次」;上限已随行动经济 2026-09-12 修订生效);RAP<8 资源面拒绝可见(行动经济 EC13);确认交互与常规确认不同位;换图后 AP 不重置、剩余次数扣减可见(**上游已修订受理——2026-09-12 布局决策 4 落稿**) - [ ] battle_over 时 RAP 清零有可见反馈(行动经济);~~关卡收束清库反馈~~(义务随秘宝过渡形态退役消解——现行 = 营地同调装配整局生效,秘宝.md) @@ -375,7 +375,7 @@ - [ ] 零合法板(棋盘生成 EC5 降级)出现时玩家侧诚实提示(toast,非静默) - [ ] 效果行 value 为单次贡献值,禁止与 pool_value(池合成值)相加呈现;零值伤害行可见不被吞;衰减行按聚合计数呈现(战斗结算 呈现细则) - [ ] 未生效类行(奖励未生效)携带形状冗余(icon/划线),非色相独载 -- [ ] 奖励徽章绘制优先级:旗之下、变异纹带之上、不进数字区;拾取瞬间 tier 档位可读(地图战斗资源 H1) +- [ ] 奖励徽章绘制优先级:封印印记之下、变异纹带之上、不进数字区;拾取瞬间 tier 档位可读(地图战斗资源 H1) **场景级测试**(旧版状态记录 entry 17②③,缺项即 blocking) diff --git a/design/gdd/ux/interaction-patterns.md b/design/gdd/ux/interaction-patterns.md index a3e61f41..24c1026c 100644 --- a/design/gdd/ux/interaction-patterns.md +++ b/design/gdd/ux/interaction-patterns.md @@ -106,7 +106,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Description**: 左键双义(已开格=移动 / 未开相邻格=挖)的消歧完全依赖格态一瞥可辨 + 悬停光标区分——**误挖不可逆**(1 AP + 可能触雷)的感知保险。 **Specification**: -- 光标三态:移动(箭头)/挖(镐)/旗(旗形)——按悬停格态与键位自动切换 +- 光标三态:移动(箭头)/挖(镐)/封印(印记形)——按悬停格态与键位自动切换 - 目标格边框高亮常驻 - 可挖域常驻指示:小人 8 向相邻未开格呼吸微光(挖掘期唯一在动元素——art-bible §2.1) - 非相邻格:禁止光标 + 首次 toast「需先走近(点击已开格移动,免费)」 diff --git a/design/gdd/ux/level-map.md b/design/gdd/ux/level-map.md index de08e8ed..1b6c0482 100644 --- a/design/gdd/ux/level-map.md +++ b/design/gdd/ux/level-map.md @@ -73,7 +73,7 @@ | 组件 | 类型 | 内容 | 交互 | 现有实现锚 | |---|---|---|---|---| | 关卡名标签 | 文本 | `level_row.display_name`(关卡表行读数) | 只读 | 新建(现行标题位升级) | -| GP 常驻徽章 | 直角细线数据框 | 金币图标 + 数字(`runner.gp`,冒险钱包读数;刷新经 `wallet_changed` 信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板落地面) | +| GP 常驻徽章 | 直角细线数据框 | GP 图标 + 数字(`runner.gp`,冒险钱包读数;刷新经 `wallet_changed` 信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板落地面) | | 节点图画布 | 自绘 Control | 节点图标(五键 20px 烘焙,双色墨制)+ 编号、通道折线、节点态着色、Boss 紫赤描边+深墨环(BOSS_PURPLE——2026-09-26 封印紫批语义:紫赤本色) | 悬停预承诺 / 点击提交选路(唯一通道) | ✅ level_map_screen.gd `_draw_graph`(视觉终稿已落码——迭代 4 T2/T3) | | 状态数据框组 | 直角细线数据框 ×3 | 生命(当前/上限 + 迷你血条)、属性(攻击 / 护甲 AC 有效值 + 加成角标)、本关加成(加算区增量列表,零加成隐藏) | 只读 | 新建(2026-09-27 拍板:底栏状态展示) | | 放弃冒险按钮 | 按钮(危险红族) | 「放弃冒险(同失败结算——已获大奖励保留)」;二次确认态已拍板(见布局决策 3) | 点击(首击转确认态、二击提交) | ✅ level_map_screen.gd(可见性归组合根,仅冒险模式开) | diff --git a/design/gdd/ux/shop.md b/design/gdd/ux/shop.md index 1f9e368c..e80686ad 100644 --- a/design/gdd/ux/shop.md +++ b/design/gdd/ux/shop.md @@ -6,11 +6,11 @@ ## 定位 -商店覆盖层是商店房节点的兑付呈现面(**冒险-关卡中循环节点功能**):行进至商店房打开,玩家用 GP(显示名「金币」)在令牌级货架上购买,离开后兑付确认回选路。现行 = pool 模式(货架与三选一共享令牌池);legacy 三商品卡模式保留为 shop=off 对照形态。本 spec 只锁呈现;编排与定价归机制文档。 +商店覆盖层是商店房节点的兑付呈现面(**冒险-关卡中循环节点功能**):行进至商店房打开,玩家用 GP(显示名「GP」)在令牌级货架上购买,离开后兑付确认回选路。现行 = pool 模式(货架与三选一共享令牌池);legacy 三商品卡模式保留为 shop=off 对照形态。本 spec 只锁呈现;编排与定价归机制文档。 ## 布局与交互 -- 模态覆盖层(dim + 居中):标题「商店」/ 金币余额(GP 读数)/ 令牌级货架卡(进店自共享池抽 3 张:显示名·效果·现价——六行池面含回复与专长凭证;买一件 = 池少一件、货架随即全架重抽)/ 购买按钮(余额不足禁用置灰——pattern 8 禁用态即理由)/ 刷新按钮(GP 付费刷新,价 = ceil(20×1.8^本次进店已付费刷) provisional,余额不足禁用)/ 离开按钮。 +- 模态覆盖层(dim + 居中):标题「商店」/ GP 余额读数/ 令牌级货架卡(进店自共享池抽 3 张:显示名·效果·现价——六行池面含回复与专长凭证;买一件 = 池少一件、货架随即全架重抽)/ 购买按钮(余额不足禁用置灰——pattern 8 禁用态即理由)/ 刷新按钮(GP 付费刷新,价 = ceil(20×1.8^本次进店已付费刷) provisional,余额不足禁用)/ 离开按钮。 - 购买意图 `buy_requested` 经组合根转发 runner(pool 模式载荷 = kind_id);成功后货架整架重建(买 1 全重抽反馈)。刷新意图 `refresh_requested` 经组合根转发 presenter。 - 离开 → 关卡画面兑付确认回选路(零自动推进)。 - 刷新与货架口径(2026-10-04 P-C2+Q2 裁决,SR-1 落码):基础免费 0 次 + GP 付费刷新 + 池源同源(与三选一同一令牌账本)——原「无独立刷新、全陈列」裁决随该批被推翻;天赋侧「刷新次数」增益预留 free_count 位(06 登记条在册)。 diff --git a/design/gdd/术语表.md b/design/gdd/术语表.md index 2713f312..46da6ea8 100644 --- a/design/gdd/术语表.md +++ b/design/gdd/术语表.md @@ -7,11 +7,11 @@ | 术语 | 定义 | |---|---| | 棋盘 | 一局扫雷游玩的格子区域,单局内生成(见[棋盘生成](systems/排雷循环/棋盘生成.md)) | -| 危险格 | 有惩罚的格子——挖开会触发惩罚(惊动则怪物倾巢而出;被旗控制则化险为利)(原「雷格」(机制名)/「惩罚格」(界面名)统一于此,2026-10-11 用户裁;同日补裁无类型划分) | +| 危险格 | 有惩罚的格子——挖开会触发惩罚(惊动则怪物倾巢而出;被封印控制则化险为利)(原「雷格」(机制名)/「惩罚格」(界面名)统一于此,2026-10-11 用户裁;同日补裁无类型划分) | | 安全格 | 没有惩罚的格子——挖开安全并获得其上信息与收益 | | 整图 | 单张棋盘(的整个范围)——原「整图」退役(2026-10-11 用户裁)。例:整图叠加层、整图作用域 | | 叠加层(整图叠加层) | 秘宝产生的信息的自持容器:按效果分类的格集,随图消亡、不回写棋盘(见[秘宝](systems/跨局循环/秘宝.md)) | -| 旗 / 控制 | 插旗动作的机制名/玩家名:旗插在危险格上为「标中」(危险格被控制、化险为利),插错为「标空」 | +| 封印 / 控制 | 封印动作的机制名/玩家名:封印印记落在危险格上为「标中」(危险格被控制、化险为利),封错为「标空」(原「旗 / 控制」,2026-10-18 用户裁:「旗」概念不存在——动作=封印、印记=封印印记) | | 真视 | 直接告诉玩家某范围内哪些格是危险格的效果(秘宝承重契约:一次最多 3×3,见[秘宝](systems/跨局循环/秘宝.md)核心规则) | | 类型微光 | 棋盘上按格子类型显示的提示光效(视野参数控制其显示范围) | | 换图 / 弃图刷新 | 清完一图进入下一图 / 花储备放弃当前图重开一张(代价见[行动经济](systems/排雷循环/行动经济.md)) | @@ -25,7 +25,7 @@ | AP(行动点) | 每轮可执行动作的次数资源,每轮开始重置为表值(见[行动经济](systems/排雷循环/行动经济.md)) | | RAP(储备行动点) | 停手时把当轮没用完的行动点按转存率存入的储备池,跨轮保留、玩家可见可花 | | 停手 / 转存率 | 主动结束本轮的动作 / 停手时行动点转入 RAP 的比例(现役 1:1,可被秘宝改写) | -| GP(局内金币) | 冒险内的一次性货币:局内获取与消费、冒险结束清零、不入存档 | +| GP | 冒险内的一次性货币:局内获取与消费、冒险结束清零、不入存档(GP 是唯一正式命名,「金币」全库禁用,2026-10-18 用户裁) | | 钥石 | 跨局持久货币:关卡大奖励与 Boss 掉落入账、存档持久、营地柜台消费(见[元进度](systems/跨局循环/元进度.md)) | | 通关 | **打通整局冒险**(三关全通)——与「通过关卡」非同义词(2026-10-11 用户裁定);计数器=adventure_cleared | | 通过第 N 关 | 打通第 N 关卡;计数器=每关通关次数表(level_clear_counts) | @@ -67,7 +67,7 @@ | 奇物 | 冒险途中获得的增益总称(当局清零;见[奇物](systems/冒险循环/奇物.md)) | | 专长 | 奇物的分类之一:改写规则的机制件 | | 专长凭证 | 换取一次专长三选一资格的凭证——奖励节点与商店不直接给专长,给凭证(原「凭证」,2026-10-11 用户裁更名) | -| 地图战斗资源 | 战斗域的资源层:每格在装板期摇定资源类型身份(安全格/危险格同一类型池),回合内挖格/标旗获取、按动作极性结算正负兑付的一次性收益(原「奖励道具经济」,2026-09-16 用户裁更名;见[地图战斗资源](systems/战斗循环/地图战斗资源.md)) | +| 地图战斗资源 | 战斗域的资源层:每格在装板期摇定资源类型身份(安全格/危险格同一类型池),回合内挖格/封印获取、按动作极性结算正负兑付的一次性收益(原「奖励道具经济」,2026-09-16 用户裁更名;见[地图战斗资源](systems/战斗循环/地图战斗资源.md)) | | 机能件 / 机制件 | 道具的作用二分:不改变结算规则、只扩大操作包络的为机能件(秘宝);使结算产生原本不存在的新行的为机制件(专长)。判定尺见[核心循环](01-核心循环.md)「道具三层职责与分界」节 | ## 结算目标 @@ -94,7 +94,7 @@ ### A. 已裁替换(写新文本必须用「用」列) -| 不用 | 用 | 出处 | +| 禁用 | 用 | 出处 | |---|---|---| | 对标 | 参照 | STC 1.7,2026-10-15 用户裁 | | 若干 | 写具体数值;无数值可写时写明数值出处 | STC 5.4,2026-10-15 用户裁 | @@ -115,7 +115,7 @@ 1. **历史文本**:版本历史表已入库的行、git 提交说明、裁决记录中引用用户原话的句子——保留原用词,不按 A 表追改。 2. **对照性文本**:「退役词对照」表本身、「原 ××」式更名记载、禁令引举句——旧词在这些位置是内容本身,不是残留。 -3. **玩家可见专名与机制词**:按「对外命名纪律」节与各系统文档现行用语使用(旗/标中/踩雷等机制词在文档内部照常用)。 +3. **玩家可见专名与机制词**:按「对外命名纪律」节与各系统文档现行用语使用(标中/踩雷等机制词在文档内部照常用)。 存量口径:A 表生效前已入库的正文不做强制清扫;文件后续被批次触碰时,顺带按 A 表换代。 @@ -130,16 +130,19 @@ | 正主 | 现行事实源 | | 落籍 | 已入库 | | 工作日志 | 状态记录 | +| 金币 | GP(2026-10-18 用户裁:GP 是唯一正式命名,「金币」系 AI 噪音全库禁用) | +| 插旗 | 封印(2026-10-18 用户裁:封印=正式动作名,全库统一,非比喻非「对外表达」别名) | +| 旗(游戏概念语境) | 封印印记(2026-10-18 用户裁:「旗」概念不存在——封印动作落下的印记称封印印记) | ## 对外命名纪律(玩家可见命名,2026-10-11 用户令) | 规则 | 内容 | |---|---| -| 禁用字面 | 「雷」「插旗」及相关字面(雷格/踩雷/插旗/旗)**禁止进入对外命名**——「扫雷插旗」仅系内部开发用语,对外世界观=探索地下城/挖掘地下城 | -| 插旗的对外表达 | **封印**(件名示例:封印桩/封印回响/封印匠/封印爆裂) | +| 禁用字面 | 「插旗」「旗」及相关字面(插旗/标旗/旗)**全库禁用**(2026-10-18 用户裁:游戏中不存在「旗」概念——动作=封印、印记=封印印记);「雷」及相关字面(雷格/踩雷)**禁止进入对外命名**——对外世界观=探索地下城/挖掘地下城 | +| 封印 | **正式动作名(全库统一)**——不是比喻、不是「对外表达」别名(件名示例:封印桩/封印回响/封印匠/封印爆裂) | | 危险格的对外风味 | **地下城陷阱 / 怪物巢穴**(巢穴仅限世界观风味层使用——产品名清巢者出处、美术纹样名;机制表述仍用危险格) | | 连锁展开的对外表达 | **坍塌显形**:挖穿薄壳、整片松动地面塌陷露出(00 篇巢穴隐喻轴定名;机制文档内部仍用连锁展开) | -| 适用范围 | 全部对外命名:道具件名、显示名、UI 文案、成就与百科措辞(首例=专长 27 件第一版命名,[奇物](systems/冒险循环/奇物.md)基础件表 v3.15);机制文档内部用语不受此限(旗/标中/踩雷等机制词照常用) | +| 适用范围 | 全部对外命名:道具件名、显示名、UI 文案、成就与百科措辞(首例=专长 27 件第一版命名,[奇物](systems/冒险循环/奇物.md)基础件表 v3.15);封印/旗族与金币的禁令扩为**全库正文**(2026-10-18 用户裁)——机制文档内部一律用封印,无内部用语豁免 | ## 版本历史 @@ -158,3 +161,4 @@ | v1.10 | 2026-10-13 | **迭代 23 反哺落文批随迁**(实现报告 §五③「若需登记补登」经用户令落文):锻造工坊节新增「路线 id / 存档域键名」词条——六路线 id 与 forge_routes 域四键(levels/unlocked/weapon/armor),实现层词汇非玩家可见;玩家向术语零新增 | | v1.11 | 2026-10-13 | 「道具」统称登记(用户立内部用语习惯):道具=秘宝/奇物/地图战斗资源三类的内部开发统称,可单说或组合(秘宝道具/奇物道具/专长道具/战斗资源道具),仅限开发内部、玩家可见面用各类正式名称;同批补登「地图战斗资源」词条(原「奖励道具经济」2026-09-16 更名后一直未入表) | | v1.12 | 2026-10-15 | **用语规范节新立 + 简明技术中文用语规范批(用户令「全部 GDD 做语言规范并融合词表」)**:新立「用语规范」节=词面权威指向 STC 词表+已裁替换表 12 行(STC 词面 5 行〔对标/若干/不得/报错/buff〕+doc-conventions §4 流程动词 7 行)+豁免条款三类(历史文本/对照性文本/玩家可见专名);新词条:装板(装板期)/摇号、机能件/机制件、总线/抽屉(新「结算目标」节)、坍塌显形(对外命名纪律节);版本历史重排修复双 v1.2(详见 v1.9 行注) | +| v1.13 | 2026-10-18 | **设计文档术语刷新批(用户裁)**:金币退役(GP 是唯一正式命名,「金币」系 AI 噪音)、插旗退役(正式动作名=封印,全库统一)、旗概念退役(印记=封印印记)——三词入退役词对照表+机检词表(doc_term_audit.py);封印定性由「插旗的对外表达」更正为正式术语(非比喻);禁用字面从对外命名扩为全库;删「机制文档内部用语不受限」条款;旗/控制词条更名封印/控制;雷格/惩罚格存量正文补扫(2026-10-11 退役批残留) | diff --git a/design/qa/代码术语审计报告-2026-10-18.md b/design/qa/代码术语审计报告-2026-10-18.md new file mode 100644 index 00000000..8f0bd21c --- /dev/null +++ b/design/qa/代码术语审计报告-2026-10-18.md @@ -0,0 +1,120 @@ +# 代码术语审计报告 + +日期:2026-10-18 +触发:用户裁定——GP 是唯一正式命名(「金币」系 AI 噪音);「插旗」全库禁用(正式名=封印);「旗」概念不存在;「雷格」「惩罚格」已退役(正式名=危险格) + +--- + +## 1. 裁定摘要 + +| 禁用词 | 正式替代 | 裁定依据 | +|--------|---------|---------| +| 金币 | GP | GP 是唯一正式命名,「金币」系 AI 产出噪音,不应存在于任何位置 | +| 插旗 | 封印 | 游戏中不存在「旗」概念,右键动作=封印 | +| 旗(作为游戏概念) | 封印印记 | 同上——「不存在任何旗相关的东西」 | +| 封印(作为比喻解释) | 封印(作为正式术语) | 封印是正式动作名,不是比喻;禁止以「比喻」框架描述 | +| 雷格 | 危险格 | 2026-10-11 已裁退役 | +| 惩罚格 | 危险格 | 2026-10-11 已裁退役 | +| flag_*(代码键名) | seal_* | 用户裁定全换 | + +--- + +## 2. 命中统计 + +| 禁用词 | 命中次数 | 涉及文件数 | +|--------|---------|-----------| +| 金币 | 116 | 44 | +| 插旗 | 210 | 61 | +| 雷格 | 109 | 31 | +| 惩罚格 | 8 | 4 | +| flag_(.gd) | 270 | 29 | +| flag(.tres) | 22 | 4 | +| flag(独立词 .gd) | 22 | 10 | +| **合计** | **~757** | **~100+(有重叠)** | + +注:「封印」现有 170 处命中(46 文件),其中大部分是正确用法(封印=正式术语),但部分语境把它当「比喻」或「对外表达」描述,需修正措辞。 + +--- + +## 3. 分域明细 + +### 3.1 玩家可见文本(P0 最高优先级) + +UI 字符串、toast、tooltip、display_name、desc 字段中出现的禁用词: + +| 文件 | 行 | 内容 | 问题 | +|------|-----|------|------| +| game/presentation/views/shop_overlay_view.gd | 51,101,109,174,191 | `"金币 0"` / `"金币 %d"` / `"现价 %d 金币"` / `"刷新 %d 金币"` | 金币→GP | +| game/presentation/camp_shop_presenter.gd | 180,190,202 | `"金币不足——买不起这件商品"` / `"金币不足——刷新失败"` | 金币→GP | +| game/presentation/curio_interact_controller.gd | 192 | `"金币不足——刷新失败"` | 金币→GP | +| game/presentation/battle_narrator.gd | 24,114 | `"商店房:金币 %d"` / `"金币袋%s\n金币 +%d"` | 金币→GP | +| game/presentation/views/curio_pick_overlay.gd | 122,124 | `"刷新 %d 金币"` / tooltip 含「金币」 | 金币→GP | +| game/presentation/views/legend_overlay.gd | 14 | `"金=金币"` | 金币→GP | +| game/presentation/hud_presenter.gd | 169 | `"不能插旗:此格已有旗"` | 插旗→封印,旗→封印印记 | +| game/presentation/main.gd | 967 | `"插旗后轮末自动判定标中"` | 插旗→封印 | +| game/presentation/views/legend_overlay.gd | 9,11 | `"右键插旗(1AP)"` / `"封印印记(呈现名·不能拔)"` | 插旗→封印 | +| game/data/tables/treasure_items.tres | 212 | `"插旗不限相邻"` | 插旗→封印 | +| game/data/tables/reward.tres | 188 | `"display_name": "金币袋"` | 金币袋→GP 袋(或用户定名) | +| game/data/tables/feats.tres | 多处 | desc 含「封印」 | 需逐条核验语境(非比喻即合法) | +| game/tests/unit/presentation/reward_overlay_test.gd | 31,49 | `"金币袋\n金币 +20"` / `"刷新 20 金币"` | 测试断言里的 UI 文本 | + +### 3.2 代码注释与内部文档(P1) + +约 500+ 处分布在 .gd 注释、game/README.md、design/registry/entities.yaml、design/gdd/ 各系统文档中。主要模式: + +- `# 挖雷格/标错旗` → `# 挖危险格/标错封印` +- `# 插旗不可逆` → `# 封印不可逆` +- `# 雷格恒无变异` → `# 危险格恒无变异` +- `# 金币袋兑付` → `# GP 袋兑付` +- `flag_place` / `flag_hit` / `flag_cell` / `has_flag` / `tex_flag` → `seal_place` / `seal_hit` / `seal_cell` / `has_seal` / `tex_seal` + +### 3.3 代码标识符(P1,影响面最大) + +flag_* 族标识符 270 处(29 个 .gd 文件)+ 22 处(.tres),涉及: + +- 核心逻辑:minesweeper_rules.gd(18)、battle_orchestrator.gd(17)、grant_segment.gd(23)、effect_engine.gd(9) +- 数据表:action_economy.tres(2)、feats.tres(15)、settlement.tres(3)、treasure_items.tres(2) +- Schema:settlement_table.gd(3)、treasure_item_table.gd(3)、action_economy_table.gd(4) +- 呈现层:board_view.gd(7)、battle_end_overlay.gd(9)、ui_input_probe.gd(23) +- 冒烟/测试:smoke_all.gd(105)、level_autoplay.gd(16)、各 test 文件 + +### 3.4 设计文档(P1) + +design/gdd/ 和 design/registry/ 中约 200+ 处,需随术语表修正同步更新。 + +### 3.5 历史文档(P2) + +design/research/(提案、需求卡片)、design/qa/(审查报告)、design/art/(美术文档)中的命中: +- 历史提案和已结案需求卡片:留档不改(记录当时语境) +- 美术文档中的「封印旗」「封印特效」:需逐条核验(封印合法,旗不合法) +- roadmap.md:历史条目留档 + +--- + +## 4. 术语表自身修正清单 + +术语表(design/gdd/术语表.md)需按新裁定修正的条目: + +| 行 | 现行内容 | 问题 | 修正方向 | +|----|---------|------|---------| +| 14 | `旗 / 控制` 条目 | 「旗」概念不存在 | 改为「封印 / 控制」,删除「旗插在危险格上」措辞 | +| 28 | `GP(局内金币)` | 「金币」是噪音 | 改为 `GP`,删除「金币」别名 | +| 126 | `雷格 / 惩罚格 → 危险格` | 对照行,合法 | 保留 | +| 138 | `禁用字面:「雷」「插旗」…禁止进入对外命名` | 范围不够——插旗应全库禁用,不只是对外命名 | 扩大为全库禁用 | +| 139 | `插旗的对外表达 = 封印` | 封印不是「对外表达」,是唯一正式名 | 改为「封印=正式术语(全库统一)」 | +| 154 | v1.6 修订记录「插旗对外=封印…机制文档内部用语不受限」 | 内部用语也禁用 | 修正 | + +--- + +## 5. 风险评估 + +- **flag_* → seal_* 重命名**是最高风险项:涉及核心游戏逻辑(排雷规则、战斗编排、结算授予段),改错会破坏游戏行为。必须全量冒烟通过。 +- **.tres 数据文件**中的 flag 键名改动需与 schema 同步,否则数据加载失败。 +- **smoke_all.gd 单文件 105 处 flag_**,是改动密度最高的文件。 +- 中文文本替换风险较低,但量大面广,需防漏改和误改(如「旗」字在非游戏语境出现)。 + +--- + +## 6. 建议拆批 + +见同目录需求卡片:`design/research/需求卡片-代码术语刷新批-2026-10-18.md` diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 8971e614..e3f5d2c8 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -201,7 +201,7 @@ entities: cell_revealed: "{cell, kind ∈ {safe, mine}, digit【仅 kind=safe 携带、恒真透传——呈现隐藏归 HUD框架,判定源 = variant_ids,排雷玩法×4③】, variant_ids, channel ∈ {initial, chain, dig}, resource【initial 恒 false(封锁格无资源)/ chain·dig 恒 true——安全格与雷格一视同仁,雷格亦携带格面资源(负向兑付归 战斗结算 极性路由)】}" # 2026-09-15 格面资源批:reward_eligible → resource,旧口径"mine 恒 false"顺带作废 flag_judged: "{cell, hit = [cell ∈ M]}×N——轮末统一判定批(基线 = 轮次结束事务开始时旗位,被拔不判;行主序枚举);排雷玩法 诚实重复上报、兑付去重归 战斗结算/地图战斗资源(资格以雷格实例为键——action_economy.flag_rules/行动经济 OQ5)" round_end: "{path_tag ∈ {ap_exhausted, cleared}, continuation_hint}——棋盘路径由 排雷玩法 外发、核心字段逐字段取自 行动经济.last_round_end(读取权 = 接口契约),与 行动经济 stopped 路径 payload 同构;stopped 由 行动经济 直发、排雷玩法 禁双发(action_economy.round_end_carrier 双发射源)" - event_order: 同一轮次结束事务内 flag_judged ×N 先于 round_end(全路径统一——stop 腿 排雷玩法 先发旗判定再委托 request_stop,停手不改旗故基线等价);战斗结算 结算触发 = Waiting 相位编排点、不依赖事件到达序(战斗结算×3 强制项之一,systems-index 排雷玩法 门禁块) + event_order: 同一轮次结束事务内 flag_judged ×N 先于 round_end(全路径统一——stop 腿 排雷玩法 先发封印判定再委托 request_stop,停手不改封印故基线等价);战斗结算 结算触发 = Waiting 相位编排点、不依赖事件到达序(战斗结算×3 强制项之一,systems-index 排雷玩法 门禁块) zero_random: 排雷玩法 零 RNG 流消费——同板同意图序列 ⇒ 事件流逐位确定(AC-19);cell_revealed 发射序 = 规范序(初始/连锁 = 触发格 BFS、8 邻行主序) api_surface: install_board / settle_batch(HUD框架 唯一提交入口;stop 经此委托 行动经济.request_stop——HUD框架×6① 强制项:不直调 行动经济,行动经济 Rule 9 调用方细化、行动经济 GDD 不改以本条为准)/ try_dig·try_flag_place·try_move / compute_move_path(HUD框架 路径预览数据源)/ retire_board;ActionOutcome{accepted, executed|voided|rejected, reject_reason ∈ {board_face, resource_face, phase, board_invalid}, sub_reason【仅 board_face 携带:not_adjacent/target_revealed/target_concealed/flag_present/no_path/out_of_catalog——2026-09-09 评审 UX-1 定稿,玩家可辨呈现数据源;批后修改 = 接口漂移;flag_absent 随拔旗退役 2026-09-19 移出,挖旗格放行同批】}——provisional;事件载体已定(组合根直连信号 + Waiting 相位触发,排雷玩法 OQ2 关闭) referenced_by: [战斗结算, 地图战斗资源, HUD框架, 音频, 教学引导] @@ -259,7 +259,7 @@ entities: 图标键(icon key): "哪个数据行配哪枚图标"的固定对照——数据表主键(effect_id/reward_id/cell_type/enemy_id)直接作图标键,一键一专属纹样、映射全局恒定禁运行时换图(art-bible §4.6 首次定义,2026-09-13 冻结) 徽章(badge): 画在格子上的身份附属小图标(类型/奖励身份预读)——绘制优先级栈位在旗之下、变异纹理之上,不构成格内第二焦点(art-bible §4.6 首次定义;栈位声明源 = 极性批 git 提交 ddd2960) 极性(polarity): 同一类型兑付的正负方向——正 = 收益侧、负 = 代价侧,行为×格型→符号矩阵见极性提案 R2;视觉通道冻结 = 金族(有利)对红族(有害)+ 满框对缺框(art-bible §4.6 首次冻结视觉侧) - 命令式回执驱动: 动作调用返回后组合根立刻重查一次只读面来刷新界面、不等通知信号——旗插拔/移动/AP·RAP 读数/状态/库存五类动作零事件外发或零推送,呈现层刷新由此承载(HUD框架 首次定义;组合根订阅纪律的配对形态) + 命令式回执驱动: 动作调用返回后组合根立刻重查一次只读面来刷新界面、不等通知信号——封印/移动/AP·RAP 读数/状态/库存五类动作零事件外发或零推送,呈现层刷新由此承载(HUD框架 首次定义;组合根订阅纪律的配对形态) 程序化占位: 用代码按冻结色板与形状规则直接画出的临时图形——参数取自 art-bible §4.1/§3 参数域、icon 按 §4.6 键位映射表挂槽,终稿美术到位后原位替换、数据层零改动(HUD框架 首次定义;样张未定稿不阻塞呈现层开工的承载形态,占位同样受 §1.4 数字可读性第一验收项约束) 叠加层(overlay): 秘宝 自持的板级派生信息集(显影/真视/预读三集)——只改"玩家能看见什么"不改棋盘事实,零回写 排雷玩法/地图战斗资源 状态、随图消亡(秘宝 首次定义) 真视窄域护栏: 替代推理的道具效果(雷位真视)目标域 ≤3×3、全图级仅限恢复推理原料类(显影/预读)——信息层级护栏,防"扫雷退化为路径优化"(秘宝 Core Rule 3 首次定义,schema 校验强制) diff --git a/tools/analyze_playtest.py b/tools/analyze_playtest.py index a19e293b..d18b2718 100644 --- a/tools/analyze_playtest.py +++ b/tools/analyze_playtest.py @@ -547,7 +547,7 @@ def print_report(label, per_battle, t, exact_mode): print(" 回复总量:%d(战斗内 %d + 恢复节点 %d)" % ( t["healed"] + t["rest_heal"], t["healed"], t["rest_heal"])) print(" 充能总量:穿刺 %d 点 / 魔法 %d 点" % (t["pierce"], t["magic"])) - print(" 获得奖励件数:%d 件 获得惩罚件数:%d 件 踩雷格数:%d" % ( + print(" 获得奖励件数:%d 件 获得惩罚件数:%d 件 踩危险格数:%d" % ( t["pos_n"], t["neg_n"], t["mines"])) hp_trail = " → ".join("%d" % b["end_hp"] for b in per_battle if b["end_hp"] >= 0) print(" 生命轨迹(各战斗结束 HP):%s" % hp_trail) diff --git a/tools/clear_dominance_audit.py b/tools/clear_dominance_audit.py index 545de94d..428898d8 100644 --- a/tools/clear_dominance_audit.py +++ b/tools/clear_dominance_audit.py @@ -63,7 +63,7 @@ MAGIC_BOLT = 2 # 魔法矢(同上) PIERCE_SNARE = 8 # 穿刺陷阱(主角直伤,2026-10-01 5→8 / 10-03 转正) MAGIC_RECOIL = 8 # 魔法反噬(主角直伤,2026-10-01 5→8 / 10-03 转正) AP_UP = 1 # 行动点 +1(当量 = flat 表值 1,机会成本口径更高仅登记——假设 A6) -GP_COIN = 3 # 金币袋 +3GP(gp 当量 = flat power 代理——假设 A5,口径空白登记) +GP_COIN = 3 # GP 袋 +3 GP(gp 当量 = flat power 代理——假设 A5,口径空白登记) GP_LOSE = 2 # 破财 −2GP(同上代理) # 甲效矩阵(settlement.tres,加法核点数):基础值 + 点数,damage_floor=1 diff --git a/tools/doc_term_audit.py b/tools/doc_term_audit.py index e271c7da..6bf4186c 100644 --- a/tools/doc_term_audit.py +++ b/tools/doc_term_audit.py @@ -31,7 +31,7 @@ RETIRED_TERMS = [ ("m_amb|M_AMB", "2026-09-20", "(伏击暴露当量口径作废)", "挖掘风险不等式退役"), ("七型|五型×正负|五型 × 正负", "2026-09-20", "八型(十六格)", "格面资源八型批"), ("10 类行|行型封闭为 10 类|10 类封闭协议|行型 10 类", "2026-09-20", "9 类", "溢出未生效行下线"), - ("拔旗|撤旗", "2026-09-19", "(旗无移除手段——插旗不可逆)", "插旗不可逆批"), + ("拔旗|撤旗", "2026-09-19", "(封印印记无移除手段——封印不可逆)", "封印不可逆批(原「插旗不可逆批」,2026-10-18 术语刷新随批换代措辞)"), ("三选一反噬|标错反噬|反噬三选一", "2026-09-15", "极性矩阵负向兑付", "格面资源批"), ("defense_up", "2026-09-16", "ac_up(护甲强化)", "护甲等级掷点批换装"), ("蓄力行|charge 行", "2026-09-16", "施放行(cast)", "敌人技能池批改型"), @@ -56,6 +56,12 @@ RETIRED_TERMS = [ ("对拍", "2026-10-15", "与基线数据逐项比对", "用语规范 A 表(doc-conventions 第 4 节)"), ("销账|销号", "2026-10-15", "注销", "用语规范 A 表(doc-conventions 第 4 节)"), ("落文", "2026-10-15", "写入文档/已写入", "用语规范 A 表(doc-conventions 第 4 节同族)"), + # —— 设计文档术语刷新批(2026-10-18 用户裁):权威=design/gdd/术语表.md「退役词对照」—— + # GP 是唯一正式命名(「金币」系 AI 噪音);「旗」概念不存在(动作=封印、印记=封印印记, + # 封印系正式术语非比喻)。注意:「插旗|标旗」与上方「拔旗|撤旗」行同族;「旗」单字不入表 + # (词面误报率高,靠术语表对照行与人工判读),game/ 扫描域归代码批后另加。 + ("金币", "2026-10-18", "GP(唯一正式命名)", "GP 命名统一批——「金币」全库禁用"), + ("插旗|标旗", "2026-10-18", "封印(正式动作名,全库统一)", "术语刷新批——「旗」概念退役"), ] DEFAULT_DIRS = ["design/gdd", "design/registry"] diff --git a/tools/render_sample_sheet.py b/tools/render_sample_sheet.py index 970a9b09..ae9a1cff 100644 --- a/tools/render_sample_sheet.py +++ b/tools/render_sample_sheet.py @@ -267,7 +267,7 @@ FLAG_AT = (1, 2) # 封印印记——未开格(F2) HOVER_AT = (1, 4) # 悬停金框(预承诺光标态) HERO_AT = (2, 4) # 小人独立占格 HERO_DIGIT_AT = (2, 5) # 小人与数字同格(6)——验蓝框不覆盖文本 -NEST_AT = (5, 4) # 雷格巢穴(已开,程序占位+危险红) +NEST_AT = (5, 4) # 危险格巢穴(已开,程序占位+危险红) GLOW_CELLS = [(4, 2, "attack"), (5, 2, "heal"), (8, 3, "blast"), (6, 4, "pierce"), (7, 6, "magic")] # 五组;attack+heal 相邻并列 INLAY_RESULT = {(4, 6): "attack", (5, 6): "gp", (6, 6): "heal", (3, 7): "defense"} # 已开结果格物件纹样(v2 增至四类型) @@ -545,7 +545,7 @@ def render_main_board(): d.polygon([(px, py), (px + 18, py + 6), (px, py + 12)], fill=SEAL_BLACK) # 旗面恒画右 d.ellipse([px - 3, fy0 + cell - 12, px + 3, fy0 + cell - 6], fill=INK) - # 雷格巢穴(已开,程序占位——素材缺口,画面内标注) + # 危险格巢穴(已开,程序占位——素材缺口,画面内标注) nx0, ny0 = NEST_AT[0] * cell, NEST_AT[1] * cell nest_glow = Image.new("RGBA", board.size, (0, 0, 0, 0)) dg2 = ImageDraw.Draw(nest_glow) @@ -944,7 +944,7 @@ def main(): canvas.paste(scr, (20, 52)) d.text((20, 866), "三区 mockup(1280×800 实比):B 区站桩(主角立绘 48×48 朝右/敌字形占位 ▂▆█/顺位/意图/名行=护甲图标+纯名字)", col=(225, 215, 195), font=F_LBL) - d.text((20, 886), "C 区攻击数据框+预留槽 · D 区主样张板(方案甲拼装/接触带微光=蓝缘带/悬停金框/旗=封印印记/雷格巢穴占位)", + d.text((20, 886), "C 区攻击数据框+预留槽 · D 区主样张板(方案甲拼装/接触带微光=蓝缘带/悬停金框/封印印记/危险格巢穴占位)", col=(225, 215, 195), font=F_LBL) # S2 数字全档 diff --git a/tools/render_sample_sheet_v3.py b/tools/render_sample_sheet_v3.py index ea33a48d..a7ada074 100644 --- a/tools/render_sample_sheet_v3.py +++ b/tools/render_sample_sheet_v3.py @@ -310,7 +310,7 @@ FLAG_AT = (1, 2) # 封印印记——未开格(F2) HOVER_AT = (1, 4) # 悬停金框(预承诺光标态) HERO_AT = (2, 4) # 小人独立占格 HERO_DIGIT_AT = (2, 5) # 小人与数字同格(6)——验蓝框不覆盖文本 -NEST_AT = (5, 4) # 雷格巢穴(已开,程序占位+危险红) +NEST_AT = (5, 4) # 危险格巢穴(已开,程序占位+危险红) GLOW_CELLS = [(4, 2, "attack"), (5, 2, "heal"), (8, 3, "blast"), (6, 4, "pierce"), (7, 6, "magic")] # 五组;attack+heal 相邻并列 INLAY_RESULT = {(4, 6): "attack", (5, 6): "gp", (6, 6): "heal", (3, 7): "defense"} # 已开结果格物件纹样(v2 增至四类型) @@ -674,7 +674,7 @@ def render_main_board(): d.polygon([(px, py), (px + 18, py + 6), (px, py + 12)], fill=SEAL_BLACK) # 旗面恒画右 d.ellipse([px - 3, fy0 + cell - 12, px + 3, fy0 + cell - 6], fill=INK) - # 雷格巢穴(已开,程序占位——素材缺口,画面内标注) + # 危险格巢穴(已开,程序占位——素材缺口,画面内标注) nx0, ny0 = NEST_AT[0] * cell, NEST_AT[1] * cell nest_glow = Image.new("RGBA", board.size, (0, 0, 0, 0)) dg2 = ImageDraw.Draw(nest_glow) @@ -1109,7 +1109,7 @@ def main(): canvas.paste(scr, (20, 52)) d.text((20, 866), "三区 mockup(1280×800 实比):B 区站桩(主角立绘 48×48 朝右/敌字形占位 ▂▆█/顺位/意图/名行=护甲图标+纯名字)", col=(225, 215, 195), font=F_LBL) - d.text((20, 886), "C 区攻击数据框+预留槽 · D 区主样张板(方案甲拼装/接触带微光=蓝缘带/悬停金框/旗=封印印记/雷格巢穴占位)", + d.text((20, 886), "C 区攻击数据框+预留槽 · D 区主样张板(方案甲拼装/接触带微光=蓝缘带/悬停金框/封印印记/危险格巢穴占位)", col=(225, 215, 195), font=F_LBL) # S2 数字全档