local function angle(description, default) return { type = "number", range = { min = -180, max = 180 }, description = description, default = default } end local range = function(description, default_min, default_max) return { type = "table", entries = { min = angle(description .. " (min)", default_min), max = angle(description .. " (max)", default_max) }, func = function(range) if range.max < range.min then return "Minimum range value is not <= maximum range value" end end } end local model = { type = "table", entries = { body = { type = "table", entries = { turn_speed = { type = "number", range = { min_exclusive = 0, max = 1e3 }, description = "Body turn speed", default = 0.2 } } }, head = { type = "table", entries = { pitch = range("Head pitch", -60, 80), yaw = range("Head yaw", -90, 90), yaw_restricted = range("Head yaw restricted", 0, 45), yaw_restriction = angle("Head yaw restriction", 60) } }, arm_right = { type = "table", entries = { radius = angle("Right arm spin radius", 10), speed = { type = "number", range = { min_exclusive = 0, max = 1e4 }, description = "Right arm spin speed", default = 1e3 }, yaw = range("Right arm yaw", -30, 160) } } } } return { type = "table", entries = { default = model, models = { type = "table", keys = { type = "string" }, description = "Other models, same format as `default` model" } } }