Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_cloud_controller_new_Step_2

(view raw script w/o annotations or w/e)
1
if (!active)
2
{
3
    with (obj_cloud_render_new)
4
        verticalspeed = 0;
5
    exit;
6
}
7
var _hero_obj = 1198;
8
if (i_ex(obj_climb_kris))
9
    _hero_obj = 1164;
10
else
11
    global.inv--;
12
var hurt_distance = -15;
13
other.spd -= 0.2;
14
var dmg = damage;
15
if (i_ex(obj_cloud_render_new))
16
{
17
    with (obj_cloud_render_new)
18
    {
19
        verticalspeed = lerp(max(other.minspeed * other.speedmult, other.spd), other.maxspeed * other.speedmult, clamp(abs(other.y - _hero_obj.y) / 300, 0, 1));
20
        if ((abs(other.y - _hero_obj.y) / 300) > 1.5 && other.maxspeed != 0)
21
            verticalspeed = min(verticalspeed, -10 * other.speedmult);
22
        if (i_ex(obj_climb_kris) && (obj_climb_kris.jumpchargecon > 0 || obj_climb_kris.jumping) && verticalspeed >= (other.minspeed * 1.5))
23
        {
24
            slowtimer++;
25
            verticalspeed *= (1 - (clamp01(slowtimer / 30) * 0.5));
26
        }
27
        else
28
        {
29
            slowtimer = 0;
30
        }
31
        if (other.y <= other.miny)
32
            verticalspeed = 0;
33
        if (front)
34
        {
35
            other.y += verticalspeed;
36
            if (_hero_obj.y > (other.y + hurt_distance))
37
            {
38
                if (other.harmless == 1)
39
                {
40
                    snd_play(snd_hurt1);
41
                    other.harmless = 2;
42
                }
43
                else if (other.harmless == 0)
44
                {
45
                    if (global.inv < 0 && global.hp[global.char[0]] > 0)
46
                    {
47
                        other.spd = 10;
48
                        if (_hero_obj == 1164)
49
                        {
50
                            with (obj_climb_kris)
51
                            {
52
                                lethality_shield = true;
53
                                damagecon = 1;
54
                                damage = dmg;
55
                            }
56
                        }
57
                        with (other)
58
                            event_user(5);
59
                    }
60
                }
61
            }
62
        }
63
    }
64
}
65
var _center_y = cameray() + 200;
66
var _center_dist = clamp((y - _center_y) / 340, -1, 1);
67
y_scale = sin((abs(_center_dist) * pi) / 2) * sign(_center_dist) * 0.2;
68
cloud_angle += (0.2 * rotatespeed);
69
var _cnum = array_length(clouds);
70
for (var _c = 0; _c < _cnum; _c++)
71
{
72
    var _cloud = clouds[_c];
73
    _cloud.angle = _cloud.base_angle + cloud_angle;
74
    if (i_ex(obj_rotating_tower_controller_new))
75
        _cloud.angle -= (obj_rotating_tower_controller_new.tower_angle * 0.5) + (0.5 * obj_rotating_tower_controller_new.tower_angle_add);
76
    _cloud.z_depth = (((abs(angle_difference(_cloud.angle, -90)) / 180) * 2) - 1) * _cloud.dist;
77
    _cloud.x = lengthdir_x(1, _cloud.angle) * _cloud.dist;
78
    _cloud.x += 320;
79
    _cloud.y = lengthdir_y(1, _cloud.angle) * y_scale * (obj_cloud_render_new.surface_y_offset - 200) * 0.015 * _cloud.dist * (obj_cloud_render_new.distance_from_kris / 450);
80
    if (sloped)
81
        _cloud.y -= min(0.2 * _cloud.x, 60);
82
}
83
array_sort(clouds, sort_cloud);