Deltarune (Chapter 4) script viewer

← back to main script listing

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