Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_spearblocker_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 (shadowpowercon == 1)
10
{
11
    shadowpowertimer++;
12
    shadowpower = lerp(shadowpowerstart, shadowpowertarget, shadowpowertimer / shadowpowertimermax);
13
    if (shadowpowertimer >= shadowpowertimermax)
14
    {
15
        if (shadowpower == 0.85)
16
            shadowpower = 1;
17
        shadowpowerstart = shadowpowertarget;
18
        shadowpowertimer = 0;
19
        shadowpowercon = 0;
20
    }
21
}
22
if (down_p())
23
{
24
    if (idealdir == 270 || idealdir == 225 || idealdir == 315)
25
        bumpaxecon = 1;
26
    idealdir = 270;
27
    just = justlength;
28
    if (left_p() || right_p())
29
        just = justlength + 2;
30
}
31
if (up_p())
32
{
33
    if (idealdir == 90 || idealdir == 45 || idealdir == 135)
34
        bumpaxecon = 1;
35
    idealdir = 90;
36
    just = justlength;
37
    if (left_p() || right_p())
38
        just = justlength + 2;
39
}
40
if (left_p())
41
{
42
    if (idealdir == 180 || idealdir == 135 || idealdir == 225)
43
        bumpaxecon = 1;
44
    idealdir = 180;
45
    just = justlength;
46
    if (up_p() || down_p())
47
        just = justlength + 2;
48
}
49
if (right_p())
50
{
51
    if (idealdir == 0 || idealdir == 45 || idealdir == 315)
52
        bumpaxecon = 1;
53
    idealdir = 0;
54
    just = justlength;
55
    if (up_p() || down_p())
56
        just = justlength + 2;
57
}
58
if (diagonal_transform == 1 && !i_ex(obj_sound_of_justice_enemy))
59
{
60
    diagonal_enabled = 1;
61
    if (image_yscale == 1 && !audio_is_playing(snd_jump) && obj_hammer_of_justice_enemy.transformsfx == 0)
62
        snd_play(snd_jump);
63
    image_yscale = lerp(image_yscale, 0.6, 0.2);
64
    if (image_yscale < 0.62)
65
    {
66
        image_yscale = 0.6;
67
        diagonal_transform = 0;
68
    }
69
    if (radius == 30 && obj_hammer_of_justice_enemy.transformsfx == 0)
70
    {
71
        obj_hammer_of_justice_enemy.transformsfx = 1;
72
        snd_play(snd_jump);
73
        transformflashtimer = 70;
74
    }
75
    radius = lerp(radius, 35, 0.2);
76
    origin_offset = lerp(origin_offset, 5, 0.2);
77
    sprite_set_offset(spr_spearblocker, 32 - origin_offset, 32);
78
    if (radius > 34)
79
    {
80
        radius = 35;
81
        sprite_set_offset(spr_spearblocker, 27, 32);
82
        diagonal_transform = 0;
83
    }
84
}
85
if (up_h())
86
    idealdir = 90;
87
if (right_h())
88
    idealdir = 0;
89
if (left_h())
90
    idealdir = 180;
91
if (down_h())
92
    idealdir = 270;
93
if (!i_ex(obj_sound_of_justice_enemy) && diagonal_enabled == 1)
94
{
95
    if (up_h() && right_h())
96
        idealdir = 45;
97
    if (left_h() && up_h())
98
        idealdir = 135;
99
    if (down_h() && left_h())
100
        idealdir = 225;
101
    if (right_h() && down_h())
102
        idealdir = 315;
103
}
104
if (idealdir != idealdirprevious)
105
{
106
    just = justlength;
107
    bumpaxecon = 1;
108
}
109
idealdirprevious = idealdir;
110
if (bumpaxecon == 1)
111
{
112
    if (diagonal_enabled == 0)
113
        sprite_set_offset(spr_spearblocker, 30, 32);
114
    if (diagonal_enabled == 1)
115
        sprite_set_offset(spr_spearblocker, 25, 32);
116
    bumpaxecon = 2;
117
    var wingsound = snd_play(snd_wing);
118
    snd_volume(wingsound, 0.8, 0);
119
}
120
else if (bumpaxecon == 2)
121
{
122
    if (diagonal_enabled == 0)
123
        sprite_set_offset(spr_spearblocker, 31, 32);
124
    if (diagonal_enabled == 1)
125
        sprite_set_offset(spr_spearblocker, 26, 32);
126
    bumpaxecon = 3;
127
}
128
else if (bumpaxecon == 3)
129
{
130
    if (diagonal_enabled == 0)
131
        sprite_set_offset(spr_spearblocker, 32, 32);
132
    if (diagonal_enabled == 1)
133
        sprite_set_offset(spr_spearblocker, 27, 32);
134
    bumpaxecon = 0;
135
}
136
if (i_ex(obj_heart))
137
{
138
    x = obj_heart.x + 10;
139
    y = obj_heart.y + 10;
140
}
141
if (!i_ex(obj_heart) || global.turntimer < 1)
142
    instance_destroy();
143
var rep = 1;
144
rep = ceil(abs(angle_difference(idealdir, image_angle) * 0.666));
145
var _dontmove = false;
146
for (var i = 0; i < instance_number(obj_spearshot); i += 1)
147
{
148
    spear[i] = instance_find(obj_spearshot, i);
149
    if (spear[i].bouncespearcon == 1 && spear[i].bouncespeartimer < 3)
150
        _dontmove = true;
151
}
152
if (!_dontmove)
153
{
154
    repeat (rep)
155
    {
156
        var _dir = image_angle - idealdir;
157
        var _angledifference = _dir;
158
        if (abs(_dir) > 180)
159
        {
160
            if (image_angle > idealdir)
161
                _angledifference = -1 * ((360 - image_angle) + idealdir);
162
            else
163
                _angledifference = (360 - idealdir) + image_angle;
164
        }
165
        if (image_angle == idealdir)
166
        {
167
        }
168
        else if (_angledifference > 2)
169
        {
170
            image_angle -= 1;
171
        }
172
        else if (_angledifference < 2)
173
        {
174
            image_angle += 1;
175
        }
176
        else
177
        {
178
            image_angle = idealdir;
179
        }
180
        if (image_angle > 360)
181
            image_angle -= 360;
182
        if (image_angle < 0)
183
            image_angle += 360;
184
    }
185
}
186
if (i_ex(obj_spearshot))
187
{
188
    var closest_spear_dist = 9999;
189
    var closest_spear_id = -1;
190
    for (var i = 0; i < instance_number(obj_spearshot); i++)
191
    {
192
        sper = instance_find(obj_spearshot, i);
193
        if (sper.bouncespear == 0)
194
            sper.sprite_index = spr_spear_arrow;
195
        if (sper.longspear == 1)
196
            sper.sprite_index = spr_spear_arrow_long;
197
        if ((sper.len / sper.fakespeed) < closest_spear_dist)
198
        {
199
            closest_spear_id = sper;
200
            closest_spear_dist = sper.len / sper.fakespeed;
201
        }
202
    }
203
    if (closest_spear_id != -1 && i_ex(closest_spear_id) && closest_spear_id.fadespear != 3 && closest_spear_id.bouncespear == 0 && closest_spear_id.longspear == 0)
204
        closest_spear_id.sprite_index = spr_spear_arrow_highlight;
205
}
206
if (vanish == 1)
207
{
208
    image_alpha -= 0.1;
209
    if (image_alpha < 0)
210
        instance_destroy();
211
}
212
else if (image_alpha < 1)
213
{
214
    image_alpha += 0.2;
215
}
216
draw_set_alpha(image_alpha);
217
var shakex = 0;
218
var shakey = 0;
219
if (shake > 0)
220
{
221
    shake--;
222
    shakex = -10 + random(20);
223
    shakey = -10 + random(20);
224
}
225
shakex += 1;
226
shakey += 1;
227
if (flash < 2)
228
{
229
    image_index = 0;
230
}
231
else
232
{
233
    image_index = 1;
234
    flash--;
235
}
236
draw_set_color(c_green);
237
event_user(2);
238
draw_sprite_ext(spr_spearblocker, image_index, x + shakex, y + shakey, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
239
draw_set_color(c_white);
240
if (i_ex(obj_sound_of_justice_enemy))
241
{
242
    var shadowalpha = lerp(1, 0, shadowpower / 1);
243
    if (vanish == 1)
244
        shadowalpha = image_alpha;
245
    d3d_set_fog(true, dark_brown, 0, 1);
246
    draw_sprite_ext(spr_spearblocker, image_index, x + shakex, y + shakey, image_xscale, image_yscale, image_angle, image_blend, shadowalpha);
247
    d3d_set_fog(false, c_black, 0, 0);
248
    draw_set_alpha(0);
249
}
250
if (parryflashtimer > 0)
251
{
252
    parryflashtimer--;
253
    var parryalpha = 
scr_wrap
scr_wrap

function
scr_wrap()
{ var _val = argument[0]; var _max = argument[2]; var _min = argument[1]; if ((_val % 1) == 0) { while (_val > _max || _val < _min) { if (_val > _max) { _val = (_min + _val) - _max - 1; } else if (_val < _min) { _val = ((_max + _val) - _min) + 1; } else { } } return _val; } else { var _old = argument[0] + 1; while (_val != _old) { _old = _val; if (_val < _min) { _val = _max - (_min - _val); } else if (_val > _max) { _val = _min + (_val - _max); } else { } } return _val; } }
(parryflashtimer / 2, 0, 1);
254
    draw_set_alpha(parryalpha);
255
    d3d_set_fog(true, c_white, 0, 1);
256
    event_user(2);
257
    d3d_set_fog(false, c_black, 0, 0);
258
    draw_set_alpha(0);
259
}
260
if (justflash > 0)
261
{
262
    d3d_set_fog(true, c_white, 0, 1);
263
    draw_sprite_ext(spr_spearblocker, 2, x + shakex, y + shakey, image_xscale, image_yscale, image_angle, c_white, justflash);
264
    d3d_set_fog(false, c_black, 0, 0);
265
    justflash -= 0.5;
266
}
267
draw_set_alpha(1);
268
if (fadealpha > 0)
269
{
270
    d3d_set_fog(true, c_white, 0, 1);
271
    d_circle(x + shakex, y + shakey, radius, 1);
272
    draw_sprite_ext(spr_spearblocker, 2, x + shakex, y + shakey, image_xscale, image_yscale, image_angle, c_white, fadealpha);
273
    d3d_set_fog(false, c_black, 0, 0);
274
    fadealpha -= 0.05;
275
}