Undertale Yellow script viewer

← back to main script listing

gml_Object_obj_npc_complex_cursor_Step_0

(view raw script w/o annotations or w/e)
1
depth = -y;
2
interact = 0;
3
if (keyboard_multicheck_pressed(0) && scr_interact
scr_interact

function scr_interact() { if (distance_to_object(obj_pl) < 20 && obj_pl.state == scr_normal_state) { var pl_dir = obj_pl.direction; var pl_x = 0; var pl_y = 0; var check_distance_x = 0; var check_distance_y = 0; switch (pl_dir) { case 0: pl_x = obj_pl.bbox_right; pl_y = obj_pl.bbox_top + 1; check_distance_x = 20; break; case 180: pl_x = obj_pl.bbox_left; pl_y = obj_pl.bbox_top + 1; check_distance_x = -20; break; case 90: pl_x = obj_pl.x; pl_y = obj_pl.bbox_top; check_distance_y = -20; break; case 270: pl_x = obj_pl.x; pl_y = obj_pl.bbox_bottom; check_distance_y = 20; break; } if (collision_line_first(pl_x, pl_y, pl_x + check_distance_x, pl_y + check_distance_y, id, false, false)) return true; } }
() == true)
4
{
5
    if (global.hotland_flag[1] > 0 && global.party_member != -4)
6
    {
7
        scr_text
scr_text

function scr_text() { if (!instance_exists(obj_dialogue)) msg = instance_create(x, y, obj_dialogue); }
();
8
        with (msg)
9
        {
10
            sndfnt = 102;
11
            message[0] = "* (We need to stay#  focused.)";
12
            message[1] = "* (Let's not bother#  others with our#  problems.)";
13
            prt[0] = 321;
14
            prt[1] = 329;
15
        }
16
    }
17
    else
18
    {
19
        interact = 1;
20
    }
21
}
22
if (sprite_index == spr_hotland_mr_cursor)
23
{
24
    if (instance_exists(obj_dialogue) && is_talking == true)
25
    {
26
        if (obj_dialogue.cutoff == string_length(obj_dialogue.message[obj_dialogue.message_current]))
27
        {
28
            image_speed = 0;
29
            image_index = 0;
30
        }
31
        else
32
        {
33
            image_speed = 0.2;
34
        }
35
    }
36
    else
37
    {
38
        image_speed = 0;
39
        is_talking = false;
40
    }
41
}
42
if (ds_map_find_value(global.npc_map, npc_id) != npc_flag)
43
    ds_map_replace(global.npc_map, npc_id, npc_flag);
44
switch (scene)
45
{
46
    case 0:
47
        if (interact)
48
            scene = 1;
49
        break;
50
    case 1:
51
        is_talking = 1;
52
        switch (npc_flag)
53
        {
54
            case 0:
55
                scr_cutscene_start
scr_cutscene_start

function scr_cutscene_start() { global.cutscene = true; obj_pl.state = scr_frozen_state; obj_pl.image_index = 0; obj_pl.image_speed = 0; }
();
56
                cutscene_dialogue();
57
                with (msg)
58
                {
59
                    message[0] = "* I'm usually a chill dude but#  today has not been my day. Let#  me tell you:";
60
                    message[1] = "* First, the attendant needs my#  name so she can save me a room.";
61
                    message[2] = "* \"Mr. Cursor,\" I reply. She#  steps back and goes \"Like some#  kind of warlock?\"";
62
                    message[3] = "* I say \"What? Warlock?\" with#  visible confusion.";
63
                    message[4] = "* \"I like to roll that ten-sided#  die as much as the next guy but#  no, I'm Mr. CURSOR.\"";
64
                    message[5] = "* Turns out, she thought I said#  \"Curser\" like I was gonna hex#  the joint!";
65
                    message[6] = "* Really didn't need her input#  on my iconic name but whatever.#  ";
66
                    message[7] = "* So then, I walk over to the#  elevator to head back to New#  Home.";
67
                    message[8] = "* It's busy, so I wait, and I#  wait, and I wait, and LITERALLY#  THREE HOURS PASS!";
68
                    message[9] = "* Next thing I know, the#  elevator opens but OOPS!!";
69
                    message[10] = "* Mr. Cursor has a tendency to#  timeout and fall asleep every#  five minutes!! ";
70
                    message[11] = "* SO I MISSED MY ONE CHANCE!!!";
71
                    message[12] = "* And now I'm stuck here and#  don't know WHEN I'LL EVER GET#  TO";
72
                    if (message_current == 12)
73
                    {
74
                        skippable = false;
75
                        message_timer = 15;
76
                    }
77
                }
78
                break;
79
            case 1:
80
                scene = 0;
81
                scr_text
scr_text

function scr_text() { if (!instance_exists(obj_dialogue)) msg = instance_create(x, y, obj_dialogue); }
();
82
                with (msg)
83
                {
84
                    message[0] = "* Sorry about that... I have to#  slow down and take a breather#  when things get heated.";
85
                    message[1] = "* What was I talking about?";
86
                    message[2] = "* Ugh, my memory sucks.";
87
                }
88
                other.npc_flag += 1;
89
                break;
90
            case 2:
91
                scene = 0;
92
                scr_text
scr_text

function scr_text() { if (!instance_exists(obj_dialogue)) msg = instance_create(x, y, obj_dialogue); }
();
93
                with (msg)
94
                {
95
                    message[0] = "* Yo, I monitored the situation#  further and it just clicked#  with me!";
96
                    message[1] = "* What if I tried to ram my way#  into the elevator by force?";
97
                    message[2] = "* Like just charge straight into#  the doors!";
98
                    message[3] = "* Eh, well... on second thought,#  if I tried that I might slip a#  disk...";
99
                }
100
                other.npc_flag += 1;
101
                break;
102
            case 3:
103
                scene = 0;
104
                scr_text
scr_text

function scr_text() { if (!instance_exists(obj_dialogue)) msg = instance_create(x, y, obj_dialogue); }
();
105
                with (msg)
106
                    message[0] = "* You think this place has free#  Wi-Fi? I'm uh, pretty bored.";
107
                break;
108
        }
109
        break;
110
    case 2:
111
        is_talking = false;
112
        audio_sound_gain(obj_radio.current_song, 0, 500);
113
        sprite_index = spr_hotland_mr_cursor_loading;
114
        image_speed = 1;
115
        scene++;
116
        break;
117
    case 3:
118
        cutscene_wait(2.5);
119
        break;
120
    case 4:
121
        audio_sound_gain(obj_radio.current_song, 1, 500);
122
        sprite_index = spr_hotland_mr_cursor;
123
        image_index = 0;
124
        image_speed = 0;
125
        scene++;
126
        break;
127
    case 5:
128
        cutscene_dialogue();
129
        is_talking = true;
130
        with (msg)
131
            message[0] = "* GO HOME!!!";
132
        break;
133
    case 6:
134
        scr_cutscene_end
scr_cutscene_end

function scr_cutscene_end() { global.cutscene = false; obj_pl.alarm[0] = 1; }
();
135
        npc_flag += 1;
136
        scene = 0;
137
        break;
138
}