Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_board_enemy_lizard_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 (jumpedrecentlytimer > 0)
8
    jumpedrecentlytimer--;
9
scr_board_enemy_step_init
scr_board_enemy_step_init

function
scr_board_enemy_step_init()
{ if (state == "init") state = "move"; }
();
10
if (dontmove == true && state == "move")
11
    state = "init";
12
if (!aggressive)
13
    dontmove = true;
14
if (state == "move")
15
{
16
    if (movecon == 0 && hurttimer == 0)
17
    {
18
        var rand;
19
        if (lastattack == 4)
20
            rand = 1;
21
        else if (type == 2)
22
            rand = choose(1, 3);
23
        else if (lastattack == 1)
24
            rand = choose(1, 2, 3);
25
        else if (lastattack == 2)
26
            rand = choose(1, 3);
27
        else if (lastattack == 3)
28
            rand = choose(1, 2);
29
        if (jumpedrecentlytimer > 0)
30
            rand = choose(1, 2);
31
        if (obj_board_controller.kris_object.leftdoorway == false && rand == 3)
32
            rand = 2;
33
        if (rand == 3)
34
        {
35
            for (var i = 0; i < instance_number(obj_board_enemy_lizard); i++)
36
            {
37
                enemy[i] = instance_find(obj_board_enemy_lizard, i);
38
                if (enemy[i].movecon == 3)
39
                    rand = 1;
40
            }
41
        }
42
        if (rand == 1)
43
        {
44
            movedir = choose(0, 1, 2, 3);
45
            repeat (4)
46
            {
47
                if (movedir == 0 && place_meeting(x + 32, y, obj_board_solid))
48
                    movedir = 1;
49
                if (movedir == 1 && place_meeting(x, y - 32, obj_board_solid))
50
                    movedir = 2;
51
                if (movedir == 2 && place_meeting(x - 32, y, obj_board_solid))
52
                    movedir = 3;
53
                if (movedir == 3 && place_meeting(x, y + 32, obj_board_solid))
54
                    movedir = 0;
55
            }
56
            image_speed = 0.1;
57
        }
58
        if (rand == 2)
59
            image_speed = 0.1;
60
        if (rand == 3)
61
        {
62
            with (obj_spawn_pos)
63
                instance_destroy();
64
            startx = x;
65
            starty = y;
66
            movetimer = 0;
67
            with (obj_board_enemy_lizard)
68
                jumpedrecentlytimer = 50;
69
            image_speed = 0;
70
            image_index = 1;
71
        }
72
        movecon = rand;
73
        lastattack = rand;
74
    }
75
    if (movecon == 1 && hurttimer == 0)
76
    {
77
        movetimer++;
78
        var stop = 0;
79
        repeat (spd)
80
        {
81
            if (stop == 0)
82
            {
83
                if (movedir == 0)
84
                {
85
                    x += 1;
86
                    sprite_index = spr_board_lizard_r;
87
                    if (type == 1)
88
                        sprite_index = spr_board_lizard_r_alt;
89
                    if (type == 2)
90
                        sprite_index = spr_board_lizard_r_jumpy;
91
                }
92
                if (movedir == 1)
93
                    y -= 1;
94
                if (movedir == 2)
95
                {
96
                    x -= 1;
97
                    sprite_index = spr_board_lizard_l;
98
                    if (type == 1)
99
                        sprite_index = spr_board_lizard_l_alt;
100
                    if (type == 2)
101
                        sprite_index = spr_board_lizard_l_jumpy;
102
                }
103
                if (movedir == 3)
104
                    y += 1;
105
                if (place_meeting(x, y, obj_board_solid) || x < 160 || x > 448 || y < 96 || y > 256)
106
                {
107
                    if (movedir == 0)
108
                    {
109
                        x -= 1;
110
                        movedir = 2;
111
                    }
112
                    else if (movedir == 1)
113
                    {
114
                        y += 1;
115
                        movedir = 3;
116
                    }
117
                    else if (movedir == 2)
118
                    {
119
                        x += 1;
120
                        movedir = 0;
121
                    }
122
                    else if (movedir == 3)
123
                    {
124
                        y -= 1;
125
                        movedir = 1;
126
                    }
127
                }
128
                if (movedir == 0 || movedir == 2)
129
                {
130
                    if ((x % 32) == 0)
131
                    {
132
                        movecon = 0;
133
                        movetimer = 0;
134
                        stop = 1;
135
                    }
136
                }
137
                if (movedir == 1 || movedir == 3)
138
                {
139
                    if ((y % 32) == 0)
140
                    {
141
                        movecon = 0;
142
                        movetimer = 0;
143
                        stop = 1;
144
                    }
145
                }
146
            }
147
        }
148
    }
149
    if (movecon == 2 && hurttimer == 0)
150
    {
151
        movetimer++;
152
        if ((movetimer % 6) == 0)
153
        {
154
            sprite_index = choose(spr_board_lizard_r, spr_board_lizard_l);
155
            if (type == 1)
156
                sprite_index = choose(spr_board_lizard_r_alt, spr_board_lizard_l_alt);
157
            if (type == 2)
158
                sprite_index = choose(spr_board_lizard_r_jumpy, spr_board_lizard_l_jumpy);
159
        }
160
        if (movetimer == 15)
161
        {
162
            movecon = 0;
163
            movetimer = 0;
164
        }
165
    }
166
    if (movecon == 3)
167
    {
168
        if (delay <= 1)
169
            movetimer += 2;
170
        else
171
            delay--;
172
        dontmoveduringhurt = true;
173
        if (movetimer == 2)
174
        {
175
            depth = 100002;
176
            snd_stop(snd_board_throw);
177
            snd_play_x(snd_board_throw, 0.7, 0.8);
178
            var _x = 128;
179
            var _y = 128;
180
            for (var i = 0; i < 11; i++)
181
            {
182
                for (var ii = 0; ii < 3; ii++)
183
                {
184
                    if (!instance_position(_x, _y, obj_board_solid) && !instance_position(_x, _y, obj_spawn_pos))
185
                        instance_create(_x, _y, obj_spawn_pos);
186
                    _y += 32;
187
                }
188
                _x += 32;
189
                _y = 128;
190
            }
191
            if (type == 2)
192
            {
193
                with (obj_spawn_pos)
194
                {
195
                    if (distance_to_object(obj_board_controller.kris_object) > 30)
196
                        instance_destroy();
197
                }
198
            }
199
            for (var i = 0; i < instance_number(obj_spawn_pos); i++)
200
                pos[i] = instance_find(obj_spawn_pos, i);
201
            if (i_ex(obj_spawn_pos))
202
            {
203
                var b = irandom(instance_number(obj_spawn_pos) - 1);
204
                with (pos[b])
205
                    image_blend = c_red;
206
                targetx = pos[b].x;
207
                targety = pos[b].y;
208
                startx = x;
209
                starty = y;
210
                if (type == 2)
211
                {
212
                    if (startx < targetx)
213
                        sprite_index = spr_board_lizard_r_jumpy;
214
                    if (startx > targetx)
215
                        sprite_index = spr_board_lizard_l_jumpy;
216
                }
217
                else if (type == 1)
218
                {
219
                    if (startx < targetx)
220
                        sprite_index = spr_board_lizard_r_alt;
221
                    if (startx > targetx)
222
                        sprite_index = spr_board_lizard_l_alt;
223
                }
224
                else
225
                {
226
                    if (startx < targetx)
227
                        sprite_index = spr_board_lizard_r;
228
                    if (startx > targetx)
229
                        sprite_index = spr_board_lizard_l;
230
                }
231
            }
232
        }
233
        if (type == 1 && movetimer == 30 && delay <= 0)
234
            delay = 16;
235
        if ((type == 1 && delay == 6) || (type == 1 && delay == 12))
236
        {
237
            var x_offset = 8;
238
            if (sprite_index == spr_board_lizard_r_alt)
239
                x_offset = 24;
240
            var angle_offset = 0;
241
            if (delay == 6)
242
                angle_offset = 30;
243
            var _spd = 4;
244
            var _acc = 4;
245
            if (sprite_index == spr_board_lizard_l_alt || sprite_index == spr_board_lizard_r_alt)
246
            {
247
                snd_stop(snd_board_mantle_unknown_b);
248
                snd_play(snd_board_mantle_unknown_b);
249
                for (var i = 0; i < 8; i++)
250
                {
251
                    var myangle = 45 * i;
252
                    var bullet = instance_create(x + x_offset + lengthdir_x(8, myangle), y + 7 + lengthdir_y(8, myangle), obj_board_enemy_spear);
253
                    bullet.direction = myangle + angle_offset;
254
                    bullet.spd = _spd;
255
                    bullet.acc = _acc;
256
                    if ((myangle % 90) == 0)
257
                    {
258
                        bullet.image_angle = round(i / 2) * 90;
259
                        bullet.sprite_index = spr_board_lightningbullet_straight;
260
                    }
261
                    else
262
                    {
263
                        bullet.sprite_index = spr_board_lightningbullet_diag;
264
                        bullet.image_angle = round((i - 1) / 2) * 90;
265
                    }
266
                }
267
            }
268
        }
269
        if (type > 0 && delay == 0)
270
            movetimer += 2;
271
        if (movetimer <= 60)
272
        {
273
            fakey = -15 + (sin(movetimer / 19) * 50 * -1);
274
            x = lerp(startx, targetx, movetimer / 64);
275
            y = lerp(starty, targety, movetimer / 64);
276
            y += fakey;
277
        }
278
        if (movetimer >= 62)
279
        {
280
            with (obj_board_enemy_lizard)
281
                jumpedrecentlytimer = 50;
282
            snd_stop(snd_bump);
283
            snd_play(snd_bump);
284
            dontmoveduringhurt = false;
285
            image_index = 0;
286
            image_speed = 0.1;
287
            x = targetx;
288
            y = targety;
289
            movecon = 0;
290
            movetimer = 0;
291
            delay = 0;
292
        }
293
    }
294
}
295
else
296
{
297
    
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();
}
();
298
}
299
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); ...
();
300
if (state == "die")
301
{
302
    image_index = 1;
303
    dietimer++;
304
    drop_candy = false;
305
    if ((dietimer % 2) == 0)
306
    {
307
        if (sprite_index == spr_board_lizard_l)
308
            sprite_index = spr_board_lizard_r;
309
        else
310
            sprite_index = spr_board_lizard_l;
311
    }
312
    if (dietimer == 28)
313
    {
314
        hurttimer = 10;
315
        hp = 0;
316
    }
317
}
318
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; } ...
();
319
if (hurttimer > 0 && movecon != 0 && movecon != 3)
320
{
321
    movetimer = 0;
322
    movecon = 0;
323
    dontmoveduringhurt = false;
324
    image_index = 0;
325
    image_speed = 0.1;
326
    targetx = x;
327
    targety = y;
328
    delay = 0;
329
    if (bulletimer > 10)
330
        bubbletimer = 10;
331
}
332
if (hurttimer == 0 && movecon != 3 && type == 0 && state != "die" && obj_board_controller.kris_object.leftdoorway == true)
333
{
334
    bulletimer++;
335
    if ((bulletimer >= 28 && dontmove == 0) || (bulletimer >= 50 && dontmove == 1))
336
    {
337
        if (x < obj_board_controller.kris_object.x)
338
            sprite_index = spr_board_lizard_r;
339
        if (x > obj_board_controller.kris_object.x)
340
            sprite_index = spr_board_lizard_l;
341
        if (sprite_index == spr_board_lizard_l)
342
            var bullet = instance_create(x + 8, y + 7, obj_board_enemy_pellet);
343
        if (sprite_index == spr_board_lizard_r)
344
            var bullet = instance_create(x + 24, y + 7, obj_board_enemy_pellet);
345
        bulletimer = choose(-50, -25, 0);
346
    }
347
}
348
else
349
{
350
    bulletimer = 0;
351
}
352
if (sprite_index == spr_board_lizard_r || sprite_index == spr_board_lizard_r_alt || sprite_index == spr_board_lizard_r_jumpy)
353
    hurt_sprite = spr_board_lizard_r_hurt;
354
if (sprite_index == spr_board_lizard_l || sprite_index == spr_board_lizard_l_alt || sprite_index == spr_board_lizard_l_jumpy)
355
    hurt_sprite = spr_board_lizard_l_hurt;
356
if (movecon != 3)
357
    
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();
}
();