Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_attack_knifechain_manager_Step_0

(view raw script w/o annotations or w/e)
1
siner++;
2
if (init == 0)
3
{
4
    init = 1;
5
    knifestartx = x;
6
    knifestarty = y;
7
    knifestartangle = 150;
8
    if (side == 1)
9
        knifestartangle = 210;
10
    knifemaxradius = 0;
11
    radiusoffset = 0;
12
    lerpamt = 0;
13
    if (side == 1)
14
        radiusoffset = 21;
15
    for (i = 0; i < knifeqty; i++)
16
    {
17
        knife[i] = instance_create(knifestartx, knifestarty, obj_regularbullet);
18
        knife[i].active = 1;
19
        knife[i].sprite_index = spr_attack_knifechain;
20
        knife[i].destroyonhit = 0;
21
        knife[i].wall_destroy = 0;
22
        
scr_darksize
scr_darksize

function
scr_darksize()
{ var inst = id; if (argument_count) inst = argument0; inst.image_xscale = 2; inst.image_yscale = 2; }
(knife[i]);
23
        if (i == 0)
24
            knife[i].image_alpha = 0;
25
        knifeangle[i] = knifestartangle;
26
        knife[i].previousangle = knifeangle[i];
27
        kniferadius[i] = 0;
28
        knife[i].image_angle = knifestartangle + 180;
29
    }
30
}
31
if (type == 0)
32
{
33
    var endtime = 170;
34
    timer++;
35
    if (timer < 45)
36
    {
37
        lerpamt += 0.05;
38
        if (lerpamt > 1)
39
            lerpamt = 1;
40
        knifemaxradius = lerp_ease_inout(0, truemaxradius, lerpamt, 3);
41
    }
42
    if (timer >= 20)
43
    {
44
        for (i = 0; i < knifeqty; i++)
45
        {
46
            if (i_ex(knife[i]))
47
            {
48
                var movingside = 0;
49
                if ((knifeangle[i] - knife[i].previousangle) > 0)
50
                    movingside = 1;
51
                else
52
                    movingside = -1;
53
                if (timer <= 30)
54
                {
55
                    if (side == 1)
56
                        movingside = -1;
57
                    if (side == 0)
58
                        movingside = 1;
59
                }
60
                knife[i].image_angle = lerp(knife[i].image_angle, knifeangle[i] - (90 * movingside), 0.25);
61
                knife[i].previousangle = knifeangle[i];
62
            }
63
        }
64
    }
65
    if (timer >= 20 && timer < endtime)
66
    {
67
        kniferotateamount = 2.5;
68
        if (side == 1)
69
            kniferotateamount *= -1;
70
        if (extend == true)
71
            knifemaxradius += (sin(timer / 30) * kniferotateamount);
72
        knifeangle[0] += sin(timer / rotatespeed) * kniferotateamount;
73
    }
74
    if (timer >= endtime)
75
    {
76
        for (i = 0; i < knifeqty; i++)
77
        {
78
            if (i_ex(knife[i]))
79
            {
80
                with (knife[i])
81
                    active = 0;
82
            }
83
        }
84
        knifemaxradius = lerp(knifemaxradius, 0, 0.25);
85
    }
86
    if (timer >= (endtime + 20))
87
        instance_destroy();
88
}
89
var i = knifeqty - 1;
90
while (i > 0)
91
{
92
    if (whip == true)
93
        knifeangle[i] = lerp(knifeangle[i], knifeangle[i - 1], 0.4);
94
    else
95
        knifeangle[i] = knifeangle[0];
96
    i--;
97
}
98
for (i = 0; i < knifeqty; i++)
99
{
100
    if (i_ex(knife[i]))
101
    {
102
        kniferadius[i] = (knifemaxradius / knifeqty) * i;
103
        knife[i].x = knifestartx + lengthdir_x(kniferadius[i] + radiusoffset, knifeangle[i]);
104
        knife[i].y = knifestarty + lengthdir_y(kniferadius[i] + radiusoffset, knifeangle[i]);
105
    }
106
}