danoniplus 28.3.1 → 28.5.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 +91 -62
- package/js/lib/danoni_constants.js +15 -2
- 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/10/
|
|
7
|
+
* Revised : 2022/10/29
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 28.
|
|
12
|
-
const g_revisedDate = `2022/10/
|
|
11
|
+
const g_version = `Ver 28.5.0`;
|
|
12
|
+
const g_revisedDate = `2022/10/29`;
|
|
13
13
|
const g_alphaVersion = ``;
|
|
14
14
|
|
|
15
15
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -7345,34 +7345,39 @@ const setSpeedOnFrame = (_speedData, _lastFrame) => {
|
|
|
7345
7345
|
|
|
7346
7346
|
/**
|
|
7347
7347
|
* Motionオプション適用時の矢印別の速度設定
|
|
7348
|
-
* -
|
|
7349
|
-
* - 15がステップゾーン上、0~14は矢印の枠外管理用
|
|
7348
|
+
* - 矢印が表示される最大フレーム数を 縦ピクセル数×20 と定義。
|
|
7350
7349
|
*/
|
|
7351
|
-
const setMotionOnFrame = _ =>
|
|
7350
|
+
const setMotionOnFrame = _ => g_motionFunc[g_stateObj.motion]([...Array(g_sHeight * 20 + 1)].fill(0));
|
|
7352
7351
|
|
|
7353
|
-
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
}
|
|
7365
|
-
} else if (g_stateObj.motion === `Brake`) {
|
|
7366
|
-
// 初期は+2x、ステップゾーンに近づくにつれて加速量を下げる (20 → 34)
|
|
7367
|
-
for (let j = C_MOTION_STD_POS + 5; j < C_MOTION_STD_POS + 19; j++) {
|
|
7368
|
-
motionOnFrame[j] = (j - 15) * 4 / 14;
|
|
7369
|
-
}
|
|
7370
|
-
for (let j = C_MOTION_STD_POS + 19; j <= brakeLastFrame; j++) {
|
|
7371
|
-
motionOnFrame[j] = 4;
|
|
7372
|
-
}
|
|
7352
|
+
/**
|
|
7353
|
+
* Boost用の適用関数
|
|
7354
|
+
* - ステップゾーンに近づくにつれて加速量を大きく/小さくする (16 → 85)
|
|
7355
|
+
* @param {array} _frms
|
|
7356
|
+
* @param {number} _spd
|
|
7357
|
+
* @param {number} _pnFlg 正負(1 もしくは -1)
|
|
7358
|
+
* @returns
|
|
7359
|
+
*/
|
|
7360
|
+
const getBoostTrace = (_frms, _spd, _pnFlg = 1) => {
|
|
7361
|
+
for (let j = C_MOTION_STD_POS + 1; j < C_MOTION_STD_POS + 70; j++) {
|
|
7362
|
+
_frms[j] = (C_MOTION_STD_POS + 70 - j) * _pnFlg * _spd / 50;
|
|
7373
7363
|
}
|
|
7364
|
+
return _frms;
|
|
7365
|
+
};
|
|
7374
7366
|
|
|
7375
|
-
|
|
7367
|
+
/**
|
|
7368
|
+
* Brake用の適用関数
|
|
7369
|
+
* - 初期は+2x、ステップゾーンに近づくにつれて加速量を下げる (20 → 34)
|
|
7370
|
+
* @param {array} _frms
|
|
7371
|
+
* @returns
|
|
7372
|
+
*/
|
|
7373
|
+
const getBrakeTrace = _frms => {
|
|
7374
|
+
for (let j = C_MOTION_STD_POS + 5; j < C_MOTION_STD_POS + 19; j++) {
|
|
7375
|
+
_frms[j] = (j - 15) * 4 / 14;
|
|
7376
|
+
}
|
|
7377
|
+
for (let j = C_MOTION_STD_POS + 19; j <= g_sHeight / 2; j++) {
|
|
7378
|
+
_frms[j] = 4;
|
|
7379
|
+
}
|
|
7380
|
+
return _frms;
|
|
7376
7381
|
};
|
|
7377
7382
|
|
|
7378
7383
|
/**
|
|
@@ -7390,7 +7395,6 @@ const getFirstArrivalFrame = (_startFrame, _speedOnFrame, _motionOnFrame) => {
|
|
|
7390
7395
|
startY += _speedOnFrame[frm];
|
|
7391
7396
|
|
|
7392
7397
|
if (_speedOnFrame[frm] !== 0) {
|
|
7393
|
-
startY += _motionOnFrame[motionFrm];
|
|
7394
7398
|
motionFrm++;
|
|
7395
7399
|
}
|
|
7396
7400
|
frm++;
|
|
@@ -7416,6 +7420,8 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7416
7420
|
|
|
7417
7421
|
/** 矢印の移動距離 */
|
|
7418
7422
|
g_workObj.initY = [];
|
|
7423
|
+
/** 矢印の移動距離 (Motion加算分) */
|
|
7424
|
+
g_workObj.initBoostY = [];
|
|
7419
7425
|
/** 矢印がステップゾーンに到達するまでのフレーム数 */
|
|
7420
7426
|
g_workObj.arrivalFrame = [];
|
|
7421
7427
|
/** Motionの適用フレーム数 */
|
|
@@ -7469,6 +7475,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7469
7475
|
g_workObj.initY[frmPrev] = tmpObj.startY;
|
|
7470
7476
|
g_workObj.arrivalFrame[frmPrev] = tmpObj.arrivalFrm;
|
|
7471
7477
|
g_workObj.motionFrame[frmPrev] = tmpObj.motionFrm;
|
|
7478
|
+
g_workObj.initBoostY[frmPrev] = sumData(g_workObj.motionOnFrames.filter((val, j) => j < g_workObj.motionFrame[frmPrev]));
|
|
7472
7479
|
|
|
7473
7480
|
if (_frzFlg) {
|
|
7474
7481
|
g_workObj[`mk${camelHeader}Length`][_j] = [];
|
|
@@ -7496,6 +7503,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7496
7503
|
g_workObj.initY[tmpFrame] = g_workObj.initY[frmPrev];
|
|
7497
7504
|
g_workObj.arrivalFrame[tmpFrame] = g_workObj.arrivalFrame[frmPrev];
|
|
7498
7505
|
g_workObj.motionFrame[tmpFrame] = g_workObj.motionFrame[frmPrev];
|
|
7506
|
+
g_workObj.initBoostY[tmpFrame] = sumData(g_workObj.motionOnFrames.filter((val, j) => j < g_workObj.motionFrame[frmPrev]));
|
|
7499
7507
|
|
|
7500
7508
|
} else {
|
|
7501
7509
|
|
|
@@ -7512,6 +7520,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7512
7520
|
g_workObj.initY[frmPrev] = tmpObj.startY;
|
|
7513
7521
|
g_workObj.arrivalFrame[frmPrev] = tmpObj.arrivalFrm;
|
|
7514
7522
|
g_workObj.motionFrame[frmPrev] = tmpObj.motionFrm;
|
|
7523
|
+
g_workObj.initBoostY[frmPrev] = sumData(g_workObj.motionOnFrames.filter((val, j) => j < g_workObj.motionFrame[frmPrev]));
|
|
7515
7524
|
}
|
|
7516
7525
|
|
|
7517
7526
|
// 出現タイミングを保存
|
|
@@ -7537,18 +7546,13 @@ const pushArrows = (_dataObj, _speedOnFrame, _motionOnFrame, _firstArrivalFrame)
|
|
|
7537
7546
|
if (hasArrayList(_dataObj.boostData, 2)) {
|
|
7538
7547
|
let delBoostIdx = 0;
|
|
7539
7548
|
for (let k = _dataObj.boostData.length - 2; k >= 0; k -= 2) {
|
|
7540
|
-
|
|
7541
|
-
|
|
7549
|
+
tmpObj = getArrowStartFrame(_dataObj.boostData[k], _speedOnFrame, _motionOnFrame);
|
|
7550
|
+
if (tmpObj.frm < g_scoreObj.frameNum) {
|
|
7551
|
+
_dataObj.boostData[k] = g_scoreObj.frameNum;
|
|
7552
|
+
delBoostIdx = k;
|
|
7542
7553
|
break;
|
|
7543
7554
|
} else {
|
|
7544
|
-
|
|
7545
|
-
if (tmpObj.frm < g_scoreObj.frameNum) {
|
|
7546
|
-
_dataObj.boostData[k] = g_scoreObj.frameNum;
|
|
7547
|
-
delBoostIdx = k;
|
|
7548
|
-
break;
|
|
7549
|
-
} else {
|
|
7550
|
-
_dataObj.boostData[k] = tmpObj.frm;
|
|
7551
|
-
}
|
|
7555
|
+
_dataObj.boostData[k] = tmpObj.frm;
|
|
7552
7556
|
}
|
|
7553
7557
|
}
|
|
7554
7558
|
for (let k = 0; k < delBoostIdx; k++) {
|
|
@@ -7710,7 +7714,6 @@ const getArrowStartFrame = (_frame, _speedOnFrame, _motionOnFrame) => {
|
|
|
7710
7714
|
obj.startY += _speedOnFrame[obj.frm];
|
|
7711
7715
|
|
|
7712
7716
|
if (_speedOnFrame[obj.frm] !== 0) {
|
|
7713
|
-
obj.startY += _motionOnFrame[obj.motionFrm];
|
|
7714
7717
|
obj.motionFrm++;
|
|
7715
7718
|
}
|
|
7716
7719
|
obj.frm--;
|
|
@@ -8261,6 +8264,7 @@ const mainInit = _ => {
|
|
|
8261
8264
|
// 現在の矢印・フリーズアローの速度、個別加算速度の初期化 (速度変化時に直す)
|
|
8262
8265
|
g_workObj.currentSpeed = 2;
|
|
8263
8266
|
g_workObj.boostSpd = 1;
|
|
8267
|
+
g_workObj.boostDir = 1;
|
|
8264
8268
|
|
|
8265
8269
|
// 開始位置、楽曲再生位置の設定
|
|
8266
8270
|
const firstFrame = g_scoreObj.frameNum;
|
|
@@ -8321,7 +8325,7 @@ const mainInit = _ => {
|
|
|
8321
8325
|
|
|
8322
8326
|
// フレーム数
|
|
8323
8327
|
divRoot.appendChild(
|
|
8324
|
-
createDivCss2Label(`lblframe`, g_scoreObj.
|
|
8328
|
+
createDivCss2Label(`lblframe`, g_scoreObj.nominalFrameNum, { x: 0, y: 0, w: 100, h: 30, siz: 20, display: g_workObj.lifegaugeDisp, })
|
|
8325
8329
|
);
|
|
8326
8330
|
|
|
8327
8331
|
// ライフ(数字)部作成
|
|
@@ -8774,7 +8778,12 @@ const mainInit = _ => {
|
|
|
8774
8778
|
judgeMotionFunc.dummyArrowON = (_j, _arrowName, _cnt) => judgeMotionFunc.dummyArrowOFF(_j, _arrowName, _cnt);
|
|
8775
8779
|
|
|
8776
8780
|
/**
|
|
8777
|
-
*
|
|
8781
|
+
* 次矢印・フリーズアローへ判定を移すかチェック
|
|
8782
|
+
*
|
|
8783
|
+
* - 判定対象の矢印/フリーズアローが未判定の状態で、現在の矢印/フリーズアローの判定領域が回復判定内に入った場合、
|
|
8784
|
+
* 自身より前の判定をNG判定とした上で、判定対象の矢印/フリーズアローを強制的に削除
|
|
8785
|
+
* - ただし、判定対象の矢印/フリーズアローがジャスト付近の場合は判定対象を優先する
|
|
8786
|
+
* (フリーズアローの場合、ヒット中の場合も判定対象が優先される)
|
|
8778
8787
|
*
|
|
8779
8788
|
* @param _j 矢印の位置
|
|
8780
8789
|
* @param _k 矢印の表示順
|
|
@@ -8782,22 +8791,39 @@ const mainInit = _ => {
|
|
|
8782
8791
|
*/
|
|
8783
8792
|
const judgeNextFunc = {
|
|
8784
8793
|
|
|
8794
|
+
arrowOFF: (_j, _k, _cnt) => {
|
|
8795
|
+
|
|
8796
|
+
if (g_workObj.judgArrowCnt[_j] === _k - 1 && _cnt <= g_judgObj.arrowJ[g_judgPosObj.shakin]) {
|
|
8797
|
+
const prevArrowName = `arrow${_j}_${g_workObj.judgArrowCnt[_j]}`;
|
|
8798
|
+
|
|
8799
|
+
if (g_attrObj[prevArrowName].cnt < (-1) * g_judgObj.arrowJ[g_judgPosObj.ii]) {
|
|
8800
|
+
|
|
8801
|
+
// 自身より前の矢印が未判定の場合、強制的に枠外判定を行い矢印を削除
|
|
8802
|
+
if (g_attrObj[prevArrowName].cnt >= (-1) * g_judgObj.arrowJ[g_judgPosObj.uwan]) {
|
|
8803
|
+
judgeUwan(g_attrObj[prevArrowName].cnt);
|
|
8804
|
+
judgeObjDelete.arrow(_j, prevArrowName);
|
|
8805
|
+
}
|
|
8806
|
+
}
|
|
8807
|
+
}
|
|
8808
|
+
},
|
|
8809
|
+
|
|
8810
|
+
arrowON: (_j, _k, _cnt) => true,
|
|
8811
|
+
dummyArrowOFF: (_j, _k, _cnt) => true,
|
|
8812
|
+
dummyArrowON: (_j, _k, _cnt) => true,
|
|
8813
|
+
|
|
8785
8814
|
frzOFF: (_j, _k, _cnt) => {
|
|
8786
8815
|
|
|
8787
|
-
|
|
8788
|
-
// ただし、前のフリーズアローが押下中または判定領域がジャスト付近(キター領域)の場合は削除しない
|
|
8789
|
-
// 削除する場合、前のフリーズアローの判定はイクナイ(&ウワァン)扱い
|
|
8790
|
-
if (g_workObj.judgFrzCnt[_j] !== _k && _cnt <= g_judgObj.frzJ[g_judgPosObj.sfsf] + 1) {
|
|
8816
|
+
if (g_workObj.judgFrzCnt[_j] === _k - 1 && _cnt <= g_judgObj.frzJ[g_judgPosObj.sfsf]) {
|
|
8791
8817
|
const prevFrzName = `frz${_j}_${g_workObj.judgFrzCnt[_j]}`;
|
|
8792
8818
|
|
|
8793
8819
|
if (g_attrObj[prevFrzName].isMoving &&
|
|
8794
8820
|
g_attrObj[prevFrzName].cnt < (-1) * g_judgObj.frzJ[g_judgPosObj.kita]) {
|
|
8795
8821
|
|
|
8796
|
-
//
|
|
8822
|
+
// 自身より前のフリーズアローが未判定の場合、強制的に枠外判定を行いフリーズアローを削除
|
|
8797
8823
|
if (g_attrObj[prevFrzName].cnt >= (-1) * g_judgObj.frzJ[g_judgPosObj.iknai]) {
|
|
8798
|
-
judgeIknai(
|
|
8824
|
+
judgeIknai(g_attrObj[prevFrzName].cnt);
|
|
8799
8825
|
if (g_headerObj.frzStartjdgUse) {
|
|
8800
|
-
judgeUwan(
|
|
8826
|
+
judgeUwan(g_attrObj[prevFrzName].cnt);
|
|
8801
8827
|
}
|
|
8802
8828
|
}
|
|
8803
8829
|
judgeObjDelete.frz(_j, prevFrzName);
|
|
@@ -8847,12 +8873,13 @@ const mainInit = _ => {
|
|
|
8847
8873
|
* @param {string} _color 矢印色
|
|
8848
8874
|
*/
|
|
8849
8875
|
const makeArrow = (_j, _arrowCnt, _name, _color) => {
|
|
8850
|
-
const boostSpdDir = g_workObj.boostSpd * g_workObj.scrollDir[_j];
|
|
8851
8876
|
const dividePos = g_workObj.dividePos[_j];
|
|
8852
8877
|
const colorPos = g_keyObj[`color${keyCtrlPtn}`][_j];
|
|
8853
8878
|
|
|
8854
8879
|
const arrowName = `${_name}${_j}_${_arrowCnt}`;
|
|
8855
|
-
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8880
|
+
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8881
|
+
(g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
|
|
8882
|
+
g_workObj.initBoostY[g_scoreObj.frameNum] * g_workObj.boostDir) * g_workObj.scrollDir[_j];
|
|
8856
8883
|
|
|
8857
8884
|
const stepRoot = createEmptySprite(arrowSprite[dividePos], arrowName, {
|
|
8858
8885
|
x: g_workObj.stepX[_j], y: firstPosY, w: C_ARW_WIDTH, h: C_ARW_WIDTH,
|
|
@@ -8860,7 +8887,8 @@ const mainInit = _ => {
|
|
|
8860
8887
|
g_attrObj[arrowName] = {
|
|
8861
8888
|
cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
|
|
8862
8889
|
boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
|
|
8863
|
-
boostSpd:
|
|
8890
|
+
boostSpd: g_workObj.boostSpd, dividePos: dividePos,
|
|
8891
|
+
dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
|
|
8864
8892
|
prevY: firstPosY, y: firstPosY,
|
|
8865
8893
|
};
|
|
8866
8894
|
arrowSprite[dividePos].appendChild(stepRoot);
|
|
@@ -8907,11 +8935,12 @@ const mainInit = _ => {
|
|
|
8907
8935
|
if (g_workObj.currentSpeed !== 0) {
|
|
8908
8936
|
const boostCnt = g_attrObj[arrowName].boostCnt;
|
|
8909
8937
|
g_attrObj[arrowName].prevY = g_attrObj[arrowName].y;
|
|
8910
|
-
g_attrObj[arrowName].y -= (g_workObj.currentSpeed + g_workObj.motionOnFrames[boostCnt]) * g_attrObj[arrowName].
|
|
8938
|
+
g_attrObj[arrowName].y -= (g_workObj.currentSpeed * g_attrObj[arrowName].boostSpd + g_workObj.motionOnFrames[boostCnt] * g_attrObj[arrowName].boostDir) * g_attrObj[arrowName].dir;
|
|
8911
8939
|
document.getElementById(arrowName).style.top = `${g_attrObj[arrowName].y}px`;
|
|
8912
8940
|
g_attrObj[arrowName].boostCnt--;
|
|
8913
8941
|
}
|
|
8914
8942
|
judgeMotionFunc[`${_name}${g_stateObj.autoAll}`](_j, arrowName, --g_attrObj[arrowName].cnt);
|
|
8943
|
+
judgeNextFunc[`${_name}${g_stateObj.autoAll}`](_j, _k, g_attrObj[arrowName].cnt);
|
|
8915
8944
|
};
|
|
8916
8945
|
|
|
8917
8946
|
/**
|
|
@@ -8923,11 +8952,12 @@ const mainInit = _ => {
|
|
|
8923
8952
|
* @param {string} _barColor
|
|
8924
8953
|
*/
|
|
8925
8954
|
const makeFrzArrow = (_j, _arrowCnt, _name, _normalColor, _barColor) => {
|
|
8926
|
-
const boostSpdDir = g_workObj.boostSpd * g_workObj.scrollDir[_j];
|
|
8927
8955
|
const dividePos = g_workObj.dividePos[_j];
|
|
8928
8956
|
const frzNo = `${_j}_${_arrowCnt}`;
|
|
8929
8957
|
const frzName = `${_name}${frzNo}`;
|
|
8930
|
-
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8958
|
+
const firstPosY = C_STEP_Y + g_posObj.reverseStepY * dividePos +
|
|
8959
|
+
(g_workObj.initY[g_scoreObj.frameNum] * g_workObj.boostSpd +
|
|
8960
|
+
g_workObj.initBoostY[g_scoreObj.frameNum] * g_workObj.boostDir) * g_workObj.scrollDir[_j];
|
|
8931
8961
|
const firstBarLength = g_workObj[`mk${toCapitalize(_name)}Length`][_j][(_arrowCnt - 1) * 2] * g_workObj.boostSpd;
|
|
8932
8962
|
|
|
8933
8963
|
const frzRoot = createEmptySprite(arrowSprite[dividePos], frzName, {
|
|
@@ -8937,10 +8967,8 @@ const mainInit = _ => {
|
|
|
8937
8967
|
cnt: g_workObj.arrivalFrame[g_scoreObj.frameNum] + 1,
|
|
8938
8968
|
boostCnt: g_workObj.motionFrame[g_scoreObj.frameNum],
|
|
8939
8969
|
judgEndFlg: false, isMoving: true, frzBarLength: firstBarLength, keyUpFrame: 0,
|
|
8940
|
-
boostSpd:
|
|
8941
|
-
y: firstPosY,
|
|
8942
|
-
barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos,
|
|
8943
|
-
btmY: firstBarLength * g_workObj.scrollDir[_j],
|
|
8970
|
+
boostSpd: g_workObj.boostSpd, dividePos: dividePos, dir: g_workObj.scrollDir[_j], boostDir: g_workObj.boostDir,
|
|
8971
|
+
y: firstPosY, barY: C_ARW_WIDTH / 2 - firstBarLength * dividePos, btmY: firstBarLength * g_workObj.scrollDir[_j],
|
|
8944
8972
|
};
|
|
8945
8973
|
arrowSprite[dividePos].appendChild(frzRoot);
|
|
8946
8974
|
|
|
@@ -9000,7 +9028,7 @@ const mainInit = _ => {
|
|
|
9000
9028
|
const movFrzArrow = (_j, _k, _name) => {
|
|
9001
9029
|
const frzNo = `${_j}_${_k}`;
|
|
9002
9030
|
const frzName = `${_name}${frzNo}`;
|
|
9003
|
-
const movY = g_workObj.currentSpeed * g_attrObj[frzName].boostSpd;
|
|
9031
|
+
const movY = g_workObj.currentSpeed * g_attrObj[frzName].boostSpd * g_attrObj[frzName].dir;
|
|
9004
9032
|
|
|
9005
9033
|
if (!g_attrObj[frzName].judgEndFlg) {
|
|
9006
9034
|
if (g_attrObj[frzName].isMoving) {
|
|
@@ -9010,7 +9038,7 @@ const mainInit = _ => {
|
|
|
9010
9038
|
|
|
9011
9039
|
// 移動
|
|
9012
9040
|
if (g_workObj.currentSpeed !== 0) {
|
|
9013
|
-
g_attrObj[frzName].y -= movY + g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt] * g_attrObj[frzName].
|
|
9041
|
+
g_attrObj[frzName].y -= movY + g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt] * g_attrObj[frzName].dir * g_attrObj[frzName].boostDir;
|
|
9014
9042
|
document.getElementById(frzName).style.top = `${g_attrObj[frzName].y}px`;
|
|
9015
9043
|
g_attrObj[frzName].boostCnt--;
|
|
9016
9044
|
}
|
|
@@ -9064,7 +9092,7 @@ const mainInit = _ => {
|
|
|
9064
9092
|
const flowTimeline = _ => {
|
|
9065
9093
|
|
|
9066
9094
|
const currentFrame = g_scoreObj.frameNum;
|
|
9067
|
-
lblframe.textContent =
|
|
9095
|
+
lblframe.textContent = g_scoreObj.nominalFrameNum;
|
|
9068
9096
|
|
|
9069
9097
|
// キーの押下状態を取得
|
|
9070
9098
|
for (let j = 0; j < keyNum; j++) {
|
|
@@ -9117,6 +9145,7 @@ const mainInit = _ => {
|
|
|
9117
9145
|
}
|
|
9118
9146
|
while (g_workObj.boostData !== undefined && currentFrame >= g_workObj.boostData[boostCnts]) {
|
|
9119
9147
|
g_workObj.boostSpd = g_workObj.boostData[boostCnts + 1];
|
|
9148
|
+
g_workObj.boostDir = (g_workObj.boostSpd > 0 ? 1 : -1);
|
|
9120
9149
|
boostCnts += 2;
|
|
9121
9150
|
}
|
|
9122
9151
|
|
|
@@ -9439,7 +9468,7 @@ const changeHitFrz = (_j, _k, _name) => {
|
|
|
9439
9468
|
// 早押ししたboostCnt分のフリーズアロー終端位置の修正
|
|
9440
9469
|
let delFrzMotionLength = 0;
|
|
9441
9470
|
for (let i = 0; i < g_attrObj[frzName].cnt; i++) {
|
|
9442
|
-
delFrzMotionLength += g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt - i]
|
|
9471
|
+
delFrzMotionLength += g_workObj.motionOnFrames[g_attrObj[frzName].boostCnt - i];
|
|
9443
9472
|
}
|
|
9444
9473
|
|
|
9445
9474
|
g_attrObj[frzName].frzBarLength -= (delFrzLength + delFrzMotionLength) * g_attrObj[frzName].dir;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2022/10/
|
|
8
|
+
* Revised : 2022/10/20 (v28.4.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -746,7 +746,7 @@ const g_settings = {
|
|
|
746
746
|
speedNum: 0,
|
|
747
747
|
speedTerms: [20, 5, 1],
|
|
748
748
|
|
|
749
|
-
motions: [C_FLG_OFF, `Boost`, `Brake`],
|
|
749
|
+
motions: [C_FLG_OFF, `Boost`, `Hi-Boost`, `Brake`],
|
|
750
750
|
motionNum: 0,
|
|
751
751
|
|
|
752
752
|
reverses: [C_FLG_OFF, C_FLG_ON],
|
|
@@ -815,6 +815,18 @@ const g_shuffleFunc = {
|
|
|
815
815
|
},
|
|
816
816
|
};
|
|
817
817
|
|
|
818
|
+
/**
|
|
819
|
+
* モーション適用関数
|
|
820
|
+
* - frmsはフレーム別の速度設定用配列。
|
|
821
|
+
* - 配列の15がステップゾーン上、0~14は矢印の枠外管理用
|
|
822
|
+
*/
|
|
823
|
+
const g_motionFunc = {
|
|
824
|
+
'OFF': _frms => _frms,
|
|
825
|
+
'Boost': _frms => getBoostTrace(_frms, 3),
|
|
826
|
+
'Hi-Boost': _frms => getBoostTrace(_frms, g_stateObj.speed * 2),
|
|
827
|
+
'Brake': _frms => getBrakeTrace(_frms),
|
|
828
|
+
};
|
|
829
|
+
|
|
818
830
|
const g_keycons = {
|
|
819
831
|
configTypes: [`Main`, `Replaced`, `ALL`],
|
|
820
832
|
configTypeNum: 0,
|
|
@@ -2968,6 +2980,7 @@ const g_lblNameObj = {
|
|
|
2968
2980
|
'u_OFF': `OFF`,
|
|
2969
2981
|
'u_ON': `ON`,
|
|
2970
2982
|
'u_Boost': `Boost`,
|
|
2983
|
+
'u_Hi-Boost': `Hi-Boost`,
|
|
2971
2984
|
'u_Brake': `Brake`,
|
|
2972
2985
|
|
|
2973
2986
|
'u_Cross': `Cross`,
|