iidx: fix region select and add qpro select

This commit is contained in:
seth
2021-05-17 21:52:19 +00:00
committed by Jennifer Taylor
parent 84e731aabb
commit b963b461d1
5 changed files with 1179 additions and 4 deletions

View File

@@ -317,15 +317,20 @@ def viewsettings() -> Response:
djinfo = frontend.get_all_player_info([userid])[userid]
if not djinfo:
abort(404)
versions = sorted(
[version for (game, version, name) in frontend.all_games()],
reverse=True,
)
return render_react(
'IIDX Game Settings',
'iidx/settings.react.js',
{
'player': djinfo,
'versions': {version: name for (game, version, name) in frontend.all_games()},
'qpros': frontend.get_all_items(versions),
},
{
'updateqpro': url_for('iidx_pages.updateqpro'),
'updateflags': url_for('iidx_pages.updateflags'),
'updatesettings': url_for('iidx_pages.updatesettings'),
'updatename': url_for('iidx_pages.updatename'),
@@ -362,11 +367,15 @@ def updateflags() -> Dict[str, Any]:
flagint += 0x040 if flags['rival_win_lose'] else 0
flagint += 0x080 if flags['rival_info'] else 0
flagint += 0x100 if flags['hide_play_count'] else 0
flagint += 0x200 if flags['disable_graph_cutin'] else 0
flagint += 0x400 if flags['classic_hispeed'] else 0
flagint += 0x1000 if flags['hide_iidx_id'] else 0
settings_dict.replace_int('flags', flagint)
# Update special case flags
settings_dict.replace_int('disable_song_preview', 1 if flags['disable_song_preview'] else 0)
settings_dict.replace_int('effector_lock', 1 if flags['effector_lock'] else 0)
settings_dict.replace_int('disable_hcn_color', 1 if flags['disable_hcn_color'] else 0)
# Update the settings dict
profile.replace_dict('settings', settings_dict)
@@ -379,6 +388,37 @@ def updateflags() -> Dict[str, Any]:
}
@iidx_pages.route('/options/qpro/update', methods=['POST'])
@jsonify
@loginrequired
def updateqpro() -> Dict[str, Any]:
frontend = IIDXFrontend(g.data, g.config, g.cache)
qpros = request.get_json()['qpro']
version = int(request.get_json()['version'])
user = g.data.local.user.get_user(g.userID)
if user is None:
raise Exception('Unable to find user to update!')
# Grab profile and qpro dict that needs updating
profile = g.data.local.user.get_profile(GameConstants.IIDX, version, user.id)
if profile is None:
raise Exception('Unable to find profile to update!')
qpro_dict = profile.get_dict('qpro')
for qpro in qpros:
qpro_dict.replace_int(qpro, qpros[qpro])
# Update the qpro dict
profile.replace_dict('qpro', qpro_dict)
g.data.local.user.put_profile(GameConstants.IIDX, version, user.id, profile)
# Return updated qpro
return {
'qpro': frontend.format_qpro(qpro_dict),
'version': version,
}
@iidx_pages.route('/options/settings/update', methods=['POST'])
@jsonify
@loginrequired

View File

@@ -1,5 +1,5 @@
# vim: set fileencoding=utf-8
from typing import Any, Dict, Iterator, Optional, Tuple
from typing import Any, Dict, Iterator, Optional, Tuple, List
from flask_caching import Cache # type: ignore
@@ -60,6 +60,18 @@ class IIDXFrontend(FrontendBase):
21066: 16212,
23030: 22096,
23051: 22097,
11101: 21214,
14101: 21221,
15104: 21225,
15102: 21226,
15101: 21231,
15103: 21237,
16105: 21240,
16104: 21242,
16103: 21253,
16102: 21258,
16101: 21262,
14100: 21220,
}
# Some charts were changed, and others kept the same on these
if chart in [0, 1, 2]:
@@ -113,8 +125,12 @@ class IIDXFrontend(FrontendBase):
'rival_win_lose': (flags & 0x040) != 0,
'rival_info': (flags & 0x080) != 0,
'hide_play_count': (flags & 0x100) != 0,
'disable_graph_cutin': (flags & 0x200) != 0,
'classic_hispeed': (flags & 0x400) != 0,
'hide_iidx_id': (flags & 0x1000) != 0,
'disable_song_preview': settings_dict.get_int('disable_song_preview') != 0,
'effector_lock': settings_dict.get_int('effector_lock') != 0,
'disable_hcn_color': settings_dict.get_int('disable_hcn_color') != 0,
}
def format_settings(self, settings_dict: ValidatedDict) -> Dict[str, Any]:
@@ -132,6 +148,41 @@ class IIDXFrontend(FrontendBase):
'judge': settings_dict.get_int('judge'),
'pacemaker': settings_dict.get_int('pacemaker'),
'effector_preset': settings_dict.get_int('effector_preset'),
'explosion_size': settings_dict.get_int('explosion_size'),
'note_preview': settings_dict.get_int('note_preview'),
}
def format_qpro(self, qpro_dict: ValidatedDict) -> Dict[str, Any]:
return {
'body': qpro_dict.get_int('body'),
'face': qpro_dict.get_int('face'),
'hair': qpro_dict.get_int('hair'),
'hand': qpro_dict.get_int('hand'),
'head': qpro_dict.get_int('head'),
}
def get_all_items(self, versions: list) -> Dict[str, List[Dict[str, Any]]]:
result = {}
for version in versions:
qpro = self.__format_iidx_extras(version)
result[version] = qpro['qpros']
return result
def __format_iidx_extras(self, version) -> Dict[str, List[Dict[str, Any]]]:
# Gotta look up the unlock catalog
items = self.data.local.game.get_items(self.game, version)
return {
"qpros": [
{
"identifier": item.data.get_str("identifier"),
"id": str(item.id),
"name": item.data.get_str("name"),
"type": item.type[3:],
}
for item in items
if item.type in ['qp_body', 'qp_face', 'qp_hair', 'qp_hand', 'qp_head']
],
}
def format_profile(self, profile: ValidatedDict, playstats: ValidatedDict) -> Dict[str, Any]:
@@ -149,6 +200,7 @@ class IIDXFrontend(FrontendBase):
'ddan': self.format_dan_rank(profile.get_int('dgrade', -1)),
'srank': profile.get_int('sgrade', -1),
'drank': profile.get_int('dgrade', -1),
'qpro': self.format_qpro(profile.get_dict('qpro')),
})
if 'shop_location' in profile:
shop_id = profile.get_int('shop_location')

View File

@@ -5,10 +5,14 @@ var pagenav = new History(valid_versions);
var menu_option_names = {
'alphabet': 'alphabet folders',
'classic_hispeed': 'classic hispeed',
'difficulty': 'difficulty folders',
'disable_graph_cutin': 'disable graph cut-in',
'disable_hcn_color': 'disable hcn color',
'disable_song_preview': 'disable song previews',
'effector_lock': 'lock effector',
'grade': 'grade folders',
'hide_iidx_id': 'hide iidx id',
'hide_play_count': 'hide play count on profile',
'rival_info': 'rival info box',
'rival_played': 'rival played folders',
@@ -24,8 +28,12 @@ var valid_menu_options = [
'rival_win_lose',
'rival_info',
'hide_play_count',
'disable_graph_cutin',
'classic_hispeed',
'hide_iidx_id',
'disable_song_preview',
'effector_lock',
'disable_hcn_color',
];
var theme_option_names = {
'beam': 'Note Beam',
@@ -40,7 +48,16 @@ var theme_option_names = {
'voice': 'Menu Announcer Voice',
'pacemaker': 'Pacemaker Skin',
'effector_preset': 'Effector Preset',
'explosion_size': 'Explosion Size',
'note_preview': 'Note Preview',
};
var valid_qpro_options = [
'body',
'face',
'hair',
'hand',
'head',
];
var settings_view = React.createClass({
@@ -53,10 +70,13 @@ var settings_view = React.createClass({
version: version,
menu_changed: {},
theme_changed: {},
qpro_changed: {},
menu_saving: {},
theme_saving: {},
qpro_saving: {},
menu_saved: {},
theme_saved: {},
qpro_saved: {},
new_name: window.player[version].name,
editing_name: false,
new_prefecture: window.player[version].prefecture,
@@ -77,6 +97,21 @@ var settings_view = React.createClass({
}
},
setQproChanged: function(val) {
this.state.qpro_changed[this.state.version] = val;
return this.state.qpro_changed
},
setQproSaving: function(val) {
this.state.qpro_saving[this.state.version] = val;
return this.state.qpro_saving;
},
setQproSaved: function(val) {
this.state.qpro_saved[this.state.version] = val;
return this.state.qpro_saved;
},
setMenuChanged: function(val) {
this.state.menu_changed[this.state.version] = val;
return this.state.menu_changed;
@@ -107,6 +142,27 @@ var settings_view = React.createClass({
return this.state.theme_saved;
},
saveQproOptions: function(event) {
this.setState({qpro_saving: this.setQproSaving(true), qpro_saved: this.setQproSaved(false)});
AJAX.post(
Link.get('updateqpro'),
{
version: this.state.version,
qpro: this.state.player[this.state.version].qpro,
},
function(response) {
var player = this.state.player
player[response.version].qpro = response.qpro;
this.setState({
player: player,
qpro_saving: this.setQproSaving(false),
qpro_saved: this.setQproSaved(true),
qpro_changed: this.setQproChanged(false),
})
}.bind(this)
)
},
saveMenuOptions: function(event) {
this.setState({menu_saving: this.setMenuSaving(true), menu_saved: this.setMenuSaved(false)});
AJAX.post(
@@ -258,11 +314,12 @@ var settings_view = React.createClass({
},
renderPrefecture: function(player) {
regions = this.state.version >= 25 ? Regions2 : Regions;
return (
<LabelledSection vertical={true} label="Prefecture">{
!this.state.editing_prefecture ?
<span>
<span>{Regions[player.prefecture]}</span>
<span>{regions[player.prefecture]}</span>
<Edit
onClick={function(event) {
this.setState({editing_prefecture: true});
@@ -273,7 +330,7 @@ var settings_view = React.createClass({
<SelectInt
name="prefecture"
value={this.state.new_prefecture}
choices={Regions}
choices={regions}
onChange={function(choice) {
this.setState({new_prefecture: choice});
}.bind(this)}
@@ -351,6 +408,62 @@ var settings_view = React.createClass({
{this.renderPrefecture(player)}
{this.renderHomeArcade(player)}
</div>
<div className="section">
<h3>QPro</h3>
<form className="inline">
<div className="fields">
{
valid_qpro_options.map(function(qpro_option) {
var player = this.state.player[this.state.version]
var items = window.qpros[this.state.version].filter(function (qpro) {
return qpro.type == qpro_option
});
var results = {};
items
.map(function(item) { return { 'id': item.id, 'name': `${item.name}` } })
.forEach (value => results[value.id] = value.name);
return (
<div className="field">
<b>{qpro_option}</b>
<br/>
<SelectInt
name={qpro_option}
value={player.qpro[qpro_option]}
choices={results}
onChange={function(choice) {
var player = this.state.player;
player[this.state.version].qpro[qpro_option] = choice;
this.setState({
player: player,
qpro_changed: this.setQproChanged(true),
})
}.bind(this)}
/>
</div>
)
}.bind(this))
}
<div className="field">
<input
type="submit"
value="save"
disabled={!this.state.qpro_changed[this.state.version]}
onClick={function(event) {
this.saveQproOptions(event);
}.bind(this)}
/>
{ this.state.qpro_saving[this.state.version] ?
<img className="loading" src={Link.get('static', 'loading-16.gif')} /> :
null
}
{ this.state.qpro_saved[this.state.version] ?
<span>&#x2713;</span> :
null
}
</div>
</div>
</form>
</div>
<div className="section">
<h3>Theme</h3>
{Object.keys(IIDXOptions[this.state.version]).map(function(theme_option) {

View File

@@ -1047,4 +1047,913 @@ var IIDXOptions = {
"PITCH",
],
},
"25": {
"turntable": [
"DEFAULT",
"TRAN",
"TAITYOU",
"DELTA",
"HAPPYSKY",
"DISTORTED",
"GOLD",
"TROOPERS",
"EMPRESS",
"SIRIUS",
"RESORT",
"LINCLE",
"TRICORO",
"SPADA",
"SHAKUNETSU",
"SUPER STAR",
"PENDUAL",
"COPULA",
"SINOBUZ",
"CANNON BALLERS",
],
"burst": [
"DEFAULT",
"1ST",
"9TH",
"RED",
"HAPPYSKY",
"DISTORTED",
"GOLD",
"TROOPERS",
"EMPRESS",
"SIRIUS",
"RESORT",
"LINCLE",
"TRICORO",
"SPADA",
"SUPER STAR",
"PENDUAL",
"COPULA",
"SINOBUZ",
"CANNON SPARK",
],
"towel": [
"DEFAULT",
"SIGSIG",
"NAIBU FRAME",
"SKY",
"KAMAITACHI",
"TAORU",
"COSMOS",
"DOKYO KYODAI",
"BLIND J",
"MEISAI",
"BLOOMIN",
"MARIE A",
"ELISHA",
"KUNG-FU",
"TUNE BEAT3",
"EMPRESS",
"PRO WORLD",
"3Y3S",
"UMEGIRI",
"KANZAKI",
"ROCK DA H",
"DOOR RAINBOW",
"AEGIS",
"VERMILLION",
"PHOENIX",
"LUCKY DAYS",
"ALMACE",
"DIAMOND CROSS",
"MAMONIS",
"ASHEMU",
"BULLUVEGOLA",
"BERIDZEBETH1",
"LEVASLATER",
"STN",
"RCHE1",
"NEULAKYUSSRA",
"CYBELE",
"CUVELIA",
"LIBERATION",
"PRALUDIUM",
"SHOJO ALICE",
"REGENERATION",
"20SYSTEM BG",
"DOGMA A",
"DOGMA B",
"ELEKTRICK U",
"MAGIC LOVE",
"SPADA",
"S!CK",
"CONCEPTUAL",
"ELPIS1",
"RUMRUM",
"SYNC-ANTHEM",
"THOR'S HAM",
"PLAN 8",
"KASOKUKAN",
"8BIT P",
"PLANARIAN",
"DYNAMITE",
"DECOHERENCE",
"TORIKAGO",
"PROOF",
"BRAVE GLOW1",
"BRAVE GLOW2",
"VEGA1",
"VEGA2",
"CASINO FIRE",
"NEW LIGHTS",
"SHAKUNETSU2",
"NOCHOKU",
"KYATORARE",
"ONLY ONE",
"JIZAL",
"JACKTILLO",
"JACKHANS",
"JENS",
"AMDUSIAN",
"MAXWELLION",
"LAPLASIA",
"RCHE2",
"SUMOMO",
"FAULA",
"BERIDZEBETH2",
"ELPIS2",
"FERIRA",
"ALL PATONA",
"MEISAI",
"NINGYO",
"URARA",
"SHELTER",
"ACID PUMPER",
"X",
"ON THE FM",
"NIGHTMARE",
"HIGHCHARGE",
"GODSPEED1",
"GODSPEED2",
"GENERATE",
"DYNAMITE",
"DEVIL'S GEAR",
"DPS",
"AZISAI",
"LA DOLCE",
"AO-1",
"HELL OR HELL",
"RYOUSHI",
"EKINEKO",
"FUYUTUBAKI",
"PAPAYAPA",
"KARASU",
"ASIAN DIS",
"TOGAKUSHI",
"MODULAR TEC",
"SHISHIKASUMU",
"MUSIC IS ANS",
"VIVA",
"SINOBUZ",
"CHASER XX",
"AMOR",
"EDIBLE FLWR",
"HI*BISCUS",
"MIDNIGHT LDY",
"FUTURE IS D",
"BREAK STASIS",
"SOGEN NO OJO",
"EXHAUST HYPE",
"25UI",
"ENGOKU OVRKL",
"BREAKIN CHAN",
"TSUGARU SETS",
"YELLOW SKTCH",
"STEEL EDGE",
"GO AHEAD!!",
"[[dummy-133]]",
"IZANAMI",
"GUNGNIR",
"[[dummy-136]]",
"BROGAMER",
"[[dummy-138]]",
"[[dummy-139]]",
"QUAKES",
"[[dummy-141]]",
"ECHIDNA",
"SNAKEY KUNGF",
"BUZRA",
"SHINOBI RNK",
"HOUGU BZR",
],
"noteskin": [
"DEFAULT",
"6DOT",
"4DOT",
"GORGEOUS",
"AQUA",
"GAL",
"FOTON",
"PASTEL",
"SIMPLE",
"LIGHT",
"TRICORO",
"BUBBLE",
],
"full_combo": [
"DEFAULT",
"RED",
"HAPPYSKY",
"DISTORTED",
"GOLD",
"TROOPERS",
"EMPRESS",
"SIRIUS",
"RESORT",
"LINCLE",
"TRICORO",
"SPADA",
"SUPER STAR",
"PENDUAL",
"COPULA",
"SINOBUZ",
"CANNON FINISH",
],
"beam": [
"DEFAULT",
"SHORT",
"LONG",
"ORANGE",
"PINK",
"MONOCHRO",
"VERY SHORT",
"LIGHTNING",
"SUPER STAR",
"COPULIGHT",
"CB BEAM",
],
"judge": [
"DEFAULT",
"DIGITAL",
"SMART",
"METALLIC",
"TECHNO",
"WIRE",
"ABYSS",
"SPADA",
"ANCIENT",
"SUPER STAR",
"ELECTRONIC",
"SINOBUZ",
"SEGMENT",
],
"pacemaker": [
"DEFAULT",
"SIGSIG",
"NAIBU FRAME",
"SKY",
"KAMAITACHI",
"TAORU",
"COSMOS",
"DOKYO KYODAI",
"BLIND J",
"MEISAI",
"BLOOMIN",
"MARIE A",
"ELISHA",
"KUNG-FU",
"TUNE BEAT3",
"EMPRESS",
"PRO WORLD",
"3Y3S",
"UMEGIRI",
"KANZAKI",
"ROCK DA H",
"DOOR RAINBOW",
"AEGIS",
"VERMILLION",
"PHOENIX",
"LUCKY DAYS",
"ALMACE",
"DIAMOND CROSS",
"MAMONIS",
"ASHEMU",
"BULLUVEGOLA",
"BERIDZEBETH1",
"LEVASLATER",
"STN",
"RCHE1",
"NEULAKYUSSRA",
"CYBELE",
"CUVELIA",
"LIBERATION",
"PRALUDIUM",
"SHOJO ALICE",
"REGENERATION",
"20SYSTEM BG",
"DOGMA A",
"DOGMA B",
"ELEKTRICK U",
"MAGIC LOVE",
"SPADA",
"S!CK",
"CONCEPTUAL",
"ELPIS1",
"RUMRUM",
"SYNC-ANTHEM",
"THOR'S HAM",
"PLAN 8",
"KASOKUKAN",
"8BIT P",
"PLANARIAN",
"DYNAMITE",
"DECOHERENCE",
"TORIKAGO",
"PROOF",
"BRAVE GLOW1",
"BRAVE GLOW2",
"VEGA1",
"VEGA2",
"CASINO FIRE",
"NEW LIGHTS",
"SHAKUNETSU2",
"NOCHOKU",
"KYATORARE",
"ONLY ONE",
"JIZAL",
"JACKTILLO",
"JACKHANS",
"JENS",
"AMDUSIAN",
"MAXWELLION",
"LAPLASIA",
"RCHE2",
"SUMOMO",
"FAULA",
"BERIDZEBETH2",
"ELPIS2",
"FERIRA",
"ALL PATONA",
"MEISAI",
"NINGYO",
"URARA",
"SHELTER",
"ACID PUMPER",
"X",
"ON THE FM",
"NIGHTMARE",
"HIGHCHARGE",
"GODSPEED1",
"GODSPEED2",
"GENERATE",
"DYNAMITE",
"DEVIL'S GEAR",
"DPS",
"AZISAI",
"LA DOLCE",
"AO-1",
"HELL OR HELL",
"RYOUSHI",
"EKINEKO",
"FUYUTUBAKI",
"PAPAYAPA",
"KARASU",
"ASIAN DIS",
"TOGAKUSHI",
"MODULAR TEC",
"SHISHIKASUMU",
"MUSIC IS ANS",
"VIVA",
"SINOBUZ",
"CHASER XX",
"AMOR",
"EDIBLE FLWR",
"HI*BISCUS",
"MIDNIGHT LDY",
"FUTURE IS D",
"BREAK STASIS",
"SOGEN NO OJO",
"EXHAUST HYPE",
"25UI",
"ENGOKU OVRKL",
"BREAKIN CHAN",
"TSUGARU SETS",
"YELLOW SKTCH",
"STEEL EDGE",
"GO AHEAD!!",
"[[dummy-133]]",
"IZANAMI",
"GUNGNIR",
"[[dummy-136]]",
"BROGAMER",
"[[dummy-138]]",
"[[dummy-139]]",
"QUAKES",
"[[dummy-141]]",
"ECHIDNA",
"SNAKEY KUNGF",
"BUZRA",
"SHINOBI RNK",
"HOUGU BZR",
],
"effector_preset": [
"OFF",
"ECHO",
"COMPRESSOR",
"CHORUS",
"GARGLE",
"EQ ONLY",
],
"voice": [
"DEFAULT",
"MORI ICCHOU",
],
},
"26": {
"frame": [
"DEFAULT",
"8th style",
"14 GOLD",
"17 SIRIUS",
"19 Lincle",
"16 EMPRESS",
"21 SPADA",
"3rd style",
"12 HAPPY SKY",
],
"bgm": [
"DEFAULT",
"8th style",
"14 GOLD",
"17 SIRIUS",
"19 Lincle",
"16 EMPRESS",
"21 SPADA",
"3rd style",
"HAPPY SKY",
"GO OVER WITH GLARE"
],
"turntable": [
"DEFAULT",
"TRAN",
"TAITYOU",
"DELTA",
"HAPPYSKY",
"DISTORTED",
"GOLD",
"TROOPERS",
"EMPRESS",
"SIRIUS",
"RESORT",
"LINCLE",
"TRICORO",
"SPADA",
"SHAKUNETSU",
"SUPER STAR",
"PENDUAL",
"COPULA",
"SINOBUZ",
"CANNON BALLERS",
"ROOTAGE",
],
"burst": [
"DEFAULT",
"1ST",
"9TH",
"RED",
"HAPPYSKY",
"DISTORTED",
"GOLD",
"TROOPERS",
"EMPRESS",
"SIRIUS",
"RESORT",
"LINCLE",
"TRICORO",
"SPADA",
"SUPER STAR",
"PENDUAL",
"COPULA",
"SINOBUZ",
"CANNON SPARK",
"ROOTAGE",
],
"towel": [
"DEFAULT",
"SIGSIG",
"NAIBU FRAME",
"SKY",
"KAMAITACHI",
"TAORU",
"COSMOS",
"DOKYO KYODAI",
"BLIND J",
"MEISAI",
"BLOOMIN",
"MARIE A",
"ELISHA",
"KUNG-FU",
"TUNE BEAT3",
"EMPRESS",
"PRO WORLD",
"3Y3S",
"UMEGIRI",
"KANZAKI",
"ROCK DA H",
"DOOR RAINBOW",
"AEGIS",
"VERMILLION",
"PHOENIX",
"LUCKY DAYS",
"ALMACE",
"DIAMOND CROSS",
"MAMONIS",
"ASHEMU",
"BULLUVEGOLA",
"BERIDZEBETH1",
"LEVASLATER",
"STN",
"RCHE1",
"NEULAKYUSSRA",
"CYBELE",
"CUVELIA",
"LIBERATION",
"PRALUDIUM",
"SHOJO ALICE",
"REGENERATION",
"20SYSTEM BG",
"DOGMA A",
"DOGMA B",
"ELEKTRICK U",
"MAGIC LOVE",
"SPADA",
"S!CK",
"CONCEPTUAL",
"ELPIS1",
"RUMRUM",
"SYNC-ANTHEM",
"THOR'S HAM",
"PLAN 8",
"KASOKUKAN",
"8BIT P",
"PLANARIAN",
"DYNAMITE",
"DECOHERENCE",
"TORIKAGO",
"PROOF",
"BRAVE GLOW1",
"BRAVE GLOW2",
"VEGA1",
"VEGA2",
"CASINO FIRE",
"NEW LIGHTS",
"SHAKUNETSU2",
"NOCHOKU",
"KYATORARE",
"ONLY ONE",
"JIZAL",
"JACKTILLO",
"JACKHANS",
"JENS",
"AMDUSIAN",
"MAXWELLION",
"LAPLASIA",
"RCHE2",
"SUMOMO",
"FAULA",
"BERIDZEBETH2",
"ELPIS2",
"FERIRA",
"ALL PATONA",
"MEISAI",
"NINGYO",
"URARA",
"SHELTER",
"ACID PUMPER",
"X",
"ON THE FM",
"NIGHTMARE",
"HIGHCHARGE",
"GODSPEED1",
"GODSPEED2",
"GENERATE",
"DYNAMITE",
"DEVIL'S GEAR",
"DPS",
"AZISAI",
"LA DOLCE",
"AO-1",
"HELL OR HELL",
"RYOUSHI",
"EKINEKO",
"FUYUTUBAKI",
"PAPAYAPA",
"KARASU",
"ASIAN DIS",
"TOGAKUSHI",
"MODULAR TEC",
"SHISHIKASUMU",
"MUSIC IS ANS",
"VIVA",
"SINOBUZ",
"CHASER XX",
"AMOR",
"EDIBLE FLWR",
"HI*BISCUS",
"MIDNIGHT LDY",
"FUTURE IS D",
"BREAK STASIS",
"SOGEN NO OJO",
"EXHAUST HYPE",
"25UI",
"ENGOKU OVRKL",
"BREAKIN CHAN",
"TSUGARU SETS",
"YELLOW SKTCH",
"STEEL EDGE",
"GO AHEAD!!",
"[[dummy-133]]",
"IZANAMI",
"GUNGNIR",
"[[dummy-136]]",
"BROGAMER",
"[[dummy-138]]",
"[[dummy-139]]",
"QUAKES",
"[[dummy-141]]",
"ECHIDNA",
"SNAKEY KUNGF",
"BUZRA",
"SHINOBI RNK",
"HOUGU BZR",
"HADES",
"DEATHZIGOQ",
"TOKYO SHINWA",
"INITATION",
"EMERALDAS",
"CHEMICAL COO",
"NIGHT CITY",
"SHIMURUGU",
"N'PA PA BBQ",
"ANCHOR",
"IIDX AIR RAC",
"THE DAY OF J",
"HEISEI",
"IDC feat.",
"YUM YUM JELL",
"NATSU NO NI",
"HURRY HURRY",
"OVERTIME",
"MISUTORESU",
"EMBER LIGHTS",
],
"noteskin": [
"DEFAULT",
"6DOT",
"4DOT",
"GORGEOUS",
"AQUA",
"GAL",
"FOTON",
"PASTEL",
"SIMPLE",
"LIGHT",
"TRICORO",
"BUBBLE",
],
"full_combo": [
"DEFAULT",
"RED",
"HAPPYSKY",
"DISTORTED",
"GOLD",
"TROOPERS",
"EMPRESS",
"SIRIUS",
"RESORT",
"LINCLE",
"TRICORO",
"SPADA",
"SUPER STAR",
"PENDUAL",
"COPULA",
"SINOBUZ",
"CANNON FINISH",
"ROOTAGE",
],
"beam": [
"DEFAULT",
"SHORT",
"LONG",
"ORANGE",
"PINK",
"MONOCHRO",
"VERY SHORT",
"LIGHTNING",
"SUPER STAR",
"COPULIGHT",
"CB BEAM",
],
"judge": [
"DEFAULT",
"DIGITAL",
"SMART",
"METALLIC",
"TECHNO",
"WIRE",
"ABYSS",
"SPADA",
"ANCIENT",
"SUPER STAR",
"ELECTRONIC",
"SINOBUZ",
"SEGMENT",
"ROOTAGE",
],
"pacemaker": [
"DEFAULT",
"SIGSIG",
"NAIBU FRAME",
"SKY",
"KAMAITACHI",
"TAORU",
"COSMOS",
"DOKYO KYODAI",
"BLIND J",
"MEISAI",
"BLOOMIN",
"MARIE A",
"ELISHA",
"KUNG-FU",
"TUNE BEAT3",
"EMPRESS",
"PRO WORLD",
"3Y3S",
"UMEGIRI",
"KANZAKI",
"ROCK DA H",
"DOOR RAINBOW",
"AEGIS",
"VERMILLION",
"PHOENIX",
"LUCKY DAYS",
"ALMACE",
"DIAMOND CROSS",
"MAMONIS",
"ASHEMU",
"BULLUVEGOLA",
"BERIDZEBETH1",
"LEVASLATER",
"STN",
"RCHE1",
"NEULAKYUSSRA",
"CYBELE",
"CUVELIA",
"LIBERATION",
"PRALUDIUM",
"SHOJO ALICE",
"REGENERATION",
"20SYSTEM BG",
"DOGMA A",
"DOGMA B",
"ELEKTRICK U",
"MAGIC LOVE",
"SPADA",
"S!CK",
"CONCEPTUAL",
"ELPIS1",
"RUMRUM",
"SYNC-ANTHEM",
"THOR'S HAM",
"PLAN 8",
"KASOKUKAN",
"8BIT P",
"PLANARIAN",
"DYNAMITE",
"DECOHERENCE",
"TORIKAGO",
"PROOF",
"BRAVE GLOW1",
"BRAVE GLOW2",
"VEGA1",
"VEGA2",
"CASINO FIRE",
"NEW LIGHTS",
"SHAKUNETSU2",
"NOCHOKU",
"KYATORARE",
"ONLY ONE",
"JIZAL",
"JACKTILLO",
"JACKHANS",
"JENS",
"AMDUSIAN",
"MAXWELLION",
"LAPLASIA",
"RCHE2",
"SUMOMO",
"FAULA",
"BERIDZEBETH2",
"ELPIS2",
"FERIRA",
"ALL PATONA",
"MEISAI",
"NINGYO",
"URARA",
"SHELTER",
"ACID PUMPER",
"X",
"ON THE FM",
"NIGHTMARE",
"HIGHCHARGE",
"GODSPEED1",
"GODSPEED2",
"GENERATE",
"DYNAMITE",
"DEVIL'S GEAR",
"DPS",
"AZISAI",
"LA DOLCE",
"AO-1",
"HELL OR HELL",
"RYOUSHI",
"EKINEKO",
"FUYUTUBAKI",
"PAPAYAPA",
"KARASU",
"ASIAN DIS",
"TOGAKUSHI",
"MODULAR TEC",
"SHISHIKASUMU",
"MUSIC IS ANS",
"VIVA",
"SINOBUZ",
"CHASER XX",
"AMOR",
"EDIBLE FLWR",
"HI*BISCUS",
"MIDNIGHT LDY",
"FUTURE IS D",
"BREAK STASIS",
"SOGEN NO OJO",
"EXHAUST HYPE",
"25UI",
"ENGOKU OVRKL",
"BREAKIN CHAN",
"TSUGARU SETS",
"YELLOW SKTCH",
"STEEL EDGE",
"GO AHEAD!!",
"[[dummy-133]]",
"IZANAMI",
"GUNGNIR",
"[[dummy-136]]",
"BROGAMER",
"[[dummy-138]]",
"[[dummy-139]]",
"QUAKES",
"[[dummy-141]]",
"ECHIDNA",
"SNAKEY KUNGF",
"BUZRA",
"SHINOBI RNK",
"HOUGU BZR",
"HADES",
"DEATHZIGOQ",
"TOKYO SHINWA",
"INITATION",
"EMERALDAS",
"CHEMICAL COO",
"NIGHT CITY",
"SHIMURUGU",
"N'PA PA BBQ",
"ANCHOR",
"IIDX AIR RAC",
"THE DAY OF J",
"HEISEI",
"IDC feat.",
"YUM YUM JELL",
"NATSU NO NI",
"HURRY HURRY",
"OVERTIME",
"MISUTORESU",
"EMBER LIGHTS",
],
"effector_preset": [
"OFF",
"ECHO",
"COMPRESSOR",
"CHORUS",
"GARGLE",
"EQ ONLY",
],
"explosion_size": [
"100%",
"70%",
"80%",
"90%",
"110%",
"120%",
"130%",
],
"note_preview": [
"DEFAULT",
"ON",
"OFF",
],
},
}

View File

@@ -54,3 +54,64 @@ var Regions = [
"欧州 (Europe)",
"海外 (Other)",
];
Regions2 = [
null,
"北海道",
"青森県",
"岩手県",
"宮城県",
"秋田県",
"山形県",
"福島県",
"茨城県",
"栃木県",
"群馬県",
"埼玉県",
"千葉県",
"東京都",
"神奈川県",
"新潟県",
"富山県",
"石川県",
"福井県",
"山梨県",
"長野県",
"岐阜県",
"静岡県",
"愛知県",
"三重県",
"滋賀県",
"京都府",
"大阪府",
"兵庫県",
"奈良県",
"和歌山県",
"鳥取県",
"島根県",
"岡山県",
"広島県",
"山口県",
"徳島県",
"香川県",
"愛媛県",
"高知県",
"福岡県",
"佐賀県",
"長崎県",
"熊本県",
"大分県",
"宮崎県",
"鹿児島県",
"沖縄県",
"香港",
"韓国",
"台湾",
"タイ",
"インドネシア",
"シンガポール",
"フィリピン",
"マカオ",
"アメリカ",
"海外 (Other)",
];