View difference between Paste ID: TGdBkER4 and zbrnJR2X
SHOW: | | - or go back to the newest paste.
1
-- luacheck: globals Def GAMESTATE SCREENMAN
2
3
local DefaultMods = '1.5x, overhead'
4
5
-- format:  { <beat>, 'len' or 'end', <len or end time>, <mod string>, <player number (optional, if not here, applies to all players)> }
6
-- example: { 0, 'len', 9999, '*0.5 200% dizzy' }
7
local SongMods = {
8
{ 0, 'end', 1, '*10 100% flip' },
9
{ 1, 'end', 2, '*10 0% flip' },
10
{ 2, 'end', 3, '*10 100% flip' },
11
{ 3, 'end', 4, '*10 0% flip' },
12
{ 4, 'end', 5, '*10 100% flip' },
13
{ 5, 'end', 6, '*10 0% flip' },
14
{ 6, 'end', 7, '*10 100% flip' },
15
{ 7, 'end', 8, '*10 0% flip' },
16
{ 8, 'end', 9, '*10 100% flip' },
17
{ 9, 'end', 10, '*10 0% flip' },
18
{ 10, 'end', 11, '*10 100% flip' },
19
{ 11, 'end', 12, '*10 0% flip' },
20
{ 12, 'end', 13, '*10 100% flip' },
21
{ 13, 'end', 14, '*10 0% flip' },
22
{ 14, 'end', 15, '*10 100% flip' },
23
{ 15, 'end', 16, '*10 0% flip' },
24
{ 16, 'end', 17, '*10 100% flip' },
25
{ 17, 'end', 18, '*10 0% flip' },
26
{ 18, 'end', 19, '*10 100% flip' },
27
{ 19, 'end', 20, '*10 0% flip' },
28
{ 20, 'end', 21, '*10 100% flip' },
29
{ 21, 'end', 22, '*10 0% flip' },
30
{ 22, 'end', 23, '*10 100% flip' },
31
{ 23, 'end', 24, '*10 0% flip' },
32
	{ 24, 'end', 31, '*60 200% beat' },
33
	{ 30.5, 'end', 31.1, '*60000 0% beat' },
34
-- Post Flash
35
	{ 30.75, 'end', 31, '*200 -800% mini' },
36
{ 31, 'len', 1, '*245325313 15000% twirl' },
37
	{ 31.25, 'end', 33, '*50 0% mini' },
38
	{ 32, 'len', 1, '*24313 0% twirl' },
39
	{ 32.5, 'end', 32.6, '*554250 100% drunk' },
40
{ 33.5, 'len', 5, '*1 -75% drunk' },
41
{ 38.5, 'len', 0.5, '*8 50% split' },
42
{ 38.5, 'len', 7, '*1 75% drunk' },
43
{ 39, 'len', 0.5, '*8 0% split' },
44
{ 39.5, 'len', 0.5, '*8 -50% split' },
45
{ 39.5, 'len', 0.5, '*8 50% reverse' },
46
{ 40, 'len', 0.5, '*8 0% split' },
47
{ 40, 'len', 0.5, '*8 0% reverse' },
48
{ 46.5, 'len', 0.5, '*8 50% reverse' },
49
{ 46.5, 'len', 0.5, '*8 -50% split' },
50
{ 47, 'len', 0.5, '*8 0% reverse' },
51
{ 47, 'len', 0.5, '*8 0% split' },
52
{ 47.5, 'len', 0.5, '*8 50% split' },
53
{ 48, 'len', 0.5, '*8 0% split' },
54
{ 48, 'len', 7, '*1 75% drunk' },
55
{ 54.5, 'len', 0.5, '*8 50% split' },
56
{ 55, 'len', 0.5, '*8 0% split' },
57
{ 55, 'len', 3, '*1 -75% drunk' },
58
{ 55.5, 'len', 0.5, '*8 -50% split' },
59
{ 55.5, 'len', 0.5, '*8 50% reverse' },
60
{ 56, 'len', 0.5, '*8 0% split' },
61
{ 56, 'len', 0.5, '*8 0% reverse' },
62
-- First Intermission
63
	{ 64.5, 'end', 72.5, '*1 100% reverse' },
64
	{ 66.5, 'len', 0.5, '*8 800% twirl' },
65
	{ 67, 'len', 2, '*8 0% twirl' },
66
		{ 66.5, 'len', 0.5, '*16 600% drunk' },
67
	{ 67, 'len', 0.5, '*16 0% drunk' },
68
	{ 67, 'len', 5, '*0.5 -100% mini' },
69
	{ 68, 'end', 71.7, '*6 200% beat' },
70
	{ 71.7, 'end', 72.5, '*50 0% beat' },
71
			{ 72, 'len', 1, '*3 0% mini' },
72
	{ 72.5, 'end', 74.5, '*1 0% reverse' },
73
	{ 74.5, 'len', 0.5, '*8 800% twirl' },
74
	{ 75, 'len', 2, '*8 0% twirl' },
75
		{ 75, 'len', 5, '*0.5 100% mini' },
76
	{ 74.5, 'len', 0.5, '*16 1600% drunk' },
77
	{ 75, 'len', 2, '*16 0% drunk' },
78
	{ 76, 'end', 79.7, '*6 200% beat' },
79
	{ 79.7, 'end', 80.5, '*50 0% beat' },
80
		{ 80, 'len', 1, '*3 0% mini' },
81
	{ 80.5, 'end', 88.5, '*1 100% reverse' },
82
		{ 82.5, 'len', 0.5, '*8 800% twirl' },
83
	{ 83, 'len', 2, '*8 0% twirl' },
84
	{ 82.5, 'len', 0.5, '*16 600% drunk' },
85
	{ 83, 'len', 0.5, '*16 0% drunk' },
86
	{ 83, 'len', 5, '*0.5 -100% mini' },
87
	{ 84, 'end', 87.7, '*6 200% beat' },
88
	{ 87.7, 'end', 88.5, '*50 0% beat' },
89
		{ 88, 'len', 1, '*3 0% mini' },
90
	{ 88.5, 'end', 90.5, '*1 0% reverse' },
91
	{ 92, 'len', 1, '*245325313 1500% twirl' },
92
		{ 93, 'len', 10, '*12 0% twirl' },
93
	{ 97, 'end', 155, '*1 20% bumpy' },
94
{ 97, 'end', 155, '*0.1 150% distant' },
95
{ 128, 'end', 154, '*0.3 1500% twirl' },
96
{ 154, 'end', 160, '*2 0% distant' },
97
{ 166, 'len', 1, '*8 800% drunk' },
98
{ 167, 'len', 1, '*8 0% drunk' },
99
{ 167, 'len', 1, '*8 100% flip' },
100
{ 168, 'len', 1, '*8 0% flip' },
101
{ 174, 'len', 1, '*8 800% drunk' },
102
{ 175, 'len', 1, '*8 0% drunk' },
103
{ 175, 'len', 1, '*8 100% flip' },
104
{ 176, 'len', 1, '*8 0% flip' },
105
{ 182, 'len', 1, '*8 800% drunk' },
106
{ 183, 'len', 1, '*8 0% drunk' },
107
{ 183, 'len', 1, '*8 100% flip' },
108
{ 184, 'len', 1, '*8 0% flip' },
109
-- add flip code further down to work with the rest of the song
110
{ 192, 'end', 192.5, '*8 800% confusion' },
111
{ 192.5, 'end', 193, '*8 0% confusion' },
112
{ 193.5, 'end', 194, '*8 800% confusion' },
113
{ 194, 'end', 194.5, '*8 0% confusion' },
114
{ 195, 'end', 195.5, '*8 800% confusion' },
115
{ 195.5, 'end', 196, '*8 0% confusion' },
116
{ 196.5, 'end', 197, '*8 800% confusion' },
117
{ 197, 'end', 197.5, '*8 0% confusion' },
118
{ 198, 'len', 1, '*8 800% drunk' },
119
{ 199, 'len', 1, '*8 0% drunk' },
120
{ 199, 'len', 1, '*8 100% flip' },
121
{ 200, 'len', 1, '*8 0% flip' },
122
{ 200, 'end', 200.5, '*8 800% confusion' },
123
{ 200.5, 'end', 201, '*8 0% confusion' },
124
{ 201.5, 'end', 202, '*8 800% confusion' },
125
{ 202, 'end', 202.5, '*8 0% confusion' },
126
{ 203, 'end', 203.5, '*8 800% confusion' },
127
{ 203.5, 'end', 204, '*8 0% confusion' },
128
{ 204.5, 'end', 205, '*8 800% confusion' },
129
{ 205, 'end', 205.5, '*8 0% confusion' },
130
{ 206, 'len', 1, '*8 800% drunk' },
131
{ 207, 'len', 1, '*8 0% drunk' },
132
{ 207, 'len', 1, '*8 100% flip' },
133
{ 208, 'len', 1, '*8 0% flip' },
134
{ 208, 'len', 0.5, '*8 800% confusion' },
135
{ 208.5, 'len', 0.5, '*8 0% confusion' },
136
{ 209.5, 'end', 210, '*8 800% confusion' },
137
{ 210, 'end', 210.5, '*8 0% confusion' },
138
{ 211, 'end', 211.5, '*8 800% confusion' },
139
{ 211.5, 'end', 212, '*8 0% confusion' },
140
{ 212.5, 'end', 213, '*8 800% confusion' },
141
{ 213, 'end', 213.5, '*8 0% confusion' },
142
{ 214, 'len', 1, '*8 800% drunk' },
143
{ 215, 'len', 1, '*8 0% drunk' },
144
{ 215, 'len', 1, '*8 100% flip' },
145
{ 216, 'len', 1, '*8 0% flip' },
146
{ 216, 'len', 0.5, '*8 800% confusion' },
147
{ 216.5, 'len', 0.5, '*8 0% confusion' },
148
{ 217.5, 'len', 0.5, '*8 800% confusion' },
149
{ 218, 'len', 0.5, '*8 0% confusion' },
150
{ 219, 'len', 0.5, '*8 800% confusion' },
151
{ 219.5, 'len', 0.5, '*8 0% confusion' },
152
{ 220.5, 'len', 0.5, '*8 800% confusion' },
153
{ 221, 'len', 0.5, '*8 0% confusion' },
154
{ 221.5, 'len', 1, '*8 100% flip' },
155
{ 222, 'len', 1, '*8 0% flip' },
156
{ 222.5, 'len', 1, '*8 100% flip' },
157
{ 223, 'len', 1, '*8 0% flip' },
158
{ 224, 'end', 252, '*0.14 200% dizzy' },
159
{ 256, 'end', 284, '*0.28 -200% dizzy' },
160
{ 284, 'end', 320, '*1 50% bumpy' },
161
{ 284, 'end', 320, '*1 50% drunk' },
162
{ 320, 'end', 352, '*1 50% drunk' },
163
{ 320, 'end', 352, '*1 100% tipsy' },
164
{ 352, 'end', 380, '*1 100% wave' },
165
{ 352, 'end', 380, '*1 25% drunk' },
166
{ 352, 'end', 380, '*1 50% tipsy' },
167
{ 352, 'end', 380, '*2 8000% dizzy' },
168
{ 380, 'end', 385, '*40 0% dizzy' },
169
{ 380, 'end', 385, '*40 0% confusion' },
170
{ 384, 'end', 388, '*14324 75% drunk' },
171
{ 388, 'end', 392, '*14324 -75% drunk' },
172
{ 392, 'end', 396, '*14324 75% drunk' },
173
{ 396, 'end', 400, '*14324 -75% drunk' },
174
{ 400, 'end', 400.5, '*14324 75% drunk' },
175
{ 400.5, 'end', 401.5, '*14324 -75% drunk' },
176
{ 401.5, 'end', 402, '*14324 75% drunk' },
177
{ 402, 'end', 404, '*14324 -75% drunk' },
178
{ 404, 'end', 408, '*14324 75% drunk' },
179
{ 408, 'end', 412, '*14324 -75% drunk' },
180
{ 412, 'end', 414, '*14324 75% drunk' },
181
{ 414, 'end', 416, '*14324 -75% drunk' },
182
{ 420, 'end', 480, '*100 100% beat' },
183
-- Magnifier
184
{ 485, 'end', 544, '*0.15 -600% mini' },
185
{ 485, 'end', 544, '*0.04 0.75x' },
186
{ 485, 'len', 0.5, '*8 800% confusion' },
187
{ 485.5, 'len', 0.5, '*8 0% confusion' },
188
{ 487, 'len', 0.5, '*8 800% confusion' },
189
{ 487.5, 'len', 0.5, '*8 0% confusion' },
190
{ 489, 'len', 0.5, '*8 800% confusion' },
191
{ 489.5, 'len', 0.5, '*8 0% confusion' },
192
{ 491, 'len', 0.5, '*8 800% confusion' },
193
{ 491.5, 'len', 0.5, '*8 0% confusion' },
194
{ 493, 'len', 0.5, '*8 800% confusion' },
195
{ 493.5, 'len', 0.5, '*8 0% confusion' },
196
{ 495, 'len', 0.5, '*8 800% confusion' },
197
{ 495.5, 'len', 0.5, '*8 0% confusion' },
198
{ 497, 'len', 0.5, '*8 800% confusion' },
199
{ 497.5, 'len', 0.5, '*8 0% confusion' },
200
{ 499, 'len', 0.5, '*8 800% confusion' },
201
{ 499.5, 'len', 0.5, '*8 0% confusion' },
202
{ 501, 'len', 0.5, '*8 800% confusion' },
203
{ 501.5, 'len', 0.5, '*8 0% confusion' },
204
{ 503, 'len', 0.5, '*8 800% confusion' },
205
{ 503.5, 'len', 0.5, '*8 0% confusion' },
206
{ 505, 'len', 0.5, '*8 800% confusion' },
207
{ 505.5, 'len', 0.5, '*8 0% confusion' },
208
{ 507, 'len', 0.5, '*8 800% confusion' },
209
{ 507.5, 'len', 0.5, '*8 0% confusion' },
210
{ 509, 'len', 0.5, '*8 800% confusion' },
211
{ 509.5, 'len', 0.5, '*8 0% confusion' },
212
{ 511, 'len', 0.5, '*8 800% confusion' },
213
{ 511.5, 'len', 0.5, '*8 0% confusion' },
214
{ 513, 'len', 0.5, '*8 800% confusion' },
215
{ 513.5, 'len', 0.5, '*8 0% confusion' },
216
{ 515, 'len', 0.5, '*8 800% confusion' },
217
{ 515.5, 'len', 0.5, '*8 0% confusion' },
218
{ 517, 'len', 0.5, '*8 800% confusion' },
219
{ 517.5, 'len', 0.5, '*8 0% confusion' },
220
{ 519, 'len', 0.5, '*8 800% confusion' },
221
{ 519.5, 'len', 0.5, '*8 0% confusion' },
222
{ 521, 'len', 0.5, '*8 800% confusion' },
223
{ 521.5, 'len', 0.5, '*8 0% confusion' },
224
{ 523, 'len', 0.5, '*8 800% confusion' },
225
{ 523.5, 'len', 0.5, '*8 0% confusion' },
226
{ 525, 'len', 0.5, '*8 800% confusion' },
227
{ 525.5, 'len', 0.5, '*8 0% confusion' },
228
{ 527, 'len', 0.5, '*8 800% confusion' },
229
{ 527.5, 'len', 0.5, '*8 0% confusion' },
230
{ 529, 'len', 0.5, '*8 800% confusion' },
231
{ 529.5, 'len', 0.5, '*8 0% confusion' },
232
{ 531, 'len', 0.5, '*8 800% confusion' },
233
{ 531.5, 'len', 0.5, '*8 0% confusion' },
234
{ 533, 'len', 0.5, '*8 800% confusion' },
235
{ 533.5, 'len', 0.5, '*8 0% confusion' },
236
{ 535, 'len', 0.5, '*8 800% confusion' },
237
{ 535.5, 'len', 0.5, '*8 0% confusion' },
238
{ 537, 'len', 0.5, '*8 800% confusion' },
239
{ 537.5, 'len', 0.5, '*8 0% confusion' },
240
{ 539, 'len', 0.5, '*8 800% confusion' },
241
{ 539.5, 'len', 0.5, '*8 0% confusion' },
242
{ 541, 'len', 0.5, '*8 800% confusion' },
243
{ 541.5, 'len', 0.5, '*8 0% confusion' },
244
{ 543, 'len', 0.5, '*8 800% confusion' },
245
{ 543.5, 'len', 0.5, '*8 0% confusion' },
246
{ 516, 'end', 544, '*10 50% beat' },
247
{ 533, 'end', 544, '*0.3 -100% centered' },
248
{ 544, 'end', 548, '*2.5 0% mini' },
249
{ 554, 'len', 1, '*8 100% drunk' },
250
{ 555, 'len', 1, '*8 100% flip' },
251
{ 556, 'len', 1, '*8 0% flip' },
252
{ 556, 'len', 1, '*8 0% drunk' },
253
{ 562, 'len', 1, '*8 100% drunk' },
254
{ 563, 'len', 1, '*8 100% flip' },
255
{ 564, 'len', 1, '*8 0% flip' },
256
{ 564, 'len', 1, '*8 0% drunk' },
257
{ 570, 'len', 1, '*8 100% drunk' },
258
{ 571, 'len', 1, '*8 100% flip' },
259
{ 572, 'len', 1, '*8 0% flip' },
260
{ 572, 'len', 1, '*8 0% drunk' },
261
{ 577.5, 'len', 1, '*8 100% flip' },
262
{ 578, 'len', 1, '*8 0% flip' },
263
{ 578.5, 'len', 1, '*8 100% flip' },
264
{ 579, 'len', 1, '*8 0% flip' },
265
{ 584, 'end', 610, '*10 200% drunk' },
266
{ 610, 'end', 615, '*1 0% drunk' },
267
{ 622, 'end', 644, '*0.2 50% flip' },
268
{ 622, 'end', 644, '*5 0% tipsy' },
269
{ 622, 'end', 644, '*5 10% drunk' },
270
{ 622, 'end', 644, '*1 2.25x' },
271
{ 622, 'end', 644, '*1 100% wave' },
272
{ 644, 'end', 647, '*3 0% tipsy' },
273
{ 712, 'end', 728, '*50 50% drunk' },
274
{ 728, 'end', 744, '*0.02 100% confusion' },
275
{ 872.896, 'end', 873, '*1007640 200% tornado' },
276
{ 873, 'end', 900, '*0.25 0% tornado' },
277
}
278
279
280
-- format: { <beat>, <command> }
281
local LuaMods = {
282
  {0, 'EffectStop'},
283
  {0, 'RotPosReset'},
284
  {24, 'TwirlY'},
285
  {26, 'TwirlY'},
286
  {28, 'TwirlY'},
287
  {32.27, 'Whitey'},
288
  {32.27, 'PunchScreen'},
289
  {35, 'ScreenEffectStop'},
290
  {60, 'Jitter'},
291
  {64.5, 'ZoomPunch'},
292
  {68, 'Wag'},
293
  {72.5, 'ZoomPunch'},
294
  {72.5, 'EffectStop'},
295
  {76, 'Wag'},
296
  {80.5, 'EffectStop'},
297
  {80.5, 'ZoomPunch'},
298
  {84, 'Wag'},
299
  {88.5, 'ZoomPunch'},
300
    {88.5, 'EffectStop'},
301
  {92, 'Jitter'},
302
  {97, 'EffectStop'},
303
  {97, 'RotPosReset'},
304
  {97, 'Floater'},
305
  {97, 'WideWag'},
306
  {155, 'EffectStop'},
307
  {160, 'ZoomPawnch'},
308
  {160.4, 'Whitey'},
309
  {160.4, 'PunchScreen'},
310
  {162.4, 'ScreenEffectStop'},
311
  {160.4, 'EffectStop'},
312
  {161.5, 'ZoomPawnch'},
313
  {161.9, 'EffectStop'},
314
  {163, 'ZoomPawnch'},
315
{163.4, 'EffectStop'},
316
  {164.5, 'ZoomPawnch'},
317
{164.9, 'EffectStop'},
318
  {166, 'TinyPlay'},
319
  {169.5, 'ZoomPawnch'},
320
  {171, 'ZoomPawnch'},
321
  {172.5, 'ZoomPawnch'},
322
  {174, 'TinyPlay'},
323
  {177.5, 'ZoomPawnch'},
324
  {179, 'ZoomPawnch'},
325
  {180.5, 'ZoomPawnch'},
326
  {182, 'TinyPlay'},
327
    {185.5, 'ZoomPawnch'},
328
  {187, 'ZoomPawnch'},
329
  {188.5, 'ZoomPawnch'},
330
  {189.5, 'ZoomPawnch'},
331
  {190, 'ZoomPawnch'},
332
{190.5, 'ZoomPawnch'},
333
{191, 'ZoomPawnch'},
334
{192, 'ZoomPawnchRight'},
335
{193.5, 'ZoomPawnchLeft'},
336
{195, 'ZoomPawnchRight'},
337
{196.5, 'ZoomPawnchLeft'},
338
{198, 'TinyPlay'},
339
{201.5, 'ZoomPawnchRight'},
340
{203, 'ZoomPawnchLeft'},
341
{204.5, 'ZoomPawnchRight'},
342
{206, 'TinyPlay'},
343
{209.5, 'ZoomPawnchLeft'},
344
{211, 'ZoomPawnchRight'},
345
{212.5, 'ZoomPawnchLeft'},
346
{214, 'TinyPlay'},
347
{217.5, 'ZoomPawnchRight'},
348
{219, 'ZoomPawnchLeft'},	
349
{220.5, 'TinyPlay'},
350
{224, 'PunchScreen'},
351
{224, 'ScreenEffectStop'},
352
{224, 'JitterTiny'},
353
  {224, 'Whitey'},
354
  {224, 'PunchScreen'},
355
  {226, 'ScreenEffectStop'},
356
  {224, 'EffectStop'},
357
{228, 'JitterTiny'},
358
{232, 'JitterTiny'},
359
{236, 'JitterTiny'},
360
{240, 'JitterTiny'},
361
{244, 'JitterTiny'},
362
{248, 'JitterTiny'},
363
{256, 'JitterTiny'},
364
{260, 'JitterTiny'},
365
{264, 'JitterTiny'},
366
{268, 'JitterTiny'},
367
{272, 'JitterTiny'},
368
{276, 'JitterTiny'},
369
{280, 'JitterTiny'},
370
{284, 'Jitter'},
371
{380, 'Jitter'},
372
  {384, 'Whitey'},
373
  {384, 'PunchScreen'},
374
  {386, 'ScreenEffectStop'},
375
  {384, 'EffectStop'},
376
{388, 'ZoomPawnch'},
377
{392, 'ZoomPawnch'},
378
{396, 'ZoomPawnch'},
379
{400, 'ZoomPawnch'},
380
{400.5, 'ZoomPawnch'},
381
{401.5, 'ZoomPawnch'},
382
{402, 'ZoomPawnch'},
383
{403, 'RotPosReset'},
384
{404, 'ZoomPawnchSpin'},
385
{408, 'ZoomPawnchBack'},
386
{412, 'ZoomPawnchSpin'},
387
{413.5, 'ZoomPawnchBack'},
388
{415, 'ZoomPawnchSpin'},
389
{416.5, 'ZoomPawnchBack'},
390
{418, 'JitterShort'},
391
{480, 'Jitter'},
392
  {483.812, 'Whitey'},
393
  {483.812, 'PunchScreen'},
394
  {485.812, 'ScreenEffectStop'},
395
  {483.812, 'EffectStop'},
396
    {548, 'ZoomPawnch'},
397
  {549.5, 'ZoomPawnch'},
398
  {551, 'ZoomPawnch'},
399
  {552.5, 'ZoomPawnch'},
400
  {554, 'TinyPlay'},
401
{557.5, 'ZoomPawnch'},
402
{559, 'ZoomPawnch'},
403
{560.5, 'ZoomPawnch'},
404
{562, 'TinyPlay'},
405
{565.5, 'ZoomPawnch'},
406
{567, 'ZoomPawnch'},
407
{568.5, 'ZoomPawnch'},
408
{570, 'TinyPlay'},
409
{573.5, 'ZoomPawnch'},
410
{575, 'ZoomPawnch'},
411
{576.5, 'ZoomPawnch'},
412
{577.5, 'ZoomPawnch'},
413
{578, 'ZoomPawnch'},
414
{578.5, 'ZoomPawnch'},
415
{579, 'ZoomPawnch'},
416
{584, 'InPitch'},
417
{584, 'RotPosReset'},
418
{644, 'Jitter'},
419
  {709, 'RotPosReset'},
420
    {709, 'EffectStop'},
421
  {710, 'Fuckingwork'},
422
  {712, 'SplitField'},
423
    {712, 'Whitey'},
424
        {744, 'WagSL'},
425
{760, 'EffectStop'},
426
{760, 'FinalReset'},
427
{760.001, 'TripleShift'},
428
  {776, 'SplitField'},
429
  {776, 'SplitFieldPart2'},
430-
    {776, 'FinalSpin'},
430+
  {776, 'SplitFieldPart3'},
431-
        {776, 'FuckingTaro'},
431+
    {776, 'FinalSpin1'},
432
	{776, 'FinalSpin2'},
433
	{776, 'FinalSpin3'},
434
  {872.896, 'Whitey'},
435
  {872.896, 'PunchScreen'},
436
  {874.896, 'ScreenEffectStop'},
437
  {872.896, 'EffectStop'},
438
}
439
440
-- helper function to convert beats -> seconds
441
local function TimeInBeats(beats)
442
  return 60 / 147 * beats
443
end
444
445
-- player for keeping tables for EZ access
446
local Players = {}
447-
  -- example commandd
447+
448
local t = Def.ActorFrame {
449-
    Def.ActorProxy {
449+
  -- example commandd	
450-
        SplitFieldCommand=function(self)    
450+
	Def.ActorFrame {
451-
            if SCREENMAN:GetTopScreen():GetName() == "ScreenEdit" then
451+
		FinalSpin1Command = function (self)
452-
                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("")[5]);
452+
		    Players[1]
453-
            else
453+
			:visible(0)
454-
                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("PlayerP1"));
454+
455-
            end;
455+
			self
456-
            self:xy(0,330);	
456+
			:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y);
457-
            self:rotationz(-180);
457+
		    :rotationz((360/3)*1);
458-
            self:rotationy(-180);
458+
		    :spin();
459-
            self:diffusealpha(0.1);
459+
		
460-
            self:linear(5)
460+
			Players[1]
461-
        end;
461+
			:sleep(6);
462-
    };
462+
			:visible(1)
463
		end,
464-
    Def.ActorProxy {
464+
	    Def.ActorProxy {
465-
        SplitFieldPart2Command=function(self)    
465+
	        SplitFieldCommand=function(self)    
466-
            if SCREENMAN:GetTopScreen():GetName() == "ScreenEdit" then
466+
	            if SCREENMAN:GetTopScreen():GetName() == "ScreenEdit" then
467-
                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("")[5]);
467+
	                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("")[5]);
468-
            else
468+
	            else
469-
                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("PlayerP1"));
469+
	                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("PlayerP1"));
470-
            end;
470+
				end;
471-
            self:xy(650,640);	
471+
				self
472-
            self:rotationz(-135);
472+
				:x(-SCREEN_RIGHT/2)
473-
            self:rotationy(0);
473+
				:y(60);
474-
            object1=self
474+
	        end;
475-
        end;
475+
	    };
476-
    };
476+
	};
477
    
478
    Def.ActorFrame {
479
		FinalSpin2Command = function (self)
480
			self
481
			:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y);
482
		    :rotationz((360/3)*2);
483
		    :spin();
484
		end,
485
	    Def.ActorProxy {
486
	        SplitFieldCommand=function(self)    
487
	            if SCREENMAN:GetTopScreen():GetName() == "ScreenEdit" then
488
	                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("")[5]);
489
	            else
490
	                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("PlayerP1"));
491
				end;
492
				self
493
				:x(-SCREEN_RIGHT/2)
494
				:y(60);
495
	        end;
496
	    };
497
	};
498
499
	Def.ActorFrame {
500
		FinalSpin3Command = function (self)
501
			self
502
			:xy(SCREEN_CENTER_X,SCREEN_CENTER_Y);
503
		    :rotationz((360/3)*3);
504
		    :spin();
505
		end,
506
	    Def.ActorProxy {
507
	        SplitFieldCommand=function(self)    
508
	            if SCREENMAN:GetTopScreen():GetName() == "ScreenEdit" then
509
	                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("")[5]);
510
	            else
511
	                self:SetTarget(SCREENMAN:GetTopScreen():GetChild("PlayerP1"));
512
				end;
513
				self
514-
 FinalSpinCommand = function (self)
514+
				:x(-SCREEN_RIGHT/2)
515
				:y(60);
516
	        end;
517
	    };
518
	};
519
520
521
  Def.ActorFrame{
522
	PunchScreenCommand=function(self)
523
		-- get the current Screen object using SCREENMAN
524
		local screen = SCREENMAN:GetTopScreen()
525
	:vibrate()
526
    :effectperiod(0.5)
527
    :effectmagnitude(10,0,5)
528
	end
529
},
530
531
  Def.ActorFrame{
532
	ScreenEffectStopCommand=function(self)
533
		-- get the current Screen object using SCREENMAN
534
		local screen = SCREENMAN:GetTopScreen()
535
	:stopeffect()
536
	end
537
},
538
  
539
  	Def.Quad{
540
		Name="WhiteQuad",
541
		WhiteyCommand=function(self)
542
			self:zoomto(100,100):diffuse(Color.White)
543
			:diffusealpha(1)
544
			:zoom(100095)
545
			:linear(0.5)
546
			:diffusealpha(0)
547
		end
548
	},
549
  
550
    SomeEffectCommand = function (self)
551
    Players[1]
552
    :wag()
553
    :effectperiod(0.5)
554
    :effectmagnitude(0,0,15)
555
  end,
556
557
 TripleShiftCommand = function (self)
558
    Players[1]
559
	:smooth(TimeInBeats(10))
560
    :x(250)
561
    :y(350)
562
    :rotationz(45)
563
    :zoom(1)
564
  end,
565
566
 RotPosResetCommand = function (self)
567
    Players[1]
568
	:decelerate(TimeInBeats(0))
569
	:zoom(1)
570
	:rotationx(0)
571
	:rotationy(0)
572
	:rotationz(0)
573
	:y(SCREEN_CENTER_Y)
574
	:x(325)
575
  end,
576
  
577
  FinalResetCommand = function (self)
578
    Players[1]
579
	:decelerate(TimeInBeats(0))
580
	:zoom(1)
581
	:rotationx(0)
582
	:rotationy(0)
583
	:rotationz(0)
584
    :x(SCREEN_CENTER_X)
585
    :y(325)
586
  end,
587
  
588
  QuadFlashWhiteCommand = function (self)
589
    Players[1]
590
	:y(SCREEN_CENTER_Y)
591
	:x(SCREEN_CENTER_X)
592
  end,
593
  
594
  FuckingworkCommand = function (self)
595
    Players[1]
596
    :smooth(TimeInBeats(1.5))
597
    :x(SCREEN_CENTER_X)
598
    :y(325)
599
    :sleep(TimeInBeats(0.5))
600
  end,
601
  
602
    WagSLCommand = function (self)
603
    Players[1]
604
    :wag()
605
    :effectperiod(1.75)
606
    :effectmagnitude(0,0,15)
607
  end,
608
  
609
  WagCommand = function (self)
610
    Players[1]
611
    :wag()
612
    :effectperiod(0.5)
613
    :effectmagnitude(0,0,15)
614
    :x(325)
615
	:y(SCREEN_CENTER_Y)
616
          :accelerate(TimeInBeats(0.25))
617
	  :addx(50)
618
	  :accelerate(TimeInBeats(0.5))
619
	  :addx(-100)
620
	  :accelerate(TimeInBeats(0.5))
621
	  :addx(100)
622
	  :accelerate(TimeInBeats(0.5))
623
	  :addx(-100)
624
	  :accelerate(TimeInBeats(0.5))
625
	  :addx(100)
626
	  :accelerate(TimeInBeats(0.5))
627
	  :addx(-100)
628
	  :accelerate(TimeInBeats(0.5))
629
	  :x(325)
630
	  :y(SCREEN_CENTER_Y)
631
	  :rotationx(0)
632
	:rotationy(0)
633
	:rotationz(0)
634
  end,
635
  
636
   WideWagCommand = function (self)
637
    Players[1]
638
    :wag()
639
    :effectperiod(4)
640
    :effectmagnitude(0,0,10)
641
    :x(325)
642
  end,
643
  
644
  InPitchCommand = function (self)
645
    Players[1]
646
    :smooth(2.5)
647
	:rotationz(90)
648
    :x(325)
649
    :sleep(0)
650
    :smooth(3)
651
    :rotationz(-90)
652
    :sleep(0)
653
    :smooth(3)
654
    :rotationz(90)
655
    :sleep(0)
656
    :smooth(1)
657
    :rotationz(0)
658
  end,
659
  
660
   EffectStopCommand = function (self)
661
    Players[1]
662
    :stopeffect()
663
  end,
664
  
665
 ZoomPawnchSpinCommand = function (self)
666
    Players[1]
667
	:decelerate(TimeInBeats(0.2))
668
	:zoom(2)
669
	:addy(100)
670
	:rotationx(20)
671
	:rotationz(180)
672
	:rotationy(180)
673
	:accelerate(TimeInBeats(0.2))
674
	:zoom(1)
675
	:rotationx(0)
676
	:y(SCREEN_CENTER_Y)
677
  end,
678
  
679
   ZoomPawnchBackCommand = function (self)
680
    Players[1]
681
	:decelerate(TimeInBeats(0.2))
682
	:zoom(2)
683
	:addy(100)
684
	:rotationx(0)
685
	:rotationz(0)
686
	:rotationy(0)
687
	:accelerate(TimeInBeats(0.2))
688
	:zoom(1)
689
	:rotationx(0)
690
	:y(SCREEN_CENTER_Y)
691
  end,
692
  
693
  TwirlYCommand = function (self)
694
    Players[1]
695
      :rotationy(0)
696
	:x(325)
697
      :linear(TimeInBeats(0.667336))
698
      :addrotationy(360)
699
  end,
700
  
701
  HoverCommand = function (self)
702
    Players[1]
703
	  :x(325)
704
	  :y(SCREEN_CENTER_Y)
705
      :smooth(TimeInBeats(4))
706
	  :addy(10)
707
	  :smooth(TimeInBeats(4))
708
	  :x(325)
709
	  :y(SCREEN_CENTER_Y)
710
  end,
711
712
  SpinCommand = function (self)
713
    Players[1]
714
	  :x(325)
715
	  :y(SCREEN_CENTER_Y)
716
          :accelerate(TimeInBeats(0.25))
717
	  :addx(50)
718
	  :accelerate(TimeInBeats(0.5))
719
	  :addx(-100)
720
	  :accelerate(TimeInBeats(0.5))
721
	  :addx(100)
722
	  :accelerate(TimeInBeats(0.5))
723
	  :addx(-100)
724
	  :accelerate(TimeInBeats(0.5))
725
	  :addx(100)
726
	  :accelerate(TimeInBeats(0.5))
727
	  :addx(-100)
728
	  :accelerate(TimeInBeats(0.5))
729
	  :x(325)
730
	  :y(SCREEN_CENTER_Y)
731
  end,
732
  
733
    ZoomPunchCommand = function (self)
734
    Players[1]
735
    :rotationx(0)
736
	:decelerate(TimeInBeats(0.5))
737
	:zoom(2)
738
	:addy(100)
739
	:sleep(TimeInBeats(0.5))
740
	:decelerate(TimeInBeats(0.5))
741
	:zoom(1)
742
	:y(SCREEN_CENTER_Y)
743
	:decelerate(TimeInBeats(0))
744
	:rotationy(180)
745
	:decelerate(TimeInBeats(0.5))
746
	:rotationy(0)
747
	:rotationx(0)
748
	:rotationz(0)
749
  end,
750
751
  TinyPlayCommand = function (self)
752
    Players[1]
753
	:decelerate(TimeInBeats(0.5))
754
	:zoom(2)
755
	:addy(-100)
756
	:addrotationz(180)
757
	:addrotationy(180)
758
	:sleep(TimeInBeats(1))
759
	:decelerate(TimeInBeats(0.5))
760
	:zoom(1)
761
	:y(SCREEN_CENTER_Y)
762
	:rotationz(0)
763
	:rotationy(0)
764
  end,
765
766
  ZoomPawnchCommand = function (self)
767
    Players[1]
768
	:decelerate(TimeInBeats(0.2))
769
	:zoom(2)
770
	:addy(100)
771
	:addrotationx(20)
772
	:accelerate(TimeInBeats(0.2))
773
	:zoom(1)
774
	:rotationx(0)
775
	:y(SCREEN_CENTER_Y)
776
  end,
777
  
778
	ZoomPawnchRightCommand = function (self)
779
    Players[1]
780
	:decelerate(TimeInBeats(0.2))
781
	:zoom(2)
782
	:addy(100)
783
	:addrotationx(20)
784
	:addrotationz(20)
785
	:accelerate(TimeInBeats(0.2))
786
	:zoom(1)
787
	:rotationx(0)
788
	:rotationz(0)
789
	:y(SCREEN_CENTER_Y)
790
  end,
791
  
792
  	ZoomPawnchLeftCommand = function (self)
793
    Players[1]
794
	:decelerate(TimeInBeats(0.2))
795
	:zoom(2)
796
	:addy(100)
797
	:addrotationx(20)
798
	:addrotationz(-20)
799
	:accelerate(TimeInBeats(0.2))
800
	:zoom(1)
801
	:rotationx(0)
802
	:rotationz(0)
803
	:y(SCREEN_CENTER_Y)
804
  end,
805
  
806
  FloaterCommand = function (self)
807
    Players[1]
808
	:rotationz(0)
809
	:rotationx(0)
810
	:rotationy(0)
811
	:linear(TimeInBeats(46))
812
    :addrotationx(-20)
813
    :addrotationz(15)
814
    :zoom(2)
815
	:decelerate(TimeInBeats(0.5))
816
	:rotationx(0)
817
	:rotationz(0)
818
	:zoom(1)
819
  end,
820
  
821
  ZoomOutCommand = function (self)
822
    Players[1]:accelerate(TimeInBeats(23.5)):zoom(0):sleep(TimeInBeats(0.5)):zoom(1)
823
  end,
824
825
  JitterCommand = function (self)
826
    Players[1]
827
	  :x(325)
828
	  :y(SCREEN_CENTER_Y)
829
      :accelerate(TimeInBeats(0.1125))
830
	  :addx(100)
831
	  :accelerate(TimeInBeats(0.1125))
832
	  :addx(-200)
833
	  :accelerate(TimeInBeats(0.1125))
834
	  :addx(200)
835
	  :accelerate(TimeInBeats(0.1125))
836
	  :addx(-200)
837
	  :accelerate(TimeInBeats(0.1125))
838
	  :addx(200)
839
	  :accelerate(TimeInBeats(0.1125))
840
	  :addx(-200)
841
	  :accelerate(TimeInBeats(0.1125))
842
	  :addx(200)
843
	  :accelerate(TimeInBeats(0.1125))
844
	  :addx(-200)
845
	  :accelerate(TimeInBeats(0.1125))
846
	  :addx(200)
847
	  :accelerate(TimeInBeats(0.1125))
848
	  :addx(-200)
849
	  :accelerate(TimeInBeats(0.1125))
850
	  :addx(200)
851
	  :accelerate(TimeInBeats(0.1125))
852
	  :addx(-200)
853
	  :accelerate(TimeInBeats(0.1125))
854
	  :addx(200)
855
	  :accelerate(TimeInBeats(0.1125))
856
	  :addx(-200)
857
	  :accelerate(TimeInBeats(0.1125))
858
	  :addx(200)
859
	  :accelerate(TimeInBeats(0.1125))
860
	  :addx(-200)
861
	  :accelerate(TimeInBeats(0.1125))
862
	  :addx(200)
863
	  :accelerate(TimeInBeats(0.1125))
864
	  :addx(-200)
865
	  :accelerate(TimeInBeats(0.1125))
866
	  :addx(200)
867
	  :accelerate(TimeInBeats(0.1125))
868
	  :addx(-200)
869
	  :accelerate(TimeInBeats(0.1125))
870
	  :addx(200)
871
	  :accelerate(TimeInBeats(0.1125))
872
	  :addx(-200)
873
	  :accelerate(TimeInBeats(0.1125))
874
	  :x(325)
875
	  :y(SCREEN_CENTER_Y)
876
  end,
877
  
878
    JitterShortCommand = function (self)
879
    Players[1]
880
	  :x(325)
881
	  :y(SCREEN_CENTER_Y)
882
      :accelerate(TimeInBeats(0.1125))
883
	  :addx(-200)
884
	  :accelerate(TimeInBeats(0.1125))
885
	  :addx(400)
886
	  :accelerate(TimeInBeats(0.1125))
887
	  :addx(-200)
888
	  :accelerate(TimeInBeats(0.1125))
889
	  :addx(200)
890
	  :accelerate(TimeInBeats(0.1125))
891
	  :addx(-200)
892
	  :accelerate(TimeInBeats(0.1125))
893
	  :x(325)
894
	  :y(SCREEN_CENTER_Y)
895
  end,
896
  
897
    JitterTinyCommand = function (self)
898
    Players[1]
899
	  :x(325)
900
	  :y(SCREEN_CENTER_Y)
901
      :accelerate(TimeInBeats(0.1125))
902
	  :addx(20)
903
	  :accelerate(TimeInBeats(0.1125))
904
	  :addx(-20)
905
	  :accelerate(TimeInBeats(0.1125))
906
	  :addx(20)
907
	  :accelerate(TimeInBeats(0.1125))
908
	  :addx(-20)
909
	  :accelerate(TimeInBeats(0.1125))
910
	  :addx(20)
911
	  :accelerate(TimeInBeats(0.1125))
912
	  :addx(-20)
913
	  :accelerate(TimeInBeats(0.1125))
914
	  :addx(20)
915
	  :accelerate(TimeInBeats(0.1125))
916
	  :addx(-20)
917
	  :accelerate(TimeInBeats(0.1125))
918
	  :addx(20)
919
	  :accelerate(TimeInBeats(0.1125))
920
	  :addx(-20)
921
	  :accelerate(TimeInBeats(0.1125))
922
	  :addx(20)
923
	  :accelerate(TimeInBeats(0.1125))
924
	  :addx(-20)
925
	  :accelerate(TimeInBeats(0.1125))
926
	  :addx(20)
927
	  :accelerate(TimeInBeats(0.1125))
928
	  :addx(-20)
929
	  :accelerate(TimeInBeats(0.1125))
930
	  :addx(20)
931
	  :accelerate(TimeInBeats(0.1125))
932
	  :addx(-20)
933
	  :accelerate(TimeInBeats(0.1125))
934
	  :addx(20)
935
	  :accelerate(TimeInBeats(0.1125))
936
	  :addx(-20)
937
	  :accelerate(TimeInBeats(0.1125))
938
	  :addx(20)
939
	  :accelerate(TimeInBeats(0.1125))
940
	  :addx(-20)
941
	  :accelerate(TimeInBeats(0.1125))
942
	  :addx(20)
943
	  :accelerate(TimeInBeats(0.1125))
944
	  :addx(-20)
945
	  :accelerate(TimeInBeats(0.1125))
946
	  :addx(20)
947
	  :accelerate(TimeInBeats(0.1125))
948
	  :addx(-20)
949
	  :accelerate(TimeInBeats(0.1125))
950
	  :addx(20)
951
	  :accelerate(TimeInBeats(0.1125))
952
	  :addx(-20)
953
	  :accelerate(TimeInBeats(0.1125))
954
	  :addx(20)
955
	  :accelerate(TimeInBeats(0.1125))
956
	  :addx(-20)
957
	  :accelerate(TimeInBeats(0.1125))
958
	  :x(325)
959
	  :y(SCREEN_CENTER_Y)
960
  end,
961
962
  -- DO NOT TOUCH ANY OF THIS UNLESS YOU KNOW WHAT YOU'RE DOING
963
  InitCommand = function (self)
964
    -- table to keep track of mods already finished
965
    local completed = {}
966
967
    -- for edit mode, go through and mark the ones already passed
968
    -- if we don't do this, weird shit happens
969
    for i, mod in ipairs(SongMods) do
970
      local modbeat, paramtype, param, modstring = unpack(mod)
971
      local modfinish = paramtype == 'end' and param
972
        or paramtype == 'len' and modbeat + param
973
        or error('invalid parameter type ' .. paramtype .. ' for mod #' .. i .. '(mod string: ' .. modstring .. ')')
974
975
      if GAMESTATE:GetSongBeat() > modfinish then
976
        completed[mod] = true
977
      end
978
    end
979
    for _, mod in ipairs(LuaMods) do
980
      local beat = unpack(mod)
981
      if GAMESTATE:GetSongBeat() > beat then
982
        completed[mod] = true
983
      end
984
    end
985
986
    -- hOBOI
987
    self:SetUpdateFunction(function()
988
      local curbeat = GAMESTATE:GetSongBeat() + 0.08
989
      local curmods = {}
990
991
      for i=1, GAMESTATE:GetNumPlayersEnabled() do
992
        curmods[i] = { DefaultMods }
993
      end
994
995
      for i, mod in ipairs(SongMods) do
996
        if not completed[mod] then
997
          local modbeat, paramtype, param, modstring, player = unpack(mod)
998
          local modfinish = paramtype == 'end' and param
999
            or paramtype == 'len' and modbeat + param
1000
            or error('invalid parameter type ' .. paramtype .. ' for mod #' .. i .. '(mod string: ' .. modstring .. ')') -- typos happen
1001
1002
          if curbeat >= modbeat then
1003
            for p, playermods in ipairs(curmods) do
1004
              if player == nil or player == p then
1005
                table.insert(playermods, modstring)
1006
              end
1007
            end
1008
            if curbeat > modfinish then
1009
              completed[mod] = true
1010
            end
1011
          end
1012
        end
1013
      end
1014
1015
      for p, playermods in ipairs(curmods) do
1016
        GAMESTATE:GetPlayerState('PlayerNumber_P' .. p):SetPlayerOptions('ModsLevel_Song', table.concat(playermods, ','))
1017
      end
1018
1019
      -- this is significantly easier *sigh*
1020
      for _, mod in ipairs(LuaMods) do
1021
        local beat, command = unpack(mod)
1022
        if curbeat > beat and not completed[mod] then
1023
          self:playcommand(command, unpack(mod, 3))
1024
          completed[mod] = true
1025
        end
1026
      end
1027
    end)
1028
  end,
1029
1030
  OnCommand = function (self)
1031
    table.insert(Players, SCREENMAN:GetTopScreen():GetChild('PlayerP1'))
1032
    table.insert(Players, SCREENMAN:GetTopScreen():GetChild('PlayerP2'))
1033
1034
    -- because edit mode is so nice as to not name the playfields,
1035
    -- we have to grab them ourselves! ;)
1036
    for _, actor in ipairs(SCREENMAN:GetTopScreen():GetChild('')) do
1037
      if tostring(actor):find('Player') then
1038
        table.insert(Players, actor)
1039
      end
1040
    end
1041
1042
    -- reset player state (for edit mode)
1043
    for _, player in ipairs(Players) do
1044
      player:stoptweening():zoom(1)
1045
    end
1046
1047
    -- keep the FG change alive
1048
    self:sleep(9999)
1049
  end,
1050
}
1051
1052
return t;