Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_rotating_tower_controller_old_Draw_0

(view raw script w/o annotations or w/e)
1
var render_ypos = (494 - (round(yoffset / 40) - 12)) + round((obj_mainchara.y - 220) / 40);
2
var render_ypos_start = render_ypos - 14;
3
var render_ypos_end = render_ypos + 9;
4
if (render_ypos_end > 500)
5
    render_ypos_end = 500;
6
if (renderalt == true)
7
    render_ypos_start = render_ypos - 7;
8
with (obj_tower_falling_piece)
9
    image_index = obj_rotating_tower_controller.tower_image_index;
10
eyesmoketimer++;
11
if (shake_timer > 0)
12
{
13
    if (shake_timer == 30)
14
    {
15
        instance_create(x, y, obj_shake);
16
        snd_play(snd_screenshake);
17
    }
18
    if (shake_count == -1)
19
    {
20
        render_ypos_start_shake = render_ypos - 16;
21
        render_ypos_end_shake = render_ypos + 16;
22
        if (render_ypos_end_shake > 499)
23
            render_ypos_end_shake = 499;
24
        shake_count = render_ypos_end_shake + 1;
25
    }
26
    shake_timer--;
27
    if (shake_count > render_ypos_start_shake)
28
        shake_count--;
29
    for (i = render_ypos_end_shake; i > shake_count; i--)
30
    {
31
        tower_siner[i] += 5;
32
        tower_xoffset[i] = sin((100 - tower_siner[i]) / 6) * 14;
33
        if (render_ypos == i)
34
            obj_mainchara.tower_shake_xoffset = sin((100 - tower_siner[i]) / 6) * 14;
35
    }
36
}
37
else
38
{
39
    shake_timer--;
40
    if (shake_timer > -20)
41
    {
42
        for (i = render_ypos_start_shake; i < render_ypos_end_shake; i++)
43
        {
44
            tower_siner[i] = 0;
45
            tower_xoffset[i] = lerp(tower_xoffset[i], 0, 0.4);
46
            obj_mainchara.tower_shake_xoffset = lerp(obj_mainchara.tower_shake_xoffset, 0, 0.4);
47
        }
48
    }
49
    if (shake_timer == -20)
50
    {
51
        render_ypos_start_shake = 0;
52
        render_ypos_end_shake = 0;
53
        shake_count = -1;
54
    }
55
}
56
if (tower_falls_apart_con == 1)
57
{
58
    tower_falls_apart_timer++;
59
    if (tower_falls_apart_timer == 1)
60
    {
61
        if (tower_falls_apart_i == 0)
62
        {
63
            tower_falls_apart_i = render_ypos + 6;
64
            if (tower_falls_apart_i > 499)
65
                render_ypos_end_shake = 499;
66
            i = render_ypos + 7;
67
            while (i < 499)
68
            {
69
                tower_piece_sprite[i] = 4168;
70
                for (var _i = 0; _i < 8; _i++)
71
                    tower_object[i][_i] = 0;
72
                i++;
73
            }
74
            tower_object[i][7] = 0;
75
        }
76
        else
77
        {
78
            tower_falls_apart_i--;
79
        }
80
        for (var _i = 0; _i < 8; _i++)
81
        {
82
            if (tower_object[tower_falls_apart_i][_i] > 0)
83
            {
84
                inst1 = instance_create_depth(x, y, depth + 1, obj_tower_falling_piece_object);
85
                if (tower_object[tower_falls_apart_i][_i] == 1)
86
                    inst1.sprite_index = spr_tower_rotating_ladder;
87
                if (tower_object[tower_falls_apart_i][_i] == 2)
88
                    inst1.sprite_index = spr_tower_rotating_steps;
89
                if (tower_object[tower_falls_apart_i][_i] == 3)
90
                    inst1.sprite_index = spr_tower_rotating_rocks;
91
                if (tower_object[tower_falls_apart_i][_i] == 4)
92
                    inst1.sprite_index = spr_tower_rotating_eye;
93
                if (tower_object[tower_falls_apart_i][_i] == 5)
94
                    inst1.sprite_index = spr_tower_rotating_eye_drip;
95
                inst1.i = tower_falls_apart_i;
96
                inst1.ii = _i;
97
            }
98
        }
99
        inst1 = instance_create_depth(320, ((40 * tower_falls_apart_i) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
100
        inst1.sprite_index = spr_tower_rotating_piece1_strip1;
101
        inst1.i = tower_falls_apart_i;
102
        inst2 = instance_create_depth(320, ((40 * tower_falls_apart_i) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
103
        inst2.sprite_index = spr_tower_rotating_piece1_strip2;
104
        inst2.i = tower_falls_apart_i;
105
        inst3 = instance_create_depth(320, ((40 * tower_falls_apart_i) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
106
        inst3.sprite_index = spr_tower_rotating_piece1_strip3;
107
        inst3.i = tower_falls_apart_i;
108
        inst4 = instance_create_depth(320, ((40 * tower_falls_apart_i) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
109
        inst4.sprite_index = spr_tower_rotating_piece1_strip4;
110
        inst4.i = tower_falls_apart_i;
111
        var aaa = choose(1, 3, 2, 4);
112
        if (aaa == 1)
113
        {
114
            inst1.delay = 1;
115
            inst2.delay = 6;
116
            inst3.delay = 11;
117
            inst4.delay = 16;
118
        }
119
        if (aaa == 2)
120
        {
121
            inst1.delay = 16;
122
            inst2.delay = 11;
123
            inst3.delay = 6;
124
            inst4.delay = 1;
125
        }
126
        if (aaa == 3)
127
        {
128
            inst1.delay = 6;
129
            inst2.delay = 1;
130
            inst3.delay = 16;
131
            inst4.delay = 11;
132
        }
133
        if (aaa == 4)
134
        {
135
            inst1.delay = 11;
136
            inst2.delay = 16;
137
            inst3.delay = 1;
138
            inst4.delay = 6;
139
        }
140
        if (tower_falls_apart_i <= render_ypos && !instance_exists(obj_tower_falling_kris_falls))
141
        {
142
            snd_play_pitch(snd_fall, 0.8);
143
            krisfalls = instance_create_depth(obj_mainchara.x, obj_mainchara.y, obj_mainchara.depth, obj_tower_falling_kris_falls);
144
            krisfalls.image_index = obj_mainchara.image_index;
145
            krisfalls.fall_i = tower_falls_apart_i;
146
        }
147
        if (i_ex(obj_rotating_tower_controller) && i_ex(obj_tower_dog) && obj_rotating_tower_controller.yoffset > 4900 && obj_tower_dog.fallingoff == false && ((500 - tower_falls_apart_i) * 40) > (abs(obj_tower_dog.draw_y) - 20))
148
        {
149
            with (obj_tower_dog)
150
                fallingoff = true;
151
        }
152
    }
153
    if (tower_falls_apart_i < render_ypos && !instance_exists(obj_tower_falling_kris_falls))
154
    {
155
        snd_play_pitch(snd_fall, 0.8);
156
        krisfalls = instance_create_depth(obj_mainchara.x, obj_mainchara.y, obj_mainchara.depth, obj_tower_falling_kris_falls);
157
        krisfalls.image_index = obj_mainchara.image_index;
158
        krisfalls.fall_i = tower_falls_apart_i;
159
    }
160
    if (tower_falls_apart_timer == 2)
161
    {
162
        tower_piece_sprite[tower_falls_apart_i] = 4168;
163
        for (var _i = 0; _i < 8; _i++)
164
            tower_object[tower_falls_apart_i][_i] = tower_object[tower_falls_apart_i][_i] * -1;
165
    }
166
    if (!instance_exists(obj_tower_falling_kris_falls) && endclimb == false)
167
    {
168
        var fallfast = true;
169
        if (room == room_dw_church_dogclimb && yoffset > 2800 && yoffset < 4600 && obj_rotating_tower_controller.yoffset < 4900)
170
            fallfast = false;
171
        if ((abs(render_ypos - tower_falls_apart_i) > 3 && fallfast && tower_falls_apart_timer == 15) || tower_falls_apart_timer >= 60 || (yoffset >= 4600 && tower_falls_apart_i > 399) || (yoffset >= 4600 && tower_falls_apart_timer == 15))
172
            tower_falls_apart_timer = 0;
173
    }
174
}
175
if (room == room_dw_church_dogclimb && tower_falls_apart_con == 1)
176
{
177
    tower_falls_apart_timer_dog++;
178
    if (tower_falls_apart_timer_dog == 1)
179
    {
180
        if (tower_falls_apart_i_dog == 0)
181
        {
182
            tower_falls_apart_i_dog = render_ypos + 6;
183
            i = render_ypos + 7;
184
            while (i < 499)
185
            {
186
                tower_piece_sprite_dog[i] = 4168;
187
                i++;
188
            }
189
        }
190
        else
191
        {
192
            tower_falls_apart_i_dog--;
193
        }
194
        inst = instance_create_depth(x, y, depth - 1, obj_tower_falling_piece_object);
195
        inst.sprite_index = spr_tower_rotating_ladder;
196
        inst.i = tower_falls_apart_i_dog;
197
        inst.ii = 6;
198
        inst.dog = true;
199
        inst5 = instance_create_depth(560, ((40 * tower_falls_apart_i_dog) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
200
        inst5.sprite_index = spr_tower_rotating_piece1_strip1;
201
        inst5.i = tower_falls_apart_i_dog;
202
        inst6 = instance_create_depth(560, ((40 * tower_falls_apart_i_dog) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
203
        inst6.sprite_index = spr_tower_rotating_piece1_strip2;
204
        inst6.i = tower_falls_apart_i_dog;
205
        inst7 = instance_create_depth(560, ((40 * tower_falls_apart_i_dog) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
206
        inst7.sprite_index = spr_tower_rotating_piece1_strip3;
207
        inst7.i = tower_falls_apart_i_dog;
208
        inst8 = instance_create_depth(560, ((40 * tower_falls_apart_i_dog) + yoffset) - (towerpiececount * 40), depth + 1, obj_tower_falling_piece);
209
        inst8.sprite_index = spr_tower_rotating_piece1_strip4;
210
        inst8.i = tower_falls_apart_i_dog;
211
        var aaa = choose(1, 3, 2, 4);
212
        if (aaa == 1)
213
        {
214
            inst5.delay = 16;
215
            inst6.delay = 11;
216
            inst7.delay = 6;
217
            inst8.delay = 1;
218
        }
219
        if (aaa == 2)
220
        {
221
            inst5.delay = 6;
222
            inst6.delay = 1;
223
            inst7.delay = 16;
224
            inst8.delay = 11;
225
        }
226
        if (aaa == 3)
227
        {
228
            inst5.delay = 11;
229
            inst6.delay = 16;
230
            inst7.delay = 1;
231
            inst8.delay = 6;
232
        }
233
        if (aaa == 4)
234
        {
235
            inst5.delay = 1;
236
            inst6.delay = 6;
237
            inst7.delay = 11;
238
            inst8.delay = 16;
239
        }
240
        if (i_ex(obj_rotating_tower_controller) && i_ex(obj_tower_dog) && obj_rotating_tower_controller.yoffset > 4900 && obj_tower_dog.fallingoff == false && ((500 - tower_falls_apart_i_dog) * 40) > (abs(obj_tower_dog.draw_y) - 20))
241
        {
242
            with (obj_tower_dog)
243
                fallingoff = true;
244
        }
245
    }
246
    if (i_ex(obj_rotating_tower_controller) && i_ex(obj_tower_dog) && obj_rotating_tower_controller.yoffset > 4900 && obj_tower_dog.fallingoff == false && ((500 - tower_falls_apart_i_dog) * 40) > (abs(obj_tower_dog.draw_y) - 20))
247
    {
248
        with (obj_tower_dog)
249
            fallingoff = true;
250
    }
251
    if (tower_falls_apart_timer_dog == 2)
252
        tower_piece_sprite_dog[tower_falls_apart_i_dog] = 4168;
253
    if (endclimb == false)
254
    {
255
        var fallfast = true;
256
        if (room == room_dw_church_dogclimb && yoffset > 2800 && yoffset < 4600 && obj_rotating_tower_controller.yoffset < 4900)
257
            fallfast = false;
258
        if ((abs(render_ypos - tower_falls_apart_i) > 3 && fallfast && tower_falls_apart_timer_dog == 15) || tower_falls_apart_timer_dog >= 60 || (yoffset >= 4600 && tower_falls_apart_i > 390 && tower_falls_apart_timer_dog == 2) || (yoffset >= 4600 && tower_falls_apart_timer_dog == 5))
259
            tower_falls_apart_timer_dog = 0;
260
    }
261
}
262
for (i = render_ypos_start; i < render_ypos_end; i++)
263
{
264
    if (tower_type == 0 && wide_tower)
265
    {
266
        for (ii = 0; ii < (piececount + 1); ii++)
267
        {
268
            if (tower_object[i][ii] > 0)
269
            {
270
                event_user(10);
271
                if (((((40 * i) + yoffset) - (towerpiececount * 40)) > -20 || endclimb == false) && tower_piece_sprite[i] == 5316)
272
                {
273
                    var bg_index = ladder_index + 10;
274
                    draw_sprite_ext(spr_tower_rotating_bg, bg_index, 320 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40), 1.1, 1, 0, c_white, 1);
275
                }
276
            }
277
        }
278
    }
279
    if ((((40 * i) + yoffset) - (towerpiececount * 40)) > -40 || endclimb == false)
280
    {
281
        if (tower_image_index == 0)
282
            tower_image_index = 0;
283
        draw_sprite(tower_piece_sprite[i], tower_image_index, 320 + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40));
284
        if (wide_tower && tower_piece_sprite[i] != 5316)
285
            draw_sprite(spr_tower_rotating_fountain_gradient, 0, 320 + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40));
286
        if (room == room_dw_church_dogclimb)
287
            draw_sprite(tower_piece_sprite_dog[i], tower_image_index, 560 + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40));
288
    }
289
    if (tower_type == 0)
290
    {
291
        ii = 0;
292
        while (ii < (piececount + 1))
293
            ii++;
294
        for (ii = 0; ii < (piececount + 1); ii++)
295
        {
296
            if (tower_object[i][ii] > 0)
297
            {
298
                event_user(10);
299
                var _blend = 16777215;
300
                if (wide_tower)
301
                    _blend = merge_color(c_white, c_black, abs(xx) / (piecemaxdistance * 1.2));
302
                if (((((40 * i) + yoffset) - (towerpiececount * 40)) > -20 || endclimb == false) && tower_piece_sprite[i] == 5316)
303
                {
304
                    var bg_index = ladder_index;
305
                    if (towerback)
306
                        bg_index = 9;
307
                    draw_sprite_ext(spr_tower_rotating_bg, bg_index, 320 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40), 1.1, 1, 0, _blend, 1);
308
                }
309
                if (((((40 * i) + yoffset) - (towerpiececount * 40)) > -20 || endclimb == false) && vis == true)
310
                {
311
                    if (tower_object[i][ii] == 1)
312
                        draw_sprite_ext(spr_tower_rotating_ladder, ladder_index, 320 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40), 1, 1, 0, _blend, 1);
313
                    if (tower_object[i][ii] == 2)
314
                        draw_sprite_ext(spr_tower_rotating_steps, ladder_index, 320 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40), 1, 1, 0, _blend, 1);
315
                    if (tower_object[i][ii] == 3)
316
                        draw_sprite_ext(spr_tower_rotating_rocks, ladder_index, 320 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40), 1, 1, 0, _blend, 1);
317
                }
318
            }
319
        }
320
        for (ii = 0; ii < (piececount + 1); ii++)
321
        {
322
            event_user(10);
323
            if (((((40 * i) + yoffset) - (towerpiececount * 40)) > -20 || endclimb == false) && vis == true)
324
            {
325
                if (tower_object[i][ii] == 4)
326
                {
327
                    if (i == 427 && ii == 3)
328
                    {
329
                    }
330
                    draw_sprite(spr_tower_rotating_eye, ladder_index, 320 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40));
331
                    if (ladder_index != 9 && (eyesmoketimer % 12) == 0)
332
                    {
333
                        if (xx > 0)
334
                            var extravar = lerp(0, 0, xx / 110);
335
                        if (xx < 0)
336
                            var extravar = lerp(0, 0, abs(xx) / 110);
337
                        inst = instance_create(320 + tower_xoffset[i], ((((40 * i) + yoffset) - (towerpiececount * 40)) + 30 + random(12)) - obj_rotating_tower_controller.yoffset, obj_fountainball);
338
                        inst.angle_position = (270 - tower_angle) + (xx / 1.9);
339
                    }
340
                }
341
                if (tower_eyedrip[i][ii] > 0)
342
                {
343
                    draw_sprite_ext(spr_tower_rotating_bg, ladder_index, 320 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40) - 2, 0.6, tower_eyedrip[i][ii] / 10, 0, c_black, 1);
344
                    if (tower_eyedrip[i][ii] < 10 && (render_ypos - 5) < i)
345
                    {
346
                        tower_eyedrip[i][ii]++;
347
                        if (tower_eyedrip[i][ii] == 10)
348
                            tower_eyedrip[i + 1][ii] = 1;
349
                    }
350
                }
351
            }
352
        }
353
    }
354
    if (room == room_dw_church_dogclimb)
355
    {
356
        for (ii = 0; ii < 8; ii++)
357
        {
358
            ladder_index = 4;
359
            xx = 0;
360
            if (ii == 6)
361
            {
362
                if (tower_angle >= 260 && tower_angle < 266)
363
                    ladder_index = 0;
364
                else if (tower_angle >= 267 && tower_angle < 282)
365
                    ladder_index = 1;
366
                else if (tower_angle >= 282 && tower_angle < 290)
367
                    ladder_index = 2;
368
                else if (tower_angle >= 290 && tower_angle < 335)
369
                    ladder_index = 3;
370
                else if (tower_angle >= 335 || tower_angle < 25)
371
                    ladder_index = 4;
372
                else if (tower_angle >= 25 && tower_angle < 70)
373
                    ladder_index = 5;
374
                else if (tower_angle >= 70 && tower_angle < 78)
375
                    ladder_index = 6;
376
                else if (tower_angle >= 78 && tower_angle < 93)
377
                    ladder_index = 7;
378
                else if (tower_angle >= 93 && tower_angle < 100)
379
                    ladder_index = 8;
380
                else
381
                    ladder_index = 9;
382
                if (tower_angle >= 260)
383
                    xx = lerp(-70, 0, (tower_angle - 260) / 100);
384
                if (tower_angle < 100)
385
                    xx = lerp(0, 70, tower_angle / 100);
386
                if (tower_piece_sprite_dog[i] != 4168)
387
                {
388
                    if ((((40 * i) + yoffset) - (towerpiececount * 40)) > -20 || endclimb == false)
389
                        draw_sprite(spr_tower_rotating_ladder, ladder_index, 560 + xx + tower_xoffset[i], ((40 * i) + yoffset) - (towerpiececount * 40));
390
                }
391
            }
392
        }
393
    }
394
}
395
moved = 0;
396
if (tower_angle_record[0] != obj_rotating_tower_controller.tower_angle)
397
    moved = 1;
398
if (yoffset_record[0] != obj_rotating_tower_controller.yoffset)
399
    moved = 1;
400
if (moved == 1)
401
{
402
    for (i = 75; i > 0; i -= 1)
403
    {
404
        tower_angle_record[i] = tower_angle_record[i - 1];
405
        yoffset_record[i] = yoffset_record[i - 1];
406
        var ex = 0;
407
        tower_angle_record[0] = tower_angle;
408
        yoffset_record[0] = yoffset - ex;
409
    }
410
}
411
if (room == room_dw_church_dogclimb)
412
{
413
    draw_sprite(spr_dogclimb_top2, 2, 262, -54);
414
    if (endclimb == false)
415
        draw_sprite(spr_dogclimb_top2, 2, 502, -54);
416
}
417
draw_set_color(c_white);
418
draw_text(camerax(), 20, "yoffset: " + string(yoffset));
419
draw_text(camerax(), 40, "tower_angle: " + string(tower_angle));
420
draw_text(camerax(), 60, "obj_mainchara.y: " + string(obj_mainchara.y));
421
draw_text(camerax(), 80, "cameray: " + string(cameray()));