Undertale Yellow script viewer

← back to main script listing

gml_Object_obj_martlet_follower_Step_0

(view raw script w/o annotations or w/e)
1
if (global.player_sprites == "dunescave")
2
{
3
    palette_index = 4;
4
    shader_on = true;
5
}
6
else if (global.player_sprites == "normal")
7
{
8
    shader_on = false;
9
}
10
if (obj_pl.yprevious != obj_pl.y || obj_pl.xprevious != obj_pl.x)
11
{
12
    npc_move_current = clamp(npc_move_current + 1, 0, npc_move_delay_max);
13
    x_new[npc_move_current] = obj_pl.x;
14
    y_new[npc_move_current] = obj_pl.y;
15
    dir_new[npc_move_current] = obj_pl.direction;
16
    if (abs(obj_pl.yprevious - obj_pl.y) >= 5 || abs(obj_pl.xprevious - obj_pl.x) >= 5)
17
        sprinting_new[npc_move_current] = true;
18
    else
19
        sprinting_new[npc_move_current] = false;
20
}
21
if (npc_move_current >= npc_move_delay_max)
22
{
23
    npc_move_current = clamp(npc_move_current - 1, 0, npc_move_delay_max);
24
    x = x_new[1];
25
    y = y_new[1];
26
    follower_idle = false;
27
    switch (dir_new[1])
28
    {
29
        case 0:
30
            if (sprinting_new[1] == true)
31
                sprite_index = right_sprite_run;
32
            else
33
                sprite_index = right_sprite;
34
            break;
35
        case 90:
36
            if (sprinting_new[1] == true)
37
                sprite_index = up_sprite_run;
38
            else
39
                sprite_index = up_sprite;
40
            break;
41
        case 180:
42
            if (sprinting_new[1] == true)
43
                sprite_index = left_sprite_run;
44
            else
45
                sprite_index = left_sprite;
46
            break;
47
        case 270:
48
            if (sprinting_new[1] == true)
49
                sprite_index = down_sprite_run;
50
            else
51
                sprite_index = down_sprite;
52
            break;
53
    }
54
    image_speed = 0.2;
55
    if (sprinting_new[1] == true)
56
        image_speed = 0.3;
57
    for (var i = 0; i < npc_move_delay_max; i++)
58
    {
59
        x_new[i] = x_new[i + 1];
60
        y_new[i] = y_new[i + 1];
61
        dir_new[i] = dir_new[i + 1];
62
        sprinting_new[i] = sprinting_new[i + 1];
63
    }
64
}
65
else
66
{
67
    follower_idle = true;
68
    switch (dir_new[1])
69
    {
70
        case 0:
71
            sprite_index = right_sprite_idle;
72
            break;
73
        case 90:
74
            sprite_index = up_sprite_idle;
75
            break;
76
        case 180:
77
            sprite_index = left_sprite_idle;
78
            break;
79
        case 270:
80
            sprite_index = down_sprite_idle;
81
            break;
82
    }
83
}
84
if (npc_reset == true)
85
{
86
    event_perform(ev_create, 0);
87
    var player_distance = point_distance(x, y, obj_pl.x, obj_pl.y) / 10;
88
    player_distance = clamp(player_distance, 1, 999);
89
    for (var i = npc_move_delay_max; i > 0; i--)
90
    {
91
        x_new[i] = x + (sign(obj_pl.x - x) * (i * player_distance));
92
        y_new[i] = y + (sign(obj_pl.y - y) * (i * player_distance));
93
        if (point_distance(x, y, x_new[npc_move_delay_max], y) > point_distance(x, y, x, y_new[npc_move_delay_max]))
94
        {
95
            if (x_new[npc_move_delay_max] > x)
96
                dir_new[i] = 0;
97
            else
98
                dir_new[i] = 180;
99
        }
100
        else if (y_new[npc_move_delay_max] > y)
101
        {
102
            dir_new[i] = 270;
103
        }
104
        else
105
        {
106
            dir_new[i] = 90;
107
        }
108
        npc_move_current += 1;
109
    }
110
    npc_reset = false;
111
}
112
if (follower_idle == true)
113
{
114
    if (instance_exists(obj_dialogue) && is_talking == true)
115
    {
116
        if (obj_dialogue.cutoff == string_length(obj_dialogue.message[obj_dialogue.message_current]))
117
        {
118
            image_speed = 0;
119
            image_index = 0;
120
        }
121
        else
122
        {
123
            image_speed = 0.2;
124
        }
125
    }
126
    else
127
    {
128
        image_speed = 0;
129
        image_index = 0;
130
        is_talking = false;
131
    }
132
}
133
if (sprites_water_override == true)
134
{
135
    up_sprite = 2012;
136
    right_sprite = 1048;
137
    down_sprite = 3578;
138
    left_sprite = 3373;
139
    up_sprite_idle = 543;
140
    right_sprite_idle = 2036;
141
    down_sprite_idle = 3610;
142
    left_sprite_idle = 3453;
143
    up_sprite_run = 2676;
144
    right_sprite_run = 2292;
145
    down_sprite_run = 2840;
146
    left_sprite_run = 2797;
147
}
148
else if (sprites_water_override == 2)
149
{
150
    sprites_water_override = 0;
151
    up_sprite = 273;
152
    right_sprite = 270;
153
    down_sprite = 274;
154
    left_sprite = 272;
155
    up_sprite_idle = 262;
156
    right_sprite_idle = 263;
157
    down_sprite_idle = 265;
158
    left_sprite_idle = 268;
159
    up_sprite_run = 277;
160
    right_sprite_run = 278;
161
    down_sprite_run = 280;
162
    left_sprite_run = 279;
163
}