warscript
Version:
A typescript library for Warcraft III using Warpack.
39 lines (38 loc) • 2.26 kB
TypeScript
/** @noSelfInFile */
import { AbilityBehavior } from "../ability";
import { Ability } from "../../internal/ability";
import { Buff, BuffConstructor, BuffParameters, BuffTypeIdSelectionPolicy } from "../../buff";
import { Unit } from "../../internal/unit";
import { ApplicableBuffTypeId } from "../../object-data/entry/buff-type/applicable";
import { BuffResistanceType } from "../../object-data/auxiliary/buff-resistance-type";
import { BuffPolarity } from "../../object-data/auxiliary/buff-polarity";
import { Widget } from "../../../core/types/widget";
type BuffParametersType<T extends BuffConstructor> = BuffParameters & Omit<BuffAdditionalParametersType<T>, keyof BuffParameters>;
type BuffAdditionalParametersType<T extends BuffConstructor> = T extends BuffConstructor<Buff<infer AdditionalParameters>> ? AdditionalParameters : never;
export declare abstract class ApplyBuffAbilityBehavior<T extends BuffConstructor = typeof Buff> extends AbilityBehavior {
protected readonly applyBuff: (this: void, unit: Unit) => InstanceType<T> | undefined;
constructor(ability: Ability, ...parameters: [
...constructor: [] | [T],
...typeId: [ApplicableBuffTypeId] | [
typeIds: [ApplicableBuffTypeId, ...ApplicableBuffTypeId[]],
typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
],
polarity: BuffPolarity,
resistanceType: BuffResistanceType,
parameters?: BuffParametersType<T>
]);
}
export declare class ApplyBuffSelfAbilityBehaviour<T extends BuffConstructor = typeof Buff> extends ApplyBuffAbilityBehavior<T> {
onImpact(caster: Unit): void;
}
export declare class ApplyBuffTargetAbilityBehavior<T extends BuffConstructor = typeof Buff> extends ApplyBuffAbilityBehavior<T> {
onUnitTargetImpact(caster: Unit, target: Unit): void;
}
export declare class ApplyBuffSelfAreaAbilityBehavior<T extends BuffConstructor = typeof Buff> extends ApplyBuffAbilityBehavior<T> {
onImpact(caster: Unit): void;
}
export declare class ApplyBuffTargetAreaAbilityBehavior<T extends BuffConstructor = typeof Buff> extends ApplyBuffAbilityBehavior<T> {
onPointTargetImpact(caster: Unit, x: number, y: number): void;
onWidgetTargetImpact(caster: Unit, target: Widget): void;
}
export {};