Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_bookshelf_moveable_Step_0

(view raw script w/o annotations or w/e)
1
if (init == 0)
2
{
3
    init = 1;
4
    if (config == 0)
5
    {
6
        block[0] = instance_create(x + 0, y + 0, obj_solid_temp);
7
        block[1] = instance_create(x + 40, y + 0, obj_negasolid);
8
        block[2] = instance_create(x + 80, y + 0, obj_solid_temp);
9
        block[3] = instance_create(x + 0, y + 40, obj_negasolid);
10
        block[4] = instance_create(x + 40, y + 40, obj_negasolid);
11
        block[5] = instance_create(x + 80, y + 40, obj_negasolid);
12
        block[6] = instance_create(x + 0, y + 80, obj_solid_temp);
13
        block[7] = instance_create(x + 40, y + 80, obj_negasolid);
14
        block[8] = instance_create(x + 80, y + 80, obj_solid_temp);
15
    }
16
    if (config == 1)
17
    {
18
        block[0] = instance_create(x + 0, y + 0, obj_solid_temp);
19
        block[1] = instance_create(x + 40, y + 0, obj_negasolid);
20
        block[2] = instance_create(x + 80, y + 0, obj_solid_temp);
21
        block[3] = instance_create(x + 0, y + 40, obj_solid_temp);
22
        block[4] = instance_create(x + 40, y + 40, obj_negasolid);
23
        block[5] = instance_create(x + 80, y + 40, obj_solid_temp);
24
        block[6] = instance_create(x + 0, y + 80, obj_negasolid);
25
        block[7] = instance_create(x + 40, y + 80, obj_negasolid);
26
        block[8] = instance_create(x + 80, y + 80, obj_solid_temp);
27
    }
28
    for (var i = 0; i < array_length(block); i++)
29
    {
30
        block[i].extflag = "FLOOR2";
31
        block[i].negasoliddisable = true;
32
    }
33
    edge[0] = instance_create(x - 40, y + 0, obj_solid_temp);
34
    edge[1] = instance_create(x - 40, y + 40, obj_solid_temp);
35
    edge[2] = instance_create(x - 40, y + 80, obj_solid_temp);
36
    edge[3] = instance_create(x + 120, y + 0, obj_solid_temp);
37
    edge[4] = instance_create(x + 120, y + 40, obj_solid_temp);
38
    edge[5] = instance_create(x + 120, y + 80, obj_solid_temp);
39
    edge[6] = instance_create(x + 0, y - 40, obj_solid_temp);
40
    edge[7] = instance_create(x + 40, y - 40, obj_solid_temp);
41
    edge[8] = instance_create(x + 80, y - 40, obj_solid_temp);
42
    edge[9] = instance_create(x + 0, y + 120, obj_solid_temp);
43
    edge[10] = instance_create(x + 40, y + 120, obj_solid_temp);
44
    edge[11] = instance_create(x + 80, y + 120, obj_solid_temp);
45
    for (var i = 0; i < array_length(edge); i++)
46
        edge[i].extflag = "FLOOR2";
47
}
48
scr_depth
scr_depth

function
scr_depth(arg0 = id, arg1 = 0)
{ with (arg0) depth = 100000 - ((y * 10) + (sprite_height * 10) + (arg1 * 10)); }
();
49
if (block[0].active)
50
    depth += 10000;
51
if (con == 0)
52
{
53
    var move = false;
54
    if (keyboard_check(vk_numpad4))
55
    {
56
        dir = 3;
57
        move = true;
58
    }
59
    if (keyboard_check(vk_numpad5))
60
    {
61
        dir = 0;
62
        move = true;
63
    }
64
    if (keyboard_check(vk_numpad6))
65
    {
66
        dir = 1;
67
        move = true;
68
    }
69
    if (keyboard_check(vk_numpad8))
70
    {
71
        dir = 2;
72
        move = true;
73
    }
74
    if (move)
75
    {
76
        con = 1;
77
        timer = 0;
78
    }
79
}
80
if (con == 1)
81
{
82
    var checkdir = dir;
83
    with (base)
84
    {
85
        var px = 0;
86
        var py = 0;
87
        switch (checkdir)
88
        {
89
            case 0:
90
                py = 1;
91
                break;
92
            case 1:
93
                px = 1;
94
                break;
95
            case 2:
96
                py = -1;
97
                break;
98
            case 3:
99
                px = -1;
100
                break;
101
        }
102
        var met = -4;
103
        for (var i = 0; i < 8000; i++)
104
        {
105
            if (met == -4)
106
            {
107
                if (i_ex(instance_place(x + (px * i), y + (py * i), obj_solidenemy)))
108
                    met = i - 1;
109
            }
110
            if (met == -4)
111
            {
112
                var _list = ds_list_create();
113
                var _num = instance_place_list(x + (px * i), y + (py * i), 1031, _list, false);
114
                if (_num > 0)
115
                {
116
                    for (var j = 0; j < _num; j++)
117
                    {
118
                        if (ds_list_find_value(_list, j) != mysolid)
119
                            met = i - 1;
120
                    }
121
                }
122
                ds_list_destroy(_list);
123
            }
124
        }
125
        if (met > 0)
126
        {
127
            var movetime = round(met / 16) + 1;
128
            if (checkdir == 1 || checkdir == 3)
129
            {
130
                with (other)
131
                    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("x", x, x + (px * met), movetime);
132
            }
133
            if (checkdir == 0 || checkdir == 2)
134
            {
135
                with (other)
136
                    
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpvar_respect() { if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
___lerpvar.respectglobalinteract = true; return ___lerpvar; }
("y", y, y + (py * met), movetime);
137
            }
138
            other.con = -1;
139
            snd_play(snd_noise);
140
            snd_play_delay(snd_impact, movetime);
141
            with (other)
142
                scr_delay_var("con", 0, movetime + 1);
143
        }
144
        else
145
        {
146
            snd_play(snd_error, undefined, 1.8);
147
            other.con = 0;
148
        }
149
    }
150
}