Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_board_enemy_singingcat_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
scr_board_enemy_step_init
scr_board_enemy_step_init

function
scr_board_enemy_step_init()
{ if (state == "init") state = "move"; }
();
8
if (state == "move" && hurttimer == 0)
9
{
10
    if (movecon == 0)
11
    {
12
        movedir = choose(0, 1, 2, 3);
13
        repeat (4)
14
        {
15
            if (movedir == 0 && place_meeting(x + 32, y, obj_board_solid))
16
                movedir = 1;
17
            if (movedir == 1 && place_meeting(x, y - 32, obj_board_solid))
18
                movedir = 2;
19
            if (movedir == 2 && place_meeting(x - 32, y, obj_board_solid))
20
                movedir = 3;
21
            if (movedir == 3 && place_meeting(x, y + 32, obj_board_solid))
22
                movedir = 0;
23
        }
24
        image_speed = 0.1;
25
        movecon = 1;
26
    }
27
    if (movecon == 1)
28
    {
29
        movetimer++;
30
        var stop = 0;
31
        repeat (spd)
32
        {
33
            if (stop == 0)
34
            {
35
                if (movedir == 0)
36
                    x += 1;
37
                if (movedir == 1)
38
                    y -= 1;
39
                if (movedir == 2)
40
                    x -= 1;
41
                if (movedir == 3)
42
                    y += 1;
43
                if (place_meeting(x, y, obj_board_solid) || x < 128 || x > 480 || y < 64 || y > 288)
44
                {
45
                    if (movedir == 0)
46
                    {
47
                        x -= 1;
48
                        movedir = 2;
49
                    }
50
                    else if (movedir == 1)
51
                    {
52
                        y += 1;
53
                        movedir = 3;
54
                    }
55
                    else if (movedir == 2)
56
                    {
57
                        x += 1;
58
                        movedir = 0;
59
                    }
60
                    else if (movedir == 3)
61
                    {
62
                        y -= 1;
63
                        movedir = 1;
64
                    }
65
                }
66
                if (movedir == 0 || movedir == 2)
67
                {
68
                    if ((x % 32) == 0)
69
                    {
70
                        movecon = 0;
71
                        movetimer = 0;
72
                        stop = 1;
73
                    }
74
                }
75
                if (movedir == 1 || movedir == 3)
76
                {
77
                    if ((y % 32) == 0)
78
                    {
79
                        movecon = 0;
80
                        movetimer = 0;
81
                        stop = 1;
82
                    }
83
                }
84
            }
85
        }
86
    }
87
}
88
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); ...
();
89
if (hp < 1)
90
{
91
    if (obj_board_controller.killedacatbefore == 1)
92
        snd_play(snd_link_secret_bad);
93
    obj_board_controller.killedacatbefore++;
94
    if (i_ex(obj_board_enemy_silentcat))
95
    {
96
        enemy = instance_find(obj_board_enemy_silentcat, 0);
97
        with (enemy)
98
        {
99
            wake = true;
100
            if (onebyone == true)
101
            {
102
                with (obj_board_enemy_silentcat)
103
                {
104
                    onebyone_timer = 22;
105
                    justgo = true;
106
                }
107
            }
108
        }
109
    }
110
}
111
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; } ...
();
112
if (hurttimer > 0)
113
{
114
    movetimer = 0;
115
    movecon = 0;
116
}
117
bubbletimer++;
118
if (bubbletimer == 1)
119
    image_index = 1;
120
if (aggressive == true && bubbletimer >= 5 && obj_board_controller.kris_object.leftdoorway == true)
121
{
122
    image_index = 0;
123
    bubbletimer = 0;
124
    bullet = instance_create_depth(x + 16, y + 20, depth - 1, obj_board_enemy_note);
125
    bullet.place = direction;
126
    bullet.rotator_target = id;
127
    direction += 30;
128
    if (type == 1)
129
    {
130
        direction += 20;
131
        bullet.len_speed = 7;
132
        bullet.type = 1;
133
    }
134
}