Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_spearblocker_old_Draw_0

(view raw script w/o annotations or w/e)
1
if (frozentimer > 0)
2
{
3
    frozentimer--;
4
    exit;
5
}
6
image_angle_prev = image_angle;
7
if (just > 0)
8
    just--;
9
if (down_p())
10
{
11
    if (idealdir == 270 || idealdir == 215 || idealdir == 305)
12
        bumpaxecon = 1;
13
    idealdir = 270;
14
    just = justlength;
15
    if (left_p() || right_p())
16
        just = justlength + 2;
17
}
18
if (up_p())
19
{
20
    if (idealdir == 90 || idealdir == 35 || idealdir == 135)
21
        bumpaxecon = 1;
22
    idealdir = 90;
23
    just = justlength;
24
    if (left_p() || right_p())
25
        just = justlength + 2;
26
}
27
if (left_p())
28
{
29
    if (idealdir == 180 || idealdir == 135 || idealdir == 215)
30
        bumpaxecon = 1;
31
    idealdir = 180;
32
    just = justlength;
33
    if (up_p() || down_p())
34
        just = justlength + 2;
35
}
36
if (right_p())
37
{
38
    if (idealdir == 0 || idealdir == 35 || idealdir == 305)
39
        bumpaxecon = 1;
40
    idealdir = 0;
41
    just = justlength;
42
    if (up_p() || down_p())
43
        just = justlength + 2;
44
}
45
if (diagonal_transform == 1)
46
{
47
    diagonal_enabled = 1;
48
    if (image_yscale == 1 && !audio_is_playing(snd_jump))
49
        snd_play(snd_jump);
50
    image_yscale = lerp(image_yscale, 0.6, 0.2);
51
    if (image_yscale < 0.62)
52
    {
53
        image_yscale = 0.6;
54
        diagonal_transform = 0;
55
    }
56
    if (radius == 30)
57
        snd_play(snd_jump);
58
    radius = lerp(radius, 35, 0.2);
59
    origin_offset = lerp(origin_offset, 5, 0.2);
60
    sprite_set_offset(spr_spearblocker, 32 - origin_offset, 32);
61
    if (radius > 34)
62
    {
63
        radius = 35;
64
        sprite_set_offset(spr_spearblocker, 27, 32);
65
        diagonal_transform = 0;
66
    }
67
}
68
if (up_h())
69
    idealdir = 90;
70
if (right_h())
71
    idealdir = 0;
72
if (left_h())
73
    idealdir = 180;
74
if (down_h())
75
    idealdir = 270;
76
if (up_h() && right_h())
77
    idealdir = 35;
78
if (left_h() && up_h())
79
    idealdir = 135;
80
if (down_h() && left_h())
81
    idealdir = 215;
82
if (right_h() && down_h())
83
    idealdir = 305;
84
if (idealdir != idealdirprevious)
85
{
86
    just = justlength;
87
    bumpaxecon = 1;
88
}
89
idealdirprevious = idealdir;
90
if (bumpaxecon == 1)
91
{
92
    if (diagonal_enabled == 0)
93
        sprite_set_offset(spr_spearblocker, 30, 32);
94
    if (diagonal_enabled == 1)
95
        sprite_set_offset(spr_spearblocker, 25, 32);
96
    bumpaxecon = 2;
97
    var bumpsound = snd_play(snd_bump);
98
    snd_volume(bumpsound, 0.6, 0);
99
}
100
else if (bumpaxecon == 2)
101
{
102
    if (diagonal_enabled == 0)
103
        sprite_set_offset(spr_spearblocker, 31, 32);
104
    if (diagonal_enabled == 1)
105
        sprite_set_offset(spr_spearblocker, 26, 32);
106
    bumpaxecon = 3;
107
}
108
else if (bumpaxecon == 3)
109
{
110
    if (diagonal_enabled == 0)
111
        sprite_set_offset(spr_spearblocker, 32, 32);
112
    if (diagonal_enabled == 1)
113
        sprite_set_offset(spr_spearblocker, 27, 32);
114
    bumpaxecon = 0;
115
}
116
if (i_ex(obj_heart))
117
{
118
    x = obj_heart.x + 10;
119
    y = obj_heart.y + 10;
120
}
121
if (!i_ex(obj_heart) || global.turntimer < 1)
122
    instance_destroy();
123
var rep = 1;
124
rep = ceil(abs(angle_difference(idealdir, image_angle) * 0.666));
125
repeat (rep)
126
{
127
    var _dir = image_angle - idealdir;
128
    var _angledifference = _dir;
129
    if (abs(_dir) > 180)
130
    {
131
        if (image_angle > idealdir)
132
            _angledifference = -1 * ((360 - image_angle) + idealdir);
133
        else
134
            _angledifference = (360 - idealdir) + image_angle;
135
    }
136
    if (image_angle == idealdir)
137
    {
138
    }
139
    else if (_angledifference > 2)
140
    {
141
        image_angle -= 1;
142
    }
143
    else if (_angledifference < 2)
144
    {
145
        image_angle += 1;
146
    }
147
    else
148
    {
149
        image_angle = idealdir;
150
    }
151
    if (image_angle > 360)
152
        image_angle -= 360;
153
    if (image_angle < 0)
154
        image_angle += 360;
155
}
156
if (i_ex(obj_spearshot))
157
{
158
    var closest_spear_dist = 9999;
159
    var closest_spear_id = -1;
160
    for (var i = 0; i < instance_number(obj_spearshot); i++)
161
    {
162
        sper = instance_find(obj_spearshot, i);
163
        sper.sprite_index = spr_spear_arrow;
164
        if ((sper.len / sper.fakespeed) < closest_spear_dist)
165
        {
166
            closest_spear_id = sper;
167
            closest_spear_dist = sper.len / sper.fakespeed;
168
        }
169
    }
170
    if (closest_spear_id != -1 && i_ex(closest_spear_id) && closest_spear_id.fadespear != 3)
171
        closest_spear_id.sprite_index = spr_spear_arrow_highlight;
172
}
173
if (vanish == 1)
174
{
175
    image_alpha -= 0.2;
176
    if (image_alpha < 0)
177
        instance_destroy();
178
}
179
else if (image_alpha < 1)
180
{
181
    image_alpha += 0.2;
182
}
183
draw_set_alpha(image_alpha);
184
var shakex = 0;
185
var shakey = 0;
186
if (shake > 0)
187
{
188
    shake--;
189
    shakex = -10 + random(20);
190
    shakey = -10 + random(20);
191
}
192
if (flash < 2)
193
{
194
    image_index = 0;
195
}
196
else
197
{
198
    image_index = 1;
199
    flash--;
200
}
201
draw_set_color(c_green);
202
d_circle(x + shakex, y + shakey, radius, 1);
203
draw_sprite_ext(spr_spearblocker, image_index, x + shakex, y + shakey, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
204
draw_set_color(c_white);
205
if (justflash > 0)
206
{
207
    d3d_set_fog(true, c_white, 0, 1);
208
    draw_sprite_ext(spr_spearblocker, 2, x + shakex, y + shakey, image_xscale, image_yscale, image_angle, c_white, justflash);
209
    d3d_set_fog(false, c_black, 0, 0);
210
    justflash -= 0.5;
211
}
212
draw_set_alpha(1);
213
if (fadealpha > 0)
214
{
215
    d3d_set_fog(true, c_white, 0, 1);
216
    d_circle(x + shakex, y + shakey, radius, 1);
217
    draw_sprite_ext(spr_spearblocker, 2, x + shakex, y + shakey, image_xscale, image_yscale, image_angle, c_white, fadealpha);
218
    d3d_set_fog(false, c_black, 0, 0);
219
    fadealpha -= 0.05;
220
}