Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_bookshelf_moveable2x2_Step_0

(view raw script w/o annotations or w/e)
1
siner++;
2
if (init == 0)
3
{
4
    init = 1;
5
    block[0] = instance_create(x + 0, y + 0, obj_solid_temp_edge);
6
    block[1] = instance_create(x + 40, y + 0, obj_solid_temp_edge);
7
    block[2] = instance_create(x + 0, y + 40, obj_solid_temp_edge);
8
    block[3] = instance_create(x + 40, y + 40, obj_solid_temp_edge);
9
    for (var i = 0; i < array_length(block); i++)
10
    {
11
        block[i].extflag = "FLOOR2";
12
        block[i].negasoliddisable = true;
13
    }
14
    edge[0] = instance_create(x - 40, y + 0, obj_solid_temp_edge);
15
    array_push(edge, instance_create(x - 40, y + 40, obj_solid_temp_edge));
16
    array_push(edge, instance_create(x + 0, y + 80, obj_solid_temp_edge));
17
    array_push(edge, instance_create(x + 40, y + 80, obj_solid_temp_edge));
18
    array_push(edge, instance_create(x + 0, y - 40, obj_solid_temp_edge));
19
    array_push(edge, instance_create(x + 40, y - 40, obj_solid_temp_edge));
20
    array_push(edge, instance_create(x + 80, y + 0, obj_solid_temp_edge));
21
    array_push(edge, instance_create(x + 80, y + 40, obj_solid_temp_edge));
22
    for (var i = 0; i < array_length(edge); i++)
23
    {
24
        edge[i].extflag = "FLOOR2";
25
        edge[i].edge = true;
26
    }
27
    if (xflag != -4)
28
    {
29
        if (global.flag[xflag] == 0)
30
            global.flag[xflag] = x;
31
        else
32
            x = global.flag[xflag];
33
        if (global.flag[yflag] == 0)
34
            global.flag[yflag] = y;
35
        else
36
            y = global.flag[yflag];
37
    }
38
}
39
if (con == 0)
40
{
41
    var move = false;
42
    if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
())
43
    {
44
    }
45
    if (move)
46
    {
47
        debug_print("move");
48
        con = 1;
49
        timer = 0;
50
    }
51
    if (resetpos)
52
    {
53
        resetpos = 0;
54
        var doreset = true;
55
        if (x == xstart && y == ystart)
56
            doreset = false;
57
        if (place_meeting(xstart, ystart, object_index))
58
            doreset = false;
59
        if (doreset)
60
        {
61
            con = 40;
62
            snd_play(snd_bell, 0.5);
63
            var movespd = 16;
64
            var dist = round(point_distance(x, y, xstart, ystart) / movespd) + 1;
65
            if (x != xstart)
66
                
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, xstart, dist, -1, "out");
67
            if (y != ystart)
68
                
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, ystart, dist, -1, "out");
69
            scr_delay_var("con", 0, dist + 1);
70
            scr_delay_var("flagupdate", 1, dist + 1);
71
        }
72
        else
73
        {
74
            con = 0;
75
        }
76
    }
77
}
78
if (con == 1)
79
{
80
    var checkdir = dir;
81
    with (base)
82
    {
83
        var px = 0;
84
        var py = 0;
85
        switch (checkdir)
86
        {
87
            case 0:
88
                py = 1;
89
                break;
90
            case 1:
91
                px = 1;
92
                break;
93
            case 2:
94
                py = -1;
95
                break;
96
            case 3:
97
                px = -1;
98
                break;
99
        }
100
        var met = -4;
101
        for (var i = 0; i < 8000; i++)
102
        {
103
            if (met == -4)
104
            {
105
                var solidenemyspot = instance_place(x + (px * i), y + (py * i), obj_solidenemy);
106
                if (i_ex(solidenemyspot))
107
                {
108
                    with (solidenemyspot)
109
                        
scr_afterimage
scr_afterimage

function
scr_afterimage()
{ afterimage = instance_create(x, y, obj_afterimage); afterimage.sprite_index = sprite_index; afterimage.image_index = image_index; afterimage.image_blend = image_blend; afterimage.image_speed = 0; afterimage.depth = depth; afterimage.image_xscale = image_xscale; afterimage.image_yscale = image_yscale; afterimage.image_angle = image_angle; return afterimage; }
();
110
                    met = i - 1;
111
                }
112
            }
113
            if (met == -4)
114
            {
115
                var _list = ds_list_create();
116
                var _num = instance_place_list(x + (px * i), y + (py * i), 1031, _list, false);
117
                if (_num > 0)
118
                {
119
                    for (var j = 0; j < _num; j++)
120
                    {
121
                        if (ds_list_find_value(_list, j) != mysolid)
122
                            met = i - 1;
123
                    }
124
                }
125
                ds_list_destroy(_list);
126
            }
127
        }
128
        if (met > 0)
129
        {
130
            var movetime = round(met / 16) + 1;
131
            if (checkdir == 1 || checkdir == 3)
132
            {
133
                with (other)
134
                    
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);
135
            }
136
            if (checkdir == 0 || checkdir == 2)
137
            {
138
                with (other)
139
                    
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);
140
            }
141
            other.con = -1;
142
            snd_play_delay(snd_wing, movetime, 0.7, 0.8);
143
            with (other)
144
                scr_delay_var("con", 0, movetime + 1);
145
            with (other)
146
                scr_delay_var("flagupdate", 1, movetime + 1);
147
        }
148
        else
149
        {
150
            other.con = 0;
151
        }
152
    }
153
}
154
if (flagupdate)
155
{
156
    flagupdate = 0;
157
    if (xflag != -4)
158
    {
159
        global.flag[xflag] = x;
160
        global.flag[yflag] = y;
161
    }
162
}