Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_sword_tunnel_sword_Step_0

(view raw script w/o annotations or w/e)
1
_speed += _gravity;
2
if (_speed > _maxspeed)
3
    _speed = _maxspeed;
4
var _xadd = lengthdir_x(1, mydirection);
5
var _yadd = lengthdir_y(1, mydirection);
6
if (con == 1)
7
{
8
    timer++;
9
    var c = 10;
10
    if (timer == 1)
11
    {
12
        _gravity = 0;
13
        telegraph = 1;
14
    }
15
    if (timer < (10 + (c / 2)))
16
    {
17
        anglespeed = lerp(8, 0, timer / (10 + (c / 2)));
18
        image_angle += 
scr_anglechange
scr_anglechange

function
scr_anglechange(arg0, arg1, arg2)
{ arg0 = median(-arg2, arg2, angle_difference(arg1, arg0)); return arg0; }
(image_angle, point_direction(x, y, obj_heart.x + 10 + randx, obj_heart.y + 10 + randy), anglespeed);
19
        targetangle += anglespeed;
20
        show_debug_message(targetangle);
21
    }
22
    direction = image_angle;
23
    if (timer < (10 + c))
24
        _speed = lerp(_speed, 0, timer / 10);
25
    if (timer >= (11 + c) && timer < (15 + c))
26
    {
27
        if (!audio_is_playing(snd_knight_jump))
28
            snd_play_x(snd_knight_jump, 1, 0.8);
29
        _speed = 2;
30
        _xadd = lengthdir_x(2, image_angle + 180);
31
        _yadd = lengthdir_y(2, image_angle + 180);
32
    }
33
    if (timer >= (15 + c) && timer < (20 + c))
34
    {
35
        _xadd = 0;
36
        _yadd = 0;
37
    }
38
    if (timer == (20 + c))
39
    {
40
        inst = 
scr_afterimage_grow
scr_afterimage_grow

function
scr_afterimage_grow()
{ afterimage = instance_create(x, y, obj_afterimage_grow); afterimage.sprite_index = sprite_index; afterimage.image_index = image_index; afterimage.image_blend = image_blend; afterimage.image_speed = 0; afterimage.depth = depth; afterimage.image_xscale = image_xscale; afterimage.image_yscale = image_yscale; afterimage.image_angle = image_angle; return afterimage; }
();
41
        inst.xrate = 0.4;
42
        inst.yrate = 0.4;
43
        inst.fade = 0.2;
44
    }
45
    if (timer >= (20 + c))
46
    {
47
        if (!audio_is_playing(snd_knight_cut))
48
            snd_play_x(snd_knight_cut, 1, 0.8);
49
        telegraph = 0;
50
        damage = 160;
51
        _speed = 80;
52
        _xadd = lengthdir_x(1, image_angle);
53
        _yadd = lengthdir_y(1, image_angle);
54
    }
55
}
56
image_blend = c_white;
57
if (x > (obj_heart.x - 80) && x < (obj_heart.x + 80))
58
{
59
    if (y < (obj_heart.y + 80) && y > (obj_heart.y - 80))
60
    {
61
        image_blend = c_red;
62
        var remx = x;
63
        var remy = y;
64
        repeat (max(floor(_speed / 8), 1))
65
        {
66
            x += (_xadd * 8);
67
            y += (_yadd * 8);
68
            active = 1;
69
            if (con == 1 && _speed == 80 && create_2nd_hitbox == false)
70
            {
71
                hitbox = instance_create_depth(x, y, depth - 1, obj_sword_tunnel_hitbox);
72
                hitbox.image_angle = image_angle;
73
                hitbox.image_yscale = 0.4;
74
                hitbox.image_xscale = 999;
75
                with (obj_heart)
76
                    mask_index = spr_dodgeheart_smallmask;
77
                create_2nd_hitbox = true;
78
            }
79
            else if (create_2nd_hitbox == false && collision_line(x, y, x + lengthdir_x(37, image_angle), y + lengthdir_y(37, image_angle), obj_heart, 0, false))
80
            {
81
                event_user(5);
82
            }
83
            active = 0;
84
        }
85
        x = remx;
86
        y = remy;
87
    }
88
}
89
x += (_xadd * _speed);
90
y += (_yadd * _speed);
91
var afterimage = 
scr_afterimage
scr_afterimage

function
scr_afterimage()
{ afterimage = instance_create(x, y, obj_afterimage); afterimage.sprite_index = sprite_index; afterimage.image_index = image_index; afterimage.image_blend = image_blend; afterimage.image_speed = 0; afterimage.depth = depth; afterimage.image_xscale = image_xscale; afterimage.image_yscale = image_yscale; afterimage.image_angle = image_angle; return afterimage; }
();
92
afterimage.image_alpha = 0.4;
93
afterimage.x = (x + xprevious) / 2;
94
afterimage.y = (y + yprevious) / 2;
95
if (con > 0)
96
    afterimage.image_blend = c_white;
97
if (x <= (camerax() - 100))
98
    instance_destroy();
99
if (x >= (camerax() + 740))
100
    instance_destroy();
101
if (y >= (cameray() + 600))
102
    instance_destroy();
103
if (y <= (cameray() - 250))
104
    instance_destroy();
105
if (con == 0)
106
    image_yscale = lerp(image_yscale, _speed / 20, 0.1);