Deltarune (Chapter 2) script viewer

← back to main script listing

gml_Object_obj_sneo_splitbouncer_Step_0

(view raw script w/o annotations or w/e)
1
if (init == 0)
2
{
3
    image_xscale = size / 3;
4
    image_yscale = size / 3;
5
    hp = size;
6
    init = 1;
7
    speed = power(2, size - 1);
8
    if (direction == 0)
9
        direction = point_direction(x, y, obj_growtangle.x + random_range(-60, 60), obj_growtangle.y);
10
    if (size == 3)
11
        shrinksize = 6;
12
    if (size == 1)
13
        destroyonhit = 1;
14
    else if (size == 2)
15
        shrinksize = 3;
16
}
17
if (global.turntimer < 45)
18
{
19
    image_speed = 2;
20
    image_blend = c_red;
21
    friction = 0.25;
22
}
23
if (breaking > 0)
24
{
25
    breaking--;
26
    if (breaking == 0)
27
    {
28
        d = instance_create(x, y, obj_sneo_box_restore_effect);
29
        d.size = size;
30
        if (size == 3)
31
            d.size = 4;
32
        if (size == 3)
33
        {
34
            d = instance_create(x, y, obj_sneo_splitbouncer);
35
            var dir1 = irandom(3);
36
            d.direction = (dir1 * 90) + 45;
37
            d.size = 2;
38
            d = instance_create(x, y, obj_sneo_splitbouncer);
39
            d.direction = (((dir1 + irandom(2) + 1) % 4) * 90) + 45;
40
            d.size = 2;
41
        }
42
        else if (size == 2)
43
        {
44
            d = instance_create(x, y, obj_sneo_splitbouncer);
45
            var dir1 = irandom(3);
46
            d.direction = (dir1 * 90) + 45;
47
            d.size = 1;
48
            d = instance_create(x, y, obj_sneo_splitbouncer);
49
            d.direction = (((dir1 + 1) % 4) * 90) + 45;
50
            d.size = 1;
51
            d = instance_create(x, y, obj_sneo_splitbouncer);
52
            d.direction = (((dir1 + 2) % 4) * 90) + 45;
53
            d.size = 1;
54
        }
55
        instance_destroy();
56
    }
57
    exit;
58
}
59
if (y < (obj_shrinktangle.top + 6) && abs(angle_difference(direction, 90)) < 90)
60
{
61
    vspeed *= -1;
62
    obj_shrinktangle.top += shrinksize;
63
}
64
else if (x < (obj_shrinktangle.left + 6) && abs(angle_difference(direction, 180)) < 90)
65
{
66
    hspeed *= -1;
67
    obj_shrinktangle.left += shrinksize;
68
}
69
else if (y > (obj_shrinktangle.bottom - 6) && abs(angle_difference(direction, 270)) < 90)
70
{
71
    vspeed *= -1;
72
    obj_shrinktangle.bottom -= shrinksize;
73
}
74
else if (x > (obj_shrinktangle.right - 6) && abs(angle_difference(direction, 0)) < 90)
75
{
76
    hspeed *= -1;
77
    obj_shrinktangle.right -= shrinksize;
78
}