UNPKG

programming-game

Version:

The client for programming game, an mmorpg that you interact with entirely through code.

170 lines (169 loc) 4.17 kB
import { BaseIntent, IntentType, StatusEffectName, UnitStats } from "./types"; export declare enum CastType { channel = 0, instant = 1, castTime = 2 } export interface CastIntent extends BaseIntent { type: IntentType.cast; spell: Spells; target?: string; } type SpellDefinition<T> = ChannelSpell<T> | InstantSpell<T> | CastTimeSpell<T>; type BaseSpell<T> = { calories?: number; cost: number; damage?: number; heal?: number; id: T; target: SpellTarget; castType: CastType; range: number; statusEffect?: { name: StatusEffectName; stackable: boolean; duration: number; effects: { [StatusEffectMechanics: string]: number; }; stats?: Partial<UnitStats>; }; }; interface ChannelSpell<T> extends BaseSpell<T> { castType: CastType.channel; } interface InstantSpell<T> extends BaseSpell<T> { castType: CastType.instant; } interface CastTimeSpell<T> extends BaseSpell<T> { castType: CastType.castTime; minCastTime: number; } export type Spells = "aid_digestion" | "heal" | "regen" | "fireball" | "ballOfIce" | "chill" | "icicle" | "flashFreeze" | "iceArmor"; export type SpellMap = Record<Spells, SpellDefinition<Spells>>; export type SpellTarget = "self" | "hostile" | "ally" | "player" | "any"; export declare const spellMap: { aid_digestion: { id: "aid_digestion"; castType: CastType.channel; target: "any"; cost: number; range: number; damage: number; heal: number; calories: number; }; heal: { id: "heal"; castType: CastType.castTime; target: "any"; cost: number; minCastTime: number; range: number; heal: number; }; regen: { id: "regen"; castType: CastType.instant; target: "any"; cost: number; range: number; statusEffect: { name: "regen"; duration: number; stackable: false; effects: { hot: number; }; }; damage: number; }; chill: { id: "chill"; castType: CastType.instant; target: "any"; cost: number; range: number; statusEffect: { name: "chill"; duration: number; stackable: false; effects: { slow: number; }; stats: { movementSpeed: number; }; }; damage: number; }; ballOfIce: { id: "ballOfIce"; castType: CastType.castTime; target: "any"; cost: number; minCastTime: number; range: number; damage: number; }; flashFreeze: { id: "flashFreeze"; castType: CastType.instant; target: "any"; cost: number; range: number; damage: number; statusEffect: { name: "freeze"; duration: number; stackable: false; effects: { stun: number; }; }; }; icicle: { id: "icicle"; castType: CastType.castTime; target: "any"; cost: number; minCastTime: number; range: number; damage: number; }; iceArmor: { id: "iceArmor"; castType: CastType.castTime; target: "self"; cost: number; minCastTime: number; range: number; damage: number; statusEffect: { name: "iceArmor"; duration: number; stackable: false; effects: { shield: number; }; }; }; fireball: { id: "fireball"; castType: CastType.castTime; target: "any"; cost: number; damage: number; statusEffect: { name: "burn"; duration: number; stackable: false; effects: { dot: number; }; }; minCastTime: number; range: number; }; }; export {};