Deltarune (Chapter 1) script viewer

← back to main script listing

gml_Object_obj_wavechain_Step_0

(view raw script w/o annotations or w/e)
1
if (chaincon == 0)
2
{
3
    if (chain_noise == 0)
4
    {
5
        chain_noise = 1;
6
        chainsnd = snd_loop(snd_chain_extend);
7
    }
8
    sons += 1;
9
    son[sons] = instance_create(x, y, obj_chainpiece);
10
    if (x <= obj_nonsolid_growtangle.x)
11
    {
12
        snd_stop(chainsnd);
13
        snd_play(snd_locker);
14
        snd_play(snd_screenshake);
15
        speed = 0;
16
        chaincon = 1;
17
        shakeamt = 12;
18
        remx = obj_heart.x;
19
        remy = obj_heart.y;
20
        remx_box = obj_nonsolid_growtangle.x;
21
        remy_box = obj_nonsolid_growtangle.y;
22
        chaincon = 2.1;
23
        with (obj_growtangle)
24
            megakeep = 1;
25
    }
26
}
27
if (chaincon == 2.1)
28
{
29
    obj_heart.x = remx;
30
    obj_heart.y = remy;
31
    obj_nonsolid_growtangle.x = remx_box;
32
    obj_nonsolid_growtangle.y = remy_box;
33
    shakedir = random(360);
34
    xshake = lengthdir_x(shakeamt, shakedir);
35
    yshake = lengthdir_y(shakeamt, shakedir);
36
    obj_heart.x += xshake;
37
    obj_heart.y += yshake;
38
    obj_nonsolid_growtangle.x += xshake;
39
    obj_nonsolid_growtangle.y += yshake;
40
    shakeamt -= 2;
41
    if (shakeamt < 0)
42
        chaincon = 3;
43
}
44
if (chaincon == 3)
45
{
46
    if (chain_noise == 1)
47
    {
48
        chain_noise = 2;
49
        wavenoise = snd_loop(snd_chain_wave);
50
    }
51
    if (type == 0)
52
    {
53
        siner += 1;
54
        obj_chainking.y = initkingy + (sin(siner / 12) * 80);
55
        btimer += 1;
56
        if (btimer >= 20)
57
        {
58
            regbul = instance_create(__view_get(e__VW.XView, 0) - 20, initboxy, obj_regularbullet);
59
            regbul.sprite_index = spr_spadebullet;
60
            regbul.hspeed = 4;
61
            scr_bullet_inherit
scr_bullet_inherit

function scr_bullet_inherit(arg0) { if (instance_exists(arg0)) { arg0.damage = damage; arg0.grazepoints = grazepoints; arg0.timepoints = timepoints; arg0.inv = inv; arg0.target = target; arg0.grazed = 0; arg0.grazetimer = 0; } }
(regbul);
62
            btimer = 0;
63
        }
64
        if (chain_noise == 2)
65
            snd_pitch(wavenoise, 0.8 - (sin(siner / 12) / 2));
66
    }
67
    if (type == 1)
68
    {
69
        siner += 1;
70
        obj_chainking.y = initkingy + (sin(siner / 10) * 80);
71
        btimer += 1;
72
        if (btimer >= 18)
73
        {
74
            regbul = instance_create(__view_get(e__VW.XView, 0) - 20, initboxy, obj_regularbullet);
75
            regbul.sprite_index = spr_spadebullet;
76
            regbul.hspeed = 4;
77
            scr_bullet_inherit
scr_bullet_inherit

function scr_bullet_inherit(arg0) { if (instance_exists(arg0)) { arg0.damage = damage; arg0.grazepoints = grazepoints; arg0.timepoints = timepoints; arg0.inv = inv; arg0.target = target; arg0.grazed = 0; arg0.grazetimer = 0; } }
(regbul);
78
            btimer = 0;
79
        }
80
        if (chain_noise == 2)
81
            snd_pitch(wavenoise, 0.9 - (sin(siner / 10) / 2));
82
    }
83
    if (type == 2)
84
    {
85
        siner += 1;
86
        obj_chainking.y = initkingy + (sin(siner / 9) * 80);
87
        btimer += 1;
88
        if (btimer >= 16)
89
        {
90
            regbul = instance_create(__view_get(e__VW.XView, 0) - 20, initboxy, obj_regularbullet);
91
            regbul.sprite_index = spr_spadebullet;
92
            regbul.hspeed = 4;
93
            scr_bullet_inherit
scr_bullet_inherit

function scr_bullet_inherit(arg0) { if (instance_exists(arg0)) { arg0.damage = damage; arg0.grazepoints = grazepoints; arg0.timepoints = timepoints; arg0.inv = inv; arg0.target = target; arg0.grazed = 0; arg0.grazetimer = 0; } }
(regbul);
94
            btimer = 0;
95
        }
96
        if (chain_noise == 2)
97
            snd_pitch(wavenoise, 1 - (sin(siner / 9) / 2));
98
    }
99
    if (type == 3)
100
    {
101
        siner += 1;
102
        obj_chainking.y = initkingy + (sin(siner / 7) * 80 * wavefactor);
103
        btimer += 1;
104
        if (btimer >= 14)
105
        {
106
            regbul = instance_create(__view_get(e__VW.XView, 0) - 20, initboxy, obj_regularbullet);
107
            regbul.sprite_index = spr_spadebullet;
108
            regbul.hspeed = 4;
109
            scr_bullet_inherit
scr_bullet_inherit

function scr_bullet_inherit(arg0) { if (instance_exists(arg0)) { arg0.damage = damage; arg0.grazepoints = grazepoints; arg0.timepoints = timepoints; arg0.inv = inv; arg0.target = target; arg0.grazed = 0; arg0.grazetimer = 0; } }
(regbul);
110
            btimer = 0;
111
        }
112
        if (chain_noise == 2)
113
            snd_pitch(wavenoise, 1 - (sin(siner / 7) / 2));
114
    }
115
}
116
if (instance_exists(obj_chainking))
117
{
118
    kingx[0] = obj_chainking.x - initkingx;
119
    kingy[0] = obj_chainking.y - initkingy;
120
    for (i = 40; i > 0; i -= 1)
121
    {
122
        kingx[i] = kingx[i - 1];
123
        kingy[i] = kingy[i - 1];
124
    }
125
    for (i = 0; i <= sons; i += 1)
126
    {
127
        son[i].x = kingx[i] + son[i].xstart;
128
        son[i].y = kingy[i] + son[i].ystart;
129
    }
130
    if (chaincon >= 3)
131
    {
132
        x = son[sons].x;
133
        y = son[sons].y;
134
        obj_nonsolid_growtangle.x = kingx[sons] + initboxx;
135
        obj_nonsolid_growtangle.y = kingy[sons] + initboxy;
136
    }
137
}
138
t += 1;
139
if (t >= (tmax - 10))
140
{
141
    wavefactor *= 0.8;
142
    with (obj_chainpiece)
143
        image_alpha -= 0.1;
144
    with (obj_regularbullet)
145
    {
146
        active = 0;
147
        image_alpha -= 0.1;
148
    }
149
}
150
if (t >= tmax)
151
{
152
    if (chain_noise == 2)
153
    {
154
        chain_noise = 3;
155
        snd_stop(wavenoise);
156
    }
157
    global.turntimer = 3;
158
    with (obj_regularbullet)
159
        instance_destroy();
160
    with (obj_chainking)
161
        sprite_index = spr_chainking_receive;
162
    with (obj_chainking)
163
        instance_destroy();
164
    instance_destroy();
165
}
166
167
enum e__VW
168
{
169
    XView,
170
    YView,
171
    WView,
172
    HView,
173
    Angle,
174
    HBorder,
175
    VBorder,
176
    HSpeed,
177
    VSpeed,
178
    Object,
179
    Visible,
180
    XPort,
181
    YPort,
182
    WPort,
183
    HPort,
184
    Camera,
185
    SurfaceID
186
}