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; }