warscript 0.0.1-dev.29630c5 → 0.0.1-dev.2a08418
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 +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +172 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +7 -3
- package/engine/behaviour/ability.lua +34 -26
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +259 -6
- package/engine/buff.d.ts +63 -44
- package/engine/buff.lua +318 -225
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/add-item-to-slot.lua +4 -2
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +45 -14
- package/engine/internal/unit.d.ts +42 -17
- package/engine/internal/unit.lua +331 -165
- package/engine/lightning.d.ts +4 -3
- package/engine/lightning.lua +21 -12
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +85 -24
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +69 -3
- package/engine/object-field/unit.lua +264 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +309 -126
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/unit.d.ts +6 -0
- package/engine/standard/fields/unit.lua +11 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +3 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
|
@@ -25,4 +25,25 @@ function RemoveBuffsSelfAbilityBehavior.prototype.onImpact(self, caster)
|
|
|
25
25
|
self:resolveCurrentAbilityDependentValue(self.autoDispel)
|
|
26
26
|
)
|
|
27
27
|
end
|
|
28
|
+
____exports.RemoveBuffsTargetAbilityBehavior = __TS__Class()
|
|
29
|
+
local RemoveBuffsTargetAbilityBehavior = ____exports.RemoveBuffsTargetAbilityBehavior
|
|
30
|
+
RemoveBuffsTargetAbilityBehavior.name = "RemoveBuffsTargetAbilityBehavior"
|
|
31
|
+
__TS__ClassExtends(RemoveBuffsTargetAbilityBehavior, AbilityBehavior)
|
|
32
|
+
function RemoveBuffsTargetAbilityBehavior.prototype.____constructor(self, ability, polarity, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
|
|
33
|
+
AbilityBehavior.prototype.____constructor(self, ability)
|
|
34
|
+
self.polarity = polarity
|
|
35
|
+
self.resistanceType = resistanceType
|
|
36
|
+
self.includeExpirationTimers = includeExpirationTimers
|
|
37
|
+
self.includeAuras = includeAuras
|
|
38
|
+
self.autoDispel = autoDispel
|
|
39
|
+
end
|
|
40
|
+
function RemoveBuffsTargetAbilityBehavior.prototype.onUnitTargetImpact(self, _, target)
|
|
41
|
+
target:removeBuffs(
|
|
42
|
+
self:resolveCurrentAbilityDependentValue(self.polarity),
|
|
43
|
+
self:resolveCurrentAbilityDependentValue(self.resistanceType),
|
|
44
|
+
self:resolveCurrentAbilityDependentValue(self.includeExpirationTimers),
|
|
45
|
+
self:resolveCurrentAbilityDependentValue(self.includeAuras),
|
|
46
|
+
self:resolveCurrentAbilityDependentValue(self.autoDispel)
|
|
47
|
+
)
|
|
48
|
+
end
|
|
28
49
|
return ____exports
|
|
@@ -8,7 +8,7 @@ export declare class RestoreManaSelfAbilityBehavior extends AbilityBehavior {
|
|
|
8
8
|
constructor(ability: Ability, mana: AbilityDependentValue<number>);
|
|
9
9
|
onImpact(caster: Unit): void;
|
|
10
10
|
}
|
|
11
|
-
export declare class
|
|
11
|
+
export declare class RestoreManaTargetAbilityBehavior extends AbilityBehavior {
|
|
12
12
|
private readonly mana;
|
|
13
13
|
constructor(ability: Ability, mana: AbilityDependentValue<number>);
|
|
14
14
|
onUnitTargetImpact(caster: Unit, target: Unit): void;
|
|
@@ -15,15 +15,15 @@ end
|
|
|
15
15
|
function RestoreManaSelfAbilityBehavior.prototype.onImpact(self, caster)
|
|
16
16
|
caster.mana = caster.mana + self:resolveCurrentAbilityDependentValue(self.mana)
|
|
17
17
|
end
|
|
18
|
-
____exports.
|
|
19
|
-
local
|
|
20
|
-
|
|
21
|
-
__TS__ClassExtends(
|
|
22
|
-
function
|
|
18
|
+
____exports.RestoreManaTargetAbilityBehavior = __TS__Class()
|
|
19
|
+
local RestoreManaTargetAbilityBehavior = ____exports.RestoreManaTargetAbilityBehavior
|
|
20
|
+
RestoreManaTargetAbilityBehavior.name = "RestoreManaTargetAbilityBehavior"
|
|
21
|
+
__TS__ClassExtends(RestoreManaTargetAbilityBehavior, AbilityBehavior)
|
|
22
|
+
function RestoreManaTargetAbilityBehavior.prototype.____constructor(self, ability, mana)
|
|
23
23
|
AbilityBehavior.prototype.____constructor(self, ability)
|
|
24
24
|
self.mana = mana
|
|
25
25
|
end
|
|
26
|
-
function
|
|
26
|
+
function RestoreManaTargetAbilityBehavior.prototype.onUnitTargetImpact(self, caster, target)
|
|
27
27
|
target.mana = target.mana + self:resolveCurrentAbilityDependentValue(self.mana)
|
|
28
28
|
end
|
|
29
29
|
return ____exports
|
|
@@ -22,13 +22,17 @@ export declare abstract class AbilityBehavior<Parameters extends {
|
|
|
22
22
|
protected subscribe<T extends boolean | number | string>(value: SubscribableAbilityDependentValue<T>): void;
|
|
23
23
|
protected registerCommandEvent(orderTypeStringId?: string): void;
|
|
24
24
|
get ability(): Ability;
|
|
25
|
+
get unit(): Unit | undefined;
|
|
25
26
|
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
|
|
26
27
|
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
|
|
27
|
-
protected flashCasterEffect(widget: Widget): void;
|
|
28
|
-
protected flashTargetEffect(widget: Widget): void;
|
|
28
|
+
protected flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
29
|
+
protected flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
29
30
|
protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
30
31
|
protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
31
|
-
protected flashSpecialEffect(...args: [
|
|
32
|
+
protected flashSpecialEffect(...args: [
|
|
33
|
+
...pointOrWidget: [x: number, y: number] | [widget: Widget],
|
|
34
|
+
...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]
|
|
35
|
+
]): void;
|
|
32
36
|
private static MissileLaunchConfig;
|
|
33
37
|
private get missileLaunchConfig();
|
|
34
38
|
protected onCreate(): void;
|
|
@@ -5,7 +5,6 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
|
5
5
|
local __TS__New = ____lualib.__TS__New
|
|
6
6
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
7
7
|
local ____exports = {}
|
|
8
|
-
local createUnitEventListener
|
|
9
8
|
local ____behavior = require("engine.behavior")
|
|
10
9
|
local Behavior = ____behavior.Behavior
|
|
11
10
|
local ____unit = require("engine.unit")
|
|
@@ -30,17 +29,9 @@ local ____ability = require("engine.object-field.ability")
|
|
|
30
29
|
local AbilityField = ____ability.AbilityField
|
|
31
30
|
local AbilityLevelField = ____ability.AbilityLevelField
|
|
32
31
|
local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
|
|
33
|
-
local ____timer = require("core.types.timer")
|
|
34
|
-
local Timer = ____timer.Timer
|
|
35
32
|
local createBehaviorFunctionsByAbilityTypeId = {}
|
|
36
33
|
local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
|
|
37
|
-
local function
|
|
38
|
-
local unitEventListener = createUnitEventListener(key)
|
|
39
|
-
return function(unit, ability, ...)
|
|
40
|
-
Timer:run(unitEventListener, unit, ability, ...)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
createUnitEventListener = function(key)
|
|
34
|
+
local function createUnitEventListener(key)
|
|
44
35
|
return function(unit, ability, ...)
|
|
45
36
|
____exports.AbilityBehavior:forAll(ability, key, unit, ...)
|
|
46
37
|
end
|
|
@@ -114,20 +105,22 @@ end
|
|
|
114
105
|
function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
|
|
115
106
|
return resolveCurrentAbilityDependentValue(self.ability, value)
|
|
116
107
|
end
|
|
117
|
-
function AbilityBehavior.prototype.flashCasterEffect(self, widget)
|
|
108
|
+
function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
|
|
118
109
|
local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
119
110
|
Effect:flash(
|
|
120
111
|
CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
121
112
|
widget,
|
|
122
|
-
attachmentPoint ~= "" and attachmentPoint or "origin"
|
|
113
|
+
attachmentPoint ~= "" and attachmentPoint or "origin",
|
|
114
|
+
...
|
|
123
115
|
)
|
|
124
116
|
end
|
|
125
|
-
function AbilityBehavior.prototype.flashTargetEffect(self, widget)
|
|
117
|
+
function AbilityBehavior.prototype.flashTargetEffect(self, widget, ...)
|
|
126
118
|
local attachmentPoint = TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
127
119
|
Effect:flash(
|
|
128
120
|
TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
129
121
|
widget,
|
|
130
|
-
attachmentPoint ~= "" and attachmentPoint or "origin"
|
|
122
|
+
attachmentPoint ~= "" and attachmentPoint or "origin",
|
|
123
|
+
...
|
|
131
124
|
)
|
|
132
125
|
end
|
|
133
126
|
function AbilityBehavior.prototype.flashAreaEffect(self, x, y, ...)
|
|
@@ -146,20 +139,23 @@ function AbilityBehavior.prototype.flashEffect(self, x, y, ...)
|
|
|
146
139
|
...
|
|
147
140
|
)
|
|
148
141
|
end
|
|
149
|
-
function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget,
|
|
142
|
+
function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrParametersOrDuration, durationOrParameters, parameters)
|
|
150
143
|
if type(xOrWidget) == "number" then
|
|
151
144
|
Effect:flash(
|
|
152
145
|
SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
153
146
|
xOrWidget,
|
|
154
|
-
|
|
155
|
-
|
|
147
|
+
yOrParametersOrDuration,
|
|
148
|
+
durationOrParameters,
|
|
149
|
+
parameters
|
|
156
150
|
)
|
|
157
151
|
else
|
|
152
|
+
local attachmentPoint = SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
158
153
|
Effect:flash(
|
|
159
154
|
SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
160
155
|
xOrWidget,
|
|
161
|
-
|
|
162
|
-
|
|
156
|
+
attachmentPoint ~= "" and attachmentPoint or "origin",
|
|
157
|
+
yOrParametersOrDuration,
|
|
158
|
+
durationOrParameters
|
|
163
159
|
)
|
|
164
160
|
end
|
|
165
161
|
end
|
|
@@ -234,6 +230,18 @@ __TS__SetDescriptor(
|
|
|
234
230
|
end},
|
|
235
231
|
true
|
|
236
232
|
)
|
|
233
|
+
__TS__SetDescriptor(
|
|
234
|
+
AbilityBehavior.prototype,
|
|
235
|
+
"unit",
|
|
236
|
+
{get = function(self)
|
|
237
|
+
local owner = self.object.owner
|
|
238
|
+
if __TS__InstanceOf(owner, Unit) then
|
|
239
|
+
return owner
|
|
240
|
+
end
|
|
241
|
+
return owner.owner
|
|
242
|
+
end},
|
|
243
|
+
true
|
|
244
|
+
)
|
|
237
245
|
AbilityBehavior.MissileLaunchConfig = ____class_2
|
|
238
246
|
__TS__SetDescriptor(
|
|
239
247
|
AbilityBehavior.prototype,
|
|
@@ -257,13 +265,13 @@ __TS__SetDescriptor(
|
|
|
257
265
|
Unit.abilityDestructibleTargetChannelingStartEvent:addListener(createUnitEventListener("onDestructibleTargetChannelingStart"))
|
|
258
266
|
Unit.abilityPointTargetChannelingStartEvent:addListener(createUnitEventListener("onPointTargetChannelingStart"))
|
|
259
267
|
Unit.abilityNoTargetChannelingStartEvent:addListener(createUnitEventListener("onNoTargetChannelingStart"))
|
|
260
|
-
Unit.
|
|
261
|
-
Unit.
|
|
262
|
-
Unit.
|
|
263
|
-
Unit.
|
|
264
|
-
Unit.
|
|
265
|
-
Unit.
|
|
266
|
-
Unit.
|
|
268
|
+
Unit.abilityImpactEvent:addListener(createUnitEventListener("onImpact"))
|
|
269
|
+
Unit.abilityWidgetTargetImpactEvent:addListener(createUnitEventListener("onWidgetTargetImpact"))
|
|
270
|
+
Unit.abilityUnitTargetImpactEvent:addListener(createUnitEventListener("onUnitTargetImpact"))
|
|
271
|
+
Unit.abilityItemTargetImpactEvent:addListener(createUnitEventListener("onItemTargetImpact"))
|
|
272
|
+
Unit.abilityDestructibleTargetImpactEvent:addListener(createUnitEventListener("onDestructibleTargetImpact"))
|
|
273
|
+
Unit.abilityPointTargetImpactEvent:addListener(createUnitEventListener("onPointTargetImpact"))
|
|
274
|
+
Unit.abilityNoTargetImpactEvent:addListener(createUnitEventListener("onNoTargetImpact"))
|
|
267
275
|
Unit.abilityChannelingFinishEvent:addListener(createUnitEventListener("onChannelingFinish"))
|
|
268
276
|
Unit.abilityStopEvent:addListener(createUnitEventListener("onStop"))
|
|
269
277
|
end)(AbilityBehavior)
|
|
@@ -4,15 +4,21 @@ import { Unit } from "../../unit";
|
|
|
4
4
|
import { BuffTypeId } from "../../object-data/entry/buff-type";
|
|
5
5
|
import { TextTagPreset } from "../../text-tag";
|
|
6
6
|
import { Destructor } from "../../../destroyable";
|
|
7
|
-
|
|
7
|
+
import { BehaviorPriority } from "../../behavior";
|
|
8
|
+
export type StunImmunityUnitBehaviorParameters = {
|
|
9
|
+
readonly priority?: BehaviorPriority;
|
|
8
10
|
buffTypeIds?: LuaSet<BuffTypeId>;
|
|
9
11
|
textTagPreset?: TextTagPreset;
|
|
10
12
|
textTagText?: string;
|
|
13
|
+
additionalAction?: (this: void, unit: Unit) => void;
|
|
11
14
|
};
|
|
12
15
|
export declare class StunImmunityUnitBehavior extends UnitBehavior {
|
|
13
|
-
|
|
14
|
-
static defaultParameters:
|
|
15
|
-
constructor(unit: Unit, parameters?:
|
|
16
|
+
readonly parameters: Readonly<StunImmunityUnitBehaviorParameters>;
|
|
17
|
+
static defaultParameters: StunImmunityUnitBehaviorParameters;
|
|
18
|
+
constructor(unit: Unit, parameters?: Readonly<StunImmunityUnitBehaviorParameters>);
|
|
16
19
|
protected onDestroy(): Destructor;
|
|
17
|
-
|
|
20
|
+
onDamageReceived(): void;
|
|
21
|
+
onTargetingAbilityChannelingStart(): void;
|
|
22
|
+
onTargetingAbilityImpact(): void;
|
|
23
|
+
protected onEffect(): void;
|
|
18
24
|
}
|
|
@@ -12,31 +12,53 @@ local flatMapToLuaSet = ____arrays.flatMapToLuaSet
|
|
|
12
12
|
local map = ____arrays.map
|
|
13
13
|
local ____text_2Dtag = require("engine.text-tag")
|
|
14
14
|
local TextTag = ____text_2Dtag.TextTag
|
|
15
|
+
local ____timer = require("core.types.timer")
|
|
16
|
+
local Timer = ____timer.Timer
|
|
15
17
|
local DEFAULT_BUFF_TYPE_IDS = postcompile(function()
|
|
16
18
|
return flatMapToLuaSet(
|
|
17
19
|
AbilityType:getAllByBaseIds(map({
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
20
|
+
"AHtb",
|
|
21
|
+
"AHbh",
|
|
22
|
+
"AOws",
|
|
23
|
+
"AOw2",
|
|
24
|
+
"AUim",
|
|
25
|
+
"Acyc",
|
|
26
|
+
"ANfb",
|
|
27
|
+
"ANsb",
|
|
28
|
+
"ANcs",
|
|
29
|
+
"ANc1",
|
|
30
|
+
"ANc2",
|
|
31
|
+
"ANc3",
|
|
32
|
+
"ACbh",
|
|
33
|
+
"ANbh",
|
|
34
|
+
"SCc1",
|
|
35
|
+
"ACcy",
|
|
36
|
+
"ANb2",
|
|
37
|
+
"Awrs",
|
|
38
|
+
"Awrh",
|
|
39
|
+
"Awrg",
|
|
40
|
+
"ACtb",
|
|
41
|
+
"ACcb"
|
|
36
42
|
}, fourCC)),
|
|
37
43
|
function(abilityType) return __TS__ArrayFlat(abilityType.buffTypeIds) end
|
|
38
44
|
)
|
|
39
45
|
end)
|
|
46
|
+
local function process(behavior)
|
|
47
|
+
local hasRemovedBuffs = false
|
|
48
|
+
for buffTypeId in pairs(behavior.parameters.buffTypeIds or DEFAULT_BUFF_TYPE_IDS) do
|
|
49
|
+
hasRemovedBuffs = hasRemovedBuffs or behavior.unit:removeBuff(buffTypeId)
|
|
50
|
+
end
|
|
51
|
+
if hasRemovedBuffs then
|
|
52
|
+
behavior.onEffect(behavior)
|
|
53
|
+
if behavior.parameters.textTagText ~= nil then
|
|
54
|
+
TextTag:flash(TextTag.MISS, behavior.parameters.textTagText, behavior.unit.x, behavior.unit.y)
|
|
55
|
+
end
|
|
56
|
+
local ____opt_0 = behavior.parameters.additionalAction
|
|
57
|
+
if ____opt_0 ~= nil then
|
|
58
|
+
____opt_0(behavior.unit)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
40
62
|
____exports.StunImmunityUnitBehavior = __TS__Class()
|
|
41
63
|
local StunImmunityUnitBehavior = ____exports.StunImmunityUnitBehavior
|
|
42
64
|
StunImmunityUnitBehavior.name = "StunImmunityUnitBehavior"
|
|
@@ -45,23 +67,26 @@ function StunImmunityUnitBehavior.prototype.____constructor(self, unit, paramete
|
|
|
45
67
|
if parameters == nil then
|
|
46
68
|
parameters = ____exports.StunImmunityUnitBehavior.defaultParameters
|
|
47
69
|
end
|
|
48
|
-
UnitBehavior.prototype.____constructor(self, unit)
|
|
70
|
+
UnitBehavior.prototype.____constructor(self, unit, parameters.priority)
|
|
49
71
|
self.parameters = parameters
|
|
50
72
|
unit:decrementStunCounter()
|
|
51
|
-
self
|
|
73
|
+
process(self)
|
|
52
74
|
end
|
|
53
75
|
function StunImmunityUnitBehavior.prototype.onDestroy(self)
|
|
54
76
|
self.unit:incrementStunCounter()
|
|
55
77
|
return UnitBehavior.prototype.onDestroy(self)
|
|
56
78
|
end
|
|
57
|
-
function StunImmunityUnitBehavior.prototype.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
function StunImmunityUnitBehavior.prototype.onDamageReceived(self)
|
|
80
|
+
process(self)
|
|
81
|
+
Timer:run(process, self)
|
|
82
|
+
end
|
|
83
|
+
function StunImmunityUnitBehavior.prototype.onTargetingAbilityChannelingStart(self)
|
|
84
|
+
process(self)
|
|
85
|
+
end
|
|
86
|
+
function StunImmunityUnitBehavior.prototype.onTargetingAbilityImpact(self)
|
|
87
|
+
process(self)
|
|
88
|
+
end
|
|
89
|
+
function StunImmunityUnitBehavior.prototype.onEffect(self)
|
|
65
90
|
end
|
|
66
91
|
StunImmunityUnitBehavior.defaultParameters = {buffTypeIds = DEFAULT_BUFF_TYPE_IDS, textTagPreset = TextTag.MISS, textTagText = nil}
|
|
67
92
|
return ____exports
|
|
@@ -1,26 +1,64 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
-
import { Behavior } from "../behavior";
|
|
2
|
+
import { Behavior, BehaviorPriority } from "../behavior";
|
|
3
3
|
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
7
|
import { Item } from "../internal/item";
|
|
8
|
+
import { AbilityBehavior } from "./ability";
|
|
9
|
+
import { Event } from "../../event";
|
|
10
|
+
import { Destructor } from "../../destroyable";
|
|
11
|
+
import type { Widget } from "../../core/types/widget";
|
|
12
|
+
import { Destructable } from "../../core/types/destructable";
|
|
13
|
+
import type { Buff } from "../buff";
|
|
14
|
+
import { UnitBonusType } from "../internal/unit/bonus";
|
|
15
|
+
import { Player } from "../../core/types/player";
|
|
16
|
+
import { UnitTypeId } from "../object-data/entry/unit-type";
|
|
8
17
|
export type UnitBehaviorConstructor<Args extends any[]> = new (unit: Unit, ...args: Args) => UnitBehavior;
|
|
9
18
|
export declare abstract class UnitBehavior<PeriodicActionParameters extends any[] = any[]> extends Behavior<Unit, PeriodicActionParameters> {
|
|
10
|
-
|
|
19
|
+
readonly sourceAbilityBehavior?: AbilityBehavior;
|
|
20
|
+
private _bonusIdByBonusType?;
|
|
21
|
+
constructor(unit: Unit, priority?: BehaviorPriority);
|
|
22
|
+
protected onDestroy(): Destructor;
|
|
11
23
|
get unit(): Unit;
|
|
24
|
+
protected getUnitBonus(bonusType: UnitBonusType): number;
|
|
25
|
+
protected addOrUpdateOrRemoveUnitBonus(bonusType: UnitBonusType, value: number): void;
|
|
26
|
+
protected registerOwningPlayerEvent<T extends string, Args extends any[]>(this: UnitBehavior<PeriodicActionParameters> & Record<T, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, extractPlayer: (...args: Args) => Player | undefined, listener: T): void;
|
|
27
|
+
protected registerInRangeUnitEvent<T extends string, Args extends any[]>(this: UnitBehavior<PeriodicActionParameters> & Record<T, (this: this, ...args: Args) => unknown>, event: Event<[...Args]>, extractUnit: (...args: Args) => Unit | undefined, range: number, listener: T): void;
|
|
28
|
+
onImmediateOrder(orderId: number): void;
|
|
29
|
+
onTargetOrder(orderId: number, target: Widget): void;
|
|
30
|
+
onPointOrder(orderId: number, x: number, y: number): void;
|
|
12
31
|
onAutoAttackStart(target: Unit): void;
|
|
13
32
|
onAutoAttackFinish(target: Unit): void;
|
|
33
|
+
onTargetingAutoAttackStart(source: Unit): void;
|
|
34
|
+
onTargetingAutoAttackFinish(source: Unit): void;
|
|
14
35
|
onDamageDealing(target: Unit, event: DamagingEvent): void;
|
|
15
36
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|
|
16
37
|
onDamageReceiving(source: Unit | undefined, event: DamagingEvent): void;
|
|
17
38
|
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
18
39
|
onAbilityGained(ability: Ability): void;
|
|
19
40
|
onAbilityLost(ability: Ability): void;
|
|
41
|
+
onAbilityChannelingStart(ability: Ability): void;
|
|
42
|
+
onAbilityImpact(ability: Ability): void;
|
|
43
|
+
onAbilityWidgetTargetImpact(ability: Ability, target: Widget): void;
|
|
44
|
+
onAbilityUnitTargetImpact(ability: Ability, target: Unit): void;
|
|
45
|
+
onAbilityItemTargetImpact(ability: Ability, target: Item): void;
|
|
46
|
+
onAbilityDestructibleTargetImpact(ability: Ability, target: Destructable): void;
|
|
47
|
+
onAbilityPointTargetImpact(ability: Ability, x: number, y: number): void;
|
|
48
|
+
onAbilityNoTargetImpact(ability: Ability): void;
|
|
49
|
+
onAbilityChannelingFinish(ability: Ability): void;
|
|
50
|
+
onAbilityStop(ability: Ability): void;
|
|
51
|
+
onTargetingAbilityChannelingStart(ability: Ability, source: Unit): void;
|
|
52
|
+
onTargetingAbilityImpact(ability: Ability, source: Unit): void;
|
|
53
|
+
onBuffGained(buff: Buff): void;
|
|
54
|
+
onBuffLost(buff: Buff): void;
|
|
20
55
|
onItemDropped(item: Item): void;
|
|
21
56
|
onItemPickedUp(item: Item): void;
|
|
22
57
|
onItemUsed(item: Item): void;
|
|
23
58
|
onItemStacked(item: Item): void;
|
|
59
|
+
onItemChargesChanged(item: Item): void;
|
|
24
60
|
onKill(target: Unit): void;
|
|
25
61
|
onDeath(source: Unit | undefined): void;
|
|
62
|
+
onOwnerChange(previousOwner: Player): void;
|
|
63
|
+
static bindUnitType<Args extends any[]>(this: UnitBehaviorConstructor<Args>, unitTypeId: UnitTypeId, ...args: Args): void;
|
|
26
64
|
}
|