62 lines
3.4 KiB
JSON
62 lines
3.4 KiB
JSON
{
|
||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
"$id": "events.schema.json",
|
||
"title": "events 表 schema v0(4 事件,数值抄录自 Balance Bible v1.0 §7)",
|
||
"description": "架构 §3.2 CSV 规范落盘。事件倍率走独立瞬时区,不进全局乘区([B§0.3/§7])。参数列语义(按 type 取用):p_mult=output_mult 全产出倍率 / click_output_mult 产出倍率部分;p_clicks=click_challenge 需点击次数 / click_output_mult 点击倍率 / choice 冤气增益下限;p_window_sec=click_challenge 窗口秒 / choice 冤气增益上限(随殿序 lerp);p_penalty+p_penalty_dur_sec=click_challenge 失败惩罚;opt_a_*/opt_b_*=choice 二选一(merit_burst_sec=阴德爆发秒数 / wrath_gain=冤气增益)。出现前提 = up_gate_events(过 H2,[B§2.3])。冤魂申诉超时默认 opt_a(超度)。",
|
||
"x-supported-keywords": [
|
||
"type", "properties", "required", "items", "enum", "pattern",
|
||
"minimum", "maximum", "minLength", "minItems", "maxItems",
|
||
"additionalProperties", "const"
|
||
],
|
||
"x-unique": ["id"],
|
||
"type": "object",
|
||
"required": ["sheet", "schema_version", "columns", "rows"],
|
||
"properties": {
|
||
"sheet": { "const": "events" },
|
||
"schema_version": { "const": 0 },
|
||
"columns": {
|
||
"type": "array",
|
||
"items": { "type": "string" },
|
||
"minItems": 17
|
||
},
|
||
"rows": {
|
||
"type": "array",
|
||
"minItems": 4,
|
||
"maxItems": 4,
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"id", "name_cn", "name_en", "trigger_min_min", "trigger_max_min",
|
||
"duration_sec", "type", "p_mult", "p_clicks", "p_window_sec",
|
||
"p_penalty", "p_penalty_dur_sec", "opt_a_type", "opt_a_param",
|
||
"opt_b_type", "opt_b_param", "flavor_cn"
|
||
],
|
||
"properties": {
|
||
"id": { "type": "string", "pattern": "^ev_[0-9]{2}_[a-z]+$" },
|
||
"name_cn": { "type": "string", "minLength": 1 },
|
||
"name_en": { "type": "string", "minLength": 1, "description": "临时译名,待文策渊 glossary" },
|
||
"trigger_min_min": { "type": "integer", "minimum": 1, "description": "触发间隔下限(分钟)" },
|
||
"trigger_max_min": { "type": "integer", "minimum": 1, "description": "触发间隔上限(分钟,含)" },
|
||
"duration_sec": { "type": "integer", "minimum": 1, "description": "持续秒数(冤魂申诉为非阻塞决策窗)" },
|
||
"type": {
|
||
"type": "string",
|
||
"enum": ["output_mult", "click_challenge", "choice", "click_output_mult"]
|
||
},
|
||
"p_mult": { "type": "number", "minimum": 0 },
|
||
"p_clicks": { "type": "integer", "minimum": 0 },
|
||
"p_window_sec": { "type": "number", "minimum": 0 },
|
||
"p_penalty": { "type": "number", "minimum": 0, "maximum": 1, "description": "click_challenge 失败惩罚倍率(0.5 = -50%)" },
|
||
"p_penalty_dur_sec": { "type": "integer", "minimum": 0 },
|
||
"opt_a_type": { "type": "string", "enum": ["none", "merit_burst_sec", "wrath_gain"] },
|
||
"opt_a_param": { "type": "number", "minimum": 0 },
|
||
"opt_b_type": { "type": "string", "enum": ["none", "merit_burst_sec", "wrath_gain"] },
|
||
"opt_b_param": { "type": "number", "minimum": 0 },
|
||
"flavor_cn": { "type": "string", "minLength": 1 }
|
||
},
|
||
"additionalProperties": false
|
||
}
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
}
|