Undertale Yellow script viewer

← back to main script listing

gml_Object_obj_verlet_rope_generator_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_verlet_rope_generator))
4
    image_alpha = obj_verlet_rope_generator.image_alpha;
5
scr_verlet_updatepoints
scr_verlet_updatepoints

function scr_verlet_updatepoints(arg0, arg1, arg2) { for (var i = 0; i < array_length(arg0); i++) { var p = array_get(arg0, i); if (!array_get(p, 4)) { var vx = (array_get(p, 0) - array_get(p, 2)) * arg1; var vy = (array_get(p, 1) - array_get(p, 3)) * arg1; array_set(p, 2, array_get(p, 0)); array_set(p, 3, array_get(p, 1)); array_set(p, 0, array_get(p, 0) + vx); array_set(p, 1, array_get(p, 1) + vy); array_set(p, 1, array_get(p, 1) + arg2); } } }
(points, p_friction, p_gravity);
6
for (var i = 0; i < precision; i++)
7
    scr_verlet_updatesticks
scr_verlet_updatesticks

function scr_verlet_updatesticks(arg0) { for (var i = 0; i < array_length(arg0); i++) { var s = array_get(arg0, i); var dx = array_get(array_get(s, 1), 0) - array_get(array_get(s, 0), 0); var dy = array_get(array_get(s, 1), 1) - array_get(array_get(s, 0), 1); var distance = sqrt((dx * dx) + (dy * dy)); var difference = array_get(s, 2) - distance; var percent = difference / distance / 2; var offsetX = dx * percent; var offsetY = dy * percent; if (!array_get(array_get(s, 0), 4)) { array_set(array_get(s, 0), 0, array_get(array_get(s, 0), 0) - offsetX); array_set(array_get(s, 0), 1, array_get(array_get(s, 0), 1) - offsetY); } if (!array_get(array_get(s, 1), 4)) { array_set(array_get(s, 1), 0, array_get(array_get(s, 1), 0) + offsetX); array_set(array_get(s, 1), 1, array_get(array_get(s, 1), 1) + offsetY); } } }
(sticks);
8
if (can_move)
9
{
10
    var wind_inc = 0.003;
11
    wind_power = clamp(wind_power + (wind_inc * wind_direction), -wind_power_max, wind_power_max);
12
    if (wind_direction_change_countdown > 0)
13
    {
14
        if (abs(wind_power) == wind_power_max)
15
        {
16
            if (!alarm[0])
17
                alarm[0] = 15;
gml_Object_obj_verlet_rope_generator_Alarm_0.gml

if (live_call()) return global.live_result; if (sway == 0) sway = sign(wind_power) * 0.03; else sway = 0; alarm[0] = 15;
18
            wind_direction_change_countdown--;
19
        }
20
        else
21
        {
22
            alarm[0] = -1;
gml_Object_obj_verlet_rope_generator_Alarm_0.gml

if (live_call()) return global.live_result; if (sway == 0) sway = sign(wind_power) * 0.03; else sway = 0; alarm[0] = 15;
23
        }
24
    }
25
    else
26
    {
27
        wind_direction_change_countdown = wind_direction_change_countdown_max;
28
        wind_direction *= -1;
29
    }
30
    for (var i = 0; i < r_segments; i++)
31
        points[i][0] += (i * (wind_power + sway));
32
}
33
var col = false;
34
for (var i = 0; i < array_length(points); i++)
35
{
36
    var p = points[i];
37
    if (!p[4])
38
    {
39
        if (position_meeting(p[0], p[1], obj_heart_battle_fighting_parent))
40
            col = true;
41
    }
42
}
43
if (col == true && obj_heart_battle_fighting_parent.vulnerable == true && obj_heart_battle_fighting_parent.is_dashing == false)
44
{
45
    var damage = (global.enemy_attack_stat - global.player_armor_defense - global.player_armor_modifier_defense - global.player_defense) + 10;
46
    with (obj_heart_battle_fighting_parent)
47
    {
48
        if (global.current_pp_self > 0)
49
        {
50
            instance_create(x, y, obj_heart_battle_effect_expand);
51
            for (var i = 0; i < 5; i++)
52
                instance_create(x, y, obj_heart_battle_effect_shard);
53
            global.current_pp_self -= 1;
54
            audio_play_sound(snd_mirrorbreak1, 20, false);
55
        }
56
        else
57
        {
58
            global.current_hp_self -= damage;
59
            audio_play_sound(snd_hurt, 1, 0);
60
        }
61
        vulnerable = false;
62
        global.hit_self = true;
63
        alarm[0] = global.invulnerability_self;
gml_Object_obj_verlet_rope_generator_Alarm_0.gml

if (live_call()) return global.live_result; if (sway == 0) sway = sign(wind_power) * 0.03; else sway = 0; alarm[0] = 15;
64
    }
65
}