Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_ghosthouse_jackolantern_merciful_Draw_0

(view raw script w/o annotations or w/e)
1
var _size = size;
2
var _sizex = 0;
3
var _sizey = 0;
4
if (size_offset < 1)
5
{
6
    var _sizeoff = lerp(size / 2, 0, 
scr_ease_out
scr_ease_out

function
scr_ease_out(arg0, arg1)
{ if (arg1 < -3 || arg1 > 7) return arg0; switch (arg1) { case -3: return ease_out_bounce(arg0, 0, 1, 1); case -2: return ease_out_elastic(arg0, 0, 1, 1); case -1: return ease_out_back(arg0, 0, 1, 1); case 0: return arg0; case 1: return sin(arg0 * 1.5707963267948966); case 2: return -arg0 * (arg0 - 2); case 6: return -power(2, -10 * arg0) + 1; case 7: arg0--; return sqrt(1 - (arg0 * arg0)); default: arg0--; if (arg1 == 4) { return -1 * (power(arg0, arg1) - 1); break; } return power(arg0, arg1) + 1; } }
(size_offset, -1));
7
    _size += _sizeoff;
8
    _sizex = sin(size_siner / 10) * 0.1;
9
    _sizey = cos(size_siner / 10) * 0.1;
10
    size_offset += 0.2;
11
    size_siner++;
12
}
13
if (end_con == 3)
14
{
15
    image_xscale = 1;
16
    image_yscale = 1;
17
}
18
else if (end_con >= 4)
19
{
20
    image_xscale = (timer / 20) + 1;
21
    image_yscale = (timer / 20) + 1;
22
}
23
else
24
{
25
    image_xscale = lerp(1, 0.5, _size) + _sizex;
26
    image_yscale = lerp(1, 0.5, _size) + _sizey;
27
}
28
funny = false;
29
shakex = 0;
30
shakey = 0;
31
var _flicker = ticks < 0 && (abs(ticks) % 4) < 2;
32
if (_flicker)
33
    image_blend = c_gray;
34
else
35
    image_blend = c_white;
36
if (scare_con >= 1)
37
{
38
    draw_sprite_ext(head_sprite, 0, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
39
    if (scare_con >= 2 && face_timer < 40)
40
        face_timer++;
41
    var _spimmer = 
scr_ease_out
scr_ease_out

function
scr_ease_out(arg0, arg1)
{ if (arg1 < -3 || arg1 > 7) return arg0; switch (arg1) { case -3: return ease_out_bounce(arg0, 0, 1, 1); case -2: return ease_out_elastic(arg0, 0, 1, 1); case -1: return ease_out_back(arg0, 0, 1, 1); case 0: return arg0; case 1: return sin(arg0 * 1.5707963267948966); case 2: return -arg0 * (arg0 - 2); case 6: return -power(2, -10 * arg0) + 1; case 7: arg0--; return sqrt(1 - (arg0 * arg0)); default: arg0--; if (arg1 == 4) { return -1 * (power(arg0, arg1) - 1); break; } return power(arg0, arg1) + 1; } }
(face_timer / 40, -2) * 180;
42
    draw_sprite_ext(mouth_sprite, 0, x, y + 20, image_xscale, image_yscale, image_angle + _spimmer, image_blend, image_alpha);
43
}
44
else if (ticks > 0 || scare_con == -2)
45
{
46
    var _sp = shake_power;
47
    if (end_con == 3)
48
        _sp = lerp(4, 0, clamp01(timer / 20));
49
    shakex = irandom_range(-_sp, _sp);
50
    shakey = irandom_range(-_sp, _sp);
51
    if (mercy > 70 && sprite_index == spr_jackolantern_cry)
52
    {
53
        funny = true;
54
        var _power = remap_clamped(70, 100, 0.1, 1, mercy);
55
        if (end_con == 1 || end_con == 2)
56
            _power = 0.5;
57
        var _wobble = random_range(-10, 10);
58
        var _skew = random_range(-20, 20);
59
        var _ap = audio_sound_get_track_position(screamsound);
60
        if ((_ap > 0.8 && _ap < 1.3) || (_ap > 9.6 && _ap < 10))
61
        {
62
            _wobble = random_range(-12, -18) * _power;
63
            _skew = (clamp(x - (obj_heart.x + 10), -10, 10) + random_range(-5, 5)) * _power;
64
        }
65
        else if (_ap < 0.1 || (_ap > 0.4 && _ap < 0.6) || (_ap > 0.75 && _ap < 0.8) || (_ap > 7.8 && _ap < 7.95) || (_ap > 8.55 && _ap < 8.75) || (_ap > 9 && _ap < 9.15))
66
        {
67
            _wobble = random_range(-10, -14) * _power;
68
            _skew = (clamp(x - (obj_heart.x + 10), -10, 10) + random_range(-5, 5)) * _power;
69
        }
70
        else if (_ap < 1.67 || _ap > 6)
71
        {
72
            _wobble = random_range(12, 18) * _power;
73
            _skew = (clamp(x - (obj_heart.x + 10), -10, 10) + random_range(-5, 5)) * _power;
74
        }
75
        var _sw = (sprite_width / 2) - _wobble;
76
        var _sh = (sprite_height / 2) + _wobble;
77
        var _sx = x + shakex;
78
        var _sy = y + shakey;
79
        sx[0] = (_sx - _sw) + _skew;
80
        sx[1] = _sx + _sw + _skew;
81
        sx[2] = (_sx + _sw) - _skew;
82
        sx[3] = _sx - _sw - _skew;
83
        sy[0] = _sy - _sh;
84
        sy[1] = _sy - _sh;
85
        sy[2] = _sy + _sh;
86
        sy[3] = _sy + _sh;
87
        draw_sprite_pos(sprite_index, image_index, sx[0], sy[0], sx[1], sy[1], sx[2], sy[2], sx[3], sy[3], 1);
88
    }
89
    else
90
    {
91
        draw_self_offset(shakex, shakey);
92
    }
93
}
94
else
95
{
96
    draw_self_offset(shakex, shakey);
97
}
98
if (total_ticks > 0 || screamcon == 2)
99
{
100
    brightness = total_ticks / 70;
101
    if (screamcon == 2)
102
        brightness += (0.35 + (sin(siner / 12) * 0.15));
103
    brightness *= 0.2;
104
    gpu_set_fog(true, c_white, 0, 1000);
105
    if (funny)
106
        draw_sprite_pos(sprite_index, image_index, sx[0], sy[0], sx[1], sy[1], sx[2], sy[2], sx[3], sy[3], brightness);
107
}
108
gpu_set_fog(false, c_white, 0, 1000);
109
if (fleetype == 2)
110
{
111
    draw_sprite_ext(spr_pxwhite, 0, obj_growtangle.x - 400, obj_growtangle.y - 400, 260, 800, 0, c_black, 1);
112
    draw_sprite_ext(spr_pxwhite, 0, obj_growtangle.x + 160, obj_growtangle.y - 400, 320, 800, 0, c_black, 1);
113
    draw_sprite_ext(spr_pxwhite, 0, obj_growtangle.x - 400, obj_growtangle.y - 400, 800, 280, 0, c_black, 1);
114
    draw_sprite_ext(spr_pxwhite, 0, obj_growtangle.x + 400, obj_growtangle.y + 120, 800, 280, 0, c_black, 1);
115
}