Skip to content
John A edited this page Oct 19, 2025 · 1 revision

Range

Range represents the distance and area of effect for weapons, abilities, and other game mechanics. Ranges can be defined using specific types and values to indicate how far an effect can reach or how it impacts an area. COMP/CON does not handle positioning or grids, so range is primarily used for display and context.

Range is stored as IRangeData objects, typically in an array.

IRangeData: {
  "type": RangeType;
  "val": string | number;
  "min"?: string | number;
}

Required Fields

type

The type field indicates the type of range being defined. This must be one of the following strings:

  • Threat
  • Range
  • Burst
  • Blast
  • Cone
  • Line

Range indicates a standard ranged attack.

val

The val field indicates the maximum range value. This can be a number (e.g. 10) or a string representing a dice expression. A dice expression is a string of the form XdY+Z or XdY or Z, where:

  • X is the number of dice (optional, defaults to 1)
  • Y is the die type (eg. 6 for a d6, 20 for a d20)
  • Z is a flat bonus (optional, defaults to 0)

As of v3, Range values may also include special bonus strings that are interpreted by COMP/CON based on context. See Bonus Strings for more information.

Finally, range values will be evaluated as normal arithmetic expressions, so you can use +, -, *, /, and parentheses to create more complex calculations (e.g. 2d6+4, (1d8+2)*2, 2+1d6+{agi} etc).

Optional Fields

min

The min field indicates the minimum range value. This can be a number (e.g. 2) or a string representing a dice expression, following the same format as the val field. A minimum range is typically used to indicate that a weapon or ability cannot be used at very close distances and is not managed by COMP/CON beyond display purposes.

Clone this wiki locally