Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_board_hookshot_Step_0

(view raw script w/o annotations or w/e)
1
if (init == 0)
2
{
3
    myspeed = 16;
4
    maxlength = round(160 / myspeed);
5
    con = 0;
6
    speed = myspeed;
7
    image_angle = direction + 90;
8
    init = 1;
9
}
10
if (con == 0)
11
{
12
    timer++;
13
    var resethook = false;
14
    if (timer >= maxlength)
15
        resethook = true;
16
    for (var i = 0; i < array_length(hookablelist); i++)
17
    {
18
        if (!i_ex(hookedobj))
19
            hookedobj = instance_place(x + hspeed, y + vspeed, hookablelist[i]);
20
    }
21
    if (i_ex(hookedobj))
22
    {
23
        resethook = false;
24
        debug_message("hookedobj=" + string(hookedobj));
25
        var hstep = 0;
26
        for (var i = 0; i < abs(round(hspeed)); i++)
27
        {
28
            if (place_meeting(x + (i * sign(hspeed)), y, hookedobj))
29
            {
30
                hstep = i;
31
                break;
32
            }
33
        }
34
        x += ((hstep - 1) * sign(hspeed));
35
        var vstep = 0;
36
        for (var i = 0; i < abs(round(vspeed)); i++)
37
        {
38
            if (place_meeting(x, y + (i * sign(vspeed)), hookedobj))
39
            {
40
                vstep = i;
41
                break;
42
            }
43
        }
44
        y += ((vstep - 1) * sign(vspeed));
45
        snd_play_pitch(snd_bluh, 2);
46
        speed = 0;
47
        con = 10;
48
        if (hookdaddy.name == "susie" && global.flag[1020 got_power_croissant] == 1)
49
        {
50
            var tograbobj = hookedobj;
51
            with (hookdaddy)
52
            {
53
                for (var i = 0; i < array_length(grabbablelist); i++)
54
                {
55
                    if (tograbobj.object_index == grabbablelist[i])
56
                        other.con = 20;
57
                }
58
            }
59
        }
60
    }
61
    if (place_meeting(x + hspeed, y + vspeed, obj_board_solid))
62
    {
63
        var hstep = 0;
64
        for (var i = 0; i < abs(round(hspeed)); i++)
65
        {
66
            if (place_meeting(x + (i * sign(hspeed)), y, obj_board_solid))
67
            {
68
                hstep = i;
69
                break;
70
            }
71
        }
72
        x += ((hstep - 1) * sign(hspeed));
73
        var vstep = 0;
74
        for (var i = 0; i < abs(round(vspeed)); i++)
75
        {
76
            if (place_meeting(x, y + (i * sign(vspeed)), obj_board_solid))
77
            {
78
                vstep = i;
79
                break;
80
            }
81
        }
82
        y += ((vstep - 1) * sign(vspeed));
83
        snd_play(snd_bluh);
84
        resethook = true;
85
    }
86
    if (x >= 492)
87
        resethook = true;
88
    if (x <= 140)
89
        resethook = true;
90
    if (y >= 308)
91
        resethook = true;
92
    if (y <= 76)
93
        resethook = true;
94
    if (resethook == true)
95
    {
96
        speed = 0;
97
        con = 1;
98
        timer = 0;
99
    }
100
}
101
if (con == 1)
102
{
103
    timer++;
104
    if (timer == 4)
105
    {
106
        timer = 0;
107
        con = 2;
108
        var resettime = round(point_distance(x, y, xstart, ystart) / myspeed);
109
        
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, resettime);
110
        
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, resettime);
111
    }
112
}
113
if (con == 2)
114
{
115
    if (abs(x - xstart) <= 8 && abs(y - ystart) <= 8)
116
        instance_destroy();
117
}
118
if (con == 10)
119
{
120
    var lerptime = round(point_distance(x, y, xstart, ystart) / myspeed);
121
    
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; }
("xstart", xstart, x, lerptime);
122
    
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; }
("ystart", ystart, y, lerptime);
123
    con = 11;
124
}
125
if (con == 11)
126
{
127
    var xadj = 0;
128
    var yadj = 0;
129
    if (hookdaddy.facing == 0)
130
    {
131
        xadj = -16;
132
        yadj = -22;
133
    }
134
    if (hookdaddy.facing == 1)
135
    {
136
        xadj = -22;
137
        yadj = -24;
138
    }
139
    if (hookdaddy.facing == 2)
140
    {
141
        xadj = -16;
142
        yadj = -10;
143
    }
144
    if (hookdaddy.facing == 3)
145
    {
146
        xadj = -10;
147
        yadj = -24;
148
    }
149
    hookdaddy.x = xstart + xadj;
150
    hookdaddy.y = ystart + yadj;
151
    if (x == xstart && y == ystart)
152
    {
153
        con = 12;
154
        
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ with (instance_create_depth(0, 0, 0, obj_doom)) { alarm[0] target = arg0; } }
(id, 2);
155
    }
156
}
157
if (con == 20)
158
{
159
    var lerptime = round(point_distance(x, y, xstart, ystart) / myspeed);
160
    
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, lerptime);
161
    
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, lerptime);
162
    xoffset = hookedobj.x - x;
163
    yoffset = hookedobj.y - y;
164
    con = 21;
165
}
166
if (con == 21)
167
{
168
    hookedobj.x = x + xoffset;
169
    hookedobj.y = y + yoffset;
170
    if (x == xstart && y == ystart)
171
    {
172
        var grabbedobject = hookedobj;
173
        with (hookdaddy)
174
        {
175
            grabbed = grabbedobject;
176
            grab = 1;
177
            grabmarker = instance_create(x, y, obj_board_grabobject);
178
            with (grabmarker)
179
            {
180
                snd_play(snd_board_lift);
181
                grabdaddy = other.id;
182
                grabbedid = other.grabbed;
183
                sprite_index = grabbedid.sprite_index;
184
                image_xscale = grabbedid.image_xscale;
185
                image_yscale = grabbedid.image_yscale;
186
                image_speed = grabbedid.image_speed;
187
                sourcex = grabbedid.x;
188
                sourcey = grabbedid.y;
189
            }
190
            with (grabbed)
191
            {
192
                visible = false;
193
                frozen = true;
194
                setxy(board_tilex(-1), board_tiley(-1));
195
                if (object_index == obj_mainchara_board)
196
                    canfreemove = 0;
197
            }
198
        }
199
        instance_destroy();
200
    }
201
}