Deltarune (Chapter 4) 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 = 1049;
8
if (i_ex(obj_climb_kris))
9
    _hero_obj = 27;
10
else
11
    global.inv--;
12
var hurt_distance = -15;
13
other.spd -= 0.2;
14
if (i_ex(obj_cloud_render_new))
15
{
16
    with (obj_cloud_render_new)
17
    {
18
        verticalspeed = lerp(max(other.minspeed * other.speedmult, other.spd), other.maxspeed * other.speedmult, clamp(abs(other.y - _hero_obj.y) / 300, 0, 1));
19
        if ((abs(other.y - _hero_obj.y) / 300) > 1.5 && other.maxspeed != 0)
20
            verticalspeed = min(verticalspeed, -10 * other.speedmult);
21
        if (other.y <= other.miny)
22
            verticalspeed = 0;
23
        if (front)
24
        {
25
            other.y += verticalspeed;
26
            if (_hero_obj.y > (other.y + hurt_distance))
27
            {
28
                if (other.harmless == 1)
29
                {
30
                    snd_play(snd_hurt1);
31
                    other.harmless = 2;
32
                    if (i_ex(obj_dw_churchc_slidingpiano))
33
                        obj_dw_churchc_slidingpiano.con = 1;
34
                }
35
                else if (other.harmless == 0)
36
                {
37
                    if (global.inv < 0 && global.hp[global.char[0]] > 0)
38
                    {
39
                        if (global.flag[1583] < 3 && global.hp[global.char[0]] <= other.damage)
40
                            global.flag[1583]++;
41
                        other.spd = 10;
42
                        if (_hero_obj == 27)
43
                        {
44
                            with (obj_climb_kris)
45
                                damagecon = 1;
46
                        }
47
                        with (other)
48
                            event_user(5);
49
                    }
50
                }
51
            }
52
        }
53
    }
54
}
55
var _center_y = cameray() + 200;
56
var _center_dist = clamp((y - _center_y) / 340, -1, 1);
57
y_scale = sin((abs(_center_dist) * pi) / 2) * sign(_center_dist) * 0.2;
58
cloud_angle += (0.2 * rotatespeed);
59
var _cnum = array_length(clouds);
60
for (var _c = 0; _c < _cnum; _c++)
61
{
62
    var _cloud = clouds[_c];
63
    _cloud.angle = _cloud.base_angle + cloud_angle;
64
    if (i_ex(obj_rotating_tower_controller_new))
65
        _cloud.angle -= (obj_rotating_tower_controller_new.tower_angle * 0.5) + (0.5 * obj_rotating_tower_controller_new.tower_angle_add);
66
    _cloud.z_depth = (((abs(angle_difference(_cloud.angle, -90)) / 180) * 2) - 1) * _cloud.dist;
67
    _cloud.x = lengthdir_x(1, _cloud.angle) * _cloud.dist;
68
    _cloud.x += 320;
69
    _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 / 275);
70
    if (sloped)
71
        _cloud.y -= min(0.2 * _cloud.x, 60);
72
}
73
array_sort(clouds, sort_cloud);