40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
// SPDX-FileCopyrightText: 2022 Johannes Loher
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
import type { DS4 } from "../../config";
|
|
import type { DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable } from "../item-data-source-base";
|
|
|
|
export interface DS4SpellDataSource {
|
|
type: "spell";
|
|
data: DS4SpellDataSourceData;
|
|
}
|
|
|
|
export interface DS4SpellDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable {
|
|
spellType: keyof typeof DS4.i18n.spellTypes;
|
|
bonus: string;
|
|
spellCategory: keyof typeof DS4.i18n.spellCategories;
|
|
maxDistance: UnitData<DistanceUnit>;
|
|
effectRadius: UnitData<DistanceUnit>;
|
|
duration: UnitData<TemporalUnit>;
|
|
cooldownDuration: CooldownDuration;
|
|
manaCost: {
|
|
healer: number | null;
|
|
wizard: number | null;
|
|
sorcerer: number | null;
|
|
};
|
|
minimumLevels: {
|
|
healer: number | null;
|
|
wizard: number | null;
|
|
sorcerer: number | null;
|
|
};
|
|
}
|
|
|
|
export interface UnitData<UnitType> {
|
|
value: string;
|
|
unit: UnitType;
|
|
}
|
|
|
|
type DistanceUnit = keyof typeof DS4.i18n.distanceUnits;
|
|
type TemporalUnit = keyof typeof DS4.i18n.temporalUnits;
|
|
export type CooldownDuration = keyof typeof DS4.i18n.cooldownDurations;
|