Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_darkness_trail_Step_0

(view raw script w/o annotations or w/e)
1
if (!init)
2
{
3
    init = true;
4
    sizer = size;
5
    base_speed = speed;
6
}
7
if (target != -4)
8
{
9
    ylast = y;
10
    xlast = x;
11
    x = target.x + xoff;
12
    y = target.y + yoff;
13
}
14
if (!active)
15
    exit;
16
if (burst)
17
{
18
    burst = false;
19
    var _basedir = point_direction(xlast, ylast, x, y) - 40;
20
    var _base_angle = 270;
21
    var _count = 0;
22
    repeat (4)
23
    {
24
        var _subtrail = instance_create(xlast + random_range(-10, 10), ylast + random_range(-10, 10), obj_darkness_trail);
25
        _subtrail.size = 1.5;
26
        _subtrail.lifetime = 4 + irandom(2);
27
        _subtrail.direction = _base_angle + random_range(-15, 15);
28
        if (_count == 1 || _count == 2)
29
            _subtrail.speed = random_range(30, 50);
30
        else
31
            _subtrail.speed = random_range(10, 25);
32
        _subtrail.active = true;
33
        _subtrail.burst = false;
34
        _subtrail.subtrail = true;
35
        _subtrail.depth = (target != -4) ? (target.depth - 4) : depth;
36
        _subtrail.speed_scale = true;
37
        _count++;
38
    }
39
}
40
var _length = array_length(points);
41
if ((!subtrail && last_orb != -4) && point_distance(last_orb.x, last_orb.y, x, y) >= (sizer * 100))
42
{
43
    var _xx = lerp(last_orb.x, x, 0.5);
44
    var _yy = lerp(last_orb.y, y, 0.5);
45
    siner -= 0.125;
46
    make_trail_ball(_xx, _yy);
47
    sizer -= (size / lifetime / 2);
48
    siner -= 0.125;
49
    last_orb = make_trail_ball(x, y);
50
    sizer -= (size / lifetime / 2);
51
}
52
else
53
{
54
    last_orb = make_trail_ball(x, y);
55
    sizer -= (size / lifetime);
56
}
57
if (sizer <= 0)
58
    instance_destroy();
59
if (speed_scale)
60
    speed = min(base_speed, sizer * 1.5 * base_speed);