Undertale Yellow script viewer

← back to main script listing

gml_Object_obj_ceroba_attack_fire_mask_Step_0

(view raw script w/o annotations or w/e)
1
if (live_call())
2
    return global.live_result;
3
if (instance_exists(obj_battle_enemy_attack_ceroba_phase_2_mask) && obj_battle_enemy_attack_ceroba_phase_2_mask.attack_stop == true)
4
    scene = 8;
5
var spawn_delay = 0;
6
var start_delay = 0.5;
7
var fire_count = 7;
8
var fire_distance = 60;
9
var moving_time = 1;
10
var pause_time = 0.75;
11
if (global.hotland_flag[2] == 2)
12
{
13
    pause_time = 0.5;
14
    fire_distance = 75;
15
}
16
if (global.hotland_flag[2] == 3)
17
{
18
    pause_time = 0.2;
19
    fire_count = 9;
20
    fire_distance = 75;
21
}
22
scr_enemy_attack_bullet_hit
scr_enemy_attack_bullet_hit

function scr_enemy_attack_bullet_hit() { if (live_call()) return global.live_result; if (variable_instance_exists(id, "bullet_hit_draw_timer")) { if (bullet_hit_draw_timer > 0) bullet_hit_draw_timer -= 1; } var collider_id = instance_place(x, y, obj_heart_yellow_shot); if (collider_id != -4) { var collider_object_index = collider_id.object_index; instance_create_depth(collider_id.x, collider_id.bbox_top, -999, obj_heart_yellow_shot_destroy); if (collider_object_index == 690) { if (object_index == obj_ceroba_phase_2_bell) instance_destroy(collider_id); if (variable_instance_exists(id, "collider_id_last") && collider_id_last == collider_id) exit; if (collider_object_index == 690) collider_id_last = collider_id; } else if (collider_object_index == 2561) { if (variable_instance_exists(id, "collider_id_last") && collider_id_last == collider_id) exit; collider_id_last = collider_id; } else if (!variable_instance_exists(id, "collider_id_last") || collider_id != collider_id_last) { collider_id.alarm[0] = 1; collider_id.image_alpha = 0; collider_id_last = collider_id; } audio_play_sound(snd_arc_hit, 0.1, 0); if (variable_instance_exists(id, "bullet_hit_points")) { bullet_hit_draw_timer = 5; if (collider_object_index == 690) bullet_hit_points -= 3; else bullet_hit_points -= 1; if (bullet_hit_points <= 0) bullet_destroy_self = true; } return true; } }
();
23
if (bullet_destroy_self)
24
{
25
    instance_destroy();
26
    instance_create_depth(x, y, depth, obj_ceroba_attack_fire_mask_destroy);
27
}
28
switch (scene)
29
{
30
    case 0:
31
        image_alpha += 0.1;
32
        if (global.hotland_flag[2] >= 2)
33
            image_alpha += 0.15;
34
        if (image_alpha >= 1)
35
        {
36
            image_alpha = 1;
37
            scene++;
38
        }
39
        break;
40
    case 1:
41
        cutscene_wait(spawn_delay);
42
        break;
43
    case 2:
44
        var i = 0;
45
        while (i < 360)
46
        {
47
            var xx = x + lengthdir_x(fire_distance, i);
48
            var yy = y + lengthdir_y(fire_distance, i);
49
            fireball_array[fireball_current] = instance_create_depth(xx, yy, -100, obj_ceroba_attack_fireball);
50
            fireball_array[fireball_current].alarm[0] = 1 + (fireball_current * 3);
51
            if (global.hotland_flag[2] >= 2)
52
                fireball_array[fireball_current].alarm[0] = 1 + (fireball_current * 1);
53
            fireball_dir[fireball_current] = i;
54
            fireball_current += 1;
55
            i += (360 / fire_count);
56
        }
57
        scene++;
58
        break;
59
    case 3:
60
        for (var i = 0; i < array_length(fireball_array); i++)
61
        {
62
            if (instance_exists(fireball_array[i]))
63
            {
64
                if (fireball_array[i].image_alpha < 1)
65
                    exit;
66
            }
67
        }
68
        cutscene_wait(start_delay);
69
        break;
70
    case 4:
71
        x_target = obj_heart_battle_fighting_parent.x;
72
        y_target = obj_heart_battle_fighting_parent.y;
73
        direction = point_direction(x, y, x_target, y_target);
74
        scene++;
75
        break;
76
    case 5:
77
        multiplier = lerp(multiplier, 1, 0.15);
78
        cutscene_wait(moving_time);
79
        break;
80
    case 6:
81
        multiplier = lerp(multiplier, 0, 0.15);
82
        cutscene_wait(pause_time);
83
        break;
84
    case 7:
85
        if (attack_count > 0)
86
        {
87
            scene = 4;
88
            attack_count -= 1;
89
        }
90
        else
91
        {
92
            scene++;
93
        }
94
        break;
95
    case 8:
96
        image_alpha -= 0.2;
97
        for (var i = 0; i < array_length(fireball_array); i++)
98
        {
99
            if (instance_exists(fireball_array[i]))
100
                fireball_array[i].image_alpha = image_alpha;
101
        }
102
        if (image_alpha < 0.2)
103
        {
104
            instance_destroy();
105
            exit;
106
        }
107
        break;
108
}
109
if (scene >= 4)
110
{
111
    for (var i = 0; i < array_length(fireball_array); i++)
112
    {
113
        if (instance_exists(fireball_array[i]))
114
        {
115
            var xx = x + lengthdir_x(fire_distance, fireball_dir[i] + dir_offset);
116
            var yy = y + lengthdir_y(fire_distance, fireball_dir[i] + dir_offset);
117
            fireball_array[i].x = xx;
118
            fireball_array[i].y = yy;
119
        }
120
    }
121
}
122
speed = move_speed_max * multiplier;
123
spin_speed = spin_speed_max * multiplier;
124
dir_offset -= spin_speed;