Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_make_fountain_Draw_0

(view raw script w/o annotations or w/e)
1
if (active == 1)
2
{
3
    if (drawkris == 1)
4
        draw_self();
5
    if (ballcon == 1)
6
    {
7
        xballtimer += (xballtimer + 1);
8
        yballtimer++;
9
        balltimer++;
10
        cenx = x + 18;
11
        ceny = y + 57;
12
        draw_set_color(c_white);
13
        d_ellipse(cenx - xballtimer, ceny - 1, cenx + xballtimer, ceny + 1, false);
14
        if (xballtimer >= 80)
15
        {
16
            balltimer = 0;
17
            yballtimer = 1;
18
            ballcon = 2;
19
            whitecolor = 16777215;
20
        }
21
    }
22
    if (ballcon == 2)
23
    {
24
        balltimer++;
25
        if (balltimer > 80)
26
            inverttimer++;
27
        if (inverttimer >= 90)
28
            releasetimer++;
29
        if (inverttimer >= 0 && inverttimer < 60)
30
            whitecolor = merge_color(c_white, c_black, inverttimer / 60);
31
        xballtimer *= 0.5;
32
        if (releasetimer <= 0)
33
        {
34
            if (xballtimer <= 20)
35
                xballtimer = 20;
36
            if (xballtimer < (yballtimer / 6))
37
                xballtimer = yballtimer / 6;
38
            if (yballtimer >= 98)
39
                yballtimer = 99 + random(5);
40
            yballtimer *= 3;
41
        }
42
        else
43
        {
44
            yballtimer *= 3;
45
            var _ball = instance_create(cenx, ceny, obj_DCA15_fountain_ball);
46
            _ball.depth = depth + 10;
47
            draw_sprite_ext(spr_kris_fountain_ball, 0, cenx + 1, ceny - 1, 0.15, 0.15, 0, c_black, 1);
48
            if (releasetimer == 1)
49
                con = 64;
50
            if (releasetimer >= 10)
51
            {
52
                ballcon = 3;
53
                fountain_sound = audio_play_sound(snd_deep_noise, 50, 1);
54
            }
55
        }
56
        draw_set_color(c_white);
57
        d_ellipse(cenx - xballtimer - 2, ceny - yballtimer, cenx + xballtimer + 2, ceny + 1, false);
58
        draw_set_color(whitecolor);
59
        d_ellipse(cenx - xballtimer, ceny - yballtimer, cenx + xballtimer, ceny + 1, false);
60
        if (releasetimer <= 0)
61
        {
62
            if (balltimer >= 6)
63
                draw_sprite_ext(susie_sprite.sprite_index, susie_sprite.image_index, susie_sprite.x, susie_sprite.y, image_xscale, image_yscale, image_angle, image_blend, 0.3 - (1 / ((balltimer / 2) + 1)));
64
            if (inverttimer >= 1)
65
                draw_sprite_ext(spr_susie_fountain_make_loop_invert, susie_sprite.image_index, susie_sprite.x, susie_sprite.y, image_xscale, image_yscale, image_angle, image_blend, 1 - (30 / inverttimer));
66
        }
67
        if (releasetimer <= 0)
68
        {
69
            if ((balltimer % 5) == 0)
70
            {
71
                afterimage = instance_create(cenx - 4, ceny + 4, obj_afterimage);
72
                afterimage.sprite_index = spr_kris_make_fountain_flash;
73
                afterimage.image_speed = 0;
74
                afterimage.image_xscale = 4;
75
                afterimage.image_yxscale = 0.5;
76
                afterimage.image_alpha = 0.8;
77
            }
78
        }
79
        with (obj_afterimage)
80
        {
81
            image_xscale *= (1.15 + random(0.02));
82
            image_yscale *= (1.05 + random(0.02));
83
            y += 0.4;
84
            x -= 0.4;
85
        }
86
    }
87
    if (ballcon == 3)
88
    {
89
        var _ball = instance_create(cenx, ceny, obj_DCA15_fountain_ball);
90
        _ball.vspeed = -0.5 + (random(-1) * speed_modifier);
91
        _ball.depth = depth + 100;
92
        draw_sprite_ext(spr_kris_fountain_ball, 0, cenx + 1, ceny - 1, 0.15, 0.15, 0, c_black, 1);
93
        ceiltimer += (1 * speed_modifier);
94
        if (ceilheight < 120)
95
            ceilheight += (sin(ceiltimer / 18) + (0.3 * speed_modifier));
96
        if (ceilheight >= 120)
97
            ceilheight += (0.5 * speed_modifier);
98
        for (i = 0; i < 12; i++)
99
        {
100
            ceilballx[i] = ((ceiltimer + (i * 40)) % 400) + -40 + camerax();
101
            draw_sprite_ext(spr_kris_fountain_ball, 0, ceilballx[i], (ceilheight - 80) + (sin(i + (ceiltimer / 8)) * 7), 1.05, 1.05, 0, c_white, 1);
102
        }
103
        for (i = 0; i < 12; i++)
104
            draw_sprite_ext(spr_kris_fountain_ball, 0, ceilballx[i], (ceilheight - 80) + (sin(i + (ceiltimer / 8)) * 7), 1, 1, 0, c_black, 1);
105
        draw_set_color(c_black);
106
        ossafe_fill_rectangle(-10, ceilheight - 80, 999, -90, false);
107
        if (ceiltimer >= 600)
108
        {
109
            volume_modifier = 
scr_movetowards
scr_movetowards

function
scr_movetowards(arg0, arg1, arg2)
{ if (arg0 == arg1) return arg0; else if (arg0 > arg1) return max(arg0 - arg2, arg1); else return min(arg0 + arg2, arg1); } function scr_obj_movetowards_obj(arg0, arg1, arg2 = 0, arg3 = 0) { scr_obj_movetowards_point(arg0.x + arg2, arg0.y + arg3, arg1); } function scr_obj_movetowards_point(arg0, arg1, arg2) { var _distance = point_distance(x, y, arg0, arg1); if (arg2 >= _distance) { x = arg0; y = arg1; } else { var _direction = point_direction(x, y, arg0, arg1); x += lengthdir_x(arg2, _direction); y += lengthdir_y(arg2, _direction); } }
(volume_modifier, 0, 0.01);
110
            audio_sound_gain(fountain_sound, 1 * volume_modifier, 0);
111
        }
112
    }
113
}