Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_rhythmgame_example_Step_0

(view raw script w/o annotations or w/e)
1
if (loadsong == 1)
2
{
3
    track1 = snd_init("ch3_karaoke_example_noguit.ogg");
4
    track2 = snd_init("ch3_karaoke_example_guit_only.ogg");
5
    loadsong = 2;
6
    playtimer = 0;
7
}
8
if (loadsong == 2)
9
{
10
    playtimer++;
11
    if (playtimer == 4)
12
    {
13
        track1_instance = mus_loop(track1);
14
        track2_instance = mus_loop(track2);
15
    }
16
    if (playtimer == 5)
17
    {
18
        audio_sound_set_track_position(track1_instance, 13);
19
        audio_sound_set_track_position(track2_instance, 13);
20
        loadsong = 3;
21
        song_initialized = 1;
22
    }
23
}
24
if (song_initialized == 1)
25
{
26
    trackpos = audio_sound_get_track_position(track1_instance);
27
    var timeunit = trackpos - remtrackpos[0];
28
    var averagetimeunit = ((trackpos - remtrackpos[0]) + (remtrackpos[0] - remtrackpos[1]) + (remtrackpos[1] - remtrackpos[2])) / 3;
29
    remtrackpos[4] = remtrackpos[3];
30
    remtrackpos[3] = remtrackpos[2];
31
    remtrackpos[2] = remtrackpos[1];
32
    remtrackpos[1] = remtrackpos[0];
33
    remtrackpos[0] = trackpos;
34
    if (trackpos < 9)
35
    {
36
        snd_free_all();
37
        room_restart();
38
    }
39
    var notecheckmax = -1;
40
    var notecheck = minnote;
41
    var foundnotes = 0;
42
    while (notecheck < maxnote)
43
    {
44
        notecheckmax++;
45
        if (abs(notetime[notecheck] - trackpos) < 0.12)
46
        {
47
            foundnotes = 1;
48
            targetnote[notecheckmax] = notecheck;
49
            notecheck++;
50
        }
51
        else
52
        {
53
            notecheckmax--;
54
            break;
55
        }
56
    }
57
    pressedtimer[0]++;
58
    pressedtimer[1]++;
59
    buffer[0]--;
60
    buffer[1]--;
61
    for (i = 0; i < 2; i++)
62
    {
63
        var checkpress;
64
        if (i == 0)
65
        {
66
            checkpress = button1_p();
67
            var holdpress = button1_h();
68
        }
69
        if (i == 1)
70
        {
71
            checkpress = button2_p();
72
            var holdpress = button2_h();
73
        }
74
        if (checkpress && buffer[0] <= 0)
75
        {
76
            pressedtimer[i] = 0;
77
            buffer[0] = 2;
78
        }
79
        if (pressedtimer[i] < (room_speed / 10) && foundnotes == 1)
80
        {
81
            for (var notei = 0; notei <= notecheckmax; notei++)
82
            {
83
                if (notetype[targetnote[notei]] == i && notealive[targetnote[notei]] == 1)
84
                {
85
                    var leniency = 1.6;
86
                    if (abs(notetime[targetnote[notei]] - trackpos) < (averagetimeunit * leniency))
87
                        notescore[targetnote[notei]] = 100;
88
                    else if (abs(notetime[targetnote[notei]] - trackpos) < (averagetimeunit * leniency * 1.5))
89
                        notescore[targetnote[notei]] = 60;
90
                    else
91
                        notescore[targetnote[notei]] = 40;
92
                    notealive[targetnote[notei]] = 0;
93
                    if (notescore[targetnote[notei]] == 100)
94
                        snd_play(snd_criticalswing);
95
                    else
96
                        snd_play(snd_swing);
97
                    pressedtimer[i] = (room_speed / 10) + 1;
98
                    mus_volume(track2_instance, 1, 0);
99
                }
100
            }
101
        }
102
    }
103
}