Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_plat_enm_aqua_miniboss_Step_0

related scripts: Collision_obj_plat_enm_smallgloveCollision_obj_plat_susieaxe_hbxCreate_0Destroy_0Draw_0PreCreate_0Step_0

(view raw script w/o annotations or w/e)
1
event_inherited();
2
if (!instance_exists(obj_plat_player))
3
{
4
    
scr_flower_despwn
scr_flower_despwn

function
scr_flower_despwn(arg0 = 0)
{ arg0 = 0; hit = 0; with (instance_create_depth(x, y, depth, obj_plat_vfx)) { sprite_index = spr_smokepuff; image_speed = 2; } with (instance_create_depth(x, y, 2450, obj_flower_despwn, { image_blend: petal_color })) colored = true; var _spawner = instance_create_depth(x_home, y_home, 2450, obj_flower_spawner, { image_blend: petal_color }); _spawner._memory = {}; _spawner.image_xscale = image_xscale; _spawner.scale = sign(image_xscale); _spawner.was_onscreen = true; _spawner.colored = true; _spawner.image_yscale = image_yscale; _spawner.image_angle = image_angle; _spawner.obj_index = object_index; _spawner.activate = activate; _spawner.enemy_wave = enemy_wave; var array = __vars; for (var i = 0; i < array_length(array); i++) variable_struct_set(_spawner._memory, array[i], variable_instance_get(id, array[i])); with (_spawner) { obj_index = other.object_index; hp = other.hp; } if (arg0 == 0) { instance_destroy(); } else { } exit; }
();
5
    exit;
6
}
7
if (global.pause_plat)
8
{
9
    
scr_pause_alarms
scr_pause_alarms

function
scr_pause_alarms(arg0 = 11)
{ for (i = 0; i <= arg0; i++) { if (alarm[i] != -1 && alarm[i] != 0) alarm[i]++; } }
();
10
    exit;
11
}
12
if (is_stunned)
13
    exit;
14
if (!can_attack)
15
    exit;
16
reteleport_timer++;
17
knifecount = 12 - hp;
18
var timerlimit = 45 + (2 * hp);
19
var attacklimit = 2 + floor(hp / 2);
20
if (instance_exists(obj_dw_garden_aquaplatforming))
21
{
22
    var tt = obj_dw_garden_aquaplatforming.enemywavetimer / 2700;
23
    knifecount = max(knifecount, floor(lerp(3, 12, tt)));
24
    timerlimit = min(timerlimit, ceil(lerp(67, 45, tt)));
25
    attacklimit = min(attacklimit, ceil(lerp(8, 2, tt)));
26
}
27
else
28
{
29
    var num_enemies = instance_number(obj_flower_enmparent);
30
    knifecount = ceil(knifecount / num_enemies);
31
}
32
if (protected)
33
    knifecount = floor(6 - (0.5 * hp));
34
contimer += 1;
35
if (con == 2)
36
    evadecon = 0;
37
if (evadecon > 0)
38
{
39
    evadetimer++;
40
    if (evadetimer == 1)
41
    {
42
        remx = x;
43
        remy = y;
44
    }
45
    var evade_ease = ease_out_quad(evadetimer / 10, 0, 1, 1);
46
    x = lerp(remx, remx + (12 * evadedirection), evade_ease);
47
    y = lerp(remy, remy - 4, evade_ease);
48
    if (evadetimer == 10)
49
        evadecon = 0;
50
}
51
if (con == 0)
52
{
53
    if (contimer == 30)
54
    {
55
        con = 1;
56
        contimer = 0;
57
    }
58
}
59
else if (con == 1)
60
{
61
    if (contimer == 2)
62
    {
63
        snd_play(snd_wing);
64
        flash_hurt(16777215);
65
    }
66
    if (contimer == 6)
67
        attacking = true;
68
    if (contimer >= timerlimit && evadecon == 0)
69
    {
70
        con = 2;
71
        nextlerp = (nextlerp + 1) % 4;
72
        contimer = 0;
73
        if (regular_enemy)
74
        {
75
            var len = random_range(140, 220) + (5 * abs(obj_plat_player.hspeed));
76
            var dir = 0;
77
            if (obj_plat_player.x < x)
78
                dir = random_range(-55, 55) + 180;
79
            else
80
                dir = random_range(-55, 55);
81
            gx = clamp(x + lengthdir_x(len, dir), camerax() + 40, camerax() + 600);
82
            gy = clamp(y + lengthdir_y(len, dir), max(cameray() + 120, obj_plat_player.y - 100), obj_plat_player.y - 40);
83
            gtime = 15;
84
        }
85
        else
86
        {
87
            gx = xstart + (targetlerp[nextlerp][0] * -320);
88
            gy = ystart + (targetlerp[nextlerp][1] * 120);
89
            gtime = targetlerp[nextlerp][2];
90
        }
91
        lerpinst[0] = 
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, gx, gtime, 2, "inout");
92
        lerpinst[1] = 
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, gy, gtime, 2, "inout");
93
    }
94
}
95
else if (con == 2)
96
{
97
    
scr_afterimage_monochrome
scr_afterimage_monochrome

function
scr_afterimage_monochrome(arg0, arg1)
{ afterimage = instance_create(x, y, obj_afterimage_onecolor); afterimage.tint = arg0; afterimage.additive = arg1; afterimage.sprite_index = sprite_index; afterimage.image_index = image_index; afterimage.image_blend = image_blend; afterimage.image_speed = 0; afterimage.depth = depth; afterimage.image_xscale = image_xscale; afterimage.image_yscale = image_yscale; afterimage.image_angle = image_angle; return afterimage; } function scr_afterimage_monochrome_parallax(arg0, arg1, arg2) { afterimage = instance_create(x, y, obj_afterimage_onecolor_parallax); afterimage.tint = arg0; afterimage.additive = arg1; afterimage.sprite_index = sprite_index; afterimage.image_index = image_index; afterimage.image_blend = image_blend; afterimage.image_speed = 0; afterimage.depth = depth; afterimage.image_xscale = image_xscale; afterimage.image_yscale = image_yscale; afterimage.image_angle = image_angle; afterimage.parallax_depth = arg2; return afterimage; }
(get_tint_blend(), true).image_alpha = 0.3;
98
    if (contimer >= targetlerp[nextlerp][2])
99
    {
100
        con = 1;
101
        contimer = 0;
102
    }
103
}
104
if (attacking)
105
{
106
    attacking = false;
107
    attacktimer = 0;
108
    nextknife = 0;
109
    var _p = 910;
110
    aim = 0;
111
    if (instance_exists(_p))
112
    {
113
        aim = point_direction(x, y, _p.x, _p.y);
114
        aim += (-5 + irandom(10));
115
    }
116
    throwdir = choose(-1, 1);
117
    aim += (throwdir * (30 * knifecount * 0.5));
118
}
119
if (attacktimer >= 0)
120
{
121
    attacktimer++;
122
    if (attacktimer >= attacklimit)
123
    {
124
        var _len = 5;
125
        var _dir = aim;
126
        var _x = x + lengthdir_x(_len, _dir);
127
        var _y = y + lengthdir_y(_len, _dir);
128
        var _b = instance_create_depth(_x, _y, depth - 10, obj_plat_bulletred);
129
        with (_b)
130
        {
131
            do_contact_kill = function()
132
            {
133
                with (
scr_plat_vfx
scr_plat_vfx

function
scr_plat_vfx(arg0)
{ var _vfx = instance_create_depth(x, y, depth, obj_plat_vfx); _vfx.sprite_index = arg0; return _vfx; } function scr_vfx_above(arg0) { var _vfx = instance_create_depth(x, y, depth - 1, obj_plat_vfx); _vfx.sprite_index = arg0; return _vfx; } function scr_plat_vfx_ringhit(arg0, arg1, arg2, arg3) {
scr_make_ripple(arg0, arg1, 80, arg3, 280, 2, 20, depth, 0, 0, 0, 1, 0.8);
scr_make_ripple(arg0, arg1, 120, arg3, 480, 2, 15, depth, 0, 0, 0, 1, 0.8);
scr_make_ripple(arg0, arg1, 160, arg3, 680, 2, 10, depth, 0, 0, 0, 1, 0.8);
repeat (7) { with (instance_create(arg0, arg1, obj_animation)) { sprite_index = spr_plat_impact_splash; direction = random_range(0, 360); speed = random_range(3, 12); friction = 0.8; image_speed = 0.3; image_angle = direction;
scr_darksize();
image_blend = arg3; } } }
(3607))
134
                {
135
                    die_animend = 1;
136
                    depth -= 1;
137
                }
138
            };
139
            
140
            sprite_index = spr_faqua_knife_cracked;
141
            if (other.regular_enemy && !instance_exists(obj_dw_garden_aquadash_plat))
142
                damage = 25;
143
            else
144
                damage = 40;
145
            image_speed = 0;
146
            owner = other.id;
147
            speed = 2;
148
            depth = other.depth - 3000;
149
            image_xscale = 0;
150
            image_yscale = 0;
151
            
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; }
("speed", 4, 0, 20);
152
            
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, 20, "speed", 0, 12, 10);
153
            direction = _dir;
154
            image_angle = 180 + direction;
155
            
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_angle", image_angle, image_angle + 540, 15, 1, "out");
156
            lifetime = 70;
157
            
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_xscale", 0, 2, 15);
158
            
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_yscale", 0, 2, 15);
159
            if (_dir == clamp(_dir, 90, 270))
160
                image_yscale *= -1;
161
        }
162
        nextknife += 1;
163
        aim -= (throwdir * 30);
164
        if (nextknife >= knifecount)
165
            attacktimer = -1;
166
        else
167
            attacktimer = 1;
168
    }
169
}