Undertale Yellow script viewer

← back to main script listing

gml_Object_obj_heart_battle_fighting_yellow_final_Step_0

(view raw script w/o annotations or w/e)
1
if (live_call())
2
    return global.live_result;
3
script_execute(scr_controls_battle_heart_red);
4
charge_percentage = charge_time / charge_time_max;
5
x_previous = x;
6
y_previous = y;
7
move_x = key_left + key_right;
8
move_y = key_down + key_up;
9
hsp = move_x * walk_speed;
10
vsp = move_y * walk_speed;
11
if (is_dashing)
12
{
13
    var ghost = instance_create_depth(x, y, depth, obj_dash_ghost);
14
    ghost.sprite_index = base_sprite;
15
    hsp = move_x_dash * dash_speed;
16
    vsp = move_y_dash * dash_speed;
17
    dash_timer--;
18
    if (dash_timer <= 0)
19
        is_dashing = false;
20
}
21
else
22
{
23
    dash_timer = dash_distance;
24
}
25
hsp += hsp_factor;
26
vsp += vsp_factor;
27
var left_boundary, right_boundary, top_boundary, bottom_boundary;
28
if (room == rm_battle_flowey_phase_2)
29
{
30
    right_boundary = room_width;
31
    left_boundary = 0;
32
    top_boundary = 260;
33
    bottom_boundary = room_height;
34
}
35
else
36
{
37
    right_boundary = obj_dialogue_box_battle_transformation_any.bbox_right - 4;
38
    left_boundary = obj_dialogue_box_battle_transformation_any.bbox_left + 4;
39
    top_boundary = obj_dialogue_box_battle_transformation_any.bbox_top + 4;
40
    bottom_boundary = obj_dialogue_box_battle_transformation_any.bbox_bottom - 4;
41
}
42
if (sign(hsp) == -1 && (bbox_left + hsp) <= left_boundary)
43
{
44
    while ((bbox_left + sign(hsp)) > left_boundary)
45
        x += sign(hsp);
46
    is_dashing = false;
47
    hsp = 0;
48
}
49
else if (sign(hsp) == 1 && (bbox_right + hsp) >= right_boundary)
50
{
51
    while ((bbox_right + sign(hsp)) < right_boundary)
52
        x += sign(hsp);
53
    is_dashing = false;
54
    hsp = 0;
55
}
56
x += hsp;
57
if (sign(vsp) == -1 && (bbox_top + vsp) <= top_boundary)
58
{
59
    while ((bbox_top + sign(vsp)) > top_boundary)
60
        y += sign(vsp);
61
    is_dashing = false;
62
    vsp = 0;
63
}
64
else if (sign(vsp) == 1 && (bbox_bottom + vsp) >= bottom_boundary)
65
{
66
    while ((bbox_bottom + sign(vsp)) < bottom_boundary)
67
        y += sign(vsp);
68
    is_dashing = false;
69
    vsp = 0;
70
}
71
y += vsp;
72
var collider_id = instance_place(x, y + vsp, obj_martlet_attack_glass);
73
if (collider_id != -4)
74
{
75
    if (vsp != 0)
76
    {
77
    }
78
}
79
obj_heart_red_hitbox.x = x;
80
obj_heart_red_hitbox.y = y;
81
if (instance_exists(obj_heart_battle_effect_glow))
82
{
83
    obj_heart_battle_effect_glow.x = x;
84
    obj_heart_battle_effect_glow.y = y;
85
}
86
if (moveable == true && global.current_sp_self > 0)
87
{
88
    var can_trail = false;
89
    trail_cc_current += 1;
90
    if (trail_cc_current >= trail_cc_max)
91
    {
92
        can_trail = true;
93
        trail_cc_current = 0;
94
    }
95
    if (can_trail == true)
96
    {
97
        ds_list_add(x_list, x);
98
        ds_list_add(y_list, y);
99
        while (ds_list_size(x_list) > max_points_trail)
100
        {
101
            ds_list_delete(x_list, 0);
102
            ds_list_delete(y_list, 0);
103
        }
104
    }
105
}
106
else if (ds_list_size(x_list) > 0)
107
{
108
    ds_list_clear(x_list);
109
}
110
if (room == rm_battle_flowey_phase_2)
111
{
112
    if (sprite_index == spr_heart_yellow_down)
113
    {
114
        base_sprite = 1661;
115
        var dash_disable = true;
116
        if (instance_exists(obj_flowey_battle_final))
117
        {
118
            for (var i = 0; i < array_length(obj_flowey_battle_final.petal_alive); i++)
119
            {
120
                if (obj_flowey_battle_final.petal_alive[i] == false)
121
                    dash_disable = false;
122
            }
123
        }
124
        if (dash_disable == true)
125
        {
126
            is_dashing = false;
127
            can_dash = false;
128
        }
129
    }
130
    else
131
    {
132
        base_sprite = 1662;
133
    }
134
}
135
if ((abs(move_x) + abs(move_y)) == 0)
136
{
137
    if (keyboard_multicheck_pressed(1))
138
        dash_buffered = true;
139
    if (keyboard_multicheck_released(1) && dash_buffered == true)
140
        dash_buffered = false;
141
}
142
if ((keyboard_multicheck_pressed(1) || dash_buffered) && moveable == true && can_dash == true && (abs(move_x) + abs(move_y)) != 0)
143
{
144
    audio_play_sound(snd_yellow_soul_dash, 1, 0);
145
    dash_overlay = 1.1;
146
    move_x_dash = move_x;
147
    move_y_dash = move_y;
148
    dash_grace = dash_grace_max;
149
    is_dashing = true;
150
    dash_buffered = false;
151
    can_dash = false;
152
}
153
if (!can_dash && !is_dashing)
154
{
155
    if (dash_grace > 0)
156
        dash_grace--;
157
    if (dash_delay > 0)
158
    {
159
        dash_delay--;
160
    }
161
    else
162
    {
163
        dash_grace = 0;
164
        dash_delay = dash_delay_max;
165
        can_dash = true;
166
    }
167
}
168
if (keyboard_multicheck_released(1) && is_dashing && can_cancel_dash)
169
    is_dashing = false;
170
if (dash_overlay > 0)
171
    dash_overlay -= 0.1;
172
shoot_delay = 10;
173
if (shoot_buffer <= 0)
174
{
175
    if (keyboard_multicheck_pressed(0))
176
        shoot_buffer = 10;
177
}
178
else
179
{
180
    shoot_buffer--;
181
}
182
var turn_angle_target_final = turn_angle_target - 90;
183
switch (turn_state)
184
{
185
    case 0:
186
        if (image_angle != turn_angle_target_final)
187
            turn_state += 1;
188
        break;
189
    case 1:
190
        image_xscale += 0.25;
191
        image_yscale += 0.25;
192
        if (image_xscale > 1.5)
193
            turn_state += 1;
194
        break;
195
    case 2:
196
        image_angle += (angle_difference(turn_angle_target_final, image_angle) * 0.2);
197
        if (image_xscale > 1)
198
            image_xscale -= 0.2;
199
        else
200
            image_xscale = 1;
201
        if (angle_difference(image_angle, turn_angle_target_final) < 1)
202
        {
203
            image_angle = turn_angle_target_final;
204
            image_xscale = 1;
205
            turn_state = 0;
206
            show_debug_message("LOCKED " + string(turn_angle_target_final));
207
        }
208
        image_yscale = image_xscale;
209
        break;
210
}
211
if (turn_state > 0)
212
{
213
    if (instance_exists(obj_heart_yellow_shot_blast))
214
    {
215
    }
216
}
217
if (instance_exists(obj_heart_yellow_shot_blast))
218
{
219
    can_shoot = false;
220
    alarm[1] = shoot_delay;
221
}
222
if (keyboard_multicheck_pressed(2) && global.option_autoshoot)
223
{
224
    if (global.autofire_on)
225
        global.autofire_on = false;
226
    else
227
        global.autofire_on = true;
228
}
229
if (global.option_autoshoot == false)
230
    global.autofire_on = false;
231
232
function fireCheck()
233
{
234
    if (global.autofire_on == true || (global.autofire_on == false && keyboard_multicheck_pressed(0)))
235
        return true;
236
    return false;
237
}
238
239
if ((fireCheck() || shoot_buffer > 0) && sprite_index != spr_heart_yellow_down && moveable == true && can_shoot == true && !blast_is_firing && !is_charging)
240
{
241
    shoot_buffer = 0;
242
    sprite_index = spr_heart_yellow_shoot;
243
    image_index = 0;
244
    image_speed = 1;
245
    var yy = y - 6;
246
    var xx = x + 0.5;
247
    if (image_angle == 90 || image_angle == 270)
248
    {
249
        yy = y;
250
        xx = x;
251
    }
252
    if (image_angle == 180)
253
        yy = y + 6;
254
    var shot = instance_create_depth(xx, yy, -10000, obj_heart_yellow_shot);
255
    shot.direction = image_angle + 90;
256
    shot.image_angle = image_angle;
257
    can_shoot = false;
258
    alarm[1] = shoot_delay;
259
}
260
if (keyboard_multicheck(0) && !is_charging && sprite_index != spr_heart_yellow_down && moveable == true && !blast_is_firing && can_charge == true)
261
{
262
    if (!alarm[2])
263
        alarm[2] = 7;
264
}
265
if (keyboard_multicheck_released(0) || keyboard_multicheck_pressed(2))
266
{
267
    alarm[2] = -1;
268
    if (is_charging == true)
269
    {
270
        is_charging = false;
271
        charge_time = charge_time_max;
272
        sprite_index = spr_heart_yellow_up;
273
        image_index = 0;
274
        image_speed = 0;
275
        if (is_charged == true)
276
        {
277
            if (charged_shot_type == 1)
278
            {
279
                var yy = y - 6;
280
                var xx = x + 0.5;
281
                if (image_angle == 90 || image_angle == 270)
282
                {
283
                    yy = y;
284
                    xx = x;
285
                }
286
                var shot_big = instance_create_depth(xx, yy, -10000, obj_heart_yellow_shot_big);
287
                shot_big.direction = image_angle + 90;
288
                shot_big.image_angle = image_angle;
289
                is_charged = false;
290
                can_shoot = false;
291
                alarm[1] = shoot_delay;
292
                sprite_index = spr_heart_yellow_shoot;
293
                image_index = 0;
294
                image_speed = 1;
295
            }
296
            else if (charged_shot_type == 2)
297
            {
298
                var shot_big = instance_create_depth(x, y, -10000, obj_heart_yellow_shot_blast);
299
                var image_angle_final = turn_angle_target_final;
300
                shot_big.direction = image_angle_final + 90;
301
                shot_big.image_angle = image_angle_final;
302
                is_charged = false;
303
                blast_is_firing = true;
304
                sprite_index = spr_heart_yellow_shoot;
305
                image_index = 0;
306
                image_speed = 0;
307
            }
308
        }
309
    }
310
}
311
if (is_charging)
312
{
313
    if (!audio_is_playing(snd_chargeshot_charge))
314
    {
315
        charge_sound = audio_play_sound(snd_chargeshot_charge, 1, 1);
316
        audio_sound_gain(charge_sound, 0.8, 0);
317
        audio_sound_pitch(charge_sound, 0.5);
318
    }
319
    if (charge_time > 0)
320
    {
321
        charge_time -= 1;
322
    }
323
    else if (!is_charged)
324
    {
325
        var ready_sound = audio_play_sound(snd_undertale_flash, 1, 0);
326
        audio_sound_gain(ready_sound, 0.5, 0);
327
        audio_sound_gain(charge_sound, 0, 1000);
328
        is_charged = true;
329
        sprite_index = spr_heart_yellow_ready;
330
        image_index = 0;
331
        image_speed = 1;
332
    }
333
}
334
else
335
{
336
    audio_stop_sound(charge_sound);
337
    is_charged = false;
338
    if (sprite_index == spr_heart_yellow_ready)
339
    {
340
        sprite_index = spr_heart_yellow_up;
341
        image_index = 0;
342
        image_speed = 0;
343
    }
344
}
345
if (audio_is_playing(charge_sound))
346
{
347
    var pitch_original = audio_sound_get_pitch(charge_sound);
348
    if (pitch_original < 0.99)
349
        audio_sound_pitch(charge_sound, 1 - (0.5 * charge_percentage));
350
    else
351
        audio_sound_pitch(charge_sound, 1);
352
}
353
if (blast_is_firing && !instance_exists(obj_heart_yellow_shot_blast))
354
{
355
    blast_is_firing = false;
356
    sprite_index = spr_heart_yellow_up;
357
    image_index = 0;
358
    image_speed = 0;
359
}
360
event_user(15);