warscript 0.0.1-dev.ee2345e → 0.0.1-dev.fa6dee5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +0 -1
- package/core/types/frame.d.ts +0 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/unit.lua +8 -0
- package/core/util.lua +1 -1
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +6 -6
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
- package/engine/behaviour/ability/instant-impact.lua +4 -0
- package/engine/behaviour/ability.d.ts +8 -1
- package/engine/behaviour/ability.lua +62 -0
- package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
- package/engine/buff.d.ts +2 -2
- package/engine/internal/unit/bonus.d.ts +5 -6
- package/engine/internal/unit-missile-launch.lua +1 -1
- package/engine/internal/unit.d.ts +36 -9
- package/engine/internal/unit.lua +215 -63
- package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- package/engine/object-data/entry/ability-type.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +0 -1
- package/engine/object-data/entry/destructible-type.d.ts +0 -1
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +0 -1
- package/engine/object-data/entry/lightning-type.d.ts +0 -1
- package/engine/object-data/entry/unit-type.d.ts +37 -2
- package/engine/object-data/entry/unit-type.lua +333 -49
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +0 -1
- package/engine/object-data/entry.d.ts +2 -3
- package/engine/object-field/ability.d.ts +1 -1
- package/engine/object-field.d.ts +0 -1
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/unit-type.d.ts +39 -1
- package/engine/standard/entries/unit-type.lua +39 -1
- package/engine/standard/fields/ability.d.ts +1 -1
- package/engine/standard/fields/ability.lua +1 -1
- package/engine/unit.lua +9 -2
- package/event.d.ts +0 -1
- package/lualib_bundle.lua +139 -40
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/package.json +13 -14
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +3 -4
- package/utility/bit-set.d.ts +0 -2
- package/utility/linked-set.d.ts +1 -2
- package/utility/lua-maps.d.ts +1 -2
- package/utility/lua-sets.d.ts +1 -2
package/attributes.d.ts
CHANGED
package/core/types/frame.d.ts
CHANGED
package/core/types/group.d.ts
CHANGED
package/core/types/image.d.ts
CHANGED
package/core/types/missile.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare class Missile implements Destroyable {
|
|
|
5
5
|
readonly retarget: (this: void, target: Unit | Vec2) => void;
|
|
6
6
|
private readonly update;
|
|
7
7
|
protected constructor(effect: jeffect, retarget: (this: void, target: Unit | Vec2) => void, update: (this: Missile) => boolean);
|
|
8
|
-
static launch(config: Readonly<{
|
|
8
|
+
static launch<T extends any[]>(config: Readonly<{
|
|
9
9
|
art: string;
|
|
10
10
|
scale?: number;
|
|
11
11
|
acceleration?: number;
|
|
@@ -15,7 +15,7 @@ export declare class Missile implements Destroyable {
|
|
|
15
15
|
maxSpeed?: number;
|
|
16
16
|
sourceOffset?: Vec2;
|
|
17
17
|
targetOffset?: Vec2;
|
|
18
|
-
}>, source: Unit | Vec2, target: Unit | Vec2, onArrival: (missile: Missile, success: boolean) => void): Missile;
|
|
18
|
+
}>, source: Unit | Vec2, target: Unit | Vec2, onArrival: (missile: Missile, success: boolean, ...parameters: T) => void, ...parameters: T): Missile;
|
|
19
19
|
destroy(): void;
|
|
20
20
|
}
|
|
21
21
|
export declare namespace Missile {
|
package/core/types/missile.lua
CHANGED
|
@@ -41,7 +41,8 @@ function Missile.prototype.____constructor(self, effect, retarget, update)
|
|
|
41
41
|
end
|
|
42
42
|
head = self
|
|
43
43
|
end
|
|
44
|
-
function Missile.launch(self, config, source, target, onArrival)
|
|
44
|
+
function Missile.launch(self, config, source, target, onArrival, ...)
|
|
45
|
+
local parameters = {...}
|
|
45
46
|
local ____opt_0 = config.sourceOffset
|
|
46
47
|
local offsetX = ____opt_0 and ____opt_0.x or 0
|
|
47
48
|
local ____opt_2 = config.sourceOffset
|
|
@@ -142,7 +143,12 @@ function Missile.launch(self, config, source, target, onArrival)
|
|
|
142
143
|
visualPositionArcY = currentVisualTargetY
|
|
143
144
|
visualPositionArcZ = currentVisualTargetZ
|
|
144
145
|
retarget = false
|
|
145
|
-
safeCall(
|
|
146
|
+
safeCall(
|
|
147
|
+
onArrival,
|
|
148
|
+
self,
|
|
149
|
+
true,
|
|
150
|
+
table.unpack(parameters)
|
|
151
|
+
)
|
|
146
152
|
return not retarget
|
|
147
153
|
end
|
|
148
154
|
if arcVSpeed ~= 0 and (currentTargetX ~= initialTargetX or currentTargetY ~= initialTargetY) then
|
package/core/types/unit.lua
CHANGED
|
@@ -21,4 +21,12 @@ do
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
|
+
do
|
|
25
|
+
local ____export = require("engine.internal.unit+rally")
|
|
26
|
+
for ____exportKey, ____exportValue in pairs(____export) do
|
|
27
|
+
if ____exportKey ~= "default" then
|
|
28
|
+
____exports[____exportKey] = ____exportValue
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
24
32
|
return ____exports
|
package/core/util.lua
CHANGED
package/engine/ability.d.ts
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
import { AbilityTypeId } from "./object-data/entry/ability-type";
|
|
3
3
|
import { UnitAbility } from "./internal/ability";
|
|
4
4
|
import { Player } from "../core/types/player";
|
|
5
|
-
export declare const castAbility: (owner: Player, abilityTypeId: AbilityTypeId, ...args: [
|
|
5
|
+
export declare const castAbility: (owner: Player, abilityTypeId: AbilityTypeId, ...args: [...levelOrAbilityConsumer: [number] | [(ability: UnitAbility) => void] | [], x: number, y: number]) => void;
|
package/engine/behavior.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { AbstractDestroyable, Destructor } from "../destroyable";
|
|
3
|
-
export type BehaviorConstructor<T extends Behavior<
|
|
3
|
+
export type BehaviorConstructor<T extends Behavior<AnyNotNil>, Parameters extends any[] = any[]> = OmitConstructor<typeof Behavior<any>> & (abstract new (...parameters: Parameters) => T);
|
|
4
4
|
declare const enum BehaviorPropertyKey {
|
|
5
5
|
PREVIOUS_BEHAVIOR = 0,
|
|
6
6
|
NEXT_BEHAVIOR = 1,
|
|
7
7
|
TIMER = 2
|
|
8
8
|
}
|
|
9
|
-
export declare abstract class Behavior<T, PeriodicActionParameters extends any[] = any[]> extends AbstractDestroyable {
|
|
9
|
+
export declare abstract class Behavior<T extends AnyNotNil, PeriodicActionParameters extends any[] = any[]> extends AbstractDestroyable {
|
|
10
10
|
protected readonly object: T;
|
|
11
11
|
private [BehaviorPropertyKey.PREVIOUS_BEHAVIOR]?;
|
|
12
12
|
private [BehaviorPropertyKey.NEXT_BEHAVIOR]?;
|
|
@@ -16,10 +16,10 @@ export declare abstract class Behavior<T, PeriodicActionParameters extends any[]
|
|
|
16
16
|
protected onPeriod(...parameters: PeriodicActionParameters): void;
|
|
17
17
|
protected startPeriodicAction(interval: number, ...parameters: PeriodicActionParameters): void;
|
|
18
18
|
protected stopPeriodicAction(): void;
|
|
19
|
-
static count<T extends Behavior<
|
|
20
|
-
static getFirst<T extends Behavior<
|
|
21
|
-
static getLast<T extends Behavior<
|
|
22
|
-
static getAll<T extends Behavior<
|
|
19
|
+
static count<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, limit?: number): number;
|
|
20
|
+
static getFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], Count extends [number] | []>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, ...[count]: Count): Count extends [number] ? T[] : T | undefined;
|
|
21
|
+
static getLast<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T | undefined;
|
|
22
|
+
static getAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T[];
|
|
23
23
|
static forFirst<T extends Behavior<any>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, consumer: (behavior: T, ...parameters: ConsumerParameters) => any, ...parameters: ConsumerParameters): number;
|
|
24
24
|
static forFirst<T extends Behavior<any>, ConstructorParameters extends any[], K extends KeysOfType<T, (...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, key: K, ...parameters: T[K] extends (...args: any) => any ? Parameters<T[K]> : never): number;
|
|
25
25
|
static forAll<T extends Behavior<any>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, consumer: (behavior: T, ...parameters: ConsumerParameters) => unknown, ...parameters: ConsumerParameters): number;
|
|
@@ -3,14 +3,19 @@ import { AbilityBehavior } from "../ability";
|
|
|
3
3
|
import { Ability } from "../../internal/ability";
|
|
4
4
|
import { UnitBehavior } from "../unit";
|
|
5
5
|
import { Unit } from "../../internal/unit";
|
|
6
|
+
import { MutableKeys } from "../../../utility/types";
|
|
6
7
|
import { AbilityDependentValue } from "../../object-field/ability";
|
|
8
|
+
type UnitBehaviorParameters<T extends UnitBehavior> = Partial<{
|
|
9
|
+
[K in MutableKeys<T> & KeysOfType<T, boolean | number | string>]: T[K] extends boolean | number | string ? AbilityDependentValue<T[K]> : never;
|
|
10
|
+
}>;
|
|
7
11
|
export declare class ApplyUnitBehaviorAbilityBehavior<T extends UnitBehavior> extends AbilityBehavior {
|
|
8
12
|
private readonly unitBehaviorConstructor;
|
|
9
13
|
private readonly parameters?;
|
|
10
14
|
private readonly keys?;
|
|
11
15
|
private unitBehavior?;
|
|
12
|
-
constructor(ability: Ability, unitBehaviorConstructor: new (unit: Unit) => T, parameters?:
|
|
16
|
+
constructor(ability: Ability, unitBehaviorConstructor: new (unit: Unit) => T, parameters?: UnitBehaviorParameters<T> | undefined);
|
|
13
17
|
update(): void;
|
|
14
18
|
onUnitGainAbility(unit: Unit): void;
|
|
15
19
|
onUnitLoseAbility(): void;
|
|
16
20
|
}
|
|
21
|
+
export {};
|
|
@@ -12,8 +12,12 @@ local InstantImpactAbilityBehavior = ____exports.InstantImpactAbilityBehavior
|
|
|
12
12
|
InstantImpactAbilityBehavior.name = "InstantImpactAbilityBehavior"
|
|
13
13
|
__TS__ClassExtends(InstantImpactAbilityBehavior, AbilityBehavior)
|
|
14
14
|
function InstantImpactAbilityBehavior.prototype.onCastingStart(self, caster)
|
|
15
|
+
local abilityTypeId = self.ability.typeId
|
|
15
16
|
local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
|
|
16
17
|
local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
|
|
18
|
+
if caster:getAbilityRemainingCooldown(abilityTypeId) ~= 0 or caster.mana < manaCost then
|
|
19
|
+
return
|
|
20
|
+
end
|
|
17
21
|
caster.mana = caster.mana - manaCost
|
|
18
22
|
if cooldown == 0 then
|
|
19
23
|
caster:interruptCast(self.ability.typeId)
|
|
@@ -9,13 +9,20 @@ import { Destructable } from "../../core/types/destructable";
|
|
|
9
9
|
import { EffectParameters } from "../../core/types/effect";
|
|
10
10
|
import { AbilityDependentValue } from "../object-field/ability";
|
|
11
11
|
export type AbilityBehaviorConstructor<Args extends any[]> = new (ability: Ability, ...args: Args) => AbilityBehavior;
|
|
12
|
-
export declare abstract class AbilityBehavior<
|
|
12
|
+
export declare abstract class AbilityBehavior<Parameters extends {
|
|
13
|
+
periodicActionParameters?: any[];
|
|
14
|
+
missileParameters?: any[];
|
|
15
|
+
} = {}> extends Behavior<Ability, NonNullable<Parameters["periodicActionParameters"]>> {
|
|
13
16
|
constructor(ability: Ability);
|
|
14
17
|
get ability(): Ability;
|
|
15
18
|
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
|
|
16
19
|
protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
17
20
|
protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
18
21
|
protected flashSpecialEffect(...args: [...pointOrWidget: [x: number, y: number] | [widget: Widget], duration?: number]): void;
|
|
22
|
+
private static MissileLaunchConfig;
|
|
23
|
+
private get missileLaunchConfig();
|
|
24
|
+
protected launchMissile(source: Unit, target: Unit, ...parameters: NonNullable<Parameters["missileParameters"]>): void;
|
|
25
|
+
onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
|
|
19
26
|
onUnitGainAbility(_unit: Unit): void;
|
|
20
27
|
onUnitLoseAbility(_unit: Unit): void;
|
|
21
28
|
onCastingStart(caster: Unit): void;
|
|
@@ -15,13 +15,52 @@ local Effect = ____effect.Effect
|
|
|
15
15
|
local ____ability = require("engine.standard.fields.ability")
|
|
16
16
|
local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
17
17
|
local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
18
|
+
local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
|
|
19
|
+
local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
20
|
+
local MISSILE_SPEED_ABILITY_INTEGER_FIELD = ____ability.MISSILE_SPEED_ABILITY_INTEGER_FIELD
|
|
18
21
|
local SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD = ____ability.SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD
|
|
19
22
|
local SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
20
23
|
local ____ability = require("engine.object-field.ability")
|
|
21
24
|
local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
|
|
22
25
|
local ____timer = require("core.types.timer")
|
|
23
26
|
local Timer = ____timer.Timer
|
|
27
|
+
local ____missile = require("core.types.missile")
|
|
28
|
+
local Missile = ____missile.Missile
|
|
24
29
|
local createBehaviorFunctionsByAbilityTypeId = {}
|
|
30
|
+
local function invokeOnMissileArrival(_missile, success, abilityBehavior, ...)
|
|
31
|
+
if success then
|
|
32
|
+
abilityBehavior:onMissileArrival(...)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
local ____class_0 = __TS__Class()
|
|
36
|
+
____class_0.name = ""
|
|
37
|
+
function ____class_0.prototype.____constructor(self, abilityBehavior)
|
|
38
|
+
self.abilityBehavior = abilityBehavior
|
|
39
|
+
end
|
|
40
|
+
__TS__SetDescriptor(
|
|
41
|
+
____class_0.prototype,
|
|
42
|
+
"art",
|
|
43
|
+
{get = function(self)
|
|
44
|
+
return MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.abilityBehavior.ability, 0)
|
|
45
|
+
end},
|
|
46
|
+
true
|
|
47
|
+
)
|
|
48
|
+
__TS__SetDescriptor(
|
|
49
|
+
____class_0.prototype,
|
|
50
|
+
"arc",
|
|
51
|
+
{get = function(self)
|
|
52
|
+
return MISSILE_ARC_ABILITY_FLOAT_FIELD:getValue(self.abilityBehavior.ability)
|
|
53
|
+
end},
|
|
54
|
+
true
|
|
55
|
+
)
|
|
56
|
+
__TS__SetDescriptor(
|
|
57
|
+
____class_0.prototype,
|
|
58
|
+
"speed",
|
|
59
|
+
{get = function(self)
|
|
60
|
+
return MISSILE_SPEED_ABILITY_INTEGER_FIELD:getValue(self.abilityBehavior.ability)
|
|
61
|
+
end},
|
|
62
|
+
true
|
|
63
|
+
)
|
|
25
64
|
____exports.AbilityBehavior = __TS__Class()
|
|
26
65
|
local AbilityBehavior = ____exports.AbilityBehavior
|
|
27
66
|
AbilityBehavior.name = "AbilityBehavior"
|
|
@@ -65,6 +104,18 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrDurati
|
|
|
65
104
|
)
|
|
66
105
|
end
|
|
67
106
|
end
|
|
107
|
+
function AbilityBehavior.prototype.launchMissile(self, source, target, ...)
|
|
108
|
+
Missile:launch(
|
|
109
|
+
self.missileLaunchConfig,
|
|
110
|
+
source,
|
|
111
|
+
target,
|
|
112
|
+
invokeOnMissileArrival,
|
|
113
|
+
self,
|
|
114
|
+
...
|
|
115
|
+
)
|
|
116
|
+
end
|
|
117
|
+
function AbilityBehavior.prototype.onMissileArrival(self, ...)
|
|
118
|
+
end
|
|
68
119
|
function AbilityBehavior.prototype.onUnitGainAbility(self, _unit)
|
|
69
120
|
end
|
|
70
121
|
function AbilityBehavior.prototype.onUnitLoseAbility(self, _unit)
|
|
@@ -127,6 +178,17 @@ __TS__SetDescriptor(
|
|
|
127
178
|
return self.object
|
|
128
179
|
end},
|
|
129
180
|
true
|
|
181
|
+
)
|
|
182
|
+
AbilityBehavior.MissileLaunchConfig = ____class_0
|
|
183
|
+
__TS__SetDescriptor(
|
|
184
|
+
AbilityBehavior.prototype,
|
|
185
|
+
"missileLaunchConfig",
|
|
186
|
+
{get = function(self)
|
|
187
|
+
local missileLaunchConfig = __TS__New(____exports.AbilityBehavior.MissileLaunchConfig, self)
|
|
188
|
+
rawset(self, "missileLaunchConfig", missileLaunchConfig)
|
|
189
|
+
return missileLaunchConfig
|
|
190
|
+
end},
|
|
191
|
+
true
|
|
130
192
|
);
|
|
131
193
|
(function(self)
|
|
132
194
|
local function createUnitEventListener(key)
|
package/engine/buff.d.ts
CHANGED
|
@@ -65,7 +65,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
65
65
|
destroysOnDamage?: BooleanParameterValueType;
|
|
66
66
|
maximumAutoAttackCount?: IntegerParameterValueType;
|
|
67
67
|
uniqueGroup?: BuffUniqueGroup;
|
|
68
|
-
} : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters :
|
|
68
|
+
} : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
|
|
69
69
|
declare const enum BuffPropertyKey {
|
|
70
70
|
UNIT = 100,
|
|
71
71
|
SOURCE = 101,
|
|
@@ -116,7 +116,7 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
|
|
|
116
116
|
parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
|
|
117
117
|
] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
|
|
118
118
|
];
|
|
119
|
-
export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> =
|
|
119
|
+
export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
|
|
120
120
|
private _unit;
|
|
121
121
|
protected readonly __additionalParametersBrand?: AdditionalParameters;
|
|
122
122
|
private [BuffPropertyKey.UNIT];
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { Unit } from "../unit";
|
|
4
3
|
import { AbilityTypeId } from "../../object-data/entry/ability-type";
|
|
@@ -34,8 +33,8 @@ export declare namespace UnitBonusType {
|
|
|
34
33
|
const DAMAGE: UnitBonusType<UnitDamageBonusId>;
|
|
35
34
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
36
35
|
}
|
|
37
|
-
export declare const addUnitBonus: <Id extends UnitBonusId
|
|
38
|
-
export declare const removeUnitBonus: <Id extends UnitBonusId
|
|
39
|
-
export declare const updateUnitBonus: <Id extends UnitBonusId
|
|
40
|
-
export declare const addOrUpdateOrRemoveUnitBonus: <Id extends UnitBonusId
|
|
41
|
-
export declare const getUnitBonus: <Id extends UnitBonusId
|
|
36
|
+
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
37
|
+
export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
|
|
38
|
+
export declare const updateUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id, value: number) => boolean;
|
|
39
|
+
export declare const addOrUpdateOrRemoveUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id | undefined, value: number) => Id | undefined;
|
|
40
|
+
export declare const getUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => number;
|
|
@@ -25,7 +25,7 @@ local function timerCallback(source, target)
|
|
|
25
25
|
Event.invoke(autoAttackFinishEvent, source, target)
|
|
26
26
|
end
|
|
27
27
|
Unit.autoAttackStartEvent:addListener(function(source, target)
|
|
28
|
-
local attackPoint = source.weapons[1].
|
|
28
|
+
local attackPoint = source.weapons[1].impactDelay
|
|
29
29
|
local timer = Timer:simple(attackPoint, timerCallback, source, target)
|
|
30
30
|
eventTimerByUnit[source] = timer
|
|
31
31
|
end)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
4
3
|
import { Player } from "../../core/types/player";
|
|
@@ -68,23 +67,44 @@ declare const modifiers: {
|
|
|
68
67
|
speed: (unit: junit, value: number) => void;
|
|
69
68
|
armor: (unit: junit, value: number) => void;
|
|
70
69
|
};
|
|
71
|
-
|
|
70
|
+
export declare class UnitWeapon {
|
|
71
|
+
readonly unit: Unit;
|
|
72
72
|
readonly index: 0 | 1;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
constructor(unit: Unit, index: 0 | 1);
|
|
74
|
+
get cooldown(): number;
|
|
75
|
+
set cooldown(cooldown: number);
|
|
76
|
+
get damage(): [minimumDamage: number, maximumDamage: number];
|
|
77
|
+
set damage([minimumDamage, maximumDamage]: [number, number]);
|
|
78
|
+
get damageBase(): number;
|
|
79
|
+
set damageBase(damageBase: number);
|
|
80
|
+
get damageDiceCount(): number;
|
|
81
|
+
set damageDiceCount(damageDiceCount: number);
|
|
82
|
+
get damageDiceSideCount(): number;
|
|
83
|
+
set damageDiceSideCount(damageDiceSideCount: number);
|
|
84
|
+
get range(): number;
|
|
85
|
+
set range(range: number);
|
|
86
|
+
get impactDelay(): number;
|
|
87
|
+
set impactDelay(impactDelay: number);
|
|
88
|
+
get missileArc(): number;
|
|
89
|
+
set missileArc(missileArc: number);
|
|
90
|
+
get missileModelPath(): string;
|
|
91
|
+
set missileModelPath(missileModelPath: string);
|
|
92
|
+
get missileSpeed(): number;
|
|
93
|
+
set missileSpeed(missileSpeed: number);
|
|
78
94
|
}
|
|
79
95
|
declare const enum UnitPropertyKey {
|
|
80
96
|
IS_PAUSED = 100,
|
|
81
97
|
STUN_COUNTER = 101,
|
|
82
|
-
|
|
83
|
-
|
|
98
|
+
DELAY_HEALTH_CHECKS_COUNTER = 102,
|
|
99
|
+
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 103,
|
|
100
|
+
PREVENT_DEATH_HEALTH_BONUS = 104,
|
|
101
|
+
IS_TEAM_GLOW_HIDDEN = 105
|
|
84
102
|
}
|
|
85
103
|
export declare class Unit extends Handle<junit> {
|
|
86
104
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
87
105
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
106
|
+
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
107
|
+
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
88
108
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
89
109
|
private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
|
|
90
110
|
private _owner?;
|
|
@@ -123,6 +143,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
123
143
|
playAnimation(animation: number): void;
|
|
124
144
|
queueAnimation(animation: string): void;
|
|
125
145
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
146
|
+
get firstWeapon(): UnitWeapon;
|
|
147
|
+
get secondWeapon(): UnitWeapon;
|
|
126
148
|
get level(): number;
|
|
127
149
|
set level(v: number);
|
|
128
150
|
get xp(): number;
|
|
@@ -148,6 +170,10 @@ export declare class Unit extends Handle<junit> {
|
|
|
148
170
|
set color(color: PlayerColor);
|
|
149
171
|
get acquisitionRange(): number;
|
|
150
172
|
set acquisitionRange(v: number);
|
|
173
|
+
/**
|
|
174
|
+
* Keeps this unit alive even if its health becomes negative until the current game thread yields.
|
|
175
|
+
*/
|
|
176
|
+
delayHealthChecks(): void;
|
|
151
177
|
get maxHealth(): number;
|
|
152
178
|
set maxHealth(maxHealth: number);
|
|
153
179
|
get healthRegenerationRate(): number;
|
|
@@ -222,6 +248,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
222
248
|
getAbilityById(abilityId: number): UnitAbility | undefined;
|
|
223
249
|
removeAbility(abilityId: number): boolean;
|
|
224
250
|
hideAbility(abilityId: number, flag: boolean): void;
|
|
251
|
+
getAbilityRemainingCooldown(abilityId: number): number;
|
|
225
252
|
startAbilityCooldown(abilityId: number, cooldown: number): void;
|
|
226
253
|
endAbilityCooldown(abilityId: number): void;
|
|
227
254
|
interruptAttack(): void;
|