Deltarune (Chapter 2) script viewer

← back to main script listing

gml_Object_obj_berdlyb_chirashibullet_Step_0

(view raw script w/o annotations or w/e)
1
if (phase > 1 && image_blend != c_white)
2
{
3
    color_timer += 0.1;
4
    image_blend = merge_color(c_gray, c_white, color_timer);
5
}
6
switch (phase)
7
{
8
    case 0:
9
        if (delay == 0)
10
            image_alpha = 0;
11
        if (delay >= timer)
12
        {
13
            image_alpha = 1;
14
            phase++;
15
        }
16
        else
17
        {
18
            delay++;
19
        }
20
        break;
21
    case 1:
22
        var lerpValue = lerpPoint / 15;
23
        ease = -1 * lerpValue * (lerpValue - 2);
24
        x = lerp(startx, ___myrememberx, ease);
25
        y = lerp(starty, ___myremembery, ease);
26
        lerpPoint++;
27
        image_angle += (rotationSpeed * rotationDir);
28
        if (lerpPoint > 15)
29
            phase++;
30
        break;
31
    case 2:
32
        if (difficulty == 1)
33
        {
34
            targetAngle = (205 - ((targetAngle - 205) * 0.75)) + random_range(-10, 10);
35
        }
36
        else if (difficulty == 0)
37
        {
38
            targetAngle = point_direction(___myrememberx, ___myremembery, obj_heart.x, obj_heart.y);
39
            targetAngle += random_range(-10, 10);
40
        }
41
        else
42
        {
43
            targetAngle = point_direction(___myrememberx, ___myremembery, obj_growtangle.x, obj_growtangle.y);
44
            targetAngle = 210 - ((targetAngle - 210) * 1.1);
45
        }
46
    case 3:
47
        timer++;
48
        if (rotationSpeed > 2)
49
            rotationSpeed -= 1;
50
        image_angle += (rotationSpeed * rotationDir);
51
        if (timer >= (6 + (fireoffset / 2)))
52
        {
53
            timer = 0;
54
            phase++;
55
            rotationDir = sign(angle_difference(image_angle, targetAngle));
56
            if (rotationDir == 0)
57
                rotationDir = 1;
58
        }
59
        break;
60
    case 4:
61
        image_angle += (min(abs(angle_difference(image_angle, targetAngle)), 40) * rotationDir);
62
        timer++;
63
        if (timer >= (4 + (fireoffset / 2)))
64
        {
65
            direction = targetAngle;
66
            image_angle = targetAngle;
67
            active = true;
68
            phase++;
69
            gravity = random_range(0.5, 0.7);
70
            gravity_direction = targetAngle;
71
            speed = -2;
72
        }
73
        break;
74
    case 5:
75
        image_index = clamp(0, sprite_get_number(sprite_index) - 1, floor(speed / 2));
76
}