UNPKG

warscript

Version:

A typescript library for Warcraft III using Warpack.

92 lines (91 loc) 4.69 kB
/** @noSelfInFile */ import { Handle } from "../../core/types/handle"; import { Event } from "../../event"; import type { Item } from "../../core/types/item"; import type { Unit } from "./unit"; import type { AbilityTypeId } from "../object-data/entry/ability-type"; interface Fields<K, V> { set(field: K, value: V): boolean; get(field: K): V; has(field: K): boolean; } interface AbilityLevel { realFields: Fields<jabilityreallevelfield, number>; } type jabilityfield = jabilityintegerfield | jabilityrealfield | jabilitybooleanfield | jabilitystringfield | jabilityintegerlevelfield | jabilityreallevelfield | jabilitybooleanlevelfield | jabilitystringlevelfield; export declare class AbilitySnapshot { } export declare abstract class Ability extends Handle<jability> { readonly typeId: AbilityTypeId; protected constructor(handle: jability, typeId: number); toString(): string; get parentTypeId(): number; get orderId(): number; abstract readonly owner: Unit | Item; getSnapshot(): AbilitySnapshot; hasField(field: jabilityfield | number): boolean; getField(field: jabilityintegerfield | jabilityrealfield): number; getField(field: jabilitybooleanfield): boolean; getField(field: jabilitystringfield): string; getField(field: jabilityintegerlevelfield | jabilityreallevelfield, level?: number): number; getField(field: jabilitybooleanlevelfield, level?: number): boolean; getField(field: jabilitystringlevelfield, level?: number): string; setField(field: jabilityintegerfield | jabilityrealfield, value: number): boolean; setField(field: jabilitybooleanfield, value: boolean): boolean; setField(field: jabilitystringfield, value: string): boolean; setField(field: jabilityintegerlevelfield, value: number): boolean; setField(field: jabilityreallevelfield, value: number): boolean; setField(field: jabilitybooleanlevelfield, value: boolean): boolean; setField(field: jabilitystringlevelfield, value: string): boolean; setField(field: jabilityintegerlevelfield | jabilityreallevelfield, level: number, value: number): boolean; setField(field: jabilitybooleanlevelfield, level: number, value: boolean): boolean; setField(field: jabilitystringlevelfield, level: number, value: string): boolean; get realFields(): Fields<jabilityrealfield, number>; get levels(): readonly AbilityLevel[]; abstract get level(): number; static get onCreate(): Event<[Ability]>; static get destroyEvent(): Event<[Ability]>; } /** * Can happen in extreme edge cases such as removing an ability from a unit during a chain of ability events. */ export declare class UnrecognizedAbility extends Ability { readonly owner: Unit; constructor(typeId: number, owner: Unit); get level(): number; } export declare class UnitAbility extends Ability { readonly owner: Unit; private readonly u; constructor(handle: jability, typeId: number, owner: Unit); get level(): number; set level(v: number); get cooldownRemaining(): number; set cooldownRemaining(v: number); static get onCreate(): Event<[UnitAbility]>; static get onDestroy(): Event<[UnitAbility]>; } export declare class ItemAbility extends Ability { readonly owner: Item; constructor(handle: jability, typeId: number, owner: Item); getField(field: jabilityintegerfield | jabilityrealfield): number; getField(field: jabilitybooleanfield): boolean; getField(field: jabilitystringfield): string; getField(field: jabilityintegerlevelfield | jabilityreallevelfield, level?: number): number; getField(field: jabilitybooleanlevelfield, level?: number): boolean; getField(field: jabilitystringlevelfield, level?: number): string; setField(field: jabilityintegerfield | jabilityrealfield, value: number): boolean; setField(field: jabilitybooleanfield, value: boolean): boolean; setField(field: jabilitystringfield, value: string): boolean; setField(field: jabilityintegerlevelfield, value: number): boolean; setField(field: jabilityreallevelfield, value: number): boolean; setField(field: jabilitybooleanlevelfield, value: boolean): boolean; setField(field: jabilitystringlevelfield, value: string): boolean; setField(field: jabilityintegerlevelfield | jabilityreallevelfield, level: number, value: number): boolean; setField(field: jabilitybooleanlevelfield, level: number, value: boolean): boolean; setField(field: jabilitystringlevelfield, level: number, value: string): boolean; get level(): number; static get onCreate(): Event<[ItemAbility]>; static get onDestroy(): Event<[ItemAbility]>; } export {};