import { resolveCustomWorldRuleProfile } from '../services/customWorldOwnedSettingLayers'; import type {CustomWorldProfile, WorldAttributeSchema} from '../types'; import {WorldType} from '../types'; export const WORLD_TEMPLATE_ATTRIBUTE_SCHEMAS: Record< Exclude, WorldAttributeSchema > = { [WorldType.WUXIA]: { id: 'schema:wuxia:v1', worldId: WorldType.WUXIA, schemaVersion: 1, schemaName: '江湖六脉', generatedFrom: { worldType: WorldType.WUXIA, worldName: '武侠', settingSummary: '江湖、门派、旧案与人情纠葛并存。', tone: '克制、紧张、讲究局势与心气。', conflictCore: '在人情、威压与旧案之间立住自身。', }, slots: [ { slotId: 'axis_a', name: '骨势', definition: '扛压、顶冲、硬吃风险也不退的势头。', positiveSignals: ['扛压', '硬桥硬马', '稳住正面'], negativeSignals: ['虚浮', '怯退', '一碰就散'], combatUseText: '顶住正面压力、换伤不退、撑住阵线。', socialUseText: '在强压场面里不露怯,给人可靠或强硬之感。', explorationUseText: '穿越险路、硬顶机关、承受高压环境。', }, { slotId: 'axis_b', name: '身法', definition: '腾挪、抢位、换线、把握出手节奏的能力。', positiveSignals: ['快', '轻灵', '抢位'], negativeSignals: ['迟缓', '失位', '笨重'], combatUseText: '切线换位、闪转腾挪、争夺先手。', socialUseText: '应变快,擅长观察气口并顺势接话。', explorationUseText: '攀越、潜入、追踪与复杂地形穿行。', }, { slotId: 'axis_c', name: '眼脉', definition: '看破破绽、拆招、识局、看穿人心的能力。', positiveSignals: ['识局', '洞察', '拆招'], negativeSignals: ['迟钝', '误判', '看不透'], combatUseText: '抓破绽、拆套路、找出最该切入的位置。', socialUseText: '判断弦外之音、试探真假、识别来意。', explorationUseText: '识破机关、辨认痕迹、看懂异状。', }, { slotId: 'axis_d', name: '心焰', definition: '决断、压迫、胆气、在局面中立住自身意志的能力。', positiveSignals: ['胆气', '决断', '压迫'], negativeSignals: ['犹疑', '软弱', '易被动摇'], combatUseText: '逼迫对手、强行推进、在关键时刻拍板。', socialUseText: '立威、定调、在谈判里压住场子。', explorationUseText: '在未知风险前保持决断,不被局势拖死。', }, { slotId: 'axis_e', name: '尘缘', definition: '与人事、情面、承诺、牵引关系打交道的能力。', positiveSignals: ['通人情', '会安抚', '懂交换'], negativeSignals: ['生硬', '失礼', '不近人情'], combatUseText: '借势协同、读懂同伴与对手的关系脉络。', socialUseText: '安抚、求助、结盟、维系承诺与信任。', explorationUseText: '从传闻、人脉和地方关系里打开线索。', }, { slotId: 'axis_f', name: '玄息', definition: '调息、稳态、久战、把自身维持在可用状态的能力。', positiveSignals: ['稳', '续战', '调息'], negativeSignals: ['紊乱', '易崩', '续不上'], combatUseText: '续战、回气、稳住节奏与状态。', socialUseText: '遇事不乱,语气和姿态都更沉稳可信。', explorationUseText: '长线跋涉、在恶劣环境下维持专注与状态。', }, ], }, [WorldType.XIANXIA]: { id: 'schema:xianxia:v1', worldId: WorldType.XIANXIA, schemaVersion: 1, schemaName: '灵界六轴', generatedFrom: { worldType: WorldType.XIANXIA, worldName: '仙侠', settingSummary: '灵潮、宗门、禁制、秘境与道途交织。', tone: '空灵、危险、带着灾变与大道压迫。', conflictCore: '在裂变与因果之间稳住自我与道途。', }, slots: [ { slotId: 'axis_a', name: '道骨', definition: '承载道压与高强度冲击的底子。', positiveSignals: ['承压', '根基稳', '扛得住'], negativeSignals: ['根基浅', '易溃', '承载不足'], combatUseText: '扛住灵压、正面承受高强度对撞。', socialUseText: '让人感到根基扎实,值得托付重事。', explorationUseText: '承受秘境、禁制与裂隙带来的压迫。', }, { slotId: 'axis_b', name: '灵行', definition: '位移、御空、转场、抢占天时地利的能力。', positiveSignals: ['位移', '御空', '机动'], negativeSignals: ['迟滞', '失位', '转场慢'], combatUseText: '抢位、御空、快速重整战场位置。', socialUseText: '反应轻快,擅长顺势接住局面的变化。', explorationUseText: '穿越高危地形、裂隙、云海与复杂禁区。', }, { slotId: 'axis_c', name: '识海', definition: '解析禁制、洞察因果、识破虚实的能力。', positiveSignals: ['洞察', '解构', '看破'], negativeSignals: ['迷失', '误判', '看不清'], combatUseText: '识破术理、找出因果节点与破绽。', socialUseText: '更容易辨认真话、虚言与隐藏动机。', explorationUseText: '解读阵纹、禁制、旧史与环境异象。', }, { slotId: 'axis_d', name: '劫纹', definition: '在高危变化中强行推进、改写局势的能力。', positiveSignals: ['强推', '决断', '逆转'], negativeSignals: ['畏缩', '迟疑', '不敢碰变局'], combatUseText: '在高压窗口里压上去,逼出变化与突破。', socialUseText: '在关键谈判中拍板,推动他人表态。', explorationUseText: '面对异变与风险时敢于推进关键节点。', }, { slotId: 'axis_e', name: '心契', definition: '与他者、器物、灵兽、誓约建立共鸣的能力。', positiveSignals: ['共鸣', '结契', '安抚'], negativeSignals: ['隔阂', '生硬', '难以共振'], combatUseText: '与器物、灵兽、同伴形成协同与共鸣。', socialUseText: '建立信任、誓约与更深层的关系连结。', explorationUseText: '借由共鸣打开封印、回应遗物或安抚异兽。', }, { slotId: 'axis_f', name: '玄息', definition: '循环灵息、稳住心神、让自身持续在线的能力。', positiveSignals: ['稳态', '回转', '续航'], negativeSignals: ['紊乱', '枯竭', '失衡'], combatUseText: '维持灵息循环、拖住长线压力与消耗。', socialUseText: '气息沉稳,不轻易乱阵脚或露出破绽。', explorationUseText: '在漫长探索与灵潮侵蚀中维持可行动状态。', }, ], }, }; export function getTemplateWorldAttributeSchema( worldType: Exclude, ) { return WORLD_TEMPLATE_ATTRIBUTE_SCHEMAS[worldType]; } export function getWorldAttributeSchema( worldType: WorldType | null | undefined, customWorldProfile?: CustomWorldProfile | null, ) { if (worldType === WorldType.CUSTOM && customWorldProfile) { try { return ( resolveCustomWorldRuleProfile(customWorldProfile)?.attributeSchema ?? customWorldProfile.attributeSchema ); } catch { return customWorldProfile.attributeSchema; } } if (worldType === WorldType.XIANXIA) { return WORLD_TEMPLATE_ATTRIBUTE_SCHEMAS[WorldType.XIANXIA]; } return WORLD_TEMPLATE_ATTRIBUTE_SCHEMAS[WorldType.WUXIA]; }