danoniplus 45.5.5 → 46.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/danoni_main.js +169 -113
- package/js/lib/danoni_constants.js +50 -38
- package/package.json +1 -1
package/js/danoni_main.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Source by tickle
|
|
6
6
|
* Created : 2018/10/08
|
|
7
|
-
* Revised : 2026/03/
|
|
7
|
+
* Revised : 2026/03/14
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver
|
|
12
|
-
const g_revisedDate = `2026/03/
|
|
11
|
+
const g_version = `Ver 46.0.1`;
|
|
12
|
+
const g_revisedDate = `2026/03/14`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -153,6 +153,7 @@ const C_ARW_WIDTH = 50;
|
|
|
153
153
|
// ON/OFFスイッチ
|
|
154
154
|
const C_FLG_ON = `ON`;
|
|
155
155
|
const C_FLG_OFF = `OFF`;
|
|
156
|
+
const C_FLG_HYPHEN = `---`;
|
|
156
157
|
const C_FLG_ALL = `ALL`;
|
|
157
158
|
const C_DIS_NONE = `none`;
|
|
158
159
|
const C_DIS_AUTO = `auto`;
|
|
@@ -217,6 +218,7 @@ const g_workObj = {
|
|
|
217
218
|
stepRtn: [],
|
|
218
219
|
stepHitRtn: [],
|
|
219
220
|
arrowRtn: [],
|
|
221
|
+
frzArrowInitRtn: [],
|
|
220
222
|
keyCtrl: [],
|
|
221
223
|
keyCtrlN: [],
|
|
222
224
|
keyHitFlg: [],
|
|
@@ -3597,6 +3599,7 @@ const headerConvert = _dosObj => {
|
|
|
3597
3599
|
g_imgType = g_keycons.imgTypes[0];
|
|
3598
3600
|
g_stateObj.rotateEnabled = obj.imgType[0].rotateEnabled;
|
|
3599
3601
|
g_stateObj.flatStepHeight = obj.imgType[0].flatStepHeight;
|
|
3602
|
+
changeSettingListsForImg();
|
|
3600
3603
|
|
|
3601
3604
|
const [titleArrowName, titleArrowRotate] = padArray(_dosObj.titleArrowName?.split(`:`), [`Original`, 180]);
|
|
3602
3605
|
obj.titleArrowNo = roundZero(g_keycons.imgTypes.findIndex(imgType => imgType === titleArrowName));
|
|
@@ -5094,7 +5097,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
5094
5097
|
|
|
5095
5098
|
// スクロールパターン (scrollX_Y)
|
|
5096
5099
|
// |scroll(newKey)=Cross::1,1,-1,-1,-1,1,1/Split::1,1,1,-1,-1,-1,-1$...|
|
|
5097
|
-
newKeyPairParam(newKey, `scroll`, `scrollDir`,
|
|
5100
|
+
newKeyPairParam(newKey, `scroll`, `scrollDir`, C_FLG_HYPHEN, 1);
|
|
5098
5101
|
|
|
5099
5102
|
// アシストパターン (assistX_Y)
|
|
5100
5103
|
// |assist(newKey)=Onigiri::0,0,0,0,0,1/AA::0,0,0,1,1,1$...|
|
|
@@ -7293,13 +7296,13 @@ const makeHighScore = _scoreId => {
|
|
|
7293
7296
|
}
|
|
7294
7297
|
multiAppend(detailHighScore,
|
|
7295
7298
|
createScoreLabel(chara, g_lblNameObj[`j_${chara}`], { yPos: j }),
|
|
7296
|
-
createScoreLabel(`${chara}S`, g_localStorage.highscores?.[scoreName]?.[chara] ??
|
|
7299
|
+
createScoreLabel(`${chara}S`, g_localStorage.highscores?.[scoreName]?.[chara] ?? C_FLG_HYPHEN,
|
|
7297
7300
|
{ xPos: 0, yPos: j, align: C_ALIGN_RIGHT }),
|
|
7298
7301
|
);
|
|
7299
7302
|
});
|
|
7300
7303
|
// Fast, Slow, 推定Adj, Excessive (値が無ければスキップ)
|
|
7301
7304
|
Object.keys(extData).forEach((chara, j) => {
|
|
7302
|
-
if (!hasVal(g_localStorage.highscores?.[scoreName]?.[chara],
|
|
7305
|
+
if (!hasVal(g_localStorage.highscores?.[scoreName]?.[chara], C_FLG_HYPHEN)) {
|
|
7303
7306
|
return;
|
|
7304
7307
|
}
|
|
7305
7308
|
multiAppend(detailHighScore,
|
|
@@ -7333,7 +7336,7 @@ const makeHighScore = _scoreId => {
|
|
|
7333
7336
|
`${g_localStorage.highscores?.[scoreName]?.fullCombo ?? '' ? '<span class="result_FullCombo">◆</span>' : ''}` +
|
|
7334
7337
|
`${g_localStorage.highscores?.[scoreName]?.perfect ?? '' ? '<span class="result_Perfect">◆</span>' : ''}` +
|
|
7335
7338
|
`${g_localStorage.highscores?.[scoreName]?.allPerfect ?? '' ? '<span class="result_AllPerfect">◆</span>' : ''}`, { xPos: 1, dx: 20, yPos: 12, w: 100, align: C_ALIGN_CENTER }),
|
|
7336
|
-
createScoreLabel(`lblHClearLamps`, `Cleared: ` + (g_localStorage.highscores?.[scoreName]?.clearLamps?.join(', ') ??
|
|
7339
|
+
createScoreLabel(`lblHClearLamps`, `Cleared: ` + (g_localStorage.highscores?.[scoreName]?.clearLamps?.join(', ') ?? C_FLG_HYPHEN), { yPos: 13, overflow: C_DIS_AUTO, w: g_sWidth / 2 + 40, h: 37 }),
|
|
7337
7340
|
|
|
7338
7341
|
createScoreLabel(`lblHShuffle`, g_stateObj.shuffle.indexOf(`Mirror`) < 0 ? `` : `Shuffle: <span class="common_iknai">${g_stateObj.shuffle}</span>`, { yPos: 11.5, dx: -130 }),
|
|
7339
7342
|
createScoreLabel(`lblHAssist`, g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `Assist: <span class="common_kita">${g_stateObj.autoPlay}</span>`, { yPos: 12.5, dx: -130 }),
|
|
@@ -7366,7 +7369,7 @@ const makeHighScore = _scoreId => {
|
|
|
7366
7369
|
rankMark: g_localStorage.highscores?.[scoreName]?.rankMark || `--`,
|
|
7367
7370
|
playStyleData: g_localStorage.highscores[scoreName]?.playStyle || `--`,
|
|
7368
7371
|
highscore: g_localStorage.highscores[scoreName],
|
|
7369
|
-
tweetExcessive: hasVal(storedExcessive,
|
|
7372
|
+
tweetExcessive: hasVal(storedExcessive, C_FLG_HYPHEN) ? `(+${storedExcessive})` : ``,
|
|
7370
7373
|
musicTitle, tweetDifData, tweetFrzJdg, tweetMaxCombo, baseTwitUrl,
|
|
7371
7374
|
};
|
|
7372
7375
|
const resultCommon = unEscapeHtml(makeResultText(g_templateObj.resultFormatDf, resultParams));
|
|
@@ -7531,7 +7534,7 @@ const setDifficulty = (_initFlg) => {
|
|
|
7531
7534
|
lnkDifficulty.innerHTML = difNames.join(``);
|
|
7532
7535
|
|
|
7533
7536
|
// 速度設定 (Speed)
|
|
7534
|
-
setSetting(0, `speed`, ` ${g_lblNameObj.multi}`);
|
|
7537
|
+
setSetting(0, `speed`, { unitName: ` ${g_lblNameObj.multi}` });
|
|
7535
7538
|
|
|
7536
7539
|
// リバース設定 (Reverse, Scroll)
|
|
7537
7540
|
if (g_headerObj.scrollUse) {
|
|
@@ -7934,27 +7937,27 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
7934
7937
|
multiAppend(_obj,
|
|
7935
7938
|
makeSettingLblCssButton(linkId, `${initName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`, 0,
|
|
7936
7939
|
() => {
|
|
7937
|
-
setSetting(skipTerms[1], _settingName,
|
|
7940
|
+
setSetting(skipTerms[1], _settingName, { func: () => addRFunc(), unitName, roundNum });
|
|
7938
7941
|
}, {
|
|
7939
7942
|
cxtFunc: () => {
|
|
7940
|
-
setSetting(skipTerms[1] * (-1), _settingName,
|
|
7943
|
+
setSetting(skipTerms[1] * (-1), _settingName, { func: () => addLFunc(), unitName, roundNum });
|
|
7941
7944
|
}
|
|
7942
7945
|
}),
|
|
7943
7946
|
|
|
7944
7947
|
// 右回し・左回しボタン(外側)
|
|
7945
7948
|
makeMiniCssButton(linkId, `R`, 0, () =>
|
|
7946
|
-
setSetting(skipTerms[0], _settingName,
|
|
7949
|
+
setSetting(skipTerms[0], _settingName, { func: () => addRFunc(), unitName, roundNum })),
|
|
7947
7950
|
makeMiniCssButton(linkId, `L`, 0, () =>
|
|
7948
|
-
setSetting(skipTerms[0] * (-1), _settingName,
|
|
7951
|
+
setSetting(skipTerms[0] * (-1), _settingName, { func: () => addLFunc(), unitName, roundNum })),
|
|
7949
7952
|
);
|
|
7950
7953
|
|
|
7951
7954
|
// 右回し・左回しボタン(内側)
|
|
7952
7955
|
if (skipTerms[1] > 1) {
|
|
7953
7956
|
multiAppend(_obj,
|
|
7954
7957
|
makeMiniCssButton(linkId, `RR`, 0, () =>
|
|
7955
|
-
setSetting(skipTerms[1], _settingName,
|
|
7958
|
+
setSetting(skipTerms[1], _settingName, { func: () => addRFunc(), unitName, roundNum })),
|
|
7956
7959
|
makeMiniCssButton(linkId, `LL`, 0, () =>
|
|
7957
|
-
setSetting(skipTerms[1] * (-1), _settingName,
|
|
7960
|
+
setSetting(skipTerms[1] * (-1), _settingName, { func: () => addLFunc(), unitName, roundNum })),
|
|
7958
7961
|
);
|
|
7959
7962
|
}
|
|
7960
7963
|
|
|
@@ -7962,10 +7965,10 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
7962
7965
|
if (skipTerms[2] > 1) {
|
|
7963
7966
|
multiAppend(_obj,
|
|
7964
7967
|
makeMiniCssButton(linkId, `RRR`, 0, () =>
|
|
7965
|
-
setSetting(skipTerms[2], _settingName,
|
|
7968
|
+
setSetting(skipTerms[2], _settingName, { func: () => addRFunc(), unitName, roundNum })
|
|
7966
7969
|
, { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
7967
7970
|
makeMiniCssButton(linkId, `LLL`, 0, () =>
|
|
7968
|
-
setSetting(skipTerms[2] * (-1), _settingName,
|
|
7971
|
+
setSetting(skipTerms[2] * (-1), _settingName, { func: () => addLFunc(), unitName, roundNum })
|
|
7969
7972
|
, { dw: -g_limitObj.setMiniWidth / 2 }),
|
|
7970
7973
|
);
|
|
7971
7974
|
}
|
|
@@ -7973,8 +7976,8 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
7973
7976
|
// 右回し・左回しボタン(不可視)
|
|
7974
7977
|
if (hiddenBtn) {
|
|
7975
7978
|
multiAppend(_obj,
|
|
7976
|
-
makeMiniCssButton(linkId, `HR`, 0, () => setSetting(1, _settingName,
|
|
7977
|
-
makeMiniCssButton(linkId, `HL`, 0, () => setSetting(-1, _settingName,
|
|
7979
|
+
makeMiniCssButton(linkId, `HR`, 0, () => setSetting(1, _settingName, { func: () => addRFunc(), unitName, roundNum }), { visibility: `hidden` }),
|
|
7980
|
+
makeMiniCssButton(linkId, `HL`, 0, () => setSetting(-1, _settingName, { func: () => addLFunc(), unitName, roundNum }), { visibility: `hidden` }),
|
|
7978
7981
|
);
|
|
7979
7982
|
}
|
|
7980
7983
|
|
|
@@ -8019,20 +8022,20 @@ const getStgDetailName = _name => {
|
|
|
8019
8022
|
* 設定メイン・汎用
|
|
8020
8023
|
* @param {number} _scrollNum
|
|
8021
8024
|
* @param {string} _settingName
|
|
8022
|
-
* @param {
|
|
8023
|
-
* @param {
|
|
8024
|
-
* @param {
|
|
8025
|
+
* @param {function} [func=()=>true] 設定ボタンを押した後の追加処理
|
|
8026
|
+
* @param {string} [unitName=''] 設定の単位名
|
|
8027
|
+
* @param {number} [roundNum=0] 設定スキップ間隔の丸め基準数
|
|
8025
8028
|
*/
|
|
8026
|
-
const setSetting = (_scrollNum, _settingName,
|
|
8029
|
+
const setSetting = (_scrollNum, _settingName, { func = () => true, unitName = ``, roundNum = 0, maxSiz = g_limitObj.setLblSiz } = {}) => {
|
|
8027
8030
|
let settingNum = g_settings[`${_settingName}Num`];
|
|
8028
8031
|
const settingList = g_settings[`${_settingName}s`];
|
|
8029
8032
|
const settingMax = settingList.length - 1;
|
|
8030
8033
|
|
|
8031
8034
|
// _roundNum単位で丸める
|
|
8032
|
-
if (
|
|
8033
|
-
settingNum = Math.floor(settingNum /
|
|
8034
|
-
} else if (
|
|
8035
|
-
settingNum = Math.ceil(settingNum /
|
|
8035
|
+
if (roundNum > 0 && _scrollNum >= roundNum) {
|
|
8036
|
+
settingNum = Math.floor(settingNum / roundNum) * roundNum;
|
|
8037
|
+
} else if (roundNum > 0 && -_scrollNum >= roundNum) {
|
|
8038
|
+
settingNum = Math.ceil(settingNum / roundNum) * roundNum;
|
|
8036
8039
|
}
|
|
8037
8040
|
|
|
8038
8041
|
if (_scrollNum > 0) {
|
|
@@ -8042,8 +8045,12 @@ const setSetting = (_scrollNum, _settingName, _unitName = ``, _roundNum = 0, { f
|
|
|
8042
8045
|
}
|
|
8043
8046
|
g_stateObj[_settingName] = settingList[settingNum];
|
|
8044
8047
|
g_settings[`${_settingName}Num`] = settingNum;
|
|
8045
|
-
|
|
8046
|
-
|
|
8048
|
+
|
|
8049
|
+
const settingName = `${getStgDetailName(g_stateObj[_settingName])}${unitName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`;
|
|
8050
|
+
const lnkName = `lnk${toCapitalize(_settingName)}`;
|
|
8051
|
+
document.getElementById(lnkName).textContent = settingName;
|
|
8052
|
+
$id(lnkName).fontSize = wUnit(getFontSize2(settingName, parseFloat($id(lnkName).width), { maxSiz }));
|
|
8053
|
+
|
|
8047
8054
|
func();
|
|
8048
8055
|
|
|
8049
8056
|
if (document.getElementById(`settingSumSprite`) !== null) {
|
|
@@ -8394,7 +8401,7 @@ const makeSettingLblCssButton = (_id, _name, _heightPos, _func, {
|
|
|
8394
8401
|
x = g_limitObj.setLblLeft, y = g_limitObj.setLblHeight * _heightPos,
|
|
8395
8402
|
w = g_limitObj.setLblWidth, h = g_limitObj.setLblHeight, siz = g_limitObj.setLblSiz,
|
|
8396
8403
|
cxtFunc = () => true, ...rest } = {}, ..._classes) =>
|
|
8397
|
-
createCss2Button(_id, _name, _func, { x, y, w, h, siz, cxtFunc, ...rest }, g_cssObj.button_Default, ..._classes);
|
|
8404
|
+
createCss2Button(_id, _name, _func, { x, y, w, h, siz: getFontSize2(_name, w, { maxSiz: siz }), cxtFunc, ...rest }, g_cssObj.button_Default, ..._classes);
|
|
8398
8405
|
|
|
8399
8406
|
/**
|
|
8400
8407
|
* 譜面変更セレクター用ボタン
|
|
@@ -8705,67 +8712,9 @@ const exSettingInit = () => {
|
|
|
8705
8712
|
createEmptySprite(divRoot, `optionsprite`, g_windowObj.optionSprite);
|
|
8706
8713
|
const spriteList = setSpriteList(g_settingPos.exSetting);
|
|
8707
8714
|
|
|
8708
|
-
|
|
8709
|
-
* 拡張ボタンの表示・非表示と通常ボタンの幅変更
|
|
8710
|
-
* @param {string} _name
|
|
8711
|
-
* @param {string} _default
|
|
8712
|
-
*/
|
|
8713
|
-
const setExpandedBtnSiz = (_name, _default = C_FLG_OFF) => {
|
|
8714
|
-
const camelH = toCapitalize(_name);
|
|
8715
|
-
if (g_stateObj[_name] === _default) {
|
|
8716
|
-
$id(`lnk${camelH}Type`).display = C_DIS_NONE;
|
|
8717
|
-
$id(`lnk${camelH}`).left = wUnit(g_limitObj.setLblLeft);
|
|
8718
|
-
$id(`lnk${camelH}`).width = wUnit(g_limitObj.setLblWidth);
|
|
8719
|
-
} else {
|
|
8720
|
-
$id(`lnk${camelH}Type`).display = C_DIS_INHERIT;
|
|
8721
|
-
$id(`lnk${camelH}`).left = wUnit(g_limitObj.setLblLeftShort);
|
|
8722
|
-
$id(`lnk${camelH}`).width = wUnit(g_limitObj.setLblWidthShort);
|
|
8723
|
-
}
|
|
8724
|
-
};
|
|
8725
|
-
|
|
8726
|
-
/**
|
|
8727
|
-
* 拡張ボタンの作成
|
|
8728
|
-
* @param {string} _name
|
|
8729
|
-
* @returns {HTMLDivElement}
|
|
8730
|
-
*/
|
|
8731
|
-
const createExpandedBtn = _name =>
|
|
8732
|
-
createCss2Button(`lnk${toCapitalize(_name)}Type`, getStgDetailName(g_stateObj[`${_name}Type`]),
|
|
8733
|
-
() => {
|
|
8734
|
-
setSetting(1, `${_name}Type`);
|
|
8735
|
-
createExpandedScView(_name);
|
|
8736
|
-
},
|
|
8737
|
-
Object.assign({
|
|
8738
|
-
cxtFunc: () => {
|
|
8739
|
-
setSetting(-1, `${_name}Type`);
|
|
8740
|
-
createExpandedScView(_name);
|
|
8741
|
-
},
|
|
8742
|
-
title: g_msgObj[`${_name}Type`] ?? ``,
|
|
8743
|
-
}, g_lblPosObj.btnReverse), g_cssObj.button_Default, g_cssObj.button_RevON);
|
|
8744
|
-
|
|
8745
|
-
/**
|
|
8746
|
-
* 拡張ボタンのショートカット表示
|
|
8747
|
-
* @param {string} _name
|
|
8748
|
-
*/
|
|
8749
|
-
const createExpandedScView = _name =>
|
|
8750
|
-
createScText(document.getElementById(`lnk${toCapitalize(_name)}Type`), `${toCapitalize(_name)}Type`, {
|
|
8751
|
-
displayName: `exSetting`, targetLabel: `lnk${toCapitalize(_name)}Type`, x: -13
|
|
8752
|
-
});
|
|
8753
|
-
|
|
8754
|
-
createGeneralSetting(spriteList.playWindow, `playWindow`, {
|
|
8755
|
-
addRFunc: () => setExpandedBtnSiz(`playWindow`, `Default`),
|
|
8756
|
-
});
|
|
8757
|
-
spriteList.playWindow.appendChild(createExpandedBtn(`playWindow`));
|
|
8758
|
-
setExpandedBtnSiz(`playWindow`, `Default`);
|
|
8759
|
-
createExpandedScView(`playWindow`);
|
|
8760
|
-
|
|
8715
|
+
createGeneralSettingEx(spriteList, `playWindow`, { defaultList: [`Default`] });
|
|
8761
8716
|
createGeneralSetting(spriteList.stepArea, `stepArea`);
|
|
8762
|
-
|
|
8763
|
-
addRFunc: () => setExpandedBtnSiz(`frzReturn`),
|
|
8764
|
-
});
|
|
8765
|
-
spriteList.frzReturn.appendChild(createExpandedBtn(`frzReturn`));
|
|
8766
|
-
setExpandedBtnSiz(`frzReturn`);
|
|
8767
|
-
createExpandedScView(`frzReturn`);
|
|
8768
|
-
|
|
8717
|
+
createGeneralSettingEx(spriteList, `frzReturn`);
|
|
8769
8718
|
createGeneralSetting(spriteList.shaking, `shaking`);
|
|
8770
8719
|
createGeneralSetting(spriteList.effect, `effect`, {
|
|
8771
8720
|
addRFunc: () => {
|
|
@@ -8774,7 +8723,7 @@ const exSettingInit = () => {
|
|
|
8774
8723
|
g_headerObj.arrowEffectSet = g_stateObj.d_arroweffect;
|
|
8775
8724
|
},
|
|
8776
8725
|
});
|
|
8777
|
-
|
|
8726
|
+
createGeneralSettingEx(spriteList, `camoufrage`, { defaultList: [] });
|
|
8778
8727
|
createGeneralSetting(spriteList.swapping, `swapping`);
|
|
8779
8728
|
createGeneralSetting(spriteList.judgRange, `judgRange`, {
|
|
8780
8729
|
addRFunc: () => {
|
|
@@ -8814,6 +8763,82 @@ const exSettingInit = () => {
|
|
|
8814
8763
|
g_skinJsObj.exSetting.forEach(func => func());
|
|
8815
8764
|
};
|
|
8816
8765
|
|
|
8766
|
+
/**
|
|
8767
|
+
* 拡張設定込みの標準設定
|
|
8768
|
+
* @param {any[]} _spriteList
|
|
8769
|
+
* @param {string} _name
|
|
8770
|
+
* @param {{ defaultList?: string[], displayName?: string }} [options={}]
|
|
8771
|
+
* @param {string[]} [options.defaultList=[C_FLG_OFF]] 拡張設定未使用の設定リスト
|
|
8772
|
+
* @param {string} [options.displayName='exSetting']
|
|
8773
|
+
*/
|
|
8774
|
+
const createGeneralSettingEx = (_spriteList, _name, { defaultList = [C_FLG_OFF], displayName = `exSetting` } = {}) => {
|
|
8775
|
+
if (_spriteList?.[_name] === undefined) return;
|
|
8776
|
+
|
|
8777
|
+
/**
|
|
8778
|
+
* 拡張ボタンの表示・非表示と通常ボタンの幅変更
|
|
8779
|
+
*/
|
|
8780
|
+
const setExpandedBtnSiz = () => {
|
|
8781
|
+
const camelH = toCapitalize(_name);
|
|
8782
|
+
if (defaultList.includes(g_stateObj[_name])) {
|
|
8783
|
+
$id(`lnk${camelH}Type`).display = C_DIS_NONE;
|
|
8784
|
+
$id(`lnk${camelH}`).left = wUnit(g_limitObj.setLblLeft);
|
|
8785
|
+
$id(`lnk${camelH}`).width = wUnit(g_limitObj.setLblWidth);
|
|
8786
|
+
} else {
|
|
8787
|
+
$id(`lnk${camelH}Type`).display = C_DIS_INHERIT;
|
|
8788
|
+
$id(`lnk${camelH}`).left = wUnit(g_limitObj.setLblLeftShort);
|
|
8789
|
+
$id(`lnk${camelH}`).width = wUnit(g_limitObj.setLblWidthShort);
|
|
8790
|
+
}
|
|
8791
|
+
$id(`lnk${camelH}`).fontSize = wUnit(getFontSize2(getStgDetailName(g_stateObj[_name]), g_limitObj.setLblWidthShort, { maxSiz: g_limitObj.setLblSiz }));
|
|
8792
|
+
};
|
|
8793
|
+
|
|
8794
|
+
/**
|
|
8795
|
+
* 拡張ボタンの作成
|
|
8796
|
+
* @returns {HTMLDivElement}
|
|
8797
|
+
*/
|
|
8798
|
+
const createExpandedBtn = () =>
|
|
8799
|
+
createCss2Button(`lnk${toCapitalize(_name)}Type`, getStgDetailName(g_stateObj[`${_name}Type`]),
|
|
8800
|
+
() => {
|
|
8801
|
+
setSetting(1, `${_name}Type`, { maxSiz: g_limitObj.difSelectorSiz });
|
|
8802
|
+
createExpandedScView(_name);
|
|
8803
|
+
},
|
|
8804
|
+
Object.assign({
|
|
8805
|
+
cxtFunc: () => {
|
|
8806
|
+
setSetting(-1, `${_name}Type`, { maxSiz: g_limitObj.difSelectorSiz });
|
|
8807
|
+
createExpandedScView(_name);
|
|
8808
|
+
},
|
|
8809
|
+
title: g_msgObj[`${_name}Type`] ?? ``,
|
|
8810
|
+
}, g_lblPosObj.btnReverse), g_cssObj.button_Default, g_cssObj.button_RevON);
|
|
8811
|
+
|
|
8812
|
+
/**
|
|
8813
|
+
* 拡張ボタンのショートカット表示、拡張ボタンのCSS切り替え
|
|
8814
|
+
*/
|
|
8815
|
+
const createExpandedScView = () => {
|
|
8816
|
+
const settingLabel = `${toCapitalize(_name)}Type`;
|
|
8817
|
+
if (document.getElementById(`sc${settingLabel}`) === null) {
|
|
8818
|
+
createScText(document.getElementById(`lnk${settingLabel}`), settingLabel, {
|
|
8819
|
+
displayName, targetLabel: `lnk${settingLabel}`, x: -13
|
|
8820
|
+
});
|
|
8821
|
+
}
|
|
8822
|
+
document.getElementById(`lnk${settingLabel}`).classList.remove(g_cssObj.button_RevON, g_cssObj.button_RevOFF);
|
|
8823
|
+
document.getElementById(`lnk${settingLabel}`).classList.add(g_cssObj[`button_Rev${boolToSwitch(g_stateObj[`${_name}Type`] !== C_FLG_HYPHEN)}`]);
|
|
8824
|
+
};
|
|
8825
|
+
|
|
8826
|
+
// TypeUse 未定義時は true 扱いにする
|
|
8827
|
+
const typeEnabled = setBoolVal(g_headerObj[`${_name}TypeUse`], true);
|
|
8828
|
+
createGeneralSetting(_spriteList[_name], _name, {
|
|
8829
|
+
addRFunc: () => {
|
|
8830
|
+
if (typeEnabled) {
|
|
8831
|
+
setExpandedBtnSiz();
|
|
8832
|
+
}
|
|
8833
|
+
},
|
|
8834
|
+
});
|
|
8835
|
+
if (typeEnabled) {
|
|
8836
|
+
_spriteList[_name].appendChild(createExpandedBtn());
|
|
8837
|
+
setExpandedBtnSiz();
|
|
8838
|
+
createExpandedScView();
|
|
8839
|
+
}
|
|
8840
|
+
}
|
|
8841
|
+
|
|
8817
8842
|
/*-----------------------------------------------------------*/
|
|
8818
8843
|
/* Scene : KEYCONFIG [orange] */
|
|
8819
8844
|
/*-----------------------------------------------------------*/
|
|
@@ -9386,6 +9411,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
9386
9411
|
g_stateObj.rotateEnabled = g_headerObj.imgType[nextNum].rotateEnabled;
|
|
9387
9412
|
g_stateObj.flatStepHeight = g_headerObj.imgType[nextNum].flatStepHeight;
|
|
9388
9413
|
|
|
9414
|
+
changeSettingListsForImg();
|
|
9389
9415
|
updateImgType(g_headerObj.imgType[nextNum]);
|
|
9390
9416
|
keyConfigInit(g_kcType);
|
|
9391
9417
|
};
|
|
@@ -9693,6 +9719,23 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
9693
9719
|
document.oncontextmenu = () => false;
|
|
9694
9720
|
};
|
|
9695
9721
|
|
|
9722
|
+
/**
|
|
9723
|
+
* 回転できないオブジェクトの場合に設定の自動絞り込みを行う
|
|
9724
|
+
*/
|
|
9725
|
+
const changeSettingListsForImg = () => {
|
|
9726
|
+
if (g_stateObj.rotateEnabled) {
|
|
9727
|
+
g_settings.camoufrages = g_settings.camoufrageRotates.concat();
|
|
9728
|
+
} else {
|
|
9729
|
+
g_settings.camoufrages = g_settings.camoufrageNoRotates.concat();
|
|
9730
|
+
if (g_stateObj.camoufrage.startsWith(`Color`)) {
|
|
9731
|
+
g_stateObj.camoufrage = `Color`;
|
|
9732
|
+
} else {
|
|
9733
|
+
g_stateObj.camoufrage = C_FLG_OFF;
|
|
9734
|
+
}
|
|
9735
|
+
}
|
|
9736
|
+
g_settings.camoufrageNum = g_settings.camoufrages.findIndex(val => val === g_stateObj.camoufrage);
|
|
9737
|
+
};
|
|
9738
|
+
|
|
9696
9739
|
/**
|
|
9697
9740
|
* 影矢印色の取得
|
|
9698
9741
|
* @param {number} _colorPos
|
|
@@ -10654,7 +10697,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
10654
10697
|
const ptnName = `${(g_keyObj.currentPtn === -1 ? g_keyObj.storagePtn : g_keyObj.currentPtn) + 1}`;
|
|
10655
10698
|
const keyName = setVal(g_keyObj[`transKey${_keyCtrlPtn}`], g_keyObj.currentKey);
|
|
10656
10699
|
let type = ``;
|
|
10657
|
-
if (g_stateObj.scroll !==
|
|
10700
|
+
if (g_stateObj.scroll !== C_FLG_HYPHEN) {
|
|
10658
10701
|
type = `Alt`;
|
|
10659
10702
|
} else if (g_stateObj.reverse === C_FLG_ON) {
|
|
10660
10703
|
type = `Rev`;
|
|
@@ -10696,7 +10739,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
10696
10739
|
|
|
10697
10740
|
// wordRev_dataが指定されている場合はそのままの位置を採用
|
|
10698
10741
|
// word_dataのみ指定されている場合、下記ルールに従って設定
|
|
10699
|
-
if (!wordTarget.includes(`Rev`) && g_stateObj.scroll ===
|
|
10742
|
+
if (!wordTarget.includes(`Rev`) && g_stateObj.scroll === C_FLG_HYPHEN) {
|
|
10700
10743
|
// Reverse時の歌詞の自動反転制御設定
|
|
10701
10744
|
if (g_headerObj.wordAutoReverse !== C_DIS_AUTO) {
|
|
10702
10745
|
wordReverseFlg = g_headerObj.wordAutoReverse === C_FLG_ON;
|
|
@@ -11739,6 +11782,8 @@ const getArrowSettings = () => {
|
|
|
11739
11782
|
delete g_workObj.arrivalFrame;
|
|
11740
11783
|
delete g_workObj.motionFrame;
|
|
11741
11784
|
|
|
11785
|
+
// 各種初期化
|
|
11786
|
+
// g_workObj.frzArrowInitRtnはフリーズアロー(初期表示)としての利用に限定
|
|
11742
11787
|
g_workObj.stepX = [];
|
|
11743
11788
|
g_workObj.scrollDir = [];
|
|
11744
11789
|
g_workObj.scrollDirDefault = [];
|
|
@@ -11747,6 +11792,7 @@ const getArrowSettings = () => {
|
|
|
11747
11792
|
g_workObj.stepRtn = structuredClone(g_keyObj[`stepRtn${keyCtrlPtn}`]);
|
|
11748
11793
|
g_workObj.stepHitRtn = structuredClone(g_keyObj[`stepRtn${keyCtrlPtn}`]);
|
|
11749
11794
|
g_workObj.arrowRtn = structuredClone(g_keyObj[`stepRtn${keyCtrlPtn}`]);
|
|
11795
|
+
g_workObj.frzArrowInitRtn = structuredClone(g_keyObj[`stepRtn${keyCtrlPtn}`]);
|
|
11750
11796
|
g_workObj.keyCtrl = structuredClone(g_keyObj[`keyCtrl${keyCtrlPtn}`]);
|
|
11751
11797
|
g_workObj.diffList = [];
|
|
11752
11798
|
g_workObj.mainEndTime = 0;
|
|
@@ -11770,6 +11816,7 @@ const getArrowSettings = () => {
|
|
|
11770
11816
|
changeStepRtn(`stepRtn`, 90 * sign);
|
|
11771
11817
|
changeStepRtn(`stepHitRtn`, 90 * sign);
|
|
11772
11818
|
changeStepRtn(`arrowRtn`, 90 * sign);
|
|
11819
|
+
changeStepRtn(`frzArrowInitRtn`, 90 * sign);
|
|
11773
11820
|
}
|
|
11774
11821
|
const div = g_keyObj[`div${keyCtrlPtn}`];
|
|
11775
11822
|
const divMax = g_keyObj[`divMax${keyCtrlPtn}`] ?? posMax;
|
|
@@ -11779,6 +11826,11 @@ const getArrowSettings = () => {
|
|
|
11779
11826
|
}
|
|
11780
11827
|
}
|
|
11781
11828
|
|
|
11829
|
+
// CamoufrageType: FrzArrowの場合のみ、フリーズアロー(初期)の矢印を180度回転
|
|
11830
|
+
if (g_stateObj.rotateEnabled && g_stateObj.camoufrageType === `FrzArrow`) {
|
|
11831
|
+
changeStepRtn(`frzArrowInitRtn`, 180);
|
|
11832
|
+
}
|
|
11833
|
+
|
|
11782
11834
|
g_workObj.keyGroupMaps = tkObj.keyGroupMaps;
|
|
11783
11835
|
g_workObj.keyGroupList = tkObj.keyGroupList;
|
|
11784
11836
|
|
|
@@ -11979,17 +12031,8 @@ const getArrowSettings = () => {
|
|
|
11979
12031
|
g_workObj.autoRetryFlg = false;
|
|
11980
12032
|
|
|
11981
12033
|
// Camoufrageの設定
|
|
11982
|
-
if (!g_stateObj.rotateEnabled) {
|
|
11983
|
-
|
|
11984
|
-
// 矢印の回転が無効の場合は、設定を変える
|
|
11985
|
-
if (g_stateObj.camoufrage === `Arrow`) {
|
|
11986
|
-
g_stateObj.camoufrage = C_FLG_OFF;
|
|
11987
|
-
} else if (g_stateObj.camoufrage === C_FLG_ALL) {
|
|
11988
|
-
g_stateObj.camoufrage = `Color`;
|
|
11989
|
-
}
|
|
11990
|
-
g_settings.camoufrageNum = g_settings.camoufrages.findIndex(val => val === g_stateObj.camoufrage);
|
|
11991
|
-
}
|
|
11992
12034
|
if (g_stateObj.camoufrage !== C_FLG_OFF) {
|
|
12035
|
+
|
|
11993
12036
|
const eachOrAll = [``, `All`];
|
|
11994
12037
|
const keyNum = g_keyObj[`chara${g_keyObj.currentKey}_${g_keyObj.currentPtn}`].length;
|
|
11995
12038
|
|
|
@@ -12006,13 +12049,16 @@ const getArrowSettings = () => {
|
|
|
12006
12049
|
const _copiedArray = structuredClone(_array);
|
|
12007
12050
|
return _array.map((_val, _i) => _array[_i] = _copiedArray[randArray[_i]]);
|
|
12008
12051
|
};
|
|
12009
|
-
if ([`Arrow`, C_FLG_ALL].includes(g_stateObj.camoufrage)) {
|
|
12010
12052
|
|
|
12011
|
-
|
|
12053
|
+
// 矢印ヒット時に元の矢印がわかるようにするため、あえて g_workObj.stepHitRtn はそのままにする
|
|
12054
|
+
if (g_stateObj.camoufrage.includes(`Step`)) {
|
|
12012
12055
|
g_workObj.stepRtn = getSwapArray(g_workObj.stepRtn);
|
|
12056
|
+
}
|
|
12057
|
+
if (g_stateObj.camoufrage.includes(`Arrow`)) {
|
|
12013
12058
|
g_workObj.arrowRtn = getSwapArray(g_workObj.arrowRtn);
|
|
12059
|
+
g_workObj.frzArrowInitRtn = getSwapArray(g_workObj.frzArrowInitRtn);
|
|
12014
12060
|
}
|
|
12015
|
-
if (
|
|
12061
|
+
if (g_stateObj.camoufrage.includes(`Color`)) {
|
|
12016
12062
|
eachOrAll.forEach(type => {
|
|
12017
12063
|
// ダミー矢印は対象外
|
|
12018
12064
|
g_workObj[`arrowColors${type}`] = getSwapArray(g_workObj[`arrowColors${type}`]);
|
|
@@ -13106,6 +13152,12 @@ const mainInit = () => {
|
|
|
13106
13152
|
const frzRoot = createEmptySprite(arrowSprite[g_workObj.dividePos[_j]], frzName, {
|
|
13107
13153
|
x: 0, y: 0, w: C_ARW_WIDTH, h: C_ARW_WIDTH + firstBarLength,
|
|
13108
13154
|
});
|
|
13155
|
+
|
|
13156
|
+
// CamoufrageType: FrzArrowの場合のみ、フリーズアローの帯を隠す
|
|
13157
|
+
if (g_stateObj.camoufrageType === `FrzArrow`) {
|
|
13158
|
+
_barColor = `#00000000`;
|
|
13159
|
+
}
|
|
13160
|
+
|
|
13109
13161
|
/**
|
|
13110
13162
|
* フリーズアロー毎の属性情報
|
|
13111
13163
|
*/
|
|
@@ -13175,12 +13227,12 @@ const mainInit = () => {
|
|
|
13175
13227
|
|
|
13176
13228
|
// 開始矢印の塗り部分。ヒット時は前面に表示
|
|
13177
13229
|
createColorObject2(`${_name}TopShadow${frzNo}`, {
|
|
13178
|
-
background: shadowColor, rotate: g_workObj.
|
|
13230
|
+
background: shadowColor, rotate: g_workObj.frzArrowInitRtn[_j], styleName: `Shadow`,
|
|
13179
13231
|
}, g_cssObj.main_objShadow),
|
|
13180
13232
|
|
|
13181
13233
|
// 開始矢印。ヒット時は非表示
|
|
13182
13234
|
createColorObject2(`${_name}Top${frzNo}`, {
|
|
13183
|
-
background: _normalColor, rotate: g_workObj.
|
|
13235
|
+
background: _normalColor, rotate: g_workObj.frzArrowInitRtn[_j],
|
|
13184
13236
|
}),
|
|
13185
13237
|
);
|
|
13186
13238
|
|
|
@@ -13188,12 +13240,12 @@ const mainInit = () => {
|
|
|
13188
13240
|
|
|
13189
13241
|
// 後発矢印の塗り部分
|
|
13190
13242
|
createColorObject2(`${_name}BtmShadow${frzNo}`, {
|
|
13191
|
-
background: shadowColor, rotate: g_workObj.
|
|
13243
|
+
background: shadowColor, rotate: g_workObj.frzArrowInitRtn[_j], styleName: `Shadow`,
|
|
13192
13244
|
}, g_cssObj.main_objShadow),
|
|
13193
13245
|
|
|
13194
13246
|
// 後発矢印
|
|
13195
13247
|
createColorObject2(`${_name}Btm${frzNo}`, {
|
|
13196
|
-
background: _normalColor, rotate: g_workObj.
|
|
13248
|
+
background: _normalColor, rotate: g_workObj.frzArrowInitRtn[_j],
|
|
13197
13249
|
}),
|
|
13198
13250
|
|
|
13199
13251
|
);
|
|
@@ -14905,7 +14957,7 @@ const resultInit = () => {
|
|
|
14905
14957
|
g_localStorage.highscores[scoreName].slow = g_resultObj.slow;
|
|
14906
14958
|
g_localStorage.highscores[scoreName].adj = estimatedAdj;
|
|
14907
14959
|
g_localStorage.highscores[scoreName].excessive = g_stateObj.excessive === C_FLG_ON ?
|
|
14908
|
-
g_resultObj.excessive :
|
|
14960
|
+
g_resultObj.excessive : C_FLG_HYPHEN;
|
|
14909
14961
|
|
|
14910
14962
|
if (g_presetObj.resultVals !== undefined) {
|
|
14911
14963
|
Object.keys(g_presetObj.resultVals).forEach(key =>
|
|
@@ -15281,7 +15333,7 @@ const getSelectedSettingList = (_shuffleName) => {
|
|
|
15281
15333
|
`${g_stateObj.speed}${g_lblNameObj.multi}`,
|
|
15282
15334
|
withOptions(g_stateObj.motion, C_FLG_OFF),
|
|
15283
15335
|
`${withOptions(g_stateObj.reverse, C_FLG_OFF,
|
|
15284
|
-
getStgDetailName(g_stateObj.scroll !==
|
|
15336
|
+
getStgDetailName(g_stateObj.scroll !== C_FLG_HYPHEN ? 'R-' : 'Reverse'))}${withOptions(g_stateObj.scroll, C_FLG_HYPHEN)}`,
|
|
15285
15337
|
withOptions(g_stateObj.appearance, `Visible`) +
|
|
15286
15338
|
((g_appearanceRanges.includes(g_stateObj.appearance) && g_stateObj.filterLock === C_FLG_ON) ? `(${g_hidSudObj.filterPos}%)` : ``),
|
|
15287
15339
|
withOptions(g_stateObj.gauge, g_settings.gauges[0]),
|
|
@@ -15292,7 +15344,11 @@ const getSelectedSettingList = (_shuffleName) => {
|
|
|
15292
15344
|
`FR:${getStgDetailName(g_stateObj.frzReturn)}(${getStgDetailName(g_stateObj.frzReturnType)})`),
|
|
15293
15345
|
withOptions(g_stateObj.shaking, C_FLG_OFF),
|
|
15294
15346
|
withOptions(g_stateObj.effect, C_FLG_OFF),
|
|
15295
|
-
|
|
15347
|
+
[
|
|
15348
|
+
withOptions(g_stateObj.camoufrage, C_FLG_OFF, `Cmf:${getStgDetailName(g_stateObj.camoufrage)}`),
|
|
15349
|
+
withOptions(g_stateObj.camoufrageType, C_FLG_HYPHEN,
|
|
15350
|
+
`${g_stateObj.camoufrage !== C_FLG_OFF ? '' : 'Cmf:'}${getStgDetailName(g_stateObj.camoufrageType)}`)
|
|
15351
|
+
].filter(value => value !== ``).join(`+`),
|
|
15296
15352
|
withOptions(g_stateObj.swapping, C_FLG_OFF, `Swap:${getStgDetailName(g_stateObj.swapping)}`),
|
|
15297
15353
|
withOptions(g_stateObj.judgRange, `Normal`, `Judg:${getStgDetailName(g_stateObj.judgRange)}`),
|
|
15298
15354
|
].filter(value => value !== ``).join(`, `);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/03/
|
|
8
|
+
* Revised : 2026/03/12 (v46.0.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -1121,7 +1121,7 @@ const g_stateObj = {
|
|
|
1121
1121
|
speed: 3.5,
|
|
1122
1122
|
motion: C_FLG_OFF,
|
|
1123
1123
|
reverse: C_FLG_OFF,
|
|
1124
|
-
scroll:
|
|
1124
|
+
scroll: C_FLG_HYPHEN,
|
|
1125
1125
|
shuffle: C_FLG_OFF,
|
|
1126
1126
|
autoPlay: C_FLG_OFF,
|
|
1127
1127
|
autoAll: C_FLG_OFF,
|
|
@@ -1167,13 +1167,14 @@ const g_stateObj = {
|
|
|
1167
1167
|
opacity: 100,
|
|
1168
1168
|
|
|
1169
1169
|
playWindow: `Default`,
|
|
1170
|
-
playWindowType:
|
|
1170
|
+
playWindowType: C_FLG_HYPHEN,
|
|
1171
1171
|
stepArea: `Default`,
|
|
1172
1172
|
frzReturn: C_FLG_OFF,
|
|
1173
1173
|
frzReturnType: `360deg`,
|
|
1174
1174
|
shaking: C_FLG_OFF,
|
|
1175
1175
|
effect: C_FLG_OFF,
|
|
1176
1176
|
camoufrage: C_FLG_OFF,
|
|
1177
|
+
camoufrageType: C_FLG_HYPHEN,
|
|
1177
1178
|
swapping: C_FLG_OFF,
|
|
1178
1179
|
judgRange: `Normal`,
|
|
1179
1180
|
autoRetry: C_FLG_OFF,
|
|
@@ -1338,7 +1339,7 @@ const g_settings = {
|
|
|
1338
1339
|
playWindows: [`Default`, `Stairs`, `Slope`, `Distorted`, `SideScroll`],
|
|
1339
1340
|
playWindowNum: 0,
|
|
1340
1341
|
|
|
1341
|
-
playWindowTypes: [
|
|
1342
|
+
playWindowTypes: [C_FLG_HYPHEN, `Reverse`],
|
|
1342
1343
|
playWindowTypeNum: 0,
|
|
1343
1344
|
|
|
1344
1345
|
stepAreas: [`Default`, `Halfway`, `2Step`, `Mismatched`, `R-Mismatched`, `X-Flower`, `Alt-Crossing`],
|
|
@@ -1357,9 +1358,15 @@ const g_settings = {
|
|
|
1357
1358
|
effects: [C_FLG_OFF, `Dizzy`, `Spin`, `Wave`, `Storm`, `Blinking`, `Squids`],
|
|
1358
1359
|
effectNum: 0,
|
|
1359
1360
|
|
|
1360
|
-
camoufrages: [C_FLG_OFF, `Color`, `Arrow`, `
|
|
1361
|
+
camoufrages: [C_FLG_OFF, `Color`, `Arrow`, `Step+Arrow`, `Color+Arrow`, `Color+Step+Arrow`],
|
|
1361
1362
|
camoufrageNum: 0,
|
|
1362
1363
|
|
|
1364
|
+
camoufrageRotates: [C_FLG_OFF, `Color`, `Arrow`, `Step+Arrow`, `Color+Arrow`, `Color+Step+Arrow`],
|
|
1365
|
+
camoufrageNoRotates: [C_FLG_OFF, `Color`],
|
|
1366
|
+
|
|
1367
|
+
camoufrageTypes: [C_FLG_HYPHEN, `FrzArrow`],
|
|
1368
|
+
camoufrageTypeNum: 0,
|
|
1369
|
+
|
|
1363
1370
|
swappings: [C_FLG_OFF, `Mirror`, `X-Mirror`],
|
|
1364
1371
|
swappingNum: 0,
|
|
1365
1372
|
|
|
@@ -2171,7 +2178,7 @@ let g_storeSettingsEx = [`d_stepzone`, `d_judgment`, `d_fastslow`, `d_lifegauge`
|
|
|
2171
2178
|
`d_score`, `d_musicinfo`, `d_filterline`];
|
|
2172
2179
|
|
|
2173
2180
|
let g_canDisabledSettings = [`speed`, `motion`, `scroll`, `reverse`, `shuffle`, `autoPlay`, `gauge`,
|
|
2174
|
-
`excessive`, `appearance`, `playWindow`, `stepArea`, `frzReturn`, `shaking`, `effect`, `camoufrage`,
|
|
2181
|
+
`excessive`, `appearance`, `playWindow`, `stepArea`, `frzReturn`, `shaking`, `effect`, `camoufrage`, `camoufrageType`,
|
|
2175
2182
|
`swapping`, `judgRange`, `autoRetry`];
|
|
2176
2183
|
|
|
2177
2184
|
const g_hidSudFunc = new Map([
|
|
@@ -2870,6 +2877,7 @@ const g_shortcutObj = {
|
|
|
2870
2877
|
KeyH: { id: `lnkShakingR` },
|
|
2871
2878
|
KeyE: { id: `lnkEffectR` },
|
|
2872
2879
|
KeyC: { id: `lnkCamoufrageR` },
|
|
2880
|
+
KeyG: { id: `lnkCamoufrageType` },
|
|
2873
2881
|
KeyW: { id: `lnkSwappingR` },
|
|
2874
2882
|
KeyJ: { id: `lnkJudgRangeR` },
|
|
2875
2883
|
KeyA: { id: `lnkAutoRetryR` },
|
|
@@ -3484,28 +3492,28 @@ const g_keyObj = {
|
|
|
3484
3492
|
},
|
|
3485
3493
|
|
|
3486
3494
|
// スクロール拡張オプション
|
|
3487
|
-
scrollName_def: [
|
|
3495
|
+
scrollName_def: [C_FLG_HYPHEN],
|
|
3488
3496
|
scrollDir5_0: {
|
|
3489
|
-
|
|
3497
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1],
|
|
3490
3498
|
'Cross': [1, -1, -1, 1, 1],
|
|
3491
3499
|
'Split': [1, 1, -1, -1, -1],
|
|
3492
3500
|
'Alternate': [1, -1, 1, -1, 1],
|
|
3493
3501
|
},
|
|
3494
3502
|
scrollDir5_1: {
|
|
3495
|
-
|
|
3503
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1],
|
|
3496
3504
|
'Cross': [1, 1, -1, -1, 1],
|
|
3497
3505
|
'Split': [1, 1, 1, -1, -1],
|
|
3498
3506
|
'Alternate': [1, -1, 1, -1, 1],
|
|
3499
3507
|
},
|
|
3500
3508
|
scrollDir5_2: {
|
|
3501
|
-
|
|
3509
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1],
|
|
3502
3510
|
'Cross': [1, -1, -1, -1, 1],
|
|
3503
3511
|
'Split': [1, 1, -1, -1, -1],
|
|
3504
3512
|
'Alternate': [1, -1, 1, -1, 1],
|
|
3505
3513
|
},
|
|
3506
3514
|
|
|
3507
3515
|
scrollDir7_0: {
|
|
3508
|
-
|
|
3516
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1],
|
|
3509
3517
|
'Cross': [1, 1, -1, -1, -1, 1, 1],
|
|
3510
3518
|
'Split': [1, 1, 1, -1, -1, -1, -1],
|
|
3511
3519
|
'Alternate': [1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3514,7 +3522,7 @@ const g_keyObj = {
|
|
|
3514
3522
|
},
|
|
3515
3523
|
|
|
3516
3524
|
scrollDir7i_0: {
|
|
3517
|
-
|
|
3525
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1],
|
|
3518
3526
|
'Cross': [1, 1, -1, -1, -1, 1, 1],
|
|
3519
3527
|
'Split': [1, 1, 1, -1, -1, -1, -1],
|
|
3520
3528
|
'Alternate': [1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3523,7 +3531,7 @@ const g_keyObj = {
|
|
|
3523
3531
|
},
|
|
3524
3532
|
|
|
3525
3533
|
scrollDir8_0: {
|
|
3526
|
-
|
|
3534
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1],
|
|
3527
3535
|
'Cross': [1, 1, -1, -1, -1, 1, 1, 1],
|
|
3528
3536
|
'Split': [1, 1, 1, 1, -1, -1, -1, -1],
|
|
3529
3537
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1],
|
|
@@ -3531,7 +3539,7 @@ const g_keyObj = {
|
|
|
3531
3539
|
'Asymmetry': [1, -1, 1, -1, -1, 1, -1, 1],
|
|
3532
3540
|
},
|
|
3533
3541
|
scrollDir8_1: {
|
|
3534
|
-
|
|
3542
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1],
|
|
3535
3543
|
'Cross': [1, 1, 1, -1, -1, -1, 1, 1],
|
|
3536
3544
|
'Split': [1, 1, 1, 1, -1, -1, -1, -1],
|
|
3537
3545
|
'Alternate': [-1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3539,7 +3547,7 @@ const g_keyObj = {
|
|
|
3539
3547
|
'Asymmetry': [1, -1, 1, -1, -1, 1, -1, 1],
|
|
3540
3548
|
},
|
|
3541
3549
|
scrollDir8_2: {
|
|
3542
|
-
|
|
3550
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1],
|
|
3543
3551
|
'Cross': [1, 1, 1, -1, -1, -1, 1, 1],
|
|
3544
3552
|
'Split': [1, 1, 1, 1, 1, -1, -1, -1],
|
|
3545
3553
|
'Alternate': [-1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3548,7 +3556,7 @@ const g_keyObj = {
|
|
|
3548
3556
|
},
|
|
3549
3557
|
|
|
3550
3558
|
scrollDir9A_0: {
|
|
3551
|
-
|
|
3559
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3552
3560
|
'Cross': [1, 1, -1, -1, -1, -1, -1, 1, 1],
|
|
3553
3561
|
'Split': [1, 1, 1, 1, -1, -1, -1, -1, -1],
|
|
3554
3562
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3556,7 +3564,7 @@ const g_keyObj = {
|
|
|
3556
3564
|
'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1],
|
|
3557
3565
|
},
|
|
3558
3566
|
scrollDir9B_0: {
|
|
3559
|
-
|
|
3567
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3560
3568
|
'Cross': [1, 1, -1, -1, -1, -1, -1, 1, 1],
|
|
3561
3569
|
'Split': [1, 1, 1, 1, -1, -1, -1, -1, -1],
|
|
3562
3570
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3564,7 +3572,7 @@ const g_keyObj = {
|
|
|
3564
3572
|
'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1],
|
|
3565
3573
|
},
|
|
3566
3574
|
scrollDir9i_1: {
|
|
3567
|
-
|
|
3575
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3568
3576
|
'Cross': [1, 1, -1, -1, -1, -1, -1, 1, 1],
|
|
3569
3577
|
'Split': [1, 1, 1, 1, -1, -1, -1, -1, -1],
|
|
3570
3578
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3572,7 +3580,7 @@ const g_keyObj = {
|
|
|
3572
3580
|
'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1],
|
|
3573
3581
|
},
|
|
3574
3582
|
scrollDir9d_0: {
|
|
3575
|
-
|
|
3583
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3576
3584
|
'Cross': [1, 1, 1, -1, -1, -1, 1, 1, 1],
|
|
3577
3585
|
'Split': [1, 1, 1, 1, -1, -1, -1, -1, -1],
|
|
3578
3586
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3580,16 +3588,16 @@ const g_keyObj = {
|
|
|
3580
3588
|
'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1],
|
|
3581
3589
|
},
|
|
3582
3590
|
scrollDir9h_0: {
|
|
3583
|
-
|
|
3591
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3584
3592
|
'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1],
|
|
3585
3593
|
},
|
|
3586
3594
|
|
|
3587
3595
|
scrollDir11_0: {
|
|
3588
|
-
|
|
3596
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3589
3597
|
'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1],
|
|
3590
3598
|
},
|
|
3591
3599
|
scrollDir11_1: {
|
|
3592
|
-
|
|
3600
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3593
3601
|
'Cross': [1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1],
|
|
3594
3602
|
'Split': [-1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1],
|
|
3595
3603
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3597,15 +3605,15 @@ const g_keyObj = {
|
|
|
3597
3605
|
'Asymmetry': [1, -1, 1, -1, -1, 1, -1, -1, 1, 1, -1],
|
|
3598
3606
|
},
|
|
3599
3607
|
scrollDir11L_0: {
|
|
3600
|
-
|
|
3608
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3601
3609
|
'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1],
|
|
3602
3610
|
},
|
|
3603
3611
|
scrollDir11W_0: {
|
|
3604
|
-
|
|
3612
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3605
3613
|
'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1],
|
|
3606
3614
|
},
|
|
3607
3615
|
scrollDir11i_0: {
|
|
3608
|
-
|
|
3616
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3609
3617
|
'Cross': [1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1],
|
|
3610
3618
|
'Split': [1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1],
|
|
3611
3619
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3613,7 +3621,7 @@ const g_keyObj = {
|
|
|
3613
3621
|
'Asymmetry': [1, -1, 1, -1, 1, -1, -1, 1, -1, 1, -1],
|
|
3614
3622
|
},
|
|
3615
3623
|
scrollDir11j_0: {
|
|
3616
|
-
|
|
3624
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3617
3625
|
'Cross': [1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1],
|
|
3618
3626
|
'Split': [1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1],
|
|
3619
3627
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3621,23 +3629,23 @@ const g_keyObj = {
|
|
|
3621
3629
|
},
|
|
3622
3630
|
|
|
3623
3631
|
scrollDir12_0: {
|
|
3624
|
-
|
|
3632
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3625
3633
|
'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
3626
3634
|
'Twist': [1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1],
|
|
3627
3635
|
},
|
|
3628
3636
|
scrollDir12i_0: {
|
|
3629
|
-
|
|
3637
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3630
3638
|
'Cross': [1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1],
|
|
3631
3639
|
'Split': [1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1],
|
|
3632
3640
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1],
|
|
3633
3641
|
},
|
|
3634
3642
|
scrollDir13_0: {
|
|
3635
|
-
|
|
3643
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3636
3644
|
'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
3637
3645
|
'Cross': [-1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1],
|
|
3638
3646
|
},
|
|
3639
3647
|
scrollDir13_1: {
|
|
3640
|
-
|
|
3648
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3641
3649
|
'Cross': [1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, 1],
|
|
3642
3650
|
'Split': [-1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1],
|
|
3643
3651
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
@@ -3645,30 +3653,30 @@ const g_keyObj = {
|
|
|
3645
3653
|
'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1],
|
|
3646
3654
|
},
|
|
3647
3655
|
scrollDir14_0: {
|
|
3648
|
-
|
|
3656
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3649
3657
|
'Flat': [1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
3650
3658
|
},
|
|
3651
3659
|
|
|
3652
3660
|
scrollDir14i_0: {
|
|
3653
|
-
|
|
3661
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3654
3662
|
'Flat': [1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1],
|
|
3655
3663
|
},
|
|
3656
3664
|
scrollDir15A_0: {
|
|
3657
|
-
|
|
3665
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3658
3666
|
'Flat': [1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1],
|
|
3659
3667
|
},
|
|
3660
3668
|
scrollDir16i_0: {
|
|
3661
|
-
|
|
3669
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3662
3670
|
'Flat': [1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
3663
3671
|
},
|
|
3664
3672
|
scrollDir17_0: {
|
|
3665
|
-
|
|
3673
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3666
3674
|
'Cross': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1],
|
|
3667
3675
|
'Split': [1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
3668
3676
|
'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1],
|
|
3669
3677
|
},
|
|
3670
3678
|
scrollDir23_0: {
|
|
3671
|
-
|
|
3679
|
+
[C_FLG_HYPHEN]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3672
3680
|
'Flat': [1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
|
3673
3681
|
'Cross': [-1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1],
|
|
3674
3682
|
'Twist': [1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1],
|
|
@@ -4519,6 +4527,8 @@ const g_lblNameObj = {
|
|
|
4519
4527
|
|
|
4520
4528
|
'u_Color': `Color`,
|
|
4521
4529
|
'u_Arrow': `Arrow`,
|
|
4530
|
+
'u_Color+Arrow': `Color+Arrow`,
|
|
4531
|
+
'u_FrzArrow': `FrzArrow`,
|
|
4522
4532
|
|
|
4523
4533
|
'u_Narrow': `Narrow`,
|
|
4524
4534
|
'u_Hard': `Hard`,
|
|
@@ -4739,7 +4749,7 @@ const g_lang_msgObj = {
|
|
|
4739
4749
|
scroll: `各レーンのスクロール方向をパターンに沿って設定します。\nReverse:ONでスクロール方向を反転します。`,
|
|
4740
4750
|
shuffle: `譜面を左右反転したり、ランダムにします。\nランダムにした場合は別譜面扱いとなり、ハイスコアは保存されません。`,
|
|
4741
4751
|
autoPlay: `オートプレイや一部キーを自動で打たせる設定を行います。\nオートプレイ時はハイスコアを保存しません。`,
|
|
4742
|
-
gauge: `クリア条件を設定します。\n[Start] ゲージ初期値, [Border] クリア条件(ハイフン時は0),\n[Recovery] 回復量, [Damage] ダメージ量, [Accuracy]
|
|
4752
|
+
gauge: `クリア条件を設定します。\n[Start] ゲージ初期値, [Border] クリア条件(ハイフン時は0),\n[Recovery] 回復量, [Damage] ダメージ量, [Accuracy] クリアに必要な正確率(オンマウスで許容ミス数表示)`,
|
|
4743
4753
|
excessive: `空押し判定を行うか設定します。`,
|
|
4744
4754
|
adjustment: `曲とのタイミングにズレを感じる場合、\n数値を変えることでフレーム単位のズレを直すことができます。\n外側のボタンは5f刻み、真ん中は1f刻み、内側は0.5f刻みで調整できます。`,
|
|
4745
4755
|
fadein: `譜面を途中から再生します。\n途中から開始した場合はハイスコアを保存しません。`,
|
|
@@ -4778,6 +4788,7 @@ const g_lang_msgObj = {
|
|
|
4778
4788
|
`[H-Drunk] S-Drunkより大きく上下に揺らし、さらに回転が掛かります`,
|
|
4779
4789
|
effect: `矢印・フリーズアローにエフェクトをかけます。\n[Dizzy/Spin] 矢印が回転します\n[Wave/Storm] 矢印の軌道が左右に揺れます\n[Blinking] 矢印が点滅します\n[Squids] 矢印が伸び縮みします`,
|
|
4780
4790
|
camoufrage: `ステップの見た目が配置は同じでランダムに変わります。`,
|
|
4791
|
+
camoufrageType: `[FrzArrow] フリーズアローの帯部分を初期表示のみ非表示にし、矢印のみで表示します(ヒット/失敗時は帯を再表示)`,
|
|
4781
4792
|
swapping: `ステップゾーンの位置をグループ単位で入れ替えます。`,
|
|
4782
4793
|
judgRange: `判定の許容範囲を設定します。\n[Normal] 通常、[Narrow/Hard] 辛判定、[ExHard] 激辛判定`,
|
|
4783
4794
|
autoRetry: `自動リトライの条件を設定します。\n[Miss] ミス時、[Matari] マターリ時、[Shakin] シャキン時、[FS] Fast/Slow発生時`,
|
|
@@ -4835,7 +4846,7 @@ const g_lang_msgObj = {
|
|
|
4835
4846
|
scroll: `Set the scroll direction for each lane according to the pattern.\nIf "Reverse:ON" sets, reverse the scroll direction.`,
|
|
4836
4847
|
shuffle: `Flip the chart left and right or make it random.\nIf you make it random, it will be treated as other charts and the high score will not be saved.`,
|
|
4837
4848
|
autoPlay: `Set to auto play and to hit some keys automatically.\nHigh score is not saved during auto play.`,
|
|
4838
|
-
gauge: `Set the clear condition.\n[Start] initial value, [Border] borderline value (hyphen means zero),\n[Recovery] recovery amount, [Damage] damage amount,\n[Accuracy] accuracy required to clear
|
|
4849
|
+
gauge: `Set the clear condition.\n[Start] initial value, [Border] borderline value (hyphen means zero),\n[Recovery] recovery amount, [Damage] damage amount,\n[Accuracy] accuracy required to clear (mouseover to see the number of allowed mistakes)`,
|
|
4839
4850
|
excessive: `Set whether to use excessive miss judgment.`,
|
|
4840
4851
|
adjustment: `If you feel that the timing is out of sync with the music, \nyou can correct the shift in frame units by changing the value.\nThe outer button can be adjusted in 5 frame increments, the middle in 1 frame increments, \nand the inner button in 0.5 frame increments.`,
|
|
4841
4852
|
fadein: `Plays the chart from the middle.\nIf you start in the middle, the high score will not be saved.`,
|
|
@@ -4875,6 +4886,7 @@ const g_lang_msgObj = {
|
|
|
4875
4886
|
`[H-Drunk] Adds stronger vertical movement than S-Drunk and adds rotation.`,
|
|
4876
4887
|
effect: `Applies effects to the arrows and freeze arrows.\n[Dizzy/Spin] Arrows rotate.\n[Wave/Storm] Swing from left to right.\n[Blinking] Arrows blink.\n[Squids] Arrows stretch and shrink.`,
|
|
4877
4888
|
camoufrage: `The appearance of the steps changes randomly with the same placement.`,
|
|
4889
|
+
camoufrageType: `[FrzArrow] Initially hides freeze-arrow bars and displays only the arrow portion (bars reappear on hit/failure)`,
|
|
4878
4890
|
swapping: `Replaces the position of step zones on a group-by-group basis.`,
|
|
4879
4891
|
judgRange: `Set the allowable range of judgment.\n[Normal] Normal judgment, [Narrow/Hard] Hard judgment, [ExHard] Very hard judgment`,
|
|
4880
4892
|
autoRetry: `Set the conditions for automatic retry.\n[Miss] When missed, [Matari] When good, [Shakin] When great, [FS] When Fast/Slow occurs`,
|