danoniplus 39.8.18 → 39.8.20
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 +46 -25
- 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/20
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 39.8.
|
|
12
|
-
const g_revisedDate = `2026/03/
|
|
11
|
+
const g_version = `Ver 39.8.20`;
|
|
12
|
+
const g_revisedDate = `2026/03/20`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -5779,13 +5779,14 @@ const makeHighScore = _scoreId => {
|
|
|
5779
5779
|
tweetDifData += `:${getStgDetailName(g_stateObj.shuffle)}`;
|
|
5780
5780
|
}
|
|
5781
5781
|
|
|
5782
|
+
const storedExcessive = g_localStorage.highscores[scoreName]?.excessive;
|
|
5782
5783
|
const resultParams = {
|
|
5783
5784
|
hashTag: (hasVal(g_headerObj.hashTag) ? ` ${g_headerObj.hashTag}` : ``),
|
|
5784
5785
|
tuning: g_headerObj.creatorNames[_scoreId],
|
|
5785
5786
|
rankMark: g_localStorage.highscores?.[scoreName]?.rankMark || `--`,
|
|
5786
5787
|
playStyleData: g_localStorage.highscores[scoreName]?.playStyle || `--`,
|
|
5787
5788
|
highscore: g_localStorage.highscores[scoreName],
|
|
5788
|
-
tweetExcessive: hasVal(
|
|
5789
|
+
tweetExcessive: hasVal(storedExcessive, `---`) ? `(+${storedExcessive})` : ``,
|
|
5789
5790
|
musicTitle, tweetDifData, tweetFrzJdg, tweetMaxCombo, baseTwitUrl,
|
|
5790
5791
|
};
|
|
5791
5792
|
const resultCommon = unEscapeHtml(makeResultText(g_templateObj.resultFormatDf, resultParams));
|
|
@@ -10088,6 +10089,47 @@ const getArrowSettings = () => {
|
|
|
10088
10089
|
g_workObj.frzHitShadowColorsAll[j] = ``;
|
|
10089
10090
|
|
|
10090
10091
|
}
|
|
10092
|
+
|
|
10093
|
+
// Swapping設定に応じたステップゾーンの入れ替え
|
|
10094
|
+
if (g_stateObj.swapping.includes(`Mirror`)) {
|
|
10095
|
+
|
|
10096
|
+
let _style = structuredClone(Object.values(g_workObj.shuffleGroupMap));
|
|
10097
|
+
const _styleTrans = _style.flatMap(arr => {
|
|
10098
|
+
// g_workObj.devidePosの値ごとにグループ化する
|
|
10099
|
+
const groups = {};
|
|
10100
|
+
|
|
10101
|
+
arr.forEach(n => {
|
|
10102
|
+
const div = g_workObj.dividePos[n];
|
|
10103
|
+
if (!groups[div]) groups[div] = [];
|
|
10104
|
+
groups[div].push(n);
|
|
10105
|
+
});
|
|
10106
|
+
|
|
10107
|
+
// groups は {0:[...], 1:[...], 2:[...]} のような形になるので
|
|
10108
|
+
// これを配列に変換して返す
|
|
10109
|
+
return Object.values(groups);
|
|
10110
|
+
});
|
|
10111
|
+
const _styleTransDf = structuredClone(Object.values(_styleTrans));
|
|
10112
|
+
if (g_stateObj.swapping === `Mirror`) {
|
|
10113
|
+
_styleTrans.map(_group => _group.reverse());
|
|
10114
|
+
|
|
10115
|
+
} else if (g_stateObj.swapping === `X-Mirror`) {
|
|
10116
|
+
// X-Mirrorの場合、グループの内側だけ入れ替える
|
|
10117
|
+
_styleTrans.forEach((group, i) => {
|
|
10118
|
+
g_settings.swapPattern.forEach(val => {
|
|
10119
|
+
swapGroupNums(_styleTrans, group, i, val);
|
|
10120
|
+
});
|
|
10121
|
+
});
|
|
10122
|
+
}
|
|
10123
|
+
|
|
10124
|
+
// 入れ替えた結果に合わせてX座標位置を入れ替える
|
|
10125
|
+
g_workObj.stepX_df = structuredClone(g_workObj.stepX);
|
|
10126
|
+
_styleTrans.forEach((_group, _i) => {
|
|
10127
|
+
_group.forEach((_val, _j) => {
|
|
10128
|
+
g_workObj.stepX[_group[_j]] = g_workObj.stepX_df[_styleTransDf[_i][_j]];
|
|
10129
|
+
});
|
|
10130
|
+
});
|
|
10131
|
+
}
|
|
10132
|
+
|
|
10091
10133
|
g_workObj.orgFlatFlg = g_workObj.dividePos.every(v => v === g_workObj.dividePos[0]);
|
|
10092
10134
|
if (g_stateObj.stepArea === `X-Flower` || (g_stateObj.stepArea.includes(`Mismatched`) && g_workObj.orgFlatFlg)) {
|
|
10093
10135
|
for (let j = 0; j < keyNum; j++) {
|
|
@@ -10129,27 +10171,6 @@ const getArrowSettings = () => {
|
|
|
10129
10171
|
g_workObj.backX = (g_workObj.nonDefaultSc && g_headerObj.playingLayout ? g_headerObj.scAreaWidth : 0);
|
|
10130
10172
|
g_workObj.playingX = g_headerObj.playingX + g_workObj.backX;
|
|
10131
10173
|
|
|
10132
|
-
// Swapping設定に応じたステップゾーンの入れ替え
|
|
10133
|
-
if (g_stateObj.swapping.includes(`Mirror`)) {
|
|
10134
|
-
|
|
10135
|
-
let _style = structuredClone(Object.values(g_workObj.shuffleGroupMap));
|
|
10136
|
-
if (g_stateObj.swapping === `Mirror`) {
|
|
10137
|
-
_style.map(_group => _group.reverse());
|
|
10138
|
-
|
|
10139
|
-
} else if (g_stateObj.swapping === `X-Mirror`) {
|
|
10140
|
-
// X-Mirrorの場合、グループの内側だけ入れ替える
|
|
10141
|
-
_style.forEach((group, i) => g_settings.swapPattern.forEach(val => swapGroupNums(_style, group, i, val)));
|
|
10142
|
-
}
|
|
10143
|
-
|
|
10144
|
-
// 入れ替えた結果に合わせてX座標位置を入れ替える
|
|
10145
|
-
g_workObj.stepX_df = structuredClone(g_workObj.stepX);
|
|
10146
|
-
_style.forEach((_group, _i) => {
|
|
10147
|
-
_group.forEach((_val, _j) => {
|
|
10148
|
-
g_workObj.stepX[_group[_j]] = g_workObj.stepX_df[g_workObj.shuffleGroupMap[_i][_j]];
|
|
10149
|
-
});
|
|
10150
|
-
});
|
|
10151
|
-
}
|
|
10152
|
-
|
|
10153
10174
|
// FrzReturnの初期化
|
|
10154
10175
|
g_workObj.frzReturnFlg = false;
|
|
10155
10176
|
|