danoniplus 32.4.0 → 32.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 CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2023/06/09
7
+ * Revised : 2023/06/24
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 32.4.0`;
12
- const g_revisedDate = `2023/06/09`;
11
+ const g_version = `Ver 32.5.0`;
12
+ const g_revisedDate = `2023/06/24`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -3012,6 +3012,11 @@ const headerConvert = _dosObj => {
3012
3012
  // フリーズアローの始点で通常矢印の判定を行うか(dotさんソース方式)
3013
3013
  obj.frzStartjdgUse = setBoolVal(_dosObj.frzStartjdgUse ?? g_presetObj.frzStartjdgUse);
3014
3014
 
3015
+ // 空押し判定を行うか
3016
+ obj.excessiveJdgUse = setBoolVal(_dosObj.excessiveJdgUse ?? g_presetObj.excessiveJdgUse);
3017
+ g_stateObj.excessive = obj.excessiveJdgUse ? C_FLG_ON : C_FLG_OFF;
3018
+ g_settings.excessiveNum = obj.excessiveJdgUse ? 1 : 0;
3019
+
3015
3020
  // 譜面名に制作者名を付加するかどうかのフラグ
3016
3021
  obj.makerView = setBoolVal(_dosObj.makerView);
3017
3022
 
@@ -3103,10 +3108,14 @@ const headerConvert = _dosObj => {
3103
3108
  obj.resultMotionSet = setBoolVal(_dosObj.resultMotionSet, true);
3104
3109
 
3105
3110
  // 譜面明細の使用可否
3106
- g_settings.scoreDetails = _dosObj.scoreDetailUse?.split(`,`).filter(val => hasVal(val) && val !== `false`) || g_settings.scoreDetailDefs;
3111
+ const tmpDetails = _dosObj.scoreDetailUse?.split(`,`).filter(val => hasVal(val) && val !== `false`)
3112
+ .map(val => replaceStr(val, g_settings.scoreDetailTrans));
3113
+ g_settings.scoreDetails = g_settings.scoreDetailDefs.filter(val => tmpDetails?.includes(val) || tmpDetails === undefined);
3114
+
3107
3115
  g_stateObj.scoreDetail = g_settings.scoreDetails[0] || ``;
3108
3116
  g_settings.scoreDetailCursors = g_settings.scoreDetails.map(val => `lnk${val}G`);
3109
- g_settings.scoreDetailCursors.push(`btnGraph`);
3117
+ g_settings.scoreDetailCursors.push(`btnGraphB`);
3118
+ [`option`, `difSelector`].forEach(page => g_shortcutObj[page].KeyQ.id = g_settings.scoreDetailCursors[0]);
3110
3119
 
3111
3120
  // 判定位置をBackgroundのON/OFFと連動してリセットする設定
3112
3121
  obj.jdgPosReset = setBoolVal(_dosObj.jdgPosReset, true);
@@ -4565,10 +4574,10 @@ const drawSpeedGraph = _scoreId => {
4565
4574
  const lineX = (speedType === `speed`) ? 125 : 210;
4566
4575
  context.beginPath();
4567
4576
  context.moveTo(lineX, 215);
4568
- context.lineTo(lineX + 30, 215);
4577
+ context.lineTo(lineX + 25, 215);
4569
4578
  context.stroke();
4570
4579
  context.font = `${g_limitObj.difSelectorSiz}px ${getBasicFont()}`;
4571
- context.fillText(speedType, lineX + 35, 218);
4580
+ context.fillText(g_lblNameObj[`s_${speedType}`], lineX + 30, 218);
4572
4581
 
4573
4582
  updateScoreDetailLabel(`Speed`, `${speedType}S`, speedObj[speedType].cnt, j, g_lblNameObj[`s_${speedType}`]);
4574
4583
  updateScoreDetailLabel(`Speed`, `avgD${speedType}`, avgSubX[j] === 1 ? `----` : `${(avgSubX[j]).toFixed(2)}x`, j + 4, g_lblNameObj[`s_avgD${speedType}`]);
@@ -5031,7 +5040,10 @@ const createOptionWindow = _sprite => {
5031
5040
  };
5032
5041
 
5033
5042
  if (g_settings.scoreDetails.length > 0) {
5034
- spriteList.speed.appendChild(
5043
+ multiAppend(spriteList.speed,
5044
+ createCss2Button(`btnGraphB`, ``, _ => true, {
5045
+ x: -25, y: -60, w: 0, h: 0, opacity: 0, resetFunc: _ => setScoreDetail(true),
5046
+ }, g_cssObj.button_Mini),
5035
5047
  createCss2Button(`btnGraph`, `i`, _ => true, {
5036
5048
  x: -25, y: -60, w: 30, h: 30, siz: g_limitObj.jdgCharaSiz, title: g_msgObj.graph,
5037
5049
  resetFunc: _ => setScoreDetail(), cxtFunc: _ => setScoreDetail(),
@@ -5080,7 +5092,7 @@ const createOptionWindow = _sprite => {
5080
5092
  /**
5081
5093
  * 譜面明細表示/非表示ボタンの処理
5082
5094
  */
5083
- const setScoreDetail = _ => {
5095
+ const setScoreDetail = (_resetFlg = false) => {
5084
5096
  if (g_currentPage === `difSelector`) {
5085
5097
  resetDifWindow();
5086
5098
  g_stateObj.scoreDetailViewFlg = false;
@@ -5095,7 +5107,9 @@ const createOptionWindow = _sprite => {
5095
5107
  detailObj.style.visibility = visibles[Number(g_stateObj.scoreDetailViewFlg)];
5096
5108
 
5097
5109
  // Qキーを押したときのカーソル位置を先頭に初期化
5098
- g_shortcutObj.option.KeyQ.id = g_settings.scoreDetailCursors[0];
5110
+ if (_resetFlg) {
5111
+ g_shortcutObj.option.KeyQ.id = g_settings.scoreDetailCursors[0];
5112
+ }
5099
5113
  };
5100
5114
 
5101
5115
  // ---------------------------------------------------
@@ -5160,6 +5174,16 @@ const createOptionWindow = _sprite => {
5160
5174
  spriteList.gauge.appendChild(makeDisabledLabel(`lnkGauge`, 0, getStgDetailName(g_stateObj.gauge)));
5161
5175
  }
5162
5176
 
5177
+ // 空押し判定設定 (Excessive)
5178
+ if (g_headerObj.excessiveUse) {
5179
+ spriteList.gauge.appendChild(
5180
+ createCss2Button(`lnkExcessive`, g_lblNameObj.Excessive, evt => setExcessive(evt.target),
5181
+ Object.assign(g_lblPosObj.btnExcessive, {
5182
+ title: g_msgObj.excessive, cxtFunc: evt => setExcessive(evt.target),
5183
+ }), g_cssObj.button_Default, g_cssObj[`button_Rev${g_stateObj.excessive}`])
5184
+ );
5185
+ }
5186
+
5163
5187
  // ---------------------------------------------------
5164
5188
  // タイミング調整 (Adjustment)
5165
5189
  // 縦位置: 10.5 短縮ショートカットあり
@@ -5605,6 +5629,16 @@ const getAccuracy = (_border, _rcv, _dmg, _init, _allCnt) => {
5605
5629
  return [rateText, allowableCntsText];
5606
5630
  };
5607
5631
 
5632
+ /**
5633
+ * 空押し判定の設定
5634
+ */
5635
+ const setExcessive = _btn => {
5636
+ g_settings.excessiveNum = (g_settings.excessiveNum + 1) % 2;
5637
+ g_stateObj.excessive = g_settings.excessives[g_settings.excessiveNum];
5638
+ _btn.classList.replace(g_cssObj[`button_Rev${g_settings.excessives[(g_settings.excessiveNum + 1) % 2]}`],
5639
+ g_cssObj[`button_Rev${g_settings.excessives[g_settings.excessiveNum]}`]);
5640
+ };
5641
+
5608
5642
  /**
5609
5643
  * 保存済みキーコンフィグ取得処理
5610
5644
  * @param {object} _localStorage 保存先のローカルストレージ名
@@ -9236,7 +9270,7 @@ const mainInit = _ => {
9236
9270
 
9237
9271
  // 矢印(枠外判定、AutoPlay: OFF)
9238
9272
  arrowOFF: (_j, _arrowName, _cnt) => {
9239
- if (_cnt < (-1) * g_judgObj.arrowJ[g_judgPosObj.uwan]) {
9273
+ if (_cnt < (-1) * g_judgObj.arrowJ[g_judgPosObj.shobon]) {
9240
9274
  judgeUwan(_cnt);
9241
9275
  judgeObjDelete.arrow(_j, _arrowName);
9242
9276
  }
@@ -10155,18 +10189,27 @@ const judgeArrow = _j => {
10155
10189
 
10156
10190
  const judgeTargetArrow = _difFrame => {
10157
10191
  const _difCnt = Math.abs(_difFrame);
10158
- if (_difCnt <= g_judgObj.arrowJ[g_judgPosObj.uwan]) {
10159
- const [resultFunc, resultJdg] = checkJudgment(_difCnt);
10160
- resultFunc(_difFrame);
10161
- displayDiff(_difFrame);
10162
-
10192
+ const stepHitTargetArrow = _resultJdg => {
10163
10193
  const stepDivHit = document.querySelector(`#stepHit${_j}`);
10164
10194
  stepDivHit.style.top = `${currentArrow.prevY - parseFloat($id(`stepRoot${_j}`).top) - 15 + g_workObj.hitPosition * g_workObj.scrollDir[_j]}px`;
10165
10195
  stepDivHit.style.opacity = 0.75;
10166
10196
  stepDivHit.classList.value = ``;
10167
- stepDivHit.classList.add(g_cssObj[`main_step${resultJdg}`]);
10197
+ stepDivHit.classList.add(g_cssObj[`main_step${_resultJdg}`]);
10168
10198
  stepDivHit.setAttribute(`cnt`, C_FRM_HITMOTION);
10199
+ }
10200
+
10201
+ if (g_stateObj.excessive === C_FLG_ON && _difFrame <= g_judgObj.arrowJ[g_judgPosObj.uwan] && _difFrame > g_judgObj.arrowJ[g_judgPosObj.shobon]) {
10202
+ // 空押し判定(有効かつ早押し時のみ)
10203
+ displayDiff(_difFrame);
10204
+ stepHitTargetArrow(`Excessive`);
10205
+ return true;
10169
10206
 
10207
+ } else if (_difCnt <= g_judgObj.arrowJ[g_judgPosObj.shobon]) {
10208
+ // 通常判定
10209
+ const [resultFunc, resultJdg] = checkJudgment(_difCnt);
10210
+ resultFunc(_difFrame);
10211
+ displayDiff(_difFrame);
10212
+ stepHitTargetArrow(resultJdg);
10170
10213
  document.getElementById(arrowName).remove();
10171
10214
  g_workObj.judgArrowCnt[_j]++;
10172
10215
  return true;
@@ -10225,7 +10268,11 @@ const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames
10225
10268
  let diffJDisp = ``;
10226
10269
  g_workObj.diffList.push(_difFrame);
10227
10270
  const difCnt = Math.abs(_difFrame);
10228
- if (_difFrame > _justFrames) {
10271
+ if (_difFrame > g_judgObj.arrowJ[g_judgPosObj.shobon]) {
10272
+ diffJDisp = `<span class="common_kita">Excessive</span>`;
10273
+ g_resultObj.excessive++;
10274
+ lifeDamage(true);
10275
+ } else if (_difFrame > _justFrames) {
10229
10276
  diffJDisp = `<span class="common_matari">Fast ${difCnt} Frames</span>`;
10230
10277
  g_resultObj.fast++;
10231
10278
  } else if (_difFrame < _justFrames * (-1)) {
@@ -10267,8 +10314,12 @@ const lifeRecovery = _ => {
10267
10314
  }
10268
10315
  };
10269
10316
 
10270
- const lifeDamage = _ => {
10271
- g_workObj.lifeVal -= g_workObj.lifeDmg;
10317
+ /**
10318
+ * ゲージダメージ処理
10319
+ * @param {boolean} _excessive
10320
+ */
10321
+ const lifeDamage = (_excessive = false) => {
10322
+ g_workObj.lifeVal -= g_workObj.lifeDmg * (_excessive ? 0.25 : 1);
10272
10323
 
10273
10324
  if (g_workObj.lifeVal <= 0) {
10274
10325
  g_workObj.lifeVal = 0;
@@ -10527,7 +10578,7 @@ const resultInit = _ => {
10527
10578
  rankMark = g_rankObj.rankMarkF;
10528
10579
  rankColor = g_rankObj.rankColorF;
10529
10580
  g_resultObj.spState = `failed`;
10530
- } else if (playingArrows === g_fullArrows && g_stateObj.autoAll === C_FLG_OFF) {
10581
+ } else if (playingArrows === g_fullArrows && g_stateObj.autoAll === C_FLG_OFF && !(g_headerObj.excessiveJdgUse && g_stateObj.excessive === C_FLG_OFF)) {
10531
10582
  if (g_resultObj.spState === ``) {
10532
10583
  g_resultObj.spState = `cleared`;
10533
10584
  }
@@ -10653,6 +10704,12 @@ const resultInit = _ => {
10653
10704
  makeCssResultSymbol(`lblAdjS`, 260, g_cssObj.score, 5, `${getDiffFrame(estimatedAdj)}`, C_ALIGN_RIGHT),
10654
10705
  );
10655
10706
  }
10707
+ if (g_stateObj.excessive === C_FLG_ON) {
10708
+ multiAppend(resultWindow,
10709
+ makeCssResultSymbol(`lblExcessive`, 350, g_cssObj.common_kita, 6, g_lblNameObj.j_excessive),
10710
+ makeCssResultSymbol(`lblExcessiveS`, 260, g_cssObj.score, 7, g_resultObj.excessive, C_ALIGN_RIGHT),
10711
+ );
10712
+ }
10656
10713
  }
10657
10714
 
10658
10715
  // ランク描画
@@ -10779,6 +10836,8 @@ const resultInit = _ => {
10779
10836
  const twiturl = new URL(g_localStorageUrl);
10780
10837
  twiturl.searchParams.append(`scoreId`, g_stateObj.scoreId);
10781
10838
 
10839
+ const tweetExcessive = (g_stateObj.excessive === C_FLG_ON) ? `(+${g_resultObj.excessive})` : ``;
10840
+
10782
10841
  let tweetFrzJdg = ``;
10783
10842
  let tweetMaxCombo = `${g_resultObj.maxCombo}`;
10784
10843
  if (g_allFrz > 0) {
@@ -10794,7 +10853,7 @@ const resultInit = _ => {
10794
10853
  [`[rank]`, rankMark],
10795
10854
  [`[score]`, g_resultObj.score],
10796
10855
  [`[playStyle]`, playStyleData],
10797
- [`[arrowJdg]`, `${g_resultObj.ii}-${g_resultObj.shakin}-${g_resultObj.matari}-${g_resultObj.shobon}-${g_resultObj.uwan}`],
10856
+ [`[arrowJdg]`, `${g_resultObj.ii}-${g_resultObj.shakin}-${g_resultObj.matari}-${g_resultObj.shobon}-${g_resultObj.uwan}${tweetExcessive}`],
10798
10857
  [`[frzJdg]`, tweetFrzJdg],
10799
10858
  [`[maxCombo]`, tweetMaxCombo],
10800
10859
  [`[url]`, g_isLocal ? `` : `${twiturl.toString()}`.replace(/[\t\n]/g, ``)]
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2023/06/09 (v32.4.0)
8
+ * Revised : 2023/06/09 (v32.5.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -255,6 +255,9 @@ const updateWindowSiz = _ => {
255
255
  btnReverse: {
256
256
  x: 160, y: 0, w: 90, h: 21, siz: g_limitObj.difSelectorSiz, borderStyle: `solid`,
257
257
  },
258
+ btnExcessive: {
259
+ x: 5, y: 25, w: 90, h: 21, siz: g_limitObj.difSelectorSiz, borderStyle: `solid`,
260
+ },
258
261
  lblGauge2: {
259
262
  x: g_limitObj.setLblLeft - 55, y: g_limitObj.setLblHeight,
260
263
  w: g_limitObj.setLblWidth + 60, h: g_limitObj.setLblHeight * 2, siz: 11,
@@ -700,7 +703,7 @@ const C_KEY_TITLEBACK = 46;
700
703
 
701
704
  /** 判定系共通オブジェクト */
702
705
  const g_judgObj = {
703
- arrowJ: [2, 4, 6, 8, 8],
706
+ arrowJ: [2, 4, 6, 8, 16],
704
707
  frzJ: [2, 4, 8]
705
708
  };
706
709
  const g_judgPosObj = {
@@ -731,6 +734,7 @@ const g_resultObj = {
731
734
 
732
735
  fast: 0,
733
736
  slow: 0,
737
+ excessive: 0,
734
738
 
735
739
  spState: ``,
736
740
  };
@@ -890,6 +894,9 @@ const g_settings = {
890
894
  gauges: [],
891
895
  gaugeNum: 0,
892
896
 
897
+ excessives: [C_FLG_OFF, C_FLG_ON],
898
+ excessiveNum: 0,
899
+
893
900
  autoPlays: [C_FLG_OFF, C_FLG_ALL],
894
901
  autoPlayNum: 0,
895
902
 
@@ -911,9 +918,11 @@ const g_settings = {
911
918
 
912
919
  opacitys: [10, 25, 50, 75, 100],
913
920
 
914
- scoreDetailDefs: [`Speed`, `Density`, `ToolDif`],
921
+ scoreDetailDefs: [`Density`, `Speed`, `ToolDif`],
915
922
  scoreDetails: [],
916
923
  scoreDetailCursors: [],
924
+
925
+ scoreDetailTrans: [[`Velocity`, `Speed`], [`DifLevel`, `ToolDif`]],
917
926
  };
918
927
 
919
928
  g_settings.volumeNum = g_settings.volumes.length - 1;
@@ -1000,7 +1009,7 @@ let g_storeSettings = [`adjustment`, `volume`, `appearance`, `opacity`, `hitPosi
1000
1009
  let g_storeSettingsEx = [`d_stepzone`, `d_judgment`, `d_fastslow`, `d_lifegauge`,
1001
1010
  `d_score`, `d_musicinfo`, `d_filterline`];
1002
1011
 
1003
- let g_canDisabledSettings = [`motion`, `scroll`, `shuffle`, `autoPlay`, `gauge`, `appearance`];
1012
+ let g_canDisabledSettings = [`motion`, `scroll`, `shuffle`, `autoPlay`, `gauge`, `excessive`, `appearance`];
1004
1013
 
1005
1014
  const g_hidSudObj = {
1006
1015
  filterPos: 10,
@@ -1395,13 +1404,13 @@ const g_shortcutObj = {
1395
1404
  KeyV: { id: `lnkVolumeR` },
1396
1405
 
1397
1406
  KeyI: { id: `btnGraph` },
1398
- Digit1: { id: `lnkSpeedG` },
1399
- Digit2: { id: `lnkDensityG` },
1407
+ Digit1: { id: `lnkDensityG` },
1408
+ Digit2: { id: `lnkSpeedG` },
1400
1409
  Digit3: { id: `lnkToolDifG` },
1401
- Numpad1: { id: `lnkSpeedG` },
1402
- Numpad2: { id: `lnkDensityG` },
1410
+ Numpad1: { id: `lnkDensityG` },
1411
+ Numpad2: { id: `lnkSpeedG` },
1403
1412
  Numpad3: { id: `lnkToolDifG` },
1404
- KeyQ: { id: `lnkSpeedG` },
1413
+ KeyQ: { id: `lnkDensityG` },
1405
1414
  KeyP: { id: `lnkDifInfo` },
1406
1415
  KeyZ: { id: `btnSave` },
1407
1416
 
@@ -1423,13 +1432,13 @@ const g_shortcutObj = {
1423
1432
  ArrowUp: { id: `btnDifU` },
1424
1433
 
1425
1434
  KeyI: { id: `btnGraph` },
1426
- Digit1: { id: `lnkSpeedG` },
1427
- Digit2: { id: `lnkDensityG` },
1435
+ Digit1: { id: `lnkDensityG` },
1436
+ Digit2: { id: `lnkSpeedG` },
1428
1437
  Digit3: { id: `lnkToolDifG` },
1429
- Numpad1: { id: `lnkSpeedG` },
1430
- Numpad2: { id: `lnkDensityG` },
1438
+ Numpad1: { id: `lnkDensityG` },
1439
+ Numpad2: { id: `lnkSpeedG` },
1431
1440
  Numpad3: { id: `lnkToolDifG` },
1432
- KeyQ: { id: `lnkSpeedG` },
1441
+ KeyQ: { id: `lnkDensityG` },
1433
1442
  KeyP: { id: `lnkDifInfo` },
1434
1443
 
1435
1444
  Escape: { id: `btnBack` },
@@ -1575,6 +1584,7 @@ const g_cssObj = {
1575
1584
  main_stepShakin: `main_stepShakin`,
1576
1585
  main_stepMatari: `main_stepMatari`,
1577
1586
  main_stepShobon: `main_stepShobon`,
1587
+ main_stepExcessive: `main_stepExcessive`,
1578
1588
 
1579
1589
  main_objStepShadow: `main_objStepShadow`,
1580
1590
  main_objShadow: `main_objShadow`,
@@ -2612,6 +2622,7 @@ const g_lblNameObj = {
2612
2622
  Shuffle: `Shuffle`,
2613
2623
  AutoPlay: `AutoPlay`,
2614
2624
  Gauge: `Gauge`,
2625
+ Excessive: `Excessive`,
2615
2626
  Adjustment: `Adjustment`,
2616
2627
  Fadein: `Fadein`,
2617
2628
  Volume: `Volume`,
@@ -2634,10 +2645,10 @@ const g_lblNameObj = {
2634
2645
  g_damage: `Damage`,
2635
2646
  g_rate: `Accuracy`,
2636
2647
 
2637
- s_speed: `Speed`,
2648
+ s_speed: `Overall`,
2638
2649
  s_boost: `Boost`,
2639
2650
  s_avg: `Avg.`,
2640
- s_avgDspeed: `AvgS)`,
2651
+ s_avgDspeed: `AvgO)`,
2641
2652
  s_avgDboost: `AvgB)`,
2642
2653
 
2643
2654
  s_apm: `APM`,
@@ -2715,9 +2726,9 @@ const g_lblNameObj = {
2715
2726
  'u_Sudden+': `Sudden+`,
2716
2727
  'u_Hid&Sud+': `Hid&Sud+`,
2717
2728
 
2718
- 'u_Speed': `Speed`,
2729
+ 'u_Speed': `Velocity`,
2719
2730
  'u_Density': `Density`,
2720
- 'u_ToolDif': `ToolDif`,
2731
+ 'u_ToolDif': `DifLevel`,
2721
2732
 
2722
2733
  'u_Main': `Main`,
2723
2734
  'u_Replaced': `Replaced`,
@@ -2802,6 +2813,7 @@ const g_lang_lblNameObj = {
2802
2813
  j_iknai: "(・A・)イクナイ",
2803
2814
 
2804
2815
  j_adj: `推定Adj`,
2816
+ j_excessive: `Excessive`,
2805
2817
 
2806
2818
  helpUrl: `https://github.com/cwtickle/danoniplus/wiki/AboutGameSystem`,
2807
2819
  securityUrl: `https://github.com/cwtickle/danoniplus/security/policy`,
@@ -2834,6 +2846,7 @@ const g_lang_lblNameObj = {
2834
2846
  j_iknai: ":( N.G.",
2835
2847
 
2836
2848
  j_adj: `Est-Adj.`,
2849
+ j_excessive: `Excessive`,
2837
2850
 
2838
2851
  helpUrl: `https://github.com/cwtickle/danoniplus-docs/wiki/AboutGameSystem`,
2839
2852
  securityUrl: `https://github.com/cwtickle/danoniplus-docs/wiki/SecurityPolicy`,
@@ -2870,11 +2883,12 @@ const g_lang_msgObj = {
2870
2883
  shuffle: `譜面を左右反転したり、ランダムにします。\nランダムにした場合は別譜面扱いとなり、ハイスコアは保存されません。`,
2871
2884
  autoPlay: `オートプレイや一部キーを自動で打たせる設定を行います。\nオートプレイ時はハイスコアを保存しません。`,
2872
2885
  gauge: `クリア条件を設定します。\n[Start] ゲージ初期値, [Border] クリア条件(ハイフン時は0),\n[Recovery] 回復量, [Damage] ダメージ量, [Accuracy] クリアに必要な正確率(オンマウスで許容ミス数表示)`,
2886
+ excessive: `空押し判定を行うか設定します。`,
2873
2887
  adjustment: `曲とのタイミングにズレを感じる場合、\n数値を変えることでフレーム単位のズレを直すことができます。\n外側のボタンは5f刻み、真ん中は1f刻み、内側は0.5f刻みで調整できます。`,
2874
2888
  fadein: `譜面を途中から再生します。\n途中から開始した場合はハイスコアを保存しません。`,
2875
2889
  volume: `ゲーム内の音量を設定します。`,
2876
2890
 
2877
- graph: `速度変化や譜面密度状況、\n譜面の難易度など譜面の詳細情報を表示します。`,
2891
+ graph: `譜面密度や速度変化状況、\n譜面の難易度などの情報を表示します。`,
2878
2892
  dataSave: `ハイスコア、リバース設定、\nキーコンフィグの保存の有無を設定します。`,
2879
2893
  toDisplay: `プレイ画面上のオブジェクトの\n表示・非表示(一部透明度)を設定します。`,
2880
2894
  toSettings: `SETTINGS画面へ戻ります。`,
@@ -2926,11 +2940,12 @@ const g_lang_msgObj = {
2926
2940
  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.`,
2927
2941
  autoPlay: `Set to auto play and to hit some keys automatically.\nHigh score is not saved during auto play.`,
2928
2942
  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)`,
2943
+ excessive: `Set whether to use excessive miss judgment.`,
2929
2944
  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.`,
2930
2945
  fadein: `Plays the chart from the middle.\nIf you start in the middle, the high score will not be saved.`,
2931
2946
  volume: `Set the in-game volume.`,
2932
2947
 
2933
- graph: `Displays detailed information about the chart, such as sequences' speed changes, chart's density status, and chart's difficulty.`,
2948
+ graph: `Displays detailed information about the chart, such as chart's density status, sequences' velocity changes, and chart's difficulty.`,
2934
2949
  dataSave: `Set whether to save the high score, reverse setting, and key config.`,
2935
2950
  toDisplay: `Set the display or non-display (partial transparency) of objects on the play screen.`,
2936
2951
  toSettings: `Return to the SETTINGS screen.`,
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  /**
3
3
  * Dancing☆Onigiri 設定用jsファイル
4
- * Template Update: 2023/02/14 (v30.1.1)
4
+ * Template Update: 2023/06/24 (v32.5.0)
5
5
  *
6
6
  * このファイルでは、作品全体に対しての初期設定を行うことができます。
7
7
  * 譜面データ側で個別に同様の項目が設定されている場合は、譜面データ側の設定が優先されます。
@@ -113,6 +113,13 @@ g_presetObj.gaugeList = {
113
113
  };
114
114
  */
115
115
 
116
+ /**
117
+ 空押し判定を行うか
118
+ 判定させる場合は `true` を指定
119
+ */
120
+ g_presetObj.excessiveJdgUse = `false`;
121
+
122
+
116
123
  /*
117
124
  ------------------------------------------------------------------------
118
125
  フリーズアロー設定
@@ -136,7 +143,6 @@ g_presetObj.frzColors = true;
136
143
  */
137
144
  g_presetObj.frzStartjdgUse = `false`;
138
145
 
139
-
140
146
  /*
141
147
  ------------------------------------------------------------------------
142
148
  デフォルトデザイン・画像設定
@@ -213,6 +219,7 @@ g_presetObj.settingUse = {
213
219
  shuffle: `true`,
214
220
  autoPlay: `true`,
215
221
  gauge: `true`,
222
+ excessive: `true`,
216
223
  appearance: `true`,
217
224
 
218
225
  // stepZone: `true`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "32.4.0",
3
+ "version": "32.5.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -5,7 +5,7 @@
5
5
  スキンcssファイル (default)
6
6
 
7
7
  Created : 2019/11/04
8
- Revised : 2023/03/20 (v31.0.0)
8
+ Revised : 2023/06/24 (v32.5.0)
9
9
 
10
10
  https://github.com/cwtickle/danoniplus
11
11
  ------------------------------------------ */
@@ -167,6 +167,10 @@
167
167
  background-color: #ccccff;
168
168
  }
169
169
 
170
+ .main_stepExcessive {
171
+ background-color: #ffff99;
172
+ }
173
+
170
174
  .main_objStepShadow {
171
175
  background-color: #000000;
172
176
  }
@@ -5,7 +5,7 @@
5
5
  スキンcssファイル (light)
6
6
 
7
7
  Created : 2019/11/04
8
- Revised : 2023/03/20 (v31.0.0)
8
+ Revised : 2023/06/24 (v32.5.0)
9
9
 
10
10
  https://github.com/cwtickle/danoniplus
11
11
  ------------------------------------------ */
@@ -167,6 +167,10 @@
167
167
  background-color: #0000cc;
168
168
  }
169
169
 
170
+ .main_stepExcessive {
171
+ background-color: #999900;
172
+ }
173
+
170
174
  .main_objStepShadow {
171
175
  background-color: #eeeeee;
172
176
  }
@@ -5,7 +5,7 @@
5
5
  スキンcssファイル (skyblue)
6
6
 
7
7
  Created : 2019/11/04
8
- Revised : 2023/03/20 (v31.0.0)
8
+ Revised : 2023/06/24 (v32.5.0)
9
9
 
10
10
  https://github.com/cwtickle/danoniplus
11
11
  ------------------------------------------ */
@@ -167,6 +167,10 @@
167
167
  background-color: #0000cc;
168
168
  }
169
169
 
170
+ .main_stepExcessive {
171
+ background-color: #999900;
172
+ }
173
+
170
174
  .main_objStepShadow {
171
175
  background-color: #eeeeee;
172
176
  }