import globalJSON from '../../../../global/spark.json';

/**
 * Sparks, or succession factors.
 */
export interface Spark {
	/**
	 * Spark ID.
	 */
	spark_id: number;
	/**
	 * Regional spark name.
	 */
	name: string;
	/**
	 * Regional spark description.
	 */
	description: string;
	/**
	 * Spark group.
	 * Different star levels of a given spark are different spark IDs but
	 * share a spark group.
	 */
	spark_group: number;
	/**
	 * Spark rarity, or star level.
	 */
	rarity: 1 | 2 | 3;
	/**
	 * Spark type.
	 * Roughly the spark color, with extra subdivisions for white sparks.
	 */
	type: 1 | 2 | 5 | 4 | 6 | 7 | 10 | 8 | 11 | 9 | 3;
	/**
	 * Possible effects applied by the spark during inspiration.
	 * A random element is selected from this list according to unknown
	 * distributions, then all effects in that selection are applied.
	 */
	effects: SparkEffect[][];
}

/**
 * Effects that a spark can apply.
 */
export interface SparkEffect {
	target: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 21 | 22 | 23 | 24 | 31 | 32 | 33 | 34 | 41 | 51 | 61 | 62 | 63 | 64 | 65;
	value1?: number;
	value2: number;
}

export const sparks = {
	global: globalJSON as Spark[],
} as const;
