danoniplus 29.1.0 → 29.3.0
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 +86 -95
- package/js/lib/danoni_constants.js +3 -1
- 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 : 2022/11/
|
|
7
|
+
* Revised : 2022/11/15
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 29.
|
|
12
|
-
const g_revisedDate = `2022/11/
|
|
11
|
+
const g_version = `Ver 29.3.0`;
|
|
12
|
+
const g_revisedDate = `2022/11/15`;
|
|
13
13
|
const g_alphaVersion = ``;
|
|
14
14
|
|
|
15
15
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -2425,6 +2425,14 @@ const headerConvert = _dosObj => {
|
|
|
2425
2425
|
// ヘッダー群の格納先
|
|
2426
2426
|
const obj = {};
|
|
2427
2427
|
|
|
2428
|
+
/**
|
|
2429
|
+
* ロケールを含んだヘッダーの取得
|
|
2430
|
+
* @param {object} _obj
|
|
2431
|
+
* @param {string} _param
|
|
2432
|
+
* @returns
|
|
2433
|
+
*/
|
|
2434
|
+
const getHeader = (_obj, _param) => _obj[`${_param}${g_localeObj.val}`] ?? _obj[_param];
|
|
2435
|
+
|
|
2428
2436
|
// フォントの設定
|
|
2429
2437
|
obj.customFont = _dosObj.customFont ?? ``;
|
|
2430
2438
|
g_headerObj.customFont = obj.customFont;
|
|
@@ -2485,7 +2493,7 @@ const headerConvert = _dosObj => {
|
|
|
2485
2493
|
obj.artistNames = [];
|
|
2486
2494
|
obj.musicNos = [];
|
|
2487
2495
|
|
|
2488
|
-
const dosMusicTitle = _dosObj
|
|
2496
|
+
const dosMusicTitle = getHeader(_dosObj, `musicTitle`);
|
|
2489
2497
|
if (hasVal(dosMusicTitle)) {
|
|
2490
2498
|
const musicData = splitLF2(dosMusicTitle);
|
|
2491
2499
|
|
|
@@ -2543,12 +2551,13 @@ const headerConvert = _dosObj => {
|
|
|
2543
2551
|
obj.frzAttempt = setIntVal(_dosObj.frzAttempt, C_FRM_FRZATTEMPT);
|
|
2544
2552
|
|
|
2545
2553
|
// 製作者表示
|
|
2546
|
-
|
|
2547
|
-
|
|
2554
|
+
const dosTuning = getHeader(_dosObj, `tuning`);
|
|
2555
|
+
if (hasVal(dosTuning)) {
|
|
2556
|
+
const tunings = dosTuning.split(`,`);
|
|
2548
2557
|
obj.tuning = escapeHtmlForEnabledTag(tunings[0]);
|
|
2549
2558
|
obj.creatorUrl = (tunings.length > 1 ? tunings[1] : (g_presetObj.tuningUrl ?? ``));
|
|
2550
2559
|
} else {
|
|
2551
|
-
obj.tuning = escapeHtmlForEnabledTag(g_presetObj
|
|
2560
|
+
obj.tuning = escapeHtmlForEnabledTag(getHeader(g_presetObj, `tuning`) ?? `name`);
|
|
2552
2561
|
obj.creatorUrl = g_presetObj.tuningUrl ?? ``;
|
|
2553
2562
|
}
|
|
2554
2563
|
obj.tuningInit = obj.tuning;
|
|
@@ -2803,12 +2812,12 @@ const headerConvert = _dosObj => {
|
|
|
2803
2812
|
obj.readyHtml = _dosObj.readyHtml ?? ``;
|
|
2804
2813
|
|
|
2805
2814
|
// デフォルト曲名表示のフォントサイズ
|
|
2806
|
-
obj.titlesize = _dosObj
|
|
2815
|
+
obj.titlesize = getHeader(_dosObj, `titlesize`) ?? ``;
|
|
2807
2816
|
|
|
2808
2817
|
// デフォルト曲名表示のフォント名
|
|
2809
2818
|
// (使用例: |titlefont=Century,Meiryo UI|)
|
|
2810
2819
|
obj.titlefonts = g_titleLists.defaultFonts.concat();
|
|
2811
|
-
_dosObj
|
|
2820
|
+
getHeader(_dosObj, `titlefont`)?.split(`$`).forEach((font, j) => obj.titlefonts[j] = `'${(font.replaceAll(`,`, `', '`))}'`);
|
|
2812
2821
|
if (obj.titlefonts[1] === undefined) {
|
|
2813
2822
|
obj.titlefonts[1] = obj.titlefonts[0];
|
|
2814
2823
|
}
|
|
@@ -2825,7 +2834,7 @@ const headerConvert = _dosObj => {
|
|
|
2825
2834
|
|
|
2826
2835
|
// デフォルト曲名表示の表示位置調整
|
|
2827
2836
|
obj.titlepos = [[0, 0], [0, 0]];
|
|
2828
|
-
_dosObj
|
|
2837
|
+
getHeader(_dosObj, `titlepos`)?.split(`$`).forEach((pos, j) => obj.titlepos[j] = pos.split(`,`).map(x => parseFloat(x)));
|
|
2829
2838
|
|
|
2830
2839
|
// タイトル文字のアニメーション設定
|
|
2831
2840
|
obj.titleAnimationName = [`leftToRight`];
|
|
@@ -2855,7 +2864,7 @@ const headerConvert = _dosObj => {
|
|
|
2855
2864
|
}
|
|
2856
2865
|
|
|
2857
2866
|
// デフォルト曲名表示の複数行時の縦間隔
|
|
2858
|
-
obj.titlelineheight = setIntVal(_dosObj
|
|
2867
|
+
obj.titlelineheight = setIntVal(getHeader(_dosObj, `titlelineheight`), ``);
|
|
2859
2868
|
|
|
2860
2869
|
// フリーズアローの始点で通常矢印の判定を行うか(dotさんソース方式)
|
|
2861
2870
|
obj.frzStartjdgUse = setBoolVal(_dosObj.frzStartjdgUse ?? g_presetObj.frzStartjdgUse);
|
|
@@ -5625,7 +5634,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
5625
5634
|
createDescDiv(`kcDesc`, g_lblNameObj.kcDesc.split(`{0}`).join(g_kCd[C_KEY_RETRY])
|
|
5626
5635
|
.split(`{1}:`).join(g_isMac ? `` : `Delete:`)),
|
|
5627
5636
|
|
|
5628
|
-
createDescDiv(`kcShuffleDesc`, g_lblNameObj.kcShuffleDesc),
|
|
5637
|
+
createDescDiv(`kcShuffleDesc`, g_headerObj.shuffleUse ? g_lblNameObj.kcShuffleDesc : g_lblNameObj.kcNoShuffleDesc),
|
|
5629
5638
|
);
|
|
5630
5639
|
|
|
5631
5640
|
// キーの一覧を表示
|
|
@@ -7383,14 +7392,9 @@ const getBrakeTrace = _frms => {
|
|
|
7383
7392
|
const getFirstArrivalFrame = (_startFrame, _speedOnFrame, _motionOnFrame) => {
|
|
7384
7393
|
let startY = 0;
|
|
7385
7394
|
let frm = _startFrame;
|
|
7386
|
-
let motionFrm = C_MOTION_STD_POS;
|
|
7387
7395
|
|
|
7388
7396
|
while (g_posObj.distY - startY > 0) {
|
|
7389
7397
|
startY += _speedOnFrame[frm];
|
|
7390
|
-
|
|
7391
|
-
if (_speedOnFrame[frm] !== 0) {
|
|
7392
|
-
motionFrm++;
|
|
7393
|
-
}
|
|
7394
7398
|
frm++;
|
|
7395
7399
|
}
|
|
7396
7400
|
return frm;
|
|
@@ -8788,12 +8792,13 @@ const mainInit = _ => {
|
|
|
8788
8792
|
|
|
8789
8793
|
if (g_workObj.judgArrowCnt[_j] === _k - 1 && _cnt <= g_judgObj.arrowJ[g_judgPosObj.shakin]) {
|
|
8790
8794
|
const prevArrowName = `arrow${_j}_${g_workObj.judgArrowCnt[_j]}`;
|
|
8795
|
+
const prevArrow = g_attrObj[prevArrowName];
|
|
8791
8796
|
|
|
8792
|
-
if (
|
|
8797
|
+
if (prevArrow.cnt < (-1) * g_judgObj.arrowJ[g_judgPosObj.ii]) {
|
|
8793
8798
|
|
|
8794
8799
|
// 自身より前の矢印が未判定の場合、強制的に枠外判定を行い矢印を削除
|
|
8795
|
-
if (
|
|
8796
|
-
judgeUwan(
|
|
8800
|
+
if (prevArrow.cnt >= (-1) * g_judgObj.arrowJ[g_judgPosObj.uwan]) {
|
|
8801
|
+
judgeUwan(prevArrow.cnt);
|
|
8797
8802
|
judgeObjDelete.arrow(_j, prevArrowName);
|
|
8798
8803
|
}
|
|
8799
8804
|
}
|
|
@@ -8808,15 +8813,15 @@ const mainInit = _ => {
|
|
|
8808
8813
|
|
|
8809
8814
|
if (g_workObj.judgFrzCnt[_j] === _k - 1 && _cnt <= g_judgObj.frzJ[g_judgPosObj.sfsf]) {
|
|
8810
8815
|
const prevFrzName = `frz${_j}_${g_workObj.judgFrzCnt[_j]}`;
|
|
8816
|
+
const prevFrz = g_attrObj[prevFrzName];
|
|
8811
8817
|
|
|
8812
|
-
if (
|
|
8813
|
-
g_attrObj[prevFrzName].cnt < (-1) * g_judgObj.frzJ[g_judgPosObj.kita]) {
|
|
8818
|
+
if (prevFrz.isMoving && prevFrz.cnt < (-1) * g_judgObj.frzJ[g_judgPosObj.kita]) {
|
|
8814
8819
|
|
|
8815
8820
|
// 自身より前のフリーズアローが未判定の場合、強制的に枠外判定を行いフリーズアローを削除
|
|
8816
|
-
if (
|
|
8817
|
-
judgeIknai(
|
|
8821
|
+
if (prevFrz.cnt >= (-1) * g_judgObj.frzJ[g_judgPosObj.iknai]) {
|
|
8822
|
+
judgeIknai(prevFrz.cnt);
|
|
8818
8823
|
if (g_headerObj.frzStartjdgUse) {
|
|
8819
|
-
judgeUwan(
|
|
8824
|
+
judgeUwan(prevFrz.cnt);
|
|
8820
8825
|
}
|
|
8821
8826
|
}
|
|
8822
8827
|
judgeObjDelete.frz(_j, prevFrzName);
|
|
@@ -8920,20 +8925,21 @@ const mainInit = _ => {
|
|
|
8920
8925
|
*/
|
|
8921
8926
|
const movArrow = (_j, _k, _name) => {
|
|
8922
8927
|
const arrowName = `${_name}${_j}_${_k}`;
|
|
8928
|
+
const currentArrow = g_attrObj[arrowName];
|
|
8923
8929
|
|
|
8924
8930
|
// 全体色変化 (移動時)
|
|
8925
8931
|
changeColorFunc[_name](_j, _k);
|
|
8926
8932
|
|
|
8927
8933
|
// 移動
|
|
8928
8934
|
if (g_workObj.currentSpeed !== 0) {
|
|
8929
|
-
const boostCnt =
|
|
8930
|
-
|
|
8931
|
-
|
|
8932
|
-
document.getElementById(arrowName).style.top = `${
|
|
8933
|
-
|
|
8934
|
-
}
|
|
8935
|
-
judgeMotionFunc[`${_name}${g_stateObj.autoAll}`](_j, arrowName, --
|
|
8936
|
-
judgeNextFunc[`${_name}${g_stateObj.autoAll}`](_j, _k,
|
|
8935
|
+
const boostCnt = currentArrow.boostCnt;
|
|
8936
|
+
currentArrow.prevY = currentArrow.y;
|
|
8937
|
+
currentArrow.y -= (g_workObj.currentSpeed * currentArrow.boostSpd + g_workObj.motionOnFrames[boostCnt] * currentArrow.boostDir) * currentArrow.dir;
|
|
8938
|
+
document.getElementById(arrowName).style.top = `${currentArrow.y}px`;
|
|
8939
|
+
currentArrow.boostCnt--;
|
|
8940
|
+
}
|
|
8941
|
+
judgeMotionFunc[`${_name}${g_stateObj.autoAll}`](_j, arrowName, --currentArrow.cnt);
|
|
8942
|
+
judgeNextFunc[`${_name}${g_stateObj.autoAll}`](_j, _k, currentArrow.cnt);
|
|
8937
8943
|
};
|
|
8938
8944
|
|
|
8939
8945
|
/**
|
|
@@ -9021,24 +9027,25 @@ const mainInit = _ => {
|
|
|
9021
9027
|
const movFrzArrow = (_j, _k, _name) => {
|
|
9022
9028
|
const frzNo = `${_j}_${_k}`;
|
|
9023
9029
|
const frzName = `${_name}${frzNo}`;
|
|
9024
|
-
const
|
|
9030
|
+
const currentFrz = g_attrObj[frzName];
|
|
9031
|
+
const movY = g_workObj.currentSpeed * currentFrz.boostSpd * currentFrz.dir;
|
|
9025
9032
|
|
|
9026
|
-
if (!
|
|
9027
|
-
if (
|
|
9033
|
+
if (!currentFrz.judgEndFlg) {
|
|
9034
|
+
if (currentFrz.isMoving) {
|
|
9028
9035
|
|
|
9029
9036
|
// 全体色変化 (通常時)
|
|
9030
9037
|
changeColorFunc[_name](_j, _k, `Normal`);
|
|
9031
9038
|
|
|
9032
9039
|
// 移動
|
|
9033
9040
|
if (g_workObj.currentSpeed !== 0) {
|
|
9034
|
-
|
|
9035
|
-
document.getElementById(frzName).style.top = `${
|
|
9036
|
-
|
|
9041
|
+
currentFrz.y -= movY + g_workObj.motionOnFrames[currentFrz.boostCnt] * currentFrz.dir * currentFrz.boostDir;
|
|
9042
|
+
document.getElementById(frzName).style.top = `${currentFrz.y}px`;
|
|
9043
|
+
currentFrz.boostCnt--;
|
|
9037
9044
|
}
|
|
9038
|
-
|
|
9045
|
+
currentFrz.cnt--;
|
|
9039
9046
|
|
|
9040
9047
|
// 次フリーズアローへ判定を移すかチェック
|
|
9041
|
-
judgeNextFunc[`${_name}${g_stateObj.autoAll}`](_j, _k,
|
|
9048
|
+
judgeNextFunc[`${_name}${g_stateObj.autoAll}`](_j, _k, currentFrz.cnt);
|
|
9042
9049
|
|
|
9043
9050
|
} else {
|
|
9044
9051
|
|
|
@@ -9046,33 +9053,33 @@ const mainInit = _ => {
|
|
|
9046
9053
|
changeColorFunc[_name](_j, _k, `Hit`);
|
|
9047
9054
|
|
|
9048
9055
|
// フリーズアローがヒット中の処理
|
|
9049
|
-
if (
|
|
9056
|
+
if (currentFrz.frzBarLength > 0) {
|
|
9050
9057
|
|
|
9051
|
-
|
|
9052
|
-
|
|
9053
|
-
|
|
9058
|
+
currentFrz.frzBarLength -= movY * currentFrz.dir;
|
|
9059
|
+
currentFrz.barY -= movY * currentFrz.dividePos;
|
|
9060
|
+
currentFrz.btmY -= movY;
|
|
9054
9061
|
|
|
9055
|
-
$id(`${_name}Bar${frzNo}`).height = `${
|
|
9056
|
-
$id(`${_name}Bar${frzNo}`).top = `${
|
|
9057
|
-
$id(`${_name}Btm${frzNo}`).top = `${
|
|
9058
|
-
$id(`${_name}BtmShadow${frzNo}`).top = `${
|
|
9062
|
+
$id(`${_name}Bar${frzNo}`).height = `${currentFrz.frzBarLength}px`;
|
|
9063
|
+
$id(`${_name}Bar${frzNo}`).top = `${currentFrz.barY}px`;
|
|
9064
|
+
$id(`${_name}Btm${frzNo}`).top = `${currentFrz.btmY}px`;
|
|
9065
|
+
$id(`${_name}BtmShadow${frzNo}`).top = `${currentFrz.btmY}px`;
|
|
9059
9066
|
|
|
9060
9067
|
if (!checkKeyUpFunc[`${_name}${g_stateObj.autoAll}`](_j)) {
|
|
9061
|
-
|
|
9062
|
-
judgeMotionFunc[`${_name}KeyUp`](_j, _k, frzName,
|
|
9068
|
+
currentFrz.keyUpFrame++;
|
|
9069
|
+
judgeMotionFunc[`${_name}KeyUp`](_j, _k, frzName, currentFrz.cnt);
|
|
9063
9070
|
}
|
|
9064
9071
|
} else {
|
|
9065
|
-
judgeMotionFunc[`${_name}OK`](_j, _k, frzName,
|
|
9072
|
+
judgeMotionFunc[`${_name}OK`](_j, _k, frzName, currentFrz.cnt);
|
|
9066
9073
|
}
|
|
9067
9074
|
}
|
|
9068
9075
|
// フリーズアローが枠外に出たときの処理
|
|
9069
|
-
judgeMotionFunc[`${_name}NG`](_j, _k, frzName,
|
|
9076
|
+
judgeMotionFunc[`${_name}NG`](_j, _k, frzName, currentFrz.cnt);
|
|
9070
9077
|
|
|
9071
9078
|
} else {
|
|
9072
|
-
|
|
9073
|
-
if (
|
|
9074
|
-
|
|
9075
|
-
document.getElementById(frzName).style.top = `${
|
|
9079
|
+
currentFrz.frzBarLength -= g_workObj.currentSpeed;
|
|
9080
|
+
if (currentFrz.frzBarLength > 0) {
|
|
9081
|
+
currentFrz.y -= movY;
|
|
9082
|
+
document.getElementById(frzName).style.top = `${currentFrz.y}px`;
|
|
9076
9083
|
} else {
|
|
9077
9084
|
judgeObjDelete[_name](_j, frzName);
|
|
9078
9085
|
}
|
|
@@ -9441,8 +9448,9 @@ const changeCssMotions = (_header, _name, _frameNum) => {
|
|
|
9441
9448
|
const changeHitFrz = (_j, _k, _name) => {
|
|
9442
9449
|
const frzNo = `${_j}_${_k}`;
|
|
9443
9450
|
const frzName = `${_name}${frzNo}`;
|
|
9451
|
+
const currentFrz = g_attrObj[frzName];
|
|
9444
9452
|
|
|
9445
|
-
if (
|
|
9453
|
+
if (currentFrz.keyUpFrame !== 0) {
|
|
9446
9454
|
return;
|
|
9447
9455
|
}
|
|
9448
9456
|
|
|
@@ -9452,25 +9460,22 @@ const changeHitFrz = (_j, _k, _name) => {
|
|
|
9452
9460
|
const colorPos = g_keyObj[`color${g_keyObj.currentKey}_${g_keyObj.currentPtn}`][_j];
|
|
9453
9461
|
|
|
9454
9462
|
// フリーズアロー位置の修正(ステップゾーン上に来るように)
|
|
9455
|
-
const delFrzLength = parseFloat($id(`stepRoot${_j}`).top) -
|
|
9463
|
+
const delFrzLength = parseFloat($id(`stepRoot${_j}`).top) - currentFrz.y;
|
|
9456
9464
|
document.getElementById(frzName).style.top = $id(`stepRoot${_j}`).top;
|
|
9457
9465
|
|
|
9458
9466
|
// 早押ししたboostCnt分のフリーズアロー終端位置の修正
|
|
9459
|
-
|
|
9460
|
-
for (let i = 0; i < g_attrObj[frzName].cnt; i++) {
|
|
9461
|
-
delFrzMotionLength += g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt - i];
|
|
9462
|
-
}
|
|
9467
|
+
const delFrzMotionLength = sumData(g_workObj.motionOnFrames.slice(0, currentFrz.boostCnt + 1));
|
|
9463
9468
|
|
|
9464
|
-
|
|
9465
|
-
|
|
9466
|
-
|
|
9467
|
-
|
|
9468
|
-
|
|
9469
|
+
currentFrz.frzBarLength -= (delFrzLength + delFrzMotionLength) * currentFrz.dir;
|
|
9470
|
+
currentFrz.barY -= (delFrzLength + delFrzMotionLength) * currentFrz.dividePos;
|
|
9471
|
+
currentFrz.btmY -= delFrzLength + delFrzMotionLength;
|
|
9472
|
+
currentFrz.y += delFrzLength;
|
|
9473
|
+
currentFrz.isMoving = false;
|
|
9469
9474
|
|
|
9470
|
-
styfrzBar.top = `${
|
|
9471
|
-
styfrzBar.height = `${
|
|
9475
|
+
styfrzBar.top = `${currentFrz.barY}px`;
|
|
9476
|
+
styfrzBar.height = `${currentFrz.frzBarLength}px`;
|
|
9472
9477
|
styfrzBar.background = g_workObj[`${_name}HitBarColors`][_j];
|
|
9473
|
-
styfrzBtm.top = `${
|
|
9478
|
+
styfrzBtm.top = `${currentFrz.btmY}px`;
|
|
9474
9479
|
styfrzBtm.background = g_workObj[`${_name}HitColors`][_j];
|
|
9475
9480
|
styfrzBtmShadow.top = styfrzBtm.top;
|
|
9476
9481
|
if (_name === `frz`) {
|
|
@@ -9521,10 +9526,12 @@ const judgeArrow = _j => {
|
|
|
9521
9526
|
|
|
9522
9527
|
const currentNo = g_workObj.judgArrowCnt[_j];
|
|
9523
9528
|
const arrowName = `arrow${_j}_${currentNo}`;
|
|
9529
|
+
const currentArrow = g_attrObj[arrowName];
|
|
9524
9530
|
const existJudgArrow = document.getElementById(arrowName) !== null;
|
|
9525
9531
|
|
|
9526
9532
|
const fcurrentNo = g_workObj.judgFrzCnt[_j];
|
|
9527
9533
|
const frzName = `frz${_j}_${fcurrentNo}`;
|
|
9534
|
+
const currentFrz = g_attrObj[frzName];
|
|
9528
9535
|
const existJudgFrz = document.getElementById(frzName) !== null;
|
|
9529
9536
|
|
|
9530
9537
|
const judgeTargetArrow = _difFrame => {
|
|
@@ -9532,10 +9539,10 @@ const judgeArrow = _j => {
|
|
|
9532
9539
|
if (_difCnt <= g_judgObj.arrowJ[g_judgPosObj.uwan]) {
|
|
9533
9540
|
const [resultFunc, resultJdg] = checkJudgment(_difCnt);
|
|
9534
9541
|
resultFunc(_difFrame);
|
|
9535
|
-
|
|
9542
|
+
displayDiff(_difFrame);
|
|
9536
9543
|
|
|
9537
9544
|
const stepDivHit = document.querySelector(`#stepHit${_j}`);
|
|
9538
|
-
stepDivHit.style.top = `${
|
|
9545
|
+
stepDivHit.style.top = `${currentArrow.prevY - parseFloat($id(`stepRoot${_j}`).top) - 15}px`;
|
|
9539
9546
|
stepDivHit.style.opacity = 0.75;
|
|
9540
9547
|
stepDivHit.classList.value = ``;
|
|
9541
9548
|
stepDivHit.classList.add(g_cssObj[`main_step${resultJdg}`]);
|
|
@@ -9550,16 +9557,16 @@ const judgeArrow = _j => {
|
|
|
9550
9557
|
|
|
9551
9558
|
const judgeTargetFrzArrow = _difFrame => {
|
|
9552
9559
|
const _difCnt = Math.abs(_difFrame);
|
|
9553
|
-
if (_difCnt <= g_judgObj.frzJ[g_judgPosObj.iknai] && !
|
|
9560
|
+
if (_difCnt <= g_judgObj.frzJ[g_judgPosObj.iknai] && !currentFrz.judgEndFlg
|
|
9554
9561
|
&& g_workObj.judgFrzHitCnt[_j] <= fcurrentNo) {
|
|
9555
9562
|
|
|
9556
9563
|
if (g_headerObj.frzStartjdgUse) {
|
|
9557
9564
|
const [resultFunc] = checkJudgment(_difCnt);
|
|
9558
9565
|
resultFunc(_difFrame);
|
|
9566
|
+
displayDiff(_difFrame);
|
|
9559
9567
|
} else {
|
|
9560
9568
|
displayDiff(_difFrame, `F`);
|
|
9561
9569
|
}
|
|
9562
|
-
countFastSlow(_difFrame);
|
|
9563
9570
|
|
|
9564
9571
|
if (_difCnt <= g_judgObj.frzJ[g_judgPosObj.sfsf]) {
|
|
9565
9572
|
changeHitFrz(_j, fcurrentNo, `frz`);
|
|
@@ -9573,8 +9580,8 @@ const judgeArrow = _j => {
|
|
|
9573
9580
|
};
|
|
9574
9581
|
|
|
9575
9582
|
let judgeFlg = false;
|
|
9576
|
-
const difFrame = (existJudgArrow ?
|
|
9577
|
-
const frzDifFrame = (existJudgFrz ?
|
|
9583
|
+
const difFrame = (existJudgArrow ? currentArrow.cnt : Infinity);
|
|
9584
|
+
const frzDifFrame = (existJudgFrz ? currentFrz.cnt : Infinity);
|
|
9578
9585
|
if (difFrame < frzDifFrame) {
|
|
9579
9586
|
judgeFlg = judgeTargetArrow(difFrame);
|
|
9580
9587
|
} else if (difFrame > frzDifFrame) {
|
|
@@ -9597,23 +9604,12 @@ const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames
|
|
|
9597
9604
|
const difCnt = Math.abs(_difFrame);
|
|
9598
9605
|
if (_difFrame > _justFrames) {
|
|
9599
9606
|
diffJDisp = `<span class="common_matari">Fast ${difCnt} Frames</span>`;
|
|
9600
|
-
} else if (_difFrame < _justFrames * (-1)) {
|
|
9601
|
-
diffJDisp = `<span class="common_shobon">Slow ${difCnt} Frames</span>`;
|
|
9602
|
-
}
|
|
9603
|
-
document.getElementById(`diff${_fjdg}J`).innerHTML = diffJDisp;
|
|
9604
|
-
};
|
|
9605
|
-
|
|
9606
|
-
/**
|
|
9607
|
-
* Fast/Slowカウンタ
|
|
9608
|
-
* @param {number} _difFrame
|
|
9609
|
-
* @param {number} _justFrames
|
|
9610
|
-
*/
|
|
9611
|
-
const countFastSlow = (_difFrame, _justFrames = g_headerObj.justFrames) => {
|
|
9612
|
-
if (_difFrame > _justFrames) {
|
|
9613
9607
|
g_resultObj.fast++;
|
|
9614
9608
|
} else if (_difFrame < _justFrames * (-1)) {
|
|
9609
|
+
diffJDisp = `<span class="common_shobon">Slow ${difCnt} Frames</span>`;
|
|
9615
9610
|
g_resultObj.slow++;
|
|
9616
9611
|
}
|
|
9612
|
+
document.getElementById(`diff${_fjdg}J`).innerHTML = diffJDisp;
|
|
9617
9613
|
};
|
|
9618
9614
|
|
|
9619
9615
|
/**
|
|
@@ -9691,10 +9687,7 @@ const updateCombo = _ => {
|
|
|
9691
9687
|
*/
|
|
9692
9688
|
const judgeRecovery = (_name, _difFrame) => {
|
|
9693
9689
|
changeJudgeCharacter(_name, g_lblNameObj[`j_${_name}`]);
|
|
9694
|
-
|
|
9695
9690
|
updateCombo();
|
|
9696
|
-
displayDiff(_difFrame);
|
|
9697
|
-
|
|
9698
9691
|
lifeRecovery();
|
|
9699
9692
|
finishViewing();
|
|
9700
9693
|
|
|
@@ -9734,8 +9727,6 @@ const judgeShakin = _difFrame => judgeRecovery(`shakin`, _difFrame);
|
|
|
9734
9727
|
const judgeMatari = _difFrame => {
|
|
9735
9728
|
changeJudgeCharacter(`matari`, g_lblNameObj.j_matari);
|
|
9736
9729
|
comboJ.textContent = ``;
|
|
9737
|
-
|
|
9738
|
-
displayDiff(_difFrame);
|
|
9739
9730
|
finishViewing();
|
|
9740
9731
|
|
|
9741
9732
|
g_customJsObj.judg_matari.forEach(func => func(_difFrame));
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2022/11/
|
|
8
|
+
* Revised : 2022/11/15 (v29.3.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -3086,6 +3086,7 @@ const g_lang_lblNameObj = {
|
|
|
3086
3086
|
Ja: {
|
|
3087
3087
|
kcDesc: `[{0}:スキップ / {1}:(代替キーのみ)キー無効化]`,
|
|
3088
3088
|
kcShuffleDesc: `番号をクリックでシャッフルグループ、矢印をクリックでカラーグループを変更`,
|
|
3089
|
+
kcNoShuffleDesc: `矢印をクリックでカラーグループを変更`,
|
|
3089
3090
|
sdDesc: `[クリックでON/OFFを切替、灰色でOFF]`,
|
|
3090
3091
|
kcShortcutDesc: `プレイ中ショートカット:「{0}」タイトルバック / 「{1}」リトライ`,
|
|
3091
3092
|
transKeyDesc: `別キーモードではハイスコア、キーコンフィグ等は保存されません`,
|
|
@@ -3114,6 +3115,7 @@ const g_lang_lblNameObj = {
|
|
|
3114
3115
|
En: {
|
|
3115
3116
|
kcDesc: `[{0}:Skip / {1}:Key invalidation (Alternate keys only)]`,
|
|
3116
3117
|
kcShuffleDesc: `Click the number to change the shuffle group, and click the arrow to change the color.`,
|
|
3118
|
+
kcNoShuffleDesc: `Click the arrow to change the color group.`,
|
|
3117
3119
|
sdDesc: `[Click to switch, gray to OFF]`,
|
|
3118
3120
|
kcShortcutDesc: `Shortcut during play: "{0}" Return to title / "{1}" Retry the game`,
|
|
3119
3121
|
transKeyDesc: `High score, key config, etc. are not saved in another key mode`,
|