Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_chaseenemy_board_Step_0

(view raw script w/o annotations or w/e)
1
if (active == true)
2
{
3
    if (init == 0)
4
    {
5
        init = 1;
6
        if (chaseflag == "default")
7
        {
8
            usprite = spr_board_enemy_shadowman_up;
9
            dsprite = spr_board_enemy_shadowman_down;
10
            lsprite = spr_board_enemy_shadowman_left;
11
            rsprite = spr_board_enemy_shadowman_right;
12
            touchsprite = spr_board_enemy_shadowman_hit;
13
            sprite_index = dsprite;
14
            specialtouch = 1;
15
            chasetype = 0;
16
            pacetype = 1;
17
            neverstop = 1;
18
            nobaloon = 1;
19
        }
20
    }
21
    if (usprite != -1)
22
    {
23
        if ((direction >= 0 && direction <= 45) || (direction >= 270 && direction <= 360))
24
            sprite_index = rsprite;
25
        if (direction > 45 && direction < 135)
26
            sprite_index = usprite;
27
        if (direction > 135 && direction < 225)
28
            sprite_index = lsprite;
29
        if (direction > 225 && direction < 315)
30
            sprite_index = dsprite;
31
    }
32
    var boardtarget = -4;
33
    with (obj_mainchara_board)
34
    {
35
        if (name == "kris")
36
            boardtarget = id;
37
    }
38
    if (boardtarget == -4)
39
        freeze = 1;
40
    if (i_ex(boardtarget))
41
    {
42
        if (boardtarget.boat == true)
43
            freeze = 1;
44
    }
45
    
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();
}
();
46
    if (freeze == 0)
47
    {
48
        if (triggered == false)
49
        {
50
            if (pacetype == 0)
51
            {
52
                image_speed = speed / 4;
53
                if (pacecon == 0)
54
                {
55
                    pacetimer++;
56
                    if (pacetimer < 30)
57
                    {
58
                        if ((pacetimer % 8) == 0)
59
                        {
60
                            if (direction == 0)
61
                                direction = 180;
62
                            else
63
                                direction = 0;
64
                        }
65
                    }
66
                    if (pacetimer == 30)
67
                    {
68
                        direction = irandom(3) * 90;
69
                        speed = 4;
70
                        pacepivottime = choose(4, 8, 16);
71
                    }
72
                    if (speed != 0)
73
                    {
74
                        if (place_meeting(x + lengthdir_x(speed, direction), y + lengthdir_y(speed, direction), obj_board_hazard) || place_meeting(x + lengthdir_x(speed, direction), y + lengthdir_y(speed, direction), obj_board_solid))
75
                            direction -= 180;
76
                        if ((y + vspeed) >= 256)
77
                            direction = 90;
78
                        if ((y + vspeed) <= 80)
79
                            direction = 270;
80
                        if ((x + hspeed) >= 448)
81
                            direction = 180;
82
                        if ((x + hspeed) <= 160)
83
                            direction = 0;
84
                    }
85
                    if (pacetimer > (30 + pacepivottime))
86
                    {
87
                        speed = 0;
88
                        pacetimer = 0 + irandom_range(-15, 15);
89
                    }
90
                }
91
            }
92
            if (pacetype == 1)
93
            {
94
                image_speed = 0.13333333333333333;
95
                pacetimer++;
96
                if (pacetimer == 4 || pacetimer == 12 || pacetimer == 22 || pacetimer == 30)
97
                    direction = 180;
98
                if (pacetimer == 8 || pacetimer == 16 || pacetimer == 26 || pacetimer == 40)
99
                    direction = 0;
100
                if (pacetimer == 40)
101
                {
102
                    triggered = true;
103
                    speed = 1;
104
                }
105
                if (pacetimer == 8)
106
                    speed = 2;
107
                if (pacetimer == 12)
108
                    speed = 0;
109
                if (pacetimer == 22)
110
                    speed = 2;
111
                if (pacetimer == 26)
112
                    speed = 0;
113
            }
114
        }
115
        if (i_ex(boardtarget))
116
        {
117
            if (distance_to_object(boardtarget) < spotradius && triggered == false)
118
            {
119
                triggered = true;
120
                myspeed = abs(speed);
121
                if (nobaloon == 0)
122
                {
123
                    var blcon = instance_create(x, y - 32, obj_board_marker);
124
                    blcon.sprite_index = spr_board_excl;
125
                    scr_lerp_var_instance(blcon, "y", blcon.y, blcon.y - 8, 10, 2, "in");
126
                    
scr_darksize
scr_darksize

function
scr_darksize()
{ var inst = id; if (argument_count) inst = argument0; inst.image_xscale = 2; inst.image_yscale = 2; }
(blcon);
127
                    
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ with (instance_create_depth(0, 0, 0, obj_doom)) { alarm[0] target = arg0; } }
(blcon, 10);
128
                    snd_play(snd_b);
129
                }
130
            }
131
            if (triggered == true)
132
            {
133
                if (distance_to_object(boardtarget) < spotradius || neverstop == 1)
134
                {
135
                    myspeed = lerp(myspeed, maxspeed, 0.125);
136
                    move_towards_point(boardtarget.x, boardtarget.y, myspeed);
137
                }
138
                else if (myspeed > 0)
139
                {
140
                    myspeed = lerp(myspeed, -0.25, 0.25);
141
                    speed = myspeed;
142
                }
143
                else
144
                {
145
                    triggered = false;
146
                    pacecon = 0;
147
                    myspeed = 0;
148
                    speed = 0;
149
                }
150
            }
151
            var dofreeze = false;
152
            if (boardtarget.canfreemove == false)
153
            {
154
                dofreeze = true;
155
                if (i_ex(obj_board_playercamera))
156
                    dofreeze = false;
157
            }
158
            if (global.interact != 0)
159
                dofreeze = true;
160
            if (dofreeze)
161
            {
162
                freeze = 1;
163
                speed = 0;
164
                remspeed = myspeed;
165
            }
166
        }
167
    }
168
    if (freeze > 0)
169
    {
170
        if (boardtarget.canfreemove == true && global.interact == 0)
171
        {
172
            freeze--;
173
            if (freeze == 10)
174
                
scr_shakeobj
scr_shakeobj

function
scr_shakeobj()
{ var _shakeobj = instance_create(x, y, obj_shakeobj); _shakeobj.target = id; if (argument_count >= 1) { if (i_ex(argument0)) _shakeobj.target = argument0; } if (argument_count >= 2) { if (argument1 != -1) _shakeobj.shakeamt = argument1; } if (argument_count >= 3) { if (argument2 != -1) _shakeobj.shakereduct = argument2; } with (_shakeobj) event_user(0); }
(id, 5, 1);
175
            if (freeze <= 0)
176
                myspeed = remspeed;
177
        }
178
    }
179
    if (place_meeting(x, y, obj_mainchara_board))
180
    {
181
        var inst = instance_place(x, y, obj_mainchara_board);
182
        var proceed = false;
183
        if (inst.name == "kris")
184
            proceed = true;
185
        if (proceed)
186
        {
187
            global.flag[9 battle_music] = 1;
188
            global.interact = 1;
189
            boardtarget.battlemode = true;
190
            with (obj_board_parent)
191
                active = false;
192
            battler = instance_create(x, y, obj_gameshow_battlemanager);
193
            battler.encounterno = encounterno;
194
            battler.encounterflag = encounterflag;
195
            safe_delete(obj_board_playercamera);
196
            if (specialtouch == 1)
197
            {
198
                hat = instance_create(x, y, obj_board_marker);
199
                hat.sprite_index = spr_board_enemy_shadowman_hit_hat;
200
                hat.vspeed = -8;
201
                hat.gravity = 1;
202
                hat.depth = depth;
203
                
scr_darksize
scr_darksize

function
scr_darksize()
{ var inst = id; if (argument_count) inst = argument0; inst.image_xscale = 2; inst.image_yscale = 2; }
(hat);
204
                
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ with (instance_create_depth(0, 0, 0, obj_doom)) { alarm[0] target = arg0; } }
(hat, 15);
205
            }
206
            fader = instance_create(x, y, obj_board_marker);
207
            fader.sprite_index = sprite_index;
208
            fader.depth = depth;
209
            
scr_darksize
scr_darksize

function
scr_darksize()
{ var inst = id; if (argument_count) inst = argument0; inst.image_xscale = 2; inst.image_yscale = 2; }
(fader);
210
            if (touchsprite != -1)
211
                fader.sprite_index = touchsprite;
212
            
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ with (instance_create_depth(0, 0, 0, obj_doom)) { alarm[0] target = arg0; } }
(fader, 30);
213
            with (daddy)
214
                instance_destroy();
215
            instance_destroy();
216
        }
217
    }
218
}
219
if (active == false)
220
    instance_destroy();
221
if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
())
222
{
223
    if (keyboard_check_pressed(vk_f5))
224
        instance_destroy();
225
}