UNPKG

warscript

Version:

A typescript library for Warcraft III using Warpack.

39 lines (38 loc) 2.26 kB
/** @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 {};