Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_audiencehater_Step_0

(view raw script w/o annotations or w/e)
1
event_inherited();
2
switch (phase)
3
{
4
    case 0:
5
        pattern_time++;
6
        if (launch_time <= 0)
7
        {
8
            var _amount = 0;
9
            with (obj_audiencehater)
10
            {
11
                if (phase == 0 && pattern_time < 10)
12
                    _amount++;
13
            }
14
            with (obj_audiencehater)
15
            {
16
                if (phase == 0 && pattern_time < 10)
17
                    launch_time = 46 + ((_amount - 1) * 2);
18
            }
19
        }
20
        if (pattern_time >= (launch_time - 25))
21
            image_yscale = (image_yscale * 0.8) + 0.13340000000000002;
22
        image_xscale = 1 + (1 - image_yscale);
23
        var _distance = 0;
24
        var _overshoot = 0;
25
        if (instance_exists(obj_heart))
26
        {
27
            var _dir = image_angle + 90;
28
            _distance = point_distance(x, y, obj_heart.x, obj_heart.y);
29
            _overshoot = (_distance * _distance) / 860;
30
            var _dest = point_direction(x, y, obj_heart.x, obj_heart.y - _overshoot);
31
            if (_dir < (_dest - 180))
32
                _dir += 360;
33
            if (_dir > (_dest + 180))
34
                _dir -= 360;
35
            _dir = (_dir * 0.8) + (_dest * 0.2);
36
            image_angle = _dir - 90;
37
        }
38
        if (pattern_time == (launch_time - 9))
39
        {
40
            var _scalepush = (1 - image_yscale) * sprite_get_height(sprite_index) * 0.75;
41
            var i = 0;
42
            repeat (4)
43
            {
44
                var _trail = instance_create_depth(x + lengthdir_x(_scalepush, image_angle + 270), y + lengthdir_y(_scalepush, image_angle + 270), 0, obj_pinktrail);
45
                _trail.visible = 1;
46
                _trail.sprite_index = sprite_index;
47
                _trail.image_index = 1;
48
                _trail.image_angle = image_angle;
49
                _trail.image_xscale = image_xscale;
50
                _trail.image_yscale = image_yscale;
51
                _trail.image_blend = #FFFF88;
52
                _trail.direction = i * 90;
53
                _trail.speed = 3;
54
                i++;
55
            }
56
        }
57
        if (pattern_time >= launch_time)
58
        {
59
            if (!audio_is_playing(snd_explosion_mmx3))
60
                snd_play(snd_explosion_mmx3);
61
            direction = point_direction(x, y, obj_heart.x, obj_heart.y - _overshoot);
62
            speed = 15;
63
            gravity_direction = 270;
64
            gravity = 0.5;
65
            image_xscale = 1;
66
            image_yscale = 1;
67
            boom_frame = 0;
68
            boom_x = x;
69
            boom_y = y;
70
            bar_x = x + lengthdir_x(7, 315 + image_angle);
71
            bar_y = y + lengthdir_y(7, 315 + image_angle);
72
            bar_hspeed = -sign(hspeed) * random(abs(hspeed / 2));
73
            bar_vspeed = -3 - random(7);
74
            bar_spin = choose(-1, 1) * (5 + random(85));
75
            bar_angle = random(360);
76
            pattern_time = 0;
77
            phase++;
78
        }
79
        break;
80
    case 1:
81
        bar_x += bar_hspeed;
82
        bar_y += bar_vspeed;
83
        bar_vspeed += 0.4;
84
        bar_angle += bar_spin;
85
        if (bar_angle >= 360)
86
            bar_angle -= 360;
87
        if (bar_angle < 0)
88
            bar_angle += 360;
89
        switch (floor(boom_frame))
90
        {
91
            case 0:
92
            case 1:
93
            case 2:
94
            case 3:
95
            case 4:
96
                boom_frame += 1;
97
                break;
98
            case 5:
99
                boom_frame += 0.5;
100
                break;
101
            case 6:
102
                boom_frame += 0.334;
103
                break;
104
            case 7:
105
                boom_frame += 0.334;
106
                break;
107
        }
108
        hspeed *= 0.999;
109
        if ((pattern_time % 2) == 0)
110
        {
111
            var _trail = instance_create_depth(x, y, 0, obj_pinktrail);
112
            _trail.visible = 1;
113
            _trail.sprite_index = sprite_index;
114
            _trail.image_angle = image_angle;
115
            _trail.image_xscale = image_xscale;
116
            _trail.image_yscale = image_yscale;
117
        }
118
        break;
119
}
120
life_time++;