这套委托是什么
接活 → 下层做 → 回来领钱/料/解锁SD_50 的玩家视角图谱,目前全是设计、代码未起。徽章以 DevelopmentUnits.md 单元 111–115 为准。玩家在 S0 接委托 / 事件任务(回收 · 调查 · 击杀 · 开启 …),下层完成、回来领 请购点 / 材料 / 升级料 / 解锁。这是经济的一大主动收入。核心原则:不重复造系统——委托建在现有任务求值器之上(见 §01)。
已定发放
S0 委托板为主 + NPC 发专属委托为辅 + 下层低概率随机事件 / 角色(§03)。
已定归属
per-player:各接各的、奖励归完成者(与请购点钱包同层);世界解锁型仍归世界(一人解锁全队享)。
已定团队助攻
队友帮打计入(在场参与各自推进)——这块要做扎实(§08)。
顺带补缺口
项目目前没有任务 HUD;委托的"活动追踪"正好补上(§03/单元 113)。
⬜ 111 委托地基 ⬜ 112 全类型+重置/轮换 ⬜ 113 委托板+HUD ⬜ 114 NPC发放+支线小案 ⬜ 115 下层随机事件+护送/解密
复用 vs 新增
建在现有任务求值器之上 · 只加薄薄一层现有任务系统(Quests.csv/Objectives.csv + 求值器 UCSObjectiveDirectorSubsystem)的判定条件已经覆盖委托要的全部动词——委托层只加 4 样,不碰主线/支线的一次性推进逻辑。
复用(不重写)
ConditionType(Interact/CollectItem/KillCount/ReachVolume/RepairCount/HoldTimer) + 求值器 Notify* 钩子 + ApplyObjectiveEvent 发奖路径 + CSV 单源 + 节点图工具。
① 可重复 + 重置
现有任务一次性(Completed 不再武装);委托加 ResetType(Daily/Session/Never) + MaxCompletions + 委托板轮换。
② 经济奖励
现有任务能发物品/解锁,没货币;委托加请购点奖励,且发给完成者本人(不是全队)。
③ 发放 + 交付 ④ per-player
现有任务靠世界状态自动激活、无"接受";委托加委托板/NPC 发放 + 接受 + 回 S0 交付 + 每人独立进度。
委托类型
玩家动词 → 现有 ConditionType(基本不用新写求值)bRequiresTurnIn 控制)。发放与领取
S0 委托板 + NPC + 下层随机事件委托板(主入口)
ACSCommissionBoard(新 ICSInteractable,落点 S0)。交互打开面板看可接委托。同时挂 6 个槽、按游戏日刷新(已定)——每次回 S0 都有新活、且天然限量防刷。
NPC 发放(叙事味)
某 NPC(如 Varga)在满足世界标签时给专属委托。复用现有 ACSNarrativeNPC + 对话框架(对话末尾可挂一条委托)。
下层随机事件(已定加入)
下层探索低概率触发动态事件 / 遭遇 / 角色(求救 NPC、异常读数、敌群、待解密终端)。服务器权威 + 节流 + 确定性种子(主机/客户端一致)。走近自动激活或就近接取,发请购点/材料(不发关键物)。新 UCSDynamicEventDirector + DynamicEvents.csv(单元 115)。
接受(per-player,服务器权威):板上点"接受" → RequestAcceptCommission(CommissionId) → 服务器对该玩家标记 Active、按 Notify* 累计进度。HUD 角落显示活动委托目标 + 进度(补任务 HUD 缺口)。
交付流程
服务器权威 · 同合成"校验→扣→产出"奖励
请购点 + 材料 + 升级料(不发关键物)| 奖励 | 字段 | 说明 |
|---|---|---|
| 请购点 | RewardCurrencyRC | 委托主奖励(经济缺的那块,接 Economy-A 钱包)。重复委托 50–200/次。 |
| 材料 / 升级料 | RewardItemIds(复用 ItemId*N) | "获取材料 / 强化"——升级料喂升级台。 |
| 解锁(可选) | RewardWorldStateTags(复用) | 某些委托解锁请购台新上架 / 路线(写世界、不按人复制)。 |
主线钩子 · 每层终结小Boss
击败 → 解锁 / 关键道具 / 房卡(已定)是什么
每层主线在终结处放一个小Boss / 招牌收容遭遇(boss 本体设计见 SD_47 + SCP 实体清单)。主线必经,不是可选委托。
击败发什么
有分量、有吸引力的奖励(用户强调):解锁新区 / 路线、关键道具、房卡(可含请购点)。这是每层"首通"的奖励。
怎么落地
不需要委托系统新代码:用现有 Quest/Objective 的奖励路径——击败 = KillCount 条件 → RewardItemIds/RewardRouteIds/RewardWorldStateTags。boss 战本体走敌人/AI 单元。
为什么算主线
它推进世界进度(解锁归世界、不按人复制),与"骨干揭示自然归档"(SD_43)一致;正常通线即开下一层,不另设收集门。
重复刷新 · 防剥削
可重复但不刷钱跳进度(红线 R4)重置
ResetType:Never(一次性故事)/ Session(每会话)/ Daily(按游戏日刷新) + MaxCompletions 上限。
奖励曲线(已定)
同一委托当日内随完成次数轻微递减(防刷),次日刷新回满。
板位限量
板上只 6 槽、按日刷新——结构性限制每趟能刷多少,天然防无限刷。
过期 / 放弃(已定)
不强制过期,可主动放弃换新(RequestAbandonCommission)。
| 风险 | 对策 |
|---|---|
| 委托刷钱跳进度 | 不发关键物/路线/AIM;奖励适中;大额只给一次性委托/小Boss |
| 无限刷重复委托 | 板位 6 槽 + 日刷新 + MaxCompletions + 当日递减 |
| 交付刷取(交假/重复交) | 服务器校验背包真有目标物再 RemoveItem;完成次数服务器记账、幂等 |
多人 · 团队助攻
队友帮打计入 · 必须做扎实(用户强调)每人独立
接受 / 进度 / 完成次数 / 钱包都每人一份(存玩家档);同一委托多人可各自接、各自完成。
共享
上架/解锁门控读共享 WorldProgress——一人解锁全队享(后加入玩家不需重打,R9)。
协作鼓励
一起打怪 / 搜物,各自委托同步推进——PvE 不抢、不互斥。
缩放
普通掉落/委托怪按在场人数缩放(1.0/1.45/2.35,SD_42);关键不复制。
服务器权威流
复用求值器 · 客户端只发请求委托进度走现有求值器的 Notify*(给调用点补"触发玩家"上下文,转给该玩家的委托进度);接受/交付走 owning ACSPlayerController 的 Server RPC。Quest 的世界级一次性逻辑完全不动。
| 事务 | 入口 | 服务器校验 / 动作 |
|---|---|---|
| 接受 | RequestAcceptCommission | 板上有该委托/前置满足 → 对该玩家标 Active |
| 进度 | 复用 NotifyKill/Collect/Interact/ReachVolume/... | 带触发玩家 → 推进该玩家 Active 委托(团队助攻:在场参与者各自推进) |
| 交付 | RequestTurnInCommission | Active+条件达成(回收: 有物)→ RemoveItem → AddCredits+物品 → 计数+重置 |
| 放弃 | RequestAbandonCommission | 该玩家委托回 Available |
UCSItemDataSubsystem(加 FCSCommissionDefinition);per-player 进度挂 ACSPlayerState(与钱包同层,存玩家档);求值复用 UCSObjectiveDirectorSubsystem;发请购点用 PlayerState->AddCredits(接 Economy-A)。客户端不直接对委托板发 Server RPC(走玩家拥有的交互组件)。数据表 schema
新 Commissions.csv,走现有生成管线编辑 Data/Source/Commissions.csv → python Scripts\GenerateGameData.py → Data/Generated/* → 查表。生成器校验:ConditionType 合法、引用存在、奖励不含关键类、RewardCurrencyRC≥0。
| 表 / 字段 | 管什么 |
|---|---|
Commissions.csv | CommissionId, Title, Desc, IssuerId, Layer, CommissionType, ConditionType, ConditionKey, ConditionCount, bRequiresTurnIn, RewardCurrencyRC, RewardItemIds, RewardWorldStateTags, PrereqWorldStateTags, ResetType, MaxCompletions, BoardWeight, SortOrder |
DynamicEvents.csv(单元 115) | EventId, 触发条件, 概率, 动词, 奖励, 冷却(下层随机事件) |
| 存档(玩家档,per-player) | FCSPlayerSaveData.Commissions:FCSCommissionState{CommissionId, State(Available/Active/ReadyToTurnIn/CoolingDown), Progress, CompletionCount, LastResetDay} |
SD_50 与现有接缝(Objectives.csv 的 ConditionType · UCSObjectiveDirectorSubsystem · ApplyObjectiveEvent · ACSNarrativeNPC · CSV 单源 + 节点图工具)。单元状态以 DevelopmentUnits.md 为准。经济侧见 经济系统。落地单元 · 示例 · 图例
示例委托(味道示范)
| 层 | 类型 | 内容 → 奖励 |
|---|---|---|
| L0 | 回收 | 把 3 件旧物件带回 S0 委托板交付 → +80 RC(每日 2 次) |
| L1 | 击杀 | 清理污染变异体 5 个 → 自动完成 → +120 RC + 过滤芯×2(每日 1 次) |
| L2 | 调查(Varga) | 到孢子异常读数点标记 → +150 RC + 解锁"抗孢子装备"上架(一次性) |
| L1 | 开启 | 用消耗门卡开封锁侧厅 → +100 RC(一次性) |
| 下层 | 随机·护送 | 低概率撞见求救 D 级 → 护送到电梯存活 → +RC + 材料 |
| 每层 | 主线·小Boss | 击败终结小Boss → 解锁下层/路线 + 关键道具/房卡(主线必经) |
SD_50。