Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_dw_teevie_susiezilla_Step_0

(view raw script w/o annotations or w/e)
1
depth = 5000;
2
var cx = camerax();
3
var cy = cameray();
4
if (init == 0)
5
{
6
    with (obj_caterpillarchara)
7
    {
8
        if (name == "susie")
9
        {
10
            other.susie = id;
11
            other.init = 1;
12
        }
13
    }
14
}
15
if (sukcon == 0)
16
{
17
    if (global.interact == 0)
18
    {
19
        var _target = -4;
20
        with (obj_mainchara)
21
        {
22
            var xloc = x + 18;
23
            var yloc = y + 60;
24
            var radius = 120;
25
            _target = collision_rectangle(xloc - radius, yloc - (radius / 2), xloc + radius, yloc + (radius / 2), obj_susiezilla_house_single, 0, 0);
26
        }
27
        if (instance_exists(_target))
28
        {
29
            if (_target.myhealth > 0)
30
                sukcon = 1;
31
        }
32
        else if (susie.follow == false)
33
        {
34
            sukcon = 4;
35
        }
36
    }
37
}
38
if (sukcon == 1)
39
{
40
    susie.follow = false;
41
    susie.fun = 1;
42
    targ = instance_nearest(susie.x, susie.y, obj_susiezilla_house_single);
43
    var side = choose(0, 1);
44
    var targx = targ.x - 36 - 18;
45
    var targy = targ.y - 62;
46
    if (side == 1)
47
        targx = (targ.x + 36) - 8;
48
    suwalktarg.x = targx;
49
    suwalktarg.y = targy;
50
    sustart.x = susie.x;
51
    sustart.y = susie.y;
52
    walktime = scr_returnwait(susie.x, susie.y, suwalktarg.x, suwalktarg.y, 8);
53
    sukcon = 1.5;
54
    timer2 = 0;
55
    suktimer = 0;
56
}
57
if (sukcon == 1.5)
58
{
59
    if (global.interact == 0)
60
    {
61
        timer2++;
62
        susie.x = lerp(sustart.x, suwalktarg.x, timer2 / walktime);
63
        susie.y = lerp(sustart.y, suwalktarg.y, timer2 / walktime);
64
        var facing = point_direction(susie.x, susie.y, suwalktarg.x, suwalktarg.y);
65
        with (susie)
66
        {
67
            facing += 90;
68
            if (facing > 360)
69
                facing -= 360;
70
            facing = round(facing / 90);
71
            if (facing == 4)
72
                facing = 0;
73
            switch (facing)
74
            {
75
                case 0:
76
                    sprite_index = spr_susie_walk_down_dw;
77
                    break;
78
                case 1:
79
                    sprite_index = spr_susie_walk_right_dw;
80
                    break;
81
                case 2:
82
                    sprite_index = spr_susie_walk_up_dw;
83
                    break;
84
                case 3:
85
                    sprite_index = spr_susie_walk_left_dw;
86
                    break;
87
            }
88
            image_index += 0.25;
89
        }
90
        if (timer2 >= walktime)
91
        {
92
            setxy(suwalktarg.x, suwalktarg.y, susie);
93
            timer2 = 0;
94
            sukcon = 2;
95
            suktimer = 0;
96
        }
97
    }
98
}
99
if (sukcon == 2)
100
{
101
    suktimer++;
102
    if (suktimer == 1)
103
    {
104
        dokick = false;
105
        susie.fun = 1;
106
        susie.image_speed = 0;
107
        susie.image_index = 0;
108
        if (i_ex(targ))
109
        {
110
            if (targ.myhealth > 0)
111
            {
112
                if (susie.x < targ.x)
113
                    susie.sprite_index = spr_susie_right_diagonal_kick_dw;
114
                else
115
                    susie.sprite_index = spr_susie_left_diagonal_kick_dw;
116
                dokick = true;
117
            }
118
        }
119
    }
120
    if (i_ex(targ))
121
    {
122
        if (targ.myhealth > 0 && dokick == true)
123
        {
124
            if (suktimer == 5)
125
                susie.image_index = 1;
126
            if (suktimer == 10)
127
                susie.image_index = 2;
128
            if (suktimer == 11)
129
            {
130
                snd_play(snd_wing);
131
                susie.image_index = 3;
132
                with (targ)
133
                {
134
                    myhealth = 0;
135
                    
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); }
();
136
                }
137
            }
138
        }
139
    }
140
    if (dokick)
141
    {
142
        if (suktimer == 12)
143
            susie.image_index = 4;
144
    }
145
    if (suktimer == 18)
146
    {
147
        with (targ)
148
        {
149
            
scr_marker_ext
scr_marker_ext

function
scr_marker_ext(arg0, arg1, arg2, arg3 = 1, arg4 = 1, arg5 = 0, arg6 = 0, arg7 = 16777215, arg8 = depth, arg9 = false, arg10 = -1, arg11 = 1)
{ var thismarker = instance_create(arg0, arg1, obj_marker); with (thismarker) { depth = arg8; sprite_index = arg2; image_speed = arg5; image_xscale = arg3; image_yscale = arg4; image_index = arg6; image_blend = arg7; image_alpha = arg11; if (arg9)
scr_depth();
} if (arg10 > 0)
scr_doom(thismarker, arg10);
return thismarker; }
(x, y, sprite_index, 2, 2, 0, image_index, image_blend, depth);
150
            instance_destroy();
151
        }
152
        sukcon = 3;
153
        suktimer = 0;
154
    }
155
}
156
if (sukcon == 3)
157
{
158
    targ = -4;
159
    targ = instance_nearest(susie.x, susie.y, obj_susiezilla_house_single);
160
    if (instance_exists(targ))
161
    {
162
        var targx = targ.x - 36 - 18;
163
        var targy = targ.y - 62;
164
        if (susie.x > targ.x)
165
            targx = (targ.x + 36) - 8;
166
        suwalktarg.x = targx;
167
        suwalktarg.y = targy;
168
        sustart.x = susie.x;
169
        sustart.y = susie.y;
170
        walktime = scr_returnwait(susie.x, susie.y, suwalktarg.x, suwalktarg.y, 8);
171
    }
172
    if (!instance_exists(targ))
173
        walktime = 99;
174
    else if (targ.x < cx || targ.x > (cx + 640))
175
        walktime = 99;
176
    timer2 = 0;
177
    suktimer = 0;
178
    if (walktime > 20)
179
        sukcon = 4;
180
    else
181
        sukcon = 1.5;
182
}
183
if (sukcon == 4)
184
{
185
    if (global.interact == 0)
186
    {
187
        with (susie)
188
        {
189
            var _s = 
190
            {
191
                x: x + 18,
192
                y: y + 82
193
            };
194
            var _k = 
195
            {
196
                x: obj_mainchara.x + 18,
197
                y: obj_mainchara.y + 70
198
            };
199
            fun = true;
200
            if (point_distance(_s.x, _s.y, _k.x, _k.y) > 64)
201
            {
202
                var _x = x;
203
                var _y = y;
204
                var dir = point_direction(_s.x, _s.y, _k.x, _k.y);
205
                x += lengthdir_x(8, dir);
206
                y += lengthdir_y(8, dir);
207
                var facing = dir;
208
                facing += 90;
209
                if (facing > 360)
210
                    facing -= 360;
211
                facing = round(facing / 90);
212
                if (facing == 4)
213
                    facing = 0;
214
                switch (facing)
215
                {
216
                    case 0:
217
                        sprite_index = spr_susie_walk_down_dw;
218
                        break;
219
                    case 1:
220
                        sprite_index = spr_susie_walk_right_dw;
221
                        break;
222
                    case 2:
223
                        sprite_index = spr_susie_walk_up_dw;
224
                        break;
225
                    case 3:
226
                        sprite_index = spr_susie_walk_left_dw;
227
                        break;
228
                }
229
                image_index += 0.25;
230
            }
231
            else
232
            {
233
                follow = true;
234
                fun = false;
235
                
scr_caterpillar_interpolate
scr_caterpillar_interpolate

function
scr_caterpillar_interpolate()
{ _newfacing =
scr_facing_letter_to_number(
scr_get_cardinal_direction(point_direction(x, y, obj_mainchara.x, obj_mainchara.y)));
remx[0] = obj_mainchara.x; remy[0] = obj_mainchara.y; facing[0] = _newfacing; for (_iaia = target; _iaia > 0; _iaia -= 1) { remx[_iaia] = lerp(obj_mainchara.x, x, _iaia / target); if (global.darkzone == 1) remy[_iaia] = lerp(obj_mainchara.y, y + 16, _iaia / target); else remy[_iaia] = lerp(obj_mainchara.y, y + 6, _iaia / target); facing[_iaia] = _newfacing; } }
();
236
                other.sukcon = 0;
237
            }
238
        }
239
    }
240
}
241
if (nohouses == 0)
242
{
243
    if (!i_ex(obj_susiezilla_house_single))
244
    {
245
        snd_play(snd_won);
246
        scr_confetti_ext(cx - 10, cy + 300, 15, 40, 20, 192, 356, 2);
247
        scr_confetti_ext(cx + 640 + 10, cy + 300, 165, 40, 20, 192, 356, 2);
248
        nohouses = 1;
249
        signx = cx + 320;
250
        with (
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; }
("signy", -400, 60, 40, -3, "out"))
251
            respectglobalinteract = true;
252
        timer = 0;
253
    }
254
}