Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_dw_castle_church_climb_Other_12

related scripts: Create_0Draw_0Other_11Other_12 Other_15Other_19Step_0Step_1Step_2

(view raw script w/o annotations or w/e)
1
formatnum = function(arg0)
2
{
3
    var num = [];
4
    num[0] = clamp(floor(arg0 / 100), 0, 9);
5
    if (arg0 > 998)
6
        num[1] = 9;
7
    else
8
        num[1] = floor((arg0 / 10) % 10);
9
    if (arg0 > 999)
10
        num[2] = 9;
11
    else
12
        num[2] = arg0 % 10;
13
    return num;
14
};
15
16
confetti = function()
17
{
18
    var count = 16;
19
    for (var i = 0; i < count; i++)
20
    {
21
        for (var j = 0; j < 2; j++)
22
        {
23
            var wid = 60;
24
            with (instance_create(((scoreboard.x + 42) - (wid / 2)) + (j * wid), scoreboard.y + 16, obj_marker_fancy))
25
            {
26
                depth = other.depth + 1;
27
                sprite_index = spr_pxwhite;
28
                direction = ((i * 360) / count) + (i * 4) + random_range(-4, 4);
29
                hspeed *= random_range(4, 6);
30
                speed = random_range(4, 5);
31
                image_blend = make_color_hsv(((i + (j * 4)) / count) * 255, 255, 255);
32
                image_xscale = choose(4, 4, 6);
33
                image_yscale = choose(4, 4);
34
                vspeed -= random_range(8, 10);
35
                gravity = 1;
36
                friction = random_range(0.01, 0.02);
37
                daddy = other.id;
38
                timer = 0;
39
                lifetime = 40;
40
                
41
                step_func = function()
42
                {
43
                    if (y < (daddy.scoreboard.y - 2))
44
                        depth = daddy.depth - 1;
45
                    image_angle += (12 * sign(hspeed));
46
                    timer++;
47
                    image_alpha = lerp(2, 0, timer / lifetime);
48
                    if (timer > lifetime)
49
                        instance_destroy();
50
                };
51
                
52
                draw_func = function()
53
                {
54
                    draw_sprite_ext(sprite_index, image_index, (round(x / 2) * 2) + 2, (round(y / 2) * 2) + 2, image_xscale, image_yscale, image_angle, merge_color(image_blend, c_black, 0.75), image_alpha * 0.2);
55
                    draw_sprite_ext(sprite_index, image_index, round(x / 2) * 2, round(y / 2) * 2, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
56
                };
57
            }
58
        }
59
    }
60
};
61
62
if (effectinit == 0)
63
{
64
    with (obj_climb_climbable)
65
    {
66
        if (!dontmove)
67
        {
68
            var effect = instance_create(xstart, ystart, obj_dw_church_sideclimb_glowclimb);
69
            
scr_sizeexact
scr_sizeexact

function
scr_sizeexact(arg0, arg1, arg2 = id)
{ with (arg2) { if (!sprite_exists(sprite_index)) { debug_message("Can't size, no sprite"); exit; } var _w = sprite_get_width(sprite_index); var _h = sprite_get_width(sprite_index); image_xscale = arg0 / _w; image_yscale = arg1 / _h; } }
(sprite_width, sprite_height, effect);
70
        }
71
    }
72
    effectinit = 1;
73
}
74
if (climbinit == 0)
75
{
76
    for (var i = 0; i < array_length(stufftomove); i++)
77
    {
78
        with (all)
79
        {
80
            if (object_index == other.stufftomove[i])
81
            {
82
                var domove = true;
83
                if (variable_instance_exists(id, "dontmove"))
84
                {
85
                    if (dontmove)
86
                        domove = false;
87
                }
88
                if (domove)
89
                {
90
                    if (object_index == obj_climb_watergenerator)
91
                    {
92
                        with (
scr_marker_blend
scr_marker_blend

function
scr_marker_blend(arg0, arg1, arg2, arg3 = 1, arg4 = 1, arg5 = 1, arg6 = 0, arg7 = 0, arg8 = 16777215, arg9 = depth, arg10 = false, arg11 = -1, arg12 = 1)
{ var thismarker = instance_create(arg0, arg1, obj_marker_blend); with (thismarker) { depth = arg9; sprite_index = arg2; image_speed = arg6; image_xscale = arg4; image_yscale = arg5; image_index = arg7; image_blend = arg8; image_alpha = arg12; if (arg10)
scr_depth_alt();
blendmode = arg3; } if (arg11 > 0)
scr_doom(thismarker, arg11);
return thismarker; } function scr_afterimage_blend(arg0 = id, arg1 = 1, arg2 = 30) { var _blendmarker = instance_create(arg0.x, arg0.y, obj_marker_blend); _blendmarker.sprite_index = arg0.sprite_index; _blendmarker.image_alpha = arg0.image_alpha; _blendmarker.image_angle = arg0.image_angle; _blendmarker.image_blend = arg0.image_blend; _blendmarker.image_index = arg0.image_index; _blendmarker.image_speed = arg0.image_speed; _blendmarker.image_xscale = arg0.image_xscale; _blendmarker.image_yscale = arg0.image_yscale; _blendmarker.mask_index = arg0.mask_index; _blendmarker.blendmode = arg1; with (_blendmarker)
scr_lerpvar("image_alpha", image_alpha, 0, arg2);
scr_doom(_blendmarker, arg2 + 1);
return _blendmarker; }
(x, y, sprite_index, 1, 2, 2, undefined, undefined, undefined, depth - #010000))
93
                        {
94
                            var time = irandom_range(12, 17);
95
                            
scr_lerp_imageblend
scr_lerp_imageblend

function
scr_lerp_imageblend()
{ var lerpblend = instance_create(x, y, obj_lerpimageblend); lerpblend.target = argument0; lerpblend.color1 = argument1; lerpblend.color2 = argument2; var ___time = argument3; if (argument_count > 4) { var _style = argument4; var _ease = argument5; lerpblend.mylerp = scr_lerp_var_instance(lerpblend, "blendindex", 0, 1, ___time, _style, _ease); } else { lerpblend.mylerp = scr_lerp_var_instance(lerpblend, "blendindex", 0, 1, ___time); } with (lerpblend) alarm_set(0, ___time); return lerpblend; }
(id, c_white, c_red, time);
96
                            
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("image_alpha", 1, 0, time);
97
                            
scr_doom
scr_doom

function
scr_doom(arg0, arg1)
{ var _doom = instance_create_depth(0, 0, 0, obj_doom); with (_doom) { alarm[0] = arg1; target = arg0; } return _doom; }
(id, time);
98
                        }
99
                    }
100
                    x += (room_width * 4);
101
                }
102
            }
103
        }
104
    }
105
    climbinit = 1;
106
}
107
var playswitchsnd = false;
108
if (climbingcon == 0)
109
{
110
    var trig = 0;
111
    if (i_ex(obj_climb_kris) && obj_climb_kris.fallingcon == 0)
112
    {
113
        with (obj_trigger)
114
        {
115
            if (place_meeting(x, y, obj_climb_kris))
116
            {
117
                if (extflag == "starttrig")
118
                    trig = 1;
119
            }
120
        }
121
    }
122
    if (trig)
123
    {
124
        for (var i = 0; i < array_length(stufftomove); i++)
125
        {
126
            with (all)
127
            {
128
                if (object_index == other.stufftomove[i])
129
                    x = xstart;
130
            }
131
        }
132
        if (trig == 1)
133
        {
134
            playswitchsnd = true;
135
            timber = fulltime;
136
            canceltimer = 0;
137
        }
138
        with (obj_lerpvar)
139
        {
140
            if (variable_instance_exists(id, "fadeout"))
141
                instance_destroy();
142
        }
143
        with (obj_dw_church_sideclimb_glowclimb)
144
            
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("image_alpha", 0, 1, 5 + irandom(5), 2, "out");
145
        snd_play(snd_ghostappear, 0.7, 1.4);
146
        snd_play(snd_ghostappear, 0.7, 1.6);
147
        canceltimer = 0;
148
        climbingcon = 1;
149
    }
150
}
151
wallswitch.image_index = 0;
152
if (climbingcon == 1)
153
{
154
    wallswitch.image_index = 1;
155
    timber--;
156
    var krisMoving = false;
157
    with (obj_climb_kris)
158
    {
159
        if (fallingcon != 0 || jumping || climbcon != 0)
160
            krisMoving = true;
161
    }
162
    if (button2_h() && !krisMoving)
163
        canceltimer++;
164
    else
165
        canceltimer = 0;
166
    if (scr_trigcheck_ext("nohud", 1164))
167
        canceltimer = 0;
168
    if ((canceltimer >= 30 || !instance_exists(obj_climb_kris)) && !krisMoving)
169
        timber = 0;
170
    var trig = 0;
171
    with (obj_trigger)
172
    {
173
        if (extflag == "starttrig")
174
        {
175
            if (place_meeting(x, y, obj_climb_kris))
176
            {
177
                if (extflag == "starttrig")
178
                    trig = 1;
179
            }
180
        }
181
    }
182
    if (trig)
183
    {
184
        if (timber < (fulltime - 1))
185
            playswitchsnd = true;
186
        timber = fulltime;
187
    }
188
    if (scr_trigcheck_ext("r1end", 1164))
189
    {
190
        catchinteract = true;
191
        ccon = 1;
192
        var newtime = fulltime - timber;
193
        thisclimbtime = newtime;
194
        
scr_debug_print
scr_debug_print

function
scr_debug_print()
{ if (!
scr_debug())
exit; } function scr_debug_clear_all() { }
("climb 1 Time Taken = " + string(newtime) + " | " +
scr_timedisp
scr_timedisp

function
scr_timedisp(arg0)
{ var minutes = floor(arg0 / 1800); var remmins = minutes % 60; var hours = (minutes - remmins) / 60; var seconds = floor((arg0 / 30) - (minutes * 60)); var hourstring = string(hours) + ":"; var minstring = string(remmins) + ":"; if (remmins < 10) minstring = "0" + minstring; var secstring = string(floor(seconds)); if (seconds < 10) secstring = "0" + secstring; var timedisp = hourstring + minstring + secstring; return timedisp; }
(newtime));
195
        var writetime = false;
196
        if (global.flag[climbflag] == 0)
197
            writetime = true;
198
        with (obj_climb_kris)
199
        {
200
            forceclimb = 1;
201
            dontfree = true;
202
        }
203
        forceclimb = 1;
204
        global.interact = 1;
205
        if (!writetime)
206
        {
207
            if (global.flag[climbflag] > newtime)
208
                writetime = true;
209
        }
210
        if (writetime == true)
211
        {
212
            
scr_debug_print
scr_debug_print

function
scr_debug_print()
{ if (!
scr_debug())
exit; } function scr_debug_clear_all() { }
("climb new highscore: " + string(newtime));
213
            snd_play(snd_won);
214
            global.flag[climbflag] = newtime;
215
            confetti();
216
        }
217
        timber = 0;
218
        global.facing = 2;
219
    }
220
    if (scr_trigcheck_ext("fail", 1164))
221
    {
222
        timber = 0;
223
        show_debug_message_concat("yes");
224
    }
225
    if (timber <= 0 || !instance_exists(obj_climb_kris))
226
    {
227
        timber = 0;
228
        climbingcon = 2;
229
        snd_play(snd_ghostappear, 0.7, 0.9);
230
        snd_play(snd_ghostappear, 0.7, 1.3);
231
        var dofall = false;
232
        with (obj_climb_kris)
233
        {
234
            var climber = instance_place(x, y, obj_climb_climbable);
235
            if (!i_ex(climber))
236
                dofall = true;
237
            else if (climber.dontmove == false)
238
                dofall = true;
239
        }
240
        with (obj_dw_church_sideclimb_glowclimb)
241
        {
242
            with (
scr_lerpvar
scr_lerpvar

function
scr_lerpvar()
{ var _id = self; if (!is_struct(self)) _id = id; if (argument_count < 6) ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3]);
else ___lerpvar =
scr_lerpvar_instance(_id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]);
return ___lerpvar; } function scr_lerpcol() { if (argument_count < 6) ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3]); else ___lerpvar = scr_lerpcol_instance(id, argument[0], argument[1], argument[2], argument[3], argument[4], argument[5]); return ___lerpvar; }
("image_alpha", 1, 0, 30 + irandom(30), -1, "out"))
243
                fadeout = true;
244
        }
245
        if (dofall)
246
            forcefall = 1;
247
    }
248
}
249
if (playswitchsnd == true)
250
{
251
    snd_play(snd_metalhit, 1, 0.85);
252
    snd_play(snd_swallow, 1, 1.3);
253
}
254
if (climbingcon == 2)
255
{
256
    var trig = 0;
257
    with (obj_climb_kris)
258
    {
259
        if (climbcon == 0)
260
            trig = 1;
261
    }
262
    if (!i_ex(obj_climb_kris))
263
        trig = 1;
264
    if (trig)
265
    {
266
        climbinit = 0;
267
        with (obj_climb_kris)
268
        {
269
            if (fallingcon == 0)
270
            {
271
                if (other.forcefall == 1)
272
                {
273
                    other.forcefall = 0;
274
                    neutralcon = 999;
275
                    fallingcon = 1;
276
                    fallingtimer = 99999;
277
                    jumpchargecon = 0;
278
                    jumpchargeamount = 0;
279
                    jumpchargetimer = 0;
280
                    snd_stop(snd_chargeshot_charge);
281
                    jumping = 0;
282
                    climbcon = 0;
283
                    neutralcon = 0;
284
                    slipcon = 0;
285
                    image_blend = c_white;
286
                }
287
            }
288
        }
289
        climbingcon = 0;
290
    }
291
    if (ccon != 0)
292
    {
293
        climbingcon = 0;
294
        climbinit = 0;
295
    }
296
}