Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_climb_boulder_Step_0

(view raw script w/o annotations or w/e)
1
var cx = camerax();
2
var cy = cameray();
3
image_alpha = active;
4
if (!activetoggle)
5
{
6
    if (instance_exists(obj_climb_kris))
7
    {
8
        if (y < (cy - 22) && y > (cy - 44))
9
        {
10
            if (scr_trigcheck_ext(trig, 1164))
11
            {
12
                activetoggle = true;
13
                active = true;
14
                depth = 99001;
15
            }
16
        }
17
    }
18
}
19
if (distance_activate)
20
{
21
    gravity = 0;
22
    vspeed = 0;
23
    if (i_ex(obj_climb_kris))
24
    {
25
        distance_activate = (obj_climb_kris.y - ystart) > 400;
26
        if (!distance_activate)
27
        {
28
            gravity = 0.9;
29
            consistent = true;
30
            if (abs(x - obj_climb_kris.x) > 100)
31
                y += 40;
32
        }
33
    }
34
    exit;
35
}
36
var stop = false;
37
with (obj_climb_kris)
38
{
39
    if (climbcon == 10)
40
        stop = true;
41
}
42
if (stop)
43
{
44
    if (memvspeed != 0)
45
    {
46
        memvspeed = vspeed;
47
        memgravity = gravity;
48
        vspeed = 0;
49
        gravity = 0;
50
    }
51
    else
52
    {
53
        vspeed = memvspeed;
54
        gravity = memgravity;
55
    }
56
}
57
if (!init)
58
{
59
    cury = y;
60
    con = 1;
61
    if (bad)
62
    {
63
        sprite_index = spr_climb_boulder_spiked;
64
        with (obj_lerpvar)
65
        {
66
            if (target == other.id)
67
                instance_destroy();
68
        }
69
        timer = 0;
70
        waittime = newWait();
71
        moveX(waittime);
72
        cury = y;
73
        con = 1;
74
    }
75
    init = 1;
76
}
77
memfriction = friction;
78
if (con == 0)
79
{
80
    waittime = newWait();
81
    moveX(waittime);
82
    timer = 0;
83
    cury = y;
84
    con = 1;
85
}
86
if (con == 1)
87
{
88
    if (!stop)
89
    {
90
        timer++;
91
        if (!caught)
92
            x = lerp(wasx, xtarg, timer / waittime);
93
    }
94
    if (y > (cury + waittime))
95
    {
96
        vspeed = bouncemin + random(bouncerange);
97
        if (consistent)
98
            vspeed = bouncemin + (0.5 * bouncerange);
99
        con = 0;
100
    }
101
}
102
if (damagecon == 1)
103
{
104
    if (!bad)
105
    {
106
        vspeed = 0;
107
        gravity = 0;
108
        with (obj_lerpvar)
109
        {
110
            if (target == other.id)
111
                instance_destroy();
112
        }
113
        if (!invincible)
114
        {
115
            damagecon = 2;
116
            active = 0;
117
        }
118
        else
119
        {
120
            damagecon = 0;
121
        }
122
    }
123
    else
124
    {
125
        with (obj_climb_kris)
126
            didhit = other.id;
127
        damagecon = 20;
128
    }
129
}
130
if (damagecon == 2)
131
{
132
    with (
scr_marker_ext
scr_marker_ext

function
scr_marker_ext(arg0, arg1, arg2, arg3 = 1, arg4 = 1, arg5 = 0, arg6 = 0, arg7 = 16777215, arg8 = depth, arg9 = false, arg10 = -1, arg11 = 1, arg12 = false)
{ var objinst = 1238; if (arg12) objinst = 1496; var thismarker = instance_create(arg0, arg1, objinst); with (thismarker) { depth = arg8; sprite_index = arg2; image_speed = arg5; image_xscale = arg3; image_yscale = arg4; image_index = arg6; image_blend = arg7; image_alpha = arg11; if (arg9)
scr_depth_alt();
} if (arg10 > 0)
scr_doom(thismarker, arg10);
return thismarker; } function scr_marker_fromasset(arg0, arg1 = depth, arg2 = false, arg3 = false) { if (is_undefined(arg0)) { debug_message("Warning: scr_marker_fromasset() sprite_instance didn't exist"); return -4; } var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var imagespeed = layer_sprite_get_speed(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var markertype = 1238; if (arg3) markertype = 1496; var thismarker = instance_create_depth(xloc, yloc, arg1, markertype); with (thismarker) { sprite_index = sprite; image_index = index; image_speed = imagespeed; image_xscale = xscale; image_yscale = yscale; image_angle = angle; image_blend = blend; image_alpha = alpha; if (arg2)
scr_depth_alt(id, arg2);
} return thismarker; } function scr_assetgetinfo(arg0) { var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var imagespeed = layer_sprite_get_speed(arg0); return [sprite, index, xloc, yloc, xscale, yscale, angle, blend, alpha, imagespeed]; }
(x, y, 7524, 2, 2, 0, undefined, undefined, undefined, undefined, undefined, undefined, true))
133
    {
134
        timer = 0;
135
        
136
        step_func = function()
137
        {
138
            timer++;
139
            if (timer == 1)
140
            {
141
                
scr_shakeobj
scr_shakeobj

function
scr_shakeobj()
{ var _shakeobj = instance_create(x, y, obj_shakeobj); _shakeobj.target = id; if (argument_count >= 1) { if (i_ex(argument0)) _shakeobj.target = argument0; } if (argument_count >= 2) { if (argument1 != -1) _shakeobj.shakeamt = argument1; } if (argument_count >= 3) { if (argument2 != -1) _shakeobj.shakereduct = argument2; } with (_shakeobj) event_user(0); }
();
142
                snd_play(snd_swing, 0.4, 1.2);
143
                snd_play(snd_laz_c, 0.3, 1.2);
144
            }
145
            if (timer == 8)
146
            {
147
                snd_play(snd_swing, 1, 0.7);
148
                snd_play(snd_damage, 0.5, 0.7);
149
                snd_play(snd_punchmed, 0.4, 1.4);
150
                with (
scr_marker_ext
scr_marker_ext

function
scr_marker_ext(arg0, arg1, arg2, arg3 = 1, arg4 = 1, arg5 = 0, arg6 = 0, arg7 = 16777215, arg8 = depth, arg9 = false, arg10 = -1, arg11 = 1, arg12 = false)
{ var objinst = 1238; if (arg12) objinst = 1496; var thismarker = instance_create(arg0, arg1, objinst); with (thismarker) { depth = arg8; sprite_index = arg2; image_speed = arg5; image_xscale = arg3; image_yscale = arg4; image_index = arg6; image_blend = arg7; image_alpha = arg11; if (arg9)
scr_depth_alt();
} if (arg10 > 0)
scr_doom(thismarker, arg10);
return thismarker; } function scr_marker_fromasset(arg0, arg1 = depth, arg2 = false, arg3 = false) { if (is_undefined(arg0)) { debug_message("Warning: scr_marker_fromasset() sprite_instance didn't exist"); return -4; } var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var imagespeed = layer_sprite_get_speed(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var markertype = 1238; if (arg3) markertype = 1496; var thismarker = instance_create_depth(xloc, yloc, arg1, markertype); with (thismarker) { sprite_index = sprite; image_index = index; image_speed = imagespeed; image_xscale = xscale; image_yscale = yscale; image_angle = angle; image_blend = blend; image_alpha = alpha; if (arg2)
scr_depth_alt(id, arg2);
} return thismarker; } function scr_assetgetinfo(arg0) { var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var imagespeed = layer_sprite_get_speed(arg0); return [sprite, index, xloc, yloc, xscale, yscale, angle, blend, alpha, imagespeed]; }
(xstart, ystart, sprite_index, 2, 2, 0, 1, undefined, undefined, undefined, undefined, undefined, 1))
151
                {
152
                    depth = 4999;
153
                    gravity = 0.5;
154
                    direction = 135;
155
                    friction = 0.01;
156
                    speed = 5;
157
                    timer = 0;
158
                    
159
                    step_func = function()
160
                    {
161
                        if (y > (cameray() + 560))
162
                            instance_destroy();
163
                    };
164
                }
165
                with (
scr_marker_ext
scr_marker_ext

function
scr_marker_ext(arg0, arg1, arg2, arg3 = 1, arg4 = 1, arg5 = 0, arg6 = 0, arg7 = 16777215, arg8 = depth, arg9 = false, arg10 = -1, arg11 = 1, arg12 = false)
{ var objinst = 1238; if (arg12) objinst = 1496; var thismarker = instance_create(arg0, arg1, objinst); with (thismarker) { depth = arg8; sprite_index = arg2; image_speed = arg5; image_xscale = arg3; image_yscale = arg4; image_index = arg6; image_blend = arg7; image_alpha = arg11; if (arg9)
scr_depth_alt();
} if (arg10 > 0)
scr_doom(thismarker, arg10);
return thismarker; } function scr_marker_fromasset(arg0, arg1 = depth, arg2 = false, arg3 = false) { if (is_undefined(arg0)) { debug_message("Warning: scr_marker_fromasset() sprite_instance didn't exist"); return -4; } var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var imagespeed = layer_sprite_get_speed(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var markertype = 1238; if (arg3) markertype = 1496; var thismarker = instance_create_depth(xloc, yloc, arg1, markertype); with (thismarker) { sprite_index = sprite; image_index = index; image_speed = imagespeed; image_xscale = xscale; image_yscale = yscale; image_angle = angle; image_blend = blend; image_alpha = alpha; if (arg2)
scr_depth_alt(id, arg2);
} return thismarker; } function scr_assetgetinfo(arg0) { var sprite = layer_sprite_get_sprite(arg0); var index = layer_sprite_get_index(arg0); var xloc = layer_sprite_get_x(arg0); var yloc = layer_sprite_get_y(arg0); var xscale = layer_sprite_get_xscale(arg0); var yscale = layer_sprite_get_yscale(arg0); var angle = layer_sprite_get_angle(arg0); var blend = layer_sprite_get_blend(arg0); var alpha = layer_sprite_get_alpha(arg0); var imagespeed = layer_sprite_get_speed(arg0); return [sprite, index, xloc, yloc, xscale, yscale, angle, blend, alpha, imagespeed]; }
(xstart, ystart, sprite_index, 2, 2, 0, 2, undefined, undefined, undefined, undefined, undefined, 1))
166
                {
167
                    depth = 5001;
168
                    gravity = 0.25;
169
                    direction = 315;
170
                    friction = 0.01;
171
                    speed = 2;
172
                    timer = 0;
173
                    
174
                    step_func = function()
175
                    {
176
                        if (y > (cameray() + 560))
177
                            instance_destroy();
178
                    };
179
                }
180
                with (instance_create(xstart, ystart, obj_marker_fancy))
181
                {
182
                    depth = 5000;
183
                    gravity = 0.7;
184
                    vspeed = -4;
185
                    juice = [];
186
                    var juicecount = irandom_range(24, 32);
187
                    for (var i = 0; i < juicecount; i++)
188
                    {
189
                        var _j = 
190
                        {
191
                            x: x,
192
                            y: y,
193
                            xprevious: x,
194
                            yprevious: y,
195
                            direction: ((i / juicecount) * 360) + random_range(-8, 8) + 6,
196
                            speed: random_range(2, 6),
197
                            friction: random_range(0.001, 0.02),
198
                            scale: random_range(12, 30),
199
                            col: merge_color(#FFA201, #F199BC, random_range(0, 0.25))
200
                        };
201
                        array_push(juice, _j);
202
                    }
203
                    
204
                    end_step_func = function()
205
                    {
206
                        for (var i = 0; i < array_length(juice); i++)
207
                        {
208
                            var j = juice[i];
209
                            j.scale = j.scale * 0.95;
210
                            j.xprevious = j.x;
211
                            j.yprevious = j.y;
212
                            j.speed = j.speed * (1 - j.friction);
213
                            j.x += lengthdir_x(j.speed, j.direction);
214
                            j.y += lengthdir_y(j.speed, j.direction) + (y - yprevious);
215
                        }
216
                    };
217
                    
218
                    draw_func = function()
219
                    {
220
                        var dokill = true;
221
                        var spritecount = 0;
222
                        var cy = cameray() + 480;
223
                        for (var i = 0; i < array_length(juice); i++)
224
                        {
225
                            var j = juice[i];
226
                            if (j.scale > 0.00390625)
227
                            {
228
                                var count = max(2, round(point_distance(j.x, j.y, j.xprevious, j.yprevious)));
229
                                for (var k = 0; k < count; k++)
230
                                {
231
                                    var _x = lerp(j.xprevious, j.x, k / count);
232
                                    var _y = lerp(j.yprevious, j.y, k / count);
233
                                    if (_y < cy)
234
                                        dokill = false;
235
                                    var _scale = clamp((j.scale * (k / count)) / 256, (2 * k) / count / 256, 1);
236
                                    draw_sprite_ext(spr_circle_256_aa, 0, _x, _y, _scale, _scale, 0, j.col, 1);
237
                                    spritecount++;
238
                                }
239
                            }
240
                        }
241
                        if (dokill)
242
                            instance_destroy();
243
                    };
244
                }
245
                instance_destroy();
246
            }
247
        };
248
    }
249
    instance_destroy();
250
}
251
if (bbox_top > (cy + 480 + 80) || y > (room_height + 10))
252
    instance_destroy();