Deltarune (Chapter 4) script viewer

← back to main script listing

gml_Object_obj_rotating_tower_animation_Create_0

(view raw script w/o annotations or w/e)
1
con = 0;
2
timer = 0;
3
targetx = -1;
4
targety = -1;
5
last_frame = -1;
6
if (i_ex(obj_rotating_tower_controller_new))
7
    x -= 40;
8
9
advance_frame = function(arg0)
10
{
11
    var tw = obj_rotating_tower_controller_new.tile_width;
12
    var th = obj_rotating_tower_controller_new.tile_height;
13
    var yoffset = arg0 * image_yscale * th;
14
    for (i = 0; i < image_yscale; i++)
15
    {
16
        for (ii = 0; ii < image_xscale; ii++)
17
        {
18
            var xx = targetx + (ii * tw);
19
            var yy = targety + (i * th);
20
            var xxx = x + (ii * tw);
21
            var yyy = y + (i * th) + yoffset;
22
            with (obj_rotating_tower_controller_new)
23
            {
24
                var changed = copy_tilemap_image_index(xxx, yyy, xx, yy);
25
                if (changed > 0)
26
                {
27
                    for (j = 0; j < 2; j++)
28
                    {
29
                        for (jj = 0; jj < 2; jj++)
30
                        {
31
                            if (random_range(0, 1) > 0.25 && changed & ((j + 1 + (jj * 4)) > 0))
32
                            {
33
                                var tilex = (xx / tile_width_fine) + j;
34
                                var tiley = (yy / tile_height_fine) + jj;
35
                                if (tile_vis[tilex] == 1)
36
                                {
37
                                    var marker = instance_create(tower_x + tile_x[tilex] + random_range(0, tile_xscale[tilex]), (tiley * tile_height_fine) + random_range(0, tile_height_fine), obj_marker);
38
                                    marker.depth = 1000099;
39
                                    marker.sprite_index = spr_dw_fountain_broken_particle;
40
                                    marker.image_index = irandom_range(0, 8);
41
                                    marker.image_speed = 0;
42
                                    marker.image_blend = tile_color[tilex];
43
                                    marker.hspeed = random_range(-0.5, 0.5);
44
                                    marker.vspeed = random_range(0.5, 1.5);
45
                                    
scr_lerpvar_instance
scr_lerpvar_instance

function
scr_lerpvar_instance()
{ __lerpvar = instance_create(0, 0, obj_lerpvar); __lerpvar.target = argument[0]; __lerpvar.varname = argument[1]; __lerpvar.pointa = argument[2]; __lerpvar.pointb = argument[3]; __lerpvar.maxtime = argument[4]; if (argument_count >= 6) __lerpvar.easetype = argument[5]; if (argument_count >= 7) __lerpvar.easeinout = argument[6]; return __lerpvar; } function scr_lerp_var_instance() { if (argument_count >= 6) return
scr_lerpvar_instance(argument0, argument1, argument2, argument3, argument4, argument5);
else if (argument_count >= 7) return
scr_lerpvar_instance(argument0, argument1, argument2, argument3, argument4, argument5, argument6);
else return
scr_lerpvar_instance(argument0, argument1, argument2, argument3, argument4);
} function scr_lerp_instance_var() { if (argument_count >= 6) return
scr_lerpvar_instance(argument0, argument1, argument2, argument3, argument4, argument5);
else if (argument_count >= 7) return
scr_lerpvar_instance(argument0, argument1, argument2, argument3, argument4, argument5, argument6);
else return
scr_lerpvar_instance(argument0, argument1, argument2, argument3, argument4);
}
(marker, "image_alpha", 1, 0, irandom_range(8, 15));
46
                                    
scr_doom
scr_doom

function
scr_doom(arg0 = id, arg1)
{ with (instance_create_depth(0, 0, 0, obj_doom)) { alarm[0] target = arg0; persistent = arg0.persistent; } }
(marker, 15);
47
                                }
48
                            }
49
                        }
50
                    }
51
                }
52
            }
53
            if (copy_collision)
54
            {
55
                var old_collision = instance_position(xx - (0.5 * tw), yy + (0.5 * th), obj_climb_climbable);
56
                var new_collision = tilemap_get_at_pixel(obj_rotating_tower_controller_new.tm_collision, xxx + tw, yyy);
57
                if (old_collision != -4 && new_collision <= 0)
58
                {
59
                    with (old_collision)
60
                    {
61
                        if (place_meeting(x, y, obj_climb_kris))
62
                        {
63
                            with (obj_climb_kris)
64
                                fallingcon = 1;
65
                        }
66
                        instance_destroy();
67
                    }
68
                }
69
                else if (new_collision > 0 && old_collision == -4)
70
                {
71
                    instance_create(xx - tw, yy, obj_climb_climbable);
72
                }
73
            }
74
        }
75
    }
76
};