danoniplus 38.3.2 → 39.1.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.
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2025/01/08 (v38.3.0)
8
+ * Revised : 2025/02/04 (v39.1.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -111,6 +111,17 @@ const g_settingPos = {
111
111
  opacity: { heightPos: 9, y: 10, dw: 0, dh: 0 },
112
112
  hitPosition: { heightPos: 10, y: 10, dw: 0, dh: 0 },
113
113
  },
114
+ exSetting: {
115
+ playWindow: { heightPos: 0, y: 0, dw: 0, dh: 0 },
116
+ stepArea: { heightPos: 1, y: 0, dw: 0, dh: 0 },
117
+ frzReturn: { heightPos: 2.5, y: 0, dw: 0, dh: 0 },
118
+ shaking: { heightPos: 3.5, y: 0, dw: 0, dh: 0 },
119
+ effect: { heightPos: 5, y: 0, dw: 0, dh: 0 },
120
+ camoufrage: { heightPos: 6, y: 0, dw: 0, dh: 0 },
121
+ swapping: { heightPos: 7, y: 0, dw: 0, dh: 0 },
122
+ judgRange: { heightPos: 8.5, y: 0, dw: 0, dh: 0 },
123
+ autoRetry: { heightPos: 12.5, y: 0, dw: 0, dh: 0 },
124
+ },
114
125
  };
115
126
 
116
127
  // スプライト(ムービークリップ相当)のルート
@@ -639,7 +650,8 @@ const g_typeLists = {
639
650
  frzColor: [`Normal`, `NormalBar`, `Hit`, `HitBar`, `NormalShadow`, `HitShadow`],
640
651
  dataList: [
641
652
  `Arrow`, `FrzArrow`, `FrzLength`,
642
- `Color`, `ColorCd`, `ColorShadow`, `ColorShadowCd`, `ScrollchArrow`, `ScrollchStep`, `ScrollchArrowDir`, `ScrollchStepDir`,
653
+ `Color`, `ColorCd`, `ColorShadow`, `ColorShadowCd`,
654
+ `ScrollchArrow`, `ScrollchStep`, `ScrollchArrowDir`, `ScrollchStepDir`, `ScrollchArrowLayer`, `ScrollchStepLayer`,
643
655
  `FColorNormal`, `FColorNormalCd`, `FColorNormalBar`, `FColorNormalBarCd`,
644
656
  `FColorNormalShadow`, `FColorNormalShadowCd`,
645
657
  `FColorHit`, `FColorHitCd`, `FColorHitBar`, `FColorHitBarCd`,
@@ -791,6 +803,12 @@ const g_judgPosObj = {
791
803
  ii: 0, shakin: 1, matari: 2, shobon: 3, uwan: 4,
792
804
  kita: 0, sfsf: 1, iknai: 2,
793
805
  };
806
+ const g_judgRanges = {
807
+ 'Normal': [[2, 4, 6, 8, 16], [2, 4, 8]],
808
+ 'Narrow': [[2, 3, 4, 8, 16], [2, 4, 8]],
809
+ 'Hard': [[1, 3, 5, 8, 16], [1, 3, 8]],
810
+ 'ExHard': [[1, 2, 3, 8, 16], [1, 2, 8]],
811
+ };
794
812
 
795
813
  const C_CLR_DUMMY = `#777777`;
796
814
 
@@ -910,8 +928,20 @@ const g_stateObj = {
910
928
  filterLock: C_FLG_OFF,
911
929
  opacity: 100,
912
930
 
931
+ playWindow: `Default`,
932
+ stepArea: `Default`,
933
+ frzReturn: C_FLG_OFF,
934
+ shaking: C_FLG_OFF,
935
+ effect: C_FLG_OFF,
936
+ camoufrage: C_FLG_OFF,
937
+ swapping: C_FLG_OFF,
938
+ judgRange: `Normal`,
939
+ autoRetry: C_FLG_OFF,
940
+
913
941
  rotateEnabled: true,
914
942
  flatStepHeight: C_ARW_WIDTH,
943
+
944
+ layerNum: 2,
915
945
  };
916
946
 
917
947
  const C_VAL_MAXLIFE = 1000;
@@ -995,6 +1025,7 @@ const g_settings = {
995
1025
  hitPositionTerms: [50, 10],
996
1026
 
997
1027
  volumes: [0, 0.5, 1, 2, 5, 10, 25, 50, 75, 100],
1028
+ volumeNum: 0,
998
1029
 
999
1030
  appearances: [`Visible`, `Hidden`, `Hidden+`, `Sudden`, `Sudden+`, `Hid&Sud+`],
1000
1031
  appearanceNum: 0,
@@ -1003,6 +1034,7 @@ const g_settings = {
1003
1034
  filterLockNum: 0,
1004
1035
 
1005
1036
  opacitys: [10, 25, 50, 75, 100],
1037
+ opacityNum: 0,
1006
1038
 
1007
1039
  scoreDetailDefs: [`Density`, `Speed`, `ToolDif`, `HighScore`],
1008
1040
  scoreDetails: [],
@@ -1032,6 +1064,36 @@ const g_settings = {
1032
1064
  arrowEffect: 0,
1033
1065
  special: 0,
1034
1066
  },
1067
+
1068
+ playWindows: [`Default`, `Stairs`, `R-Stairs`, `Slope`, `R-Slope`, `Distorted`, `R-Distorted`, `SideScroll`, `R-SideScroll`],
1069
+ playWindowNum: 0,
1070
+
1071
+ stepAreas: [`Default`, `Halfway`, `Mismatched`, `R-Mismatched`, `X-Flower`],
1072
+ stepAreaNum: 0,
1073
+
1074
+ frzReturns: [C_FLG_OFF, `X-Axis`, `Y-Axis`, `Z-Axis`, `Random`, `XY-Axis`, `XZ-Axis`, `YZ-Axis`, `Random+`],
1075
+ frzReturnNum: 0,
1076
+
1077
+ shakings: [C_FLG_OFF, `Horizontal`, `Vertical`, `Drunk`],
1078
+ shakingNum: 0,
1079
+
1080
+ effects: [C_FLG_OFF, `Dizzy`, `Spin`, `Wave`, `Storm`, `Blinking`, `Squids`],
1081
+ effectNum: 0,
1082
+
1083
+ camoufrages: [C_FLG_OFF, `Color`, `Arrow`, `ALL`],
1084
+ camoufrageNum: 0,
1085
+
1086
+ swappings: [C_FLG_OFF, `Mirror`, `X-Mirror`],
1087
+ swappingNum: 0,
1088
+
1089
+ judgRanges: [`Normal`, `Narrow`, `Hard`, `ExHard`],
1090
+ judgRangeNum: 0,
1091
+
1092
+ autoRetrys: [C_FLG_OFF, `Miss`, `Matari(Good)`, `Shakin(Great)`, `Fast/Slow`],
1093
+ autoRetryNum: 0,
1094
+
1095
+ settingWindows: [optionInit, settingsDisplayInit, exSettingInit],
1096
+ settingWindowNum: 0,
1035
1097
  };
1036
1098
 
1037
1099
  g_settings.volumeNum = g_settings.volumes.length - 1;
@@ -1040,10 +1102,59 @@ g_settings.opacityNum = g_settings.opacitys.length - 1;
1040
1102
  /**
1041
1103
  * 設定画面間移動
1042
1104
  */
1043
- const g_jumpSettingWindow = {
1044
- option: () => settingsDisplayInit(),
1045
- difSelector: () => settingsDisplayInit(),
1046
- settingsDisplay: () => optionInit(),
1105
+ const g_moveSettingWindow = (_changePageFlg = true, _direction = 1) => {
1106
+ if (_changePageFlg) {
1107
+ g_settings.settingWindowNum = nextPos(g_settings.settingWindowNum, _direction, g_settings.settingWindows.length);
1108
+ }
1109
+ g_settings.settingWindows[g_settings.settingWindowNum]();
1110
+ };
1111
+
1112
+ /**
1113
+ * transform管理
1114
+ */
1115
+ const g_transforms = {};
1116
+
1117
+ /**
1118
+ * idごとのtransformを追加・変更
1119
+ * - _transformIdごとに transform情報を管理
1120
+ * @param {string} _id
1121
+ * @param {string} _transformId
1122
+ * @param {string} _transform
1123
+ */
1124
+ const addTransform = (_id, _transformId, _transform) => {
1125
+ if (g_transforms[_id] === undefined) {
1126
+ g_transforms[_id] = {};
1127
+ }
1128
+ g_transforms[_id][_transformId] = _transform;
1129
+ const _transforms = [];
1130
+ Object.keys(g_transforms[_id]).forEach(transformId => _transforms.push(g_transforms[_id][transformId]));
1131
+ $id(_id).transform = _transforms.join(` `);
1132
+ };
1133
+
1134
+ /**
1135
+ * idごとのtransformを追加(一時)
1136
+ * @param {string} _id
1137
+ * @param {string} _transform
1138
+ */
1139
+ const addTempTransform = (_id, _transform) => {
1140
+ $id(_id).transform = ($id(_id).transform || ``) + ` ` + _transform;
1141
+ };
1142
+
1143
+ /**
1144
+ * transformの初期化
1145
+ */
1146
+ const resetTransform = () => {
1147
+ Object.keys(g_transforms).forEach(_id => g_transforms[_id] = {});
1148
+ };
1149
+
1150
+ /**
1151
+ * id, transformIdに合致するtransform情報の取得
1152
+ * @param {string} _id
1153
+ * @param {string} _transformId
1154
+ * @returns
1155
+ */
1156
+ const getTransform = (_id, _transformId) => {
1157
+ return g_transforms[_id]?.[_transformId] || ``;
1047
1158
  };
1048
1159
 
1049
1160
  /**
@@ -1089,6 +1200,128 @@ const g_motionFunc = {
1089
1200
  'Fountain': _frms => getFountainTrace(_frms, g_stateObj.speed * 2),
1090
1201
  };
1091
1202
 
1203
+ /**
1204
+ * PlayWindow適用関数
1205
+ */
1206
+ const g_changeStairs = (_rad) => `rotate(${_rad}deg)`;
1207
+ const g_changeSkew = (_rad) => `Skew(${_rad}deg, ${_rad}deg) scaleY(0.9)`;
1208
+
1209
+ const g_playWindowFunc = {
1210
+ 'Default': () => ``,
1211
+ 'Stairs': () => g_changeStairs(-8),
1212
+ 'R-Stairs': () => g_changeStairs(8),
1213
+ 'Slope': () => g_changeStairs(-45),
1214
+ 'R-Slope': () => g_changeStairs(45),
1215
+ 'Distorted': () => g_changeSkew(-15),
1216
+ 'R-Distorted': () => g_changeSkew(15),
1217
+ 'SideScroll': () => g_changeStairs(-90),
1218
+ 'R-SideScroll': () => g_changeStairs(90),
1219
+ };
1220
+
1221
+ const g_stepAreaFunc = {
1222
+ 'Default': () => ``,
1223
+ 'Halfway': () => {
1224
+ [`stepSprite`, `arrowSprite`, `frzHitSprite`].forEach(sprite => {
1225
+ for (let j = 0; j < g_stateObj.layerNum; j++) {
1226
+ $id(`${sprite}${j}`).top = `${(j % 2 === 0 ? 1 : -1) * (g_headerObj.playingHeight / 2 - g_posObj.stepY + (g_posObj.stepYR - C_ARW_WIDTH) / 2)}px`;
1227
+ }
1228
+ });
1229
+ },
1230
+ 'Mismatched': () => {
1231
+ [`stepSprite`, `arrowSprite`, `frzHitSprite`].forEach(sprite => {
1232
+ for (let j = 0; j < g_stateObj.layerNum; j++) {
1233
+ addTransform(`${sprite}${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * -15}deg)`);
1234
+ }
1235
+ });
1236
+ },
1237
+ 'R-Mismatched': () => {
1238
+ [`stepSprite`, `arrowSprite`, `frzHitSprite`].forEach(sprite => {
1239
+ for (let j = 0; j < g_stateObj.layerNum; j++) {
1240
+ addTransform(`${sprite}${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * 15}deg)`);
1241
+ }
1242
+ });
1243
+ },
1244
+ 'X-Flower': () => {
1245
+ [`stepSprite`, `arrowSprite`, `frzHitSprite`].forEach(sprite => {
1246
+ for (let j = 0; j < Math.min(g_stateObj.layerNum, 4); j++) {
1247
+ addTransform(`${sprite}${j}`, `stepArea`, `rotate(${(j % 2 === 0 ? 1 : -1) * (j % 4 < 2 ? 1 : -1) * -15}deg)`);
1248
+ }
1249
+ });
1250
+ },
1251
+ };
1252
+
1253
+ /**
1254
+ * Shaking適用関数
1255
+ */
1256
+ const g_shakingFunc = {
1257
+ 'OFF': () => true,
1258
+ 'Horizontal': () => $id(`mainSprite`).left = `${(Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 1}px`,
1259
+ 'Vertical': () => $id(`mainSprite`).top = `${(Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 2}px`,
1260
+ 'Drunk': () => {
1261
+ if (parseFloat($id(`mainSprite`).left) === 0 && parseFloat($id(`mainSprite`).top) === 0) {
1262
+ g_workObj.drunkXFlg = [true, false][Math.floor(Math.random() * 2)];
1263
+ g_workObj.drunkYFlg = [true, false][Math.floor(Math.random() * 2)];
1264
+ }
1265
+ if (g_workObj.drunkXFlg) {
1266
+ $id(`mainSprite`).left = `${(Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 1}px`;
1267
+ $id(`infoSprite`).left = $id(`mainSprite`).left;
1268
+ $id(`judgeSprite`).left = $id(`mainSprite`).left;
1269
+ }
1270
+ if (g_workObj.drunkYFlg) {
1271
+ $id(`mainSprite`).top = `${(Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) - 25) / 2}px`;
1272
+ $id(`infoSprite`).top = $id(`mainSprite`).top;
1273
+ $id(`judgeSprite`).top = $id(`mainSprite`).top;
1274
+ }
1275
+ },
1276
+ };
1277
+
1278
+ /**
1279
+ * FrzReturn適用関数
1280
+ */
1281
+ const g_frzReturnFunc = {
1282
+ 'OFF': () => true,
1283
+ 'X-Axis': () => [`X`],
1284
+ 'Y-Axis': () => [`Y`],
1285
+ 'Z-Axis': () => [`Z`],
1286
+ 'Random': () => [`X`, `Y`, `Z`][Math.floor(Math.random() * 3)],
1287
+ 'XY-Axis': () => [`X`, `Y`],
1288
+ 'XZ-Axis': () => [`X`, `Z`],
1289
+ 'YZ-Axis': () => [`Y`, `Z`],
1290
+ 'Random+': () => {
1291
+ const axis1 = [`X`, `Y`, `Z`][Math.floor(Math.random() * 3)];
1292
+ const axis2 = [`X`, `Y`, `Z`, undefined].filter(val => val !== axis1)[Math.floor(Math.random() * 3)];
1293
+ return [axis1, axis2];
1294
+ },
1295
+ };
1296
+
1297
+ /**
1298
+ * Effect適用関数
1299
+ * @param {string} _arrowEffect
1300
+ * @param {string} _frzEffect
1301
+ * @param {string} _frzArrowEffect
1302
+ */
1303
+ const g_setEffect = (_arrowEffect, _frzEffect = ``, _frzArrowEffect = _arrowEffect) => {
1304
+ const keyNum = g_keyObj[`${g_keyObj.defaultProp}${g_keyObj.currentKey}_${g_keyObj.currentPtn}`].length;
1305
+ for (let j = 0; j < keyNum; j++) {
1306
+ g_workObj.arrowCssMotions[j] = _arrowEffect;
1307
+ if (hasVal(_frzEffect)) {
1308
+ g_workObj.frzCssMotions[j] = _frzEffect;
1309
+ }
1310
+ if (hasVal(_frzArrowEffect)) {
1311
+ g_workObj.frzArrowCssMotions[j] = _frzArrowEffect;
1312
+ }
1313
+ }
1314
+ };
1315
+ const g_effectFunc = {
1316
+ 'OFF': () => true,
1317
+ 'Dizzy': () => g_setEffect(`effects-dizzy`),
1318
+ 'Spin': () => g_setEffect(`effects-spin`),
1319
+ 'Wave': () => g_setEffect(`effects-wave`, `effects-wave`),
1320
+ 'Storm': () => g_setEffect(`effects-storm`, `effects-storm`, ``),
1321
+ 'Blinking': () => g_setEffect(`effects-blinking`, `effects-blinking`, ``),
1322
+ 'Squids': () => g_setEffect(`effects-squids-arrow`, `effects-squids-frz`),
1323
+ };
1324
+
1092
1325
  const g_keycons = {
1093
1326
  configTypes: [`Main`, `Replaced`, `ALL`],
1094
1327
  configTypeNum: 0,
@@ -1130,7 +1363,9 @@ let g_storeSettings = [`adjustment`, `volume`, `appearance`, `opacity`, `hitPosi
1130
1363
  let g_storeSettingsEx = [`d_stepzone`, `d_judgment`, `d_fastslow`, `d_lifegauge`,
1131
1364
  `d_score`, `d_musicinfo`, `d_filterline`];
1132
1365
 
1133
- let g_canDisabledSettings = [`motion`, `scroll`, `reverse`, `shuffle`, `autoPlay`, `gauge`, `excessive`, `appearance`];
1366
+ let g_canDisabledSettings = [`motion`, `scroll`, `reverse`, `shuffle`, `autoPlay`, `gauge`,
1367
+ `excessive`, `appearance`, `playWindow`, `stepArea`, `frzReturn`, `shaking`, `effect`, `camoufrage`,
1368
+ `swapping`, `judgRange`, `autoRetry`];
1134
1369
 
1135
1370
  const g_hidSudFunc = {
1136
1371
  filterPos: _filterPos => `${_filterPos}${g_lblNameObj.percent}`,
@@ -1754,6 +1989,33 @@ const g_shortcutObj = {
1754
1989
  ShiftRight_Tab: { id: `btnBack` },
1755
1990
  Tab: { id: `btnSettings` },
1756
1991
  },
1992
+ exSetting: {
1993
+ ShiftLeft_KeyP: { id: `lnkPlayWindowL` },
1994
+ ShiftLeft_KeyS: { id: `lnkStepAreaL` },
1995
+ ShiftLeft_KeyF: { id: `lnkFrzReturnL` },
1996
+ ShiftLeft_KeyH: { id: `lnkShakingL` },
1997
+ ShiftLeft_KeyE: { id: `lnkEffectL` },
1998
+ ShiftLeft_KeyC: { id: `lnkCamoufrageL` },
1999
+ ShiftLeft_KeyW: { id: `lnkSwappingL` },
2000
+ ShiftLeft_KeyJ: { id: `lnkJudgRangeL` },
2001
+ ShiftLeft_KeyA: { id: `lnkAutoRetryL` },
2002
+
2003
+ KeyP: { id: `lnkPlayWindowR` },
2004
+ KeyS: { id: `lnkStepAreaR` },
2005
+ KeyF: { id: `lnkFrzReturnR` },
2006
+ KeyH: { id: `lnkShakingR` },
2007
+ KeyE: { id: `lnkEffectR` },
2008
+ KeyC: { id: `lnkCamoufrageR` },
2009
+ KeyW: { id: `lnkSwappingR` },
2010
+ KeyJ: { id: `lnkJudgRangeR` },
2011
+ KeyA: { id: `lnkAutoRetryR` },
2012
+
2013
+ KeyZ: { id: `btnSave` },
2014
+ Escape: { id: `btnBack` },
2015
+ Space: { id: `btnKeyConfig` },
2016
+ Enter: { id: `btnPlay` },
2017
+ Tab: { id: `btnexSetting` },
2018
+ },
1757
2019
  keyConfig: {
1758
2020
  Escape: { id: `btnBack` },
1759
2021
  Backspace_Enter: { id: `btnPlay` },
@@ -1786,6 +2048,7 @@ const g_btnWaitFrame = {
1786
2048
  option: { b_frame: 0, s_frame: 0, initial: true },
1787
2049
  difSelector: { b_frame: 0, s_frame: 0 },
1788
2050
  settingsDisplay: { b_frame: 0, s_frame: 0 },
2051
+ exSetting: { b_frame: 0, s_frame: 0 },
1789
2052
  keyConfig: { b_frame: 0, s_frame: 30 },
1790
2053
  loading: { b_frame: 0, s_frame: 0 },
1791
2054
  loadingIos: { b_frame: 0, s_frame: 0 },
@@ -1799,6 +2062,7 @@ const g_btnPatterns = {
1799
2062
  option: { Back: 0, KeyConfig: 0, Play: 0, Display: -5, Save: -10, Graph: -25 },
1800
2063
  difSelector: {},
1801
2064
  settingsDisplay: { Back: 0, KeyConfig: 0, Play: 0, Save: -10, Settings: -5 },
2065
+ exSetting: { Back: 0, KeyConfig: 0, Play: 0, exSetting: -5, Save: -10 },
1802
2066
  loadingIos: { Play: 0 },
1803
2067
  keyConfig: { Back: -3, Play: 0 },
1804
2068
  result: { Back: -5, Copy: -5, Tweet: -5, Gitter: -5, Retry: 0 },
@@ -2600,7 +2864,7 @@ g_keycons.groups.forEach(type => {
2600
2864
  const g_keyCopyLists = {
2601
2865
  simpleDef: [`blank`, `scale`],
2602
2866
  simple: [`div`, `divMax`, `blank`, `scale`, `keyRetry`, `keyTitleBack`, `transKey`, `scrollDir`, `assistPos`, `flatMode`],
2603
- multiple: [`chara`, `color`, `stepRtn`, `pos`, `shuffle`, `keyGroup`, `keyGroupOrder`],
2867
+ multiple: [`chara`, `color`, `stepRtn`, `pos`, `shuffle`, `keyGroup`, `keyGroupOrder`, `layerGroup`, `layerTrans`],
2604
2868
  };
2605
2869
 
2606
2870
  // タイトル画面関連のリスト群
@@ -3042,6 +3306,16 @@ const g_lblNameObj = {
3042
3306
  Opacity: `Opacity`,
3043
3307
  HitPosition: `HitPosition`,
3044
3308
 
3309
+ PlayWindow: `PlayWindow`,
3310
+ StepArea: `StepArea`,
3311
+ FrzReturn: `FrzReturn`,
3312
+ Shaking: `Shaking`,
3313
+ Effect: `Effect`,
3314
+ Camoufrage: `Camoufrage`,
3315
+ Swapping: `Swapping`,
3316
+ JudgRange: `JudgRange`,
3317
+ AutoRetry: `AutoRetry`,
3318
+
3045
3319
  'u_x': `x`,
3046
3320
  'u_%': `%`,
3047
3321
  'u_key': `key`,
@@ -3097,6 +3371,45 @@ const g_lblNameObj = {
3097
3371
  'u_Sudden+': `Sudden+`,
3098
3372
  'u_Hid&Sud+': `Hid&Sud+`,
3099
3373
 
3374
+ 'u_Stairs': `Stairs`,
3375
+ 'u_R-Stairs': `R-Stairs`,
3376
+ 'u_Slope': `Slope`,
3377
+ 'u_R-Slope': `R-Slope`,
3378
+ 'u_Distorted': `Distorted`,
3379
+ 'u_R-Distorted': `R-Distorted`,
3380
+ 'u_SideScroll': `SideScroll`,
3381
+ 'u_R-SideScroll': `R-SideScroll`,
3382
+
3383
+ 'u_X-Axis': `X-Axis`,
3384
+ 'u_Y-Axis': `Y-Axis`,
3385
+ 'u_Z-Axis': `Z-Axis`,
3386
+ 'u_XY-Axis': `XY-Axis`,
3387
+ 'u_XZ-Axis': `XZ-Axis`,
3388
+ 'u_YZ-Axis': `YZ-Axis`,
3389
+
3390
+ 'u_Horizontal': `Horizontal`,
3391
+ 'u_Vertical': `Vertical`,
3392
+ 'u_Drunk': `Drunk`,
3393
+
3394
+ 'u_Dizzy': `Dizzy`,
3395
+ 'u_Spin': `Spin`,
3396
+ 'u_Wave': `Wave`,
3397
+ 'u_Storm': `Storm`,
3398
+ 'u_Blinking': `Blinking`,
3399
+ 'u_Squids': `Squids`,
3400
+
3401
+ 'u_Color': `Color`,
3402
+ 'u_Arrow': `Arrow`,
3403
+
3404
+ 'u_Narrow': `Narrow`,
3405
+ 'u_Hard': `Hard`,
3406
+ 'u_ExHard': `ExHard`,
3407
+
3408
+ 'u_Miss': `Miss`,
3409
+ 'u_Matari(Good)': `Matari(Good)`,
3410
+ 'u_Shakin(Great)': `Shakin(Great)`,
3411
+ 'u_Fast/Slow': `Fast/Slow`,
3412
+
3100
3413
  'u_Speed': `Velocity`,
3101
3414
  'u_Density': `Density`,
3102
3415
  'u_ToolDif': `DifLevel`,
@@ -3289,7 +3602,7 @@ const g_lang_msgObj = {
3289
3602
  graph: `譜面密度や速度変化状況、\n譜面の難易度などの情報を表示します。`,
3290
3603
  dataSave: `ハイスコア、リバース設定、\nキーコンフィグの保存の有無を設定します。`,
3291
3604
  toDisplay: `プレイ画面上のオブジェクトの\n表示・非表示(一部透明度)を設定します。`,
3292
- toSettings: `SETTINGS画面へ戻ります。`,
3605
+ toSettings: `その他の拡張設定を設定します。`,
3293
3606
 
3294
3607
  d_stepzone: `ステップゾーンの表示`,
3295
3608
  d_judgment: `判定キャラクタ・コンボの表示`,
@@ -3305,6 +3618,18 @@ const g_lang_msgObj = {
3305
3618
  d_arroweffect: `矢印・フリーズアローモーションの有効化設定`,
3306
3619
  d_special: `作品固有の特殊演出の有効化設定`,
3307
3620
 
3621
+ playWindow: `ステップゾーン及び矢印の位置を全体的に回転する等の設定です。\n[Stairs/Slope] ステップゾーンを階段状にします\n[Distorted] 画面を歪ませます`,
3622
+ sideScrollMsg: `\n[SideScroll] 横スクロールモードになります\n\nSlope, SideScrollを設定する場合は高さが足りているかを確認してください\nクエリパラメータ ?h=600 などで設定できます`,
3623
+ sideScrollDisable: `\n\nウィンドウの高さの自動拡張が無効のため、Slope, SideScrollは使用できません`,
3624
+ stepArea: `ステップゾーンの位置を変更します。\n[Halfway] ステップゾーンが中央に表示されます\n[Mismatched] スクロールの向きが上下で異なる方向に流れます`,
3625
+ frzReturn: `フリーズアロー到達時及び矢印の回復判定が100の倍数に達するごとに、X/Y/Z軸のいずれかに回転します`,
3626
+ shaking: `ステップゾーン及び矢印を揺らす設定です。\n[Horizontal] 横方向に揺らします\n[Vertical] 縦方向に揺らします\n[Drunk] 画面全体を上下左右ランダムに揺らします。画面酔いに注意してください`,
3627
+ effect: `矢印・フリーズアローにエフェクトをかけます。\n[Dizzy/Spin] 矢印が回転します\n[Wave/Storm] 矢印の軌道が左右に揺れます\n[Blinking] 矢印が点滅します\n[Squids] 矢印が伸び縮みします`,
3628
+ camoufrage: `ステップの見た目が配置は同じでランダムに変わります。`,
3629
+ swapping: `ステップゾーンの位置をグループ単位で入れ替えます。`,
3630
+ judgRange: `判定の許容範囲を設定します。\n[Normal] 通常、[Narrow/Hard] 辛判定、[ExHard] 激辛判定`,
3631
+ autoRetry: `自動リトライの条件を設定します。\n[Miss] ミス時、[Matari] マターリ時、[Shakin] シャキン時、[FS] Fast/Slow発生時`,
3632
+
3308
3633
  lnkSpeedG: `譜面の進行別の速度変化状況を表示`,
3309
3634
  lnkDensityG: `譜面の密度状況を表示`,
3310
3635
  lnkToolDifG: `譜面の難易度、矢印・フリーズアローの分布状況を表示`,
@@ -3359,7 +3684,7 @@ const g_lang_msgObj = {
3359
3684
  graph: `Displays detailed information about the chart, such as chart's density status, sequences' velocity changes, and chart's difficulty.`,
3360
3685
  dataSave: `Set whether to save the high score, reverse setting, and key config.`,
3361
3686
  toDisplay: `Set the display or non-display (partial transparency) of objects on the play screen.`,
3362
- toSettings: `Return to the SETTINGS screen.`,
3687
+ toSettings: `Set other extended settings.`,
3363
3688
 
3364
3689
  d_stepzone: `Display step zone`,
3365
3690
  d_judgment: `Display judgment and combo counts`,
@@ -3375,6 +3700,18 @@ const g_lang_msgObj = {
3375
3700
  d_arroweffect: `Enable sequences' animations`,
3376
3701
  d_special: `Enable setting of special effects to the work`,
3377
3702
 
3703
+ playWindow: `This is the setting for overall rotation of the step zone and arrow position, etc.\n[Stairs/Slope] The step zone is in a staircase shape.\n[Distorted] Distorts the screen.`,
3704
+ sideScrollMsg: `\n[SideScroll] It becomes a side scroll mode.\n\nWhen setting Slope or SideScroll, please make sure that the height is\nsufficient. Can be set with query parameter ?h=600, etc.`,
3705
+ sideScrollDisable: `\n\nSlope, SideScroll cannot be used because \nautomatic window height expansion is disabled.`,
3706
+ stepArea: `Change the position of the step zone.\n[Halfway] Step zones are centered.\n[Mismatched] Scroll direction flows in different directions up and down.`,
3707
+ frzReturn: `When the Freeze Arrow is reached, and every time the arrow's recovery judgment \nreaches a multiple of 100, it will rotate on either the X, Y, or Z axis.`,
3708
+ shaking: `This is the setting to shake the step zone and arrows.\n[Horizontal] Shakes horizontally.\n[Vertical] Shakes vertically.\n[Drunk] Shakes the entire screen randomly up, down, left, and right. Be careful of motion sickness.`,
3709
+ 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.`,
3710
+ camoufrage: `The appearance of the steps changes randomly with the same placement.`,
3711
+ swapping: `Replaces the position of step zones on a group-by-group basis.`,
3712
+ judgRange: `Set the allowable range of judgment.\n[Normal] Normal judgment, [Narrow/Hard] Hard judgment, [ExHard] Very hard judgment`,
3713
+ autoRetry: `Set the conditions for automatic retry.\n[Miss] When missed, [Matari] When good, [Shakin] When great, [FS] When Fast/Slow occurs`,
3714
+
3378
3715
  lnkSpeedG: `Displays the speed change status by progression of the chart.`,
3379
3716
  lnkDensityG: `Displays the density status of the chart.`,
3380
3717
  lnkToolDifG: `Displays the difficulty level of the chart and the distribution of arrows and freeze arrows.`,
@@ -3426,12 +3763,17 @@ const g_customJsObj = {
3426
3763
  option: [],
3427
3764
  difficulty: [],
3428
3765
  settingsDisplay: [],
3766
+ exSetting: [],
3429
3767
  keyconfig: [],
3430
3768
 
3431
3769
  preloading: [],
3432
3770
  loading: [],
3433
3771
  progress: [],
3434
3772
  main: [],
3773
+
3774
+ makeArrow: [],
3775
+ makeFrzArrow: [],
3776
+
3435
3777
  dummyArrow: [],
3436
3778
  dummyFrz: [],
3437
3779
 
@@ -3459,6 +3801,7 @@ const g_skinJsObj = {
3459
3801
  title: [],
3460
3802
  option: [],
3461
3803
  settingsDisplay: [],
3804
+ exSetting: [],
3462
3805
  keyconfig: [],
3463
3806
 
3464
3807
  preloading: [],
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  /**
3
3
  * Dancing☆Onigiri 設定用jsファイル
4
- * Template Update: 2024/09/04 (v37.5.0)
4
+ * Template Update: 2025/02/01 (v39.0.0)
5
5
  *
6
6
  * このファイルでは、作品全体に対しての初期設定を行うことができます。
7
7
  * 譜面データ側で個別に同様の項目が設定されている場合は、譜面データ側の設定が優先されます。
@@ -246,6 +246,16 @@ g_presetObj.settingUse = {
246
246
  // background: `true`,
247
247
  // arrowEffect: `true`,
248
248
  // special: `true`,
249
+
250
+ // playWindow: `true`,
251
+ // stepArea: `true`,
252
+ // frzReturn : `true`,
253
+ // shaking : `true`,
254
+ // effect : `true`,
255
+ // camoufrage : `true`,
256
+ // swapping : `true`,
257
+ // judgRange : `true`,
258
+ // autoRetry : `true`,
249
259
  };
250
260
 
251
261
  /*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "38.3.2",
3
+ "version": "39.1.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 : 2024/05/18 (v36.4.1)
8
+ Revised : 2025/02/01 (v39.0.0)
9
9
 
10
10
  https://github.com/cwtickle/danoniplus
11
11
  ------------------------------------------ */
@@ -43,6 +43,15 @@
43
43
  --settings-appearance-x: #cc99ff;
44
44
  --settings-opacity-x: #ee99ff;
45
45
  --settings-hitPosition-x: #ff99ff;
46
+ --settings-playWindow-x: #9999ff;
47
+ --settings-stepArea-x: #6699ff;
48
+ --settings-frzReturn-x: #99ccff;
49
+ --settings-shaking-x: #99ffff;
50
+ --settings-effect-x: #99ffcc;
51
+ --settings-camoufrage-x: #99ff99;
52
+ --settings-swapping-x: #ccff99;
53
+ --settings-judgRange-x: #ffff99;
54
+ --settings-autoRetry-x: #cc99ff;
46
55
 
47
56
  /* 譜面選択部分背景 */
48
57
  --settings-difSelector: #111111;
@@ -5,7 +5,7 @@
5
5
  スキンcssファイル (light)
6
6
 
7
7
  Created : 2019/11/04
8
- Revised : 2024/05/18 (v36.4.1)
8
+ Revised : 2025/02/01 (v39.0.0)
9
9
 
10
10
  https://github.com/cwtickle/danoniplus
11
11
  ------------------------------------------ */
@@ -43,6 +43,15 @@
43
43
  --settings-appearance-x: #9900ff;
44
44
  --settings-opacity-x: #cc00ff;
45
45
  --settings-hitPosition-x: #ff00ff;
46
+ --settings-playWindow-x: #000099;
47
+ --settings-stepArea-x: #222299;
48
+ --settings-frzReturn-x: #003377;
49
+ --settings-shaking-x: #007777;
50
+ --settings-effect-x: #337744;
51
+ --settings-camoufrage-x: #337733;
52
+ --settings-swapping-x: #557733;
53
+ --settings-judgRange-x: #777700;
54
+ --settings-autoRetry-x: #9900ff;
46
55
 
47
56
  /* 譜面選択部分背景 */
48
57
  --settings-difSelector: #eeeeee;
@@ -5,7 +5,7 @@
5
5
  スキンcssファイル (skyblue)
6
6
 
7
7
  Created : 2019/11/04
8
- Revised : 2024/05/18 (v36.4.1)
8
+ Revised : 2025/02/01 (v39.0.0)
9
9
 
10
10
  https://github.com/cwtickle/danoniplus
11
11
  ------------------------------------------ */
@@ -43,6 +43,15 @@
43
43
  --settings-appearance-x: #9900ff;
44
44
  --settings-opacity-x: #cc00ff;
45
45
  --settings-hitPosition-x: #ff00ff;
46
+ --settings-playWindow-x: #000099;
47
+ --settings-stepArea-x: #000099;
48
+ --settings-frzReturn-x: #003399;
49
+ --settings-shaking-x: #003399;
50
+ --settings-effect-x: #006699;
51
+ --settings-camoufrage-x: #009999;
52
+ --settings-swapping-x: #006699;
53
+ --settings-judgRange-x: #003399;
54
+ --settings-autoRetry-x: #000099;
46
55
 
47
56
  /* 譜面選択部分背景 */
48
57
  --settings-difSelector: #ccddee;