Undertale Yellow script viewer

← back to main script listing

gml_Object_obj_battle_enemy_attack_mecha_frog_hand_Step_0

(view raw script w/o annotations or w/e)
1
if (live_call())
2
    return global.live_result;
3
var soul = 2980;
4
switch (state)
5
{
6
    case "idle":
7
        sin_deg += sin_deg_inc;
8
        if (sin_deg >= 360)
9
            sin_deg -= 1;
10
        y = ystart + (sin(degtorad(sin_deg)) * y_offset);
11
        if (active == true)
12
        {
13
            timer -= 1;
14
            if (timer <= 0)
15
            {
16
                if (attack_counter < 2)
17
                {
18
                    with (obj_battle_enemy_attack_mecha_frog_hand)
19
                        attack_counter += 1;
20
                    state_switch("attack");
21
                }
22
                else
23
                {
24
                    state_switch("punch");
25
                    attack_counter = 0;
26
                }
27
                active = false;
28
            }
29
        }
30
        break;
31
    case "attack":
32
        switch (scene)
33
        {
34
            case 0:
35
                x = lerp(x, xstart - (10 * image_xscale), 0.15);
36
                y = lerp(y, ystart - 20, 0.15);
37
                image_angle = lerp(image_angle, 30 * image_xscale, 0.25);
38
                cutscene_wait(0.5);
39
                break;
40
            case 1:
41
                hspeed = 5 * image_xscale;
42
                vspeed = 8;
43
                if (bbox_bottom >= (battle_box.bbox_bottom - 4))
44
                {
45
                    hspeed = 0;
46
                    vspeed = 0;
47
                    scene++;
48
                    audio_play_sound(snd_undertale_impact, 1, 0);
49
                    scr_screenshake_battle
scr_screenshake_battle

function scr_screenshake_battle() { instance_destroy(obj_screenshake_battle); var screenshake = instance_create(0, 0, obj_screenshake_battle); battle_screenshake_duration = argument[0]; battle_screenshake_intensity = argument[1]; battle_screenshake_dec = battle_screenshake_intensity / battle_screenshake_duration; }
(6, 2);
50
                    var shockwave = instance_create_depth(x, battle_box.bbox_bottom - 4, -100, obj_battle_enemy_attack_mecha_frog_shockwave);
51
                    shockwave.hspeed = image_xscale * shockwave_speed;
52
                }
53
                break;
54
            case 2:
55
                x = lerp(x, xstart, 0.2);
56
                y = lerp(y, ystart, 0.2);
57
                image_angle = lerp(image_angle, 0, 0.2);
58
                if (abs(image_angle - 0) < 0.1 && abs(x - xstart) < 0.1 && abs(y - ystart) < 0.1)
59
                    scene++;
60
                break;
61
            case 3:
62
                state_switch("idle");
63
                break;
64
        }
65
        break;
66
    case "punch":
67
        if (scene < 2)
68
        {
69
            if (sprite_index != spr_bigfrog_fist_2)
70
                sprite_index = spr_bigfrog_fist_2;
71
            direction = point_direction(x, y, soul.x, soul.y);
72
            image_angle = direction;
73
            if (image_xscale == -1)
74
                image_angle -= 180;
75
        }
76
        x_target = battle_box.x - (200 * image_xscale);
77
        y_target = battle_box.bbox_top;
78
        switch (scene)
79
        {
80
            case 0:
81
                x = lerp(x, x_target, 0.15);
82
                y = lerp(y, y_target, 0.15);
83
                sprite_index = spr_bigfrog_fist_2;
84
                cutscene_wait(0.5);
85
                break;
86
            case 1:
87
                x = x_target + irandom_range(-2, 2);
88
                y = y_target + irandom_range(-2, 2);
89
                if (cutscene_wait(1))
90
                {
91
                    sprite_index = spr_bigfrog_fast_fist_real;
92
                    image_speed = 0;
93
                    speed = 20;
94
                }
95
                break;
96
            case 2:
97
                if ((image_xscale == 1 && bbox_right >= (battle_box.bbox_right - 4)) || (image_xscale == -1 && bbox_left <= (battle_box.bbox_left + 4)))
98
                {
99
                    image_speed = 1;
100
                    audio_play_sound(snd_undertale_impact, 1, 0);
101
                    scr_screenshake_battle
scr_screenshake_battle

function scr_screenshake_battle() { instance_destroy(obj_screenshake_battle); var screenshake = instance_create(0, 0, obj_screenshake_battle); battle_screenshake_duration = argument[0]; battle_screenshake_intensity = argument[1]; battle_screenshake_dec = battle_screenshake_intensity / battle_screenshake_duration; }
(6, 2);
102
                    speed = 0;
103
                    scene++;
104
                }
105
                break;
106
            case 3:
107
                if (image_index >= (image_number - 1) && sprite_index != spr_bigfrog_fist_1)
108
                {
109
                    sprite_index = spr_bigfrog_fist_1;
110
                    image_speed = 0;
111
                    image_index = 0;
112
                    image_angle = 0;
113
                }
114
                x = lerp(x, xstart, 0.25);
115
                y = lerp(y, ystart, 0.25);
116
                if (abs(x - xstart) < 0.1 && abs(y - ystart) < 0.1)
117
                    scene++;
118
                break;
119
            case 4:
120
                state_switch("idle");
121
                break;
122
        }
123
        break;
124
}
125
126
function state_switch(arg0)
127
{
128
    state = arg0;
129
    scene = 0;
130
    timer = timer_max;
131
    if (arg0 == "idle")
132
    {
133
        with (obj_battle_enemy_attack_mecha_frog_creator)
134
            hand_reroll = true;
135
        obj_battle_enemy_attack_mecha_frog_cockpit.hit_noloop = false;
136
    }
137
}