danoniplus 29.3.5 → 30.0.1

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.
@@ -0,0 +1,256 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ja">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <script src="../js/danoni_main.js" charset="UTF-8"></script>
6
+ <title>Dancing★Onigiri</title>
7
+ <style type="text/css">
8
+ <!--//
9
+ a:link { color:#BAB7E0;}
10
+ a:visited{ color:#BAB7E0;}
11
+ a:active { color:#CCCCCC;}
12
+ body{
13
+ font-family:"Arial","メイリオ","MS P ゴシック",sans-serif;
14
+ scrollbar-base-color:"black";
15
+ scrollbar-arrow-color:"white";
16
+ color:#cccccc;
17
+ background-color:#000011;
18
+ font-size:14px;
19
+ }
20
+ table{
21
+ border:0;
22
+ border-collapse:collapse;
23
+ width:800px;
24
+ margin:auto;
25
+ }
26
+ th,td{padding:0;}
27
+
28
+ a{ text-decoration: none; }
29
+ a:hover { color:#FF9900; text-decoration: underline; }
30
+
31
+ //-->
32
+ </style>
33
+ </head>
34
+
35
+ <body>
36
+ <table><tr><td>
37
+ <p style="text-align:center;">
38
+ <span style="font-size:32px;">Preview</span>
39
+ </p>
40
+ <hr>
41
+ <input type="hidden" name="dos" id="dos" value='
42
+ |musicTitle=Defeat*comma*I Doll,月人(MoonWind),|
43
+ |difData=Tr,Transform,3.5,70,2,7$14,Normal,3.5|
44
+ |setColor=#9999ff,#99ffff,#ffffff,#ffff99,#ff9966|
45
+ |frzColor=#00ffff,#6600ff,#cccc33,#999933$#99ff99,#99ff99,#cccc33,#999933$#00ffff,#6600ff,#cccc33,#999933$#cc99ff,#9966ff,#cccc33,#999933|
46
+
47
+ |startFrame=0|blankFrame=197|
48
+ |endFrame=3:08|
49
+
50
+ |keyExtraList=Tr|
51
+ |minWidthTr=800|
52
+
53
+ |charaTr=
54
+ aleft,adown,aup,aright,aspace,bleft,bleftdia,bdown,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright
55
+ aspace,aleft,adown,aup,aright,bleft,bleftdia,bdown,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright
56
+ aleft,adown,aspace,aup,aright,bleft,bleftdia,bdown,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright
57
+ aleft,adown,aup,aright,aspace,blefta,bleft,bleftdia,bdown,bleftb,bspace,bup,brightdia,bright,cleft,cdown,cup,cright,dleft,ddown,dup,dright,eleft,edown,eup,eright,fleft,fdown,fup,fright,oni,hleft,hleftdia,hdown,hspace,hup,hrightdia,hright,gleft,gleftdia,gdown,gspace,gup,grightdia,gright
58
+ |
59
+ |colorTr=
60
+ 4,4,4,4,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,2,3,3,2,3,3,3,3,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0
61
+ 2,4,4,4,4,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,2,3,3,2,3,3,3,3,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0
62
+ 4,4,2,4,4,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,2,3,3,2,3,3,3,3,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0
63
+ 3,3,3,3,2,0,1,0,1,2,1,0,1,0,4,4,4,4,3,3,3,3,2,3,3,2,1,0,1,0,3,3,3,3,0,1,0,1,0,1,0,2,0,1,0
64
+ |
65
+ |stepRtnTr=
66
+ 0,-90,90,180,onigiri,giko,onigiri,iyo,0,-90,90,180,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,0,-90,90,180,0,-45,-90,onigiri,90,135,180,onigiri,0,30,60,90,120,150,180
67
+ onigiri,0,-90,90,180,giko,onigiri,iyo,0,-90,90,180,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,0,-90,90,180,0,-45,-90,onigiri,90,135,180,onigiri,0,30,60,90,120,150,180
68
+ 0,-90,onigiri,90,180,giko,onigiri,iyo,0,-90,90,180,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,0,-90,90,180,0,-45,-90,onigiri,90,135,180,onigiri,0,30,60,90,120,150,180
69
+ 0,45,135,180,giko,90,120,150,180,onigiri,0,30,60,90,0,-90,90,180,0,-90,90,180,giko,135,45,iyo,45,0,-45,-90,giko,onigiri,iyo,c,90,135,180,225,0,-45,-90,onigiri,90,135,180
70
+ |
71
+ |posTr=
72
+ 1,2,3,4,5,0,1,2,3,4,5,6,2.5,3.5,4.5,5.5,0.5,1.5,2.5,3.5,0.5,2.5,3.5,5.5,2,3,4,5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,7,8,9,10,11,12,13,14
73
+ 1,2,3,4,5,0,1,2,3,4,5,6,2.5,3.5,4.5,5.5,0.5,1.5,2.5,3.5,0.5,2.5,3.5,5.5,2,3,4,5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,7,8,9,10,11,12,13,14
74
+ 1,2,3,4,5,0,1,2,3,4,5,6,2.5,3.5,4.5,5.5,0.5,1.5,2.5,3.5,0.5,2.5,3.5,5.5,2,3,4,5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,7,8,9,10,11,12,13,14
75
+ 3.5,4.5,5.5,6.5,7.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,3,4,5,6,5,6,7,8,3,5,6,8,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
76
+ |
77
+ |keyGroupTr=
78
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,12,12,12,12,12,12,12,12
79
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,12,12,12,12,12,12,12,12
80
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,12,12,12,12,12,12,12,12
81
+ 5,5,5,5,5,7i,7i,7i,7i,7i,7i,7i,7i,7i,11,11,11,11,11L,11L,11L,11L,11W,11W,11W,11W,12,12,12,12,12,12,12,12,12,12,12,12,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W,11/11L/11W
82
+ |
83
+
84
+ |divTr=7$7$7$12,19|
85
+ |keyCtrlTr=
86
+ 37/0,40/0,38/0,39/0,32/0,90/0,88/0,67/0,37/0,40/0,38/0,39/0,37/0,40/0,38/0,39/0,87/0,69/0,51/52,82/0,49/50,84/0,89/0,48/189,85/0,73/0,56/57/0,79/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0,32/0,78/0,74/0,77/0,75/0,188/0,76/0,190/0
87
+ 32/0,37/0,40/0,38/0,39/0,90/0,88/0,67/0,37/0,40/0,38/0,39/0,37/0,40/0,38/0,39/0,87/0,69/0,51/52,82/0,49/50,84/0,89/0,48/189,85/0,73/0,56/57/0,79/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0,32/0,78/0,74/0,77/0,75/0,188/0,76/0,190/0
88
+ 68/0,70/0,32/0,74/0,75/0,90/0,88/0,67/0,37/0,40/0,38/0,39/0,37/0,40/0,38/0,39/0,87/0,69/0,51/52,82/0,49/50,84/0,89/0,48/189,85/0,73/0,56/57/0,79/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0,32/0,78/0,74/0,77/0,75/0,188/0,76/0,190/0
89
+ 112/0,113/0,114/0,115/0,13/16,52/0,82/0,70/0,86/0,32/0,78/0,74/0,73/0,57/0,87/0,69/0,51/52,82/0,37/0,40/0,38/0,39/0,49/50,84/0,89/0,48/189,112/0,113/0,114/0,115/0,116/0,117/0,118/0,119/0,120/0,121/0,122/0,123/0,83/0,68/0,70/0,32/0,74/0,75/0,76/0
90
+ |
91
+
92
+ |shuffleTr=
93
+ 0,0,0,0,1,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,8,8,8,10,11,11,11,11,11,11,11/0,0,0,0,0,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7
94
+ 1,0,0,0,0,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,8,8,8,10,11,11,11,11,11,11,11/0,0,0,0,0,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7
95
+ 0,0,1,0,0,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,8,8,8,10,11,11,11,11,11,11,11/0,0,0,0,0,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7
96
+ 0,0,0,0,1,2,2,2,2,3,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,10,10,10/0,0,0,0,0,2,2,2,2,2,2,2,2,2,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8
97
+ |
98
+ |scrollTr=
99
+ Reverse::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Cross::1,-1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
100
+ Reverse::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Cross::1,1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
101
+ Reverse::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Cross::1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
102
+ ---::1,1,1,1,1,1,1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1/Reverse::-1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1/Cross::1,-1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,1,1,1,1,1,1,1,1,1/Flat::1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1/R-Flat::-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1
103
+ |
104
+
105
+ |transKeyTr=$$$Tr2|
106
+ |shuffleUse=group|
107
+
108
+ |gleft_data=205,222,286,391,408,472,1088,1227,1320,1529,1854,2179,2400,2528,2708,2771,2969,3143,3201,3248,10720,10755,10912,10959|
109
+ |gleftdia_data=263,350,460,1018,1273,1343,1413,1506,1715,1773,1831,2400,2470,2620,2679,2737,2830,3027,3120,10703,10720,10796,10935|
110
+ |gdown_data=298,315,495,832,1099,1239,1297,1401,1540,1564,1691,1750,1877,1900,1912,1924,1935,1947,2144,2417,2667,2702,2946,2969,3015,3050,3213,10831,10941|
111
+ |gspace_data=449,1204,1320,1691,2040,2086,2133,2179,2226,2272,2319,2365,2458,2504,2644,2690,2760,2806,2899,3178,10680,10773,10924|
112
+ |gup_data=275,426,484,519,548,1250,1285,1703,1854,2098,2156,2284,2417,2493,2609,2690,2841,2922,2946,3073,3143,3236,10755,10796,10813,10947|
113
+ |grightdia_data=240,333,507,542,1006,1111,1215,1297,1390,1552,1831,2516,2748,3027,3160,10703,10953|
114
+ |gright_data=484,1273,1575,1668,1738,1761,1808,2034,2121,2307,2435,2481,2655,2713,2806,2922,3062,3097,3178,3224,10680,10813|
115
+ |dleft_data=530,611,658,693,948,971,1134,1250,1424,1599,1622,1784,2028,2365,2435,2760,2853,2992,10889|
116
+ |ddown_data=536,577,600,646,704,728,844,902,1064,1169,1192,1355,1436,1575,1796,1970,1982,1993,2005,2353,2713,2789,2864,3259,10900|
117
+ |dup_data=739,797,925,983,1459,1645,1668,2377,2888,3073,3160|
118
+ |dright_data=635,762,995,1041,1076,1157,1378,1482,1599,1808,2017,2330,2783,2876,3108,3259,10959|
119
+ |gfrzLeft_data=553,565|
120
+ |gfrzLdia_data=2063,2098|
121
+ |gfrzDown_data=2249,2284|
122
+ |gfrzSpace_data=|
123
+ |gfrzUp_data=|
124
+ |gfrzRdia_data=2226,2243|
125
+ |gfrzRight_data=2202,2220,10889,10912|
126
+ |dfrzLeft_data=|
127
+ |dfrzDown_data=|
128
+ |dfrzUp_data=2562,2580|
129
+ |dfrzRight_data=553,565,2539,2557,2586,2603|
130
+
131
+ |aleft_data=3329,3375,3422,3480,3608,3677,3770,3817,3840,3863,3910,3944,3991,4014,4049,4072,4107,4130,4153,4177,4200,4235,4316,4339,4374,4432,4479,4525,4571,4641,4821,4850,4943,4972,5361,5500,5518|
132
+ |adown_data=3340,3387,3433,3468,3526,3573,3619,3666,3689,3712,3759,3793,3840,3915,3933,3991,4037,4078,4130,4177,4223,4246,4281,4304,4328,4362,4386,4409,4432,4490,4630,4664,4688,4699,4711,4722,4734,4804,4815,4943,4966,5408,5425,5553,5593,5611|
133
+ |aup_data=3491,3515,3561,3631,3654,3747,3817,3851,3944,4026,4066,4119,4165,4211,4258,4362,4397,4420,4455,4537,4641,4827,4955,4978,5338,5535|
134
+ |aright_data=3317,3352,3399,3445,3515,3538,3561,3584,3608,3642,3735,3793,3851,3863,3921,3956,3979,4002,4060,4084,4142,4188,4270,4293,4316,4351,4409,4455,4583,4618,4757,4769,4780,4792,4810,4955,4984,5315,5442,5628|
135
+ |aspace_data=3782,3898,4014,4060,4502,4513,4548,4560,4595,4606,4827,4850,5036,5384,5477,5570,5582,5663|
136
+ |afrzLeft_data=4990,5036,5686,5710|
137
+ |afrzDown_data=|
138
+ |afrzUp_data=|
139
+ |afrzRdia_data=|
140
+ |afrzRight_data=5686,5710|
141
+ |afrzSpace_data=|
142
+
143
+ |oni_data=5779,6499,7150,7289,7382,7475,7811,8009,8288,8462,8485,8497|
144
+ |hleft_data=5837,6151,6244,6569,6940,7033,7300,7602,7893,8055|
145
+ |hleftdia_data=6128,6197,6290,6395,6430,6453,6464,6906,7010,7242,7324,7568,7620,7707,7765,7846,8032,8299,8346,8404,8450|
146
+ |hdown_data=5826,5919,6162,6220,6255,6488,6580,6685,6929,6952,7045,7359,7881,8067,8322,8346|
147
+ |hspace_data=6337,6360,6371,6406,6894,6987,7080,7103,7115,7126,7138,7150,7382,7556,7602,7637,7765,7835,7904,8009,8090,8380,8427|
148
+ |hup_data=5849,5942,6174,6313,6476,6592,6917,7022,7266,7335,7579,7719,7742,7991,8044,8322,8363|
149
+ |hrightdia_data=6209,6302,6383,6406,6871,6964,7312,7428,7533,7620,7695,7870,7974,8079,8311,8363,8439|
150
+ |hright_data=5860,6267,6499,6604,6662,7057,7742,7991,8462|
151
+ |fleft_data=6522,6639,7231,7521,7637,7672,7788,7939,7986,8102,8148,8171,8380|
152
+ |fdown_data=6534,6615,6708,7428,7660,7962,7986|
153
+ |fup_data=7173,7184,7196,7208,7219,7486,7811,8195,8218,8230,8253,8264|
154
+ |fright_data=6546,6627,7242,7405,7510,7788,8125,8160,8276|
155
+ |foni_data=6708,6731|
156
+ |hfrzLeft_data=|
157
+ |hfrzLdia_data=6046,6104|
158
+ |hfrzDown_data=|
159
+ |hfrzSpace_data=6000,6023,6743,6778|
160
+ |hfrzUp_data=|
161
+ |hfrzRdia_data=5965,5988,6790,6848,7916,7939|
162
+ |ffrzRight_data=|
163
+ |ffrzLeft_data=|
164
+ |ffrzDown_data=7451,7475|
165
+ |ffrzUp_data=|
166
+ |ffrzRight_data=|
167
+
168
+ |bleft_data=8671,8845,8915,8979,9054,9066,9100,9228,9310,9356,9402,9472,9495,9588,9658,9722,9797,9809,9908,9937,9948,10000,10030,10076,10146,10517,10564,10587|
169
+ |bleftdia_data=8682,8857,8961,8973,9025,9147,9240,9269,9280,9292,9379,9449,9472,9542,9565,9635,9704,9716,9768,9890,9902,9954,10146,10169,10570,10587|
170
+ |bdown_data=8694,8868,9008,9019,9071,9089,9112,9182,9205,9251,9333,9426,9519,9565,9611,9629,9751,9762,9815,9983,9995,10030,10175,10186,10540,10575|
171
+ |bspace_data=8555,8590,8717,8764,8833,8880,8938,8996,9031,9100,9147,9251,9321,9379,9402,9507,9588,9640,9693,9739,9786,9832,9867,9890,9902,9913,9925,9937,10012,10088,10186|
172
+ |bup_data=8543,8601,8624,8729,8775,8822,8891,9042,9118,9135,9159,9240,9310,9350,9368,9397,9437,9495,9536,9553,9582,9623,9774,9844,10006,10018,10064,10134,10157,10180|
173
+ |brightdia_data=8648,8740,8787,8903,8950,9182,9205,9460,9646,9728,10111|
174
+ |bright_data=8531,8578,8636,8706,8810,8868,8915,8984,9089,9124,9228,9263,9275,9286,9298,9344,9391,9414,9443,9484,9530,9577,9600,9658,9681,9820,9855,9960,9971,9983,9995,10024,10053,10157|
175
+ |bfrzLeft_data=10192,10215|
176
+ |bfrzLdia_data=|
177
+ |bfrzDown_data=|
178
+ |bfrzSpace_data=|
179
+ |bfrzUp_data=|
180
+ |bfrzRdia_data=|
181
+ |bfrzRight_data=10192,10215|
182
+
183
+ |cleft_data=10738|
184
+ |eleft_data=10866|
185
+ |cdown_data=10610,10628|
186
+ |cup_data=10645|
187
+ |cright_data=10738|
188
+ |eright_data=10866|
189
+
190
+ |speed_data=3271,0.50,3294,1.00|
191
+
192
+ |keych_data=0,11L,1951,5,1955,11L,2810,5,2814,11L,3264,5,3275,11L,3287,11L,3293,5,3299,11L,3304,5,3307,11L,3310,5,5128,12,5134,5,5220,12,5224,5,5481,12,5485,5,5586,12,5589,5,5731,12,5737,5,5742,12,5748,5,5753,12,7153,7i,7157,12,8013,7i,8017,12,8500,7i,8503,12,8506,7i,8509,12,8512,7i,10329,11,10335,7i,10422,11L,10428,7i,10590,11,10594,11W,10598,11,10775,11W,10779,11L,10783,11W,10869,11L|
193
+
194
+ |oni2_data=1029,1077,1124,1171,1219,1266,1314,1361,1408,1456,1503,1550,1598,1645,1740,2829,3350,3635,3729,4108,4392,4487,5648|left2_data=248,437,816,864,3232,3410,3469,4132,4369,4440,4464,4511,5056,5506|leftdia2_data=627,650,698,1764,1811,1835,1882,2048,2214,2261,2320,2912,3220,3445,3540,4179,4392,4606,4629,4653,4677,4842,4914,4937,4961,4985,5008,5032,5387,5423,5612|down2_data=342,532,792,828,1953,2000,2016,2367,3196,3244,3398,3481,3540,3658,3682,3694,3706,3729,4144,4345,4381,4452,4523,4546,4570,4594,5079,5103,5127,5150,5174,5198,5221,5292,5328,5517|space2_data=721,745,1006,1053,1148,1195,1242,1258,1385,1432,1479,1527,1574,2119,2225,2308,3433,3457,3564,3587,3599,3611,3635,4191,4404,4606,5245,5375,5411,5482|up2_data=295,485,864,1085,1171,1274,1456,1562,1621,1637,1977,2032,2142,2202,2237,2261,2356,3208,3256,3386,3492,3516,4156,4357,4511,4535,4558,4582,5281,5316,5340,5435,5553,5577,5589|rightdia2_data=674,769,1069,1160,1444,1539,1653,1787,1858,1906,2119,2308,2900,3185,3421,4203,4617,4641,4665,4689,4854,5364,5399,5458,5494,5600|right2_data=390,579,840,1100,1183,1467,1550,2142,2190,2237,3374,3504,5269,5304,5340,5529|sleftdia2_data=1006,1053,1100,1148,1195,1242,1290,1337,2166,2332,2486,2711,2948,3042,3090,3339,3942,4085,4306,4487,4748,4866|sleft2_data=887,982,1385,1432,1479,1527,1574,1621,1716,1929,2095,2296,2498,2545,2687,2746,2806,2889,2983,3019,3114,3753,3777,3789,3824,3931,3990,4061,4250,4321,4700,4736,4760|sdown2_data=911,946,1314,1669,1692,2071,2285,2557,2600,2735,2770,2794,2853,2971,3031,3125,3315,3812,3836,3895,3978,4227,4321,4416,4724,4795,4819|sup2_data=935,958,2095,2474,2569,2585,3007,3848,3871,3883,4712,4807,4831|sright2_data=887,982,1290,1692,1835,2071,2285,2379,2395,2510,2758,2924,3137,3800,3919,3966,4073,4239,4314,4416,4700,4771|srightdia2_data=2411,2521,2782,2877,2995,3161,3279,3303,3327,3350,4014,4037,4274,4298,4748,4866,5624|foni2_data=|frzLeft2_data=|frzLdia2_data=|frzDown2_data=|frzSpace2_data=|frzUp2_data=|frzRdia2_data=|frzRight2_data=|sfrzLdia2_data=|sfrzLeft2_data=|sfrzDown2_data=2427,2450,2652,2669|sfrzUp2_data=4890,4985|sfrzRight2_data=2616,2634|sfrzRdia2_data=|speed2_change=|boost2_data=|color2_data=200,30,#00ffcc,200,31,#339999,200,34,#cc99ff,200,35,#9966ff|
195
+
196
+ |keyGroupOrder=11L,5,12,7i|
197
+
198
+ |word_data=
199
+ 575,2,[right]
200
+ 575,2,[fadein]
201
+ 575,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ff99">11Lkey</span></b>,
202
+ 3292,2,[fadeout],
203
+ 3312,2,[fadein]
204
+ 3312,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ffcc99">5key</span></b>,
205
+ 5733,2,[fadeout],
206
+ 5753,2,[fadein]
207
+ 5753,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffff">12key</span></b>,
208
+ 8492,2,[fadeout],
209
+ 8512,2,[fadein]
210
+ 8512,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ffff66">7ikey</span></b>,
211
+ 10578,2,[fadeout],
212
+ 10598,2,[fadein]
213
+ 10598,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffcc">11key</span></b>,
214
+ 10763,2,[fadeout],
215
+ 10783,2,[fadein]
216
+ 10783,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#9999ff">11Wkey</span></b>,
217
+ 10849,2,[fadeout],
218
+ 10869,2,[fadein]
219
+ 10869,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ff99">11Lkey</span></b>,
220
+ 10959,2,,
221
+ |
222
+ |wordA_data=
223
+ 575,2,[right]
224
+ 575,2,[fadein]
225
+ 575,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffcc">11key</span></b>,
226
+ 3292,2,[fadeout],
227
+ 3312,2,[fadein]
228
+ 3312,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ff99cc">5gkey</span></b>,
229
+ 5733,2,[fadeout],
230
+ 5753,2,[fadein]
231
+ 5753,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ffffff">12ikey</span></b>,
232
+ 8492,2,[fadeout],
233
+ 8512,2,[fadein]
234
+ 8512,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#ff9999">9vkey</span></b>,
235
+ 10578,2,[fadeout],
236
+ 10598,2,[fadein]
237
+ 10598,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ff99">11Lkey</span></b>,
238
+ 10763,2,[fadeout],
239
+ 10783,2,[fadein]
240
+ 10783,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#9999ff">11Wkey</span></b>,
241
+ 10849,2,[fadeout],
242
+ 10869,2,[fadein]
243
+ 10869,2,<br><b>   <span style="color:#ffffff">KeysForm</span>   <span style="color:#99ffcc">11key</span></b>,
244
+ 10959,2,,
245
+ |
246
+
247
+ |tuning=ティックル|
248
+ '>
249
+ <div id="canvas-frame">
250
+ </div>
251
+ <hr>
252
+ </td>
253
+ </tr>
254
+ </table>
255
+ </body>
256
+ </html>
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/01/20
7
+ * Revised : 2023/02/11
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 29.3.5`;
12
- const g_revisedDate = `2023/01/20`;
11
+ const g_version = `Ver 30.0.1`;
12
+ const g_revisedDate = `2023/02/11`;
13
13
  const g_alphaVersion = ``;
14
14
 
15
15
  // カスタム用バージョン (danoni_custom.js 等で指定可)
@@ -580,6 +580,17 @@ const openLink = _url => {
580
580
  }
581
581
  };
582
582
 
583
+ /**
584
+ * URLのフルパスを取得
585
+ * @param {string} _url
586
+ * @returns
587
+ */
588
+ const getFullPath = _url => {
589
+ const link = document.createElement(`a`);
590
+ link.href = _url;
591
+ return link.href;
592
+ };
593
+
583
594
  /**
584
595
  * プリロードするファイルの設定
585
596
  * @param {string} _as
@@ -645,7 +656,7 @@ const loadScript2 = (_url, _requiredFlg = true, _charset = `UTF-8`) => {
645
656
  };
646
657
  script.onerror = _err => {
647
658
  if (_requiredFlg) {
648
- makeWarningWindow(g_msgInfoObj.E_0041.split(`{0}`).join(_url.split(`?`)[0]));
659
+ makeWarningWindow(g_msgInfoObj.E_0041.split(`{0}`).join(getFullPath(baseUrl)));
649
660
  reject(_err);
650
661
  } else {
651
662
  resolve(script);
@@ -673,7 +684,7 @@ const importCssFile2 = _href => {
673
684
  resolve(link);
674
685
  };
675
686
  link.onerror = _ => {
676
- makeWarningWindow(g_msgInfoObj.E_0041.split(`{0}`).join(baseUrl), { resetFlg: `title` });
687
+ makeWarningWindow(g_msgInfoObj.E_0041.split(`{0}`).join(getFullPath(baseUrl)), { resetFlg: `title` });
677
688
  resolve(link);
678
689
  };
679
690
  document.head.appendChild(link);
@@ -2788,6 +2799,14 @@ const headerConvert = _dosObj => {
2788
2799
  obj.preloadImages = _dosObj.preloadImages.split(`,`).filter(image => hasVal(image)).map(preloadImage => preloadImage);
2789
2800
  }
2790
2801
 
2802
+ // 初期表示する部分キーの設定
2803
+ obj.keyGroupOrder = [];
2804
+ _dosObj.keyGroupOrder?.split(`$`).forEach((val, j) => {
2805
+ if (val !== ``) {
2806
+ obj.keyGroupOrder[j] = val.split(`,`);
2807
+ }
2808
+ });
2809
+
2791
2810
  // 最終演出表示有無(noneで無効化)
2792
2811
  obj.finishView = _dosObj.finishView ?? ``;
2793
2812
 
@@ -3374,6 +3393,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3374
3393
  const toFloat = _num => parseFloat(_num);
3375
3394
  const toStringOrNumber = _str => isNaN(Number(_str)) ? _str : toNumber(_str);
3376
3395
  const toSplitArray = _str => _str.split(`/`).map(n => toNumber(n));
3396
+ const toSplitArrayStr = _str => _str.split(`/`).map(n => n);
3377
3397
 
3378
3398
  /**
3379
3399
  * 新キー用複合パラメータ
@@ -3603,6 +3623,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3603
3623
  // シャッフルグループ (shuffleX_Y)
3604
3624
  newKeyTripleParam(newKey, `shuffle`);
3605
3625
 
3626
+ // キーグループ (keyGroupX_Y)
3627
+ newKeyMultiParam(newKey, `keyGroup`, toSplitArrayStr);
3628
+
3606
3629
  // スクロールパターン (scrollX_Y)
3607
3630
  // |scroll(newKey)=Cross::1,1,-1,-1,-1,1,1/Split::1,1,1,-1,-1,-1,-1$...|
3608
3631
  newKeyPairParam(newKey, `scroll`, `scrollDir`, `---`, 1);
@@ -4696,15 +4719,22 @@ const createOptionWindow = _sprite => {
4696
4719
  }
4697
4720
 
4698
4721
  const setReverse = _btn => {
4699
- g_settings.reverseNum = (g_settings.reverseNum + 1) % 2;
4700
- g_stateObj.reverse = g_settings.reverses[g_settings.reverseNum];
4701
- setReverseView(_btn);
4722
+ if (!g_settings.scrolls.includes(`Reverse`)) {
4723
+ g_settings.reverseNum = (g_settings.reverseNum + 1) % 2;
4724
+ g_stateObj.reverse = g_settings.reverses[g_settings.reverseNum];
4725
+ setReverseView(_btn);
4726
+ }
4702
4727
  };
4703
4728
 
4704
4729
  const setReverseView = _btn => {
4705
4730
  _btn.classList.replace(g_cssObj[`button_Rev${g_settings.reverses[(g_settings.reverseNum + 1) % 2]}`],
4706
4731
  g_cssObj[`button_Rev${g_settings.reverses[g_settings.reverseNum]}`]);
4707
- _btn.textContent = `${g_lblNameObj.Reverse}:${getStgDetailName(g_stateObj.reverse)}`;
4732
+ if (!g_settings.scrolls.includes(`Reverse`)) {
4733
+ _btn.textContent = `${g_lblNameObj.Reverse}:${getStgDetailName(g_stateObj.reverse)}`;
4734
+ } else {
4735
+ _btn.textContent = `X`;
4736
+ setReverseDefault();
4737
+ }
4708
4738
  };
4709
4739
 
4710
4740
  // ---------------------------------------------------
@@ -4974,6 +5004,7 @@ const createOptionWindow = _sprite => {
4974
5004
  if (isNotSameKey && g_keyObj.prevKey !== `Dummy`) {
4975
5005
  // キーパターン初期化
4976
5006
  g_keyObj.currentPtn = 0;
5007
+ g_keycons.keySwitchNum = 0;
4977
5008
  }
4978
5009
  const hasKeyStorage = localStorage.getItem(`danonicw-${g_keyObj.currentKey}k`);
4979
5010
  let storageObj, addKey = ``;
@@ -5097,6 +5128,10 @@ const createOptionWindow = _sprite => {
5097
5128
  spriteList[visibleScr].style.display = C_DIS_INHERIT;
5098
5129
  spriteList[hiddenScr].style.display = C_DIS_NONE;
5099
5130
  setSetting(0, visibleScr);
5131
+
5132
+ g_shortcutObj.option.KeyR.id = g_settings.scrolls.includes(`Reverse`) ?
5133
+ g_shortcutObj.option.KeyR.exId : g_shortcutObj.option.KeyR.dfId;
5134
+
5100
5135
  if (g_settings.scrolls.length > 1) {
5101
5136
  setReverseView(document.querySelector(`#btnReverse`));
5102
5137
  }
@@ -5280,11 +5315,18 @@ const getKeyReverse = (_localStorage, _extraKeyName = ``) => {
5280
5315
  g_stateObj.reverse = _localStorage[`reverse${_extraKeyName}`] ?? C_FLG_OFF;
5281
5316
  g_settings.reverseNum = roundZero(g_settings.reverses.findIndex(reverse => reverse === g_stateObj.reverse));
5282
5317
  } else {
5283
- g_stateObj.reverse = C_FLG_OFF;
5284
- g_settings.reverseNum = 0;
5318
+ setReverseDefault();
5285
5319
  }
5286
5320
  };
5287
5321
 
5322
+ /**
5323
+ * リバースのデフォルト化処理
5324
+ */
5325
+ const setReverseDefault = _ => {
5326
+ g_stateObj.reverse = C_FLG_OFF;
5327
+ g_settings.reverseNum = 0;
5328
+ };
5329
+
5288
5330
  /**
5289
5331
  * 保存済みキーコンフィグ取得処理
5290
5332
  * @param {object} _localStorage 保存先のローカルストレージ名
@@ -5547,8 +5589,7 @@ const createSettingsDisplayWindow = _sprite => {
5547
5589
 
5548
5590
  const dispAppearanceSlider = _ => {
5549
5591
  [`lblAppearancePos`, `lblAppearanceBar`, `lnkLockBtn`, `lnkfilterLine`].forEach(obj =>
5550
- document.getElementById(obj).style.visibility =
5551
- g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`
5592
+ $id(obj).visibility = g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`
5552
5593
  );
5553
5594
  };
5554
5595
  dispAppearanceSlider();
@@ -5651,6 +5692,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
5651
5692
  const maxLeftPos = Math.max(divideCnt, posMax - divideCnt - 2) / 2;
5652
5693
  const maxLeftX = Math.min(0, (kWidth - C_ARW_WIDTH) / 2 - maxLeftPos * g_keyObj.blank);
5653
5694
 
5695
+ g_keycons.cursorNumList = [...Array(keyNum).keys()].map(i => i);
5696
+ const configKeyGroupList = g_headerObj.keyGroupOrder[g_stateObj.scoreId] ?? tkObj.keyGroupList;
5697
+
5654
5698
  /**
5655
5699
  * keyconSpriteのスクロール位置調整
5656
5700
  * @param {number} _targetX
@@ -5775,6 +5819,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
5775
5819
  createCss2Button(`keycon${j}_${k}`, g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]], _ => {
5776
5820
  g_currentj = j;
5777
5821
  g_currentk = k;
5822
+ g_keycons.cursorNum = g_keycons.cursorNumList.findIndex(val => val === g_currentj);
5778
5823
  setKeyConfigCursor();
5779
5824
  }, {
5780
5825
  x: keyconX, y: 50 + C_KYC_REPHEIGHT * k + keyconY,
@@ -5952,21 +5997,6 @@ const keyConfigInit = (_kcType = g_kcType) => {
5952
5997
  makeGroupButton(`color`, { cssName: g_cssObj.keyconfig_ColorType });
5953
5998
  makeGroupButton(`shuffle`, { baseX: g_sWidth * 11 / 12 - 10, cssName: g_cssObj.settings_Shuffle });
5954
5999
 
5955
- /**
5956
- * 次のカーソルへ移動
5957
- * @param {number} _pos
5958
- */
5959
- const searchNextCursor = _pos => {
5960
- for (let j = g_currentj; j < keyNum + g_currentj; j++) {
5961
- if (g_keyObj[`keyCtrl${keyCtrlPtn}`][j % keyNum][_pos] !== undefined) {
5962
- g_currentj = j % keyNum;
5963
- g_currentk = _pos;
5964
- return true;
5965
- }
5966
- }
5967
- return false;
5968
- };
5969
-
5970
6000
  /**
5971
6001
  * カーソル位置の設定
5972
6002
  */
@@ -5988,25 +6018,19 @@ const keyConfigInit = (_kcType = g_kcType) => {
5988
6018
  };
5989
6019
 
5990
6020
  /**
5991
- * キーコンフィグ用カーソルのリセット
5992
- * @param {number} _resetPos
5993
- * @param {boolean} _resetCursorFlg
6021
+ * カーソル位置の変更
6022
+ * @param {number} _nextj
5994
6023
  */
5995
- const resetCursor = (_resetPos = 0, _resetCursorFlg = true) => {
5996
- g_prevKey = -1;
5997
- if (_resetCursorFlg) {
5998
- g_currentj = 0;
5999
- if (!searchNextCursor(_resetPos)) {
6000
- g_currentk = 0;
6001
- }
6002
- } else {
6003
- if (g_keyObj[`keyCtrl${keyCtrlPtn}`][g_currentj][_resetPos] === undefined) {
6004
- searchNextCursor(_resetPos);
6005
- } else {
6006
- g_currentk = _resetPos;
6007
- }
6024
+ const changeConfigCursor = (_nextj = ++g_keycons.cursorNum % g_keycons.cursorNumList.length) => {
6025
+ g_keycons.cursorNum = _nextj;
6026
+
6027
+ g_currentj = g_keycons.cursorNumList[_nextj];
6028
+ g_currentk = 0;
6029
+ if (g_kcType === `Replaced` && (g_keyObj[`keyCtrl${keyCtrlPtn}`][g_currentj][1] !== undefined)) {
6030
+ g_currentk = 1;
6008
6031
  }
6009
6032
  setKeyConfigCursor();
6033
+ keyconSprite.scrollLeft = - maxLeftX;
6010
6034
  };
6011
6035
 
6012
6036
  const getNextNum = (_scrollNum, _groupName, _target) => {
@@ -6020,10 +6044,51 @@ const keyConfigInit = (_kcType = g_kcType) => {
6020
6044
  */
6021
6045
  const setConfigType = (_scrollNum = 1) => {
6022
6046
  g_kcType = g_keycons.configTypes[getNextNum(_scrollNum, `configTypes`, g_kcType)];
6023
- resetCursor(Number(g_kcType === `Replaced`), _scrollNum === 0);
6047
+ changeConfigCursor(g_keycons.cursorNum);
6024
6048
  lnkKcType.textContent = getStgDetailName(g_kcType);
6025
6049
  };
6026
6050
 
6051
+ /**
6052
+ * 一部のキーコンフィグを表示する
6053
+ * (キーグループ毎にフィルターされたもののみを表示する)
6054
+ * @param {number} _num
6055
+ */
6056
+ const appearConfigSteps = _num => {
6057
+
6058
+ const appearConfigView = (_j, _display) => {
6059
+ $id(`arrow${_j}`).display = _display;
6060
+ $id(`arrowShadow${_j}`).display = _display;
6061
+ $id(`color${_j}`).display = _display;
6062
+ if (document.getElementById(`sArrow${_j}`) !== null) {
6063
+ $id(`sArrow${_j}`).display = _display;
6064
+ }
6065
+ const ctrlPtn = g_keyObj[`keyCtrl${g_headerObj.keyLabels[g_stateObj.scoreId]}_${g_keyObj.currentPtn}`][_j];
6066
+ for (let k = 0; k < ctrlPtn.length; k++) {
6067
+ $id(`keycon${_j}_${k}`).display = _display;
6068
+ }
6069
+ };
6070
+
6071
+ g_keycons.keySwitchNum = _num;
6072
+ g_keycons.cursorNumList = [];
6073
+ for (let j = 0; j < keyNum; j++) {
6074
+ appearConfigView(j, C_DIS_NONE);
6075
+
6076
+ if (tkObj.keyGroupMaps[j].includes(configKeyGroupList[_num])) {
6077
+ g_keycons.cursorNumList.push(j);
6078
+ appearConfigView(j, C_DIS_INHERIT);
6079
+ }
6080
+ }
6081
+ changeConfigCursor(0);
6082
+
6083
+ // keySwitchボタンを一旦非選択にして、選択中のものを再度色付け
6084
+ if (configKeyGroupList.length > 1) {
6085
+ for (let j = 0; j < configKeyGroupList.length; j++) {
6086
+ document.getElementById(`key${j}`).classList.replace(g_cssObj.button_Next, g_cssObj.button_Mini);
6087
+ }
6088
+ document.getElementById(`key${_num}`).classList.replace(g_cssObj.button_Mini, g_cssObj.button_Next);
6089
+ }
6090
+ };
6091
+
6027
6092
  /**
6028
6093
  * ColorPickerの色切替
6029
6094
  * @param {number} _j
@@ -6033,9 +6098,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
6033
6098
  const changeColorPicker = (_j, _type, _color) => {
6034
6099
  if (_color !== ``) {
6035
6100
  document.getElementById(`pick${_type}${_j}`).value = _color.slice(0, 7);
6036
- document.getElementById(`pick${_type}${_j}`).style.display = C_DIS_INHERIT;
6101
+ $id(`pick${_type}${_j}`).display = C_DIS_INHERIT;
6037
6102
  } else {
6038
- document.getElementById(`pick${_type}${_j}`).style.display = C_DIS_NONE;
6103
+ $id(`pick${_type}${_j}`).display = C_DIS_NONE;
6039
6104
  }
6040
6105
  };
6041
6106
 
@@ -6184,6 +6249,22 @@ const keyConfigInit = (_kcType = g_kcType) => {
6184
6249
  // ユーザカスタムイベント(初期)
6185
6250
  g_customJsObj.keyconfig.forEach(func => func());
6186
6251
 
6252
+ // 部分キー表示用ボタン描画
6253
+ if (configKeyGroupList.length > 1) {
6254
+ multiAppend(divRoot,
6255
+ createDivCss2Label(`lblkey`, `KeySwitch`, { x: g_sWidth - 80, y: 90, w: 60, h: 20, siz: 14 }));
6256
+ configKeyGroupList.forEach((val, j) => {
6257
+ divRoot.appendChild(
6258
+ createCss2Button(`key${j}`, `${j + 1}`, _ => {
6259
+ appearConfigSteps(j);
6260
+ }, { x: g_sWidth - 60, y: 110 + j * 20, w: 50, h: 20, siz: 14 }, g_cssObj.button_Mini),
6261
+ );
6262
+ });
6263
+ }
6264
+
6265
+ // カーソル位置の初期化
6266
+ appearConfigSteps(g_keycons.keySwitchNum);
6267
+
6187
6268
  // ラベル・ボタン描画
6188
6269
  multiAppend(divRoot,
6189
6270
 
@@ -6212,14 +6293,17 @@ const keyConfigInit = (_kcType = g_kcType) => {
6212
6293
  // キーコンフィグリセットボタン描画
6213
6294
  createCss2Button(`btnReset`, g_lblNameObj.b_reset, _ => {
6214
6295
  if (window.confirm(g_msgObj.keyResetConfirm)) {
6215
- for (let j = 0; j < keyNum; j++) {
6296
+ const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
6297
+
6298
+ for (let m = 0; m < g_keycons.cursorNumList.length; m++) {
6299
+ const j = g_keycons.cursorNumList[m];
6216
6300
  for (let k = 0; k < g_keyObj[`keyCtrl${keyCtrlPtn}`][j].length; k++) {
6217
6301
  g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k] = setIntVal(g_keyObj[`keyCtrl${keyCtrlPtn}d`][j][k]);
6218
6302
  document.querySelector(`#keycon${j}_${k}`).textContent = g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]];
6219
6303
  changeKeyConfigColor(j, k, g_keyObj.currentPtn === -1 ? g_cssObj.keyconfig_Defaultkey : g_cssObj.title_base);
6220
6304
  }
6221
6305
  }
6222
- resetCursor(Number(g_kcType === `Replaced`));
6306
+ changeConfigCursor(0);
6223
6307
  keyconSprite.scrollLeft = - maxLeftX;
6224
6308
  }
6225
6309
  }, g_lblPosObj.btnKcReset, g_cssObj.button_Reset),
@@ -6267,20 +6351,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
6267
6351
  g_currentk++;
6268
6352
  cursor.style.top = `${parseInt(cursor.style.top) + C_KYC_REPHEIGHT}px`;
6269
6353
 
6270
- } else if (g_currentj < keyNum - 1) {
6271
- // 他の代替キーが存在せず、次の矢印がある場合
6272
- g_currentj++;
6273
- g_currentk = 0;
6274
-
6275
- // 代替キーのみの場合は次の代替キーがあるキーを探す
6276
- if (g_kcType === `Replaced`) {
6277
- searchNextCursor(1);
6278
- }
6279
- setKeyConfigCursor();
6280
-
6281
6354
  } else {
6282
- // 全ての矢印・代替キーの巡回が終わった場合は元の位置に戻す
6283
- resetCursor(Number(g_kcType === `Replaced`));
6355
+ changeConfigCursor();
6284
6356
  }
6285
6357
  });
6286
6358
 
@@ -6308,8 +6380,13 @@ const getKeyInfo = _ => {
6308
6380
  const posMax = (g_keyObj[`divMax${keyCtrlPtn}`] !== undefined ?
6309
6381
  g_keyObj[`divMax${keyCtrlPtn}`] : g_keyObj[`pos${keyCtrlPtn}`][keyNum - 1] + 1);
6310
6382
  const divideCnt = g_keyObj[`div${keyCtrlPtn}`] - 1;
6383
+ const keyGroupMaps = setVal(g_keyObj[`keyGroup${keyCtrlPtn}`], [...Array(keyNum)].fill([0]), C_TYP_STRING);
6384
+ const keyGroupList = makeDedupliArray(keyGroupMaps.flat()).sort((a, b) => parseInt(a) - parseInt(b));
6311
6385
 
6312
- return { keyCtrlPtn: keyCtrlPtn, keyNum: keyNum, posMax: posMax, divideCnt: divideCnt };
6386
+ return {
6387
+ keyCtrlPtn: keyCtrlPtn, keyNum: keyNum, posMax: posMax, divideCnt: divideCnt,
6388
+ keyGroupMaps: keyGroupMaps, keyGroupList: keyGroupList,
6389
+ };
6313
6390
  };
6314
6391
 
6315
6392
  /**
@@ -6433,7 +6510,7 @@ const loadMusic = _ => {
6433
6510
  lblLoading.textContent = g_lblNameObj.pleaseWait;
6434
6511
  setAudio(blobUrl);
6435
6512
  } else {
6436
- makeWarningWindow(`${g_msgInfoObj.E_0032}<br>(${request.status} ${request.statusText})`, { backBtnUse: true });
6513
+ makeWarningWindow(`${g_msgInfoObj.E_0041.split('{0}').join(getFullPath(musicUrl))}<br>(${request.status} ${request.statusText})`, { backBtnUse: true });
6437
6514
  }
6438
6515
  });
6439
6516
 
@@ -7027,6 +7104,29 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7027
7104
  _dosObj[`${_header}${_type}_data`]
7028
7105
  ];
7029
7106
 
7107
+ /**
7108
+ * 歌詞表示、背景・マスクデータの優先順取得
7109
+ * @returns
7110
+ */
7111
+ const getPriorityHeader = _ => {
7112
+ const list = [];
7113
+ let type = ``;
7114
+ if (g_stateObj.scroll !== `---`) {
7115
+ type = `Alt`;
7116
+ } else if (g_stateObj.reverse === C_FLG_ON) {
7117
+ type = `Rev`;
7118
+ }
7119
+ if (hasVal(g_keyObj[`transKey${_keyCtrlPtn}`])) {
7120
+ list.push(`${type}A`);
7121
+ }
7122
+ if (type !== ``) {
7123
+ list.push(type);
7124
+ }
7125
+ list.push(``);
7126
+
7127
+ return list;
7128
+ };
7129
+
7030
7130
  /**
7031
7131
  * 歌詞データの分解
7032
7132
  * @param {string} _scoreNo
@@ -7036,11 +7136,9 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7036
7136
  let wordReverseFlg = false;
7037
7137
  const divideCnt = getKeyInfo().divideCnt;
7038
7138
  const addDataList = (_type = ``) => wordDataList.push(...getPriorityList(`word`, _type, _scoreNo));
7139
+ getPriorityHeader().forEach(val => addDataList(val));
7039
7140
 
7040
- if (g_stateObj.scroll !== `---`) {
7041
- addDataList(`Alt`);
7042
- } else if (g_stateObj.reverse === C_FLG_ON) {
7043
- addDataList(`Rev`);
7141
+ if (g_stateObj.reverse === C_FLG_ON) {
7044
7142
 
7045
7143
  // wordRev_dataが指定されている場合はそのままの位置を採用
7046
7144
  // word_dataのみ指定されている場合、下記ルールに従って設定
@@ -7053,7 +7151,6 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7053
7151
  }
7054
7152
  }
7055
7153
  }
7056
- addDataList();
7057
7154
 
7058
7155
  const inputWordData = wordDataList.find((v) => v !== undefined);
7059
7156
  return (inputWordData !== undefined ? makeSpriteWordData(inputWordData, wordReverseFlg) : [[], -1]);
@@ -7122,13 +7219,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7122
7219
  const makeBackgroundData = (_header, _scoreNo) => {
7123
7220
  const dataList = [];
7124
7221
  const addDataList = (_type = ``) => dataList.push(...getPriorityList(_header, _type, _scoreNo));
7125
-
7126
- if (g_stateObj.scroll !== `---`) {
7127
- addDataList(`Alt`);
7128
- } else if (g_stateObj.reverse === C_FLG_ON) {
7129
- addDataList(`Rev`);
7130
- }
7131
- addDataList();
7222
+ getPriorityHeader().forEach(val => addDataList(val));
7132
7223
 
7133
7224
  const data = dataList.find((v) => v !== undefined);
7134
7225
  return (data !== undefined ? makeSpriteData(data, calcFrame) : [[], -1]);
@@ -7226,6 +7317,17 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7226
7317
  });
7227
7318
  }
7228
7319
 
7320
+ // キー変化定義
7321
+ obj.keychFrames = [];
7322
+ if (hasVal(_dosObj[`keych${setScoreIdHeader(g_stateObj.scoreId, g_stateObj.scoreLockFlg)}_data`])) {
7323
+ const keychdata = _dosObj[`keych${setScoreIdHeader(g_stateObj.scoreId, g_stateObj.scoreLockFlg)}_data`]?.split(`,`);
7324
+ obj.keychFrames = keychdata.filter((val, j) => j % 2 === 0);
7325
+ obj.keychTarget = keychdata.filter((val, j) => j % 2 === 1);
7326
+ } else {
7327
+ obj.keychFrames = [0];
7328
+ obj.keychTarget = [0];
7329
+ }
7330
+
7229
7331
  return obj;
7230
7332
  };
7231
7333
 
@@ -7929,6 +8031,9 @@ const getArrowSettings = _ => {
7929
8031
  g_workObj.diffList = [];
7930
8032
  g_workObj.mainEndTime = 0;
7931
8033
 
8034
+ g_workObj.keyGroupMaps = tkObj.keyGroupMaps;
8035
+ g_workObj.keyGroupList = tkObj.keyGroupList;
8036
+
7932
8037
  const keyCtrlLen = g_workObj.keyCtrl.length;
7933
8038
  g_workObj.keyCtrlN = [...Array(keyCtrlLen)].map(_ => []);
7934
8039
  g_workObj.keyHitFlg = [...Array(keyCtrlLen)].map(_ => []);
@@ -8152,7 +8257,8 @@ const mainInit = _ => {
8152
8257
  const dummyFrzCnts = [...Array(keyNum)].fill(0);
8153
8258
  let speedCnts = 0;
8154
8259
  let boostCnts = 0;
8155
- const stepZoneDisp = (g_stateObj.d_stepzone === C_FLG_OFF || g_stateObj.scroll === `Flat`) ? C_DIS_NONE : C_DIS_INHERIT;
8260
+ let keychCnts = 0;
8261
+ const stepZoneDisp = (g_stateObj.d_stepzone === C_FLG_OFF || g_settings.scrollFlat.includes(g_stateObj.scroll)) ? C_DIS_NONE : C_DIS_INHERIT;
8156
8262
 
8157
8263
  for (let j = 0; j < keyNum; j++) {
8158
8264
  const colorPos = g_keyObj[`color${keyCtrlPtn}`][j];
@@ -8173,6 +8279,8 @@ const mainInit = _ => {
8173
8279
  );
8174
8280
  }
8175
8281
 
8282
+ appearStepZone(j, C_DIS_NONE);
8283
+
8176
8284
  // ステップゾーン
8177
8285
  multiAppend(stepRoot,
8178
8286
 
@@ -8193,14 +8301,17 @@ const mainInit = _ => {
8193
8301
 
8194
8302
  );
8195
8303
  }
8196
- if (g_stateObj.scroll === `Flat` && g_stateObj.d_stepzone === C_FLG_ON) {
8304
+ if (g_settings.scrollFlat.includes(g_stateObj.scroll) && g_stateObj.d_stepzone === C_FLG_ON) {
8305
+
8306
+ // スクロール名に`R-`が含まれていればリバースと見做す
8307
+ const reverseFlg = g_stateObj.reverse === C_FLG_ON || g_stateObj.scroll.startsWith(`R-`);
8197
8308
 
8198
8309
  // ステップゾーンの代わり
8199
8310
  const lineY = [(C_ARW_WIDTH - g_stateObj.flatStepHeight) / 2, (C_ARW_WIDTH + g_stateObj.flatStepHeight) / 2];
8200
8311
  lineY.forEach((y, j) => {
8201
8312
  mainSprite.appendChild(
8202
8313
  createColorObject2(`stepBar${j}`, {
8203
- x: 0, y: C_STEP_Y + g_posObj.reverseStepY * Number(g_stateObj.reverse === C_FLG_ON) + y,
8314
+ x: 0, y: C_STEP_Y + g_posObj.reverseStepY * Number(reverseFlg) + y,
8204
8315
  w: g_headerObj.playingWidth - 50, h: 1, styleName: `lifeBar`,
8205
8316
  }, g_cssObj.life_Failed)
8206
8317
  );
@@ -8935,7 +9046,7 @@ const mainInit = _ => {
8935
9046
  const boostCnt = currentArrow.boostCnt;
8936
9047
  currentArrow.prevY = currentArrow.y;
8937
9048
  currentArrow.y -= (g_workObj.currentSpeed * currentArrow.boostSpd + g_workObj.motionOnFrames[boostCnt] * currentArrow.boostDir) * currentArrow.dir;
8938
- document.getElementById(arrowName).style.top = `${currentArrow.y}px`;
9049
+ $id(arrowName).top = `${currentArrow.y}px`;
8939
9050
  currentArrow.boostCnt--;
8940
9051
  }
8941
9052
  judgeMotionFunc[`${_name}${g_stateObj.autoAll}`](_j, arrowName, --currentArrow.cnt);
@@ -9039,7 +9150,7 @@ const mainInit = _ => {
9039
9150
  // 移動
9040
9151
  if (g_workObj.currentSpeed !== 0) {
9041
9152
  currentFrz.y -= movY + g_workObj.motionOnFrames[currentFrz.boostCnt] * currentFrz.dir * currentFrz.boostDir;
9042
- document.getElementById(frzName).style.top = `${currentFrz.y}px`;
9153
+ $id(frzName).top = `${currentFrz.y}px`;
9043
9154
  currentFrz.boostCnt--;
9044
9155
  }
9045
9156
  currentFrz.cnt--;
@@ -9079,7 +9190,7 @@ const mainInit = _ => {
9079
9190
  currentFrz.frzBarLength -= g_workObj.currentSpeed;
9080
9191
  if (currentFrz.frzBarLength > 0) {
9081
9192
  currentFrz.y -= movY;
9082
- document.getElementById(frzName).style.top = `${currentFrz.y}px`;
9193
+ $id(frzName).top = `${currentFrz.y}px`;
9083
9194
  } else {
9084
9195
  judgeObjDelete[_name](_j, frzName);
9085
9196
  }
@@ -9166,6 +9277,14 @@ const mainInit = _ => {
9166
9277
 
9167
9278
  });
9168
9279
 
9280
+ // キー変化
9281
+ while (currentFrame >= g_scoreObj.keychFrames[keychCnts]) {
9282
+ for (let j = 0; j < keyNum; j++) {
9283
+ appearKeyTypes(j, g_scoreObj.keychTarget[keychCnts]);
9284
+ }
9285
+ keychCnts++;
9286
+ }
9287
+
9169
9288
  // ダミー矢印生成(背面に表示するため先に処理)
9170
9289
  if (g_workObj.mkDummyArrow[currentFrame] !== undefined) {
9171
9290
  g_workObj.mkDummyArrow[currentFrame].forEach(data =>
@@ -9393,6 +9512,25 @@ const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_
9393
9512
  }, _class);
9394
9513
  };
9395
9514
 
9515
+ /**
9516
+ * ステップゾーンの表示・非表示切替
9517
+ * @param {number} _j
9518
+ * @param {string} _display
9519
+ */
9520
+ const appearStepZone = (_j, _display) => $id(`stepRoot${_j}`).display = _display;
9521
+
9522
+ /**
9523
+ * 部分キーのステップゾーン出現処理
9524
+ * @param {number} _j
9525
+ * @param {string} _target
9526
+ */
9527
+ const appearKeyTypes = (_j, _target) => {
9528
+ appearStepZone(_j, C_DIS_NONE);
9529
+ if (g_workObj.keyGroupMaps[_j].includes(_target)) {
9530
+ appearStepZone(_j, C_DIS_INHERIT);
9531
+ }
9532
+ };
9533
+
9396
9534
  // TODO: この部分を矢印塗りつぶし部分についても適用できるように関数を見直し
9397
9535
 
9398
9536
  /**
@@ -9461,7 +9599,7 @@ const changeHitFrz = (_j, _k, _name) => {
9461
9599
 
9462
9600
  // フリーズアロー位置の修正(ステップゾーン上に来るように)
9463
9601
  const delFrzLength = parseFloat($id(`stepRoot${_j}`).top) - currentFrz.y;
9464
- document.getElementById(frzName).style.top = $id(`stepRoot${_j}`).top;
9602
+ $id(frzName).top = $id(`stepRoot${_j}`).top;
9465
9603
 
9466
9604
  // 早押ししたboostCnt分のフリーズアロー終端位置の修正
9467
9605
  const delFrzMotionLength = sumData(g_workObj.motionOnFrames.slice(0, currentFrz.boostCnt + 1));
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2023/01/20 (v29.3.5)
8
+ * Revised : 2023/02/11 (v30.0.1)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -754,6 +754,7 @@ const g_settings = {
754
754
 
755
755
  scrolls: [],
756
756
  scrollNum: 0,
757
+ scrollFlat: [`Flat`, `R-Flat`],
757
758
 
758
759
  shuffles: [C_FLG_OFF, `Mirror`, `Asym-Mirror`, `Random`, `Random+`, `S-Random`, `S-Random+`],
759
760
  shuffleNum: 0,
@@ -847,6 +848,10 @@ const g_keycons = {
847
848
  groupSelf: `S`,
848
849
 
849
850
  groups: [`color`, `shuffle`],
851
+
852
+ cursorNumList: [],
853
+ cursorNum: 0,
854
+ keySwitchNum: 0,
850
855
  };
851
856
 
852
857
  let g_displays = [`stepZone`, `judgment`, `fastSlow`, `lifeGauge`, `score`, `musicInfo`, `filterLine`,
@@ -1182,7 +1187,7 @@ const g_shortcutObj = {
1182
1187
  KeyM: { id: `lnkMotionR` },
1183
1188
  ArrowUp: { id: `lnkScrollL` },
1184
1189
  ArrowDown: { id: `lnkScrollR` },
1185
- KeyR: { id: `lnkReverseR` },
1190
+ KeyR: { id: `lnkReverseR`, dfId: `lnkReverseR`, exId: `btnReverse` },
1186
1191
 
1187
1192
  ShiftLeft_KeyS: { id: `lnkShuffleL` },
1188
1193
  KeyS: { id: `lnkShuffleR` },
@@ -2577,7 +2582,7 @@ g_keycons.groups.forEach(type => {
2577
2582
  const g_keyCopyLists = {
2578
2583
  simpleDef: [`blank`, `scale`],
2579
2584
  simple: [`div`, `divMax`, `blank`, `scale`, `keyRetry`, `keyTitleBack`, `transKey`, `scrollDir`, `assistPos`],
2580
- multiple: [`chara`, `color`, `stepRtn`, `pos`, `shuffle`],
2585
+ multiple: [`chara`, `color`, `stepRtn`, `pos`, `shuffle`, `keyGroup`],
2581
2586
  };
2582
2587
 
2583
2588
  // タイトル画面関連のリスト群
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "29.3.5",
3
+ "version": "30.0.1",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {