:: StoryTitle Limiting the range of a number in Harlowe :: UserScript [script] (function () { /* Returns the number clamped to the specified bounds. WARNING: Due to how Harlowe implements variables you can NOT call this function directly, you must use the Math.clamp() function instead. */ Object.defineProperty(Number.prototype, 'clamp', { configurable : true, writable : true, value(/* min, max */) { if (this == null) { // lazy equality for null throw new TypeError('Number.prototype.clamp called on null or undefined'); } if (arguments.length !== 2) { throw new Error('Number.prototype.clamp called with an incorrect number of parameters'); } var min = Number(arguments[0]); var max = Number(arguments[1]); if (min > max) { var tmp = min; min = max; max = tmp; } return Math.min(Math.max(this, min), max); } }); /* Returns the given numerical clamped to the specified bounds. Usage: → Limit numeric variable to a value between 1 and 10 inclusive. (set: \$variable to Math.clamp(\$variable, 1, 10)) → Limit result of mathematical operation to a value between 1 and 10 inclusive. (set: \$variable to Math.clamp(\$variable + 5, 1, 10)_ */ Object.defineProperty(Math, 'clamp', { configurable : true, writable : true, value(num, min, max) { var value = Number(num); return Number.isNaN(value) ? NaN : value.clamp(min, max); } }); })(); :: Start Initialise the numeric variable to a value with the range you want. eg. between ''1'' and ''10'' inclusive. (note: You don't need to use the //Math.clamp()// funtion at this point.)\ (set: \$valueToClamp to 5) ''Current value'': \$valueToClamp Increase the number to a value that is ''within'' the desired range. eg. Add 1 to the current value.\ (set: \$valueToClamp to Math.clamp(\$valueToClamp + 1, 1, 10)) ''New value'': \$valueToClamp Try to increase the number to a value that is ''outside'' the desired range. eg. Add 100 to the current value.\ (set: \$valueToClamp to Math.clamp(\$valueToClamp + 100, 1, 10)) ''New value'': \$valueToClamp Decrease the number to a value that is ''within'' the desired range. eg. Minus 5 from the current value.\ (set: \$valueToClamp to Math.clamp(\$valueToClamp - 5, 1, 10)) ''New value'': \$valueToClamp Try to decrease the number to a value that is ''outside'' the desired range. eg. Minus 100 from the current value.\ (set: \$valueToClamp to Math.clamp(\$valueToClamp - 100, 1, 10)) ''New value'': \$valueToClamp