danoniplus 29.4.1 → 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/28
7
+ * Revised : 2023/02/11
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 29.4.1`;
12
- const g_revisedDate = `2023/01/28`;
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 等で指定可)
@@ -2799,6 +2799,14 @@ const headerConvert = _dosObj => {
2799
2799
  obj.preloadImages = _dosObj.preloadImages.split(`,`).filter(image => hasVal(image)).map(preloadImage => preloadImage);
2800
2800
  }
2801
2801
 
2802
+ // 初期表示する部分キーの設定
2803
+ obj.keyGroupOrder = [];
2804
+ _dosObj.keyGroupOrder?.split(`$`).forEach((val, j) => {
2805
+ if (val !== ``) {
2806
+ obj.keyGroupOrder[j] = val.split(`,`);
2807
+ }
2808
+ });
2809
+
2802
2810
  // 最終演出表示有無(noneで無効化)
2803
2811
  obj.finishView = _dosObj.finishView ?? ``;
2804
2812
 
@@ -3385,6 +3393,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3385
3393
  const toFloat = _num => parseFloat(_num);
3386
3394
  const toStringOrNumber = _str => isNaN(Number(_str)) ? _str : toNumber(_str);
3387
3395
  const toSplitArray = _str => _str.split(`/`).map(n => toNumber(n));
3396
+ const toSplitArrayStr = _str => _str.split(`/`).map(n => n);
3388
3397
 
3389
3398
  /**
3390
3399
  * 新キー用複合パラメータ
@@ -3614,6 +3623,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
3614
3623
  // シャッフルグループ (shuffleX_Y)
3615
3624
  newKeyTripleParam(newKey, `shuffle`);
3616
3625
 
3626
+ // キーグループ (keyGroupX_Y)
3627
+ newKeyMultiParam(newKey, `keyGroup`, toSplitArrayStr);
3628
+
3617
3629
  // スクロールパターン (scrollX_Y)
3618
3630
  // |scroll(newKey)=Cross::1,1,-1,-1,-1,1,1/Split::1,1,1,-1,-1,-1,-1$...|
3619
3631
  newKeyPairParam(newKey, `scroll`, `scrollDir`, `---`, 1);
@@ -4992,6 +5004,7 @@ const createOptionWindow = _sprite => {
4992
5004
  if (isNotSameKey && g_keyObj.prevKey !== `Dummy`) {
4993
5005
  // キーパターン初期化
4994
5006
  g_keyObj.currentPtn = 0;
5007
+ g_keycons.keySwitchNum = 0;
4995
5008
  }
4996
5009
  const hasKeyStorage = localStorage.getItem(`danonicw-${g_keyObj.currentKey}k`);
4997
5010
  let storageObj, addKey = ``;
@@ -5576,8 +5589,7 @@ const createSettingsDisplayWindow = _sprite => {
5576
5589
 
5577
5590
  const dispAppearanceSlider = _ => {
5578
5591
  [`lblAppearancePos`, `lblAppearanceBar`, `lnkLockBtn`, `lnkfilterLine`].forEach(obj =>
5579
- document.getElementById(obj).style.visibility =
5580
- g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`
5592
+ $id(obj).visibility = g_appearanceRanges.includes(g_stateObj.appearance) ? `Visible` : `Hidden`
5581
5593
  );
5582
5594
  };
5583
5595
  dispAppearanceSlider();
@@ -5680,6 +5692,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
5680
5692
  const maxLeftPos = Math.max(divideCnt, posMax - divideCnt - 2) / 2;
5681
5693
  const maxLeftX = Math.min(0, (kWidth - C_ARW_WIDTH) / 2 - maxLeftPos * g_keyObj.blank);
5682
5694
 
5695
+ g_keycons.cursorNumList = [...Array(keyNum).keys()].map(i => i);
5696
+ const configKeyGroupList = g_headerObj.keyGroupOrder[g_stateObj.scoreId] ?? tkObj.keyGroupList;
5697
+
5683
5698
  /**
5684
5699
  * keyconSpriteのスクロール位置調整
5685
5700
  * @param {number} _targetX
@@ -5804,6 +5819,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
5804
5819
  createCss2Button(`keycon${j}_${k}`, g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]], _ => {
5805
5820
  g_currentj = j;
5806
5821
  g_currentk = k;
5822
+ g_keycons.cursorNum = g_keycons.cursorNumList.findIndex(val => val === g_currentj);
5807
5823
  setKeyConfigCursor();
5808
5824
  }, {
5809
5825
  x: keyconX, y: 50 + C_KYC_REPHEIGHT * k + keyconY,
@@ -5981,21 +5997,6 @@ const keyConfigInit = (_kcType = g_kcType) => {
5981
5997
  makeGroupButton(`color`, { cssName: g_cssObj.keyconfig_ColorType });
5982
5998
  makeGroupButton(`shuffle`, { baseX: g_sWidth * 11 / 12 - 10, cssName: g_cssObj.settings_Shuffle });
5983
5999
 
5984
- /**
5985
- * 次のカーソルへ移動
5986
- * @param {number} _pos
5987
- */
5988
- const searchNextCursor = _pos => {
5989
- for (let j = g_currentj; j < keyNum + g_currentj; j++) {
5990
- if (g_keyObj[`keyCtrl${keyCtrlPtn}`][j % keyNum][_pos] !== undefined) {
5991
- g_currentj = j % keyNum;
5992
- g_currentk = _pos;
5993
- return true;
5994
- }
5995
- }
5996
- return false;
5997
- };
5998
-
5999
6000
  /**
6000
6001
  * カーソル位置の設定
6001
6002
  */
@@ -6017,25 +6018,19 @@ const keyConfigInit = (_kcType = g_kcType) => {
6017
6018
  };
6018
6019
 
6019
6020
  /**
6020
- * キーコンフィグ用カーソルのリセット
6021
- * @param {number} _resetPos
6022
- * @param {boolean} _resetCursorFlg
6021
+ * カーソル位置の変更
6022
+ * @param {number} _nextj
6023
6023
  */
6024
- const resetCursor = (_resetPos = 0, _resetCursorFlg = true) => {
6025
- g_prevKey = -1;
6026
- if (_resetCursorFlg) {
6027
- g_currentj = 0;
6028
- if (!searchNextCursor(_resetPos)) {
6029
- g_currentk = 0;
6030
- }
6031
- } else {
6032
- if (g_keyObj[`keyCtrl${keyCtrlPtn}`][g_currentj][_resetPos] === undefined) {
6033
- searchNextCursor(_resetPos);
6034
- } else {
6035
- g_currentk = _resetPos;
6036
- }
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;
6037
6031
  }
6038
6032
  setKeyConfigCursor();
6033
+ keyconSprite.scrollLeft = - maxLeftX;
6039
6034
  };
6040
6035
 
6041
6036
  const getNextNum = (_scrollNum, _groupName, _target) => {
@@ -6049,10 +6044,51 @@ const keyConfigInit = (_kcType = g_kcType) => {
6049
6044
  */
6050
6045
  const setConfigType = (_scrollNum = 1) => {
6051
6046
  g_kcType = g_keycons.configTypes[getNextNum(_scrollNum, `configTypes`, g_kcType)];
6052
- resetCursor(Number(g_kcType === `Replaced`), _scrollNum === 0);
6047
+ changeConfigCursor(g_keycons.cursorNum);
6053
6048
  lnkKcType.textContent = getStgDetailName(g_kcType);
6054
6049
  };
6055
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
+
6056
6092
  /**
6057
6093
  * ColorPickerの色切替
6058
6094
  * @param {number} _j
@@ -6062,9 +6098,9 @@ const keyConfigInit = (_kcType = g_kcType) => {
6062
6098
  const changeColorPicker = (_j, _type, _color) => {
6063
6099
  if (_color !== ``) {
6064
6100
  document.getElementById(`pick${_type}${_j}`).value = _color.slice(0, 7);
6065
- document.getElementById(`pick${_type}${_j}`).style.display = C_DIS_INHERIT;
6101
+ $id(`pick${_type}${_j}`).display = C_DIS_INHERIT;
6066
6102
  } else {
6067
- document.getElementById(`pick${_type}${_j}`).style.display = C_DIS_NONE;
6103
+ $id(`pick${_type}${_j}`).display = C_DIS_NONE;
6068
6104
  }
6069
6105
  };
6070
6106
 
@@ -6213,6 +6249,22 @@ const keyConfigInit = (_kcType = g_kcType) => {
6213
6249
  // ユーザカスタムイベント(初期)
6214
6250
  g_customJsObj.keyconfig.forEach(func => func());
6215
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
+
6216
6268
  // ラベル・ボタン描画
6217
6269
  multiAppend(divRoot,
6218
6270
 
@@ -6241,14 +6293,17 @@ const keyConfigInit = (_kcType = g_kcType) => {
6241
6293
  // キーコンフィグリセットボタン描画
6242
6294
  createCss2Button(`btnReset`, g_lblNameObj.b_reset, _ => {
6243
6295
  if (window.confirm(g_msgObj.keyResetConfirm)) {
6244
- 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];
6245
6300
  for (let k = 0; k < g_keyObj[`keyCtrl${keyCtrlPtn}`][j].length; k++) {
6246
6301
  g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k] = setIntVal(g_keyObj[`keyCtrl${keyCtrlPtn}d`][j][k]);
6247
6302
  document.querySelector(`#keycon${j}_${k}`).textContent = g_kCd[g_keyObj[`keyCtrl${keyCtrlPtn}`][j][k]];
6248
6303
  changeKeyConfigColor(j, k, g_keyObj.currentPtn === -1 ? g_cssObj.keyconfig_Defaultkey : g_cssObj.title_base);
6249
6304
  }
6250
6305
  }
6251
- resetCursor(Number(g_kcType === `Replaced`));
6306
+ changeConfigCursor(0);
6252
6307
  keyconSprite.scrollLeft = - maxLeftX;
6253
6308
  }
6254
6309
  }, g_lblPosObj.btnKcReset, g_cssObj.button_Reset),
@@ -6296,20 +6351,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
6296
6351
  g_currentk++;
6297
6352
  cursor.style.top = `${parseInt(cursor.style.top) + C_KYC_REPHEIGHT}px`;
6298
6353
 
6299
- } else if (g_currentj < keyNum - 1) {
6300
- // 他の代替キーが存在せず、次の矢印がある場合
6301
- g_currentj++;
6302
- g_currentk = 0;
6303
-
6304
- // 代替キーのみの場合は次の代替キーがあるキーを探す
6305
- if (g_kcType === `Replaced`) {
6306
- searchNextCursor(1);
6307
- }
6308
- setKeyConfigCursor();
6309
-
6310
6354
  } else {
6311
- // 全ての矢印・代替キーの巡回が終わった場合は元の位置に戻す
6312
- resetCursor(Number(g_kcType === `Replaced`));
6355
+ changeConfigCursor();
6313
6356
  }
6314
6357
  });
6315
6358
 
@@ -6337,8 +6380,13 @@ const getKeyInfo = _ => {
6337
6380
  const posMax = (g_keyObj[`divMax${keyCtrlPtn}`] !== undefined ?
6338
6381
  g_keyObj[`divMax${keyCtrlPtn}`] : g_keyObj[`pos${keyCtrlPtn}`][keyNum - 1] + 1);
6339
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));
6340
6385
 
6341
- 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
+ };
6342
6390
  };
6343
6391
 
6344
6392
  /**
@@ -7056,6 +7104,29 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7056
7104
  _dosObj[`${_header}${_type}_data`]
7057
7105
  ];
7058
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
+
7059
7130
  /**
7060
7131
  * 歌詞データの分解
7061
7132
  * @param {string} _scoreNo
@@ -7065,11 +7136,9 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7065
7136
  let wordReverseFlg = false;
7066
7137
  const divideCnt = getKeyInfo().divideCnt;
7067
7138
  const addDataList = (_type = ``) => wordDataList.push(...getPriorityList(`word`, _type, _scoreNo));
7139
+ getPriorityHeader().forEach(val => addDataList(val));
7068
7140
 
7069
- if (g_stateObj.scroll !== `---`) {
7070
- addDataList(`Alt`);
7071
- } else if (g_stateObj.reverse === C_FLG_ON) {
7072
- addDataList(`Rev`);
7141
+ if (g_stateObj.reverse === C_FLG_ON) {
7073
7142
 
7074
7143
  // wordRev_dataが指定されている場合はそのままの位置を採用
7075
7144
  // word_dataのみ指定されている場合、下記ルールに従って設定
@@ -7082,7 +7151,6 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7082
7151
  }
7083
7152
  }
7084
7153
  }
7085
- addDataList();
7086
7154
 
7087
7155
  const inputWordData = wordDataList.find((v) => v !== undefined);
7088
7156
  return (inputWordData !== undefined ? makeSpriteWordData(inputWordData, wordReverseFlg) : [[], -1]);
@@ -7151,13 +7219,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7151
7219
  const makeBackgroundData = (_header, _scoreNo) => {
7152
7220
  const dataList = [];
7153
7221
  const addDataList = (_type = ``) => dataList.push(...getPriorityList(_header, _type, _scoreNo));
7154
-
7155
- if (g_stateObj.scroll !== `---`) {
7156
- addDataList(`Alt`);
7157
- } else if (g_stateObj.reverse === C_FLG_ON) {
7158
- addDataList(`Rev`);
7159
- }
7160
- addDataList();
7222
+ getPriorityHeader().forEach(val => addDataList(val));
7161
7223
 
7162
7224
  const data = dataList.find((v) => v !== undefined);
7163
7225
  return (data !== undefined ? makeSpriteData(data, calcFrame) : [[], -1]);
@@ -7255,6 +7317,17 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
7255
7317
  });
7256
7318
  }
7257
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
+
7258
7331
  return obj;
7259
7332
  };
7260
7333
 
@@ -7958,6 +8031,9 @@ const getArrowSettings = _ => {
7958
8031
  g_workObj.diffList = [];
7959
8032
  g_workObj.mainEndTime = 0;
7960
8033
 
8034
+ g_workObj.keyGroupMaps = tkObj.keyGroupMaps;
8035
+ g_workObj.keyGroupList = tkObj.keyGroupList;
8036
+
7961
8037
  const keyCtrlLen = g_workObj.keyCtrl.length;
7962
8038
  g_workObj.keyCtrlN = [...Array(keyCtrlLen)].map(_ => []);
7963
8039
  g_workObj.keyHitFlg = [...Array(keyCtrlLen)].map(_ => []);
@@ -8181,7 +8257,8 @@ const mainInit = _ => {
8181
8257
  const dummyFrzCnts = [...Array(keyNum)].fill(0);
8182
8258
  let speedCnts = 0;
8183
8259
  let boostCnts = 0;
8184
- 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;
8185
8262
 
8186
8263
  for (let j = 0; j < keyNum; j++) {
8187
8264
  const colorPos = g_keyObj[`color${keyCtrlPtn}`][j];
@@ -8202,6 +8279,8 @@ const mainInit = _ => {
8202
8279
  );
8203
8280
  }
8204
8281
 
8282
+ appearStepZone(j, C_DIS_NONE);
8283
+
8205
8284
  // ステップゾーン
8206
8285
  multiAppend(stepRoot,
8207
8286
 
@@ -8222,14 +8301,17 @@ const mainInit = _ => {
8222
8301
 
8223
8302
  );
8224
8303
  }
8225
- 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-`);
8226
8308
 
8227
8309
  // ステップゾーンの代わり
8228
8310
  const lineY = [(C_ARW_WIDTH - g_stateObj.flatStepHeight) / 2, (C_ARW_WIDTH + g_stateObj.flatStepHeight) / 2];
8229
8311
  lineY.forEach((y, j) => {
8230
8312
  mainSprite.appendChild(
8231
8313
  createColorObject2(`stepBar${j}`, {
8232
- 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,
8233
8315
  w: g_headerObj.playingWidth - 50, h: 1, styleName: `lifeBar`,
8234
8316
  }, g_cssObj.life_Failed)
8235
8317
  );
@@ -8964,7 +9046,7 @@ const mainInit = _ => {
8964
9046
  const boostCnt = currentArrow.boostCnt;
8965
9047
  currentArrow.prevY = currentArrow.y;
8966
9048
  currentArrow.y -= (g_workObj.currentSpeed * currentArrow.boostSpd + g_workObj.motionOnFrames[boostCnt] * currentArrow.boostDir) * currentArrow.dir;
8967
- document.getElementById(arrowName).style.top = `${currentArrow.y}px`;
9049
+ $id(arrowName).top = `${currentArrow.y}px`;
8968
9050
  currentArrow.boostCnt--;
8969
9051
  }
8970
9052
  judgeMotionFunc[`${_name}${g_stateObj.autoAll}`](_j, arrowName, --currentArrow.cnt);
@@ -9068,7 +9150,7 @@ const mainInit = _ => {
9068
9150
  // 移動
9069
9151
  if (g_workObj.currentSpeed !== 0) {
9070
9152
  currentFrz.y -= movY + g_workObj.motionOnFrames[currentFrz.boostCnt] * currentFrz.dir * currentFrz.boostDir;
9071
- document.getElementById(frzName).style.top = `${currentFrz.y}px`;
9153
+ $id(frzName).top = `${currentFrz.y}px`;
9072
9154
  currentFrz.boostCnt--;
9073
9155
  }
9074
9156
  currentFrz.cnt--;
@@ -9108,7 +9190,7 @@ const mainInit = _ => {
9108
9190
  currentFrz.frzBarLength -= g_workObj.currentSpeed;
9109
9191
  if (currentFrz.frzBarLength > 0) {
9110
9192
  currentFrz.y -= movY;
9111
- document.getElementById(frzName).style.top = `${currentFrz.y}px`;
9193
+ $id(frzName).top = `${currentFrz.y}px`;
9112
9194
  } else {
9113
9195
  judgeObjDelete[_name](_j, frzName);
9114
9196
  }
@@ -9195,6 +9277,14 @@ const mainInit = _ => {
9195
9277
 
9196
9278
  });
9197
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
+
9198
9288
  // ダミー矢印生成(背面に表示するため先に処理)
9199
9289
  if (g_workObj.mkDummyArrow[currentFrame] !== undefined) {
9200
9290
  g_workObj.mkDummyArrow[currentFrame].forEach(data =>
@@ -9422,6 +9512,25 @@ const makeCounterSymbol = (_id, _x, _class, _heightPos, _text, _display = C_DIS_
9422
9512
  }, _class);
9423
9513
  };
9424
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
+
9425
9534
  // TODO: この部分を矢印塗りつぶし部分についても適用できるように関数を見直し
9426
9535
 
9427
9536
  /**
@@ -9490,7 +9599,7 @@ const changeHitFrz = (_j, _k, _name) => {
9490
9599
 
9491
9600
  // フリーズアロー位置の修正(ステップゾーン上に来るように)
9492
9601
  const delFrzLength = parseFloat($id(`stepRoot${_j}`).top) - currentFrz.y;
9493
- document.getElementById(frzName).style.top = $id(`stepRoot${_j}`).top;
9602
+ $id(frzName).top = $id(`stepRoot${_j}`).top;
9494
9603
 
9495
9604
  // 早押ししたboostCnt分のフリーズアロー終端位置の修正
9496
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/28 (v29.4.1)
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`,
@@ -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.4.1",
3
+ "version": "30.0.1",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {