Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_knight_split_growtangle_Draw_0

(view raw script w/o annotations or w/e)
1
var _splid = vertical ? round(distance) : 0;
2
var _dist = vertical ? 0 : round(distance);
3
var _angle = angle + (vertical ? 90 : 0);
4
if (diagonal)
5
{
6
    _splid = sqrt(0.5) * distance;
7
    _dist = _splid;
8
    _angle += 45;
9
}
10
var _xx = (distance > 0) ? irandom_range(-1, 1) : 0;
11
var _yy = (distance > 0) ? irandom_range(-1, 1) : 0;
12
var _xx2 = (distance > 0) ? irandom_range(-1, 1) : 0;
13
var _yy2 = (distance > 0) ? irandom_range(-1, 1) : 0;
14
if (!surface_exists(source_surf))
15
{
16
    source_surf = surface_create(170, 170);
17
    surface_set_target(source_surf);
18
    draw_clear_alpha(c_black, 0);
19
    draw_sprite_ext(sprite_index, 1, 85, 85, 2, 2, 0, c_white, 1);
20
    draw_sprite_ext(sprite_index, 0, 85, 85, 2, 2, 0, c_white, 1);
21
    surface_reset_target();
22
    half_box_a = surface_create(170, 170);
23
    half_box_b = surface_create(170, 170);
24
}
25
if (distance == 0)
26
{
27
    draw_surface_ext(source_surf, x - 85, y - 85, 1, 1, 0, image_blend, 1);
28
    update_box = true;
29
}
30
if (distance != 0 && update_box)
31
{
32
    var _xmul = lengthdir_x(1, _angle);
33
    var _ymul = lengthdir_y(1, _angle);
34
    var _xchange = _xmul * 400;
35
    var _ychange = _ymul * 400;
36
    var _xend = vertical ? 400 : 0;
37
    var _yend = vertical ? 0 : 400;
38
    draw_set_color(c_white);
39
    surface_set_target(half_box_a);
40
    draw_clear_alpha(c_black, 0);
41
    draw_surface(source_surf, 0, 0);
42
    gpu_set_blendmode(bm_subtract);
43
    var _xnudge = 0;
44
    var _ynudge = 0;
45
    if (vertical)
46
        _xnudge = 1;
47
    else
48
        _ynudge = 1;
49
    draw_triangle((85 + xoffset) - _xchange, (85 + yoffset) - _ychange, 85 + xoffset + _xchange, 85 + yoffset + _ychange, 85 + xoffset + _xend, 85 + yoffset + _yend, false);
50
    gpu_set_blendmode(bm_normal);
51
    surface_reset_target();
52
    surface_set_target(half_box_b);
53
    draw_clear_alpha(c_black, 0);
54
    draw_surface(source_surf, 0, 0);
55
    gpu_set_blendmode(bm_subtract);
56
    draw_triangle((85 + xoffset) - _xchange - _xnudge, (85 + yoffset) - _ychange - _ynudge, (85 + xoffset + _xchange) - _xnudge, (85 + yoffset + _ychange) - _ynudge, (85 + xoffset) - _xend, (85 + yoffset) - _yend, false);
57
    gpu_set_blendmode(bm_normal);
58
    surface_reset_target();
59
    var _change = choose(-2, -1, 1, 2);
60
    var _deviation;
61
    if (vertical)
62
    {
63
        _deviation = _change - v_change;
64
        v_change = _change;
65
    }
66
    else
67
    {
68
        _deviation = _change - h_change;
69
        h_change = _change;
70
    }
71
    surface_set_target(source_surf);
72
    draw_clear_alpha(c_black, 0);
73
    draw_surface(half_box_a, -_xmul * _deviation, -_ymul * _deviation);
74
    draw_surface(half_box_b, _xmul * _deviation, _ymul * _deviation);
75
    draw_set_color(merge_color(c_black, c_white, 0.25));
76
    var _abs_deviation = 85 + abs(_deviation);
77
    gpu_set_blendmode_ext(bm_dest_alpha, bm_zero);
78
    draw_line((85 + xoffset) - (_xmul * _abs_deviation), (85 + yoffset) - (_ymul * _abs_deviation), 85 + xoffset + (_xmul * _abs_deviation), 85 + yoffset + (_ymul * _abs_deviation));
79
    gpu_set_blendmode(bm_normal);
80
    surface_reset_target();
81
    update_box = false;
82
}
83
if (distance > 0)
84
{
85
    if (diagonal && vertical)
86
    {
87
        draw_surface_ext(half_box_a, (x - _splid - 85) + _xx, ((y + _dist) - 85) + _yy, 1, 1, 0, image_blend, 1);
88
        draw_surface_ext(half_box_b, ((x + _splid) - 85) + _xx2, (y - _dist - 85) + _yy2, 1, 1, 0, image_blend, 1);
89
    }
90
    else
91
    {
92
        draw_surface_ext(half_box_a, (x - _splid - 85) + _xx, (y - _dist - 85) + _yy, 1, 1, 0, image_blend, 1);
93
        draw_surface_ext(half_box_b, ((x + _splid) - 85) + _xx2, ((y + _dist) - 85) + _yy2, 1, 1, 0, image_blend, 1);
94
    }
95
}
96
draw_set_color(c_white);
97
if (con > 0)
98
{
99
    if (round(distance) == 0)
100
    {
101
        if (vertical)
102
            draw_sprite_ext(spr_whitepixel, 0, x + xoffset, y - 74, _dist * 2, _splid * 2, angle, c_white, 1);
103
        else
104
            draw_sprite_ext(spr_whitepixel, 0, x - 74, y + yoffset, _splid * 2, _dist * 2, angle, c_white, 1);
105
    }
106
    else if (vertical)
107
    {
108
        draw_sprite_ext(spr_rk_split_flame_edge, flame_index, x - _dist - 1, y + 2, 2, 2, _angle, c_gray, 1);
109
        draw_sprite_ext(spr_rk_split_flame_edge, flame_index, x + _dist + 2, y, 2, 2, _angle, c_gray, 1);
110
    }
111
    else
112
    {
113
        draw_sprite_ext(spr_rk_split_flame_edge, flame_index, x + 2, y - _dist - 1, 2, 2, _angle + 185, c_gray, 1);
114
        draw_sprite_ext(spr_rk_split_flame_edge, flame_index, x, y + _dist + 2, 2, 2, _angle, c_gray, 1);
115
    }
116
}
117
flame_index += 0.5;