Deltarune (Chapter 2) script viewer

← back to main script listing

gml_Object_o_coaster_berdly_Step_0

(view raw script w/o annotations or w/e)
1
if ((instance_exists(obj_berdlyb_enemy) && global.mercymod[obj_berdlyb_enemy.myself] > 50) || (instance_exists(obj_berdlyb_enemy) && global.monsterhp[obj_berdlyb_enemy.myself] < (global.monstermaxhp[obj_berdlyb_enemy.myself] * 0.5)))
2
{
3
    if (smokestart == 0)
4
    {
5
        smokestart = 1;
6
        snd_play(snd_bomb);
7
        for (var _i = 0; _i < 8; _i++)
8
        {
9
            smoke = instance_create(x + 90, y, obj_berdly_smoke);
10
            smoke.direction = 45 * _i;
11
            smoke.depth = depth - 1;
12
        }
13
        var _explosion = instance_create(x + 90, y, obj_animation);
14
        _explosion.depth = depth - 1;
15
        _explosion.sprite_index = spr_coaster_explosion;
16
    }
17
    smoketimer++;
18
    if (smoketimer > 15)
19
    {
20
        smoketimer = 0;
21
        smoke = instance_create(x + 90, y, obj_berdly_smoke);
22
        smoke.depth = depth + 1;
23
    }
24
}
25
if (init == 0)
26
{
27
    if (mode == 0)
28
    {
29
        movethreshold = 60;
30
        moveframes = 6;
31
    }
32
    if (mode == 1)
33
    {
34
        movethreshold = 36;
35
        moveframes = 12;
36
    }
37
    if (mode >= 2)
38
    {
39
        queenmode = 1;
40
        sprite_index = spr_coaster_queen;
41
    }
42
    if (mode == 2)
43
    {
44
        movetype = 1;
45
        moveframes = 24;
46
    }
47
    if (mode == 3)
48
    {
49
        movethreshold = 40;
50
        moveframes = 16;
51
    }
52
    if (mode == 4)
53
    {
54
        movethreshold = 40;
55
        moveframes = 16;
56
    }
57
    if (mode == 5)
58
    {
59
        movetype = 1;
60
        moveframes = 8;
61
    }
62
    if (mode == 6)
63
    {
64
        movetype = 1;
65
        moveframes = 4;
66
    }
67
    init = 1;
68
}
69
if (obj_berdlyb_enemy.premonition > 0 && o_coaster_controller.actcon == 1)
70
{
71
    premonition = 1;
72
    drawpremonition = 1;
73
}
74
else
75
{
76
    drawpremonition = 0;
77
}
78
if (y > 178)
79
    depth = 78;
80
if (y > 230)
81
    depth = 73;
82
siner += 0.4;
83
if (xshake != 0)
84
{
85
    shaketimer++;
86
    if (shaketimer >= 2)
87
    {
88
        shaketimer = 0;
89
        xshake *= -0.8;
90
        if (abs(xshake) <= 1)
91
            xshake = 0;
92
    }
93
}
94
if (endscene == 1 && instance_exists(obj_ch2_scene11a))
95
{
96
    var xx = obj_ch2_scene11a.coaster_berdly.x + 22 + obj_ch2_scene11a.coaster_berdly.sinerx + obj_ch2_scene11a.coaster_berdly.coaster_offset_x;
97
    var yy = obj_ch2_scene11a.coaster_berdly.y + 47 + obj_ch2_scene11a.coaster_berdly.sinery + obj_ch2_scene11a.coaster_berdly.coaster_offset_y;
98
    if (endscenetimer < 10)
99
        endscenetimer++;
100
    x = lerp(x, xx, endscenetimer / 10);
101
    y = lerp(y, yy, endscenetimer / 10);
102
}
103
if (damagecon == 0)
104
{
105
    siner += 0.4;
106
    if (endscene == 0)
107
        x = xstart + (sin(siner / 6) * 3);
108
    damagetimer = 0;
109
}
110
if (damagecon == 1)
111
{
112
    damagetimer += 1;
113
    image_index = 1;
114
    if (kiss == 1)
115
        image_index = 2;
116
    x = (xstart + 60) - (damagetimer * 5);
117
    if (damagetimer >= 10)
118
    {
119
        xshake = 0;
120
        yshake = 0;
121
        x = xstart;
122
        damagetimer = 0;
123
        damagecon = 0;
124
        image_index = 0;
125
        if (sprite_index == spr_berdlyb_shocked_battle)
126
            sprite_index = spr_berdlyb_idle;
127
    }
128
}
129
if (o_coaster_controller.actcon == 1 && movecon == -1)
130
    movecon = 0;
131
if (o_coaster_controller.actcon == 0)
132
{
133
    movecon = -1;
134
    movetimer = 59;
135
    if (y < ystart)
136
        y += ((ystart - y) / moveframes);
137
    if (y > ystart)
138
        y += ((ystart - y) / moveframes);
139
}
140
if (movecon == 0)
141
{
142
    movebuffer = 0;
143
    movetimer += 1;
144
    if (movetype == 1)
145
        y = yspot[1] + ((sin(movetimer / moveframes) * (yspot[2] - yspot[0])) / 2);
146
    if (movetimer >= movethreshold && movetype == 0)
147
    {
148
        oldidealy = idealy;
149
        if (obj_berdlyb_enemy.ralseigo == 1)
150
        {
151
            forceypos = 2;
152
            obj_berdlyb_enemy.ralseigo = 0;
153
            with (o_coaster_hero)
154
            {
155
                if (HeroID == 2)
156
                    bump = 1;
157
            }
158
        }
159
        else if (obj_berdlyb_enemy.susiego == 1)
160
        {
161
            forceypos = 1;
162
            obj_berdlyb_enemy.susiego = 0;
163
            with (o_coaster_hero)
164
            {
165
                if (HeroID == 1)
166
                    bump = 1;
167
            }
168
        }
169
        else if (obj_berdlyb_enemy.krisgo == 1)
170
        {
171
            forceypos = 0;
172
            obj_berdlyb_enemy.krisgo = 0;
173
            with (o_coaster_hero)
174
            {
175
                if (HeroID == 0)
176
                    bump = 1;
177
            }
178
        }
179
        if (forceypos == 0)
180
            idealy = yspot[0];
181
        if (forceypos == 1)
182
            idealy = yspot[1];
183
        if (forceypos == 2)
184
            idealy = yspot[2];
185
        if (forceypos == -1)
186
            idealy = yspot[nexty[ycount]];
187
        yspeed = (idealy - y) / moveframes;
188
        movecon = 1;
189
        movetimer = 0;
190
        ycount++;
191
        if (ycount >= 6)
192
        {
193
            for (i = 0; i < 6; i++)
194
            {
195
                nexty[i] = nexty[i + 6];
196
                nexty[i + 6] = -1;
197
            }
198
            ycount = 0;
199
            pick = floor(random(6) + 6);
200
            for (i = 0; i < 2; i++)
201
            {
202
                while (nexty[pick] != -1)
203
                    pick = floor(random(6) + 6);
204
                nexty[pick] = i;
205
            }
206
            for (j = 6; j < 12; j++)
207
            {
208
                if (nexty[j] == -1)
209
                    nexty[j] = choose(0, 1, 2);
210
            }
211
        }
212
    }
213
}
214
if (movecon == 1)
215
{
216
    y += yspeed;
217
    movetimer += 1;
218
    if (movetimer >= moveframes)
219
    {
220
        if (movebuffer == 0)
221
        {
222
            movetimer = 0;
223
            y = idealy;
224
        }
225
        movecon = 0;
226
    }
227
}
228
if (mode == 1)
229
{
230
    modetimer++;
231
    if (modetimer >= 60)
232
    {
233
        modetimer = -60;
234
        jama = instance_create(o_coaster_berdly.x - 40 - (20 * queenmode), yspot[choose(0, 1, 2)], o_coaster_jama);
235
    }
236
}
237
if (mode == 3)
238
{
239
    modetimer++;
240
    if (modetimer >= 60)
241
    {
242
        modetimer = -60;
243
        instance_create(view_xview[0] + 330, yspot[choose(0, 1, 2)], o_coaster_lightning);
244
    }
245
}
246
if (mode == 4)
247
{
248
    modetimer++;
249
    if (modetimer >= 60)
250
    {
251
        modetimer = -30;
252
        jama = instance_create(o_coaster_berdly.x - 60, yspot[choose(0, 1, 2)], o_coaster_jama);
253
        jama.bigcar = 1;
254
        jama.sprite_index = spr_coaster_car;
255
    }
256
}
257
if (mode == 5)
258
{
259
    modetimer++;
260
    if (modetimer == 40)
261
    {
262
        nozoki = choose(0, 1, 2);
263
        lit = instance_create(view_xview[0] + 330, yspot[choose(0, 1, 2)], o_coaster_lightning);
264
        lit.waittime = 20;
265
        lit.litwaittime = 20;
266
    }
267
    if (modetimer == 80)
268
    {
269
        jama = instance_create(o_coaster_berdly.x - 60, yspot[choose(0, 1, 2)], o_coaster_jama);
270
        modetimer = 0;
271
    }
272
}
273
with (obj_berdlyb_enemy)
274
{
275
    if (global.monstermaxhp[myself] != global.monsterhp[myself])
276
        o_coaster_berdly.kiss = 0;
277
}