Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_dw_church_arena_bg_Draw_0

(view raw script w/o annotations or w/e)
1
var cx = camerax();
2
var cy = cameray();
3
if (delay > 0)
4
{
5
    delay--;
6
    introflashalpha = 0;
7
    exit;
8
}
9
if (!surface_exists(bgsurface))
10
    bgsurface = surface_create(640, 480);
11
if (!surface_exists(windowsurface))
12
    windowsurface = surface_create(302, 122);
13
colors_lerp = min(colors_lerp + 0.01, 1);
14
gradient_lerp = min(gradient_lerp + 0.01, 1);
15
var current_red = merge_color(colors_last.r, colors_current.r, colors_lerp);
16
var current_green = merge_color(colors_last.g, colors_current.g, colors_lerp);
17
var current_blue = merge_color(colors_last.b, colors_current.b, colors_lerp);
18
var current_light = merge_color(colors_last.l, colors_current.l, colors_lerp);
19
var gradient_top = merge_color(gradient_last.t, gradient_current.t, gradient_lerp);
20
var gradient_bottom = merge_color(gradient_last.b, gradient_current.b, gradient_lerp);
21
var t = 0.002 * current_time;
22
current_green = merge_color(current_green, current_light, 0.5 + (0.5 * sin(t * 0.4)));
23
var rain_speed = 0.012 * current_time;
24
surface_set_target(windowsurface);
25
draw_clear_alpha(c_black, 0);
26
if (con == 3 || con == 5)
27
    window_opacity = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(window_opacity, 0, 0.01);
28
else
29
    window_opacity = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(window_opacity, 1, 0.01);
30
draw_sprite_ext(spr_dw_church_bell_Large_topcenter, 0, 151, 10, 1.5, 1.5, sin(t * 0.5) * 24, c_green, bellalpha * 0.75);
31
hammerobj.image_alpha = hammeralpha;
32
cityobj.image_alpha = cityalpha * 0.5;
33
var i = ds_list_size(to_draw) - 1;
34
while (i >= 0)
35
{
36
    var obj = ds_list_find_value(to_draw, i);
37
    if (instance_exists(obj))
38
    {
39
        if (obj.image_alpha > 0)
40
        {
41
            if (obj == hammerobj)
42
            {
43
                shader_set(shd_prophecy);
44
                var _tex1 = sprite_get_texture(IMAGE_DEPTH_EXTEND_MONO_SEAMLESS_POW2, 0);
45
                var _tex2 = sprite_get_texture(textureSprite2, 0);
46
                shader_set(myShader);
47
                shader_set_uniform_f(uniformTime, (get_timer() / 1000000) * 10);
48
                shader_set_uniform_f(uniformOpacity, (obj.image_alpha * 0.6) + (0.1 * sin(current_time * 0.001)));
49
                shader_set_uniform_f(uniformCol, colour[0], colour[1], colour[2]);
50
                texture_set_stage(sampler1, _tex1);
51
                texture_set_stage(sampler2, _tex2);
52
                draw_to_window(obj);
53
                shader_reset();
54
            }
55
            else
56
            {
57
                draw_to_window(obj);
58
            }
59
        }
60
    }
61
    else
62
    {
63
        ds_list_delete(to_draw, i);
64
    }
65
    i--;
66
}
67
draw_sprite_ext(spr_gersonwindow_water, rain_speed, 232, 0, 2, 2, 0, c_white, 0.4 * window_opacity);
68
draw_sprite_ext(spr_gersonwindow_water, rain_speed, -38, 0, 2, 2, 0, c_white, 0.4 * window_opacity);
69
draw_sprite_ext(spr_gersonwindow_water, rain_speed, 92, 0, 2, 2, 0, c_white, 0.4 * window_opacity);
70
draw_sprite_ext(bg_dw_gerson_arena_stained_glass, 0, 44, 0, 2, 2, 0, c_white, 0.5 * window_opacity);
71
surface_reset_target();
72
surface_set_target(bgsurface);
73
draw_clear_alpha(c_black, 0);
74
draw_sprite_ext(spr_pxwhite, 0, 0, 0, 640, 480, 0, gradient_bottom, 1);
75
draw_sprite_ext(spr_20px_white_gradient, 0, 640, 160, 640, 8, 180, gradient_top, 1);
76
draw_set_blend_mode(bm_add);
77
draw_surface(windowsurface, 168, 0);
78
draw_set_blend_mode(bm_normal);
79
surface_reset_target();
80
draw_surface_ext(windowsurface, 168, 416, 1, -2, 0, c_white, 0.5);
81
draw_surface_part(bgsurface, 320 - (320 * image_alpha), 0, 640 * image_alpha, 480, (x + 320) - (320 * image_alpha), y);
82
draw_set_color(c_black);
83
ossafe_fill_rectangle(cx + 257, cy, cx + 266, cy + 200, false);
84
ossafe_fill_rectangle(cx + 372, cy, cx + 381, cy + 200, false);
85
draw_set_color(c_white);
86
var adv = 0.01;
87
if (colcon < 1)
88
    adv = 0.1;
89
colcon = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(colcon, con + 1, adv);
90
pal_swap_set(spr_dw_gerson_arena_palette, colcon, false);
91
draw_sprite_ext(bg_dw_gerson_arena_battle, 0, cx, cy, 2, 2, 0, c_white, 1);
92
pal_swap_reset();
93
draw_sprite_ext(spr_dw_gerson_arena_shadow, 0, (cx + (0.5 * camerawidth())) - 2, cy + 200, 2, 2, 0, gradient_bottom, 0.4);
94
if (introflashalpha > 0)
95
{
96
    introflashalpha -= 0.3;
97
    draw_sprite_ext(spr_dw_gerson_arena_shadow, 0, cx + (0.5 * camerawidth()), cy + 200, 2.1, 2.1, 0, c_white, 0.5 * sin(degtorad(introflashalpha * 90)));
98
}