Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_gerson_fakeheart_Step_2

(view raw script w/o annotations or w/e)
1
if (global.turntimer < 0 || !i_ex(obj_heart))
2
{
3
    instance_destroy();
4
    exit;
5
}
6
if (con == 0)
7
{
8
    direction = directionhit;
9
    flashtimer = 61;
10
    con = 1;
11
}
12
if (con == 1)
13
{
14
    if (speed < 4)
15
    {
16
        image_angle = lerp(image_angle, 0, 0.3);
17
    }
18
    else
19
    {
20
        image_angle += (speed * 2);
21
        if (image_angle > 360)
22
            image_angle -= 360;
23
        dusttimer++;
24
        if ((dusttimer % 6) == 0)
25
        {
26
            inst = instance_create_depth(x, y, depth + 1, obj_animation);
27
            inst.sprite_index = spr_dust2;
28
            inst.image_index = 2;
29
            inst.image_speed = 0.25;
30
            inst.image_xscale = 1.1 + random(0.4);
31
            inst.image_yscale = 1.1 + random(0.4);
32
        }
33
    }
34
    var _box_left = 
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(2);
35
    var _box_right = 
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(0);
36
    var _box_top = 
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(1);
37
    var _box_bottom = 
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(3);
38
    if (i_ex(obj_gerson_growtangle))
39
    {
40
        _box_left = obj_gerson_growtangle.x1;
41
        _box_right = obj_gerson_growtangle.x2;
42
        _box_top = obj_gerson_growtangle.y1;
43
        _box_bottom = obj_gerson_growtangle.y2;
44
    }
45
    boxhittimer--;
46
    if (boxhittimer <= 0 && !i_ex(obj_gerson_growtangle) && (x < _box_left || x > (_box_right - 20) || y < _box_top || y > (_box_bottom - 20)))
47
    {
48
        boxhittimer = 3;
49
        snd_play(snd_impact);
50
        snd_play(snd_damage);
51
        if (x < _box_left)
52
        {
53
            if (direction > 180)
54
                direction = 315;
55
            else
56
                direction = 45;
57
            x = _box_left + 20;
58
            with (obj_growtangle)
59
            {
60
                var _shakeobj = instance_create(x, y, obj_shakeobj);
61
                _shakeobj.target = id;
62
                with (_shakeobj)
63
                    event_user(0);
64
            }
65
            with (obj_gerson_growtangle)
66
            {
67
                var _shakeobj = instance_create(x, y, obj_shakeobj);
68
                _shakeobj.target = id;
69
                with (_shakeobj)
70
                    event_user(0);
71
            }
72
        }
73
        if (x > (_box_right - 20))
74
        {
75
            if (direction > 0 && direction < 90)
76
                direction = 135;
77
            else
78
                direction = 225;
79
            x = _box_right - 60;
80
            with (obj_growtangle)
81
            {
82
                var _shakeobj = instance_create(x, y, obj_shakeobj);
83
                _shakeobj.target = id;
84
                with (_shakeobj)
85
                    event_user(0);
86
            }
87
            with (obj_gerson_growtangle)
88
            {
89
                var _shakeobj = instance_create(x, y, obj_shakeobj);
90
                _shakeobj.target = id;
91
                with (_shakeobj)
92
                    event_user(0);
93
            }
94
        }
95
        if (y < _box_top)
96
        {
97
            if (direction > 90)
98
                direction = 225;
99
            else
100
                direction = 315;
101
            y = _box_top + 20;
102
            with (obj_growtangle)
103
            {
104
                var _shakeobj = instance_create(x, y, obj_shakeobj_y);
105
                _shakeobj.target = id;
106
                with (_shakeobj)
107
                    event_user(0);
108
            }
109
            with (obj_gerson_growtangle)
110
            {
111
                var _shakeobj = instance_create(x, y, obj_shakeobj_y);
112
                _shakeobj.target = id;
113
                with (_shakeobj)
114
                    event_user(0);
115
            }
116
        }
117
        if (y > (_box_bottom - 20))
118
        {
119
            if (direction > 270)
120
                direction = 45;
121
            else
122
                direction = 135;
123
            y = _box_bottom - 40;
124
            with (obj_growtangle)
125
            {
126
                var _shakeobj = instance_create(x, y, obj_shakeobj_y);
127
                _shakeobj.target = id;
128
                with (_shakeobj)
129
                    event_user(0);
130
            }
131
            with (obj_gerson_growtangle)
132
            {
133
                var _shakeobj = instance_create(x, y, obj_shakeobj_y);
134
                _shakeobj.target = id;
135
                with (_shakeobj)
136
                    event_user(0);
137
            }
138
        }
139
    }
140
    if (speed <= 0)
141
        instance_destroy();
142
}