warscript 0.0.1-dev.40df0dc → 0.0.1-dev.4117d1e
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/core/types/effect.d.ts +13 -3
- package/core/types/effect.lua +116 -17
- package/core/types/frame.d.ts +4 -0
- package/core/types/frame.lua +71 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -0
- package/engine/behavior.d.ts +2 -2
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +29 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability.d.ts +9 -2
- package/engine/behaviour/ability.lua +47 -33
- package/engine/behaviour/unit.d.ts +5 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +9 -1
- package/engine/buff.lua +46 -20
- package/engine/internal/ability.d.ts +16 -13
- package/engine/internal/ability.lua +79 -76
- package/engine/internal/item/ability.lua +81 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- package/engine/internal/unit/bonus.d.ts +4 -2
- package/engine/internal/unit/bonus.lua +6 -1
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +79 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +25 -10
- package/engine/internal/unit.lua +123 -71
- package/engine/internal/utility.lua +12 -0
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/entry/ability-type.lua +8 -12
- package/engine/object-data/entry/item-type.d.ts +14 -0
- package/engine/object-data/entry/item-type.lua +91 -0
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +4 -1
- package/engine/object-field/ability.lua +1 -1
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +1 -1
- package/package.json +1 -1
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +34 -3
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityBehavior } from "../ability";
|
|
3
|
+
import { Unit } from "../../internal/unit";
|
|
4
|
+
import { Ability } from "../../internal/ability";
|
|
5
|
+
import { AbilityDependentValue } from "../../object-field/ability";
|
|
6
|
+
import { BuffPolarity } from "../../object-data/auxiliary/buff-polarity";
|
|
7
|
+
import { BuffResistanceType } from "../../object-data/auxiliary/buff-resistance-type";
|
|
8
|
+
export declare class RemoveBuffsSelfAbilityBehavior extends AbilityBehavior {
|
|
9
|
+
private readonly polarity?;
|
|
10
|
+
private readonly resistanceType?;
|
|
11
|
+
private readonly includeExpirationTimers?;
|
|
12
|
+
private readonly includeAuras?;
|
|
13
|
+
private readonly autoDispel?;
|
|
14
|
+
constructor(ability: Ability, polarity?: AbilityDependentValue<BuffPolarity> | undefined, resistanceType?: AbilityDependentValue<BuffResistanceType> | undefined, includeExpirationTimers?: AbilityDependentValue<boolean> | undefined, includeAuras?: AbilityDependentValue<boolean> | undefined, autoDispel?: AbilityDependentValue<boolean> | undefined);
|
|
15
|
+
onImpact(caster: Unit): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
local ____ability = require("engine.behaviour.ability")
|
|
6
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
7
|
+
____exports.RemoveBuffsSelfAbilityBehavior = __TS__Class()
|
|
8
|
+
local RemoveBuffsSelfAbilityBehavior = ____exports.RemoveBuffsSelfAbilityBehavior
|
|
9
|
+
RemoveBuffsSelfAbilityBehavior.name = "RemoveBuffsSelfAbilityBehavior"
|
|
10
|
+
__TS__ClassExtends(RemoveBuffsSelfAbilityBehavior, AbilityBehavior)
|
|
11
|
+
function RemoveBuffsSelfAbilityBehavior.prototype.____constructor(self, ability, polarity, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
|
|
12
|
+
AbilityBehavior.prototype.____constructor(self, ability)
|
|
13
|
+
self.polarity = polarity
|
|
14
|
+
self.resistanceType = resistanceType
|
|
15
|
+
self.includeExpirationTimers = includeExpirationTimers
|
|
16
|
+
self.includeAuras = includeAuras
|
|
17
|
+
self.autoDispel = autoDispel
|
|
18
|
+
end
|
|
19
|
+
function RemoveBuffsSelfAbilityBehavior.prototype.onImpact(self, caster)
|
|
20
|
+
caster:removeBuffs(
|
|
21
|
+
self:resolveCurrentAbilityDependentValue(self.polarity),
|
|
22
|
+
self:resolveCurrentAbilityDependentValue(self.resistanceType),
|
|
23
|
+
self:resolveCurrentAbilityDependentValue(self.includeExpirationTimers),
|
|
24
|
+
self:resolveCurrentAbilityDependentValue(self.includeAuras),
|
|
25
|
+
self:resolveCurrentAbilityDependentValue(self.autoDispel)
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
return ____exports
|
|
@@ -9,22 +9,29 @@ 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 type AbilityBehaviorParameters = {
|
|
13
|
+
isExclusiveOnImpactHandler?: boolean;
|
|
14
|
+
};
|
|
12
15
|
export declare abstract class AbilityBehavior<Parameters extends {
|
|
13
16
|
periodicActionParameters?: any[];
|
|
14
17
|
missileParameters?: any[];
|
|
15
18
|
} = {}> extends Behavior<Ability, NonNullable<Parameters["periodicActionParameters"]>> {
|
|
16
|
-
constructor(ability: Ability);
|
|
19
|
+
constructor(ability: Ability, parameters?: AbilityBehaviorParameters);
|
|
20
|
+
protected registerCommandEvent(orderTypeStringId?: string): void;
|
|
17
21
|
get ability(): Ability;
|
|
18
22
|
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
|
|
23
|
+
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
|
|
24
|
+
protected flashCasterEffect(widget: Widget): void;
|
|
19
25
|
protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
20
26
|
protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
21
27
|
protected flashSpecialEffect(...args: [...pointOrWidget: [x: number, y: number] | [widget: Widget], duration?: number]): void;
|
|
22
28
|
private static MissileLaunchConfig;
|
|
23
29
|
private get missileLaunchConfig();
|
|
24
|
-
protected
|
|
30
|
+
protected onCreate(): void;
|
|
25
31
|
onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
|
|
26
32
|
onUnitGainAbility(_unit: Unit): void;
|
|
27
33
|
onUnitLoseAbility(_unit: Unit): void;
|
|
34
|
+
onCommand(caster: Unit, orderTypeStringId: string): void;
|
|
28
35
|
onCastingStart(caster: Unit): void;
|
|
29
36
|
onCastingFinish(caster: Unit): void;
|
|
30
37
|
onChannelingStart(caster: Unit): void;
|
|
@@ -4,6 +4,7 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
6
6
|
local ____exports = {}
|
|
7
|
+
local createUnitEventListener
|
|
7
8
|
local ____behavior = require("engine.behavior")
|
|
8
9
|
local Behavior = ____behavior.Behavior
|
|
9
10
|
local ____unit = require("engine.unit")
|
|
@@ -14,6 +15,8 @@ local ____effect = require("core.types.effect")
|
|
|
14
15
|
local Effect = ____effect.Effect
|
|
15
16
|
local ____ability = require("engine.standard.fields.ability")
|
|
16
17
|
local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
18
|
+
local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
|
|
19
|
+
local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
17
20
|
local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
18
21
|
local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
|
|
19
22
|
local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
@@ -24,21 +27,27 @@ local ____ability = require("engine.object-field.ability")
|
|
|
24
27
|
local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
|
|
25
28
|
local ____timer = require("core.types.timer")
|
|
26
29
|
local Timer = ____timer.Timer
|
|
27
|
-
local ____missile = require("core.types.missile")
|
|
28
|
-
local Missile = ____missile.Missile
|
|
29
30
|
local createBehaviorFunctionsByAbilityTypeId = {}
|
|
30
|
-
local
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
|
|
32
|
+
local function createZeroTimerUnitEventListener(key)
|
|
33
|
+
local unitEventListener = createUnitEventListener(key)
|
|
34
|
+
return function(unit, ability, ...)
|
|
35
|
+
Timer:run(unitEventListener, unit, ability, ...)
|
|
33
36
|
end
|
|
34
37
|
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
createUnitEventListener = function(key)
|
|
39
|
+
return function(unit, ability, ...)
|
|
40
|
+
____exports.AbilityBehavior:forAll(ability, key, unit, ...)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
local registeredCommandEventIds = {}
|
|
44
|
+
local ____class_2 = __TS__Class()
|
|
45
|
+
____class_2.name = ""
|
|
46
|
+
function ____class_2.prototype.____constructor(self, abilityBehavior)
|
|
38
47
|
self.abilityBehavior = abilityBehavior
|
|
39
48
|
end
|
|
40
49
|
__TS__SetDescriptor(
|
|
41
|
-
|
|
50
|
+
____class_2.prototype,
|
|
42
51
|
"art",
|
|
43
52
|
{get = function(self)
|
|
44
53
|
return MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.abilityBehavior.ability, 0)
|
|
@@ -46,7 +55,7 @@ __TS__SetDescriptor(
|
|
|
46
55
|
true
|
|
47
56
|
)
|
|
48
57
|
__TS__SetDescriptor(
|
|
49
|
-
|
|
58
|
+
____class_2.prototype,
|
|
50
59
|
"arc",
|
|
51
60
|
{get = function(self)
|
|
52
61
|
return MISSILE_ARC_ABILITY_FLOAT_FIELD:getValue(self.abilityBehavior.ability)
|
|
@@ -54,7 +63,7 @@ __TS__SetDescriptor(
|
|
|
54
63
|
true
|
|
55
64
|
)
|
|
56
65
|
__TS__SetDescriptor(
|
|
57
|
-
|
|
66
|
+
____class_2.prototype,
|
|
58
67
|
"speed",
|
|
59
68
|
{get = function(self)
|
|
60
69
|
return MISSILE_SPEED_ABILITY_INTEGER_FIELD:getValue(self.abilityBehavior.ability)
|
|
@@ -65,12 +74,34 @@ ____exports.AbilityBehavior = __TS__Class()
|
|
|
65
74
|
local AbilityBehavior = ____exports.AbilityBehavior
|
|
66
75
|
AbilityBehavior.name = "AbilityBehavior"
|
|
67
76
|
__TS__ClassExtends(AbilityBehavior, Behavior)
|
|
68
|
-
function AbilityBehavior.prototype.____constructor(self, ability)
|
|
77
|
+
function AbilityBehavior.prototype.____constructor(self, ability, parameters)
|
|
69
78
|
Behavior.prototype.____constructor(self, ability)
|
|
79
|
+
if parameters and parameters.isExclusiveOnImpactHandler then
|
|
80
|
+
exclusiveOnImpactHandlerAbilityBehaviorByAbility[ability] = self
|
|
81
|
+
end
|
|
82
|
+
self:onCreate()
|
|
83
|
+
end
|
|
84
|
+
function AbilityBehavior.prototype.registerCommandEvent(self, orderTypeStringId)
|
|
85
|
+
if orderTypeStringId == nil then
|
|
86
|
+
orderTypeStringId = self.ability.orderTypeStringId
|
|
87
|
+
end
|
|
88
|
+
local commandEventId = (tostring(self.ability.typeId) .. "#") .. orderTypeStringId
|
|
89
|
+
if not (registeredCommandEventIds[commandEventId] ~= nil) then
|
|
90
|
+
registeredCommandEventIds[commandEventId] = true
|
|
91
|
+
Unit.abilityCommandEvent[self.ability.typeId][orderTypeStringId]:addListener(createUnitEventListener("onCommand"))
|
|
92
|
+
end
|
|
70
93
|
end
|
|
71
94
|
function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
|
|
72
95
|
return resolveCurrentAbilityDependentValue(self.ability, value)
|
|
73
96
|
end
|
|
97
|
+
function AbilityBehavior.prototype.flashCasterEffect(self, widget)
|
|
98
|
+
local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
99
|
+
Effect:flash(
|
|
100
|
+
CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
101
|
+
widget,
|
|
102
|
+
attachmentPoint ~= "" and attachmentPoint or "origin"
|
|
103
|
+
)
|
|
104
|
+
end
|
|
74
105
|
function AbilityBehavior.prototype.flashAreaEffect(self, x, y, ...)
|
|
75
106
|
Effect:flash(
|
|
76
107
|
AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
@@ -104,15 +135,7 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrDurati
|
|
|
104
135
|
)
|
|
105
136
|
end
|
|
106
137
|
end
|
|
107
|
-
function AbilityBehavior.prototype.
|
|
108
|
-
Missile:launch(
|
|
109
|
-
self.missileLaunchConfig,
|
|
110
|
-
source,
|
|
111
|
-
target,
|
|
112
|
-
invokeOnMissileArrival,
|
|
113
|
-
self,
|
|
114
|
-
...
|
|
115
|
-
)
|
|
138
|
+
function AbilityBehavior.prototype.onCreate(self)
|
|
116
139
|
end
|
|
117
140
|
function AbilityBehavior.prototype.onMissileArrival(self, ...)
|
|
118
141
|
end
|
|
@@ -120,6 +143,8 @@ function AbilityBehavior.prototype.onUnitGainAbility(self, _unit)
|
|
|
120
143
|
end
|
|
121
144
|
function AbilityBehavior.prototype.onUnitLoseAbility(self, _unit)
|
|
122
145
|
end
|
|
146
|
+
function AbilityBehavior.prototype.onCommand(self, caster, orderTypeStringId)
|
|
147
|
+
end
|
|
123
148
|
function AbilityBehavior.prototype.onCastingStart(self, caster)
|
|
124
149
|
end
|
|
125
150
|
function AbilityBehavior.prototype.onCastingFinish(self, caster)
|
|
@@ -179,7 +204,7 @@ __TS__SetDescriptor(
|
|
|
179
204
|
end},
|
|
180
205
|
true
|
|
181
206
|
)
|
|
182
|
-
AbilityBehavior.MissileLaunchConfig =
|
|
207
|
+
AbilityBehavior.MissileLaunchConfig = ____class_2
|
|
183
208
|
__TS__SetDescriptor(
|
|
184
209
|
AbilityBehavior.prototype,
|
|
185
210
|
"missileLaunchConfig",
|
|
@@ -191,17 +216,6 @@ __TS__SetDescriptor(
|
|
|
191
216
|
true
|
|
192
217
|
);
|
|
193
218
|
(function(self)
|
|
194
|
-
local function createUnitEventListener(key)
|
|
195
|
-
return function(unit, ability, ...)
|
|
196
|
-
____exports.AbilityBehavior:forAll(ability, key, unit, ...)
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
local function createZeroTimerUnitEventListener(key)
|
|
200
|
-
local unitEventListener = createUnitEventListener(key)
|
|
201
|
-
return function(unit, ability, ...)
|
|
202
|
-
Timer:run(unitEventListener, unit, ability, ...)
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
219
|
Unit.abilityGainedEvent:addListener(createUnitEventListener("onUnitGainAbility"))
|
|
206
220
|
Unit.abilityLostEvent:addListener(createUnitEventListener("onUnitLoseAbility"))
|
|
207
221
|
Unit.abilityCastingStartEvent:addListener(createUnitEventListener("onCastingStart"))
|
|
@@ -4,6 +4,7 @@ import { Ability } from "../internal/ability";
|
|
|
4
4
|
import { DamageEvent, DamagingEvent, Unit } from "../internal/unit";
|
|
5
5
|
import "../internal/unit+ability";
|
|
6
6
|
import "../internal/unit-missile-launch";
|
|
7
|
+
import { Item } from "../internal/item";
|
|
7
8
|
export type UnitBehaviorConstructor<Args extends any[]> = new (unit: Unit, ...args: Args) => UnitBehavior;
|
|
8
9
|
export declare abstract class UnitBehavior<PeriodicActionParameters extends any[] = any[]> extends Behavior<Unit, PeriodicActionParameters> {
|
|
9
10
|
constructor(unit: Unit);
|
|
@@ -16,6 +17,10 @@ export declare abstract class UnitBehavior<PeriodicActionParameters extends any[
|
|
|
16
17
|
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
17
18
|
onAbilityGained(ability: Ability): void;
|
|
18
19
|
onAbilityLost(ability: Ability): void;
|
|
20
|
+
onItemDropped(item: Item): void;
|
|
21
|
+
onItemPickedUp(item: Item): void;
|
|
22
|
+
onItemUsed(item: Item): void;
|
|
23
|
+
onItemStacked(item: Item): void;
|
|
19
24
|
onKill(target: Unit): void;
|
|
20
25
|
onDeath(source: Unit | undefined): void;
|
|
21
26
|
}
|
|
@@ -32,6 +32,14 @@ function UnitBehavior.prototype.onAbilityGained(self, ability)
|
|
|
32
32
|
end
|
|
33
33
|
function UnitBehavior.prototype.onAbilityLost(self, ability)
|
|
34
34
|
end
|
|
35
|
+
function UnitBehavior.prototype.onItemDropped(self, item)
|
|
36
|
+
end
|
|
37
|
+
function UnitBehavior.prototype.onItemPickedUp(self, item)
|
|
38
|
+
end
|
|
39
|
+
function UnitBehavior.prototype.onItemUsed(self, item)
|
|
40
|
+
end
|
|
41
|
+
function UnitBehavior.prototype.onItemStacked(self, item)
|
|
42
|
+
end
|
|
35
43
|
function UnitBehavior.prototype.onKill(self, target)
|
|
36
44
|
end
|
|
37
45
|
function UnitBehavior.prototype.onDeath(self, source)
|
|
@@ -75,6 +83,18 @@ __TS__SetDescriptor(
|
|
|
75
83
|
end
|
|
76
84
|
____exports.UnitBehavior:forAll(target, "onDeath", source)
|
|
77
85
|
end)
|
|
86
|
+
Unit.itemDroppedEvent:addListener(function(unit, item)
|
|
87
|
+
____exports.UnitBehavior:forAll(unit, "onItemDropped", item)
|
|
88
|
+
end)
|
|
89
|
+
Unit.itemPickedUpEvent:addListener(function(unit, item)
|
|
90
|
+
____exports.UnitBehavior:forAll(unit, "onItemPickedUp", item)
|
|
91
|
+
end)
|
|
92
|
+
Unit.itemUsedEvent:addListener(function(unit, item)
|
|
93
|
+
____exports.UnitBehavior:forAll(unit, "onItemUsed", item)
|
|
94
|
+
end)
|
|
95
|
+
Unit.itemStackedEvent:addListener(function(unit, item)
|
|
96
|
+
____exports.UnitBehavior:forAll(unit, "onItemStacked", item)
|
|
97
|
+
end)
|
|
78
98
|
end)(UnitBehavior)
|
|
79
99
|
Unit.destroyEvent:addListener(function(unit)
|
|
80
100
|
____exports.UnitBehavior:forAll(unit, "destroy")
|
package/engine/buff.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { BuffResistanceType } from "./object-data/auxiliary/buff-resistance-type
|
|
|
8
8
|
import { AbilityBooleanField, AbilityBooleanLevelField, AbilityCombatClassificationsLevelField, AbilityDependentValue, AbilityEnumLevelField, AbilityIntegerField, AbilityIntegerLevelField, AbilityNumberField, AbilityNumberLevelField } from "./object-field/ability";
|
|
9
9
|
import { CombatClassifications } from "./object-data/auxiliary/combat-classification";
|
|
10
10
|
import { IsExactlyAny, Prohibit, ReadonlyNonEmptyArray } from "../utility/types";
|
|
11
|
+
import { EffectParameters } from "../core/types/effect";
|
|
11
12
|
import { UnitBehavior } from "./behaviour/unit";
|
|
12
13
|
import type { Widget } from "../core/types/widget";
|
|
13
14
|
import { Destructor } from "../destroyable";
|
|
@@ -54,6 +55,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
54
55
|
armorIncreaseFactor?: NumberParameterValueType;
|
|
55
56
|
attackSpeedIncreaseFactor?: NumberParameterValueType;
|
|
56
57
|
movementSpeedIncreaseFactor?: NumberParameterValueType;
|
|
58
|
+
damageFactor?: NumberParameterValueType;
|
|
57
59
|
receivedDamageFactor?: NumberParameterValueType;
|
|
58
60
|
receivedMagicDamageFactor?: NumberParameterValueType;
|
|
59
61
|
durationIncreaseOnAutoAttack?: NumberParameterValueType;
|
|
@@ -216,6 +218,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
216
218
|
set damageOnExpiration(damageOnExpiration: number);
|
|
217
219
|
get healingOnExpiration(): number;
|
|
218
220
|
set healingOnExpiration(healingOnExpiration: number);
|
|
221
|
+
get damageFactor(): number;
|
|
222
|
+
set damageFactor(damageFactor: number);
|
|
219
223
|
get receivedDamageFactor(): number;
|
|
220
224
|
set receivedDamageFactor(receivedDamageFactor: number);
|
|
221
225
|
get armorIncrease(): number;
|
|
@@ -247,8 +251,12 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
247
251
|
get duration(): number;
|
|
248
252
|
get remainingDuration(): number;
|
|
249
253
|
set remainingDuration(remainingDuration: number);
|
|
250
|
-
flashEffect(...parameters: [
|
|
254
|
+
flashEffect(...parameters: [
|
|
255
|
+
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
256
|
+
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
257
|
+
]): void;
|
|
251
258
|
flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
|
|
259
|
+
protected onCreate(): void;
|
|
252
260
|
protected onDestroy(): Destructor;
|
|
253
261
|
static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
|
|
254
262
|
static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
|
package/engine/buff.lua
CHANGED
|
@@ -46,6 +46,10 @@ local ____arrays = require("utility.arrays")
|
|
|
46
46
|
local forEach = ____arrays.forEach
|
|
47
47
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
48
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
|
+
local ____item = require("engine.internal.item")
|
|
50
|
+
local Item = ____item.Item
|
|
51
|
+
local ____destructable = require("core.types.destructable")
|
|
52
|
+
local Destructable = ____destructable.Destructable
|
|
49
53
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
54
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
55
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -94,6 +98,7 @@ local buffParametersKeys = {
|
|
|
94
98
|
armorIncreaseFactor = true,
|
|
95
99
|
attackSpeedIncreaseFactor = true,
|
|
96
100
|
movementSpeedIncreaseFactor = true,
|
|
101
|
+
damageFactor = true,
|
|
97
102
|
receivedDamageFactor = true,
|
|
98
103
|
receivedMagicDamageFactor = true,
|
|
99
104
|
durationIncreaseOnAutoAttack = true,
|
|
@@ -176,6 +181,7 @@ local buffNumberParameters = {
|
|
|
176
181
|
"attackSpeedIncreaseFactor",
|
|
177
182
|
"movementSpeedIncreaseFactor",
|
|
178
183
|
"armorIncrease",
|
|
184
|
+
"damageFactor",
|
|
179
185
|
"receivedDamageFactor",
|
|
180
186
|
"maximumAutoAttackCount",
|
|
181
187
|
"maximumDamageDealtEventCount",
|
|
@@ -480,6 +486,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
480
486
|
timer:start(duration, false, expireBuff, self)
|
|
481
487
|
self._timer = timer
|
|
482
488
|
end
|
|
489
|
+
self:onCreate()
|
|
483
490
|
end
|
|
484
491
|
function Buff.prototype.getUnitBonus(self, bonusType)
|
|
485
492
|
local ____opt_36 = self._bonusIdByBonusType
|
|
@@ -494,26 +501,30 @@ function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
|
494
501
|
end
|
|
495
502
|
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
496
503
|
end
|
|
497
|
-
function Buff.prototype.flashEffect(self,
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
local ____Effect_flash_41 = Effect.flash
|
|
501
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
502
|
-
self[104],
|
|
503
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
504
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
505
|
-
)
|
|
506
|
-
local ____isWidgetProvided_38
|
|
507
|
-
if isWidgetProvided then
|
|
508
|
-
____isWidgetProvided_38 = duration
|
|
504
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
505
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
506
|
+
Effect:flash(self[104], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
509
507
|
else
|
|
510
|
-
|
|
508
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
509
|
+
local ____Effect_40 = Effect
|
|
510
|
+
local ____Effect_flash_41 = Effect.flash
|
|
511
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
512
|
+
self[104],
|
|
513
|
+
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
514
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
515
|
+
)
|
|
516
|
+
local ____isWidgetProvided_38
|
|
517
|
+
if isWidgetProvided then
|
|
518
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
519
|
+
else
|
|
520
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
521
|
+
end
|
|
522
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
523
|
+
____Effect_flash_41(
|
|
524
|
+
____Effect_40,
|
|
525
|
+
__TS__SparseArraySpread(____array_39)
|
|
526
|
+
)
|
|
511
527
|
end
|
|
512
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
513
|
-
____Effect_flash_41(
|
|
514
|
-
____Effect_40,
|
|
515
|
-
__TS__SparseArraySpread(____array_39)
|
|
516
|
-
)
|
|
517
528
|
end
|
|
518
529
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
519
530
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
@@ -536,6 +547,8 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
536
547
|
__TS__SparseArraySpread(____array_43)
|
|
537
548
|
)
|
|
538
549
|
end
|
|
550
|
+
function Buff.prototype.onCreate(self)
|
|
551
|
+
end
|
|
539
552
|
function Buff.prototype.onDestroy(self)
|
|
540
553
|
local unit = self._unit
|
|
541
554
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
@@ -668,7 +681,7 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
668
681
|
self:destroy()
|
|
669
682
|
end
|
|
670
683
|
end
|
|
671
|
-
if event.
|
|
684
|
+
if event.originalAmount ~= 0 then
|
|
672
685
|
local damageDealtEventCount = (self[130] or 0) + 1
|
|
673
686
|
self[130] = damageDealtEventCount
|
|
674
687
|
if damageDealtEventCount == self[131] then
|
|
@@ -677,7 +690,7 @@ function Buff.prototype.onDamageDealt(self, target, event)
|
|
|
677
690
|
end
|
|
678
691
|
end
|
|
679
692
|
function Buff.prototype.onDamageReceived(self, source, event)
|
|
680
|
-
if event.
|
|
693
|
+
if event.originalAmount ~= 0 then
|
|
681
694
|
local damageReceivedEventCount = (self[132] or 0) + 1
|
|
682
695
|
self[132] = damageReceivedEventCount
|
|
683
696
|
if damageReceivedEventCount == self[133] then
|
|
@@ -888,6 +901,19 @@ __TS__SetDescriptor(
|
|
|
888
901
|
},
|
|
889
902
|
true
|
|
890
903
|
)
|
|
904
|
+
__TS__SetDescriptor(
|
|
905
|
+
Buff.prototype,
|
|
906
|
+
"damageFactor",
|
|
907
|
+
{
|
|
908
|
+
get = function(self)
|
|
909
|
+
return self:getUnitBonus(UnitBonusType.DAMAGE_FACTOR)
|
|
910
|
+
end,
|
|
911
|
+
set = function(self, damageFactor)
|
|
912
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.DAMAGE_FACTOR, damageFactor)
|
|
913
|
+
end
|
|
914
|
+
},
|
|
915
|
+
true
|
|
916
|
+
)
|
|
891
917
|
__TS__SetDescriptor(
|
|
892
918
|
Buff.prototype,
|
|
893
919
|
"receivedDamageFactor",
|
|
@@ -4,14 +4,6 @@ import { Event } from "../../event";
|
|
|
4
4
|
import type { Item } from "../../core/types/item";
|
|
5
5
|
import type { Unit } from "./unit";
|
|
6
6
|
import type { AbilityTypeId } from "../object-data/entry/ability-type";
|
|
7
|
-
interface Fields<K, V> {
|
|
8
|
-
set(field: K, value: V): boolean;
|
|
9
|
-
get(field: K): V;
|
|
10
|
-
has(field: K): boolean;
|
|
11
|
-
}
|
|
12
|
-
interface AbilityLevel {
|
|
13
|
-
realFields: Fields<jabilityreallevelfield, number>;
|
|
14
|
-
}
|
|
15
7
|
export type jabilityfield = jabilityintegerfield | jabilityrealfield | jabilitybooleanfield | jabilitystringfield | jabilityintegerlevelfield | jabilityreallevelfield | jabilitybooleanlevelfield | jabilitystringlevelfield;
|
|
16
8
|
export declare class AbilitySnapshot {
|
|
17
9
|
}
|
|
@@ -20,7 +12,8 @@ export declare abstract class Ability extends Handle<jability> {
|
|
|
20
12
|
protected constructor(handle: jability, typeId: number);
|
|
21
13
|
toString(): string;
|
|
22
14
|
get parentTypeId(): number;
|
|
23
|
-
get
|
|
15
|
+
get orderTypeStringId(): string;
|
|
16
|
+
get orderTypeId(): number;
|
|
24
17
|
abstract readonly owner: Unit | Item;
|
|
25
18
|
getSnapshot(): AbilitySnapshot;
|
|
26
19
|
hasField(field: jabilityfield | number): boolean;
|
|
@@ -40,9 +33,11 @@ export declare abstract class Ability extends Handle<jability> {
|
|
|
40
33
|
setField(field: jabilityintegerlevelfield | jabilityreallevelfield, level: number, value: number): boolean;
|
|
41
34
|
setField(field: jabilitybooleanlevelfield, level: number, value: boolean): boolean;
|
|
42
35
|
setField(field: jabilitystringlevelfield, level: number, value: string): boolean;
|
|
43
|
-
get
|
|
44
|
-
get levels(): readonly AbilityLevel[];
|
|
36
|
+
get levelCount(): number;
|
|
45
37
|
abstract get level(): number;
|
|
38
|
+
abstract get cooldownRemaining(): number;
|
|
39
|
+
abstract set cooldownRemaining(cooldownRemaining: number);
|
|
40
|
+
abstract interruptCast(): void;
|
|
46
41
|
static get onCreate(): Event<[Ability]>;
|
|
47
42
|
static get destroyEvent(): Event<[Ability]>;
|
|
48
43
|
}
|
|
@@ -53,15 +48,21 @@ export declare class UnrecognizedAbility extends Ability {
|
|
|
53
48
|
readonly owner: Unit;
|
|
54
49
|
constructor(typeId: number, owner: Unit);
|
|
55
50
|
get level(): number;
|
|
51
|
+
get cooldownRemaining(): number;
|
|
52
|
+
set cooldownRemaining(_: number);
|
|
53
|
+
interruptCast(): void;
|
|
56
54
|
}
|
|
57
55
|
export declare class UnitAbility extends Ability {
|
|
58
56
|
readonly owner: Unit;
|
|
59
57
|
private readonly u;
|
|
60
58
|
constructor(handle: jability, typeId: number, owner: Unit);
|
|
59
|
+
incrementHideCounter(): void;
|
|
60
|
+
decrementHideCounter(): void;
|
|
61
61
|
get level(): number;
|
|
62
62
|
set level(v: number);
|
|
63
63
|
get cooldownRemaining(): number;
|
|
64
|
-
set cooldownRemaining(
|
|
64
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
65
|
+
interruptCast(): void;
|
|
65
66
|
static get onCreate(): Event<[UnitAbility]>;
|
|
66
67
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
67
68
|
}
|
|
@@ -85,7 +86,9 @@ export declare class ItemAbility extends Ability {
|
|
|
85
86
|
setField(field: jabilitybooleanlevelfield, level: number, value: boolean): boolean;
|
|
86
87
|
setField(field: jabilitystringlevelfield, level: number, value: string): boolean;
|
|
87
88
|
get level(): number;
|
|
89
|
+
get cooldownRemaining(): number;
|
|
90
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
91
|
+
interruptCast(): void;
|
|
88
92
|
static get onCreate(): Event<[ItemAbility]>;
|
|
89
93
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
90
94
|
}
|
|
91
|
-
export {};
|