Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj____Step_0

(view raw script w/o annotations or w/e)
1
spdtimer++;
2
if (spdtimer > 60 && spdtimer < 180)
3
    spd = lerp(6, 3, (spdtimer - 60) / 120);
4
if (spdtimer >= 180)
5
    spd = 3;
6
if (state == "init")
7
{
8
    image_index += 0.25;
9
    if (image_index >= 5)
10
    {
11
        image_index = 0;
12
        sprite_index = spr___;
13
        state = "move";
14
        active_hitbox = true;
15
    }
16
}
17
if (state == "move" && hurttimer == 0)
18
{
19
    if (movecon == 0)
20
    {
21
        if (move_type == 0)
22
        {
23
            movedir = choose(0, 1, 2, 3);
24
            repeat (4)
25
            {
26
                if (movedir == 0 && place_meeting(x + 32, y, obj_board_solid))
27
                    movedir = 1;
28
                if (movedir == 1 && place_meeting(x, y - 32, obj_board_solid))
29
                    movedir = 2;
30
                if (movedir == 2 && place_meeting(x - 32, y, obj_board_solid))
31
                    movedir = 3;
32
                if (movedir == 3 && place_meeting(x, y + 32, obj_board_solid))
33
                    movedir = 0;
34
            }
35
            movecon = 1;
36
        }
37
        if (move_type == 1)
38
        {
39
            is_moving = true;
40
            var x_cell = floor(obj_mainchara_board.x / global.cell_size);
41
            var y_cell = floor((obj_mainchara_board.y + 18) / global.cell_size);
42
            var position_x = (x_cell * global.cell_size) + (global.cell_size / 2);
43
            var position_y = (y_cell * global.cell_size) + (global.cell_size / 2);
44
            mp_grid_path(global.grid, path, x + 16, y + 16, position_x, position_y, false);
45
            path_start(path, 3.5, path_action_stop, false);
46
            if (!mp_grid_path(global.grid, path, x + 16, y + 16, position_x, position_y, false))
47
                cantfindpath = true;
48
            movecon = 1;
49
        }
50
    }
51
    if (movecon == 1)
52
    {
53
        movetimer++;
54
        if (move_type == 0)
55
        {
56
            var stop = 0;
57
            repeat (spd)
58
            {
59
                if (stop == 0)
60
                {
61
                    if (movedir == 0)
62
                    {
63
                        x += 1;
64
                        image_index = 1;
65
                    }
66
                    if (movedir == 1)
67
                    {
68
                        y -= 1;
69
                        image_index = 2;
70
                    }
71
                    if (movedir == 2)
72
                    {
73
                        x -= 1;
74
                        image_index = 3;
75
                    }
76
                    if (movedir == 3)
77
                    {
78
                        y += 1;
79
                        image_index = 0;
80
                    }
81
                    if (movedir == 0 || movedir == 2)
82
                    {
83
                        if ((x % 32) == 0)
84
                        {
85
                            movecon = 0;
86
                            movetimer = 0;
87
                            stop = 1;
88
                        }
89
                    }
90
                    if (movedir == 1 || movedir == 3)
91
                    {
92
                        if ((y % 32) == 0)
93
                        {
94
                            movecon = 0;
95
                            movetimer = 0;
96
                            stop = 1;
97
                        }
98
                    }
99
                }
100
            }
101
            if ((stop == 1 && i_ex(obj_shadow_mantle_enemy) && obj_shadow_mantle_enemy.dashcon == 0) || (i_ex(obj_shadow_mantle_enemy) && obj_shadow_mantle_enemy.hp < 5))
102
            {
103
                var any_enemy_pathing = false;
104
                for (var i = 0; i < instance_number(obj___); i += 1)
105
                {
106
                    enemy[i] = instance_find(obj___, i);
107
                    if (enemy[i].move_type == 1)
108
                        any_enemy_pathing = true;
109
                }
110
                if (any_enemy_pathing == false)
111
                    move_type = 1;
112
            }
113
        }
114
        if (move_type == 1)
115
        {
116
            is_moving_timer++;
117
            if ((is_moving_timer >= 8 && path_speed == 4) || (is_moving_timer >= 9 && path_speed == 3.5) || (is_moving_timer >= 11 && path_speed == 3) || (is_moving_timer >= 16 && path_speed == 2))
118
            {
119
                var x_cell = floor((x + 16) / global.cell_size);
120
                var y_cell = floor((y + 16) / global.cell_size);
121
                x = x_cell * global.cell_size;
122
                y = y_cell * global.cell_size;
123
                movecon = 0;
124
                movetimer = 0;
125
                is_moving_timer = 0;
126
                is_moving = false;
127
                path_end();
128
                speed = 0;
129
            }
130
        }
131
    }
132
}
133
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();
}
();
134
if (state == "move" && hit == 0)
135
{
136
    if (x == xprevious && xprevious == xprev2 && y == yprevious && yprevious == yprev2)
137
        cantfindpath = true;
138
    xprev2 = xprevious;
139
    yprev2 = yprevious;
140
}
141
alivetimer++;
142
if ((alivetimer >= 300 && state != "disappear") || (cantfindpath && state != "disappear"))
143
{
144
    state = "disappear";
145
    sprite_index = spr___no;
146
    image_index = 1;
147
    active_hitbox = false;
148
    snd_stop(snd_board_unsummon);
149
    snd_play(snd_board_unsummon);
150
    path_end();
151
    movecon = 0;
152
    movetimer = 0;
153
    is_moving_timer = 0;
154
    is_moving = false;
155
    speed = 0;
156
}
157
if (place_meeting(x, y, obj_board_swordhitbox) && hurttimer == 0 && state != "disappear")
158
{
159
    path_end();
160
    hurttimer = 12;
161
    snd_stop(snd_face_hit);
162
    snd_play(snd_face_hit);
163
    active_hitbox = false;
164
    hitdir = obj_mainchara_board.facing;
165
    hit = 1;
166
}
167
if (place_meeting(x, y, obj_board_solid))
168
{
169
    x = xprevious;
170
    y = yprevious;
171
    speed = 0;
172
    path_end();
173
}
174
if (hit == 1)
175
    active_hitbox = false;