Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_attack_knifechain_manager2_Create_0

(view raw script w/o annotations or w/e)
1
with (obj_aqua_enemy)
2
    visible = false;
3
if (!audio_is_playing(snd_jump))
4
    snd_play(snd_jump);
5
scr_darksize
scr_darksize

function
scr_darksize()
{ var inst = id; if (argument_count) inst = argument0; inst.image_xscale = 2; inst.image_yscale = 2; }
();
6
first = true;
7
rope_counter = 0;
8
knife_list = ds_list_create();
9
knife_side = 0;
10
knife_direction = 90;
11
knife_offset = 40;
12
knife_distance = 20;
13
knife_number = 8;
14
knife_arc = 0.5;
15
knife_direction_goal = knife_direction;
16
knife_change_max = 5.5;
17
knife_x = x;
18
knife_y = y;
19
knife_range = 0;
20
im_done = false;
21
back_index = 4.5;
22
front_index = 4.5;
23
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; }
("x", x,
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(4) + 190, 12, 1, "out");
24
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; }
("y", y,
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(5) - 70, 12, 1, "out");
25
anchor_x = 
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(4) + 190;
26
anchor_y = 
scr_get_box
scr_get_box

function
scr_get_box(arg0)
{ switch (arg0) { case 0: return obj_growtangle.x + (obj_growtangle.sprite_width * 0.5); break; case 1: return obj_growtangle.y - (obj_growtangle.sprite_height * 0.5); break; case 2: return obj_growtangle.x - (obj_growtangle.sprite_width * 0.5); break; case 3: return obj_growtangle.y + (obj_growtangle.sprite_height * 0.5); break; case 4: return obj_growtangle.x; break; case 5: return obj_growtangle.y; break; return false; } }
(5) - 70;
27
ax = 20;
28
ay = 0;
29
30
knife_setup = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
31
{
32
    knife_side = arg2;
33
    knife_direction = arg3;
34
    knife_direction_goal = knife_direction;
35
    knife_offset = arg4;
36
    knife_distance = arg5;
37
    knife_number = arg6;
38
    knife_arc = arg7;
39
    knife_x = arg0 + 40;
40
    knife_y = arg1 + 60;
41
    for (var a = 0; a < arg6; a++)
42
    {
43
        with (instance_create(arg0, arg1, obj_bullet_knife))
44
        {
45
            depth = obj_growtangle.depth - 1;
46
            on_a_chain = true;
47
            scr_bullet_inherit_from(id, 820, -1, 3);
48
            damage = 109;
49
            if (global.encounterno == 220)
50
            {
51
                if (global.tempflag[51] > 7)
52
                    damage -= 5;
53
                if (global.tempflag[51] > 8)
54
                    damage -= 5;
55
                if (global.tempflag[51] > 9)
56
                    damage -= 5;
57
                if (global.tempflag[51] > 10)
58
                    damage -= 5;
59
            }
60
            grazed = 0;
61
            sprite_index = spr_attack_knifechain;
62
            
scr_darksize
scr_darksize

function
scr_darksize()
{ var inst = id; if (argument_count) inst = argument0; inst.image_xscale = 2; inst.image_yscale = 2; }
();
63
            destroyonhit = false;
64
            knife_distance = 40;
65
            knife_distance_anchor = arg4 + (a * arg5);
66
            knife_distance_goal = knife_distance_anchor;
67
            knife_angle = arg3;
68
            side = arg2;
69
            ds_list_add(other.knife_list, id);
70
        }
71
    }
72
    alarm[0]
 = 16;
gml_Object_obj_attack_knifechain_manager2_Alarm_0.gml

if (global.turntimer <= 5) exit; with (obj_bullet_knife) { if (variable_instance_exists(id, "on_a_chain")) grazed = 0; } if (first) { first = false; back_index++; front_index++; } if (knife_direction_goal == 215) { var xchange = 20 + irandom(40); var ychange = irandom_range(-12, 12); with (obj_attack_knifechain_manager2) { ax += xchange; if (ax >= 80) ax -= 80; ay = ychange;
scr_lerpvar("x", x, anchor_x + ax, 24, 2, "out");
scr_lerpvar("y", y, anchor_y + ay, 24, 2, "out");
} knife_swing(145, 12, true); with (obj_bullet_knife) { if (variable_instance_exists(id, "on_a_chain")) knife_distance_goal = knife_distance_anchor + 0; } with (obj_aqua_enemy) { if (fight_type == "seth" && turns == 5) { other.alarm[1] = 20; other.alarm[2] = 16; } } } else { knife_swing(215, 12, true); } alarm[0]
 = 35;
73
    alarm[3]
 = 16;
gml_Object_obj_attack_knifechain_manager2_Alarm_3.gml

exit;
74
};
75
76
knife_swing = function(arg0, arg1, arg2 = true)
77
{
78
    if (!audio_is_playing(snd_swing))
79
        snd_play_x(snd_swing, 0.75, 1.5);
80
    for (var a = 0; a < ds_list_size(knife_list); a++)
81
    {
82
        var cur_knife = ds_list_find_value(knife_list, a);
83
        with (cur_knife)
84
        {
85
            sprite_index = spr_attack_knifechain_spin;
86
            
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_var, arg1 - 3, "sprite_index", spr_attack_knifechain);
87
            if (arg2)
88
            {
89
                if (side == 0)
90
                {
91
                    if (other.knife_direction_goal == 215)
92
                        
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_var, arg1 - 3, "side", 1);
93
                    else
94
                        
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_var, arg1 - 3, "side", -1);
95
                }
96
                else
97
                {
98
                    
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_var, arg1 - 3, "side", -side);
99
                }
100
            }
101
        }
102
    }
103
    
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_var, arg1, "knife_direction_goal", arg0);
104
    
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_lerpvar, arg1, "front_index", front_index, front_index + 5, 20, 1, "out");
105
    
scr_script_delayed
scr_script_delayed

function
scr_script_delayed()
{ var __scriptdelay = instance_create(0, 0, obj_script_delayed); __scriptdelay.script = argument[0]; __scriptdelay.alarm[0] = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function scr_script_delayed_until() { var __scriptdelay = instance_create(0, 0, obj_script_delayed_function); __scriptdelay.script = argument[0]; __scriptdelay.condition = argument[1]; __scriptdelay.target = id; for (var __i = 0; __i < (argument_count - 2); __i++) __scriptdelay.script_arg[__i] = argument[__i + 2]; __scriptdelay.arg_count = argument_count - 2; return __scriptdelay; } function delay_function(arg0, arg1) { return
scr_script_delayed(arg0, arg1);
}
(scr_lerpvar, arg1, "back_index", back_index, back_index + 5, 20, 1, "out");
106
};
107
108
afterimage_manager = instance_create_depth(0, 0, obj_growtangle.depth - 2, obj_marker_fancy);
109
with (afterimage_manager)
110
{
111
    master = other.id;
112
    afterimages = ds_list_create();
113
    
114
    draw_func = function()
115
    {
116
        for (var a = 0; a < ds_list_size(afterimages); a++)
117
        {
118
            array_set(ds_list_find_value(afterimages, a), 0, array_get(ds_list_find_value(afterimages, a), 0) - 0.13333333333333333);
119
            array_set(ds_list_find_value(afterimages, a), 1, array_get(ds_list_find_value(afterimages, a), 1) - (1/15));
120
            array_set(ds_list_find_value(afterimages, a), 2, array_get(ds_list_find_value(afterimages, a), 2) - 0.02333333333333333);
121
            if (array_get(ds_list_find_value(afterimages, a), 0) == 0)
122
            {
123
                ds_list_delete(afterimages, a);
124
                a--;
125
            }
126
        }
127
        for (var a = 0; a < ds_list_size(master.knife_list); a++)
128
        {
129
            var cur_knife = ds_list_find_value(master.knife_list, a);
130
            with (cur_knife)
131
            {
132
                if (sprite_index == spr_attack_knifechain && !other.master.alarm[3])
133
                    ds_list_add(other.afterimages, [2, 1, 0.35, xprevious, yprevious, image_angle]);
134
            }
135
        }
136
        for (var a = 0; a < ds_list_size(afterimages); a++)
137
            draw_sprite_ext(spr_attack_knifechain, 0, array_get(ds_list_find_value(afterimages, a), 3), array_get(ds_list_find_value(afterimages, a), 4), array_get(ds_list_find_value(afterimages, a), 0), array_get(ds_list_find_value(afterimages, a), 1), array_get(ds_list_find_value(afterimages, a), 5), c_white, array_get(ds_list_find_value(afterimages, a), 2));
138
    };
139
    
140
    clean_func = function()
141
    {
142
        ds_list_destroy(afterimages);
143
    };
144
}