Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_lw_rain_effect_Step_0

(view raw script w/o annotations or w/e)
1
if (
scr_debug
scr_debug

function
scr_debug()
{ if (global.debug == 1) return 1; }
())
2
{
3
    var _change = false;
4
    if (keyboard_check_pressed(ord("K")))
5
        toggle_effect();
6
    if (keyboard_check_pressed(ord("P")))
7
    {
8
        if (!active)
9
            active = true;
10
        show_debug = !show_debug;
11
        if (!show_debug)
12
            scr_debug_delete_persistent("Rainshader");
13
        _change = true;
14
    }
15
    if (keyboard_check_pressed(ord("O")))
16
    {
17
        color_overlay = !color_overlay;
18
        event_user(0);
19
    }
20
    if (show_debug)
21
    {
22
        if (keyboard_check_pressed(ord("Q")))
23
        {
24
            _change = true;
25
            rain_style--;
26
        }
27
        if (keyboard_check_pressed(ord("E")))
28
        {
29
            _change = true;
30
            rainsplash = !rainsplash;
31
        }
32
        if (keyboard_check_pressed(ord("W")))
33
        {
34
            _change = true;
35
            rain_style++;
36
        }
37
        if (keyboard_check_pressed(ord("H")))
38
        {
39
            _change = true;
40
            xdir = 0 - xdir;
41
            
scr_debug_print
scr_debug_print

function
scr_debug_print(arg0)
{ } function print_message(arg0) { } function debug_print(arg0) { } function scr_debug_clear_all() { scr_debug_clear_persistent(); }
("Flipped rain direction");
42
        }
43
        if (keyboard_check_pressed(ord("T")))
44
        {
45
            _change = true;
46
            genspeed--;
47
        }
48
        if (keyboard_check_pressed(ord("Y")))
49
        {
50
            _change = true;
51
            genspeed++;
52
        }
53
        if (keyboard_check_pressed(ord("U")))
54
        {
55
            _change = true;
56
            speed_mul--;
57
            if (speed_mul <= 0)
58
                speed_mul = 1;
59
        }
60
        if (keyboard_check_pressed(ord("I")))
61
        {
62
            _change = true;
63
            speed_mul++;
64
        }
65
    }
66
    if (_change)
67
    {
68
        rain_style = scr_loop(rain_style, 6);
69
        if (rain_style < 2 || rain_style == 4)
70
        {
71
            xspeed = 1;
72
            yspeed = 2;
73
        }
74
        else if (rain_style < 4)
75
        {
76
            xspeed = 2;
77
            yspeed = 2;
78
        }
79
        else
80
        {
81
            xspeed = 0;
82
            yspeed = 1;
83
        }
84
        if (rain_style >= 4)
85
        {
86
            sprite_index = rain_sprite[rain_style];
87
            if (rain_style == 4 && xdir == -1)
88
                sprite_index = spr_lw_rain_style_e_flip;
89
        }
90
    }
91
    event_user(0);
92
}
93
if (!active)
94
    exit;
95
if (global.interact == 3 && !room_exit)
96
{
97
    room_door = true;
98
    var _found = false;
99
    with (obj_doorAny)
100
    {
101
        if (touched == 1 && doorRoom == room_schoollobby)
102
        {
103
            _found = true;
104
            break;
105
        }
106
    }
107
    if (!_found)
108
    {
109
        with (obj_doorX_musfade)
110
        {
111
            if (touched == 1)
112
            {
113
                _found = true;
114
                break;
115
            }
116
        }
117
    }
118
    if (_found)
119
        event_user(2);
120
}
121
if (!init)
122
{
123
    var _entering = false;
124
    if (array_length(global.currentsong) <= 2 || !snd_is_playing(global.currentsong[3]))
125
    {
126
        global.currentsong[2] = snd_init("raining.ogg");
127
        global.currentsong[3] = mus_loop(global.currentsong[2]);
128
        global.currentsong[4] = snd_init("raining_in_church2.ogg");
129
        global.currentsong[5] = mus_loop(global.currentsong[4]);
130
        mus_volume(global.currentsong[5], 0, 0);
131
        _entering = true;
132
    }
133
    if (prewarm)
134
    {
135
        if (!crossfade)
136
            mus_volume(global.currentsong[3], 0.5, 14);
137
        build_timer = 120;
138
    }
139
    else
140
    {
141
        mus_volume(global.currentsong[3], 0, 0);
142
        build_timer = 0;
143
    }
144
    if (room == room_beach)
145
        instance_create(obj_wave_fx.x, obj_wave_fx.y, obj_wave_fx_raining);
146
}
147
var _gen = genspeed;
148
if (build_timer < 120 && !wrap_up)
149
{
150
    build_timer++;
151
    _gen = floor(lerp(genspeed - 20, genspeed, build_timer / 120));
152
    if (build_timer == 100)
153
        rainsplash = true;
154
    if (build_timer < 120)
155
    {
156
        drop_timer++;
157
        if (drop_timer >= drop_wait)
158
        {
159
            drop_timer = 0;
160
            drop_wait = max(drop_wait * 0.75, 2);
161
        }
162
    }
163
    if (build_timer == 10)
164
        mus_volume(global.currentsong[3], 0.5, 110);
165
}
166
if (wrap_up)
167
{
168
    if (build_timer > 0)
169
        build_timer--;
170
    if (build_timer < 100)
171
        exit;
172
    if (build_timer == 0)
173
        instance_destroy();
174
}
175
dropcount = instance_number(obj_lw_raindrop);
176
if (rain_style < 4)
177
{
178
    if (timer >= 0 && dropcount < max_particles)
179
    {
180
        if (prewarm)
181
            cam_x = camerax();
182
        var _xbuffer = xspeed * 240;
183
        var _xrange = 320 + (xspeed * 240);
184
        var _offx = 320;
185
        if (!prewarm && cam_y != cameray() && !ypan)
186
        {
187
            var _ydiff = abs(cam_y - cameray());
188
            if (dropcount < (genspeed * 25))
189
                _gen += _ydiff;
190
            else if (dropcount > (genspeed * 30))
191
                _gen -= _ydiff;
192
        }
193
        var _spawncount = max(_gen, 1);
194
        if (prewarm)
195
            _spawncount *= 25;
196
        if (xdir > 0)
197
            _offx = 0;
198
        var _speed = speed_mul;
199
        speed_sin++;
200
        repeat (_spawncount)
201
        {
202
            var _raindrop;
203
            if (prewarm)
204
            {
205
                _raindrop = instance_create(camerax() + irandom(360) + (32 * xdir), (cameray() - 38) + irandom(278), obj_lw_raindrop);
206
                if (inherit_visibility)
207
                    _raindrop.visible = visible;
208
            }
209
            else
210
            {
211
                var _side_random = irandom(360) + (32 * xdir);
212
                var _foff = irandom(speed_mul * yspeed);
213
                _raindrop = instance_create((camerax() + _side_random) - (_foff * xspeed * xdir), cameray() - (_foff * yspeed), obj_lw_raindrop);
214
                if (inherit_visibility)
215
                    _raindrop.visible = visible;
216
            }
217
            _raindrop.sprite_index = rain_sprite[rain_style];
218
            _raindrop.image_speed = 0;
219
            _raindrop.image_index = irandom(9);
220
            _raindrop.hspeed = xspeed * xdir * _speed;
221
            _raindrop.vspeed = yspeed * _speed;
222
            _raindrop.depth = depth - 10;
223
            _raindrop.image_xscale *= xdir;
224
        }
225
        dropcount += _spawncount;
226
        if (prewarm)
227
            prewarm = false;
228
        timer = _gen;
229
    }
230
    else
231
    {
232
        timer++;
233
    }
234
}
235
else
236
{
237
    timer++;
238
    if (timer >= (sprite_height * sprite_width))
239
        timer -= (sprite_height * sprite_width);
240
}
241
cam_y = cameray();
242
init = true;