Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_church_piano_playable_Step_0

(view raw script w/o annotations or w/e)
1
scr_populatechars
scr_populatechars

function
scr_populatechars()
{ if (!variable_instance_exists(id, "kris")) kris = 0; if (!variable_instance_exists(id, "ralsei")) ralsei = 0; if (!variable_instance_exists(id, "susie")) susie = 0; if (!variable_instance_exists(id, "noelle")) noelle = 0; if (kris == 0) { with (obj_mainchara) other.kris = id; } if (susie == 0) { with (obj_caterpillarchara) { if (name == "susie") other.susie = id; } } if (ralsei == 0) { with (obj_caterpillarchara) { if (name == "ralsei") other.ralsei = id; } } if (noelle == 0) { with (obj_caterpillarchara) { if (name == "noelle") other.noelle = id; } } }
();
2
instrument = 524;
3
buffer--;
4
if (con == 0.1)
5
{
6
    if (camx != -1)
7
        camcon = 1;
8
    con = 99;
9
    global.interact = 1;
10
    kris.cutscene = true;
11
    if (audio_is_playing(global.currentsong[1]))
12
    {
13
        memvolume = audio_sound_get_gain(global.currentsong[1]);
14
        debug_message(memvolume);
15
        snd_volume(global.currentsong[1], memvolume * 0.125, 15);
16
    }
17
    else
18
    {
19
        memvolume = -1;
20
    }
21
    cutscene_master = 
scr_cutscene_make
scr_cutscene_make

function
scr_cutscene_make()
{ _cutscene_master = instance_create(0, 0, obj_cutscene_master); _cutscene_master.master_object = id; return _cutscene_master; }
();
22
    
scr_maincharacters_actors
scr_maincharacters_actors

function
scr_maincharacters_actors()
{ actor_count = 0; kr = 0; kr_actor = instance_create(obj_mainchara.x, obj_mainchara.y, obj_actor);
scr_actor_setup(kr, kr_actor, "kris");
kr_actor.sprite_index = obj_mainchara.sprite_index; kr_actor.depth = obj_mainchara.depth; with (obj_mainchara) visible = 0; for (__jj = 0; __jj < array_length_1d(global.cinstance); __jj++) { if (i_ex(global.cinstance[__jj])) { if (global.cinstance[__jj].name == "susie") { actor_count++; su = __jj + 1; su_actor = instance_create(global.cinstance[__jj].x, global.cinstance[__jj].y, obj_actor);
scr_actor_setup(su, su_actor, "susie");
su_actor.sprite_index = global.cinstance[__jj].sprite_index; su_actor.depth = global.cinstance[__jj].depth; with (global.cinstance[__jj]) visible = 0; } if (global.cinstance[__jj].name == "ralsei") { actor_count++; ra = __jj + 1; ra_actor = instance_create(global.cinstance[__jj].x, global.cinstance[__jj].y, obj_actor);
scr_actor_setup(ra, ra_actor, "ralsei");
ra_actor.sprite_index = global.cinstance[__jj].sprite_index; ra_actor.depth = global.cinstance[__jj].depth; with (global.cinstance[__jj]) visible = 0; } if (global.cinstance[__jj].name == "noelle") { actor_count++; no = __jj + 1; no_actor = instance_create(global.cinstance[__jj].x, global.cinstance[__jj].y, obj_actor);
scr_actor_setup(no, no_actor, "noelle");
no_actor.sprite_index = global.cinstance[__jj].sprite_index; no_actor.depth = global.cinstance[__jj].depth; with (global.cinstance[__jj]) visible = 0; } } } }
();
23
    var realsusie = -4;
24
    var realralsei = -4;
25
    var fullwait = 0;
26
    with (obj_caterpillarchara)
27
    {
28
        if (name == "susie")
29
            realsusie = id;
30
    }
31
    with (obj_caterpillarchara)
32
    {
33
        if (name == "ralsei")
34
            realralsei = id;
35
    }
36
    with (obj_light_following)
37
    {
38
        if (target == other.kris)
39
        {
40
            target = other.kr_actor;
41
            other.memlightk = id;
42
        }
43
    }
44
    if (i_ex(realsusie))
45
    {
46
        with (obj_light_following)
47
        {
48
            if (target == realsusie)
49
                target = other.su_actor;
50
        }
51
    }
52
    if (i_ex(realralsei))
53
    {
54
        with (obj_light_following)
55
        {
56
            if (target == realralsei)
57
                target = other.ra_actor;
58
        }
59
    }
60
    var krx = kr_x;
61
    var kry = kr_y;
62
    with (obj_krmarker)
63
    {
64
        if (extflag == other.extflag)
65
        {
66
            krx = x;
67
            kry = y;
68
        }
69
    }
70
    
c_sel
c_sel

function
c_sel(arg0)
{
c_cmd("select", arg0, 0, 0, 0);
}
(kr);
71
    var pointdist = point_distance(krx, kry, kr_actor.x, kr_actor.y);
72
    if (pointdist > 4)
73
    {
74
        var walkwait = min(
scr_returnwait
scr_returnwait

function
scr_returnwait(arg0, arg1, arg2, arg3, arg4)
{ return max(1, round(point_distance(arg0, arg1, arg2, arg3) / arg4)); }
(kr_actor.x, kr_actor.y, krx, kry, 4), 15);
75
        fullwait = max(fullwait, walkwait);
76
        
c_walkdirect
c_walkdirect

function
c_walkdirect(arg0, arg1, arg2)
{
c_cmd("walkdirect", arg0, arg1, arg2, 0);
}
(krx, kry, walkwait);
77
        
c_delayfacing
c_delayfacing

function
c_delayfacing(arg0, arg1)
{
c_cmd_x("delaycmd", arg0, "facing", arg1, 0, 0, 0);
}
(walkwait + 1, "u");
78
    }
79
    else
80
    {
81
        
c_setxy
c_setxy

function
c_setxy(arg0, arg1)
{
c_cmd("setxy", arg0, arg1, 0, 0);
}
(krx, kry);
82
        
c_facing
c_facing

function
c_facing(arg0)
{
c_cmd("facing", arg0, 0, 0, 0);
}
("u");
83
        debug_print("no need to move");
84
    }
85
    if (catafollow)
86
    {
87
        if (i_ex(ralsei))
88
        {
89
            
c_sel
c_sel

function
c_sel(arg0)
{
c_cmd("select", arg0, 0, 0, 0);
}
(ra);
90
            var rax = kr_x - 27 - 8;
91
            var ray = kr_y + 30 + 2 + 1;
92
            with (obj_ramarker)
93
            {
94
                if (extflag == other.extflag)
95
                {
96
                    rax = x;
97
                    ray = y;
98
                }
99
            }
100
            pointdist = point_distance(rax, ray, ra_actor.x, ra_actor.y);
101
            if (pointdist > 4)
102
            {
103
                var walkwait = min(
scr_returnwait
scr_returnwait

function
scr_returnwait(arg0, arg1, arg2, arg3, arg4)
{ return max(1, round(point_distance(arg0, arg1, arg2, arg3) / arg4)); }
(ra_actor.x, ra_actor.y, rax, ray, 4), 15);
104
                fullwait = max(fullwait, walkwait);
105
                
c_walkdirect
c_walkdirect

function
c_walkdirect(arg0, arg1, arg2)
{
c_cmd("walkdirect", arg0, arg1, arg2, 0);
}
(rax, ray, walkwait);
106
                
c_delayfacing
c_delayfacing

function
c_delayfacing(arg0, arg1)
{
c_cmd_x("delaycmd", arg0, "facing", arg1, 0, 0, 0);
}
(walkwait + 1, "u");
107
            }
108
            else
109
            {
110
                
c_setxy
c_setxy

function
c_setxy(arg0, arg1)
{
c_cmd("setxy", arg0, arg1, 0, 0);
}
(rax, ray);
111
                
c_facing
c_facing

function
c_facing(arg0)
{
c_cmd("facing", arg0, 0, 0, 0);
}
("u");
112
            }
113
        }
114
        if (i_ex(susie))
115
        {
116
            
c_sel
c_sel

function
c_sel(arg0)
{
c_cmd("select", arg0, 0, 0, 0);
}
(su);
117
            var sux = kr_x + 30;
118
            var suy = kr_y + 30;
119
            with (obj_sumarker)
120
            {
121
                if (extflag == other.extflag)
122
                {
123
                    sux = x;
124
                    suy = y;
125
                }
126
            }
127
            pointdist = point_distance(sux, suy, su_actor.x, su_actor.y);
128
            if (pointdist > 4)
129
            {
130
                var walkwait = min(
scr_returnwait
scr_returnwait

function
scr_returnwait(arg0, arg1, arg2, arg3, arg4)
{ return max(1, round(point_distance(arg0, arg1, arg2, arg3) / arg4)); }
(su_actor.x, su_actor.y, sux, suy, 4), 15);
131
                fullwait = max(fullwait, walkwait);
132
                
c_walkdirect
c_walkdirect

function
c_walkdirect(arg0, arg1, arg2)
{
c_cmd("walkdirect", arg0, arg1, arg2, 0);
}
(sux, suy, walkwait);
133
                
c_delayfacing
c_delayfacing

function
c_delayfacing(arg0, arg1)
{
c_cmd_x("delaycmd", arg0, "facing", arg1, 0, 0, 0);
}
(walkwait + 1, "u");
134
            }
135
            else
136
            {
137
                
c_setxy
c_setxy

function
c_setxy(arg0, arg1)
{
c_cmd("setxy", arg0, arg1, 0, 0);
}
(sux, suy);
138
                
c_facing
c_facing

function
c_facing(arg0)
{
c_cmd("facing", arg0, 0, 0, 0);
}
("u");
139
            }
140
        }
141
    }
142
    
c_wait
c_wait

function
c_wait(arg0)
{
c_cmd("wait", arg0, 0, 0, 0);
}
(max(fullwait, 1));
143
    
c_var_instance
c_var_instance

function
c_var_instance(arg0, arg1, arg2)
{
c_cmd_x("var", arg0, arg1, arg2, 0, 0, 0);
}
(id, "resetlight", 1);
144
    
c_wait
c_wait

function
c_wait(arg0)
{
c_cmd("wait", arg0, 0, 0, 0);
}
(1);
145
    
c_var_instance
c_var_instance

function
c_var_instance(arg0, arg1, arg2)
{
c_cmd_x("var", arg0, arg1, arg2, 0, 0, 0);
}
(id, "con", 0.2);
146
    
c_actortokris
c_actortokris

function
c_actortokris()
{
c_cmd("actortokris", 0, 0, 0, 0);
}
();
147
    
c_actortocaterpillar
c_actortocaterpillar

function
c_actortocaterpillar()
{
c_cmd("actortocaterpillar", 0, 0, 0, 0);
}
();
148
    
c_customfunc
c_customfunc

function
c_customfunc(arg0, arg1 = -1)
{ if (instance_exists(obj_cutscene_master)) { with (obj_cutscene_master) array_push(customfuncs, arg0);
c_cmd("customfunc", arg1, 0, 0, 0);
} } function c_delay_customfunc(arg0, arg1, arg2 = -1) { if (instance_exists(obj_cutscene_master))
c_cmd_x("delaycmd", arg0, "customfunc", arg2, arg1, 0, 0);
}
(function()
149
    {
150
        global.facing = 2;
151
        if (catafollow)
152
        {
153
            with (obj_caterpillarchara)
154
            {
155
                x = 
scr_even
scr_even

function
scr_even(arg0)
{ return round(arg0 / 2) * 2; }
(x);
156
                y = 
scr_even
scr_even

function
scr_even(arg0)
{ return round(arg0 / 2) * 2; }
(y);
157
                for (var i = 0; i < 75; i += 1)
158
                    facing[i] = 2;
159
            }
160
        }
161
    });
162
    
c_terminatekillactors
c_terminatekillactors

function
c_terminatekillactors()
{
c_cmd("terminatekillactors", 0, 0, 0, 0);
}
();
163
}
164
if (resetlight == 1)
165
{
166
    resetlight = 0;
167
    with (obj_light_following)
168
    {
169
        if (i_ex(other.susie))
170
        {
171
            if (target == other.su_actor)
172
                target = other.susie;
173
        }
174
        if (i_ex(other.ralsei))
175
        {
176
            if (target == other.ra_actor)
177
                target = other.ralsei;
178
        }
179
    }
180
    if (i_ex(memlightk))
181
    {
182
        with (memlightk)
183
            target = other.kris;
184
    }
185
}
186
if (con == 0.2 && !i_ex(cutscene_master))
187
{
188
    global.interact = 0;
189
    global.facing = 2;
190
    obj_mainchara.freeze = true;
191
    global.flag[7 disable_menu?] = 1;
192
    con = 1;
193
    engaged = true;
194
}
195
if (con == 1)
196
{
197
    if (button2_h())
198
        canceltimer++;
199
    else
200
        canceltimer = 0;
201
    if (canceltimer >= canceltime || forceend)
202
    {
203
        var skipcamreset = false;
204
        if (dontresetproperly)
205
            skipcamreset = true;
206
        if (camerax() == 0 || camerax() == (room_width - 640))
207
            skipcamreset = true;
208
        global.flag[7 disable_menu?] = 0;
209
        if (skipcamreset == false)
210
        {
211
            debug_print("skipcamreset=false");
212
            if (memvolume != -1)
213
                snd_volume(global.currentsong[1], memvolume, 15);
214
            con = 3;
215
            var desx = camerax();
216
            var desy = cameray();
217
            with (obj_mainchara)
218
            {
219
                var roomw = room_width;
220
                var roomh = room_height;
221
                var vieww = view_wport[0];
222
                var viewh = view_hport[0];
223
                desx = clamp((x - floor((vieww / 2) - (initwd / 2))) + nudgex, 0, roomw - vieww);
224
                desy = clamp((y - floor((viewh / 2) - (initht / 2))) + nudgey, 0, roomh - viewh);
225
            }
226
            
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("camxoverride", camerax(), desx, 4);
227
            
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("camyoverride", cameray(), desy, 4);
228
            scr_delay_var("con", 4, 8);
229
        }
230
        else
231
        {
232
            debug_print("skipcamreset=true");
233
            con = 4;
234
            if (memvolume != -1)
235
                snd_volume(global.currentsong[1], memvolume, 5);
236
        }
237
    }
238
    soundtoplay = -1;
239
    if (difficulty == 0)
240
    {
241
        if (!left_h() && !down_h() && !right_h() && !up_h())
242
            soundtoplay = 0;
243
        if (left_h())
244
            soundtoplay = 1;
245
        if (down_h())
246
            soundtoplay = 3;
247
        if (right_h())
248
            soundtoplay = 5;
249
        if (up_h())
250
            soundtoplay = 7;
251
    }
252
    if (difficulty == 1)
253
    {
254
        if (!left_h() && !down_h() && !right_h() && !up_h())
255
            soundtoplay = 0;
256
        if (left_h() && !down_h() && !right_h() && !up_h())
257
            soundtoplay = 1;
258
        if ((left_h() && down_h()) && !up_h() && !right_h())
259
            soundtoplay = 2;
260
        if (down_h() && !left_h() && !right_h() && !up_h())
261
            soundtoplay = 3;
262
        if ((down_h() && right_h()) && !left_h() && !up_h())
263
            soundtoplay = 4;
264
        if (right_h() && !left_h() && !down_h() && !up_h())
265
            soundtoplay = 5;
266
        if ((up_h() && right_h()) && !down_h() && !left_h())
267
            soundtoplay = 6;
268
        if (up_h() && !left_h() && !down_h() && !right_h())
269
            soundtoplay = 7;
270
        if ((up_h() && left_h()) && !down_h() && !right_h())
271
            soundtoplay = 8;
272
    }
273
    var soundplayed = 0;
274
    if (button1_p() && soundtoplay != -1 && !button2_h())
275
    {
276
        var mypitch = 
scr_piano_determinepitch
scr_piano_determinepitch

function
scr_piano_determinepitch(arg0 = 0, arg1 = 1)
{ var pitcher = 1; if (arg1 == 1) { switch (arg0) { case 0: pitcher = 1; break; case 1: pitcher = 1.12; break; case 3: pitcher = 1.19; break; case 5: pitcher = 0.8928571428571428; break; case 7: pitcher = 0.5; break; } } if (arg1 == 2) { switch (arg0) { case 0: pitcher = 1; break; case 1: pitcher = 1.12; break; case 2: pitcher = 1.155; break; case 3: pitcher = 1.19; break; case 4: pitcher = 1.0414285714285714; break; case 5: pitcher = 0.8928571428571428; break; case 6: pitcher = 0.6964285714285714; break; case 7: pitcher = 0.5; break; case 8: pitcher = 0.3035714286; break; } } return pitcher; }
(soundtoplay);
277
        snd_play(instrument, 0.7, mypitch);
278
        soundplayed = 1;
279
        notesplayed = true;
280
        buffer = 0;
281
    }
282
    if (soundplayed)
283
    {
284
        if (!solved)
285
        {
286
            var newnote = string(soundtoplay);
287
            progress += newnote;
288
            if (string_length(progress) > string_length(solution))
289
                progress = string_delete(progress, 1, 1);
290
            if (progress == solution)
291
            {
292
                var completiontype = 1;
293
                if (completiontype == 0)
294
                    solved = 1;
295
                if (completiontype == 1)
296
                {
297
                    con = 30;
298
                    timer = 0;
299
                }
300
            }
301
        }
302
    }
303
}
304
if (con == 30)
305
{
306
    timer++;
307
    if (timer == 1)
308
        snd_play(snd_noise);
309
    if (timer == 30)
310
    {
311
        var playspeed = 6;
312
        var solinput = [];
313
        for (var i = 0; i < string_length(solution); i++)
314
            solinput[i] = string_char_at(solution, i + 1);
315
        for (var i = 0; i < array_length(solinput); i++)
316
            snd_play_delay(instrument, 1 + (i * playspeed), 1, 
scr_piano_determinepitch
scr_piano_determinepitch

function
scr_piano_determinepitch(arg0 = 0, arg1 = 1)
{ var pitcher = 1; if (arg1 == 1) { switch (arg0) { case 0: pitcher = 1; break; case 1: pitcher = 1.12; break; case 3: pitcher = 1.19; break; case 5: pitcher = 0.8928571428571428; break; case 7: pitcher = 0.5; break; } } if (arg1 == 2) { switch (arg0) { case 0: pitcher = 1; break; case 1: pitcher = 1.12; break; case 2: pitcher = 1.155; break; case 3: pitcher = 1.19; break; case 4: pitcher = 1.0414285714285714; break; case 5: pitcher = 0.8928571428571428; break; case 6: pitcher = 0.6964285714285714; break; case 7: pitcher = 0.5; break; case 8: pitcher = 0.3035714286; break; } } return pitcher; }
(solinput[i]));
317
        con = 31;
318
        var completiontime = 1 + (playspeed * array_length(solinput)) + 10;
319
        scr_delay_var("solved", true, completiontime);
320
        scr_delay_var("con", 1, completiontime);
321
    }
322
}
323
if (con == 4)
324
{
325
    forceend = 0;
326
    con = 0;
327
    timer = 0;
328
    buffer = 6;
329
    canceltimer = 0;
330
    if (!dontresetproperly)
331
    {
332
        kris.cutscene = false;
333
        global.facing = 0;
334
    }
335
    kris.freeze = false;
336
    kris.fun = 0;
337
    camcon = 0;
338
    dontresetproperly = false;
339
    dontdrawmenu = false;
340
}
341
if (camcon == 1)
342
{
343
    kris.cutscene = true;
344
    camxoverride = camerax();
345
    camyoverride = cameray();
346
    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("camxoverride", camerax(), camx, 15);
347
    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("camyoverride", cameray(), camy, 15);
348
    camcon = 2;
349
}
350
if (camcon == 2)
351
{
352
    kris.cutscene = true;
353
    camera_set_view_pos(view_camera[0], round(camxoverride), round(camyoverride));
354
}