diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts index a2eb5ab1..4965e789 100644 --- a/AquaNet/src/libs/i18n/en_ref.ts +++ b/AquaNet/src/libs/i18n/en_ref.ts @@ -228,6 +228,8 @@ export const EN_REF_SETTINGS = { 'settings.fields.chusanTeamName.desc': 'Customize the text displayed on the top of your profile.', 'settings.fields.chusanInfinitePenguins.name': 'Infinite Penguins', 'settings.fields.chusanInfinitePenguins.desc': 'Set penguin statues for character level prompting to 999.', + 'settings.fields.chusanUnlock29672999Ultima.name': 'Unlock 2967, 2999 Ultima', + 'settings.fields.chusanUnlock29672999Ultima.desc': 'Unlocks Ultima difficulty ONLY for musicIds 2967, 2999. Do not use if you don\'t know why you need this.', 'settings.fields.chusanLvUnlockAll.name': 'Unlock Linked Gates', 'settings.fields.chusanLvUnlockAll.desc': 'Incurs a long animated sequence, cannot be undone', 'settings.fields.chusanMatchingReflector.name': 'Matching Server Reflector', diff --git a/AquaNet/src/libs/i18n/zh.ts b/AquaNet/src/libs/i18n/zh.ts index 1ee4e638..455053ad 100644 --- a/AquaNet/src/libs/i18n/zh.ts +++ b/AquaNet/src/libs/i18n/zh.ts @@ -240,6 +240,8 @@ const zhSettings: typeof EN_REF_SETTINGS = { 'settings.fields.chusanTeamName.desc': '自定义显示在个人资料顶部的文本。', 'settings.fields.chusanInfinitePenguins.name': '我是桐谷遥', 'settings.fields.chusanInfinitePenguins.desc': '将角色界限突破的企鹅雕像数量设置为 999。', + 'settings.fields.chusanUnlock29672999Ultima.name': '解锁 2967、2999 Ultima', + 'settings.fields.chusanUnlock29672999Ultima.desc': '仅解锁曲目 2967、2999 的 Ultima 难度。不清楚用途请勿使用。', 'settings.fields.chusanLvUnlockAll.name': '解锁所有 Linked Gate', 'settings.fields.chusanLvUnlockAll.desc': '会触发一个很长的动画序列,且无法撤销', 'settings.fields.chusanMatchingReflector.name': '全国对战 Reflector', diff --git a/src/main/java/icu/samnyan/aqua/net/db/AquaGameOptions.kt b/src/main/java/icu/samnyan/aqua/net/db/AquaGameOptions.kt index baba4fc0..98872e2c 100644 --- a/src/main/java/icu/samnyan/aqua/net/db/AquaGameOptions.kt +++ b/src/main/java/icu/samnyan/aqua/net/db/AquaGameOptions.kt @@ -43,6 +43,9 @@ class AquaGameOptions( @SettingField("chu3") var chusanInfinitePenguins: Boolean = false, + @SettingField("chu3") @Column(name = "chusan_unlock_2967_2999_ultima") + var chusanUnlock29672999Ultima: Boolean = false, + @SettingField("chu3-matching") var chusanMatchingServer: String = "", diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index ecb1f85f..ea1f549e 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -237,6 +237,13 @@ fun ChusanController.chusanInit() { items.removeAll { it.itemId in penguins } items.addAll(penguins.map { Chu3UserItem(kind, it, 999, true) }) } + + if (it.chusanUnlock29672999Ultima && kind == 12) { + val existing = items.map { item -> item.itemId }.toHashSet() + setOf(2967, 2999) + .filterNot { id -> id in existing } + .mapTo(items) { id -> Chu3UserItem(kind, id, 1, true) } + } } items diff --git a/src/main/resources/db/80/V1000_76__chusan_unlock_2967_2999_ultima.sql b/src/main/resources/db/80/V1000_76__chusan_unlock_2967_2999_ultima.sql new file mode 100644 index 00000000..24812ba2 --- /dev/null +++ b/src/main/resources/db/80/V1000_76__chusan_unlock_2967_2999_ultima.sql @@ -0,0 +1,2 @@ +ALTER TABLE aqua_game_options + ADD COLUMN chusan_unlock_2967_2999_ultima BIT(1) NOT NULL DEFAULT 0;