Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_darkshape_Create_0

(view raw script w/o annotations or w/e)
1
event_inherited();
2
grazed = 1;
3
grazepoints = 0;
4
destroyonhit = true;
5
with (obj_darkshape_manager)
6
    only_centipedes = false;
7
if (y >= obj_growtangle.y)
8
    direction = 250 - irandom(10);
9
else
10
    direction = 110 + irandom(10);
11
speed_max = 2.25;
12
speed_max_multiplier = 1;
13
tracking_val = 16;
14
speedfactor = 1;
15
true_timer = 0;
16
fastval = 4;
17
accel = 0.15;
18
individuality = irandom(100);
19
canbepushed = true;
20
pushback_radius = 48;
21
myspeed = 0;
22
active = false;
23
image_alpha = 0;
24
image_speed = 0;
25
shrink_sprite = spr_darkshape;
26
xscale = 0;
27
yscale = 0;
28
light = 0;
29
light_rate = 0.05;
30
light_recover = 0.01;
31
image = 0;
32
radius = 20;
33
shakeme = false;
34
timer = 0;
35
fast_timer = 0;
36
my_surface = -4;
37
xface = 1;
38
yface = 1;
39
scalefactor = 1;
40
ypush = 0;
41
42
do_shrivel = function()
43
{
44
    if (light > 0.99)
45
    {
46
        image = 5;
47
    }
48
    else if (light > 0.8)
49
    {
50
        image = 4;
51
        radius = 8;
52
    }
53
    else if (light > 0.6)
54
    {
55
        image = 3;
56
        radius = 10;
57
    }
58
    else if (light > 0.4)
59
    {
60
        image = 2;
61
        radius = 13;
62
    }
63
    else if (light > 0.2)
64
    {
65
        image = 1;
66
        radius = 16;
67
    }
68
    else
69
    {
70
        image = 0;
71
        radius = 20;
72
    }
73
};
74
75
do_pushback = function()
76
{
77
    with (obj_darkshape)
78
    {
79
        if (canbepushed)
80
        {
81
            if (id != other.id && point_distance(x, y, other.x, other.y) < other.pushback_radius)
82
            {
83
                var tempangle = point_direction(other.x, other.y, x, y);
84
                x += lengthdir_x(1, tempangle);
85
                y += lengthdir_y(1, tempangle);
86
            }
87
        }
88
    }
89
};
90
91
check_death = function()
92
{
93
    var hx = obj_heart.x + 10;
94
    var hy = obj_heart.y + 10;
95
    if (light == 1)
96
    {
97
        instance_destroy();
98
        with (instance_create_depth(x, y, depth + 1, obj_darkshape_greenblob))
99
        {
100
            hx = obj_growtangle.x;
101
            hy = obj_growtangle.y;
102
            size = 1;
103
            if (!obj_darkshape_manager.basic_shapes || i_ex(obj_darkshape_blast_tester) || i_ex(obj_darkshape_giant))
104
                size = 0;
105
            if ((other.shrink_sprite != spr_darkshape_directed_small && !i_ex(obj_darkshape_blast_tester)) || i_ex(obj_darkshape_giant))
106
            {
107
            }
108
            else if (i_ex(obj_darkshape_blast_tester))
109
            {
110
                if ((obj_darkshape_manager.dark_count % 3) == 0)
111
                    size++;
112
            }
113
            else if ((obj_darkshape_manager.dark_count % (2 + obj_darkshape_manager.phase_difficulty)) == 0)
114
            {
115
                size++;
116
            }
117
            if (i_ex(obj_titan_spawn_enemy))
118
                size = 2;
119
            prime_me();
120
        }
121
        with (obj_darkshape_manager)
122
            dark_count++;
123
    }
124
};
125
126
chase_heart = function()
127
{
128
    var hx = obj_heart.x + 10;
129
    var hy = obj_heart.y + 10;
130
    if (i_ex(obj_heart))
131
    {
132
        if (point_distance(x, y, hx, hy) < (obj_darkshape_light_aura.radius + 8) && image_blend != c_red)
133
        {
134
            myspeed = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(myspeed, 0.7 + (1 - light), 0.15 * speedfactor * speed_max_multiplier);
135
            light = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(light, 1, light_rate);
136
            with (obj_darkshape_manager)
137
            {
138
                ominous_decline = false;
139
                ominous_volume = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(ominous_volume, 1, (1 - ominous_volume) * 0.15);
140
            }
141
            if (!irandom(2))
142
            {
143
                with (instance_create_depth(x + random_range(-12, 12), y + random_range(-12, 12), depth + 2, obj_particle_generic))
144
                {
145
                    image_blend = c_white;
146
                    direction = point_direction(obj_heart.x + 10, obj_heart.y + 10, x, y);
147
                    speed = 1 + random(3);
148
                    shrink_rate = 0.2;
149
                }
150
            }
151
        }
152
        else
153
        {
154
            myspeed = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(myspeed, speed_max * speed_max_multiplier, accel * speed_max_multiplier * (1 - light));
155
            light = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(light, 0, light_recover);
156
        }
157
    }
158
};
159
160
snd_play(snd_dark_odd, 0.25, 0.35 + random(0.35));