Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_darkshape_centipede_segment_Create_0

(view raw script w/o annotations or w/e)
1
event_inherited();
2
grazed = 1;
3
grazepoints = 0;
4
shrink_sprite = spr_darkshape_directed;
5
autolight = false;
6
destroyonhit = false;
7
shakeme = false;
8
halfdrop = false;
9
segment_distance = 12;
10
blob_size = 0;
11
guide = -4;
12
13
chase_guide = function()
14
{
15
    if (guide == -4)
16
        exit;
17
    var to_x = guide.x + lengthdir_x(segment_distance, guide.direction + 180);
18
    var to_y = guide.y + lengthdir_y(segment_distance, guide.direction + 180);
19
    x = 
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; }
(x, to_x, clamp(abs(x - to_x) * 0.2, 0.5, segment_distance));
20
    y = 
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; }
(y, to_y, clamp(abs(y - to_y) * 0.2, 0.5, segment_distance));
21
    direction = point_direction(x, y, guide.x, guide.y);
22
};
23
24
fill_light = function()
25
{
26
    if (i_ex(obj_heart))
27
    {
28
        var hxx = obj_heart.x + 10;
29
        var hyy = obj_heart.y + 10;
30
        if (point_distance(x, y, hxx, hyy) < (obj_darkshape_light_aura.radius + 8) || autolight)
31
        {
32
            var light_ratio = 0.021 * (0.5 - light);
33
            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, 0.021 + (autolight * 0.021) + light_ratio);
34
            if (!irandom(2))
35
            {
36
                with (instance_create_depth(x + random_range(-12, 12), y + random_range(-12, 12), depth + 2, obj_particle_generic))
37
                {
38
                    image_blend = c_white;
39
                    direction = point_direction(obj_heart.x + 10, obj_heart.y + 10, x, y);
40
                    speed = 1 + random(3);
41
                    shrink_rate = 0.15;
42
                }
43
            }
44
        }
45
        else
46
        {
47
            var light_ratio = 0.003 * (0.5 - light);
48
            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, 0.003 + light_ratio);
49
        }
50
    }
51
};
52
53
check_death = function(arg0 = false)
54
{
55
    if (autolight)
56
        exit;
57
    if (light > 0.25 && !halfdrop)
58
    {
59
        halfdrop = true;
60
        var myindex = ds_list_find_index(master.segment_list, id);
61
        if (blob_size && myindex != -1 && (myindex % 2) == 0)
62
        {
63
            with (instance_create_depth(x, y, depth + 1, obj_bulletparent))
64
            {
65
                image_angle = 0;
66
                image_xscale = 0.0625;
67
                image_yscale = 0.0625;
68
                
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("image_xscale", image_xscale, image_xscale * 3, 4);
69
                
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("image_yscale", image_yscale, image_yscale * 3, 4);
70
                sprite_index = spr_finisher_explosion;
71
                image_index = 2;
72
                image_speed = 1;
73
                
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; }
(instance_destroy, 5);
74
            }
75
            with (instance_create_depth(x, y, depth + 1, obj_darkshape_greenblob))
76
            {
77
                prime_speed = 6 + irandom(2);
78
                size = 1;
79
                prime_me();
80
            }
81
            blob_size = 
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; }
(blob_size, 0, 1);
82
        }
83
    }
84
    if (light == 1)
85
    {
86
        var _old = id;
87
        var _new = instance_create_depth(x, y, depth + 1, obj_darkshape_greenblob);
88
        _new.max_speed = obj_titan_enemy.snake_spd;
89
        _new.acc = obj_titan_enemy.snake_acc;
90
        _new.size = blob_size;
91
        if (i_ex(master))
92
        {
93
            var _index = ds_list_find_index(master.segment_list, _old);
94
            ds_list_replace(master.segment_list, _index, _new);
95
            if ((_index + 1) < ds_list_size(master.segment_list))
96
            {
97
                var guidee = ds_list_find_value(master.segment_list, _index + 1);
98
                guidee.guide = _new;
99
            }
100
        }
101
        if (arg0)
102
        {
103
            with (_new)
104
                prime_me();
105
        }
106
        else
107
        {
108
            with (_new)
109
                partially_prime();
110
        }
111
        instance_destroy();
112
    }
113
};