Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_caterpillar_board_stresstest_Step_0

(view raw script w/o annotations or w/e)
1
if (active == 1)
2
{
3
    
scr_depth_board
scr_depth_board

function
scr_depth_board()
{ depth = 1000000 - ((y * 10) + ((sprite_height - sprite_yoffset) * 10)); } function scr_board_depth() {
scr_depth_board();
}
();
4
    wallcheck = 0;
5
    nowx = x;
6
    nowy = y;
7
    bkx = 0;
8
    bky = 0;
9
    bkxy = 0;
10
    aitimer++;
11
    if ((aitimer % 8) == 0)
12
    {
13
        var movedir = choose(0, 0, 0, 0, 0, 1, 2, 3, 4);
14
        switch (movedir)
15
        {
16
            case 0:
17
                press_l = 0;
18
                press_r = 0;
19
                press_d = 0;
20
                press_u = 0;
21
                nopress = 1;
22
                break;
23
            case 1:
24
                press_l = 1;
25
                press_r = 0;
26
                press_d = 0;
27
                press_u = 0;
28
                break;
29
            case 2:
30
                press_l = 0;
31
                press_r = 1;
32
                press_d = 0;
33
                press_u = 0;
34
                break;
35
            case 3:
36
                press_l = 0;
37
                press_r = 0;
38
                press_d = 1;
39
                press_u = 0;
40
                break;
41
            case 4:
42
                press_l = 0;
43
                press_r = 0;
44
                press_d = 0;
45
                press_u = 1;
46
                break;
47
        }
48
    }
49
    if (global.interact == 0 && canfreemove == 1)
50
    {
51
        px = 0;
52
        py = 0;
53
        pressdir = -1;
54
        if (press_r == 1)
55
        {
56
            px = wspeed;
57
            pressdir = 1;
58
        }
59
        if (press_l == 1)
60
        {
61
            px = -wspeed;
62
            pressdir = 3;
63
        }
64
        if (press_d == 1)
65
        {
66
            py = wspeed;
67
            pressdir = 0;
68
        }
69
        if (press_u == 1)
70
        {
71
            py = -wspeed;
72
            pressdir = 2;
73
        }
74
        if (nopress == 1 && pressdir != -1)
75
            facing = pressdir;
76
        if (facing == 2)
77
        {
78
            if (press_d == 1)
79
                facing = 0;
80
            if (press_u == 0 && pressdir != -1)
81
                facing = pressdir;
82
        }
83
        if (facing == 0)
84
        {
85
            if (press_u == 1)
86
                facing = 2;
87
            if (press_d == 0 && pressdir != -1)
88
                facing = pressdir;
89
        }
90
        if (facing == 3)
91
        {
92
            if (press_r == 1)
93
                facing = 1;
94
            if (press_l == 0 && pressdir != -1)
95
                facing = pressdir;
96
        }
97
        if (facing == 1)
98
        {
99
            if (press_l == 1)
100
                facing = 3;
101
            if (press_r == 0 && pressdir != -1)
102
                facing = pressdir;
103
        }
104
        nopress = 0;
105
        xmeet = 0;
106
        ymeet = 0;
107
        xymeet = 0;
108
        if (place_meeting(x + px, y + py, obj_board_solid))
109
            xymeet = 1;
110
        if (place_meeting(x + px, y, obj_board_solid))
111
        {
112
            if (place_meeting(x + px, y, obj_board_solid))
113
            {
114
                for (g = wspeed; g > 0; g -= 1)
115
                {
116
                    mvd = 0;
117
                    if (press_d == 0 && !place_meeting(x + px, y - g, obj_board_solid))
118
                    {
119
                        y -= g;
120
                        py = 0;
121
                        break;
122
                        mvd = 1;
123
                    }
124
                    if (press_u == 0 && mvd == 0 && !place_meeting(x + px, y + g, obj_board_solid))
125
                    {
126
                        y += g;
127
                        py = 0;
128
                        break;
129
                    }
130
                }
131
            }
132
            xmeet = 1;
133
            bkx = 0;
134
            if (px > 0)
135
            {
136
                for (i = px; i >= 0; i -= 1)
137
                {
138
                    if (!place_meeting(x + i, y, obj_board_solid))
139
                    {
140
                        px = i;
141
                        bkx = 1;
142
                        break;
143
                    }
144
                }
145
            }
146
            if (px < 0)
147
            {
148
                for (i = px; i <= 0; i += 1)
149
                {
150
                    if (!place_meeting(x + i, y, obj_board_solid))
151
                    {
152
                        px = i;
153
                        bkx = 1;
154
                        break;
155
                    }
156
                }
157
            }
158
            if (bkx == 0)
159
                px = 0;
160
        }
161
        if (place_meeting(x, y + py, obj_board_solid))
162
        {
163
            ymeet = 1;
164
            bky = 0;
165
            if (place_meeting(x, y + py, obj_board_solid))
166
            {
167
                for (g = wspeed; g > 0; g -= 1)
168
                {
169
                    mvd = 0;
170
                    if (press_r == 0 && !place_meeting(x - g, y + py, obj_board_solid))
171
                    {
172
                        x -= g;
173
                        px = 0;
174
                        break;
175
                        mvd = 1;
176
                    }
177
                    if (mvd == 0 && press_l == 0 && !place_meeting(x + g, y + py, obj_board_solid))
178
                    {
179
                        x += g;
180
                        px = 0;
181
                        break;
182
                    }
183
                }
184
            }
185
            if (py > 0)
186
            {
187
                for (i = py; i >= 0; i -= 1)
188
                {
189
                    if (!place_meeting(x, y + i, obj_board_solid))
190
                    {
191
                        py = i;
192
                        bky = 1;
193
                        break;
194
                    }
195
                }
196
            }
197
            if (py < 0)
198
            {
199
                for (i = py; i <= 0; i += 1)
200
                {
201
                    if (!place_meeting(x, y + i, obj_board_solid))
202
                    {
203
                        py = i;
204
                        bky = 1;
205
                        break;
206
                    }
207
                }
208
            }
209
            if (bky == 0)
210
                py = 0;
211
        }
212
        if (place_meeting(x + px, y + py, obj_board_solid))
213
        {
214
            xymeet = 1;
215
            bkxy = 0;
216
            i = px;
217
            j = py;
218
            while (j != 0 || i != 0)
219
            {
220
                if (!place_meeting(x + i, y + j, obj_board_solid))
221
                {
222
                    px = i;
223
                    py = j;
224
                    bkxy = 1;
225
                    break;
226
                }
227
                if (abs(j) >= 1)
228
                {
229
                    if (j > 0)
230
                        j -= 1;
231
                    if (j < 0)
232
                        j += 1;
233
                }
234
                else
235
                {
236
                    j = 0;
237
                }
238
                if (abs(i) >= 1)
239
                {
240
                    if (i > 0)
241
                        i -= 1;
242
                    if (i < 0)
243
                        i += 1;
244
                }
245
                else
246
                {
247
                    i = 0;
248
                }
249
            }
250
            if (bkxy == 0)
251
            {
252
                px = 0;
253
                py = 0;
254
            }
255
        }
256
        x += px;
257
        y += py;
258
    }
259
    if (fun == 0)
260
    {
261
        walk = 0;
262
        if (x != nowx && nopress == 0)
263
            walk = 1;
264
        if (y != nowy && nopress == 0)
265
            walk = 1;
266
        if (walk == 1)
267
            walkbuffer = 6;
268
        if (walkbuffer > 3)
269
        {
270
            walktimer += 1.5;
271
            if (walktimer >= 40)
272
                walktimer -= 40;
273
            if (walktimer < 10)
274
                image_index = 0;
275
            if (walktimer >= 10)
276
                image_index = 1;
277
            if (walktimer >= 20)
278
                image_index = 2;
279
            if (walktimer >= 30)
280
                image_index = 3;
281
        }
282
        if (walkbuffer <= 0 && fun == 0)
283
        {
284
            if (walktimer < 10)
285
                walktimer = 9.5;
286
            if (walktimer >= 10 && walktimer < 20)
287
                walktimer = 19.5;
288
            if (walktimer >= 20 && walktimer < 30)
289
                walktimer = 29.5;
290
            if (walktimer >= 30)
291
                walktimer = 39.5;
292
            image_index = 0;
293
        }
294
        walkbuffer -= 0.75;
295
        if (name == "susie")
296
        {
297
            if (facing == 0)
298
                sprite_index = spr_board_susie_walk_down;
299
            if (facing == 1)
300
                sprite_index = spr_board_susie_walk_right;
301
            if (facing == 2)
302
                sprite_index = spr_board_susie_walk_up;
303
            if (facing == 3)
304
                sprite_index = spr_board_susie_walk_left;
305
        }
306
        if (name == "ralsei")
307
        {
308
            if (facing == 0)
309
                sprite_index = spr_board_ralsei_walk_down;
310
            if (facing == 1)
311
                sprite_index = spr_board_ralsei_walk_right;
312
            if (facing == 2)
313
                sprite_index = spr_board_ralsei_walk_up;
314
            if (facing == 3)
315
                sprite_index = spr_board_ralsei_walk_left;
316
        }
317
    }
318
    if (button2_p() && sword == true && swordbuffer <= 0 && onebuffer <= 0 && global.interact == 0)
319
    {
320
        swordbuffer = 8;
321
        swordfacing = facing;
322
        canfreemove = 0;
323
    }
324
    if (swordbuffer > 0)
325
    {
326
        swordbuffer--;
327
        facing = swordfacing;
328
        if (facing == 0)
329
            sprite_index = spr_board_kris_strike_down;
330
        if (facing == 1)
331
            sprite_index = spr_board_kris_strike_right;
332
        if (facing == 2)
333
            sprite_index = spr_board_kris_strike_up;
334
        if (facing == 3)
335
            sprite_index = spr_board_kris_strike_left;
336
        if (swordbuffer == 7)
337
            image_index = 0;
338
        if (swordbuffer == 6)
339
            image_index = 0;
340
        if (swordbuffer == 5)
341
            image_index = 1;
342
        if (swordbuffer == 4)
343
            image_index = 1;
344
        if (swordbuffer == 3)
345
            image_index = 1;
346
        if (swordbuffer == 2)
347
            image_index = 2;
348
        if (swordbuffer == 1)
349
            image_index = 0;
350
        if (swordbuffer == 0)
351
            canfreemove = 1;
352
        if (swordbuffer == 5)
353
        {
354
            var swordhitbox = instance_create(x, y, obj_board_swordhitbox);
355
            swordhitbox.facing = facing;
356
        }
357
    }
358
}