private ["_block","_class","_hlevel","_humanity","_level","_name"];
disableSerialization;

_class = [];
_name = lbText [8888,(lbCurSel 8888)];
{
	if (_name == (_x select 0)) then {
		_class = _x;
	};
} forEach class_public;

if (count _class == 0) exitWith {
	systemChat localize "STR_ESS_NOTHING_SELECTED";
};

switch true do {
	case (count _class > 20): { // Random
		_level = _class select 19;
		_hlevel = _class select 20;
	};
	case (count _class > 10): { // Normal public or private
		_level = _class select 8;
		_hlevel = _class select 9;
	};
	default { // Custom loadout by UID
		_level = 0;
		_hlevel = 0;
	};
};

_humanity = player getVariable ["humanity",0];

_block = switch true do {
	case (_hlevel < 0 && _humanity >= _hlevel): {systemChat format[localize "STR_ESS_HUMANITY_TOO_HIGH",_hlevel]; true};
	case (_hlevel > 0 && _humanity <= _hlevel): {systemChat format[localize "STR_ESS_HUMANITY_TOO_LOW",_hlevel]; true};
	case (_level > 0 && !(_level in class_levels)): {systemChat format[localize "STR_ESS_NEED_CVIP",_level]; true};
	default {false};
};

if (!_block) then {
	class_choice = _class;
};