From 599bf979d0d9c020e3480e26f8c5ecfe43c95382 Mon Sep 17 00:00:00 2001 From: 0auBSQ <58159635+0auBSQ@users.noreply.github.com> Date: Sat, 26 Oct 2024 12:28:17 +0900 Subject: [PATCH] a bit of cool stuff --- OpenTaiko/Databases/NameplateUnlockables.db3 | Bin 143360 -> 143360 bytes OpenTaiko/Databases/SongUnlockables.db3 | Bin 32768 -> 40960 bytes OpenTaiko/Lang/de/lang.json | 4 + OpenTaiko/Lang/en/lang.json | 6 +- OpenTaiko/Lang/es/lang.json | 4 + OpenTaiko/Lang/fr/lang.json | 4 + OpenTaiko/Lang/ja/lang.json | 4 + OpenTaiko/Lang/ko/lang.json | 609 ------------------ OpenTaiko/Lang/nl/lang.json | 4 + OpenTaiko/Lang/ru/lang.json | 4 + OpenTaiko/Lang/zh/lang.json | 4 + .../Modules/Modal/Script.lua | 14 +- OpenTaiko/src/Databases/DBSongUnlockables.cs | 12 +- OpenTaiko/src/Databases/DBUnlockables.cs | 45 +- .../05.SongSelect/CActSelectPreimageパネル.cs | 4 +- 15 files changed, 96 insertions(+), 622 deletions(-) delete mode 100644 OpenTaiko/Lang/ko/lang.json diff --git a/OpenTaiko/Databases/NameplateUnlockables.db3 b/OpenTaiko/Databases/NameplateUnlockables.db3 index 2f0eaeb0f2138241ee1ef9cb702496e7a859e0ee..3cc20e64a0ba4c2c20f42f443a845ed71cee1430 100644 GIT binary patch delta 306 zcmZp8z|ru4V}dlJ^F$eEM(4(a)&$0_2~3OR8EdCAD=?X`+H!B;nzmU{F@bga995== zEG*nw43g6uwU|VCq8m9l8Ppl&1qH*!IV){ oP*A*4bh@WDlZrp(7Nj?_b1^8x4Bey6B<(<{q1#z?n0_+@0Pu=oaR2}S diff --git a/OpenTaiko/Databases/SongUnlockables.db3 b/OpenTaiko/Databases/SongUnlockables.db3 index fab298bfe2fe6de543ad1efedb925bc5db0c6c36..8506fe14d4561cade7be308de227609f54c1fc46 100644 GIT binary patch literal 40960 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 diff --git a/OpenTaiko/Lang/de/lang.json b/OpenTaiko/Lang/de/lang.json index 2a0244c0..777629fb 100644 --- a/OpenTaiko/Lang/de/lang.json +++ b/OpenTaiko/Lang/de/lang.json @@ -502,6 +502,10 @@ // {1}: Current progress "UNLOCK_CONDITION_PLAY": "Spiele {0} Lieder, um diesen Artikel freizuschalten! ({1}/{0})", // tp // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{0} {1} songs to unlock this item! ({2}/{1})", // sd + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) // {3}: Current progress diff --git a/OpenTaiko/Lang/en/lang.json b/OpenTaiko/Lang/en/lang.json index 9c90e353..5a4c0ba4 100644 --- a/OpenTaiko/Lang/en/lang.json +++ b/OpenTaiko/Lang/en/lang.json @@ -500,7 +500,11 @@ "UNLOCK_CONDITION_AIWIN": "Win {0} AI battle matches to unlock this item! ({1}/{0})", // aw // {0}: Total plays needed // {1}: Current progress - "UNLOCK_CONDITION_PLAY": "Play {0} songs to unlock this item! ({1}/{0})", // tp + "UNLOCK_CONDITION_PLAY": "Play {0} times to unlock this item! ({1}/{0})", // tp + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{0} {1} songs to unlock this item! ({2}/{1})", // sd // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) diff --git a/OpenTaiko/Lang/es/lang.json b/OpenTaiko/Lang/es/lang.json index d5023650..c85f6d97 100644 --- a/OpenTaiko/Lang/es/lang.json +++ b/OpenTaiko/Lang/es/lang.json @@ -503,6 +503,10 @@ // {1}: Current progress "UNLOCK_CONDITION_PLAY": "Play {0} songs to unlock this item! ({1}/{0})", // tp // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{0} {1} songs to unlock this item! ({2}/{1})", // sd + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) // {3}: Current progress diff --git a/OpenTaiko/Lang/fr/lang.json b/OpenTaiko/Lang/fr/lang.json index 73eb35c2..91d26a39 100644 --- a/OpenTaiko/Lang/fr/lang.json +++ b/OpenTaiko/Lang/fr/lang.json @@ -502,6 +502,10 @@ // {1}: Current progress "UNLOCK_CONDITION_PLAY": "Play {0} songs to unlock this item! ({1}/{0})", // tp // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{0} {1} songs to unlock this item! ({2}/{1})", // sd + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) // {3}: Current progress diff --git a/OpenTaiko/Lang/ja/lang.json b/OpenTaiko/Lang/ja/lang.json index c858460b..7266122f 100644 --- a/OpenTaiko/Lang/ja/lang.json +++ b/OpenTaiko/Lang/ja/lang.json @@ -502,6 +502,10 @@ // {1}: Current progress "UNLOCK_CONDITION_PLAY": "{0}回プレイ ({1}/{0})", // tp // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{1}譜面を{0} ({2}/{1})", // sd + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) // {3}: Current progress diff --git a/OpenTaiko/Lang/ko/lang.json b/OpenTaiko/Lang/ko/lang.json deleted file mode 100644 index 5c881d1a..00000000 --- a/OpenTaiko/Lang/ko/lang.json +++ /dev/null @@ -1,609 +0,0 @@ -{ - // The folder's name is used as the ID, which is used to identify which localized data to use. - // This includes TJAs with localized titles/subtitles (i.e. TITLEJA/SUBTITLEJA) and Lua scripts which utilize the "lang" variable. - // It is STRONGLY recommended that you use a two-letter language code that follows the ISO 639 standard. Keep the ID lowercased. - // If you aren't sure which code fits your language, please refer to https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes - - // "Language" should include the name of your language in its native text, as well as its English variant in parentheses. - // i.e. "日本語 (Japanese)" - "Language": "한국어 (WIP)", - "Version": "0.6.0.0", - "Entries": { - - // Common - "MENU_RETURN": "Return", - // Difficulties (Any Menu) - "DIFF_EASY": "Easy", - "DIFF_NORMAL": "Normal", - "DIFF_HARD": "Hard", - "DIFF_EX": "Extreme", - "DIFF_EXTRA": "Extra", - "DIFF_EXEXTRA": "Extreme / Extra", - "DIFF_TOWER": "Tower", - "DIFF_DAN": "Dan", - "DIFF_ANY": "Any", - "DIFF_UNKNOWN": "Unknown", - - // Settings - "SETTINGS_SYSTEM": "System options", - "SETTINGS_SYSTEM_DESC": "Settings for the overall system.", - "SETTINGS_GAME": "Gameplay options", - "SETTINGS_GAME_DESC": "Settings to play the drums.", - "SETTINGS_EXIT": "Exit", - "SETTINGS_EXIT_DESC": "Save the settings and exit from CONFIGURATION menu.", - - "SETTINGS_MENU_RETURN": "<< Return to Menu", - "SETTINGS_MENU_RETURN_DESC": "Return to left menu.", - - "SETTINGS_KEYASSIGN_SYSTEM": "System Key Config", - "SETTINGS_KEYASSIGN_SYSTEM_DESC": "A secondary menu for assigning system keys.", - "SETTINGS_KEYASSIGN_GAME": "Gameplay Key Config", - "SETTINGS_KEYASSIGN_GAME_DESC": "A secondary menu to adjust keys used during gameplay.", - "SETTINGS_KEYASSIGN_TRAINING": "Training Mode Key Config", - "SETTINGS_KEYASSIGN_TRAINING_DESC": "A secondary menu to adjust keys used during\nTraining Mode.", - - // Settings - System - "SETTINGS_SYSTEM_LANGUAGE": "System language", - "SETTINGS_SYSTEM_LANGUAGE_DESC": "Change the displayed language\ningame and within the menus.", - "SETTINGS_SYSTEM_PLAYERCOUNT": "Player Count", - "SETTINGS_SYSTEM_PLAYERCOUNT_DESC": "Select how many players you want to play with.\nUp to 5 players can be active at once.", - "SETTINGS_SYSTEM_RELOADSONG": "Reload Songs", - "SETTINGS_SYSTEM_RELOADSONG_DESC": "Reload the song folder.", - "SETTINGS_SYSTEM_RELOADSONGCACHE": "Reload Songs (Hard Reload)", - "SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "Clear the existing cache and\nreload the song folder from scratch.", - - "SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files", - "SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\nWARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores", - "SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...", - // {0}: Total # of score.ini files to be processed - // {1}: # of score.ini files successfully imported - // {2}: # of score.ini files currently processed - // {3}: # of score.ini files skipped - // {4}: # of score.ini files that failed to import due to an error - // {5}: Name of the current score.ini file being processed. - "SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n{1} of {2} imported ({3} skipped / {4} failed)\n\n{5}", - - "SETTINGS_SYSTEM_HIDEDANTOWER": "Hide Dan/Tower", - "SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "Hide Dan and Tower charts\nin the Taiko Mode menu.\nNote: Reload songs to make\n this setting take effect.", - - // Settings - System - Graphics - "SETTINGS_SYSTEM_FULLSCREEN": "Fullscreen Mode", - "SETTINGS_SYSTEM_FULLSCREEN_DESC": "Toggle between fullscreen and windowed mode.", - "SETTINGS_SYSTEM_VSYNC": "VSync Mode", - "SETTINGS_SYSTEM_VSYNC_DESC": "Toggle whether VSync is used.\nTurning it on will cap the FPS at 60,\nwhich will make the note scroll appear smoother\nbut increase input delay.\nTurning it off will uncap the fps,\nwhich will decrease input delay\nbut make the note scroll appear more unstable.", - "SETTINGS_SYSTEM_GRAPHICSAPI": "Graphics API", - "SETTINGS_SYSTEM_GRAPHICSAPI_DESC": "Drawing Method:\nSelect from either OpenGL,\nDirectX11, Vulkan, or Metal.\nOpenGL is slow, but compatible & stable.\nDirectX11 is fast and stable, but only\nworks on Windows.\nVulkan works fastest on Linux.\nMetal only works on MacOS.\n\nThis will take effect after game reboot.", - "SETTINGS_SYSTEM_TEXTUREASYNC": "ASync Texture Loading", - "SETTINGS_SYSTEM_TEXTUREASYNC_DESC": "Texture Loading Type:\nFreeze on startup disappears\nTurn this option off if some textures turn black\nThis change will take effect after restarting OpenTaiko\n", - - "SETTINGS_SYSTEM_BGMOVIE": "Toggle Video Playback", - "SETTINGS_SYSTEM_BGMOVIE_DESC": "Toggle whether background videos are used.\nIf this is enabled and a video is missing from a folder,\nthe background will appear blacked out.", - "SETTINGS_SYSTEM_BGMOVIEDISPLAY": "Video Playback Display Mode", - "SETTINGS_SYSTEM_BGMOVIEDISPLAY_DESC": "Change how videos are displayed\nin the background.", - "SETTINGS_SYSTEM_BGMOVIEDISPLAY_NONE": "None", - "SETTINGS_SYSTEM_BGMOVIEDISPLAY_FULL": "Full Display", - "SETTINGS_SYSTEM_BGMOVIEDISPLAY_MINI": "Mini Display", - "SETTINGS_SYSTEM_BGMOVIEDISPLAY_BOTH": "Both", - "SETTINGS_SYSTEM_LANEOPACITY": "Lane Background Opacity", - "SETTINGS_SYSTEM_LANEOPACITY_DESC": "This controls the lane background opacity\nwhile videos are playing.\n\n0 = completely transparent,\n255 = no transparency", - - "SETTINGS_SYSTEM_BGA": "Draw BGA", - "SETTINGS_SYSTEM_BGA_DESC": "Toggle whether background animations appear.", - "SETTINGS_SYSTEM_DISPLAYCHARA": "Display Characters", - "SETTINGS_SYSTEM_DISPLAYCHARA_DESC": "Show Character Images.", - "SETTINGS_SYSTEM_DISPLAYDANCER": "Display Dancers", - "SETTINGS_SYSTEM_DISPLAYDANCER_DESC": "Show Dancer Images.", - "SETTINGS_SYSTEM_DISPLAYMOB": "Display Mob", - "SETTINGS_SYSTEM_DISPLAYMOB_DESC": "Show Mob Images.", - "SETTINGS_SYSTEM_DISPLAYRUNNER": "Display Runners", - "SETTINGS_SYSTEM_DISPLAYRUNNER_DESC": "Show Runner Images.", - "SETTINGS_SYSTEM_DISPLAYFOOTER": "Display Footer", - "SETTINGS_SYSTEM_DISPLAYFOOTER_DESC": "Show Footer Image.", - "SETTINGS_SYSTEM_DISPLAYPUCHI": "Draw PuchiChara", - "SETTINGS_SYSTEM_DISPLAYPUCHI_DESC": "Show PuchiChara Images.", - "SETTINGS_SYSTEM_SIMPLEMODE": "SimpleMode", - "SETTINGS_SYSTEM_SIMPLEMODE_DESC": "Simplifies drawing by hiding most visual\nflare and effects during gameplay.", - - "SETTINGS_SYSTEM_SKIN": "Current Skin", - "SETTINGS_SYSTEM_SKIN_DESC": "Choose a skin to use from the system folder.", - - // Settings - System - Audio - "SETTINGS_SYSTEM_SONGPLAYBACK": "Toggle Song Playback", - "SETTINGS_SYSTEM_SONGPLAYBACK_DESC": "Toggles whether music is played.", - "SETTINGS_SYSTEM_USESONGVOL": "Apply SONGVOL Metadata", - "SETTINGS_SYSTEM_USESONGVOL_DESC": "This is a partially redundant setting\nthat toggles whether SONGVOL metadata is used.\nValues between 0 and 100 will lower song volume,\nbut any values over 100 do nothing.", - "SETTINGS_SYSTEM_SEVOL": "Sound Effect Volume", - "SETTINGS_SYSTEM_SEVOL_DESC": "Adjust the volume of sounds related to don and ka.\nTo play without hitsounds, set this to 0.\nYou must restart the game after leaving config\nfor this setting to save.", - "SETTINGS_SYSTEM_VOICEVOL": "Voice Volume", - "SETTINGS_SYSTEM_VOICEVOL_DESC": "Adjust the volume of sounds related to a character's voice.\nYou must restart the game after leaving config\nfor this setting to save.", - "SETTINGS_SYSTEM_SONGVOL": "Song Playback Volume", - "SETTINGS_SYSTEM_SONGVOL_DESC": "Adjust the volume of song playback.\nYou must restart the game after leaving config\nfor this setting to save.", - "SETTINGS_SYSTEM_SONGPREVIEWVOL": "Song Preview Volume", - "SETTINGS_SYSTEM_SONGPREVIEWVOL_DESC": "Adjust the volume of song preview.\nYou must restart the game after leaving config\nfor this setting to save.", - "SETTINGS_SYSTEM_VOLINCREMENT": "Keyboard Volume Increment", - "SETTINGS_SYSTEM_VOLINCREMENT_DESC": "Specify how much the Increase Volume and Decrease\nVolume system keys change the volume.\nYou can specify from 1 to 20.", - - "SETTINGS_SYSTEM_SONGPLAYBACKBUFFER": "Song Playback Buffer", - "SETTINGS_SYSTEM_SONGPLAYBACKBUFFER_DESC": "The time taken before song playback during gameplay.\nDecreasing the value may cause songs to play too early.", - "SETTINGS_SYSTEM_SONGPREVIEWBUFFER": "Song Preview Buffer", - "SETTINGS_SYSTEM_SONGPREVIEWBUFFER_DESC": "The time taken before a song preview is played.\nDecreasing this value may cause previews\nto begin while still scrolling.\nYou can specify from 0ms to 10000ms.", - - "SETTINGS_SYSTEM_AUDIOPLAYBACK": "Sound Playback Mode", - "SETTINGS_SYSTEM_AUDIOPLAYBACK_DESC": "ASIO:\n- Only works on sound devices that support asio playback\n- Has the least input delay\nWasapi:\n- Only compatible with Windows\n- Has the second lowest input delay\nBASS:\n- Supported on all platforms\nNote: Exit CONFIGURATION to make\n the setting take effect.", - "SETTINGS_SYSTEM_ASIOPLAYBACK": "Asio Playback Device", - "SETTINGS_SYSTEM_ASIOPLAYBACK_DESC": "Choose a valid device to enable asio playback mode with.\nNote: Exit CONFIGURATION to make\n the setting take effect.", - "SETTINGS_SYSTEM_WASAPIBUFFER": "Wasapi Buffer Size", - "SETTINGS_SYSTEM_WASAPIBUFFER_DESC": "Change the sound buffer for wasapi sound playback mode.\nSet the number to be as low as possible\nwithout causing sound issues such as\nsong freezing and incorrect timing.\nSet it to 0 to use an estimated correct value,\nor use trial and error to find the correct value.\nNote: Exit CONFIGURATION to make\n the setting take effect.", - "SETTINGS_SYSTEM_BASSBUFFER": "Bass Buffer Size", - "SETTINGS_SYSTEM_BASSBUFFER_DESC": "Buffer size when using Bass:\nSize can be between 0~99999ms.\nA value of 0 will make the OS\nautomatically decide the size.\nThe smaller the value, the less\naudio lag there is, but may also\ncause abnormal/crackling audio.\n※ NOTE: Exit CONFIGURATION to make the\n  settings take effect.", - "SETTINGS_SYSTEM_OSTIMER": "OS Timer Mode", - "SETTINGS_SYSTEM_OSTIMER_DESC": "Turning this on will create smoother note scroll,\nbut may introduce sound lag.\nTurning it off will create unstable note scroll,\nbut ensure no sound lag occurs.\n\nIf OFF, DTXMania uses its original\ntimer and the effect is vice versa.", - - // Settings - System - Misc. - "SETTINGS_SYSTEM_LOG": "Create Log File", - "SETTINGS_SYSTEM_LOG_DESC": "Toggle whether a TJAPlayer3.log file is generated\nwhen the game is closed.\nThis tracks the performance of the game\nand identifies errors.", - "SETTINGS_SYSTEM_RANDOMSUBFOLDER": "Use Subfolders in Random Selection", - "SETTINGS_SYSTEM_RANDOMSUBFOLDER_DESC": "Toggle whether subfolders are used\nduring random song selection.", - "SETTINGS_SYSTEM_DEBUGMODE": "Debug Mode", - "SETTINGS_SYSTEM_DEBUGMODE_DESC": "Toggle whether debug mode is enabled.\nThis will cause additional information\nto appear in the bottom right.\nThis will display your latency calibration\nfor hitsoundless play.", - "SETTINGS_SYSTEM_AUTOSCREENSHOT": "Automatic Screenshots", - "SETTINGS_SYSTEM_AUTOSCREENSHOT_DESC": "Toggle whether results screenshots are automatically taken.\nThis will only occur when a highscore is achieved,\nwhich may not correlate to the best play on that song.", - "SETTINGS_SYSTEM_DISCORDRPC": "Discord Rich Presence", - "SETTINGS_SYSTEM_DISCORDRPC_DESC": "Toggle whether song information is shared with Discord.", - "SETTINGS_SYSTEM_BUFFEREDINPUT": "Buffered Input Mode", - "SETTINGS_SYSTEM_BUFFEREDINPUT_DESC": "When this is turned on, no inputs will be dropped\nbut the input poll rate will decrease.\nWhen this is turned off, inputs may be dropped\nbut they will be polled more often.", - - // Settings - Gameplay - "SETTINGS_GAME_GLOBALOFFSET": "Global Offset", - "SETTINGS_GAME_GLOBALOFFSET_DESC": "Change the interpreted OFFSET\nvalue for all charts.\nCan be set between -999 and 999ms.\nTo decrease input lag, set minus value.", - - "SETTINGS_GAME_CALIBRATION": "Calibrate Offset", - "SETTINGS_GAME_CALIBRATION_DESC": "Calibrate your offset.\nGlobal Offset will be overwritten if saved.", - "SETTINGS_GAME_CALIBRATION_OFFSET": "OFFSET: {0}", - - "SETTINGS_GAME_BADCOUNT": "Kanpeki Mode", - "SETTINGS_GAME_BADCOUNT_DESC": "Choose how many BADs are allowed\nbefore a song is automatically failed.\nSet this to 0 to disable the mode.", - "SETTINGS_GAME_NOTELOCK": "Notelock Mode", - "SETTINGS_GAME_NOTELOCK_DESC": "Toggle whether hitting in the space between notes\ncounts as a BAD.", - "SETTINGS_GAME_AILEVEL": "AI Level", - "SETTINGS_GAME_AILEVEL_DESC": "Determines how precise the AI is.\nIf 0, AI is disabled.\nIf 1 or more, the 2P will play as AI.\nDisabled if AUTO 2P is on.", - "SETTINGS_GAME_NORMALGAUGE": "Always Use Normal Gauge", - "SETTINGS_GAME_NORMALGAUGE_DESC": "Force the normal gauge to be used at all times\nregardless of a character's modifiers.", - - "SETTINGS_GAME_AUTOP1": "Player 1 Auto Play", - "SETTINGS_GAME_AUTOP1_DESC": "Toggle whether player 1 plays automatically.", - "SETTINGS_GAME_AUTOP2": "Player 2 Auto Play", - "SETTINGS_GAME_AUTOP2_DESC": "Toggle whether player 2 plays automatically.", - "SETTINGS_GAME_AUTOROLL": "Roll Speed", - "SETTINGS_GAME_AUTOROLL_DESC": "When auto is enabled, rolls will be \nautomatically hit this many times per \nsecond. Has no effect on balloons. \n0 disables auto roll, and the \nmaximum value is one hit per frame.", - - "SETTINGS_GAME_NOINFO": "No Information Mode", - "SETTINGS_GAME_NOINFO_DESC": "Toggle whether song information is shown.\nTurning this on will disable song informaton.\nTurning this off will enable song information.\n", - "SETTINGS_GAME_COMBODISPLAY": "Minimum Combo Display", - "SETTINGS_GAME_COMBODISPLAY_DESC": "Choose the initial number that combo is displayed at.\nCan be specified between 1 and 99999.", - "SETTINGS_GAME_SCOREDISPLAY": "Toggle Score Display", - "SETTINGS_GAME_SCOREDISPLAY_DESC": "Display the current good/ok/bad judgements\n in the bottom left.\n(Single Player Only)", - "SETTINGS_GAME_BRANCHANIME": "Branch Animation Set", - "SETTINGS_GAME_BRANCHANIME_DESC": "Changes the animation set used when a chart branches.\nTYPE-A: Gen-2\nTYPE-B: Gen-3\n", - - "SETTINGS_GAME_DEFAULTDIFF": "Default Difficulty", - "SETTINGS_GAME_DEFAULTDIFF_DESC": "Choose the default difficulty to be chosen on song select.\nIf Extra is not chosen, it will not be visible\nunless the right arrow key is pressed\non that song's Extreme difficulty.", - "SETTINGS_GAME_EXEXTRAANIME": "Use Extreme/Extra Transitions", - "SETTINGS_GAME_EXEXTRAANIME_DESC": "Play a skin-defined animation\nwhile switching between\nExtreme & Extra.", - - // Settings - Gameplay - Training Mode - "SETTINGS_TRAINING_SKIPCOUNT": "Measure Skip Count", - "SETTINGS_TRAINING_SKIPCOUNT_DESC": "The number of measures to skip while\npressing Skip Forward/Back Measure in\nTraining Mode.", - "SETTINGS_TRAINING_JUMPINTERVAL": "Measure Jump Time Interval", - "SETTINGS_TRAINING_JUMPINTERVAL_DESC": "The amount of time in milliseconds needed to\nrepeatedly hit the Left/Right Blue keys in\norder to jump to a bookmarked measure in\nTraining Mode.", - - // Settings - Gameplay - Unlockables - "SETTINGS_GAME_IGNORESONGUNLOCKABLES": "Ignore Song Unlockables", - "SETTINGS_GAME_IGNORESONGUNLOCKABLES_DESC": "Make all songs available ignoring SongUnlockables.db3.\nThis does not add unlock entries to Saves.db3.\nUnlock notifications will still appear on results.\n\nWARNING\nHaving this option ON invalidates any speedrun.", - - // Settings - Broken/Unused/Might Deprecate/Might Update - // Translate these anyways, even if their future is uncertain. - "SETTINGS_SYSTEM_IMAGEPREVIEWBUFFER": "Image Preview Buffer", - "SETTINGS_SYSTEM_IMAGEPREVIEWBUFFER_DESC": "This is a redundant setting\nported from DTXMania.\nIt does nothing.", - "SETTINGS_SYSTEM_TIMESTRETCH": "Time Stretch Mode", - "SETTINGS_SYSTEM_TIMESTRETCH_DESC": "Not sure what this option does.\nIt uses more CPU power,\nand might cause sound issues below 0.9x playback speed.", - "SETTINGS_SYSTEM_FASTRENDER": "Fast Render", - "SETTINGS_SYSTEM_FASTRENDER_DESC": "Toggle whether images are rendered prior to songs loading.", - "SETTINGS_GAME_BRANCHGUIDE": "Branch Guide", - "SETTINGS_GAME_BRANCHGUIDE_DESC": "Toggle whether a numerical guide is displayed\nto view which branch is going to be picked.\nIt doesn't display on auto mode.", - "SETTINGS_GAME_BIGNOTEJUDGE": "Big Note Judgement", - "SETTINGS_GAME_BIGNOTEJUDGE_DESC": "Toggle whether big notes reward being hit with 2 keys.\nIf this is on, using 1 key will cause a visual delay\nbefore they disappear.\nHits with 2 keys will award double points.\nIf this is off, using 1 key will hit them like a regular note.\nDouble points will still be awarded\nAttempting to hit them with 2 keys may cause\nthe next note to be hit instead.", - "SETTINGS_GAME_SURVIVAL": "Survival Mode", - "SETTINGS_GAME_SURVIVAL_DESC": "This mode is broken.\nIt implements a timer system similar to stepmania courses,\nbut some code is missing so the functionality is limited.", - "SETTINGS_GAME_SCOREMODE": "Score Mode", - "SETTINGS_GAME_SCOREMODE_DESC": "Chooses the formula used to determine scores.\nTYPE-A: Gen-1\nTYPE-B: Gen-2\nTYPE-C: Gen-3\n", - "SETTINGS_GAME_SHINUCHI": "Shin'uchi Mode", - "SETTINGS_GAME_SHINUCHI_DESC": "Makes every note worth\nthe same amount of points.\nUses the Gen-4 formula.", - - // Key Assignment - System - "SETTINGS_KEYASSIGN_SYSTEM_CAPTURE": "Capture", - "SETTINGS_KEYASSIGN_SYSTEM_CAPTURE_DESC": "System key assign:\nAssign any key for screen capture.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_INCREASEVOL": "Increase Volume", - "SETTINGS_KEYASSIGN_SYSTEM_INCREASEVOL_DESC": "System key assign:\nAssign any key for increasing music volume.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_DECREASEVOL": "Decrease Volume", - "SETTINGS_KEYASSIGN_SYSTEM_DECREASEVOL_DESC": "System key assign:\nAssign any key for decreasing music volume.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_DISPLAYHITS": "Display Hit Values", - "SETTINGS_KEYASSIGN_SYSTEM_DISPLAYHITS_DESC": "System key assign:\nAssign any key for displaying hit values.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_DISPLAYDEBUG": "Display Debug Menu", - "SETTINGS_KEYASSIGN_SYSTEM_DISPLAYDEBUG_DESC": "System key assign:\nAssign any key for displaying debug menu.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_QUICKCONFIG": "Quick Config", - "SETTINGS_KEYASSIGN_SYSTEM_QUICKCONFIG_DESC": "System key assign:\nAssign any key for accessing the quick config.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_QUICKHEYA": "Player Customization", - "SETTINGS_KEYASSIGN_SYSTEM_QUICKHEYA_DESC": "System key assign:\nAssign any key for player customization.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_SONGSORT": "Change Song Sort", - "SETTINGS_KEYASSIGN_SYSTEM_SONGSORT_DESC": "System key assign:\nAssign any key for resorting songs.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_AUTO1P": "Toggle Auto (P1)", - "SETTINGS_KEYASSIGN_SYSTEM_AUTO1P_DESC": "System key assign:\nAssign any key for toggling auto (P1).\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_AUTO2P": "Toggle Auto (P2)", - "SETTINGS_KEYASSIGN_SYSTEM_AUTO2P_DESC": "System key assign:\nAssign any key for toggling auto (P2).\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_TRAINING": "Toggle Training Mode", - "SETTINGS_KEYASSIGN_SYSTEM_TRAINING_DESC": "System key assign:\nAssign any key for toggling training mode.\n(You can only use keyboard. You can't\nuse gamepads.)", - "SETTINGS_KEYASSIGN_SYSTEM_BGMOVIEDISPLAY": "Cycle Video Playback Display", - "SETTINGS_KEYASSIGN_SYSTEM_BGMOVIEDISPLAY_DESC": "System key assign:\nAssign any key for cycling video playback\ndisplay modes.\n(You can only use keyboard. You can't\nuse gamepads.)", - - // Key Assignment - Gameplay - "SETTINGS_KEYASSIGN_GAME_DECIDE": "Decide", - "SETTINGS_KEYASSIGN_GAME_DECIDE_DESC": "Menu decide key.", - "SETTINGS_KEYASSIGN_GAME_CANCEL": "Cancel", - "SETTINGS_KEYASSIGN_GAME_CANCEL_DESC": "Menu cancel key.", - "SETTINGS_KEYASSIGN_GAME_LEFTCHANGE": "LeftChange", - "SETTINGS_KEYASSIGN_GAME_LEFTCHANGE_DESC": "Menu left change key.", - "SETTINGS_KEYASSIGN_GAME_RIGHTCHANGE": "RightChange", - "SETTINGS_KEYASSIGN_GAME_RIGHTCHANGE_DESC": "Menu right change key.", - - "SETTINGS_KEYASSIGN_GAME_LEFTRED": "LeftRed", - "SETTINGS_KEYASSIGN_GAME_LEFTRED_DESC": "Drums key assign:\nTo assign key/pads for LeftRed\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED": "RightRed", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED_DESC": "Drums key assign:\nTo assign key/pads for RightRed\n button.", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE": "LeftBlue", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE_DESC": "Drums key assign:\nTo assign key/pads for LeftBlue\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE": "RightBlue", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE_DESC": "Drums key assign:\nTo assign key/pads for RightBlue\n button.", - "SETTINGS_KEYASSIGN_GAME_CLAP": "Clap", - "SETTINGS_KEYASSIGN_GAME_CLAP_DESC": "Konga key assign:\nTo assign key/pads for Clap\n button.", - - "SETTINGS_KEYASSIGN_GAME_LEFTRED2P": "LeftRed2P", - "SETTINGS_KEYASSIGN_GAME_LEFTRED2P_DESC": "Drums key assign:\nTo assign key/pads for LeftRed2P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED2P": "RightRed2P", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED2P_DESC": "Drums key assign:\nTo assign key/pads for RightRed2P\n button.", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE2P": "LeftBlue2P", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE2P_DESC": "Drums key assign:\nTo assign key/pads for LeftBlue2P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE2P": "RightBlue2P", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE2P_DESC": "Drums key assign:\nTo assign key/pads for RightBlue2P\n button.", - "SETTINGS_KEYASSIGN_GAME_CLAP2P": "Clap2P", - "SETTINGS_KEYASSIGN_GAME_CLAP2P_DESC": "Konga key assign:\nTo assign key/pads for Clap2P\n button.", - - "SETTINGS_KEYASSIGN_GAME_LEFTRED3P": "LeftRed3P", - "SETTINGS_KEYASSIGN_GAME_LEFTRED3P_DESC": "Drums key assign:\nTo assign key/pads for LeftRed3P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED3P": "RightRed3P", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED3P_DESC": "Drums key assign:\nTo assign key/pads for RightRed3P\n button.", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE3P": "LeftBlue3P", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE3P_DESC": "Drums key assign:\nTo assign key/pads for LeftBlue3P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE3P": "RightBlue3P", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE3P_DESC": "Drums key assign:\nTo assign key/pads for RightBlue3P\n button.", - "SETTINGS_KEYASSIGN_GAME_CLAP3P": "Clap3P", - "SETTINGS_KEYASSIGN_GAME_CLAP3P_DESC": "Konga key assign:\nTo assign key/pads for Clap3P\n button.", - - "SETTINGS_KEYASSIGN_GAME_LEFTRED4P": "LeftRed4P", - "SETTINGS_KEYASSIGN_GAME_LEFTRED4P_DESC": "Drums key assign:\nTo assign key/pads for LeftRed4P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED4P": "RightRed4P", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED4P_DESC": "Drums key assign:\nTo assign key/pads for RightRed4P\n button.", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE4P": "LeftBlue4P", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE4P_DESC": "Drums key assign:\nTo assign key/pads for LeftBlue4P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE4P": "RightBlue4P", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE4P_DESC": "Drums key assign:\nTo assign key/pads for RightBlue4P\n button.", - "SETTINGS_KEYASSIGN_GAME_CLAP4P": "Clap4P", - "SETTINGS_KEYASSIGN_GAME_CLAP4P_DESC": "Konga key assign:\nTo assign key/pads for Clap4P\n button.", - - "SETTINGS_KEYASSIGN_GAME_LEFTRED5P": "LeftRed5P", - "SETTINGS_KEYASSIGN_GAME_LEFTRED5P_DESC": "Drums key assign:\nTo assign key/pads for LeftRed5P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED5P": "RightRed5P", - "SETTINGS_KEYASSIGN_GAME_RIGHTRED5P_DESC": "Drums key assign:\nTo assign key/pads for RightRed5P\n button.", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE5P": "LeftBlue5P", - "SETTINGS_KEYASSIGN_GAME_LEFTBLUE5P_DESC": "Drums key assign:\nTo assign key/pads for LeftBlue5P\n button.", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE5P": "RightBlue5P", - "SETTINGS_KEYASSIGN_GAME_RIGHTBLUE5P_DESC": "Drums key assign:\nTo assign key/pads for RightBlue5P\n button.", - "SETTINGS_KEYASSIGN_GAME_CLAP5P": "Clap5P", - "SETTINGS_KEYASSIGN_GAME_CLAP5P_DESC": "Konga key assign:\nTo assign key/pads for Clap5P\n button.", - - // Key Assignment - Training - "SETTINGS_KEYASSIGN_TRAINING_PAUSE": "Pause Training", - "SETTINGS_KEYASSIGN_TRAINING_PAUSE_DESC": "Drums key assign:\nAssign any key for pausing.", - "SETTINGS_KEYASSIGN_TRAINING_AUTO": "Toggle Auto", - "SETTINGS_KEYASSIGN_TRAINING_AUTO_DESC": "Drums key assign:\nAssign any key for toggling auto.", - "SETTINGS_KEYASSIGN_TRAINING_BOOKMARK": "Add/Remove Bookmark", - "SETTINGS_KEYASSIGN_TRAINING_BOOKMARK_DESC": "Drums key assign:\nAssign any key for adding/removing bookmarks.", - "SETTINGS_KEYASSIGN_TRAINING_INCREASESCROLL": "Increase Scroll Speed", - "SETTINGS_KEYASSIGN_TRAINING_INCREASESCROLL_DESC": "Drums key assign:\nAssign any key for increasing scroll speed.", - "SETTINGS_KEYASSIGN_TRAINING_DECREASESCROLL": "Decrease Scroll Speed", - "SETTINGS_KEYASSIGN_TRAINING_DECREASESCROLL_DESC": "Drums key assign:\nAssign any key for decreasing scroll speed.", - "SETTINGS_KEYASSIGN_TRAINING_INCREASESPEED": "Increase Song Speed", - "SETTINGS_KEYASSIGN_TRAINING_INCREASESPEED_DESC": "Drums key assign:\nAssign any key for increasing song speed.", - "SETTINGS_KEYASSIGN_TRAINING_DECREASESPEED": "Decrease Song Speed", - "SETTINGS_KEYASSIGN_TRAINING_DECREASESPEED_DESC": "Drums key assign:\nAssign any key for decreasing song speed.", - "SETTINGS_KEYASSIGN_TRAINING_BRANCHNORMAL": "Set Branch to Normal", - "SETTINGS_KEYASSIGN_TRAINING_BRANCHNORMAL_DESC": "Drums key assign:\nAssign any key for setting a chart's branch\nto normal.", - "SETTINGS_KEYASSIGN_TRAINING_BRANCHEXPERT": "Set Branch to Expert", - "SETTINGS_KEYASSIGN_TRAINING_BRANCHEXPERT_DESC": "Drums key assign:\nAssign any key for setting a chart's branch\nto expert.", - "SETTINGS_KEYASSIGN_TRAINING_BRANCHMASTER": "Set Branch to Master", - "SETTINGS_KEYASSIGN_TRAINING_BRANCHMASTER_DESC": "Drums key assign:\nAssign any key for setting a chart's branch\nto master.", - "SETTINGS_KEYASSIGN_TRAINING_MOVEFORWARD": "Move Forward Measure", - "SETTINGS_KEYASSIGN_TRAINING_MOVEFORWARD_DESC": "Drums key assign:\nAssign any key for moving forward a measure.", - "SETTINGS_KEYASSIGN_TRAINING_MOVEBACKWARD": "Move Back Measure", - "SETTINGS_KEYASSIGN_TRAINING_MOVEBACKWARD_DESC": "Drums key assign:\nAssign any key for moving back a measure.", - "SETTINGS_KEYASSIGN_TRAINING_SKIPFORWARD": "Skip Forward Measures", - "SETTINGS_KEYASSIGN_TRAINING_SKIPFORWARD_DESC": "Drums key assign:\nAssign any key for skipping forward measures.", - "SETTINGS_KEYASSIGN_TRAINING_SKIPBACKWARD": "Skip Back Measures", - "SETTINGS_KEYASSIGN_TRAINING_SKIPBACKWARD_DESC": "Drums key assign:\nAssign any key for skipping back measures.", - "SETTINGS_KEYASSIGN_TRAINING_JUMPTOFIRST": "Jump to First Measure", - "SETTINGS_KEYASSIGN_TRAINING_JUMPTOFIRST_DESC": "Drums key assign:\nAssign any key for jumping to the first measure.", - "SETTINGS_KEYASSIGN_TRAINING_JUMPTOLAST": "Jump to Last Measure", - "SETTINGS_KEYASSIGN_TRAINING_JUMPTOLAST_DESC": "Drums key assign:\nAssign any key for jumping to the last measure.", - - // Title Screen - "TITLE_MODE_TAIKO": "Taiko Mode", - "TITLE_MODE_DAN": "Dan-i Dojo", - "TITLE_MODE_TOWER": "Taiko Towers", - "TITLE_MODE_SHOP": "Shop", - "TITLE_MODE_STORY": "Taiko Adventure", - "TITLE_MODE_HEYA": "My Room", - "TITLE_MODE_SETTINGS": "Settings", - "TITLE_MODE_EXIT": "Exit", - "TITLE_MODE_ONLINE": "Online Lounge", - "TITLE_MODE_DOCUMENT": "Open Encyclopedia", - "TITLE_MODE_AI": "AI Battle Mode", - "TITLE_MODE_STATS": "Player Stats", - "TITLE_MODE_EDITOR": "Chart Editor", - "TITLE_MODE_TOOLS": "Open Toolbox", - - "TITLE_MODE_TAIKO_DESC": "Play your favorite\nsongs at your own pace!", - "TITLE_MODE_DAN_DESC": "Play multiple charts in continuation\nfollowing challenging exams\nin order to get a PASS rank!", - "TITLE_MODE_TOWER_DESC": "Play long charts within a limited\ncount of lives and reach\nthe top of the tower!", - "TITLE_MODE_SHOP_DESC": "Buy new songs, petit-chara or characters\nusing the medals you earned in game!", - "TITLE_MODE_STORY_DESC": "Surpass various obstacles and\nunlock new content and horizons!", - "TITLE_MODE_HEYA_DESC": "Change your nameplate info\n or your character visuals!", - "TITLE_MODE_SETTINGS_DESC": "Change your game style\n or general settings!", - "TITLE_MODE_EXIT_DESC": "Quit the game.\nSee you next time!", - "TITLE_MODE_ONLINE_DESC": "Download new charts\nand content from\n the internet!", - "TITLE_MODE_DOCUMENT_DESC": "Learn about OpenTaiko\nrelated features and\nhow to install new content!", - "TITLE_MODE_AI_DESC": "Fight a strong AI through\nmultiple sections and\naim for victory!", - "TITLE_MODE_STATS_DESC": "Watch and track your\nprogression!", - "TITLE_MODE_EDITOR_DESC": "Create your own .tja charts\nbased on your favorite songs ", - "TITLE_MODE_TOOLS_DESC": "Use various tools to insert\nnew custom content!", - - // Song Select - // {0}: Folder path - "SONGSELECT_RETURN_PATH": "Return ({0})", - "SONGSELECT_RANDOM": "Random Song", - // {0}: Folder path - "SONGSELECT_RANDOM_PATH": "Random Song ({0})", - - "SONGSELECT_SORT": "Sort Menu", - "SONGSELECT_SORT_PATH": "Path", - "SONGSELECT_SORT_TITLE": "Title", - "SONGSELECT_SORT_SUBTITLE": "Subtitle", - "SONGSELECT_SORT_LEVEL": "Displayed Level", - - // {0}: Main BPM - "SONGSELECT_INFO_BPM": "BPM: {0:0.###}", - // {0}: Main BPM - // {1}: Minimum BPM - // {2}: Maximum BPM - "SONGSELECT_INFO_BPM_VARIABLE": "BPM: {0:0.###} ({1:0.###}-{2:0.###})", - // {0}: Charter name - "SONGSELECT_INFO_CHARTER": "Charter: {0}", - - "SONGSELECT_QUICKCONFIG": "Quick Config", - "SONGSELECT_QUICKCONFIG_MORE": "More...", - - // Modals - "MODAL_TITLE_COIN": "Coins Obtained!", - "MODAL_TITLE_CHARA": "New Character!", - "MODAL_TITLE_PUCHI": "New Puchichara!", - "MODAL_TITLE_NAMEPLATE": "New Title!", - "MODAL_TITLE_SONG": "New Song!", - // {0}: Newly obtained coins - // {1}: New total coin count - "MODAL_MESSAGE_COIN": "+{0} Coins (Total: {1})", - - // Online Lounge - "ONLINE_EXIT": "Return to main menu", - "ONLINE_DOWNLOAD": "Download content", - "ONLINE_DOWNLOAD_CDN": "Select a CDN", - "ONLINE_DOWNLOAD_SONG": "Download Songs", - "ONLINE_DOWNLOAD_CHARA": "Download Characters (Not available)", - "ONLINE_DOWNLOAD_PUCHI": "Download Puchicharas (Not available)", - "ONLINE_MULTIPLAYER": "Online Multiplayer (Not available)", - - // Taiko Towers - "TOWER_FLOOR_REACHED": "Reached floor", - "TOWER_FLOOR_INITIAL": "F", - "TOWER_SCORE": "Score", - "TOWER_SCORE_INITIAL": "P", - - // Dan Dojo - "DAN_CONDITION_NAME_SOUL": "Soul gauge", - "DAN_CONDITION_NAME_GOOD": "Good count", - "DAN_CONDITION_NAME_OK": "Ok count", - "DAN_CONDITION_NAME_BAD": "Bad count", - "DAN_CONDITION_NAME_SCORE": "Score", - "DAN_CONDITION_NAME_ROLL": "Rolls count", - "DAN_CONDITION_NAME_HIT": "Hit count", - "DAN_CONDITION_NAME_COMBO": "Combo", - "DAN_CONDITION_NAME_ACCURACY": "Accuracy", - "DAN_CONDITION_NAME_ADLIB": "ADLIB count", - "DAN_CONDITION_NAME_BOMB": "Bombs hit", - - // Heya / Quick Heya - "HEYA_PUCHI": "Puchichara", - "HEYA_CHARA": "Character", - "HEYA_DAN": "Dan Title", - "HEYA_NAMEPLATE": "Nameplate Title", - - // {0}: Asset name - "HEYA_DESCRIPTION_NAME": "Name: {0}", - // {0}: Asset rarity - "HEYA_DESCRIPTION_RARITY": "Rarity: {0}", - "HEYA_DESCRIPTION_RARITY0": "Poor", - "HEYA_DESCRIPTION_RARITY1": "Common", - "HEYA_DESCRIPTION_RARITY2": "Uncommon", - "HEYA_DESCRIPTION_RARITY3": "Rare", - "HEYA_DESCRIPTION_RARITY4": "Epic", - "HEYA_DESCRIPTION_RARITY5": "Legendary", - "HEYA_DESCRIPTION_RARITY6": "Mythical", - // {0}: Asset author - "HEYA_DESCRIPTION_AUTHOR": "Author: {0}", - // {0}: Gauge type - "HEYA_DESCRIPTION_EFFECTS_GAUGETYPE": "Gauge Type: {0}", - "HEYA_DESCRIPTION_EFFECTS_GAUGETYPE_NORMAL": "Normal", - "HEYA_DESCRIPTION_EFFECTS_GAUGETYPE_HARD": "Hard", - "HEYA_DESCRIPTION_EFFECTS_GAUGETYPE_EXTREME": "Extreme", - "HEYA_DESCRIPTION_EFFECTS_GAUGETYPE_NORMAL_DESC": "Finish the play within the clear zone to pass the song!", - "HEYA_DESCRIPTION_EFFECTS_GAUGETYPE_HARD_DESC": "The gauge starts full and sharply depletes at each miss!\nBe careful, if the gauge value reachs 0, the play is automatically failed!", - "HEYA_DESCRIPTION_EFFECTS_GAUGETYPE_EXTREME_DESC": "The gauge starts full and sharply depletes at each miss!\nA strange power seems to reduce the margin of error through the song...", - // {0}: Percentage of mines - "HEYA_DESCRIPTION_EFFECTS_BOMBFACTOR": "Bomb Factor: {0}% of notes converted to mines in Minesweeper", - // {0}: Percentage of fuse rolls - "HEYA_DESCRIPTION_EFFECTS_FUSEFACTOR": "Fuse Factor: {0}% of balloons converted to fuse rolls in Minesweeper", - "HEYA_DESCRIPTION_EFFECTS_ALLSWAP": "All big notes become Swap notes", - "HEYA_DESCRIPTION_EFFECTS_SHOWADLIB": "ADLib notes become visible", - // {0}: # of auto-rolls per second - "HEYA_DESCRIPTION_EFFECTS_AUTOROLL": "Automatic Rolls at {0} hits/s", - "HEYA_DESCRIPTION_EFFECTS_SPLITLANE": "Split Lanes", - // {0}: Coin multiplier - "HEYA_DESCRIPTION_COIN_MULTIPLIER": "Coin multiplier: x{0}", - - // Unlock requirements & messages (Any Menu) - "UNLOCK_CONDITION_INVALID": "[ERROR] Invalid condition", - "UNLOCK_CONDITION_SHOP": "Item only avaliable at the Shop.", // cs - // {0}: Price of item - "UNLOCK_CONDITION_COST": "Coin price: {0}", // ch, cs, cm - "UNLOCK_COIN_BOUGHT": "Item bought!", - "UNLOCK_COIN_MORE": "Not enough coins!", - - "UNLOCK_CONDITION_ERROR": "The following condition: {0} requires {1} values.", - "UNLOCK_CONDITION_ERROR2": "The following condition: {0} requires ({1} * n) values and n references.", - - // {0}: Coin earn requirement - // {1}: Current progress - "UNLOCK_CONDITION_EARN": "Earn a total of {0} coins to unlock this item! ({1}/{0})", // ce - // {0}: Total AI plays needed - // {1}: Current progress - "UNLOCK_CONDITION_AIPLAY": "Play {0} AI battle matches to unlock this item! ({1}/{0})", // ap - // {0}: Total AI wins needed - // {1}: Current progress - "UNLOCK_CONDITION_AIWIN": "Win {0} AI battle matches to unlock this item! ({1}/{0})", // aw - // {0}: Total plays needed - // {1}: Current progress - "UNLOCK_CONDITION_PLAY": "Play {0} songs to unlock this item! ({1}/{0})", // tp - // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) - // {1}: # of songs needed - // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) - // {3}: Current progress - "UNLOCK_CONDITION_PLAYDIFF": "{0} {1} songs on {2} difficulty to unlock this item! ({3}/{1})", // dp - // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) - // {1}: # of songs needed - // {2}: Star rating (i.e. 8*, 9*, 10*, etc.) - // {3}: Current progress - "UNLOCK_CONDITION_PLAYLEVEL": "{0} {1} songs with a star rating of {2} to unlock this item! ({3}/{1})", // lp - // {0}: Current progress - // {1}: Total # of challenges - "UNLOCK_CONDITION_CHALLENGE": "Get the following performances to unlock this item: ({0}/{1})", // sp, sg, sc - // {0}: Clear type - // {1}: Song name - // {2}: Difficulty type - "UNLOCK_CONDITION_CHALLENGE_PLAYDIFF": "- {0} {1} on {2} difficulty.", // sp - // {0}: Clear type - // {1}: # of songs needed - // {2}: Genre name (i.e. "OpenTaiko Chapter II", "Dashy's Secrets", "Touhou Arrangements", etc.) - // {3}: Current progress - "UNLOCK_CONDITION_CHALLENGE_PLAYGENRE": "- {0} {1} songs within the {2} folder. ({3}/{1})", // sg - // {0}: Clear type - // {1} # of songs needed - // {2} Charter name (i.e. Komi, bol, Dashy, Colin, etc.) - // {3} Current progress - "UNLOCK_CONDITION_CHALLENGE_PLAYCHARTER": "- {0} {1} charts made by {2}. ({3}/{1})", // sc - - "UNLOCK_CONDITION_REQUIRE_PLAY": "Play", - "UNLOCK_CONDITION_REQUIRE_PLAY_MORE": "Play", - "UNLOCK_CONDITION_REQUIRE_ASSIST": "Get an Assisted Clear on", - "UNLOCK_CONDITION_REQUIRE_ASSIST_MORE": "Get at least an Assisted Clear on", - "UNLOCK_CONDITION_REQUIRE_CLEAR": "Get a Clear on", - "UNLOCK_CONDITION_REQUIRE_CLEAR_MORE": "Get at least a Clear on", - "UNLOCK_CONDITION_REQUIRE_FC": "Get a Full Combo on", - "UNLOCK_CONDITION_REQUIRE_FC_MORE": "Get at least a Full Combo on", - "UNLOCK_CONDITION_REQUIRE_PERFECT": "Get a Perfect on", - "UNLOCK_CONDITION_REQUIRE_PERFECT_MORE": "Get a Perfect on", - - // Pause Menu (Taiko/Tower/Dan Mode) - "PAUSE_TITLE": "Pause", - "PAUSE_RESUME": "Resume", - "PAUSE_RESTART": "Restart", - "PAUSE_EXIT": "Quit", - - // AI Info - "AI_NAME": "AI", - "AI_TITLE": "Deus-Ex-Machina", - // {0}: Section No. - "AI_SECTION": "{0}구", // ~區 - - // Mods - "MOD_NONE": "None", - "MOD_BLANK": "-", - "MOD_SWITCH_OFF": "Off", - "MOD_SWITCH_ON": "On", - "MOD_SCOREMULTIPLY": "Score Multiplier : {0}", - "MOD_COINMULTIPLY": "Coins Multiplier : {0}", - - "MOD_SPEED": "Scroll Speed", - - "MOD_HIDE": "Invisible", - "MOD_STEALTH": "Stealth", - - "MOD_FLIP": "Flip Notes", - - "MOD_RANDOM": "Random", - "MOD_RANDOM_SHUFFLE": "Shuffle", - "MOD_RANDOM_CHAOS": "Chaos", - - "MOD_TIMING": "Timing", - "MOD_TIMING1": "Loose", - "MOD_TIMING2": "Lenient", - "MOD_TIMING3": "Normal", - "MOD_TIMING4": "Strict", - "MOD_TIMING5": "Rigorous", - - "MOD_JUSTICE": "Justice Mode", - "MOD_SAFE": "Safe", - "MOD_JUST": "Just", - - "MOD_GAMETYPE": "Game Type", - "MOD_GAMETYPE_TAIKO": "Taiko", - "MOD_GAMETYPE_KONGA": "Konga", - - "MOD_GAMEMODE": "Game Mode", - "MOD_GAMEMODE_TRAINING": "Training Mode", - - "MOD_AUTO": "Auto", - - "MOD_SONGSPEED": "Song Playback Speed", - "SETTINGS_MOD_SONGSPEED_DESC": "Change song playback speed.\nIf the Time Stretch option is enabled,\nsound issues may occur below 0.9x playback speed.\nNote: It also changes the songs' pitch.", - - "MOD_HITSOUND": "Instrument", - - "MOD_FUN": "Fun Mods", - "MOD_FUN_AVALANCHE": "Avalanche", - "MOD_FUN_MINESWEEPER": "Minesweeper" - }, - // In the case that a key is missing, this message will display, with the name of the missing/unknown key. - "InvalidKey": "KEY NOT FOUND: {0}", - // If a skin does not include a font for a specific language, the game will fallback to this language's fonts. This ensures that all text for all languages can be clearly read. - // Font name can be a file, or the name of an already installed font (i.e. "Arial"). If using a font name instead of a file name, please ensure that the user already has this font installed on their computer. - "FontName": "Arial", - "BoxFontName": "font.ttf" -} diff --git a/OpenTaiko/Lang/nl/lang.json b/OpenTaiko/Lang/nl/lang.json index 2122eeb1..2d061961 100644 --- a/OpenTaiko/Lang/nl/lang.json +++ b/OpenTaiko/Lang/nl/lang.json @@ -499,6 +499,10 @@ // {1}: Current progress "UNLOCK_CONDITION_PLAY": "Speel {0} liedjes om dit item te ontgrendelen! ({1}/{0})", // tp // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{0} {1} songs to unlock this item! ({2}/{1})", // sd + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) // {3}: Current progress diff --git a/OpenTaiko/Lang/ru/lang.json b/OpenTaiko/Lang/ru/lang.json index 0d1116a7..cf0b6457 100644 --- a/OpenTaiko/Lang/ru/lang.json +++ b/OpenTaiko/Lang/ru/lang.json @@ -502,6 +502,10 @@ // {1}: Current progress "UNLOCK_CONDITION_PLAY": "Играйте {0} песн., чтобы разблокировать этот товар! ({1}/{0})", // tp // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{0} {1} songs to unlock this item! ({2}/{1})", // sd + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) // {3}: Current progress diff --git a/OpenTaiko/Lang/zh/lang.json b/OpenTaiko/Lang/zh/lang.json index 8a6f1cd8..3b8117c0 100644 --- a/OpenTaiko/Lang/zh/lang.json +++ b/OpenTaiko/Lang/zh/lang.json @@ -502,6 +502,10 @@ // {1}: Current progress "UNLOCK_CONDITION_PLAY": "游玩 {0} 首歌曲以解锁该物品!({1}/{0})", // tp // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) + // {1}: Total plays needed + // {2}: Current progress + "UNLOCK_CONDITION_PLAYDISTINCT": "{0} {1} songs to unlock this item! ({2}/{1})", // sd + // {0}: Clear type (i.e. Play, Clear, FC, Perfect, etc.) // {1}: # of songs needed // {2}: Difficulty type (i.e. Easy, Normal, Hard, Ex, etc.) // {3}: Current progress diff --git a/OpenTaiko/System/Open-World Memories/Modules/Modal/Script.lua b/OpenTaiko/System/Open-World Memories/Modules/Modal/Script.lua index 8eb40420..d0c493a9 100644 --- a/OpenTaiko/System/Open-World Memories/Modules/Modal/Script.lua +++ b/OpenTaiko/System/Open-World Memories/Modules/Modal/Script.lua @@ -24,7 +24,7 @@ local font_modal_body = nil local font_modal_plate = nil -- Modal counter -local modal_duration = 2000 +local modal_duration = 500 -- 2000 local modal_counter = 0 local script_busy = false @@ -32,6 +32,9 @@ local script_busy = false local modal_loopanim_duration = 1000 local modal_loopanim_counter = 0 +-- Song modal cache +local modal_preimage_ref = nil + -- Tmp (until new format) local modal_asset_id = 0 @@ -90,6 +93,11 @@ function registerNewModal(player, rarity, modal_type, modal_asset_informations, -- > modal_asset_visual_references: CTexture (Preimage) _modal_header = getLocalizedString("MODAL_TITLE_SONG") _modal_body = (modal_current_info ~= nil) and modal_current_info.ldTitle:GetString("") or "??? (Not found)" + if (modal_current_info ~= nil) then + modal_preimage_ref = modal_current_visual(modal_current_info) + else + modal_preimage_ref = nil + end end @@ -184,8 +192,8 @@ function draw() modal_current_visual:DrawTitlePlate(960, 490, 255, modal_current_info.Value.nameplateInfo.iType, tx_title, modal_current_rarity, modal_current_info.Key) elseif modal_current_type == 4 then -- Song - if modal_current_visual ~= nil then - modal_current_visual:t2D_DisplayImage_AnchorCenter(960,490) + if modal_preimage_ref ~= nil then + modal_preimage_ref:t2D_DisplayImage_AnchorCenter(960,490) end tx_body = getTextTex(ttk_modal_body, false, false) tx_body:t2D_DisplayImage_AnchorCenter(960,790) diff --git a/OpenTaiko/src/Databases/DBSongUnlockables.cs b/OpenTaiko/src/Databases/DBSongUnlockables.cs index 8d3ec14f..1e3a52c9 100644 --- a/OpenTaiko/src/Databases/DBSongUnlockables.cs +++ b/OpenTaiko/src/Databases/DBSongUnlockables.cs @@ -4,12 +4,12 @@ using static OpenTaiko.DBSongUnlockables; namespace OpenTaiko; -internal class DBSongUnlockables : CSavableT> { +internal class DBSongUnlockables : CSavableT> { /* DISPLAYED : Song displayed in song select, only a lock appearing on the side, audio preview plays * GRAYED : Box grayed, song preview does not play * BLURED : Like grayed, but with a glitch effect on the song title and preimage making it unreadable * HIDDEN : Song not appears on the song select list until being unlocked - */ + */ public enum EHiddenIndex { DISPLAYED = 0, GRAYED = 1, @@ -20,9 +20,9 @@ internal class DBSongUnlockables : CSavableT> public DBSongUnlockables() { _fn = @$"{OpenTaiko.strEXEのあるフォルダ}Databases{Path.DirectorySeparatorChar}SongUnlockables.db3"; using (var connection = new SqliteConnection(@$"Data Source={_fn}")) { - connection.Open(); - - // Get songs info + connection.Open(); + + // Get songs info var command = connection.CreateCommand(); command.CommandText = @$" @@ -80,7 +80,7 @@ internal class DBSongUnlockables : CSavableT> Modal.EModalType.Song, HRarity.tRarityToModalInt(item.Value.rarity), _node, - OpenTaiko.stageSongSelect.actPreimageパネル.tGenerateAndGetPreimage(_node?.score[0] ?? null) + OpenTaiko.stageSongSelect.actPreimageパネル.tGenerateAndGetPreimage ), _player); diff --git a/OpenTaiko/src/Databases/DBUnlockables.cs b/OpenTaiko/src/Databases/DBUnlockables.cs index d3228b0a..ae7cb594 100644 --- a/OpenTaiko/src/Databases/DBUnlockables.cs +++ b/OpenTaiko/src/Databases/DBUnlockables.cs @@ -11,7 +11,7 @@ class DBUnlockables { ["lp"] = 3, ["sp"] = 2, ["sg"] = 2, - + ["sd"] = 2, ["sc"] = 2, ["ce"] = 1, ["tp"] = 1, @@ -107,6 +107,7 @@ class DBUnlockables { * cs : "Coins shop", coin requirement, payable only within the Medal shop selection screen * cm : "Coins menu", coin requirement, payable only within the song select screen (used only for songs) * ce : "Coins earned", coins earned since the creation of the save file, 1 value : [Total earned coins] + * sd : "Song distinct (performance)", count of the number of distinct chart where a given status was got, condition 2 values : [Song count, Clear status (0~4)], input 1 value [Count of fullfiled songs] * dp : "Difficulty pass", count of difficulties pass, unlock check during the results screen, condition 3 values : [Difficulty int (0~4), Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition] * lp : "Level pass", count of level pass, unlock check during the results screen, condition 3 values : [Star rating, Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition] * sp : "Song performance", count of a specific song pass, unlock check during the results screen, condition 2 x n values for n songs : [Difficulty int (0~4, if -1 : Any), Clear status (0~4), ...], input 1 value [Count of fullfiled songs], n references for n songs (Song ids) @@ -150,6 +151,11 @@ class DBUnlockables { return tConditionMet(new int[] { (int)OpenTaiko.SaveFileInstances[player].data.TotalPlaycount }, screen); else return (false, CLangManager.LangInstance.GetString("UNLOCK_CONDITION_ERROR", this.Condition, this.RequiredArgCount.ToString())); + case "sd": + if (this.Values.Length == 2) + return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen); + else + return (false, CLangManager.LangInstance.GetString("UNLOCK_CONDITION_ERROR", this.Condition, this.RequiredArgCount.ToString())); case "dp": case "lp": if (this.Values.Length == 3) @@ -197,6 +203,7 @@ class DBUnlockables { case "tp": case "ap": case "aw": + case "sd": bool fulfiled = this.tValueRequirementMet(inputValues[0], this.Values[0]); return (fulfiled, ""); case "dp": @@ -208,6 +215,8 @@ class DBUnlockables { case "sc": fulfiled = this.tValueRequirementMet(inputValues[0], this.Reference.Length); return (fulfiled, ""); + default: + return (false, null); } } // Trying to unlock an item from the Shop menu (If shop => check if enough coins, else => Invalid command) @@ -274,6 +283,24 @@ class DBUnlockables { return CLangManager.LangInstance.GetString("UNLOCK_CONDITION_AIWIN", this.Values[0], SaveData.AIBattleModeWins); case "tp": return CLangManager.LangInstance.GetString("UNLOCK_CONDITION_PLAY", this.Values[0], SaveData.TotalPlaycount); + case "sd": { + var _aimedStatus = this.Values[1]; + + if (_aimedStatus < (int)EClearStatus.NONE || _aimedStatus >= (int)EClearStatus.TOTAL) return (CLangManager.LangInstance.GetString("UNLOCK_CONDITION_INVALID")); + + int[] _values = { + SaveData.bestPlaysStats.DistinctPlays, + SaveData.bestPlaysStats.DistinctClears, + SaveData.bestPlaysStats.DistinctClears, + SaveData.bestPlaysStats.DistinctFCs, + SaveData.bestPlaysStats.DistinctPerfects + }; + + var _count = _values[_aimedStatus]; + var statusString = GetRequiredClearStatus(_aimedStatus); + + return CLangManager.LangInstance.GetString("UNLOCK_CONDITION_PLAYDISTINCT", statusString, this.Values[0], _count); + } case "dp": { var _aimedDifficulty = this.Values[0]; var _aimedStatus = this.Values[1]; @@ -433,6 +460,22 @@ class DBUnlockables { var bpDistinctCharts = OpenTaiko.SaveFileInstances[player].data.bestPlaysDistinctCharts; var chartStats = OpenTaiko.SaveFileInstances[player].data.bestPlaysStats; + if (this.Condition == "sd") { + _aimedStatus = this.Values[1]; + + int[] _values = { + chartStats.DistinctPlays, + chartStats.DistinctClears, + chartStats.DistinctClears, + chartStats.DistinctFCs, + chartStats.DistinctPerfects + }; + + if (_aimedStatus < (int)EClearStatus.NONE || _aimedStatus >= (int)EClearStatus.TOTAL) return 0; + + return (_values[_aimedStatus]); + } + switch (this.Condition) { case "dp": var _table = chartStats.ClearStatuses[_aimedDifficulty]; diff --git a/OpenTaiko/src/Stages/05.SongSelect/CActSelectPreimageパネル.cs b/OpenTaiko/src/Stages/05.SongSelect/CActSelectPreimageパネル.cs index 29647934..5a3c03ba 100644 --- a/OpenTaiko/src/Stages/05.SongSelect/CActSelectPreimageパネル.cs +++ b/OpenTaiko/src/Stages/05.SongSelect/CActSelectPreimageパネル.cs @@ -61,8 +61,8 @@ internal class CActSelectPreimageパネル : CActivity { return 0; } - public CTexture? tGenerateAndGetPreimage(CScore? cScoreInst) { - this.tUpdatePreimage(cScoreInst); + public CTexture? tGenerateAndGetPreimage(CSongListNode cScoreInst) { + this.tUpdatePreimage(cScoreInst?.score[0] ?? null); return tGetPreimageTextureResized(); }