warscript
Version:
A typescript library for Warcraft III using Warpack.
92 lines (91 loc) • 4.69 kB
TypeScript
/** @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 {};