Deltarune (Chapter 3) script viewer

← back to main script listing

gml_Object_obj_roaringknight_splitslash_Step_0

(view raw script w/o annotations or w/e)
1
timer++;
2
if (!init)
3
{
4
    startdepth = depth;
5
    depth = obj_growtangle.depth + 10;
6
    init = true;
7
    slashmarker = 
scr_dark_marker
scr_dark_marker

function
scr_dark_marker(arg0, arg1, arg2)
{ thismarker = instance_create(arg0, arg1, obj_marker); with (thismarker) { sprite_index = arg2; image_speed = 0; image_xscale = 2; image_yscale = 2; } return thismarker; }
(x, y, spr_rk_quickslash_upper);
8
    slashmarker.depth = obj_growtangle.depth + 50;
9
    slashmarker.image_speed = 0;
10
    slashmarker.image_alpha = 0;
11
    angleoffset = random_range(-12, 12);
12
    if (diagonal)
13
    {
14
        direction = ((obj_roaringknight_boxsplitter_attack.slash_count % 2) == 1) ? -45 : 45;
15
        vertical = ((obj_roaringknight_boxsplitter_attack.slash_count % 2) == 1) ? true : false;
16
        image_angle = direction;
17
        xoffset = random_range(-2, 2) * 2;
18
        yoffset = random_range(-2, 2) * 2;
19
    }
20
    else if (vertical)
21
    {
22
        direction = ((obj_roaringknight_boxsplitter_attack.slash_count % 2) == 1) ? -90 : 90;
23
        image_angle = direction;
24
        xoffset = random_range(-8, 8) * 2;
25
    }
26
    else
27
    {
28
        yoffset = random_range(-8, 8) * 2;
29
    }
30
    slashmarker.image_angle = image_angle;
31
}
32
if (image_alpha < 1 && !slash)
33
    image_alpha += 0.05;
34
if (!slash)
35
    image_blend = merge_color(c_black, c_red, clamp01(timer / 20));
36
if (!slash)
37
{
38
    slashmarker.image_alpha = 0;
39
}
40
else
41
{
42
    slashmarker.x = x;
43
    slashmarker.y = y;
44
    slashmarker.image_index = image_index;
45
    slashmarker.image_blend = image_blend;
46
    slashmarker.image_alpha = image_alpha;
47
}
48
if (timer <= 15)
49
    thickness = lerp(10, 1, 
scr_ease_out
scr_ease_out

function
scr_ease_out(arg0, arg1)
{ if (arg1 < -3 || arg1 > 7) return arg0; switch (arg1) { case -3: return ease_out_bounce(arg0, 0, 1, 1); case -2: return ease_out_elastic(arg0, 0, 1, 1); case -1: return ease_out_back(arg0, 0, 1, 1); case 0: return arg0; case 1: return sin(arg0 * 1.5707963267948966); case 2: return -arg0 * (arg0 - 2); case 6: return -power(2, -10 * arg0) + 1; case 7: arg0--; return sqrt(1 - (arg0 * arg0)); default: arg0--; if (arg1 == 4) { return -1 * (power(arg0, arg1) - 1); break; } return power(arg0, arg1) + 1; } }
(timer / 15, 4));
50
if (timer == 38)
51
{
52
}
53
if (timer == 29)
54
    depth = startdepth;
55
if (timer == 30)
56
{
57
    x = xstart;
58
    y = ystart;
59
    if (image_angle == 90)
60
        image_yscale *= -1;
61
    image_angle += angleoffset;
62
    x += xoffset;
63
    y += yoffset;
64
    image_blend = c_white;
65
    active = true;
66
    slash = true;
67
    var _splitter;
68
    if (!i_ex(obj_knight_split_growtangle))
69
    {
70
        _splitter = instance_create(obj_growtangle.x, obj_growtangle.y, obj_knight_split_growtangle);
71
        
scr_bullet_inherit
scr_bullet_inherit

function
scr_bullet_inherit(arg0)
{ if (i_ex(arg0)) { if (damage != -1) arg0.damage = damage; if (grazepoints != -1) arg0.grazepoints = grazepoints; if (timepoints != -1) arg0.timepoints = timepoints; if (inv != -1) arg0.inv = inv; if (target != -1) arg0.target = target; if (grazed != -1) arg0.grazed = 0; if (grazetimer != -1) arg0.grazetimer = 0; if (object_index == obj_dbulletcontroller) { arg0.creatorid = creatorid; arg0.creator = creator; } arg0.element = element; } }
(_splitter);
72
        _splitter.grazepoints = 5;
73
        with (obj_roaringknight_boxsplitter_attack)
74
        {
75
            growtangle = _splitter;
76
            _splitter.difficulty = difficulty;
77
        }
78
    }
79
    else
80
    {
81
        _splitter = 910;
82
    }
83
    _splitter.xoffset = xoffset;
84
    _splitter.yoffset = yoffset;
85
    _splitter.angle = angleoffset;
86
    obj_knight_split_growtangle.vertical = vertical;
87
    obj_knight_split_growtangle.diagonal = diagonal;
88
    obj_knight_split_growtangle.con = 1;
89
    obj_knight_split_growtangle.timer = 0;
90
    sprite_index = spr_rk_quickslash;
91
    image_speed = 1;
92
    image_index = 0;
93
    image_yscale *= 2;
94
    with (obj_roaringknight_boxsplitter_attack)
95
    {
96
        if (image_index >= 4)
97
            image_index = 1;
98
        else
99
            image_index = 4;
100
        animtimer = 0;
101
    }
102
    snd_stop(snd_wideslash_low);
103
    snd_stop(snd_knight_hurtb);
104
    snd_play_x(snd_wideslash_low, 0.8, 0.9 + (random(4) / 10));
105
    var _angle = image_angle;
106
    if (image_xscale < 0)
107
        _angle += 180;
108
    var _dirx = lengthdir_x(60, _angle);
109
    var _diry = lengthdir_y(60, _angle);
110
    for (var _i = 0; _i < 16; _i++)
111
    {
112
        var _debris = instance_create(xstart + xoffset, ystart + yoffset, obj_afterimage);
113
        with (_debris)
114
        {
115
            speed = random_range(10, 20);
116
            direction = other.image_angle + (((20 - speed) * randomsign()) / 2) + 180;
117
            speed += random_range(-2, 2);
118
            if ((_i % 2) == 0)
119
            {
120
                direction -= 180;
121
                speed *= 0.75;
122
                x += _dirx;
123
                y += _diry;
124
            }
125
            else
126
            {
127
                x -= _dirx;
128
                y -= _diry;
129
            }
130
            image_angle = direction;
131
            sprite_index = spr_knight_slash_mark;
132
            image_alpha = 1;
133
            image_blend = c_white;
134
            image_xscale = speed / 10;
135
            image_yscale = 0.1;
136
            friction = 0.5;
137
            fadeSpeed += random(0.02);
138
            scr_lerp_var_instance(id, "image_xscale", image_xscale, 0.05, 5);
139
        }
140
    }
141
}
142
if (timer == 34)
143
    active = false;
144
if (timer == (35 + hurt_delay) && playerstrike == 1)
145
{
146
    playerstrike = 0;
147
    obj_heart.image_alpha = 1;
148
    if (target != 3)
149
        
scr_damage_maxhp
scr_damage_maxhp

function
scr_damage_maxhp(arg0 = 1, arg1 = false, arg2 = false)
{ if (global.inv < 0) {
scr_damage_cache();
var __element = 0; if (variable_instance_exists(id, "element")) { if (is_real(element)) __element = element; } if (target < 3) { if (global.hp[global.char[target]] <= 0) {
scr_randomtarget_old();
target = mytarget; with (global.charinstance[target]) { image_blend = c_white; darkify = 0; } } } var __remtarget = -1; if (target == 4) { __remtarget = 4;
scr_randomtarget_old();
target = mytarget; if ((global.hp[global.char[target]] / global.maxhp[global.char[target]]) < (
scr_party_hpaverage() / 2))
{
scr_randomtarget_old();
target = mytarget; } if ((global.hp[global.char[target]] / global.maxhp[global.char[target]]) < (
scr_party_hpaverage() / 2))
{
scr_randomtarget_old();
target = mytarget; } if (target == 0 && (global.hp[global.char[target]] / global.maxhp[global.char[target]]) < 0.35) {
scr_randomtarget_old();
target = mytarget; } with (global.charinstance[target]) { image_blend = c_white; darkify = 0; } } chartarget = 3; if (global.chapter == 3 && i_ex(obj_knight_enemy) && !i_ex(obj_knight_roaring2)) { if (obj_knight_enemy.aoedamage == false) { if (target == 0) { if (global.hp[2] > 0 && global.hp[3] > 0) target = choose(1, 2); else if (global.hp[2] > 0) target = 1; else if (global.hp[3] > 0) target = 2; } if (obj_knight_enemy.myattackchoice != 13) { if (global.chararmor1[1] == 23 || global.chararmor2[1] == 23 || global.chararmor1[2] == 23 || global.chararmor2[2] == 23 || global.chararmor1[3] == 23 || global.chararmor2[3] == 23) { obj_knight_enemy.damagecounter++; if (obj_knight_enemy.damagecounter < 3) { if (global.hp[1] > 0 && (global.chararmor1[1] == 23 || global.chararmor2[1] == 23)) target = 0; if (global.hp[2] > 0 && (global.chararmor1[2] == 23 || global.chararmor2[2] == 23)) target = 1; if (global.hp[3] > 0 && (global.chararmor1[3] == 23 || global.chararmor2[3] == 23)) target = 2; } else { target = choose(0, 1, 2); repeat (2) { if (global.hp[1] < 1 && target == 0) target++; if (global.hp[2] < 1 && target == 1) target++; if (global.hp[3] < 1 && target == 2) target++; if (target > 2) target = 0; } if (target == 0 && (global.chararmor1[1] == 23 || global.chararmor2[1] == 23)) { } else if (target == 1 && (global.chararmor1[2] == 23 || global.chararmor2[2] == 23)) { } else if (target == 2 && (global.chararmor1[3] == 23 || global.chararmor2[3] == 23)) { ...
(0.66, false, true);
150
    global.inv = global.invc * 30;
151
    instance_destroy();
152
}