Deltarune (Chapter 4) script viewer

← back to main script listing

gml_GlobalScript_scr_rhythmgame_song_load

(view raw script w/o annotations or w/e)
1
function scr_rhythmgame_load_song(arg0 = 0, arg1 = true, arg2 = true, arg3 = false)
2
{
3
    if (song_loaded && !arg3)
4
        scr_rhythmgame_song_reset();
5
    song_id = arg0;
6
    notetime[0] = 0;
7
    notespeed = 150;
8
    loop = false;
9
    
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("trying to load");
10
    if (arg0 == 0)
11
    {
12
        track1_id = "ch3_karaoke_no_guitar.ogg";
13
        track2_id = "ch3_karaoke_full.ogg";
14
        oneAtATime = true;
15
        dynamic_solo = true;
16
        bpm = 230;
17
        startoffset = 0;
18
        track_length = 174.26;
19
        notespacing = 60 / bpm;
20
        meter = notespacing * 4;
21
        if ((
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
() && arg3) || (v_ex("debugsong") && debugsong))
22
            trackstart = scr_round_to_beat(14.5, bpm);
23
        else
24
            trackstart = 0;
25
        timestamp[0] = scr_round_to_beat(37.56, bpm, 1) - notespacing;
26
        timestamp[1] = scr_round_to_beat(58.43, bpm, 1) - notespacing;
27
        timestamp[2] = scr_round_to_beat(79.3, bpm, 1) - notespacing;
28
        timestamp[3] = scr_round_to_beat(100.17, bpm, 1) - notespacing;
29
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading main song");
30
    }
31
    else if (arg0 == 1)
32
    {
33
        track1_id = "ch3-practice_song_noguit.ogg";
34
        track2_id = "ch3-practice_song_combined.ogg";
35
        oneAtATime = true;
36
        bpm = 75;
37
        startoffset = 0;
38
        track_length = 24;
39
        trackstart = 0;
40
        notespeed = 90;
41
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading practice song");
42
    }
43
    else if (arg0 == 2)
44
    {
45
        track1_id = "tenna_battle.ogg";
46
        track2_id = "tenna_battle_guitar.ogg";
47
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading tenna_battle");
48
        oneAtATime = false;
49
        track_length = 165.405;
50
        bpm = 148;
51
        notespeed = 120;
52
        notespacing = 60 / bpm;
53
        meter = notespacing * 4;
54
        if (i_ex(obj_rhythmgame))
55
        {
56
            if (obj_rhythmgame.tenna_boss)
57
                loop = true;
58
            else
59
                trackstart = 0 - (meter * 1);
60
        }
61
    }
62
    else if (arg0 == 3)
63
    {
64
        track1_id = "ch3_tvtime.ogg";
65
        track2_id = "ch3_tvtime_guitar.ogg";
66
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Tutorial time!");
67
        trackstart = 0;
68
        oneAtATime = true;
69
        track_length = 32.842;
70
        bpm = 190;
71
        loop = true;
72
        notespacing = 60 / bpm;
73
        meter = notespacing * 4;
74
        trackstart = 0 - meter;
75
    }
76
    else if (arg0 == 4)
77
    {
78
        track1_id = "board4_rhythm.ogg";
79
        track2_id = "board4_rhythm.ogg";
80
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading very good board 4 song");
81
        trackstart = (room == room_dw_rhythm || arg3) ? 8 : 0;
82
        oneAtATime = true;
83
        track_length = 15.265;
84
        notespeed = 30;
85
        bpm = 60;
86
    }
87
    else if (arg0 == 5)
88
    {
89
        track1_id = "rudebuster_boss.ogg";
90
        track2_id = "rudebuster_boss.ogg";
91
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Time to get FUNKY");
92
        trackstart = 0;
93
        oneAtATime = true;
94
        track_length = 143.384;
95
        bpm = 140;
96
    }
97
    else if (arg0 == 6)
98
    {
99
        track1_id = "battle_vapor.ogg";
100
        track2_id = "battle_vapor.ogg";
101
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading battle_vapor");
102
        trackstart = 7;
103
        oneAtATime = true;
104
        bpm = 200;
105
    }
106
    else if (arg0 == 7)
107
    {
108
        track1_id = "tenna_battle_old.ogg";
109
        track2_id = "tenna_battle_old.ogg";
110
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading tenna_battle_old");
111
        trackstart = 0;
112
        oneAtATime = true;
113
        track_length = 127.92;
114
        bpm = 148;
115
        notespeed = 120;
116
    }
117
    else if (arg0 == 8)
118
    {
119
        track1_id = "battle.ogg";
120
        track2_id = "battle.ogg";
121
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading Rude Buster");
122
        trackstart = 0;
123
        oneAtATime = true;
124
        track_length = 75.428;
125
        bpm = 140;
126
        notespeed = 120;
127
    }
128
    else if (arg0 == 9)
129
    {
130
        track1_id = "field_of_hopes.ogg";
131
        track2_id = "field_of_hopes.ogg";
132
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading Field of Hopes and Dreams");
133
        trackstart = 0;
134
        oneAtATime = true;
135
        track_length = 161.28;
136
        bpm = 125;
137
        notespeed = 120;
138
    }
139
    else if (arg0 == 10)
140
    {
141
        track1_id = "rhythm_knockdown_no_guit.ogg";
142
        track2_id = "rhythm_knockdown_combined.ogg";
143
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Loading Knock You Down!!");
144
        bpm = 195;
145
        notespacing = 60 / bpm;
146
        meter = notespacing * 4;
147
        trackstart = scr_round_to_beat(-2 * (240 / bpm), bpm);
148
        oneAtATime = true;
149
        track_length = 137.846;
150
        notespeed = 120;
151
    }
152
    if (arg3)
153
    {
154
        notespacing = 60 / bpm;
155
        meter = notespacing * 4;
156
    }
157
    else if (arg0 >= 0)
158
    {
159
        
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("loading da other stuff");
160
        notespacing = 60 / bpm;
161
        meter = notespacing * 4;
162
        if (arg0 == 2 || arg0 == 10)
163
            speed_modifier = 1.5;
164
        scr_rhythmgame_notechart_lead(arg0);
165
        if (tutorial > 0)
166
            scr_rhythmgame_toggle_notes(false);
167
        musicm.bpm = bpm;
168
        musicm.beat_offset += bpm / 2;
169
        if (arg1)
170
        {
171
            with (drums)
172
            {
173
                scr_rhythmgame_notechart_drums(arg0);
174
                bpm = other.bpm;
175
                notespacing = other.notespacing;
176
                meter = other.meter;
177
                loop = other.loop;
178
            }
179
        }
180
        if (arg2)
181
        {
182
            with (vocals)
183
            {
184
                scr_rhythmgame_notechart_vocals(arg0);
185
                bpm = other.bpm;
186
                notespacing = other.notespacing;
187
                meter = other.meter;
188
                loop = other.loop;
189
                if (i_ex(obj_rhythmgame) && obj_rhythmgame.tenna_boss)
190
                {
191
                    if (maxnote == 0 || chart_start > notetime[0] || (chart_start + (meter * 2)) < notetime[0])
192
                        performer.sprite_index = spr_ralsei_sing_clap;
193
                }
194
            }
195
        }
196
        scr_rhythmgame_load_events(arg0);
197
    }
198
}
199
200
function scr_rhythmgame_song_reset()
201
{
202
    timestamp = [];
203
    timestamp[0] = 0;
204
    dynamic_solo = false;
205
    track1_id = 0;
206
    track2_id = 0;
207
    song_id = -1;
208
    oneAtATime = false;
209
    bpm = 230;
210
    notespacing = 60 / bpm;
211
    meter = notespacing * 4;
212
}
213
214
function scr_rhythmgame_song_select(arg0)
215
{
216
    if (arg0 == 0)
217
    {
218
        song_id = 8;
219
        vinyl_id = 0;
220
        preview = "battle_preview.ogg";
221
        alt_preview = "battle_preview_crisp.ogg";
222
        local_preview = snd_songpreview_knockdown;
223
        chapter = 1;
224
        bpm = 140;
225
    }
226
    if (arg0 == 1)
227
    {
228
        song_id = 9;
229
        vinyl_id = 0;
230
        preview = "field_of_hopes_preview.ogg";
231
        alt_preview = "field_of_hopes_preview_crisp.ogg";
232
        local_preview = snd_songpreview_knockdown;
233
        chapter = 1;
234
        bpm = 125;
235
    }
236
    if (arg0 == 2)
237
    {
238
        song_id = 10;
239
        vinyl_id = 1;
240
        preview = "boxing_boss_preview.ogg";
241
        alt_preview = "boxing_boss_preview_crisp.ogg";
242
        local_preview = snd_songpreview_knockdown;
243
        chapter = 2;
244
        bpm = 195;
245
    }
246
    if (arg0 == 3)
247
    {
248
        song_id = 0;
249
        vinyl_id = 1;
250
        preview = "ch3_karaoke_preview.ogg";
251
        alt_preview = "ch3_karaoke_preview_crisp.ogg";
252
        local_preview = snd_songpreview_video;
253
        chapter = 3;
254
        bpm = 230;
255
    }
256
    if (arg0 == 4)
257
    {
258
        song_id = 2;
259
        vinyl_id = 1;
260
        preview = "tenna_battle_preview.ogg";
261
        alt_preview = "tenna_battle_preview_crisp.ogg";
262
        local_preview = snd_songpreview_tenna;
263
        chapter = 3;
264
        bpm = 148;
265
    }
266
}
267
268
function scr_rhythmgame_song_select_id(arg0)
269
{
270
    if (arg0 == 0)
271
        return 8;
272
    else if (arg0 == 1)
273
        return 9;
274
    else if (arg0 == 2)
275
        return 10;
276
    else if (arg0 == 3)
277
        return 0;
278
    else if (arg0 == 4)
279
        return 2;
280
}
281
282
function scr_rhythmgame_rank_scores(arg0, arg1 = 0)
283
{
284
    var _rank_scores = [14500, 18000, 22000, 25000, 28000];
285
    if (arg0 == 2)
286
        _rank_scores = [33500, 37000, 41000, 44000, 47000];
287
    if (arg0 == 10)
288
        _rank_scores = [32500, 36000, 40000, 43000, 45000];
289
    if (arg1 > 0)
290
    {
291
        for (var i = 0; i < 5; i++)
292
            _rank_scores[i] = (_rank_scores[i] * 1.1) - 1200;
293
    }
294
    return _rank_scores;
295
}
296
297
function scr_rhythmgame_get_rank(arg0, arg1)
298
{
299
    var _rank_scores = scr_rhythmgame_rank_scores(arg0);
300
    var _rank = 0;
301
    if (arg1 >= _rank_scores[4])
302
        return 5;
303
    for (i = 0; i < 5; i++)
304
    {
305
        if (arg1 < _rank_scores[i])
306
        {
307
            _rank = i;
308
            break;
309
        }
310
    }
311
    return _rank;
312
}
313
314
function scr_rhythmgame_load_events(arg0)
315
{
316
    if (arg0 > 3)
317
    {
318
        scr_music_event_add_instance(drums, 0 - (meter * 5), "target_brightness", 0.75);
319
        scr_music_event_add_instance(vocals, 0 - (meter * 5), "target_brightness", 0.75);
320
    }
321
    if (arg0 == 0)
322
    {
323
        with (drums)
324
        {
325
            scr_music_event_add_instance(performer, 16.7 - (meter * 6), "sprite_index", spr_susie_drum_ready, true);
326
            scr_music_event_add_instance(other.performer, 16.7 - (meter * 5.75), "sprite_index", spr_kris_guitar_ready, true);
327
            scr_music_event_add_instance(other.vocals.performer, 16.7 - (meter * 5.5), "sprite_index", spr_ralsei_sing_polite_closed, true);
328
            scr_music_event_add(16.7 - (meter * 5), "target_brightness", 0.75);
329
            scr_music_event_add_instance(other.vocals, 16.7 - (meter * 5), "target_brightness", 0.75);
330
            if (global.chapter == 3)
331
            {
332
                scr_music_event_add(16.7 - (meter * 4), "mash_hit", 1, true, 16);
333
                scr_music_event_add_instance(other.vocals.performer, 16.7 - (meter * 4), "sprite_index", spr_ralsei_rock_shock, true);
334
                if (!other.spooked && global.plot < 150 && global.flag[1096 rhythm_game_tries] == 0)
335
                {
336
                    scr_music_event_add_instance(other.vocals.performer, 16.7 - (meter * 4), "shakeamt", 10, true);
337
                    other.spooked = true;
338
                }
339
                scr_music_event_add(16.939999999999998 - (meter * 4), "con", 0, true);
340
                scr_music_event_add(18.7 - (meter * 4), "fade", 0.98, false);
341
            }
342
            else
343
            {
344
                auto_play = true;
345
            }
346
            scr_music_event_add_instance(other.vocals.performer, 38, "sprite_index", spr_ralsei_sing_clap, true, 1);
347
            if (global.chapter == 3)
348
            {
349
                scr_music_event_add(39, "con", -1, true);
350
                scr_music_event_add(39.12, "mash_hit", 2, true, 16);
351
                scr_music_event_add(39.24, "mash_hit", 0, true, 16);
352
                scr_music_event_add(39.36, "mash_hit", 0, true, 16);
353
                scr_music_event_add(39.48, "mash_hit", 1, true, 16);
354
                scr_music_event_add(39.72, "con", 1, true);
355
                scr_music_event_add(98.09 - meter, "con", 5, true);
356
            }
357
            scr_music_event_add_instance(other, 134.5, "smooth", 1, true);
358
            scr_music_event_add_instance(other.vocals.performer, 134.5, "sprite_index", spr_ralsei_sing_clap, true, 1);
359
            scr_music_event_add_instance(other, 149.75, "smooth", 0, true);
360
        }
361
    }
362
    else if (arg0 == 1)
363
    {
364
        with (drums)
365
        {
366
            auto_play = true;
367
            performer.image_speed = 0.25;
368
            other.spooked = true;
369
            if (global.chapter == 0)
370
                scr_music_event_add_instance(performer, trackstart + (meter * 0.5), "sprite_index", spr_susie_drumsticks, true);
371
            scr_music_event_add_instance(performer, trackstart + (meter * 0.5), "image_index", 1, true);
372
            scr_music_event_add_instance(other.performer, trackstart + (meter * 1.5), "sprite_index", spr_kris_guitar_ready, true);
373
            scr_music_event_add_instance(other.vocals.performer, trackstart + (meter * 1), "sprite_index", spr_ralsei_sing_clap, true, 1);
374
            scr_music_event_add(trackstart + (meter * 2), "fade", 1, false);
375
            scr_music_event_add_instance(performer, 11, "sprite_index", spr_susie_drumsticks_2, true);
376
            scr_music_event_add_instance(performer, 14.3, "image_speed", 1, true);
377
            scr_music_event_add_instance(other.vocals.performer, 14.3, "sprite_index", spr_ralsei_rock_shock, true);
378
            scr_music_event_add_instance(other.vocals.performer, 14.3, "shakeamt", 10, true);
379
            scr_music_event_add(14.3, "auto_play", false, true);
380
            scr_music_event_add(14.3, "con", 7, true);
381
            scr_music_event_add(20.3, "fade", 0.98, false);
382
            scr_music_event_add(22.6, "mash_hit", false, true);
383
            scr_music_event_add(22.6, "con", -1, true);
384
            scr_music_event_add_instance(performer, 23.5, "sprite_index", spr_susie_drum_ready, true);
385
            scr_music_event_add_instance(performer, 24, "sprite_index", spr_susie_drum, true);
386
        }
387
    }
388
    else if (arg0 == 2)
389
    {
390
        drums.auto_play = 1;
391
        scr_music_event_add_instance(drums, 0 - meter, "target_brightness", 0.75);
392
        scr_music_event_add_instance(vocals, 0 - meter, "target_brightness", 0.75);
393
        if (global.chapter >= 3 || (chart_start <= 158.92 && chart_end >= 158.92))
394
        {
395
            with (vocals.performer)
396
            {
397
                scr_music_event_add(0, "sprite_index", spr_ralsei_sing_clap, true);
398
                scr_music_event_add_instance(other.drums.performer, 4.85, "sprite_index", spr_susie_drum_ready, true);
399
                scr_music_event_add(17, "sprite_index", spr_ralsei_sing_polite_closed, true);
400
                scr_music_event_add(74.6, "sprite_index", spr_ralsei_sing_clap, true);
401
                scr_music_event_add(86.95, "sprite_index", spr_ralsei_sing_polite_closed, true);
402
                scr_music_event_add(158.92, "mid", 5311, true);
403
                scr_music_event_add(158.92, "idle", 5272, true);
404
                scr_music_event_add(158.92, "animspeed", 2, true);
405
                scr_music_event_add(158.92, "sprite_index", spr_ralsei_sing_rude, true);
406
                scr_music_event_add(162.16, "sprite_index", spr_ralsei_sing_cuss, true);
407
                scr_music_event_add(162.16, "shakeamt", 10, true);
408
                scr_music_event_add(162.16, "animspeed", 1, true);
409
                scr_music_event_add(165.4, "mid", 956, true);
410
                scr_music_event_add(165.4, "idle", 739, true);
411
                scr_music_event_add(165.4, "sprite_index", spr_ralsei_sing_clap, true);
412
            }
413
        }
414
    }
415
    else if (arg0 == 4)
416
    {
417
        scr_music_event_add_instance(other.performer, trackstart + (meter * 1.5), "sprite_index", spr_kris_guitar_ready, true);
418
    }
419
    else if (arg0 == 10)
420
    {
421
        drums.auto_play = true;
422
        scr_music_event_add_instance(drums.performer, trackstart + (meter * 0.5), "sprite_index", spr_susie_drum_ready, true);
423
        scr_music_event_add_instance(other.performer, trackstart + (meter * 1.5), "sprite_index", spr_kris_guitar_ready, true);
424
        scr_music_event_add_instance(vocals.performer, trackstart + (meter * 1), "sprite_index", spr_ralsei_sing_clap, true, 1);
425
        scr_music_event_add_instance(vocals.performer, 49.22, "sprite_index", spr_ralsei_sing_clap_wait, true, 1);
426
        scr_music_event_add_instance(vocals.performer, 53.52, "sprite_index", spr_ralsei_sing_clap, true, 1);
427
        scr_music_event_add_instance(vocals.performer, 132.91, "sprite_index", spr_ralsei_sing_clap_wait, true, 1);
428
    }
429
    else
430
    {
431
        drums.auto_play = true;
432
        scr_music_event_add_instance(drums.performer, trackstart + (meter * 0.5), "sprite_index", spr_susie_drum_ready, true);
433
        scr_music_event_add_instance(other.performer, trackstart + (meter * 1.5), "sprite_index", spr_kris_guitar_ready, true);
434
        scr_music_event_add_instance(vocals.performer, trackstart + (meter * 1), "sprite_index", spr_ralsei_sing_clap, true, 1);
435
    }
436
    scr_music_beat_event_instance(obj_rhythmgame, "beat", true, true);
437
}
438
439
function scr_rhythmgame_toggle_notes(arg0, arg1 = true)
440
{
441
    if (arg0)
442
    {
443
        var _startpoint = scr_ceil_to_beat(trackpos + (meter * 1.5), bpm, 0.25);
444
        if (_startpoint > track_length)
445
            loop_start = _startpoint - track_length;
446
        for (i = 0; i < maxnote; i++)
447
        {
448
            if (notetime[i] < _startpoint)
449
            {
450
                continue;
451
            }
452
            else
453
            {
454
                notescore[i] = 0;
455
                notealive[i] = 1;
456
            }
457
        }
458
    }
459
    else
460
    {
461
        for (i = 0; i < maxnote; i++)
462
        {
463
            notescore[i] = arg1 ? 40 : 0;
464
            notealive[i] = 0;
465
        }
466
    }
467
}