Implement scene-based chapter quest progression
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-08 11:58:47 +08:00
parent 9d2fc9e4b8
commit bd9fdcbe31
170 changed files with 18259 additions and 1049 deletions

View File

@@ -11,6 +11,7 @@ import {
ItemUseProfile,
WorldType,
} from '../types';
import { resolveCustomWorldCampScene } from './customWorldCamp';
import {
type CustomWorldThemeMode,
detectCustomWorldThemeMode,
@@ -49,6 +50,30 @@ type WorldPresentation = {
};
const WORLD_PRESENTATIONS: Record<ThemeMode, WorldPresentation> = {
mythic: {
mode: 'mythic',
attributeLabels: { strength: '体魄', agility: '身法', intelligence: '识见', spirit: '心魂' },
hpLabel: '生命',
mpLabel: '心流',
maxHpLabel: '生命上限',
maxMpLabel: '心流上限',
damageLabel: '势能',
guardLabel: '防护',
rangeLabel: '距离',
cooldownLabel: '回整',
manaCostLabel: '心流消耗',
campSuffix: '归舍',
itemPrefixes: ['远岸', '回声', '曙迹', '长旅', '微光', '新铭'],
itemInfixes: ['印', '纹', '辉', '迹', '息', '铭'],
skillPrefixes: ['映', '折', '回', '逐', '临', '流'],
skillSuffixByStyle: {
burst: ['震', '断', '破', '坠'],
steady: ['守', '定', '护', '镇'],
mobility: ['跃', '移', '转', '行'],
finisher: ['终', '决', '落', '尽'],
projectile: ['矢', '刃', '波', '纹'],
},
},
martial: {
mode: 'martial',
attributeLabels: { strength: '力量', agility: '敏捷', intelligence: '智力', spirit: '精神' },
@@ -61,7 +86,7 @@ const WORLD_PRESENTATIONS: Record<ThemeMode, WorldPresentation> = {
rangeLabel: '招距',
cooldownLabel: '调息',
manaCostLabel: '内力消耗',
campSuffix: '行侠客栈',
campSuffix: '归舍',
itemPrefixes: ['风雨', '青锋', '断桥', '冷铁', '旧案', '残影'],
itemInfixes: ['刃','锋','魂','诀','式','影'],
skillPrefixes: ['破','斩','击','御','飞','隐'],
@@ -85,7 +110,7 @@ const WORLD_PRESENTATIONS: Record<ThemeMode, WorldPresentation> = {
rangeLabel: '术距',
cooldownLabel: '回息',
manaCostLabel: '灵韵消耗',
campSuffix: '宗门行馆',
campSuffix: '栖居',
itemPrefixes: ['灵韵', '道纹', '云篆', '星芒', '界辉', '道痕'],
itemInfixes: ['灵','道','法','术','诀','印'],
skillPrefixes: ['灵','道','法','界','星','印'],
@@ -109,7 +134,7 @@ const WORLD_PRESENTATIONS: Record<ThemeMode, WorldPresentation> = {
rangeLabel: '射程',
cooldownLabel: '充能',
manaCostLabel: '能量消耗',
campSuffix: '机动前哨',
campSuffix: '整备居',
itemPrefixes: ['铁脊', '钢律', '脉冲', '核列', '新星', '等离'],
itemInfixes: ['芯', '驱', '链', '阵', '节', '机'],
skillPrefixes: ['超载', '脉冲', '聚核', '磁轨', '新星', '裂火'],
@@ -133,7 +158,7 @@ const WORLD_PRESENTATIONS: Record<ThemeMode, WorldPresentation> = {
rangeLabel: '潮距',
cooldownLabel: '回潮',
manaCostLabel: '潮息消耗',
campSuffix: '潮栖营地',
campSuffix: '潮',
itemPrefixes: ['潮纹', '海晕', '霜浪', '天澜', '潮歌', '沧流'],
itemInfixes: ['潮', '浪', '汐', '海', '涛', '澜'],
skillPrefixes: ['潮', '浪', '汐', '海', '澜', '涌'],
@@ -157,7 +182,7 @@ const WORLD_PRESENTATIONS: Record<ThemeMode, WorldPresentation> = {
rangeLabel: '界距',
cooldownLabel: '复界',
manaCostLabel: '裂能消耗',
campSuffix: '裂界驻营',
campSuffix: '界隙居所',
itemPrefixes: ['裂界', '断层', '边潮', '灰域', '界桥', '前哨'],
itemInfixes: ['锋', '隙', '锚', '印', '界', '核'],
skillPrefixes: ['裂', '断', '界', '相', '折', '迁'],
@@ -364,8 +389,7 @@ export function getResourceLabelsForWorld(worldType: WorldType | null | undefine
export function buildCustomCampSceneName(profile: CustomWorldProfile) {
const presentation = getWorldPresentation(profile);
return `${presentation.itemPrefixes[0]}${presentation.campSuffix}`;
return resolveCustomWorldCampScene(profile).name;
}
export function buildThemedSkillName(