diff --git a/AquaNet/src/components/settings/ChuniSettings.svelte b/AquaNet/src/components/settings/ChuniSettings.svelte
index db669105..8f7abcef 100644
--- a/AquaNet/src/components/settings/ChuniSettings.svelte
+++ b/AquaNet/src/components/settings/ChuniSettings.svelte
@@ -3,10 +3,11 @@
+{#if !loading}
{#each profileFields as [field, name], i (field)}
@@ -228,6 +243,55 @@
{/each}
+ {#if userIsUsingPreset}
+
+ {t('settings.options.all.preset-warning')}
+
+ {/if}
+
+
+ value >= 37 ? "SONIC" : `${(value / 4) + 1}`}
+ />
+ value >= 37 ? "SONIC" : `${(value / 4) + 1}`}
+ />
+ value == 10 ? "Normal" : `${value > 10 ? "Late" : "Fast"} ${(Math.abs(value - 10) / 10).toFixed(1)}`}
+ />
+ `${((value / 19) * 100).toFixed(0)}%`}
+ />
+ [
+ t('settings.options.all.none'),
+ t('settings.options.all.push'),
+ `S`, `SS`, `SSS`,
+ t('settings.options.all.personal-best'),
+ t('settings.options.all.rival-score'),
+ `${t('settings.options.all.life')} 300`,
+ `${t('settings.options.all.life')} 100`,
+ `${t('settings.options.all.life')} 50`,
+ `${t('settings.options.all.life')} 10`,
+ `${t('settings.options.all.life')} 1`
+ ][value]}
+ />
+
+{/if}
-
+
\ No newline at end of file
diff --git a/AquaNet/src/libs/generalTypes.ts b/AquaNet/src/libs/generalTypes.ts
index ed49d2c0..77c1831b 100644
--- a/AquaNet/src/libs/generalTypes.ts
+++ b/AquaNet/src/libs/generalTypes.ts
@@ -137,6 +137,8 @@ export interface GameOption {
changed?: boolean
}
+export type GameUserOption = Record
+
export interface UserItem { itemKind: number, itemId: number, stock: number }
export interface UserBox {
userName: string,
diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts
index 84de145e..b1dd6c31 100644
--- a/AquaNet/src/libs/i18n/en_ref.ts
+++ b/AquaNet/src/libs/i18n/en_ref.ts
@@ -167,6 +167,24 @@ export const EN_REF_SETTINGS = {
'settings.tabs.mai2': 'Mai',
'settings.tabs.ongeki': 'Ongeki',
'settings.tabs.wacca': 'Wacca',
+ 'settings.options.all.preset-warning': 'You are using a preset option set. Options may be reflected incorrectly.',
+ 'settings.options.all.personal-best': 'Record',
+ 'settings.options.all.rival-score': 'Rival',
+ 'settings.options.all.life': 'Life',
+ 'settings.options.all.push': 'Push',
+ 'settings.options.all.none': 'None',
+ // Chuni User Options
+ 'settings.options.chu3.speed': 'Lane Speed',
+ 'settings.options.chu3.speed_120': 'Lane Speed (120fps)',
+ 'settings.options.chu3.trackSkip': 'Track Skip Type',
+ 'settings.options.chu3.headphone': 'Headphone Volume',
+ // Maimai User Options
+ 'settings.options.mai2.noteSpeed': 'Note Speed',
+ 'settings.options.mai2.touchSpeed': 'Touch Speed',
+ 'settings.options.mai2.slideSpeed': 'Slide Speed',
+ 'settings.options.mai2.headPhoneVolume': 'Headphone Volume',
+ 'settings.options.mai2.trackSkip': 'Track Skip Type',
+
'settings.fields.mai2UnlockMusic.name': 'Unlock All Music',
'settings.fields.mai2UnlockMusic.desc': 'Unlock all music and master difficulty.',
'settings.fields.mai2UnlockChara.name': 'Unlock All Characters',
diff --git a/AquaNet/src/libs/i18n/zh.ts b/AquaNet/src/libs/i18n/zh.ts
index 0b819651..e5ee5412 100644
--- a/AquaNet/src/libs/i18n/zh.ts
+++ b/AquaNet/src/libs/i18n/zh.ts
@@ -162,6 +162,23 @@ const zhSettings: typeof EN_REF_SETTINGS = {
'settings.tabs.mai2': '舞萌',
'settings.tabs.ongeki': '音击',
'settings.tabs.wacca': '华卡',
+
+ "settings.options.all.preset-warning": "您正在使用预设选项配置,部分选项可能显示不正确。",
+ "settings.options.all.personal-best": "记录",
+ "settings.options.all.rival-score": "对手",
+ "settings.options.all.life": "生命值",
+ "settings.options.all.push": "按压",
+ "settings.options.all.none": "无",
+ "settings.options.chu3.speed": "轨道速度",
+ "settings.options.chu3.speed_120": "轨道速度(120帧)",
+ "settings.options.chu3.trackSkip": "跳过曲目类型",
+ "settings.options.chu3.headphone": "耳机音量",
+ "settings.options.mai2.noteSpeed": "音符速度",
+ "settings.options.mai2.touchSpeed": "触控速度",
+ "settings.options.mai2.slideSpeed": "滑动速度",
+ "settings.options.mai2.headPhoneVolume": "耳机音量",
+ "settings.options.mai2.trackSkip": "跳过曲目类型",
+
'settings.fields.mai2UnlockMusic.name': '解锁谱面',
'settings.fields.mai2UnlockMusic.desc': '解锁所有曲目和大师难度谱面。',
'settings.fields.mai2UnlockChara.name': '解锁角色',
diff --git a/AquaNet/src/libs/sdk.ts b/AquaNet/src/libs/sdk.ts
index ccd8317e..ce4ad8ce 100644
--- a/AquaNet/src/libs/sdk.ts
+++ b/AquaNet/src/libs/sdk.ts
@@ -9,7 +9,8 @@ import type {
AquaNetUser, GameOption,
UserBox,
UserItem,
- Dict
+ Dict,
+ GameUserOption
} from './generalTypes'
import type { GameName } from './scoring'
@@ -255,6 +256,10 @@ export const SETTING = {
post('/api/v2/settings/set', { key, value: `${value}` }),
detailSet: (game: string, field: string, value: any) =>
post(`/api/v2/game/${game}/user-detail-set`, { field, value }),
+ optionGet: (game: string): Promise =>
+ post(`/api/v2/game/${game}/user-option`),
+ optionSet: (game: string, field: string, value: number): Promise =>
+ post(`/api/v2/game/${game}/user-option-set`, { field, value }),
}
export const TRANSFER = {