Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_orangeheart_Step_0

related scripts: CleanUp_0Create_0Destroy_0Draw_0Step_0 Step_2

(view raw script w/o annotations or w/e)
1
if (!instance_exists(obj_growtangle))
2
{
3
    instance_destroy();
4
    exit;
5
}
6
if (global.inv > 0)
7
{
8
    image_speed = 0.25;
9
}
10
else
11
{
12
    image_speed = 0;
13
    image_index = 0;
14
}
15
var controller = 745;
16
if (hitstop <= 0)
17
{
18
    var movespd = 8;
19
    if (chargecon == 1)
20
        movespd *= 0.8333333333333334;
21
    if (canmovevertically)
22
    {
23
        if (rotatecontrol)
24
        {
25
            if (up_h())
26
            {
27
                with (obj_orangeheart_bullet_orbit)
28
                    rot_val += 0.1;
29
            }
30
            if (down_h())
31
            {
32
                with (obj_orangeheart_bullet_orbit)
33
                    rot_val -= 0.1;
34
            }
35
        }
36
        else
37
        {
38
            if (up_h())
39
                y -= movespd;
40
            if (down_h())
41
                y += movespd;
42
        }
43
    }
44
    if (chargecon != 4)
45
    {
46
        with (obj_debug_orangeheartcontroller)
47
            fakecamxspeedbase = fakecamxspeedbase_original;
48
    }
49
    if (obj_debug_orangeheartcontroller.do_lines == 0.25)
50
        y = clamp(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; } }
(1) + 5,
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; } }
(3) - 23);
51
    if (obj_debug_orangeheartcontroller.tutorial_clamp)
52
        y = clamp(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) - 110,
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) + 90);
53
    var _inabox = -4;
54
    with (obj_orangeheart_square)
55
    {
56
        if ((other.x + 20) >= (x + bbox.x1) && other.x <= (x + bbox.x2))
57
            _inabox = id;
58
    }
59
    if (i_ex(_inabox))
60
        y = clamp(y, _inabox.y + _inabox.bbox.y1 + 3, (_inabox.y + _inabox.bbox.y2) - 21);
61
    if (chargecon == 4)
62
        y = clamp(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) - 58,
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) + 39);
63
    with (obj_heart)
64
    {
65
        x = other.x;
66
        y = other.y;
67
    }
68
    heartcooldown = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(heartcooldown, 0, 1);
69
    if (chargecon == 0 && !shakeheart && !heartcooldown && cancharge)
70
    {
71
        if (button1_h())
72
        {
73
            chargecon = 1;
74
            loop_sound = snd_loop(snd_chargeshot_charge);
75
            snd_pitch(loop_sound, 0.25);
76
            snd_volume(loop_sound, 0.5, 0);
77
            chargetimer = 0;
78
            glowtimer = 0;
79
        }
80
    }
81
    if (chargecon == 1)
82
    {
83
        if (button1_h())
84
        {
85
            dashstate = 1;
86
            chargetimer = 
scr_approach
scr_approach

function
scr_approach(arg0, arg1, arg2)
{ if (arg0 < arg1) { arg0 += arg2; if (arg0 > arg1) return arg1; } else { arg0 -= arg2; if (arg0 < arg1) return arg1; } return arg0; }
(chargetimer, 16, 1);
87
            snd_pitch(loop_sound, min(0.5 + (chargetimer * 0.05), 1));
88
            if (controller.scrolling)
89
                controller.fakecamxspeedadditional = min(chargetimer, 8) * 0.5;
90
        }
91
        else
92
        {
93
            with (obj_orangeheart_bullet)
94
            {
95
                if (x > (other.x + 20))
96
                {
97
                    if (variable_instance_exists(id, "i_am_a_glove"))
98
                        orangeheartControlled = true;
99
                }
100
            }
101
            if (chargetimer == 16)
102
            {
103
                snd_stop(loop_sound);
104
                snd_play(snd_explosion_mmx3, 0.5, 2);
105
                chargecon = 2;
106
                dashtimer = 0;
107
            }
108
            else
109
            {
110
                chargetimer = 8 + (chargetimer * 0.5);
111
                snd_stop(loop_sound);
112
                snd_play(snd_explosion_mmx3, 0.5, 2);
113
                chargecon = 2;
114
                dashtimer = 0;
115
            }
116
        }
117
    }
118
    if (chargetype == 0)
119
    {
120
        if (chargecon == 2)
121
        {
122
            x = basex + ((chargetimer / maxcharge) * chargedistance) + minimumdistance;
123
            chargecon = 3;
124
        }
125
        if (chargecon == 3)
126
        {
127
            chargetimer = 0;
128
            dashtimer++;
129
            x = lerp_ease_out(x, basex, dashtimer / 15, 2);
130
            if (dashtimer >= 15)
131
            {
132
                x = basex;
133
                chargecon = 0;
134
                dashtimer = 0;
135
            }
136
        }
137
    }
138
    if (chargetype == 1)
139
    {
140
        if (chargecon == 2)
141
        {
142
            dashstate = 2;
143
            dashing = 1;
144
            if (!controller.scrolling)
145
            {
146
                with (obj_writer)
147
                    instance_destroy();
148
                snd_play(snd_explosion_mmx3, 1);
149
                sprite_index = spr_orangeheart_white;
150
                image_angle = 0;
151
                image_blend = c_orange;
152
                controller.scrolling = true;
153
                controller.fakecamxspeedbase_original = -11;
154
                controller.fakecamxspeedbase = -11;
155
                canmovevertically = true;
156
                drawafterimages = true;
157
                with (obj_marker)
158
                {
159
                    if (sprite_index == spr_battlebg_tiny)
160
                    {
161
                        image_index = 1;
162
                        orangeheartControlled = true;
163
                        if (!instance_exists(obj_darkener))
164
                            instance_create(0, 0, obj_darkener);
165
                    }
166
                }
167
            }
168
            controller.fakecamxspeedadditional = -(2 + chargetimer);
169
            chargecon = 3;
170
        }
171
        if (chargecon == 3)
172
        {
173
            var dashtarg = 4 + chargetimer;
174
            dashtimer++;
175
            controller.fakecamxspeedadditional = lerp_ease_out(controller.fakecamxspeedadditional, 0, dashtimer / dashtarg, 0);
176
            if (controller.fakecamxspeedadditional >= -1)
177
            {
178
                heartcooldown = 2;
179
                chargetimer = 0;
180
                dashstate = 0;
181
                controller.fakecamxspeedadditional = 0;
182
                chargecon = 0;
183
                dashtimer = 0;
184
                stopdashbuffer = 4;
185
            }
186
        }
187
        if (chargecon == 4 || chargecon == 5)
188
        {
189
        }
190
    }
191
    if (dashstate == 0 || chargecon == 0 || chargecon == 1)
192
    {
193
        stopdashbuffer--;
194
        if (stopdashbuffer <= 0)
195
            dashing = 0;
196
    }
197
}
198
else
199
{
200
    hitstop--;
201
}