Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_climb_susie_Step_0

(view raw script w/o annotations or w/e)
1
if (init == 0)
2
    init = 1;
3
event_inherited();
4
if (caterpillartarget == -4)
5
    depth = 31000;
6
else
7
    
scr_depth
scr_depth

function
scr_depth(arg0 = id, arg1 = 0)
{ with (arg0) depth = 100000 - ((y * 10) + (sprite_height * 10) + (arg1 * 10)); }
();
8
if (con == 0)
9
{
10
    sprite_index = climbsprite;
11
    image_index = climbindex;
12
    if (reachcon >= 10)
13
    {
14
        con = 4;
15
        exit;
16
    }
17
    if (reachcon > 0)
18
    {
19
        con = 3;
20
        exit;
21
    }
22
    var _dir = dir;
23
    if (followmode == 1)
24
    {
25
        if (i_ex(obj_climb_kris))
26
        {
27
            if (obj_climb_kris.y < y)
28
                climb_direction = 1;
29
            else
30
                climb_direction = -1;
31
            _dir = -1;
32
            if ((obj_climb_kris.y - y) > 80 || (obj_climb_kris.y - y) < -20)
33
            {
34
                if (dir >= 0)
35
                {
36
                    con = 1;
37
                    climbcon = -startdelay;
38
                }
39
            }
40
        }
41
    }
42
    if (followmode == 2)
43
    {
44
        _dir = -1;
45
        if (i_ex(obj_climb_kris))
46
        {
47
            if (obj_climb_kris.climbcon == 2 && obj_climb_kris.climbtimer >= 1)
48
            {
49
                con = 1;
50
                dir = obj_climb_kris.dir_memory;
51
                climbcon = 0;
52
                if (obj_climb_kris.jumping)
53
                    con = 2;
54
            }
55
        }
56
    }
57
    if (followmode == 3)
58
    {
59
        _dir = -1;
60
        if (array_length(instruction_queue) > 0)
61
        {
62
            var next_instruction = instruction_queue[0];
63
            if (((current_time / 30) - startdelay) > next_instruction[2])
64
            {
65
                array_delete(instruction_queue, 0, 1);
66
                con = 1;
67
                climbcon = 0;
68
                if (next_instruction[1] < 0)
69
                    dir = 2;
70
                if (next_instruction[1] > 0)
71
                    dir = 0;
72
                if (next_instruction[0] > 0)
73
                    dir = 1;
74
                if (next_instruction[0] < 0)
75
                    dir = 3;
76
                if (next_instruction[3])
77
                {
78
                    con = 2;
79
                    xclimb = next_instruction[0];
80
                    yclimb = next_instruction[1];
81
                }
82
            }
83
        }
84
        if (con == 0)
85
            climbmomentum *= 0.5;
86
    }
87
    if (waiteventid > 0)
88
        exit;
89
    if (caterpillartarget != -4)
90
    {
91
        dir = -1;
92
        var evade = false;
93
        var yy = caterpillartarget.y;
94
        if (caterpillartarget.jumping)
95
            yy = caterpillartarget.y + caterpillartarget.yclimb;
96
        if (x > (caterpillartarget.x + 60) && y > (yy + 30))
97
        {
98
            if (y > (yy + 50) && can_caterpillar_to(x, y - 40))
99
            {
100
                dir = 2;
101
            }
102
            else
103
            {
104
                var xx = x;
105
                for (var i = 0; i < 3; i++)
106
                {
107
                    xx = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(xx, caterpillartarget.x, 40);
108
                    if (can_caterpillar_to(xx, y, true) && !place_meeting(xx, y - 40, caterpillartarget) && !place_meeting(xx, y + 40, caterpillartarget))
109
                    {
110
                        forcejump = i > 0;
111
                        xclimb = 0;
112
                        yclimb = 0;
113
                        dir = 3;
114
                        break;
115
                    }
116
                }
117
            }
118
        }
119
        else if (x < (caterpillartarget.x - 60) && y > (yy + 30))
120
        {
121
            var xx = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(x, caterpillartarget.x, 40);
122
            if (y > (yy + 50) && can_caterpillar_to(x, y - 40))
123
            {
124
                dir = 2;
125
            }
126
            else
127
            {
128
                xx = x;
129
                for (var i = 0; i < 3; i++)
130
                {
131
                    xx = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(xx, caterpillartarget.x, 40);
132
                    if (can_caterpillar_to(xx, y, true) && !place_meeting(xx, y - 40, caterpillartarget) && !place_meeting(xx, y + 40, caterpillartarget))
133
                    {
134
                        forcejump = i > 0;
135
                        xclimb = 0;
136
                        yclimb = 0;
137
                        dir = 1;
138
                        break;
139
                    }
140
                }
141
            }
142
        }
143
        else if (y > (yy + 170) && can_caterpillar_to(x, y - 120))
144
        {
145
            forcejump = 1;
146
            xclimb = 0;
147
            yclimb = 0;
148
            dir = 2;
149
        }
150
        else if (y > (yy + 130) && can_caterpillar_to(x, y - 80))
151
        {
152
            forcejump = 1;
153
            xclimb = 0;
154
            yclimb = 0;
155
            dir = 2;
156
        }
157
        else if (y > (yy + 90) && can_caterpillar_to(x, y - 40))
158
        {
159
            dir = 2;
160
        }
161
        else if (y < (yy + 50))
162
        {
163
            evade = true;
164
        }
165
        if (evade || force_evade)
166
        {
167
            var evaded = false;
168
            if (y < (yy + 50) && can_caterpillar_to(x, y + 40))
169
            {
170
                dir = 0;
171
                evaded = true;
172
            }
173
            else if (y < (yy + 50) && (can_caterpillar_to(x, y + 80) || can_caterpillar_to(x, y + 120)))
174
            {
175
                dir = 0;
176
                forcejump = true;
177
                xclimb = 0;
178
                yclimb = 0;
179
                evaded = true;
180
            }
181
            if (!evaded && (abs(x - caterpillartarget.x) < 20 || abs(x - obj_climb_kris.x) < 20))
182
            {
183
                if (y < (yy + 50) && can_caterpillar_to(x, y + 40))
184
                {
185
                    dir = 0;
186
                    evaded = true;
187
                }
188
                else if (y < (yy + 50) && (can_caterpillar_to(x, y + 80) || can_caterpillar_to(x, y + 120)))
189
                {
190
                    dir = 0;
191
                    forcejump = true;
192
                    xclimb = 0;
193
                    yclimb = 0;
194
                    evaded = true;
195
                }
196
            }
197
            var ydiff = y - yy;
198
            var wanted_distance = 80;
199
            if (scr_trigcheck_ext("softevade", id))
200
            {
201
                wanted_distance = 60;
202
                if (!evaded && abs(y - obj_climb_kris.y) < 10 && abs(x - obj_climb_kris.x) < 10)
203
                {
204
                    if (can_caterpillar_to(x + 40, y, true))
205
                    {
206
                        dir = 1;
207
                        evaded = true;
208
                    }
209
                    else if (can_caterpillar_to(x - 40, y, true))
210
                    {
211
                        dir = 3;
212
                        evaded = true;
213
                    }
214
                }
215
            }
216
            if (!evaded && sign(x - caterpillartarget.x) >= 0 && abs(caterpillartarget.x - x) < (wanted_distance - ydiff) && ydiff < 70)
217
            {
218
                if (can_caterpillar_to(x + 40, y))
219
                {
220
                    dir = 1;
221
                    evaded = true;
222
                }
223
                else if (can_caterpillar_to(x + 80, y) || can_caterpillar_to(x + 120, y))
224
                {
225
                    dir = 1;
226
                    forcejump = true;
227
                    xclimb = 0;
228
                    yclimb = 0;
229
                    evaded = true;
230
                }
231
                else if (place_meeting(x, y, obj_solidenemy_2) && can_caterpillar_to(x - 40, y))
232
                {
233
                    dir = 3;
234
                    evaded = true;
235
                }
236
            }
237
            if (!evaded && sign(x - caterpillartarget.x) <= 0 && abs(caterpillartarget.x - x) < (wanted_distance - ydiff) && ydiff < 70)
238
            {
239
                if (can_caterpillar_to(x - 40, y))
240
                {
241
                    dir = 3;
242
                    evaded = true;
243
                }
244
                else if (can_caterpillar_to(x - 80, y) || can_caterpillar_to(x - 120, y))
245
                {
246
                    dir = 3;
247
                    forcejump = true;
248
                    xclimb = 0;
249
                    yclimb = 0;
250
                    evaded = true;
251
                }
252
                else if (place_meeting(x, y, obj_solidenemy_2) && can_caterpillar_to(x + 40, y))
253
                {
254
                    dir = 1;
255
                    evaded = true;
256
                }
257
            }
258
            if (!evaded && force_evade)
259
            {
260
                if (can_caterpillar_to(x, y + 40))
261
                {
262
                    dir = 0;
263
                    evaded = true;
264
                }
265
                else if (can_caterpillar_to(x, y + 80) || can_caterpillar_to(x, y + 120))
266
                {
267
                    dir = 0;
268
                    forcejump = true;
269
                    xclimb = 0;
270
                    yclimb = 0;
271
                    evaded = true;
272
                }
273
            }
274
        }
275
        else if (y > (yy + 50) && x > (caterpillartarget.x + 20) && can_caterpillar_to(x - 40, y))
276
        {
277
            dir = 3;
278
        }
279
        else if (y > (yy + 50) && x < (caterpillartarget.x - 20) && can_caterpillar_to(x + 40, y))
280
        {
281
            dir = 1;
282
        }
283
        _dir = dir;
284
    }
285
    remx = x;
286
    remy = y;
287
    if (forcejump)
288
    {
289
        con = 2;
290
        timer = 0;
291
        forcejump = 0;
292
        force_evade = false;
293
        exit;
294
    }
295
    if (_dir >= 0)
296
    {
297
        force_evade = false;
298
        con = 1;
299
        climbcon = 0;
300
    }
301
}
302
if (con == 1)
303
{
304
    if (climbcon < 0)
305
        climbcon++;
306
    if (climbcon == 0)
307
    {
308
        yclimb = 0;
309
        xclimb = 0;
310
        var _dir = dir;
311
        if (climb_direction == -1 && (_dir % 2) == 0)
312
            _dir = (_dir + 2) % 4;
313
        if (_dir == 2)
314
            yclimb = -40;
315
        else if (_dir == 3)
316
            xclimb = -40;
317
        else if (_dir == 1)
318
            xclimb = 40;
319
        else
320
            yclimb = 40;
321
        sprite_index = climbsprite;
322
        if (climbindex == 0)
323
            climbindex = 2;
324
        else
325
            climbindex = 0;
326
        climbcon = 1;
327
    }
328
    if (climbcon == 1)
329
    {
330
        var draw_dust = !onrotatingtower || tile_vis == 1;
331
        if (timer == 0 && draw_dust)
332
        {
333
            var dust_amount = 1;
334
            if (jumping)
335
                dust_amount = 5;
336
            for (var i = 0; i < dust_amount; i++)
337
            {
338
                var dust = instance_create(x, y + 40, obj_animation);
339
                dust.sprite_index = spr_climb_dust_small;
340
                dust.depth = depth + 10;
341
                if (jumping)
342
                {
343
                    dust.x = dust.x + random_range(-10, 10);
344
                    dust.y = dust.y + random_range(-10, 10);
345
                }
346
                else if (yclimb < 0)
347
                {
348
                    dust.x = (dust.x - 10) + (10 * climbindex);
349
                }
350
                else if (yclimb > 0)
351
                {
352
                    dust.x = (dust.x - 15) + (15 * climbindex);
353
                }
354
                else
355
                {
356
                    dust.y = dust.y + 10;
357
                }
358
                if (i_ex(obj_rotating_tower_controller_new) && i_ex(obj_climb_kris))
359
                {
360
                    dust.x = tower_x;
361
                    dust.depth = obj_rotating_tower_controller_new.depth - 4;
362
                }
363
                dust.image_xscale = 2;
364
                dust.image_yscale = 2;
365
                dust.image_speed = 0.5;
366
                dust.vspeed += -1;
367
            }
368
        }
369
        drawoffsety = 0;
370
        var newx, newy, climbrate;
371
        if (jumping == 0)
372
        {
373
            if (climbspeed < climbspeedmultiplier)
374
                climbspeed = climbspeedmultiplier;
375
            climbrate = 10;
376
            if (followmode == 2)
377
            {
378
                climbspeed = obj_climb_kris.climbspeed;
379
                climbmomentum = obj_climb_kris.climbmomentum;
380
                if (obj_climb_kris.climbcon == 10)
381
                {
382
                    climbspeed = 0;
383
                    climbmomentum = 0;
384
                }
385
            }
386
            if (caterpillartarget != -4)
387
            {
388
                climbrate = 10;
389
                timer += (obj_climb_kris.climbspeed + obj_climb_kris.climbmomentum);
390
                if (obj_climb_kris.jumping)
391
                    climbrate = 5;
392
            }
393
            else
394
            {
395
                timer += (climbspeed + climbmomentum);
396
            }
397
            if (timer >= climbrate)
398
                timer = climbrate;
399
            newx = lerp_ease_inout(remx, remx + xclimb, timer / climbrate, 2);
400
            newy = lerp_ease_inout(remy, remy + yclimb, timer / climbrate, 2);
401
            image_index = climbindex;
402
            if (abs(newx - remx) > 3 || abs(newy - remy) > 3)
403
                image_index = 1 + climbindex;
404
        }
405
        x = newx;
406
        y = newy;
407
        if (timer >= climbrate)
408
        {
409
            jumping = 0;
410
            climbcon = 0;
411
            jumpchargeamount = 0;
412
            x = remx + xclimb;
413
            y = remy + yclimb;
414
            if (onrotatingtower && x > obj_rotating_tower_controller_new.tower_circumference)
415
                x -= obj_rotating_tower_controller_new.tower_circumference;
416
            if (onrotatingtower && x < 0)
417
                x += obj_rotating_tower_controller_new.tower_circumference;
418
            con = 0;
419
            timer = 0;
420
        }
421
    }
422
    if (followmode == 2)
423
        image_index = obj_climb_kris.image_index;
424
}
425
if (con == 3 || con == 4)
426
{
427
    sprite_index = spr_susie_climb_throw_right;
428
    if (con == 3)
429
        sprite_index = spr_susie_climb_throw;
430
    image_speed = 0;
431
    if (timer == 0)
432
    {
433
        image_index = 1;
434
        if (instance_place(x + 35, y, obj_climb_kris) && (obj_climb_kris.climbcon == 2 || obj_climb_kris.neutralcon == 1 || obj_climb_kris.fallingcon > 0))
435
        {
436
            snd_play(snd_noise);
437
            with (obj_climb_kris)
438
            {
439
                image_alpha = 0;
440
                fallingcon = 0;
441
                jumping = 0;
442
                climbcon = 0;
443
                neutralcon = 1;
444
                if (other.onrotatingtower)
445
                    visible = 0;
446
            }
447
            if (onrotatingtower)
448
                con = 5;
449
            global.interact = 1;
450
            timer++;
451
        }
452
    }
453
    if (timer > 0)
454
    {
455
        timer++;
456
        var delay = (con * 10) - 10;
457
        if (timer < delay)
458
        {
459
            image_index = 2 + min(4, floor(timer / 4));
460
        }
461
        else
462
        {
463
            image_index = 6 + min(3, floor((timer - delay) / 4));
464
            if (timer == (delay + 8))
465
            {
466
                var targetx = 0;
467
                var targety = 0;
468
                with (obj_genmarker)
469
                {
470
                    var suffix = "";
471
                    if (extflag == (string(other.reachcon) + suffix))
472
                    {
473
                        other.targetgenmarker = self;
474
                        targetx = x;
475
                        targety = y;
476
                        break;
477
                    }
478
                }
479
                with (obj_climb_kris)
480
                {
481
                    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; 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_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("x", x, targetx, 25);
482
                    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; 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_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("y", y, targety - 20, 25);
483
                }
484
                with (instance_create(obj_climb_kris.x, obj_climb_kris.y - 20, obj_marker))
485
                {
486
                    
scr_jump_to_point
scr_jump_to_point

function
scr_jump_to_point(arg0, arg1, arg2, arg3, arg4 = 0)
{ var ___jump =
scr_jump_to_point_sprite(arg0, arg1, arg2, arg3, 0, 0);
with (___jump) { trackalpha = arg4; trackblend = arg4; trackindex = arg4; tracksprite = arg4; trackangle = arg4; } return ___jump; }
(targetx, targety - 20, 10, 25);
487
                    sprite_index = spr_kris_jump_ball;
488
                    image_xscale = 2;
489
                    image_yscale = 2;
490
                    
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ var _doom = instance_create_depth(0, 0, 0, obj_doom); with (_doom) { alarm[0] target = arg0; } return _doom; }
(self, 25);
491
                }
492
                snd_play(snd_jump);
493
            }
494
            if (timer == (delay + 34))
495
            {
496
                var targetx = 0;
497
                var targety = 0;
498
                if (targetgenmarker != -4)
499
                {
500
                    targetx = targetgenmarker.x;
501
                    targety = targetgenmarker.y;
502
                }
503
                snd_play(snd_noise);
504
                obj_climb_kris.x = targetx + 20;
505
                obj_climb_kris.y = targety + 20;
506
                obj_climb_kris.image_alpha = 1;
507
                global.interact = 0;
508
                sprite_index = spr_susie_climb;
509
                con = 0;
510
                reachcon = 0;
511
            }
512
        }
513
    }
514
}
515
if (con == 5)
516
{
517
    if (timer > 0)
518
    {
519
        timer++;
520
        var delay = 20;
521
        if (timer < delay)
522
        {
523
            image_index = 2 + min(4, floor(timer / 4));
524
        }
525
        else
526
        {
527
            image_index = 6 + min(3, floor((timer - delay) / 4));
528
            var jumptime = 100;
529
            if (timer == (delay + 8))
530
            {
531
                with (instance_create(camerax() + (0.5 * camerawidth()), obj_climb_kris.y - 20, obj_marker))
532
                {
533
                    
scr_jump_to_point
scr_jump_to_point

function
scr_jump_to_point(arg0, arg1, arg2, arg3, arg4 = 0)
{ var ___jump =
scr_jump_to_point_sprite(arg0, arg1, arg2, arg3, 0, 0);
with (___jump) { trackalpha = arg4; trackblend = arg4; trackindex = arg4; tracksprite = arg4; trackangle = arg4; } return ___jump; }
((camerax() - 19) + (0.5 * camerawidth()), ((cameray() - 42) + (0.5 * cameraheight())) - 416, 25, jumptime);
534
                    sprite_index = spr_kris_jump_ball;
535
                    image_xscale = 2;
536
                    image_yscale = 2;
537
                    depth = 100;
538
                }
539
                snd_play(snd_jump);
540
            }
541
            if (timer > (delay + 8) && timer <= (delay + 60))
542
                obj_climb_kris.y -= 8;
543
            if (timer == (delay + 30))
544
            {
545
                whiteout = 
scr_marker_ext
scr_marker_ext

function
scr_marker_ext(arg0, arg1, arg2, arg3 = 1, arg4 = 1, arg5 = 0, arg6 = 0, arg7 = 16777215, arg8 = depth, arg9 = false, arg10 = -1, arg11 = 1, arg12 = false)
{ var objinst = 1238; if (arg12) objinst = 1496; var thismarker = instance_create(arg0, arg1, objinst); with (thismarker) { depth = arg8; sprite_index = arg2; image_speed = arg5; image_xscale = arg3; image_yscale = arg4; image_index = arg6; image_blend = arg7; image_alpha = arg11; if (arg9)
scr_depth_alt();
} if (arg10 > 0)
scr_doom(thismarker, arg10);
return thismarker; } function scr_marker_fromasset(arg0, arg1 = depth, arg2 = false, arg3 = false) { if (is_undefined(arg0)) { debug_message("Warning: scr_marker_fromasset() sprite_instance didn't exist"); return -4; } var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var imagespeed = layer_sprite_get_speed(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var markertype = 1238; if (arg3) markertype = 1496; var thismarker = instance_create_depth(xloc, yloc, arg1, markertype); with (thismarker) { sprite_index = sprite; image_index = index; image_speed = imagespeed; image_xscale = xscale; image_yscale = yscale; image_angle = angle; image_blend = blend; image_alpha = alpha; if (arg2)
scr_depth_alt(id, arg2);
} return thismarker; } function scr_assetgetinfo(arg0) { var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var imagespeed = layer_sprite_get_speed(arg0); return [sprite, index, xloc, yloc, xscale, yscale, angle, blend, alpha, imagespeed]; }
(0, 0, spr_pxwhite, room_width, room_height, undefined, undefined, c_white, 101);
546
                with (whiteout)
547
                {
548
                    image_alpha = 0;
549
                    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; 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_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("image_alpha", 0, 1, 30);
550
                }
551
            }
552
            if (timer == (delay + 8 + jumptime))
553
            {
554
                snd_play(snd_noise);
555
                with (obj_marker)
556
                {
557
                    if (depth == 100)
558
                    {
559
                        y -= 6;
560
                        newmarker = instance_create(x, y, obj_marker_screen);
561
                        newmarker.sprite_index = spr_kris_dw_landed;
562
                        newmarker.image_speed = 0;
563
                        newmarker.depth = 10;
564
                        with (newmarker)
565
                            
scr_darksize
scr_darksize

function
scr_darksize()
{ var inst = id; if (argument_count) inst = argument0; inst.image_xscale = 2; inst.image_yscale = 2; }
();
566
                        
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ var _doom = instance_create_depth(0, 0, 0, obj_doom); with (_doom) { alarm[0] target = arg0; } return _doom; }
(newmarker, 100, true);
567
                        
scr_shakeobj
scr_shakeobj

function
scr_shakeobj()
{ var _shakeobj = instance_create(x, y, obj_shakeobj); _shakeobj.target = id; if (argument_count >= 1) { if (i_ex(argument0)) _shakeobj.target = argument0; } if (argument_count >= 2) { if (argument1 != -1) _shakeobj.shakeamt = argument1; } if (argument_count >= 3) { if (argument2 != -1) _shakeobj.shakereduct = argument2; } with (_shakeobj) event_user(0); }
();
568
                        instance_destroy();
569
                    }
570
                }
571
                blackout = 
scr_marker_ext
scr_marker_ext

function
scr_marker_ext(arg0, arg1, arg2, arg3 = 1, arg4 = 1, arg5 = 0, arg6 = 0, arg7 = 16777215, arg8 = depth, arg9 = false, arg10 = -1, arg11 = 1, arg12 = false)
{ var objinst = 1238; if (arg12) objinst = 1496; var thismarker = instance_create(arg0, arg1, objinst); with (thismarker) { depth = arg8; sprite_index = arg2; image_speed = arg5; image_xscale = arg3; image_yscale = arg4; image_index = arg6; image_blend = arg7; image_alpha = arg11; if (arg9)
scr_depth_alt();
} if (arg10 > 0)
scr_doom(thismarker, arg10);
return thismarker; } function scr_marker_fromasset(arg0, arg1 = depth, arg2 = false, arg3 = false) { if (is_undefined(arg0)) { debug_message("Warning: scr_marker_fromasset() sprite_instance didn't exist"); return -4; } var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var imagespeed = layer_sprite_get_speed(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var markertype = 1238; if (arg3) markertype = 1496; var thismarker = instance_create_depth(xloc, yloc, arg1, markertype); with (thismarker) { sprite_index = sprite; image_index = index; image_speed = imagespeed; image_xscale = xscale; image_yscale = yscale; image_angle = angle; image_blend = blend; image_alpha = alpha; if (arg2)
scr_depth_alt(id, arg2);
} return thismarker; } function scr_assetgetinfo(arg0) { var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var imagespeed = layer_sprite_get_speed(arg0); return [sprite, index, xloc, yloc, xscale, yscale, angle, blend, alpha, imagespeed]; }
(0, 0, spr_pxwhite, room_width, room_height, undefined, undefined, c_black, 102);
572
            }
573
            if (timer == (delay + 8 + jumptime + 10))
574
            {
575
                with (whiteout)
576
                {
577
                    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; 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_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("image_alpha", 1, 0, 30);
578
                    
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ var _doom = instance_create_depth(0, 0, 0, obj_doom); with (_doom) { alarm[0] target = arg0; } return _doom; }
(self, 30);
579
                }
580
            }
581
            if (timer == (delay + 8 + jumptime + 55))
582
            {
583
            }
584
        }
585
    }
586
}
587
if (con == 2)
588
{
589
    image_index = 0;
590
    timer += 1;
591
    if (followmode != 3)
592
    {
593
        var _dir = dir;
594
        if (climb_direction == -1 && (_dir % 2) == 0)
595
            _dir = (_dir + 2) % 4;
596
        if (_dir == 2)
597
            yclimb = -40;
598
        else if (_dir == 3)
599
            xclimb = -40;
600
        else if (_dir == 1)
601
            xclimb = 40;
602
        else
603
            yclimb = 40;
604
        if (followmode == 2)
605
        {
606
            xclimb = obj_climb_kris.xclimb;
607
            yclimb = obj_climb_kris.yclimb;
608
            snd_play_x(snd_wing, 0.6, 1.1 + random(0.1));
609
            sprite_index = climbsprite;
610
            image_index = obj_climb_kris.image_index;
611
            timer = 0;
612
            con = 12;
613
        }
614
        else
615
        {
616
            var checkamount = 4;
617
            for (var i = 1; i <= checkamount; i++)
618
            {
619
                var testxclimb = xclimb * i;
620
                var testyclimb = yclimb * i;
621
                var finalclimbx = x + testxclimb;
622
                var finalclimbx2 = (x + testxclimb) - xclimb;
623
                var falseloopused = 0;
624
                if (collision_rectangle(finalclimbx, y + 10 + testyclimb, finalclimbx + 1, y + testyclimb + 11, obj_climb_climbable, false, true))
625
                {
626
                    if (falseloopused)
627
                        remx = finalclimbx - testxclimb;
628
                    if (i == 1)
629
                    {
630
                        con = 1;
631
                        break;
632
                    }
633
                    xclimb = testxclimb;
634
                    yclimb = testyclimb;
635
                    snd_play_x(snd_wing, 0.6, 1.1 + random(0.1));
636
                    sprite_index = climbsprite;
637
                    timer = 0;
638
                    con = 12;
639
                    break;
640
                }
641
            }
642
        }
643
    }
644
    else
645
    {
646
        if (timer == 1)
647
        {
648
            if (image_index < 2)
649
                sprite_index = chargelsprite;
650
            else
651
                sprite_index = chargersprite;
652
        }
653
        image_index = timer / 4;
654
        if (timer > 3)
655
        {
656
            snd_play_x(snd_wing, 0.6, 1.1 + random(0.1));
657
            sprite_index = jumpsprite;
658
            timer = 0;
659
            con = 12;
660
        }
661
    }
662
}
663
if (con == 12)
664
{
665
    timer++;
666
    if (timer == 1)
667
    {
668
        var dust_amount = 5;
669
        for (var i = 0; i < dust_amount; i++)
670
        {
671
            var dust = instance_create(x, y, obj_animation);
672
            dust.sprite_index = spr_climb_dust_small;
673
            dust.depth = depth + 10;
674
            dust.x = dust.x + random_range(-10, 10);
675
            dust.y = dust.y + random_range(-10, 10);
676
            dust.image_xscale = 2;
677
            dust.image_yscale = 2;
678
            dust.image_speed = 0.5;
679
            dust.vspeed += -1;
680
        }
681
    }
682
    var climbrate = 12;
683
    if (followmode == 2)
684
    {
685
        var boost = ((abs(xclimb) + abs(yclimb)) / 40) - 1;
686
        climbrate = 6 + (boost * 2);
687
        var clipamount = 4;
688
        if (boost >= 2)
689
            clipamount = 2;
690
        if (obj_climb_kris.climbcon == 10 || obj_climb_kris.cuttimer > 0)
691
            timer -= 1;
692
        if (timer >= climbrate)
693
            climbtimer = climbrate;
694
        if (timer >= (climbrate - clipamount))
695
            timer = climbrate;
696
    }
697
    if (timer >= climbrate)
698
        timer = climbrate;
699
    var newx = lerp_ease_out(remx, remx + xclimb, timer / climbrate, 1);
700
    var newy = lerp_ease_out(remy, remy + yclimb, timer / climbrate, 1);
701
    drawoffsety = -sin((timer / climbrate) * pi) * (2 * (((abs(xclimb) + abs(yclimb)) / 40) - 1));
702
    if (dir == 2 || dir == 0)
703
    {
704
        image_index = timer / 2;
705
        sprite_index = jumpsprite;
706
    }
707
    else if (dir == 1)
708
    {
709
        if ((timer / climbrate) > 0.5)
710
        {
711
            sprite_index = jumpsprite;
712
        }
713
        else
714
        {
715
            sprite_index = jumpsprite;
716
            image_index = 0;
717
        }
718
    }
719
    else if ((timer / climbrate) > 0.5)
720
    {
721
        sprite_index = jumpsprite;
722
    }
723
    else
724
    {
725
        sprite_index = jumpsprite;
726
        image_index = 0;
727
    }
728
    var afterimage = 
scr_afterimage
scr_afterimage

function
scr_afterimage()
{ afterimage = instance_create(x, y, obj_afterimage); afterimage.sprite_index = sprite_index; afterimage.image_index = image_index; afterimage.image_blend = image_blend; afterimage.image_speed = 0; afterimage.depth = depth; afterimage.image_xscale = image_xscale; afterimage.image_yscale = image_yscale; afterimage.image_angle = image_angle; return afterimage; }
();
729
    afterimage.image_alpha = 0.2;
730
    x = newx;
731
    y = newy;
732
    if (timer >= climbrate)
733
    {
734
        con = 0;
735
        timer = 0;
736
        drawoffsety = 0;
737
        climbmomentum = ((abs(xclimb) + abs(yclimb)) / 40) * 0.5;
738
        sprite_index = climbsprite;
739
        image_index = 0;
740
        x = remx + xclimb;
741
        y = remy + yclimb;
742
    }
743
}
744
var overlapping_trigger = instance_place(x, y, obj_climb_destructableclimbarea);
745
if (overlapping_trigger != -4)
746
{
747
    with (overlapping_trigger)
748
    {
749
        if (con == 0)
750
            con = 1;
751
    }
752
}
753
hittimer--;
754
if (hittimer <= 0 && global.interact == 0)
755
{
756
    var bulletcheck = collision_rectangle(bbox_left + 14, bbox_top + 14, bbox_right - 14, bbox_bottom - 14, obj_climb_bullet, true, true);
757
    if (jumping == 0)
758
    {
759
        if (bulletcheck == -4)
760
        {
761
            var reposition = x;
762
            bulletcheck = collision_rectangle(bbox_left + 14, bbox_top + 14, bbox_right - 14, bbox_bottom - 14, obj_climb_enemy, true, true);
763
            x = reposition;
764
            if (bulletcheck != -4)
765
            {
766
                if (bulletcheck.active == 0)
767
                    bulletcheck = -4;
768
            }
769
        }
770
    }
771
    if (bulletcheck != -4)
772
    {
773
        damage = bulletcheck.damage;
774
        damagecon = 1;
775
        hittimer = 60;
776
    }
777
}
778
if (damagecon == 1)
779
{
780
    
scr_damage_all_overworld
scr_damage_all_overworld

function
scr_damage_all_overworld()
{ if (global.inv < 0) { gameover = 1; if (global.char[0] != 0 && global.hp[global.char[0]] > 1) gameover = 0; if (global.char[1] != 0 && global.hp[global.char[1]] > 1) gameover = 0; if (global.char[2] != 0 && global.hp[global.char[2]] > 1) gameover = 0; if (global.chapter == 5 && gameover && global.tempflag[57] == 1) { if (global.char[0] != 0) global.hp[global.char[0]] = 0; if (global.char[1] != 0) global.hp[global.char[1]] = 0; if (global.char[2] != 0) global.hp[global.char[2]] = 0; exit; } if (gameover == 1)
scr_gameover();
remdamage = damage; remtarget = target; if (!instance_exists(obj_shake)) instance_create(0, 0, obj_shake); with (obj_dmgwriter) killactive = 1; snd_stop(snd_hurt1); snd_play(snd_hurt1); var maxhpdiff = 0; for (ti = 0; ti < 3; ti += 1) { global.inv = -1; damage = remdamage; target = ti; tdamage = damage; with (global.charinstance[target]) { hurt = 1; hurttimer = 0; } hpdiff = tdamage; if (hpdiff >= global.hp[global.char[target]]) hpdiff = global.hp[global.char[target]] - 1; maxhpdiff = max(hpdiff, maxhpdiff); d_cancel = 0; if (hpdiff <= 1) { if (global.hp[global.char[target]] <= 0) { hpdiff = 0; d_cancel = 1; } else { hpdiff = 1; } } if (d_cancel == 0) { doomtype = -1; global.hp[global.char[target]] -= hpdiff; if ((instance_exists(global.charinstance[target]) && global.charinstance[target].visible == true) || i_ex(obj_climb_kris) || i_ex(obj_plat_player)) { var trg = -4; var nowriter = false; if (i_ex(obj_plat_player)) { trg = 910; if (ti > 0) { with (obj_plat_follower) { if (name == "susie" && other.ti == 1) trg = self; if (name == "ralsei" && other.ti == 2) trg = self; } if (trg == 910) { if (hpdiff == maxhpdiff) { with (dmgwriter) damage = maxhpdiff; } nowriter = true; } } } else if (i_ex(obj_climb_kris)) { trg = 1164; if (ti > 0) { with (obj_climb_susie) { if (name == "susie" && other.ti == 1) trg = self; if (name == "ralsei" && other.ti == 2) ...
();
781
    with (obj_darkcontroller)
782
        charcon = 1;
783
    with (obj_climb_kris)
784
        hittimer = 60;
785
    damagecon = 0;
786
}
787
climbmomentum -= 0.03;
788
if (climbmomentum <= 0)
789
    climbmomentum = 0;
790
if (caterpillartarget != -4 && (!i_ex(obj_climb_kris) || obj_climb_kris.exitcon == 1))
791
{
792
    caterpillartarget = -4;
793
    con = 999;
794
    var targx = 0;
795
    var targy = 0;
796
    if (object_index == obj_climb_ralsei)
797
    {
798
        sprite_index = spr_ralsei_jump_ball;
799
        image_speed = 0.25;
800
        x -= 20;
801
        y -= 20;
802
    }
803
    else
804
    {
805
        sprite_index = spr_susie_dw_jump_ball;
806
        image_speed = 0.25;
807
        x -= 20;
808
        y -= 20;
809
    }
810
    with (obj_caterpillarchara)
811
    {
812
        if (name == other.name)
813
        {
814
            targx = x;
815
            targy = y;
816
        }
817
    }
818
    var jumpstrength = 8;
819
    if (global.facing == 2)
820
        jumpstrength = 12;
821
    var __jump = 
scr_jump_to_point
scr_jump_to_point

function
scr_jump_to_point(arg0, arg1, arg2, arg3, arg4 = 0)
{ var ___jump =
scr_jump_to_point_sprite(arg0, arg1, arg2, arg3, 0, 0);
with (___jump) { trackalpha = arg4; trackblend = arg4; trackindex = arg4; tracksprite = arg4; trackangle = arg4; } return ___jump; }
(targx, targy, jumpstrength, 15);
822
    con = 999;
823
    __jump.end_step = true;
824
    with (__jump)
825
        scr_delay_var("image_alpha", 0, 15);
826
    scr_delay_var("image_alpha", 0, 15);
827
    
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ var _doom = instance_create_depth(0, 0, 0, obj_doom); with (_doom) { alarm[0] target = arg0; } return _doom; }
(self, 16);
828
    exit;
829
}