Deltarune (Chapter 5) script viewer

← back to main script listing

gml_GlobalScript_scr_ground_checks

(view raw script w/o annotations or w/e)
1
function 
scr_ground_checks
scr_ground_checks

function
scr_ground_checks(arg0, arg1, arg2)
{ if (!variable_instance_exists(id, "__platchecks_list") || !ds_exists(__platchecks_list, ds_type_list)) __platchecks_list = scr_ds_list_create_managed(); ds_list_clear(__platchecks_list); var _num = instance_place_list(arg0, arg1, arg2, __platchecks_list, false); var _above = false; var _best = -4; if (_num > 0) { var vs = ceil(abs(vspeed)); for (var i = 0; i < _num; i++) { var _obj = ds_list_find_value(__platchecks_list, i); if (_obj.is_barrier && ignore_barriers) continue; if ((bbox_bottom - vs) < (_obj.bbox_top + 2)) _above = true; if (_obj.is_slope) { if (_obj.plattype == 0 && y < _obj.y) _above = true; if (_obj.plattype == 1) _above = true; } if (_obj.quicksand && bbox_bottom < _obj.bbox_bottom) _above = true; if (_above) { if (_best == -4 || (_obj.y < _best.y && _obj.y >= bbox_bottom)) _best = _obj; } } } return _best; } function scr_ground_entity_checks(arg0, arg1) { if (!variable_instance_exists(id, "__platchecks_list") || !ds_exists(__platchecks_list, ds_type_list)) __platchecks_list = scr_ds_list_create_managed(); ds_list_clear(__platchecks_list); var _num = instance_place_list(arg0, arg1, 691, __platchecks_list, false); var _above = false; var _floor_too_small = false; if (_num > 0) { for (var i = 0; i < _num; i++) { var _obj = ds_list_find_value(__platchecks_list, i); if ((bbox_bottom - ceil(abs(vspeed) + 2)) < (_obj.bbox_top + 2)) _above = true; var _area; with (_obj) _area = abs(bbox_right - bbox_left) * abs(bbox_bottom - bbox_top); var _myarea = abs(bbox_right - bbox_left) * abs(bbox_bottom - bbox_top); if ((_area * 5) < _myarea) _floor_too_small = true; if (_above && !_floor_too_small && _obj.rideable) return _obj; } } return -4; }
(arg0, arg1, arg2)
2
{
3
    if (!variable_instance_exists(id, "__platchecks_list") || !ds_exists(__platchecks_list, ds_type_list))
4
        __platchecks_list = scr_ds_list_create_managed();
5
    ds_list_clear(__platchecks_list);
6
    var _num = instance_place_list(arg0, arg1, arg2, __platchecks_list, false);
7
    var _above = false;
8
    var _best = -4;
9
    if (_num > 0)
10
    {
11
        var vs = ceil(abs(vspeed));
12
        for (var i = 0; i < _num; i++)
13
        {
14
            var _obj = ds_list_find_value(__platchecks_list, i);
15
            if (_obj.is_barrier && ignore_barriers)
16
                continue;
17
            if ((bbox_bottom - vs) < (_obj.bbox_top + 2))
18
                _above = true;
19
            if (_obj.is_slope)
20
            {
21
                if (_obj.plattype == 0 && y < _obj.y)
22
                    _above = true;
23
                if (_obj.plattype == 1)
24
                    _above = true;
25
            }
26
            if (_obj.quicksand && bbox_bottom < _obj.bbox_bottom)
27
                _above = true;
28
            if (_above)
29
            {
30
                if (_best == -4 || (_obj.y < _best.y && _obj.y >= bbox_bottom))
31
                    _best = _obj;
32
            }
33
        }
34
    }
35
    return _best;
36
}
37
38
function scr_ground_entity_checks(arg0, arg1)
39
{
40
    if (!variable_instance_exists(id, "__platchecks_list") || !ds_exists(__platchecks_list, ds_type_list))
41
        __platchecks_list = scr_ds_list_create_managed();
42
    ds_list_clear(__platchecks_list);
43
    var _num = instance_place_list(arg0, arg1, 691, __platchecks_list, false);
44
    var _above = false;
45
    var _floor_too_small = false;
46
    if (_num > 0)
47
    {
48
        for (var i = 0; i < _num; i++)
49
        {
50
            var _obj = ds_list_find_value(__platchecks_list, i);
51
            if ((bbox_bottom - ceil(abs(vspeed) + 2)) < (_obj.bbox_top + 2))
52
                _above = true;
53
            var _area;
54
            with (_obj)
55
                _area = abs(bbox_right - bbox_left) * abs(bbox_bottom - bbox_top);
56
            var _myarea = abs(bbox_right - bbox_left) * abs(bbox_bottom - bbox_top);
57
            if ((_area * 5) < _myarea)
58
                _floor_too_small = true;
59
            if (_above && !_floor_too_small && _obj.rideable)
60
                return _obj;
61
        }
62
    }
63
    return -4;
64
}