Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_climb_kris_Step_0

(view raw script w/o annotations or w/e)
1
if (startofroom == 1)
2
{
3
    var roomw = room_width;
4
    var roomh = room_height;
5
    var vieww = view_wport[0];
6
    var viewh = view_hport[0];
7
    var _cameralerpspeed = 0.16;
8
    var xnudge = 0;
9
    var ynudge = 0;
10
    var nudger = instance_place(x, y, obj_camera_nudger);
11
    with (nudger)
12
    {
13
        xnudge = xamt;
14
        ynudge = yamt;
15
        if (lerpstrength != -4)
16
            _cameralerpspeed = lerpstrength;
17
    }
18
    var camx = clamp((x - floor(vieww / 2)) + xnudge, 0, roomw - vieww);
19
    var camy = clamp((y - floor(viewh / 2)) + ynudge + naturalybias, 0, roomh - viewh);
20
    var clamper = instance_place(x, y, obj_camera_clamper);
21
    if (i_ex(clamper))
22
    {
23
        var lclamp = 0;
24
        var rclamp = roomw - vieww;
25
        var uclamp = 0;
26
        var dclamp = roomh - viewh;
27
        if (clamper.xmin != -4)
28
            lclamp = clamper.xmin;
29
        if (clamper.xmax != -4)
30
            rclamp = clamper.xmax;
31
        if (clamper.ymin != -4)
32
            uclamp = clamper.ymin;
33
        if (clamper.ymax != -4)
34
            dclamp = clamper.ymax;
35
        if (clamper.lerpstrength != -4)
36
            _cameralerpspeed = clamper.lerpstrength;
37
        camx = clamp(camx, lclamp, rclamp);
38
        camy = clamp(camy, uclamp, dclamp);
39
        camerax_set(camx);
40
        cameray_set(camy);
41
    }
42
    with (obj_caterpillarchara)
43
        image_alpha = 0;
44
    startofroom = 0;
45
}
46
var overlapping_trigger = instance_place(x, y, obj_climb_destructableareatrigger);
47
if (overlapping_trigger != -4)
48
{
49
    with (overlapping_trigger)
50
        event_user(2);
51
}
52
var this_frame_directions = [];
53
var buffer_length = ceil(5 - (climbmomentum * 2));
54
if (buffer_length >= 5)
55
    buffer_length = 4;
56
if ((up_h() || upbuffer > 0) || forceclimb)
57
{
58
    if (up_h() && dir != 2)
59
    {
60
        upbuffer = buffer_length;
61
        leftbuffer = 0;
62
        rightbuffer = 0;
63
        downbuffer = 0;
64
    }
65
    array_push(this_frame_directions, 2);
66
}
67
if ((down_h() || downbuffer > 0) && !forceclimb)
68
{
69
    if (down_h() && dir != 0)
70
    {
71
        upbuffer = 0;
72
        leftbuffer = 0;
73
        rightbuffer = 0;
74
        downbuffer = buffer_length;
75
    }
76
    array_push(this_frame_directions, 0);
77
}
78
if ((right_h() || rightbuffer > 0) && !forceclimb)
79
{
80
    if (right_h() && dir != 1)
81
    {
82
        upbuffer = 0;
83
        leftbuffer = 0;
84
        rightbuffer = buffer_length;
85
        downbuffer = 0;
86
    }
87
    array_push(this_frame_directions, 1);
88
}
89
if ((left_h() || leftbuffer > 0) && !forceclimb)
90
{
91
    if (left_h() && dir != 3)
92
    {
93
        upbuffer = 0;
94
        leftbuffer = buffer_length;
95
        rightbuffer = 0;
96
        downbuffer = 0;
97
    }
98
    array_push(this_frame_directions, 3);
99
}
100
var num_inputs = array_length(this_frame_directions);
101
var used_input = -1;
102
var cancelled_slip = false;
103
if (num_inputs == 0)
104
{
105
    currentdir = -1;
106
}
107
else if (num_inputs == 1 || currentdir == -1)
108
{
109
    currentdir = this_frame_directions[0];
110
    used_input = currentdir;
111
}
112
else
113
{
114
    for (var i = 0; i < array_length(this_frame_directions); i++)
115
    {
116
        if (this_frame_directions[i] == currentdir || this_frame_directions[i] == recently_bumped)
117
        {
118
            cancelled_slip = cancelled_slip || this_frame_directions[i] == recently_bumped;
119
            array_delete(this_frame_directions, i, 1);
120
            i--;
121
        }
122
    }
123
    if (array_length(this_frame_directions) > 0)
124
    {
125
        used_input = this_frame_directions[0];
126
        cancelled_slip = used_input == previous_bump;
127
    }
128
    else if (currentdir != previous_bump && currentdir != recently_bumped)
129
    {
130
        used_input = currentdir;
131
        cancelled_slip = false;
132
    }
133
    else
134
    {
135
        used_input = currentdir;
136
        cancelled_slip = true;
137
    }
138
}
139
var lastdir = dir;
140
if (jumping == 0)
141
{
142
    if (used_input >= 0 && (jumping > 0 || neutralcon == 1 || graboncon > 0 || slipcon == 2 || jumpchargecon > 0))
143
        dir = used_input;
144
}
145
if (canjump)
146
{
147
    if (button1_h() && !forceclimb && !forcereleasejump)
148
    {
149
        if (button1buffer < 2)
150
            button1buffer = 2;
151
    }
152
    if (button1_p() && !forceclimb)
153
    {
154
        if (button1buffer < 3)
155
        {
156
            button1buffer = 3;
157
            button2buffer = 0;
158
        }
159
    }
160
    if (!button1_h())
161
        forcereleasejump = false;
162
}
163
else
164
{
165
    button1buffer = 0;
166
    button2buffer = 0;
167
}
168
if ((slipcon == 2 && sliptimer > 2 && !cancelled_slip) && neutralcon != 1 && ((used_input >= 0 && lastdir != used_input) || (button1buffer > 0 && button2buffer == 0)))
169
{
170
    sliptimer = min(sliptimer, 2);
171
    climbmomentum = 0;
172
    climbspeed = 1;
173
}
174
if (global.inv <= 0 && global.interact == 0)
175
{
176
    var bulletcheck = collision_rectangle(bbox_left + 14, bbox_top + 14, bbox_right - 14, bbox_bottom - 14, obj_climb_bullet, true, true);
177
    if (invincible)
178
        bulletcheck = -4;
179
    if (jumping == 0)
180
    {
181
        if (bulletcheck == -4)
182
        {
183
            var reposition = x;
184
            if (onrotatingtower && x >= (obj_rotating_tower_controller_new.tower_circumference - 20))
185
                x -= obj_rotating_tower_controller_new.tower_circumference;
186
            bulletcheck = collision_rectangle(bbox_left + 14, bbox_top + 14, bbox_right - 14, bbox_bottom - 14, obj_climb_enemy, true, true);
187
            x = reposition;
188
            if (bulletcheck != -4)
189
            {
190
                if (bulletcheck.active == 0)
191
                    bulletcheck = -4;
192
            }
193
        }
194
    }
195
    if (bulletcheck != -4)
196
    {
197
        damage = bulletcheck.damage;
198
        if (variable_instance_exists(bulletcheck, "target"))
199
            target = bulletcheck.target;
200
        damagecon = 1;
201
    }
202
}
203
var cancelcon = 0;
204
if (global.interact == 0)
205
{
206
    var _list = ds_list_create();
207
    var _num = instance_place_list(x, y, 538, _list, false);
208
    if (ds_list_size(_list) > 0)
209
    {
210
        for (var i = 0; i < ds_list_size(_list); i++)
211
        {
212
            var obstacle = ds_list_find_value(_list, i);
213
            if (obstacle.object_index == obj_climb_door)
214
            {
215
                with (obstacle)
216
                    event_user(9);
217
            }
218
            if (obstacle.object_index == obj_climb_orb)
219
            {
220
                if (obstacle.con == 0)
221
                    obstacle.con = 1;
222
            }
223
            if (obstacle.object_index == obj_climb_destructableclimbarea)
224
            {
225
                if (obstacle.con == 0)
226
                    obstacle.con = 1;
227
            }
228
            var isInteract = false;
229
            if (obstacle.object_index == obj_climb_interact)
230
                isInteract = true;
231
            with (obstacle)
232
            {
233
                if (object_get_parent(obj_climb_interact))
234
                    isInteract = true;
235
            }
236
            if (isInteract == true)
237
            {
238
                if (variable_instance_exists(obstacle, "myinteract"))
239
                {
240
                    if (obstacle.myinteract == 0)
241
                        obstacle.myinteract = 3;
242
                }
243
            }
244
            var _enemy = false;
245
            with (obstacle)
246
            {
247
                if (object_get_parent(obj_climb_enemy))
248
                    _enemy = true;
249
            }
250
            if (obstacle.object_index == obj_climb_enemy)
251
                _enemy = true;
252
            if (_enemy)
253
            {
254
                if (jumping == 1 && climbcon == 2)
255
                {
256
                    if (variable_instance_exists(obstacle, "damagecon"))
257
                    {
258
                        if (obstacle.damagecon == 0)
259
                        {
260
                            snd_play(snd_noise);
261
                            climbcon = 10;
262
                            cuttimer = 0;
263
                            obstacle.damagecon = 1;
264
                        }
265
                    }
266
                }
267
            }
268
        }
269
    }
270
    ds_list_destroy(_list);
271
}
272
if (cancelcon)
273
{
274
    jumpchargeamount = 0;
275
    jumpchargetimer = 0;
276
    snd_stop(snd_chargeshot_charge);
277
    jumping = 0;
278
    climbcon = 0;
279
    neutralcon = 0;
280
    slipcon = 0;
281
    image_blend = c_white;
282
}
283
if (fallingcon > 0)
284
{
285
    if (fallingcon == 1)
286
    {
287
        sprite_index = spr_kris_climb_new_slip_fall;
288
        image_index = 0;
289
        fallingspeed = 0;
290
        fallingcon = 2;
291
        neutralcon = 0;
292
        snd_stop(snd_chargeshot_charge);
293
        image_blend = c_white;
294
        jumping = 0;
295
        jumpchargecon = 0;
296
        climbcon = 0;
297
        climbmomentum = 0;
298
    }
299
    if (fallingcon == 2)
300
    {
301
        var landing = instance_place(x, y, obj_climb_landingstrip);
302
        if (i_ex(landing))
303
        {
304
            landingstrip = landing;
305
            neutralcon = -1;
306
            climbcon = -1;
307
            jumpchargecon = -1;
308
            fallingcon = -1;
309
            graboncon = -1;
310
            damagecon = -1;
311
            camera = 0;
312
            timer = 0;
313
            exitcon = 1;
314
        }
315
        fallingspeed += 0.5;
316
        if (fallingspeed >= fall_speed_cap)
317
            fallingspeed = fall_speed_cap;
318
        if (fallingspeed >= 20)
319
            naturalybias = min(naturalybias + 2, 80);
320
        if (falldir == 0)
321
            y += ceil(fallingspeed);
322
        if (falldir == 1)
323
            x += ceil(fallingspeed);
324
        if (falldir == 2)
325
            y -= ceil(fallingspeed);
326
        if (falldir == 3)
327
            x -= ceil(fallingspeed);
328
        fallingtimer--;
329
        if (fallingtimer <= 0)
330
        {
331
            if (grabon)
332
            {
333
                grabx = remx + (round((x - remx) / 40) * 40);
334
                graby = remy + (round((y - remy) / 40) * 40);
335
                if (onrotatingtower && grabx > obj_rotating_tower_controller_new.tower_circumference)
336
                    grabx -= obj_rotating_tower_controller_new.tower_circumference;
337
                if (onrotatingtower && grabx < 0)
338
                    grabx += obj_rotating_tower_controller_new.tower_circumference;
339
                if (place_meeting(grabx, graby, obj_climb_climbable))
340
                {
341
                    grabontimer = 15;
342
                    graboncon = 1;
343
                    dir = -1;
344
                    fallingcon = 0;
345
                }
346
            }
347
            var howlongfall = 660;
348
            if (instance_exists(obj_dw_churchc_prophecies))
349
                howlongfall = 9999999;
350
            if (restorefromfalling)
351
            {
352
                if (graboncon == 0)
353
                {
354
                    if (y >= (cameray() + howlongfall))
355
                    {
356
                        fallingcon = 0;
357
                        restorefromfallingcon = 1;
358
                    }
359
                }
360
            }
361
        }
362
    }
363
}
364
if (graboncon > 0)
365
{
366
    if (graboncon == 1)
367
    {
368
        sprite_index = spr_kris_climb_new_charge;
369
        image_index = 2;
370
        graboncon = 2;
371
    }
372
    if (graboncon == 2)
373
    {
374
        snd_stop(snd_wing);
375
        snd_play_x(snd_wing, 0.7, 0.6 + random(0.3));
376
        if ((siner % 2) == 0)
377
        {
378
            var dust = instance_create(x, y, obj_animation);
379
            dust.sprite_index = spr_slidedust;
380
            dust.image_xscale = 2;
381
            dust.image_yscale = 2;
382
            dust.image_speed = 0.5;
383
            dust.vspeed = -3;
384
            dust.hspeed = random_range(-1, 1);
385
            dust.depth = depth + 10;
386
            if (i_ex(obj_rotating_tower_controller_new) && i_ex(obj_climb_kris))
387
            {
388
                dust.x = obj_rotating_tower_controller_new.tower_x;
389
                dust.depth = obj_rotating_tower_controller_new.depth - 4;
390
            }
391
        }
392
        if (fallingspeed > 7)
393
            fallingspeed = 7;
394
        fallingspeed--;
395
        if (falldir == 0)
396
            y += fallingspeed;
397
        if (falldir == 1)
398
            x += fallingspeed;
399
        if (falldir == 2)
400
            y -= fallingspeed;
401
        if (falldir == 3)
402
            x -= fallingspeed;
403
        if (fallingspeed <= 0)
404
        {
405
            grabonclimbtimer = 0;
406
            graboncon = 3;
407
            remfalleny = y;
408
            remfallenx = x;
409
            if ((remfallenx - grabx) > 180)
410
                remfallenx -= obj_rotating_tower_controller_new.tower_circumference;
411
            if ((remfallenx - grabx) < -180)
412
                remfallenx += obj_rotating_tower_controller_new.tower_circumference;
413
        }
414
    }
415
    if (graboncon == 3)
416
    {
417
        grabonclimbtimer++;
418
        var initwait = 7;
419
        var waittime = 8;
420
        if (grabonclimbtimer >= initwait)
421
        {
422
            y = lerp_ease_inout(remfalleny, graby, (grabonclimbtimer / waittime) - (initwait / waittime), 2);
423
            x = lerp_ease_inout(remfallenx, grabx, (grabonclimbtimer / waittime) - (initwait / waittime), 2);
424
        }
425
        if (grabonclimbtimer >= (waittime + initwait))
426
        {
427
            if (onrotatingtower)
428
            {
429
                x = (floor(x / 40) * 40) + 20;
430
                y = (floor(y / 40) * 40) + 20;
431
            }
432
            else
433
            {
434
                x = round(x / 10) * 10;
435
                y = round(y / 10) * 10;
436
            }
437
            graboncon = 0;
438
            neutralcon = 1;
439
            checkdamagefloor = 1;
440
            with (obj_rotating_tower_controller_new)
441
                checkdamagefloor = 1;
442
        }
443
    }
444
}
445
if (restorefromfallingcon > 0)
446
{
447
    if (restorefromfallingcon == 1)
448
    {
449
        damage = 30;
450
        damagecon = 1;
451
    }
452
    else if (restorefromfallingcon == 20)
453
    {
454
        x = safex;
455
        y = safey;
456
        neutralcon = 1;
457
    }
458
    restorefromfallingcon++;
459
}
460
if (neutralcon == 1)
461
{
462
    sprite_index = spr_kris_climb_new;
463
    image_index = climbindex;
464
    remx = x;
465
    remy = y;
466
    if (!place_meeting(x, y, obj_climb_notsafe))
467
    {
468
        safex = x;
469
        safey = y;
470
    }
471
    if (global.interact == 0)
472
    {
473
        if (button1buffer > 0 && button2buffer <= 0)
474
        {
475
            climbmomentum = 0;
476
            button1buffer = 4;
477
            neutralcon = 0;
478
            jumpchargecon = 1;
479
            dir = 0;
480
            if (xclimb > 0)
481
                dir = 1;
482
            if (xclimb < 0)
483
                dir = 3;
484
            if (yclimb < 0)
485
                dir = 2;
486
        }
487
        else if (currentdir >= 0)
488
        {
489
            climbcon = 1;
490
            neutralcon = 0;
491
        }
492
        else
493
        {
494
            climbmomentum *= 0.5;
495
        }
496
        var climb_ender = instance_place(x, y, obj_climbstarter);
497
        if (!i_ex(climb_ender) && i_ex(obj_rotating_tower_controller_new))
498
        {
499
            var xx = obj_rotating_tower_controller_new.tower_x - 20;
500
            var yy = obj_rotating_tower_controller_new.krisy - 20;
501
            climb_ender = instance_place(xx, yy, obj_climbstarter);
502
        }
503
        if (i_ex(climb_ender))
504
        {
505
            if (used_input == 0 && climb_ender.e_down)
506
                myexit = climb_ender;
507
            if (used_input == 3 && climb_ender.e_left)
508
                myexit = climb_ender;
509
            if (used_input == 2 && climb_ender.e_up)
510
                myexit = climb_ender;
511
            if (used_input == 1 && climb_ender.e_right)
512
                myexit = climb_ender;
513
        }
514
        if (i_ex(myexit))
515
        {
516
            global.facing = dir;
517
            with (obj_climbloc)
518
            {
519
                if (exitmarkerflag == other.myexit.exitmarkerflag)
520
                    other.myexitloc = id;
521
            }
522
            with (obj_krmarker)
523
            {
524
                if (extflag == other.myexit.exitmarkerflag)
525
                {
526
                    global.facing = image_index;
527
                    other.myexitloc = id;
528
                }
529
            }
530
            neutralcon = -1;
531
            climbcon = -1;
532
            jumpchargecon = -1;
533
            fallingcon = -1;
534
            graboncon = -1;
535
            damagecon = -1;
536
            camera = 0;
537
            timer = 0;
538
            exitcon = 1;
539
        }
540
    }
541
}
542
if (exitcon == 1)
543
{
544
    var landing = false;
545
    if (landingstrip != -1)
546
    {
547
        myexitloc = landingstrip;
548
        landing = true;
549
    }
550
    if (i_ex(myexitloc))
551
    {
552
        var endingx = myexitloc.x;
553
        var endingy = myexitloc.y;
554
        if (myexitloc == landingstrip)
555
        {
556
            endingx = x - 20;
557
            endingy = myexitloc.y - 60;
558
        }
559
        timer++;
560
        if (timer == 1)
561
        {
562
            endtime = 16;
563
            if (!landing)
564
            {
565
                snd_play(snd_wing);
566
            }
567
            else
568
            {
569
                snd_play(snd_noise);
570
                visible = false;
571
                with (
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)
{ var thismarker = instance_create(arg0, arg1, obj_marker); 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) { 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 thismarker = instance_create_depth(xloc, yloc, arg1, obj_marker); 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]; }
(x - 30, y - 54, spr_kris_dw_landed, 2, 2, 0, undefined, undefined, depth, undefined, endtime, 1))
572
                    
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); }
();
573
                global.facing = 0;
574
                with (obj_caterpillarchara)
575
                {
576
                    if (name == "susie")
577
                        setxy((other.x - 80) + 4, other.y - 20 - 42);
578
                    if (name == "ralsei")
579
                        setxy((other.x + 80) - 44, other.y - 20 - 44);
580
                    scr_caterpillar_interpolate_old();
581
                }
582
            }
583
            _camerax = camerax();
584
            _cameray = cameray();
585
            var endcamx = endingx - floor((__view_get(e__VW.WView, 0) / 2) - 18);
586
            var endcamy = endingy - floor((__view_get(e__VW.HView, 0) / 2) - 38);
587
            endcamx = clamp(endcamx, 0, room_width - 640);
588
            endcamy = clamp(endcamy, 0, room_height - 480);
589
            var clamper = -4;
590
            with (myexitloc)
591
                clamper = instance_place(x, y, obj_camera_clamper);
592
            if (i_ex(clamper))
593
            {
594
                var roomw = room_width;
595
                var roomh = room_height;
596
                var vieww = view_wport[0];
597
                var viewh = view_hport[0];
598
                var lclamp = 0;
599
                var rclamp = roomw - vieww;
600
                var uclamp = 0;
601
                var dclamp = roomh - viewh;
602
                if (clamper.xmin != -4)
603
                    lclamp = clamper.xmin;
604
                if (clamper.xmax != -4)
605
                    rclamp = clamper.xmax;
606
                if (clamper.ymin != -4)
607
                    uclamp = clamper.ymin;
608
                if (clamper.ymax != -4)
609
                    dclamp = clamper.ymax;
610
                endcamx = clamp(endcamx, lclamp, rclamp);
611
                endcamy = clamp(endcamy, uclamp, dclamp);
612
            }
613
            
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; }
("_camerax", _camerax, endcamx, endtime - 1);
614
            
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; }
("_cameray", _cameray, endcamy, endtime - 1);
615
            if (!landing)
616
            {
617
                sprite_index = spr_kris_jump_ball;
618
                image_speed = 0.25;
619
                x -= 20;
620
                y -= 20;
621
                if (onrotatingtower)
622
                {
623
                    x = obj_rotating_tower_controller_new.tower_x - 20;
624
                    onrotatingtower = false;
625
                }
626
                with (obj_caterpillarchara)
627
                {
628
                    var xoff = 0;
629
                    var yoff = 0;
630
                    if (name == "ralsei")
631
                    {
632
                        switch (global.facing)
633
                        {
634
                            case 0:
635
                                xoff = -20;
636
                                yoff = -28;
637
                                break;
638
                            case 1:
639
                                xoff = -40;
640
                                yoff = -12;
641
                                break;
642
                            case 2:
643
                                xoff = 18;
644
                                yoff = 8;
645
                                break;
646
                            case 3:
647
                                xoff = 40;
648
                                yoff = -12;
649
                                break;
650
                        }
651
                    }
652
                    if (name == "susie")
653
                    {
654
                        switch (global.facing)
655
                        {
656
                            case 0:
657
                                xoff = 12;
658
                                yoff = -32;
659
                                break;
660
                            case 1:
661
                                xoff = -20;
662
                                yoff = -16;
663
                                break;
664
                            case 2:
665
                                xoff = -26;
666
                                yoff = 4;
667
                                break;
668
                            case 3:
669
                                xoff = 8;
670
                                yoff = -16;
671
                                break;
672
                        }
673
                    }
674
                    setxy(endingx + xoff, endingy + yoff);
675
                    var targetexit = other.myexitloc;
676
                    var checkflag = "";
677
                    if (targetexit.object_index == obj_krmarker)
678
                        checkflag = targetexit.extflag;
679
                    else if (targetexit.object_index == obj_climb_landingstrip)
680
                        checkflag = "";
681
                    else
682
                        checkflag = targetexit.exitmarkerflag;
683
                    if (name == "susie")
684
                    {
685
                        with (obj_sumarker)
686
                        {
687
                            if (extflag == checkflag)
688
                                setxy(x, y, other);
689
                        }
690
                    }
691
                    if (name == "ralsei")
692
                    {
693
                        with (obj_ramarker)
694
                        {
695
                            if (extflag == checkflag)
696
                                setxy(x, y, other);
697
                        }
698
                    }
699
                }
700
            }
701
            var landingtype = 0;
702
            if (myexitloc == landingstrip)
703
                landingtype = 1;
704
            if (landingtype == 0)
705
            {
706
                var jumpstrength = 8;
707
                if (global.facing == 2)
708
                    jumpstrength = 12;
709
                
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; }
(endingx, endingy, jumpstrength, endtime);
710
                visible = 0;
711
            }
712
            if (landingtype == 1)
713
            {
714
            }
715
        }
716
        camerax_set(_camerax);
717
        cameray_set(_cameray);
718
        if (timer >= (1 + endtime))
719
        {
720
            if (!landing)
721
                snd_play(snd_noise);
722
            with (obj_mainchara)
723
            {
724
                setxy(endingx, endingy);
725
                visible = true;
726
                cutscene = false;
727
                global.interact = 0;
728
                freeze = false;
729
            }
730
            with (obj_caterpillarchara)
731
            {
732
                visible = 1;
733
                image_alpha = 0;
734
                var blendtime = 8;
735
                if (landing)
736
                    blendtime = 12;
737
                
scr_lerp_imageblend
scr_lerp_imageblend

function
scr_lerp_imageblend()
{ var lerpblend = instance_create(x, y, obj_lerpimageblend); lerpblend.target = argument0; lerpblend.color1 = argument1; lerpblend.color2 = argument2; var ___time = argument3; if (argument_count > 4) { var _style = argument4; var _ease = argument5; lerpblend.mylerp = scr_lerp_var_instance(lerpblend, "blendindex", 0, 1, ___time, _style, _ease); } else { lerpblend.mylerp = scr_lerp_var_instance(lerpblend, "blendindex", 0, 1, ___time); } with (lerpblend) alarm_set(0, ___time + 1); return lerpblend; }
(id, c_gray, c_white, blendtime);
738
                
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; }
("image_alpha", 0, 1, blendtime);
739
                
scr_var_delay
scr_var_delay

function
scr_var_delay(arg0, arg1, arg2)
{
scr_script_delayed(scr_var, arg2, arg0, arg1);
} function scr_var_delayed(arg0, arg1, arg2) {
scr_script_delayed(scr_var, arg2, arg0, arg1);
} function scr_delay_var(arg0, arg1, arg2) {
scr_script_delayed(scr_var, arg2, arg0, arg1);
}
("shadow_force_off", false, blendtime);
740
                
scr_caterpillar_interpolate
scr_caterpillar_interpolate

function
scr_caterpillar_interpolate(arg0 = "none")
{ if (arg0 == "all") { with (obj_caterpillarchara) scr_caterpillar_interpolate_old(); } else if (arg0 == "none") { if (object_index == obj_caterpillarchara) scr_caterpillar_interpolate_old(); } else { with (obj_caterpillarchara) { if (name == arg0) scr_caterpillar_interpolate_old(); } } } function scr_caterinterp(arg0 = "none") {
scr_caterpillar_interpolate(arg0);
} function scr_caterpillar_interpolate_old() { _newfacing =
scr_facing_letter_to_number(
scr_get_cardinal_direction(point_direction(x, y, obj_mainchara.x, obj_mainchara.y)));
remx[0] = obj_mainchara.x; remy[0] = obj_mainchara.y; facing[0] = _newfacing; for (_iaia = target; _iaia > 0; _iaia -= 1) { remx[_iaia] = lerp(obj_mainchara.x, x, _iaia / target); if (global.darkzone == 1) remy[_iaia] = lerp(obj_mainchara.y, y + 16, _iaia / target); else remy[_iaia] = lerp(obj_mainchara.y, y + 6, _iaia / target); facing[_iaia] = _newfacing; } }
();
741
                var newfacing = global.facing;
742
                if (name == "ralsei")
743
                {
744
                    with (obj_ramarker)
745
                    {
746
                        if (
scr_checklocation
scr_checklocation

function
scr_checklocation(arg0 = id, arg1, arg2, arg3 = 0)
{ if (!i_ex(arg0)) { debug_message("target instance does not exist"); return false; } if (abs(arg0.x - arg1) <= arg3 && abs(arg0.y - arg2) <= arg3) return true; else return false; }
(other.id, x, y, 4))
747
                            newfacing = image_index;
748
                    }
749
                }
750
                if (name == "susie")
751
                {
752
                    with (obj_sumarker)
753
                    {
754
                        if (
scr_checklocation
scr_checklocation

function
scr_checklocation(arg0 = id, arg1, arg2, arg3 = 0)
{ if (!i_ex(arg0)) { debug_message("target instance does not exist"); return false; } if (abs(arg0.x - arg1) <= arg3 && abs(arg0.y - arg2) <= arg3) return true; else return false; }
(other.id, x, y, 4))
755
                            newfacing = image_index;
756
                    }
757
                }
758
                
scr_caterpillar_facing
scr_caterpillar_facing

function
scr_caterpillar_facing(arg0 = 0, arg1 = "all")
{ with (obj_caterpillarchara) { if (name == arg1 || arg1 == "all") { for (var _i = 0; _i < 25; _i += 1) facing[_i] = arg0; } } }
(newfacing, name);
759
            }
760
            instance_destroy();
761
        }
762
    }
763
    else
764
    {
765
        neutralcon = 0;
766
    }
767
}
768
if (jumpchargecon > 0)
769
{
770
    if (jumpchargecon == 1)
771
    {
772
        climbmomentum = 0;
773
        x = remx;
774
        y = remy;
775
        jumpchargesfx = snd_loop(snd_chargeshot_charge);
776
        snd_pitch(jumpchargesfx, 0.4);
777
        snd_volume(jumpchargesfx, 0.3, 0);
778
        jumpchargetimer = 0;
779
        jumpchargeamount = 1;
780
        jumpchargecon = 2;
781
        sprite_index = spr_kris_climb_new_charge;
782
        image_index = 0;
783
    }
784
    if (jumpchargecon == 2)
785
    {
786
        var docharge = 0;
787
        if (button1buffer >= 2 || jumpchargetimer < 3)
788
            docharge = 1;
789
        if (button2_p())
790
            docharge = 2;
791
        if (docharge == 1)
792
        {
793
            if (dir == 2 || dir == 0)
794
                sprite_index = spr_kris_climb_new_charge;
795
            else if (dir == 1)
796
                sprite_index = spr_kris_climb_new_charge_right;
797
            else
798
                sprite_index = spr_kris_climb_new_charge_left;
799
            jumpchargetimer++;
800
            if (jumpchargetimer >= chargetime1)
801
            {
802
                image_index = 1;
803
                snd_pitch(jumpchargesfx, 0.5);
804
                jumpchargeamount = 2;
805
                image_blend = merge_color(c_white, c_teal, 0.2 + (floor(sin(jumpchargetimer / 2)) * 0.2));
806
            }
807
            if (jumpchargetimer >= chargetime2)
808
            {
809
                image_index = 2;
810
                jumpchargeamount = 3;
811
                snd_pitch(jumpchargesfx, 0.7);
812
                image_blend = merge_color(c_white, c_teal, 0.4 + (floor(sin(jumpchargetimer)) * 0.4));
813
                if ((jumpchargetimer % 8) == 0)
814
                {
815
                    var afterimage = 
scr_afterimage_grow
scr_afterimage_grow

function
scr_afterimage_grow()
{ afterimage = instance_create(x, y, obj_afterimage_grow); 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; afterimage.image_alpha = image_alpha; return afterimage; }
();
816
                    afterimage.image_alpha = 0.3;
817
                    if (i_ex(obj_rotating_tower_controller_new) && i_ex(obj_climb_kris))
818
                    {
819
                        afterimage.x = obj_rotating_tower_controller_new.tower_x;
820
                        afterimage.depth = obj_rotating_tower_controller_new.depth - 4;
821
                    }
822
                }
823
            }
824
        }
825
        if (docharge == 0)
826
        {
827
            jumpchargecon = 0;
828
            jumping = 1;
829
            climbcon = 1;
830
            image_blend = c_white;
831
            snd_stop(jumpchargesfx);
832
        }
833
        if (docharge == 2)
834
        {
835
            snd_play(snd_txttor, 0.7, 0.4);
836
            snd_play(snd_txtal, 0.7, 0.4);
837
            snd_play(snd_dtrans_heavypassing, 0.2, 1.8);
838
            button2buffer = 10;
839
            jumpchargecon = 0;
840
            jumpchargetimer = 0;
841
            neutralcon = 1;
842
            image_blend = c_white;
843
            snd_stop(jumpchargesfx);
844
        }
845
    }
846
}
847
if (slipcon > 0)
848
{
849
    if (slipcon == 1)
850
    {
851
        if (recently_bumped != dir)
852
        {
853
            previous_bump = recently_bumped;
854
            recently_bumped = dir;
855
        }
856
        snd_play(snd_bump);
857
        if (xclimb > 0)
858
            slipsprite = 5168;
859
        else if (xclimb < 0)
860
            slipsprite = 3591;
861
        sprite_index = slipsprite;
862
        image_index = 1;
863
        slipcon = 2;
864
    }
865
    if (slipcon == 2)
866
    {
867
        sliptimer--;
868
        if (sliptimer >= 3)
869
            image_index = 1;
870
        else
871
            image_index = 0;
872
        if (sliptimer <= 0)
873
        {
874
            slipbuffer = 30;
875
            slipcon = 0;
876
            if (fallingcon <= 0)
877
                neutralcon = 1;
878
        }
879
    }
880
}
881
if (climbcon > 0)
882
{
883
    if (climbcon == 1)
884
    {
885
        yclimb = 0;
886
        xclimb = 0;
887
        if (dir == 2)
888
            yclimb = -40;
889
        else if (dir == 3)
890
            xclimb = -40;
891
        else if (dir == 1)
892
            xclimb = 40;
893
        else
894
            yclimb = 40;
895
        var checkamount = 1;
896
        if (jumping == 1 && jumpchargeamount > 1)
897
            checkamount = jumpchargeamount;
898
        for (var i = checkamount; i >= 1; i--)
899
        {
900
            var testxclimb = xclimb * i;
901
            var testyclimb = yclimb * i;
902
            var finalclimbx = x + testxclimb;
903
            var finalclimbx2 = (x + testxclimb) - xclimb;
904
            var falseloopused = 0;
905
            if (falseloop)
906
            {
907
                if (finalclimbx > falseloopx[1])
908
                {
909
                    finalclimbx = (finalclimbx - falseloopx[1]) + falseloopx[0];
910
                    falseloopused = 1;
911
                }
912
                if (finalclimbx < falseloopx[0])
913
                {
914
                    finalclimbx = (finalclimbx - falseloopx[0]) + falseloopx[1];
915
                    falseloopused = 1;
916
                }
917
                if (finalclimbx2 > falseloopx[1])
918
                {
919
                    finalclimbx2 = (finalclimbx2 - falseloopx[1]) + falseloopx[0];
920
                    falseloopused = 1;
921
                }
922
                if (finalclimbx2 < falseloopx[0])
923
                {
924
                    finalclimbx2 = (finalclimbx2 - falseloopx[0]) + falseloopx[1];
925
                    falseloopused = 1;
926
                }
927
            }
928
            var tilesolidcollision = false;
929
            if (i_ex(obj_rotating_tower_controller_new))
930
            {
931
                if (finalclimbx < 0)
932
                    finalclimbx += obj_rotating_tower_controller_new.tower_circumference;
933
                var tilex = (finalclimbx / obj_rotating_tower_controller_new.tile_width) + 1;
934
                var tiley = (y + testyclimb) / obj_rotating_tower_controller_new.tile_height;
935
                if (obj_rotating_tower_controller_new.verticaltilecount > tiley && tiley >= 0)
936
                {
937
                    if (obj_rotating_tower_controller_new.tile_sprite[obj_rotating_tower_controller_new.xy(tilex, tiley)][0] == spr_church_climb_tile1)
938
                        tilesolidcollision = true;
939
                }
940
            }
941
            with (instance_place(finalclimbx2, (y + testyclimb) - yclimb, obj_climbstarter))
942
            {
943
                if (tilesolidcollision == false && ((other.dir == 2 && e_up) || (other.dir == 0 && e_down) || (other.dir == 3 && e_left) || (other.dir == 1 && e_right)))
944
                {
945
                    if (falseloopused)
946
                        other.remx = finalclimbx - testxclimb;
947
                    other.xclimb = testxclimb;
948
                    other.yclimb = testyclimb;
949
                    snd_play_x(snd_wing, 0.6, 1.1 + random(0.1));
950
                    sprite_index = spr_kris_climb_new;
951
                    if (other.climbindex == 0)
952
                        other.climbindex = 2;
953
                    else
954
                        other.climbindex = 0;
955
                    other.climbcon = 2;
956
                    other.climbtimer = 0;
957
                    break;
958
                }
959
            }
960
            if (climbcon == 2)
961
                break;
962
            if (place_meeting(finalclimbx, y + testyclimb, obj_climb_climbable) && tilesolidcollision == false)
963
            {
964
                if (falseloopused)
965
                    remx = finalclimbx - testxclimb;
966
                xclimb = testxclimb;
967
                yclimb = testyclimb;
968
                snd_play_x(snd_wing, 0.6, 1.1 + random(0.1));
969
                sprite_index = spr_kris_climb_new;
970
                if (climbindex == 0)
971
                    climbindex = 2;
972
                else
973
                    climbindex = 0;
974
                climbcon = 2;
975
                climbtimer = 0;
976
                break;
977
            }
978
        }
979
        if (climbcon != 2)
980
        {
981
            sliptimer = 8 + (climbmomentum * 4);
982
            if (jumping == 1)
983
                sliptimer = 8 + (jumpchargeamount * 3);
984
            climbcon = 0;
985
            slipcon = 1;
986
            jumping = 0;
987
        }
988
    }
989
    if (climbcon == 2)
990
    {
991
        if (xclimb > 0)
992
            slipsprite = 5168;
993
        else if (xclimb < 0)
994
            slipsprite = 3591;
995
        recently_bumped = -1;
996
        previous_bump = -1;
997
        if (climbtimer == 0)
998
        {
999
            var dust_amount = 1;
1000
            if (jumping)
1001
                dust_amount = 5;
1002
            for (var i = 0; i < dust_amount; i++)
1003
            {
1004
                var dust = instance_create(x, y, obj_animation);
1005
                dust.sprite_index = spr_climb_dust_small;
1006
                dust.depth = depth + 10;
1007
                if (i_ex(obj_rotating_tower_controller_new) && i_ex(obj_climb_kris))
1008
                {
1009
                    dust.x = obj_rotating_tower_controller_new.tower_x;
1010
                    dust.hspeed = -xclimb * 0.1;
1011
                    dust.depth = obj_rotating_tower_controller_new.depth - 4;
1012
                }
1013
                if (jumping)
1014
                {
1015
                    dust.x = dust.x + random_range(-10, 10);
1016
                    dust.y = dust.y + random_range(-10, 10);
1017
                }
1018
                else if (yclimb < 0)
1019
                {
1020
                    dust.x = (dust.x - 10) + (10 * climbindex);
1021
                }
1022
                else if (yclimb > 0)
1023
                {
1024
                    dust.x = (dust.x - 15) + (15 * climbindex);
1025
                }
1026
                else
1027
                {
1028
                    dust.y = dust.y + 10;
1029
                }
1030
                dust.image_xscale = 2;
1031
                dust.image_yscale = 2;
1032
                dust.image_speed = 0.5;
1033
                dust.vspeed += -1;
1034
            }
1035
        }
1036
        drawoffsety = 0;
1037
        var newx, newy, climbrate;
1038
        if (jumping == 0)
1039
        {
1040
            if (climbspeed < 1)
1041
                climbspeed = 1;
1042
            climbtimer += (climbspeed + climbmomentum);
1043
            climbrate = 10;
1044
            if (climbtimer >= climbrate)
1045
                climbtimer = climbrate;
1046
            newx = lerp_ease_inout(remx, remx + xclimb, climbtimer / climbrate, 2);
1047
            newy = lerp_ease_inout(remy, remy + yclimb, climbtimer / climbrate, 2);
1048
            image_index = climbindex;
1049
            if (abs(newx - remx) > 3 || abs(newy - remy) > 3)
1050
                image_index = 1 + climbindex;
1051
        }
1052
        else
1053
        {
1054
            climbtimer += 1;
1055
            climbrate = 6 + (jumpchargeamount * 2);
1056
            var clipamount = 4;
1057
            if (jumpchargeamount >= 2)
1058
                clipamount = 2;
1059
            if (climbtimer >= climbrate)
1060
                climbtimer = climbrate;
1061
            if (climbtimer >= (climbrate - clipamount))
1062
                climbtimer = climbrate;
1063
            newx = lerp_ease_out(remx, remx + xclimb, climbtimer / climbrate, 1);
1064
            newy = lerp_ease_out(remy, remy + yclimb, climbtimer / climbrate, 1);
1065
            drawoffsety = -sin((climbtimer / climbrate) * pi) * (2 * (jumpchargeamount - 1));
1066
            if (dir == 2 || dir == 0)
1067
            {
1068
                image_index = climbtimer / 2;
1069
                sprite_index = spr_kris_climb_new_jump_up;
1070
            }
1071
            else if (dir == 1)
1072
            {
1073
                if ((climbtimer / climbrate) > 0.5)
1074
                {
1075
                    sprite_index = spr_kris_climb_new_land_right;
1076
                }
1077
                else
1078
                {
1079
                    sprite_index = spr_kris_climb_new_slip_right;
1080
                    image_index = 0;
1081
                }
1082
            }
1083
            else if ((climbtimer / climbrate) > 0.5)
1084
            {
1085
                sprite_index = spr_kris_climb_new_land_left;
1086
            }
1087
            else
1088
            {
1089
                sprite_index = spr_kris_climb_new_slip_left;
1090
                image_index = 0;
1091
            }
1092
            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; }
();
1093
            afterimage.y = afterimage.y + drawoffsety;
1094
            afterimage.image_alpha = 0.2;
1095
            if (i_ex(obj_rotating_tower_controller_new) && i_ex(obj_climb_kris))
1096
            {
1097
                afterimage.x = obj_rotating_tower_controller_new.tower_x;
1098
                afterimage.hspeed = -xclimb * 0.1;
1099
                afterimage.depth = obj_rotating_tower_controller_new.depth - 4;
1100
            }
1101
            var climb_ender = instance_place(x - clamp(xclimb, -40, 40), y - clamp(yclimb, -40, 40), obj_climbstarter);
1102
            if (!i_ex(climb_ender) && i_ex(obj_rotating_tower_controller_new))
1103
            {
1104
                var xx = obj_rotating_tower_controller_new.tower_x - 20;
1105
                var yy = obj_rotating_tower_controller_new.krisy - 20;
1106
                climb_ender = instance_place(xx, yy, obj_climbstarter);
1107
            }
1108
            if (i_ex(climb_ender))
1109
            {
1110
                if (yclimb > 0 && climb_ender.e_down)
1111
                    myexit = climb_ender;
1112
                if (xclimb < 0 && climb_ender.e_left)
1113
                    myexit = climb_ender;
1114
                if (yclimb < 0 && climb_ender.e_up)
1115
                    myexit = climb_ender;
1116
                if (xclimb > 0 && climb_ender.e_right)
1117
                    myexit = climb_ender;
1118
            }
1119
            if (i_ex(myexit))
1120
            {
1121
                global.facing = dir;
1122
                with (obj_climbloc)
1123
                {
1124
                    if (exitmarkerflag == other.myexit.exitmarkerflag)
1125
                        other.myexitloc = id;
1126
                }
1127
                with (obj_krmarker)
1128
                {
1129
                    if (extflag == other.myexit.exitmarkerflag)
1130
                    {
1131
                        global.facing = image_index;
1132
                        other.myexitloc = id;
1133
                    }
1134
                }
1135
                neutralcon = -1;
1136
                climbcon = -1;
1137
                jumpchargecon = -1;
1138
                fallingcon = -1;
1139
                graboncon = -1;
1140
                damagecon = -1;
1141
                camera = 0;
1142
                timer = 0;
1143
                exitcon = 1;
1144
                exit;
1145
            }
1146
        }
1147
        x = newx;
1148
        y = newy;
1149
        if (climbtimer >= climbrate)
1150
        {
1151
            if (jumping == 1)
1152
                climbmomentum = jumpchargeamount / 2;
1153
            jumping = 0;
1154
            climbcon = 0;
1155
            jumpchargeamount = 0;
1156
            x = remx + xclimb;
1157
            y = remy + yclimb;
1158
            neutralcon = 1;
1159
            checkdamagefloor = 1;
1160
            with (obj_rotating_tower_controller_new)
1161
                checkdamagefloor = 1;
1162
        }
1163
    }
1164
    if (climbcon == 10)
1165
    {
1166
        sprite_index = spr_kris_climb_new_charge;
1167
        image_index = 2;
1168
        cuttimer++;
1169
        if (cuttimer == 1)
1170
            flashcon = 1;
1171
        if (cuttimer >= 5)
1172
            climbcon = 2;
1173
    }
1174
}
1175
if (checkdamagefloor)
1176
{
1177
    var hazardtile = instance_place(x, y, obj_climb_hazardtile);
1178
    if (i_ex(hazardtile))
1179
    {
1180
        damagecon = 1;
1181
        damage = hazardtile.damage;
1182
        if (variable_instance_exists(hazardtile, "target"))
1183
            target = hazardtile.target;
1184
    }
1185
    checkdamagefloor = 0;
1186
}
1187
if (damagecon == 1)
1188
{
1189
    if (target != 3)
1190
        
scr_damage
scr_damage

function
scr_damage()
{ if (global.inv < 0) {
scr_damage_cache();
var __element = 0; if (variable_instance_exists(id, "element") && is_real(element)) __element = element; if (global.chapter == 4 && i_ex(obj_hammer_of_justice_enemy)) obj_hammer_of_justice_enemy.gothitlastturn++; if (global.chapter == 4 && i_ex(obj_sound_of_justice_enemy)) obj_sound_of_justice_enemy.gothitlastturn++; if (global.chapter == 4 && i_ex(obj_guei_enemy)) obj_guei_enemy.gothitthisturn = true; if (global.chapter == 4 && global.encounterno == 157 && !i_ex(obj_herosusie) && !i_ex(obj_heroralsei)) damage = round(damage * 0.7); if (global.chapter == 4 && i_ex(obj_jackenstein_enemy) && obj_jackenstein_enemy.scaredycat) damage = round(damage * 1.5); with (obj_mike_minigame_controller) hurt = true; if (target < 3) { var skipthis = false; if (global.chapter == 4) { if (i_ex(obj_climb_kris)) skipthis = true; } if (!skipthis) { if (global.hp[global.char[target]] <= 0) {
scr_randomtarget_old();
target = mytarget; with (global.charinstance[target]) { image_blend = c_white; darkify = 0; } } } } var __remtarget = -1; if (target == 4) { __remtarget = 4;
scr_randomtarget_old();
target = mytarget; var getList = array_length(global.char); if ((global.hp[global.char[target]] / global.maxhp[global.char[target]]) < (
scr_party_hpaverage() / 2))
{
scr_randomtarget_old();
target = mytarget; } if ((global.hp[global.char[target]] / global.maxhp[global.char[target]]) < (
scr_party_hpaverage() / 2))
{
scr_randomtarget_old();
target = mytarget; } if (target == 0 && (global.hp[global.char[target]] / global.maxhp[global.char[target]]) < 0.35) {
scr_randomtarget_old();
target = mytarget; } with (global.charinstance[target]) { image_blend = c_white; darkify = 0; } } chartarget = 3; if (global.chapter == 4 && i_ex(obj_titan_enemy) && obj_titan_enemy.forcehitralsei) { damage *= 0.5; if (global.hp[3] > 0) target = 2; } if (global.chapter == 4 && i_ex(obj_sound_of_justice_enemy) && obj_sound_of_justice_enemy.phase == 2) { if (global.hp[1] > 0 && global.hp[2] < (global.maxhp[2] * 0.4)) target = 0; } if (i_ex(obj_titan_enemy) || i_ex(obj_titan_spawn_enemy)) { if ((target == 0 && (global.chararmor1[1] == 23 || global.chararmor2[1] == 23)) || (target == 1 && (global.chararmor1[2] == 23 || global.chararmor2[2] == 23)) || (target == 2 && (global.chararmor1[3] == 23 || global.chararmor2[3] == 23))) damage = round(damage * 0.5); } tdamage = damage; var oldcalculation = 0; if (target < 3) { if (oldcalculation) tdamage = ceil(tdamage - (global.battledf[target] * 3)); else tdamage =
scr_damage_calculation(tdamage, target);
chartarget = global.char[target]; if (global.charaction[target] == 10) tdamage = ceil((2 * tdamage) / 3); tdamage = ceil(tdamage *
scr_element_damage_reduction(__element, global.char[target]));
debug_message("The element is: " + string(__element)); if (tdamage < 1) ...
();
1191
    if (target == 3)
1192
        
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 (gameover == 1) { with (obj_event_manager) trigger_event(UnknownEnum.Value_1);
scr_gameover();
}
scr_damage_cache();
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); 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; 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)) { dmgwriter = instance_create(x, y, obj_dmgwriter); dmgwriter.damage = hpdiff; dmgwriter.type = doomtype; if (i_ex(obj_climb_kris)) { dmgwriter.x = obj_climb_kris.x; dmgwriter.y = obj_climb_kris.y; dmgwriter.ystart = obj_climb_kris.y; dmgwriter.depth = obj_climb_kris.depth - 100; if (obj_climb_kris.onrotatingtower == true) dmgwriter.x = camerax() + (camerawidth() / 2); } else { dmgwriter.x = global.charinstance[target].x; dmgwriter.y = (global.charinstance[target].y + global.charinstance[target].myheight) - 24; } } if (global.hp[global.char[target]] < 1) global.hp[global.char[target]] = 1; } } scr_damage_check(); target = remtarget; global.inv = global.invc * 40; } } enum UnknownEnum { Value_1 = 1 }
();
1193
    with (obj_darkcontroller)
1194
        charcon = 1;
1195
    hitcount++;
1196
    damagecon = 0;
1197
    if (onrotatingtower)
1198
    {
1199
        with (obj_rotating_tower_controller_new)
1200
        {
1201
            var px = other.x;
1202
            var py = other.y - 20;
1203
            var _tilex = px / tile_width_fine;
1204
            if (_tilex > horizontaltilecount)
1205
                _tilex -= horizontaltilecount;
1206
            if (_tilex < 0)
1207
                _tilex += horizontaltilecount;
1208
            global.heartx = (tower_x + tile_x[_tilex] + 10) - camerax();
1209
            global.hearty = py - cameray();
1210
        }
1211
    }
1212
    else
1213
    {
1214
        global.heartx = x - 6 - camerax();
1215
        global.hearty = y - 6 - cameray();
1216
    }
1217
}
1218
siner++;
1219
upbuffer--;
1220
leftbuffer--;
1221
downbuffer--;
1222
rightbuffer--;
1223
button1buffer--;
1224
slipbuffer--;
1225
climbmomentum -= 0.03;
1226
if (climbmomentum <= 0)
1227
    climbmomentum = 0;
1228
global.inv--;
1229
if (camera == 1)
1230
{
1231
    with (obj_mainchara)
1232
        cutscene = 1;
1233
    var roomw = room_width;
1234
    var roomh = room_height;
1235
    var vieww = view_wport[0];
1236
    var viewh = view_hport[0];
1237
    var _cameralerpspeed = 0.16;
1238
    var xnudge = 0;
1239
    var ynudge = 0;
1240
    var nudger = instance_place(x, y, obj_camera_nudger);
1241
    with (nudger)
1242
    {
1243
        xnudge = xamt;
1244
        ynudge = yamt;
1245
        if (lerpstrength != -4)
1246
            _cameralerpspeed = lerpstrength;
1247
    }
1248
    var camx = clamp((x - floor(vieww / 2)) + xnudge, 0, roomw - vieww);
1249
    var camy = clamp((y - floor(viewh / 2)) + ynudge + naturalybias, 0, roomh - viewh);
1250
    var clamper = instance_place(x, y, obj_camera_clamper);
1251
    if (i_ex(clamper))
1252
    {
1253
        var lclamp = 0;
1254
        var rclamp = roomw - vieww;
1255
        var uclamp = 0;
1256
        var dclamp = roomh - viewh;
1257
        if (clamper.xmin != -4)
1258
            lclamp = clamper.xmin;
1259
        if (clamper.xmax != -4)
1260
            rclamp = clamper.xmax;
1261
        if (clamper.ymin != -4)
1262
            uclamp = clamper.ymin;
1263
        if (clamper.ymax != -4)
1264
            dclamp = clamper.ymax;
1265
        if (clamper.lerpstrength != -4)
1266
            _cameralerpspeed = clamper.lerpstrength;
1267
        camx = clamp(camx, lclamp, rclamp);
1268
        camy = clamp(camy, uclamp, dclamp);
1269
    }
1270
    var idealcamx = 
scr_even
scr_even

function
scr_even(arg0)
{ return round(arg0 / 2) * 2; }
(lerp(camerax(), camx, _cameralerpspeed));
1271
    var idealcamy = 
scr_even
scr_even

function
scr_even(arg0)
{ return round(arg0 / 2) * 2; }
(lerp(cameray(), camy, _cameralerpspeed));
1272
    if (!onrotatingtower)
1273
        camerax_set(idealcamx);
1274
    cameray_set(idealcamy);
1275
}
1276
1277
enum e__VW
1278
{
1279
    XView,
1280
    YView,
1281
    WView,
1282
    HView,
1283
    Angle,
1284
    HBorder,
1285
    VBorder,
1286
    HSpeed,
1287
    VSpeed,
1288
    Object,
1289
    Visible,
1290
    XPort,
1291
    YPort,
1292
    WPort,
1293
    HPort,
1294
    Camera,
1295
    SurfaceID
1296
}