Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_board_enemy_bluefish_Step_0

(view raw script w/o annotations or w/e)
1
updatetimer++;
2
if (updatetimer == 2)
3
{
4
    updatetimer = 0;
5
    exit;
6
}
7
if (state == "init")
8
    image_speed = 0;
9
scr_board_enemy_step_init
scr_board_enemy_step_init

function
scr_board_enemy_step_init()
{ if (state == "init") state = "move"; }
();
10
var my_x_cell = floor((x + 16) / global.cell_size);
11
var my_y_cell = floor((y + 16) / global.cell_size);
12
var my_tile_x = my_x_cell * global.cell_size;
13
var my_tile_y = my_y_cell * global.cell_size;
14
var kris_x_cell = floor((obj_board_controller.kris_object.x + 16) / global.cell_size);
15
var kris_y_cell = floor((obj_board_controller.kris_object.y + 16) / global.cell_size);
16
var kris_tile_x = kris_x_cell * global.cell_size;
17
var kris_tile_y = kris_y_cell * global.cell_size;
18
var collision_obj = 322;
19
var collision_chase_obj = 322;
20
if (room == room_board_1_sword || room == room_board_2_sword)
21
{
22
    collision_obj = 1065;
23
    collision_chase_obj = 709;
24
}
25
var aa = 0;
26
if (silverfish == true && silverfishcon == 0)
27
    aa = 1;
28
if (room == room_board_2_sword)
29
{
30
    if (!aggressive)
31
    {
32
        if (obj_mainchara_board.sword == true)
33
            aggressive = true;
34
    }
35
}
36
if (state == "move" && hurttimer == 0 && aa == 0)
37
{
38
    if (movecon == 0)
39
    {
40
        if (dashcon == 1)
41
        {
42
            dashtimer++;
43
            if (room == room_board_1_sword || room == room_board_2_sword)
44
            {
45
                if (dashtimer == 8)
46
                    image_index = 0;
47
                if (dashtimer > 15)
48
                {
49
                    dashcon = 0;
50
                    dashtimer = 0;
51
                }
52
            }
53
            else if (dashtimer > 5)
54
            {
55
                dashcon = 0;
56
                dashtimer = 0;
57
                image_index = 0;
58
            }
59
        }
60
        else
61
        {
62
            if (move_type == 0)
63
            {
64
                spd = 3;
65
                var chasekris = false;
66
                if (my_y_cell == kris_y_cell && obj_board_controller.kris_object.atdoorway == false && aggressive)
67
                {
68
                    if (x < obj_board_controller.kris_object.x)
69
                        movedir = 0;
70
                    else
71
                        movedir = 2;
72
                    if (movedir == 0)
73
                    {
74
                        inst = collision_rectangle(x + 1, y + 2, obj_mainchara_board.x + 16, y + 30, collision_chase_obj, false, true);
75
                        if (inst == -4)
76
                            chasekris = true;
77
                        if (chasekris == true)
78
                            test = movedir;
79
                    }
80
                    if (movedir == 2)
81
                    {
82
                        inst = collision_rectangle(x + 1, y + 2, obj_mainchara_board.x + 16, y + 30, collision_chase_obj, false, true);
83
                        if (inst == -4)
84
                            chasekris = true;
85
                        if (chasekris == true)
86
                            test = movedir;
87
                    }
88
                    if (chasekris == true)
89
                    {
90
                        move_type = 1;
91
                        spd = 15;
92
                        image_index = 1;
93
                        snd_play_x(snd_wallclaw, 0.4, 1.2);
94
                    }
95
                }
96
                else if (my_x_cell == kris_x_cell && obj_board_controller.kris_object.atdoorway == false && obj_mainchara_board.swordlv > 1)
97
                {
98
                    if (y < obj_board_controller.kris_object.y)
99
                        movedir = 3;
100
                    else
101
                        movedir = 1;
102
                    if (movedir == 3)
103
                    {
104
                        inst = collision_rectangle(x + 1, y + 2, x + 31, obj_mainchara_board.y + 16, collision_chase_obj, false, true);
105
                        if (inst == -4)
106
                            chasekris = true;
107
                        if (chasekris == true)
108
                            test = movedir;
109
                    }
110
                    if (movedir == 1)
111
                    {
112
                        inst = collision_rectangle(x + 1, y + 30, x + 31, obj_mainchara_board.y + 16, collision_chase_obj, false, true);
113
                        if (inst == -4)
114
                            chasekris = true;
115
                        if (chasekris == true)
116
                            test = movedir;
117
                    }
118
                    if (chasekris == true)
119
                    {
120
                        move_type = 1;
121
                        spd = 15;
122
                        image_index = 1;
123
                        snd_play_x(snd_wallclaw, 0.4, 1.2);
124
                    }
125
                }
126
                if (chasekris == false)
127
                {
128
                    movedir = choose(0, 1, 2, 3);
129
                    movetype = 0;
130
                    spd = 3;
131
                    repeat (4)
132
                    {
133
                        if (movedir == 0 && place_meeting(x + 32, y, collision_obj))
134
                            movedir = 1;
135
                        if (movedir == 1 && place_meeting(x, y - 32, collision_obj))
136
                            movedir = 2;
137
                        if (movedir == 2 && place_meeting(x - 32, y, collision_obj))
138
                            movedir = 3;
139
                        if (movedir == 3 && place_meeting(x, y + 32, collision_obj))
140
                            movedir = 0;
141
                    }
142
                }
143
            }
144
            movecon = 1;
145
        }
146
    }
147
    if (movecon == 1)
148
    {
149
        var stop = 0;
150
        if (move_type == 0)
151
        {
152
            var chasekris = false;
153
            if (my_y_cell == kris_y_cell && obj_board_controller.kris_object.atdoorway == false && obj_mainchara_board.swordlv > 1)
154
            {
155
                if (x < obj_board_controller.kris_object.x)
156
                {
157
                    inst = collision_rectangle(x + 1, y + 2, obj_mainchara_board.x + 16, y + 30, obj_board_solid, false, true);
158
                    if (inst == -4)
159
                        chasekris = true;
160
                    if (chasekris == true)
161
                        test = movedir;
162
                }
163
                else
164
                {
165
                    inst = collision_rectangle(x + 1, y + 2, obj_mainchara_board.x + 16, y + 30, obj_board_solid, false, true);
166
                    if (inst == -4)
167
                        chasekris = true;
168
                    if (chasekris == true)
169
                        test = movedir;
170
                }
171
                if (chasekris == true)
172
                {
173
                    movetimer++;
174
                    if (movetimer > 2)
175
                    {
176
                        if (x < obj_board_controller.kris_object.x)
177
                            movedir = 0;
178
                        else
179
                            movedir = 2;
180
                        move_type = 1;
181
                        movetimer = 0;
182
                        spd = 15;
183
                        image_index = 1;
184
                        snd_play_x(snd_wallclaw, 0.4, 1.2);
185
                    }
186
                }
187
            }
188
            else if (my_x_cell == kris_x_cell && obj_board_controller.kris_object.atdoorway == false && obj_mainchara_board.swordlv > 1)
189
            {
190
                if (y < obj_board_controller.kris_object.y)
191
                {
192
                    inst = collision_rectangle(x + 1, y + 2, x + 31, obj_mainchara_board.y + 16, obj_board_solid, false, true);
193
                    if (inst == -4)
194
                        chasekris = true;
195
                    if (chasekris == true)
196
                        test = movedir;
197
                }
198
                else
199
                {
200
                    inst = collision_rectangle(x + 1, y + 30, x + 31, obj_mainchara_board.y + 16, obj_board_solid, false, true);
201
                    if (inst == -4)
202
                        chasekris = true;
203
                    if (chasekris == true)
204
                        test = movedir;
205
                }
206
                if (chasekris == true)
207
                {
208
                    movetimer++;
209
                    if (movetimer > 2)
210
                    {
211
                        if (y < obj_board_controller.kris_object.y)
212
                            movedir = 3;
213
                        else
214
                            movedir = 1;
215
                        move_type = 1;
216
                        movetimer = 0;
217
                        spd = 15;
218
                        image_index = 1;
219
                        snd_play_x(snd_wallclaw, 0.4, 1.2);
220
                    }
221
                }
222
            }
223
            if (chasekris == false)
224
                movetimer = 0;
225
        }
226
        repeat (spd)
227
        {
228
            if (stop == 0)
229
            {
230
                if (movedir == 0)
231
                    x += 1;
232
                if (movedir == 1)
233
                    y -= 1;
234
                if (movedir == 2)
235
                    x -= 1;
236
                if (movedir == 3)
237
                    y += 1;
238
                if (place_meeting(x, y, collision_obj) || x < 160 || x > 448 || y < 96 || y > 256)
239
                {
240
                    if (move_type == 1)
241
                    {
242
                        movecon = 0;
243
                        move_type = 0;
244
                        dashcon = 1;
245
                        if (movedir == 0 || movedir == 2)
246
                            move_snap(32, 0);
247
                        if (movedir == 1 || movedir == 3)
248
                            move_snap(0, 32);
249
                        break;
250
                    }
251
                    else if (movedir == 0)
252
                    {
253
                        x -= 1;
254
                        movedir = 2;
255
                    }
256
                    else if (movedir == 1)
257
                    {
258
                        y += 1;
259
                        movedir = 3;
260
                    }
261
                    else if (movedir == 2)
262
                    {
263
                        x += 1;
264
                        movedir = 0;
265
                    }
266
                    else if (movedir == 3)
267
                    {
268
                        y -= 1;
269
                        movedir = 1;
270
                    }
271
                }
272
                if (movedir == 0 || movedir == 2)
273
                {
274
                    if ((x % 32) == 0)
275
                    {
276
                        movecon = 0;
277
                        stop = 1;
278
                    }
279
                }
280
                if (movedir == 1 || movedir == 3)
281
                {
282
                    if ((y % 32) == 0)
283
                    {
284
                        movecon = 0;
285
                        stop = 1;
286
                    }
287
                }
288
            }
289
        }
290
    }
291
}
292
if (movedir == 0)
293
    sprite_index = spr_board_bluefish_r;
294
if (movedir == 1)
295
    sprite_index = spr_board_bluefish_u;
296
if (movedir == 2)
297
    sprite_index = spr_board_bluefish_l;
298
if (movedir == 3)
299
    sprite_index = spr_board_bluefish_d;
300
if (silverfish == true)
301
{
302
    if (movedir == 0)
303
    {
304
        sprite_index = spr_board_silverfish_r;
305
        hurt_sprite = spr_board_silverfish_r_hurt;
306
    }
307
    if (movedir == 1)
308
    {
309
        sprite_index = spr_board_silverfish_u;
310
        hurt_sprite = spr_board_silverfish_u_hurt;
311
    }
312
    if (movedir == 2)
313
    {
314
        sprite_index = spr_board_silverfish_l;
315
        hurt_sprite = spr_board_silverfish_l_hurt;
316
    }
317
    if (movedir == 3)
318
    {
319
        sprite_index = spr_board_silverfish_d;
320
        hurt_sprite = spr_board_silverfish_d_hurt;
321
    }
322
}
323
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();
}
();
324
if (room == room_board_2_sword)
325
    sword_immunity_lv = 0;
326
scr_board_enemy_sword_collision
scr_board_enemy_sword_collision

function
scr_board_enemy_sword_collision()
{ var deer_following = false; if (object_index == obj_board_enemy_deer && follow == true) deer_following = true; if (place_meeting(x, y, obj_board_swordhitbox) && hurttimer == 0 && obj_board_controller.kris_object.swordlv >= sword_immunity_lv && deer_following == false) { var hitbox = instance_place(x, y, obj_board_swordhitbox); if (hitbox.detectiononly == true) { with (obj_mainchara_board) { if (swordbuffer <= 0) { swordbuffer = 8; canfreemove = 0; snd_play(choose(snd_board_sword1, snd_board_sword2, snd_board_sword3)); } } } else if ((object_index == obj_board_enemy_monster && image_blend == c_gray) || (object_index == obj_board_enemy_bluebird && room == room_board_dungeon_2)) { snd_stop(snd_board_sword_metal); snd_play(snd_board_sword_metal); hitdir = -1; hurttimer = 10; } else { path_end(); hurttimer = 10; snd_stop(snd_board_damage); snd_play(snd_board_damage); active_hitbox = false; hitdir = obj_board_controller.kris_object.facing; if (hp != 999) hp--; } } if (place_meeting(x, y, obj_board_enemy_deer_ice_spell) && object_index != obj_board_enemy_deer) { snd_stop(snd_board_splash); snd_play(snd_board_splash); if (object_index != obj_board_enemy_bluefish && object_index != obj_board_enemy_yellowflower) { block = instance_create(x, y, obj_pushableblock_board); block.sprite_index = spr_board_pushableblock_ice; block.custom_sprite = spr_board_pushableblock_ice; block.image_xscale = 1; block.image_yscale = 1; var x_cell = floor(block.x / global.cell_size); var y_cell = floor((block.y + 18) / global.cell_size); var position_x = (x_cell * global.cell_size) + (global.cell_size / 2); var position_y = (y_cell * global.cell_size) + (global.cell_size / 2); block.x = position_x - 16; block.y = position_y - 16; var count = 6; for (var i = 0; i < count; i++) { var fx =
scr_board_marker((block.x + 16) - 2, (block.y + 16) - 2, spr_board_snowflake, 0.3, 100000, 2);
fx.direction = ((360 / count) * i) + 45; fx.speed = 8; fx.friction = 0.6;
scr_doom(fx, 10);
fx =
scr_board_marker((block.x + 16) - 2, (block.y + 16) - 2, spr_board_snowflake, 0.3, 100000, 2);
fx.direction = (360 / count) * i; fx.speed = 4; fx.friction = 0.3;
scr_doom(fx, 10);
} } else { var count = 6; for (var i = 0; i < count; i++) { var fx =
scr_board_marker((x + 16) - 2, (y + 16) - 2, spr_board_snowflake, 0.3, 100000, 2);
fx.direction = ((360 / count) * i) + 45; fx.speed = 8; fx.friction = 0.6;
scr_doom(fx, 10);
fx =
scr_board_marker((x + 16) - 2, (y + 16) - 2, spr_board_snowflake, 0.3, 100000, 2);
fx.direction = (360 / count) * i; fx.speed = 4; fx.friction = 0.3;
scr_doom(fx, 10);
} } instance_destroy(); if (spawnerid != -1 && i_ex(spawnerid)) { if (object_index != obj_board_enemy_yellowflower && object_index != obj_board_enemy_bluefish) spawnerid.image_index = 20; else safe_delete(spawnerid); } } if (place_meeting(x, y, obj_board_swordhitbox) && hurttimer == 0 && obj_board_controller.kris_object.swordlv < sword_immunity_lv && deer_following == false) { snd_stop(snd_board_sword_metal); snd_play(snd_board_sword_metal); ...
();
327
scr_board_enemy_hurt_state
scr_board_enemy_hurt_state

function
scr_board_enemy_hurt_state()
{ if (hurttimer > 0) { hurttimer--; active_hitbox = false; if (hurttimer == 0 && hp != maxhp) active_hitbox = true; if (hurttimer == 9 && hp <= 0) { splash = instance_create_depth(centerx(), centery(), depth - 2, obj_board_enemydefeatsplash); splash.depth = depth - 1; global.flag[1255 sword_route_kills]++; obj_board_controller.kris_object.xp += xp_given; instance_destroy(); var a = true; if (object_index == obj_board_enemy_monster && hp == 999) a = false; if (spawnerid != -1 && i_ex(spawnerid) && a == true) { with (spawnerid) instance_destroy(); } if (drop_candy == true) { var drop_rate = 5; if (obj_board_controller.kris_object.myhealth < 8) drop_rate += 20; if (obj_board_controller.kris_object.myhealth < 3) drop_rate += 30; if (obj_board_controller.kris_object.myhealth == obj_board_controller.kris_object.maxhealth) drop_rate = 0; if (irandom(100) < drop_rate || (obj_board_controller.kris_object.monstersdefeated >= 6 && drop_rate > 0) || (obj_board_controller.kris_object.monstersdefeated >= 3 && obj_board_controller.kris_object.myhealth < 3 && drop_rate > 0)) { splash.drop_candy = true; obj_board_controller.kris_object.monstersdefeated = 0; } else { obj_board_controller.kris_object.monstersdefeated++; } } } var dontmove = false; if (object_index == obj_board_enemy_lizard && movecon == 3) dontmove = true; if (hurttimer > 6 && dontmove == false) { if (hitdir == 0) { repeat (20) { if (!place_meeting(x, y + 1, obj_board_solid)) y += 1; else break; } } if (hitdir == 1) { repeat (20) { if (!place_meeting(x + 1, y, obj_board_solid)) x += 1; else break; } } if (hitdir == 2) { repeat (20) { if (!place_meeting(x, y - 1, obj_board_solid)) y -= 1; else break; } } if (hitdir == 3) { repeat (20) { if (!place_meeting(x - 1, y, obj_board_solid)) x -= 1; else break; } } } } if (object_index == obj_board_enemy_lizard && movecon == 3) { if (x < 160) x = 160; if (x > 448) x = 448; if (y < 0) y = 0; if (y > 256) y = 256; } ...
();
328
if (silverfish == true && hp < 1)
329
{
330
    with (obj_board_enemy_lizard)
331
        state = "die";
332
}
333
if (silverfish == true && silverfishcon == 0)
334
{
335
    if (obj_mainchara_board.x < board_tilex(7))
336
    {
337
        silverfishcon = 1;
338
        with (obj_board_dungeon_3_jingle_controller)
339
            con = 1;
340
    }
341
}
342
if (board_1_type == 1)
343
{
344
    if (x < 256)
345
        x = 256;
346
    if (x > 352)
347
        x = 352;
348
    if (y < 192)
349
        y = 192;
350
    if (y > 224)
351
        y = 224;
352
}
353
if (board_1_type == 2)
354
{
355
    if (x < 160)
356
        x = 160;
357
    if (x > 352)
358
        x = 352;
359
    if (y < 192)
360
        y = 192;
361
    if (y > 192)
362
        y = 192;
363
}
364
if (board_1_type == 3)
365
{
366
    if (x < 288)
367
        x = 288;
368
    if (x > 384)
369
        x = 384;
370
    if (y < 192)
371
        y = 192;
372
    if (y > 224)
373
        y = 224;
374
}