warscript 0.0.1-dev.96a6f7e → 0.0.1-dev.971c803
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 +6 -0
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +28 -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 +15 -3
- package/engine/behaviour/ability.lua +93 -34
- package/engine/buff.d.ts +11 -1
- package/engine/buff.lua +50 -19
- package/engine/internal/ability.d.ts +15 -2
- package/engine/internal/ability.lua +84 -4
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +50 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +1 -0
- package/engine/internal/unit/item.lua +8 -4
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit.d.ts +21 -7
- package/engine/internal/unit.lua +152 -77
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +8 -2
- package/engine/lightning.lua +27 -2
- 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 +2 -0
- package/engine/object-data/entry/item-type.lua +13 -0
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +9 -3
- package/engine/object-field/ability.lua +3 -0
- package/engine/object-field.d.ts +2 -2
- package/engine/object-field.lua +4 -0
- 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/package.json +2 -2
- 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,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
|
|
@@ -7,24 +7,36 @@ import { Widget } from "../../core/types/widget";
|
|
|
7
7
|
import { Item } from "../internal/item";
|
|
8
8
|
import { Destructable } from "../../core/types/destructable";
|
|
9
9
|
import { EffectParameters } from "../../core/types/effect";
|
|
10
|
-
import { AbilityDependentValue } from "../object-field/ability";
|
|
10
|
+
import { AbilityDependentValue, ReadonlySubscribableAbilityDependentValue, SubscribableAbilityDependentValue } from "../object-field/ability";
|
|
11
|
+
import { Destructor } from "../../destroyable";
|
|
11
12
|
export type AbilityBehaviorConstructor<Args extends any[]> = new (ability: Ability, ...args: Args) => AbilityBehavior;
|
|
13
|
+
export type AbilityBehaviorParameters = {
|
|
14
|
+
isExclusiveOnImpactHandler?: boolean;
|
|
15
|
+
};
|
|
12
16
|
export declare abstract class AbilityBehavior<Parameters extends {
|
|
13
17
|
periodicActionParameters?: any[];
|
|
14
18
|
missileParameters?: any[];
|
|
15
19
|
} = {}> extends Behavior<Ability, NonNullable<Parameters["periodicActionParameters"]>> {
|
|
16
|
-
constructor(ability: Ability);
|
|
20
|
+
constructor(ability: Ability, parameters?: AbilityBehaviorParameters);
|
|
21
|
+
protected onDestroy(): Destructor;
|
|
22
|
+
protected subscribe<T extends boolean | number | string>(value: SubscribableAbilityDependentValue<T>): void;
|
|
23
|
+
protected registerCommandEvent(orderTypeStringId?: string): void;
|
|
17
24
|
get ability(): Ability;
|
|
18
25
|
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
|
|
26
|
+
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
|
|
27
|
+
protected flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
28
|
+
protected flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
19
29
|
protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
20
30
|
protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
21
31
|
protected flashSpecialEffect(...args: [...pointOrWidget: [x: number, y: number] | [widget: Widget], duration?: number]): void;
|
|
22
32
|
private static MissileLaunchConfig;
|
|
23
33
|
private get missileLaunchConfig();
|
|
24
|
-
protected
|
|
34
|
+
protected onCreate(): void;
|
|
35
|
+
onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
|
|
25
36
|
onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
|
|
26
37
|
onUnitGainAbility(_unit: Unit): void;
|
|
27
38
|
onUnitLoseAbility(_unit: Unit): void;
|
|
39
|
+
onCommand(caster: Unit, orderTypeStringId: string): void;
|
|
28
40
|
onCastingStart(caster: Unit): void;
|
|
29
41
|
onCastingFinish(caster: Unit): void;
|
|
30
42
|
onChannelingStart(caster: Unit): void;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
4
5
|
local __TS__New = ____lualib.__TS__New
|
|
5
6
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
6
7
|
local ____exports = {}
|
|
8
|
+
local createUnitEventListener
|
|
7
9
|
local ____behavior = require("engine.behavior")
|
|
8
10
|
local Behavior = ____behavior.Behavior
|
|
9
11
|
local ____unit = require("engine.unit")
|
|
@@ -14,31 +16,44 @@ local ____effect = require("core.types.effect")
|
|
|
14
16
|
local Effect = ____effect.Effect
|
|
15
17
|
local ____ability = require("engine.standard.fields.ability")
|
|
16
18
|
local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
19
|
+
local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
|
|
20
|
+
local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
17
21
|
local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
18
22
|
local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
|
|
19
23
|
local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
20
24
|
local MISSILE_SPEED_ABILITY_INTEGER_FIELD = ____ability.MISSILE_SPEED_ABILITY_INTEGER_FIELD
|
|
21
25
|
local SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD = ____ability.SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD
|
|
22
26
|
local SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
27
|
+
local TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
|
|
28
|
+
local TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
23
29
|
local ____ability = require("engine.object-field.ability")
|
|
30
|
+
local AbilityField = ____ability.AbilityField
|
|
31
|
+
local AbilityLevelField = ____ability.AbilityLevelField
|
|
24
32
|
local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
|
|
25
33
|
local ____timer = require("core.types.timer")
|
|
26
34
|
local Timer = ____timer.Timer
|
|
27
|
-
local ____missile = require("core.types.missile")
|
|
28
|
-
local Missile = ____missile.Missile
|
|
29
35
|
local createBehaviorFunctionsByAbilityTypeId = {}
|
|
30
|
-
local
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
|
|
37
|
+
local function createZeroTimerUnitEventListener(key)
|
|
38
|
+
local unitEventListener = createUnitEventListener(key)
|
|
39
|
+
return function(unit, ability, ...)
|
|
40
|
+
Timer:run(unitEventListener, unit, ability, ...)
|
|
33
41
|
end
|
|
34
42
|
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
43
|
+
createUnitEventListener = function(key)
|
|
44
|
+
return function(unit, ability, ...)
|
|
45
|
+
____exports.AbilityBehavior:forAll(ability, key, unit, ...)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
local registeredCommandEventIds = {}
|
|
49
|
+
local subscribedValuesByAbilityBehavior = {}
|
|
50
|
+
local ____class_2 = __TS__Class()
|
|
51
|
+
____class_2.name = ""
|
|
52
|
+
function ____class_2.prototype.____constructor(self, abilityBehavior)
|
|
38
53
|
self.abilityBehavior = abilityBehavior
|
|
39
54
|
end
|
|
40
55
|
__TS__SetDescriptor(
|
|
41
|
-
|
|
56
|
+
____class_2.prototype,
|
|
42
57
|
"art",
|
|
43
58
|
{get = function(self)
|
|
44
59
|
return MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.abilityBehavior.ability, 0)
|
|
@@ -46,7 +61,7 @@ __TS__SetDescriptor(
|
|
|
46
61
|
true
|
|
47
62
|
)
|
|
48
63
|
__TS__SetDescriptor(
|
|
49
|
-
|
|
64
|
+
____class_2.prototype,
|
|
50
65
|
"arc",
|
|
51
66
|
{get = function(self)
|
|
52
67
|
return MISSILE_ARC_ABILITY_FLOAT_FIELD:getValue(self.abilityBehavior.ability)
|
|
@@ -54,7 +69,7 @@ __TS__SetDescriptor(
|
|
|
54
69
|
true
|
|
55
70
|
)
|
|
56
71
|
__TS__SetDescriptor(
|
|
57
|
-
|
|
72
|
+
____class_2.prototype,
|
|
58
73
|
"speed",
|
|
59
74
|
{get = function(self)
|
|
60
75
|
return MISSILE_SPEED_ABILITY_INTEGER_FIELD:getValue(self.abilityBehavior.ability)
|
|
@@ -65,12 +80,58 @@ ____exports.AbilityBehavior = __TS__Class()
|
|
|
65
80
|
local AbilityBehavior = ____exports.AbilityBehavior
|
|
66
81
|
AbilityBehavior.name = "AbilityBehavior"
|
|
67
82
|
__TS__ClassExtends(AbilityBehavior, Behavior)
|
|
68
|
-
function AbilityBehavior.prototype.____constructor(self, ability)
|
|
83
|
+
function AbilityBehavior.prototype.____constructor(self, ability, parameters)
|
|
69
84
|
Behavior.prototype.____constructor(self, ability)
|
|
85
|
+
if parameters and parameters.isExclusiveOnImpactHandler then
|
|
86
|
+
exclusiveOnImpactHandlerAbilityBehaviorByAbility[ability] = self
|
|
87
|
+
end
|
|
88
|
+
self:onCreate()
|
|
89
|
+
end
|
|
90
|
+
function AbilityBehavior.prototype.onDestroy(self)
|
|
91
|
+
subscribedValuesByAbilityBehavior[self] = nil
|
|
92
|
+
return Behavior.prototype.onDestroy(self)
|
|
93
|
+
end
|
|
94
|
+
function AbilityBehavior.prototype.subscribe(self, value)
|
|
95
|
+
if __TS__InstanceOf(value, AbilityField) or __TS__InstanceOf(value, AbilityLevelField) then
|
|
96
|
+
local subscribedValues = subscribedValuesByAbilityBehavior[self]
|
|
97
|
+
if subscribedValues == nil then
|
|
98
|
+
subscribedValues = {}
|
|
99
|
+
subscribedValuesByAbilityBehavior[self] = subscribedValues
|
|
100
|
+
end
|
|
101
|
+
subscribedValues[value] = true
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
function AbilityBehavior.prototype.registerCommandEvent(self, orderTypeStringId)
|
|
105
|
+
if orderTypeStringId == nil then
|
|
106
|
+
orderTypeStringId = self.ability.orderTypeStringId
|
|
107
|
+
end
|
|
108
|
+
local commandEventId = (tostring(self.ability.typeId) .. "#") .. orderTypeStringId
|
|
109
|
+
if not (registeredCommandEventIds[commandEventId] ~= nil) then
|
|
110
|
+
registeredCommandEventIds[commandEventId] = true
|
|
111
|
+
Unit.abilityCommandEvent[self.ability.typeId][orderTypeStringId]:addListener(createUnitEventListener("onCommand"))
|
|
112
|
+
end
|
|
70
113
|
end
|
|
71
114
|
function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
|
|
72
115
|
return resolveCurrentAbilityDependentValue(self.ability, value)
|
|
73
116
|
end
|
|
117
|
+
function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
|
|
118
|
+
local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
119
|
+
Effect:flash(
|
|
120
|
+
CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
121
|
+
widget,
|
|
122
|
+
attachmentPoint ~= "" and attachmentPoint or "origin",
|
|
123
|
+
...
|
|
124
|
+
)
|
|
125
|
+
end
|
|
126
|
+
function AbilityBehavior.prototype.flashTargetEffect(self, widget, ...)
|
|
127
|
+
local attachmentPoint = TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
128
|
+
Effect:flash(
|
|
129
|
+
TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
130
|
+
widget,
|
|
131
|
+
attachmentPoint ~= "" and attachmentPoint or "origin",
|
|
132
|
+
...
|
|
133
|
+
)
|
|
134
|
+
end
|
|
74
135
|
function AbilityBehavior.prototype.flashAreaEffect(self, x, y, ...)
|
|
75
136
|
Effect:flash(
|
|
76
137
|
AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
@@ -96,23 +157,18 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrDurati
|
|
|
96
157
|
duration
|
|
97
158
|
)
|
|
98
159
|
else
|
|
160
|
+
local attachmentPoint = SPECIAL_EFFECT_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
99
161
|
Effect:flash(
|
|
100
162
|
SPECIAL_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
101
163
|
xOrWidget,
|
|
102
|
-
|
|
164
|
+
attachmentPoint ~= "" and attachmentPoint or "origin",
|
|
103
165
|
yOrDuration
|
|
104
166
|
)
|
|
105
167
|
end
|
|
106
168
|
end
|
|
107
|
-
function AbilityBehavior.prototype.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
source,
|
|
111
|
-
target,
|
|
112
|
-
invokeOnMissileArrival,
|
|
113
|
-
self,
|
|
114
|
-
...
|
|
115
|
-
)
|
|
169
|
+
function AbilityBehavior.prototype.onCreate(self)
|
|
170
|
+
end
|
|
171
|
+
function AbilityBehavior.prototype.onValueChange(self, _value)
|
|
116
172
|
end
|
|
117
173
|
function AbilityBehavior.prototype.onMissileArrival(self, ...)
|
|
118
174
|
end
|
|
@@ -120,6 +176,8 @@ function AbilityBehavior.prototype.onUnitGainAbility(self, _unit)
|
|
|
120
176
|
end
|
|
121
177
|
function AbilityBehavior.prototype.onUnitLoseAbility(self, _unit)
|
|
122
178
|
end
|
|
179
|
+
function AbilityBehavior.prototype.onCommand(self, caster, orderTypeStringId)
|
|
180
|
+
end
|
|
123
181
|
function AbilityBehavior.prototype.onCastingStart(self, caster)
|
|
124
182
|
end
|
|
125
183
|
function AbilityBehavior.prototype.onCastingFinish(self, caster)
|
|
@@ -179,7 +237,7 @@ __TS__SetDescriptor(
|
|
|
179
237
|
end},
|
|
180
238
|
true
|
|
181
239
|
)
|
|
182
|
-
AbilityBehavior.MissileLaunchConfig =
|
|
240
|
+
AbilityBehavior.MissileLaunchConfig = ____class_2
|
|
183
241
|
__TS__SetDescriptor(
|
|
184
242
|
AbilityBehavior.prototype,
|
|
185
243
|
"missileLaunchConfig",
|
|
@@ -191,17 +249,6 @@ __TS__SetDescriptor(
|
|
|
191
249
|
true
|
|
192
250
|
);
|
|
193
251
|
(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
252
|
Unit.abilityGainedEvent:addListener(createUnitEventListener("onUnitGainAbility"))
|
|
206
253
|
Unit.abilityLostEvent:addListener(createUnitEventListener("onUnitLoseAbility"))
|
|
207
254
|
Unit.abilityCastingStartEvent:addListener(createUnitEventListener("onCastingStart"))
|
|
@@ -223,6 +270,18 @@ __TS__SetDescriptor(
|
|
|
223
270
|
Unit.abilityChannelingFinishEvent:addListener(createUnitEventListener("onChannelingFinish"))
|
|
224
271
|
Unit.abilityStopEvent:addListener(createUnitEventListener("onStop"))
|
|
225
272
|
end)(AbilityBehavior)
|
|
273
|
+
local function checkBehaviorOnValueChange(behavior, field)
|
|
274
|
+
local subscribedValues = subscribedValuesByAbilityBehavior[behavior]
|
|
275
|
+
if subscribedValues ~= nil and subscribedValues[field] ~= nil then
|
|
276
|
+
behavior:onValueChange(field)
|
|
277
|
+
end
|
|
278
|
+
end
|
|
279
|
+
AbilityField.valueChangeEvent:addListener(function(ability, field)
|
|
280
|
+
____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
|
|
281
|
+
end)
|
|
282
|
+
AbilityLevelField.valueChangeEvent:addListener(function(ability, field)
|
|
283
|
+
____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
|
|
284
|
+
end)
|
|
226
285
|
Ability.onCreate:addListener(function(ability)
|
|
227
286
|
local createBehaviorFunctions = createBehaviorFunctionsByAbilityTypeId[ability.typeId]
|
|
228
287
|
if createBehaviorFunctions ~= nil then
|
package/engine/buff.d.ts
CHANGED
|
@@ -8,9 +8,11 @@ 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";
|
|
15
|
+
import { Event } from "../event";
|
|
14
16
|
export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
|
|
15
17
|
type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
|
|
16
18
|
type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
|
|
@@ -54,6 +56,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
54
56
|
armorIncreaseFactor?: NumberParameterValueType;
|
|
55
57
|
attackSpeedIncreaseFactor?: NumberParameterValueType;
|
|
56
58
|
movementSpeedIncreaseFactor?: NumberParameterValueType;
|
|
59
|
+
evasionProbability?: NumberParameterValueType;
|
|
57
60
|
damageFactor?: NumberParameterValueType;
|
|
58
61
|
receivedDamageFactor?: NumberParameterValueType;
|
|
59
62
|
receivedMagicDamageFactor?: NumberParameterValueType;
|
|
@@ -247,11 +250,17 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
247
250
|
set attackSpeedIncreaseFactor(attackSpeedIncreaseFactor: number);
|
|
248
251
|
get movementSpeedIncreaseFactor(): number;
|
|
249
252
|
set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
|
|
253
|
+
get evasionProbability(): number;
|
|
254
|
+
set evasionProbability(evasionProbability: number);
|
|
250
255
|
get duration(): number;
|
|
251
256
|
get remainingDuration(): number;
|
|
252
257
|
set remainingDuration(remainingDuration: number);
|
|
253
|
-
flashEffect(...parameters: [
|
|
258
|
+
flashEffect(...parameters: [
|
|
259
|
+
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
260
|
+
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
261
|
+
]): void;
|
|
254
262
|
flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
|
|
263
|
+
protected onCreate(): void;
|
|
255
264
|
protected onDestroy(): Destructor;
|
|
256
265
|
static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
|
|
257
266
|
static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
|
|
@@ -259,5 +268,6 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
259
268
|
onDeath(source: Unit | undefined): void;
|
|
260
269
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|
|
261
270
|
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
271
|
+
static readonly destroyEvent: Event<[Buff<object>]>;
|
|
262
272
|
}
|
|
263
273
|
export {};
|
package/engine/buff.lua
CHANGED
|
@@ -44,8 +44,14 @@ local ____unit = require("engine.behaviour.unit")
|
|
|
44
44
|
local UnitBehavior = ____unit.UnitBehavior
|
|
45
45
|
local ____arrays = require("utility.arrays")
|
|
46
46
|
local forEach = ____arrays.forEach
|
|
47
|
+
local ____event = require("event")
|
|
48
|
+
local Event = ____event.Event
|
|
47
49
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
50
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
51
|
+
local ____item = require("engine.internal.item")
|
|
52
|
+
local Item = ____item.Item
|
|
53
|
+
local ____destructable = require("core.types.destructable")
|
|
54
|
+
local Destructable = ____destructable.Destructable
|
|
49
55
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
56
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
57
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -94,6 +100,7 @@ local buffParametersKeys = {
|
|
|
94
100
|
armorIncreaseFactor = true,
|
|
95
101
|
attackSpeedIncreaseFactor = true,
|
|
96
102
|
movementSpeedIncreaseFactor = true,
|
|
103
|
+
evasionProbability = true,
|
|
97
104
|
damageFactor = true,
|
|
98
105
|
receivedDamageFactor = true,
|
|
99
106
|
receivedMagicDamageFactor = true,
|
|
@@ -176,6 +183,7 @@ local buffNumberParameters = {
|
|
|
176
183
|
"durationIncreaseOnAutoAttack",
|
|
177
184
|
"attackSpeedIncreaseFactor",
|
|
178
185
|
"movementSpeedIncreaseFactor",
|
|
186
|
+
"evasionProbability",
|
|
179
187
|
"armorIncrease",
|
|
180
188
|
"damageFactor",
|
|
181
189
|
"receivedDamageFactor",
|
|
@@ -292,6 +300,7 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
292
300
|
source:healTarget(buff[100], healingPerInterval)
|
|
293
301
|
end
|
|
294
302
|
end
|
|
303
|
+
local buffDestroyEvent = __TS__New(Event)
|
|
295
304
|
____exports.Buff = __TS__Class()
|
|
296
305
|
local Buff = ____exports.Buff
|
|
297
306
|
Buff.name = "Buff"
|
|
@@ -482,6 +491,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
482
491
|
timer:start(duration, false, expireBuff, self)
|
|
483
492
|
self._timer = timer
|
|
484
493
|
end
|
|
494
|
+
self:onCreate()
|
|
485
495
|
end
|
|
486
496
|
function Buff.prototype.getUnitBonus(self, bonusType)
|
|
487
497
|
local ____opt_36 = self._bonusIdByBonusType
|
|
@@ -496,26 +506,30 @@ function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
|
496
506
|
end
|
|
497
507
|
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
498
508
|
end
|
|
499
|
-
function Buff.prototype.flashEffect(self,
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
local ____Effect_flash_41 = Effect.flash
|
|
503
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
504
|
-
self[104],
|
|
505
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
506
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
507
|
-
)
|
|
508
|
-
local ____isWidgetProvided_38
|
|
509
|
-
if isWidgetProvided then
|
|
510
|
-
____isWidgetProvided_38 = duration
|
|
509
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
510
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
511
|
+
Effect:flash(self[104], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
511
512
|
else
|
|
512
|
-
|
|
513
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
514
|
+
local ____Effect_40 = Effect
|
|
515
|
+
local ____Effect_flash_41 = Effect.flash
|
|
516
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
517
|
+
self[104],
|
|
518
|
+
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
519
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
520
|
+
)
|
|
521
|
+
local ____isWidgetProvided_38
|
|
522
|
+
if isWidgetProvided then
|
|
523
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
524
|
+
else
|
|
525
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
526
|
+
end
|
|
527
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
528
|
+
____Effect_flash_41(
|
|
529
|
+
____Effect_40,
|
|
530
|
+
__TS__SparseArraySpread(____array_39)
|
|
531
|
+
)
|
|
513
532
|
end
|
|
514
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
515
|
-
____Effect_flash_41(
|
|
516
|
-
____Effect_40,
|
|
517
|
-
__TS__SparseArraySpread(____array_39)
|
|
518
|
-
)
|
|
519
533
|
end
|
|
520
534
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
521
535
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
@@ -538,6 +552,8 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
538
552
|
__TS__SparseArraySpread(____array_43)
|
|
539
553
|
)
|
|
540
554
|
end
|
|
555
|
+
function Buff.prototype.onCreate(self)
|
|
556
|
+
end
|
|
541
557
|
function Buff.prototype.onDestroy(self)
|
|
542
558
|
local unit = self._unit
|
|
543
559
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
@@ -581,6 +597,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
581
597
|
removeUnitBonus(unit, bonusType, bonusId)
|
|
582
598
|
end
|
|
583
599
|
end
|
|
600
|
+
Event.invoke(buffDestroyEvent, self)
|
|
584
601
|
return UnitBehavior.prototype.onDestroy(self)
|
|
585
602
|
end
|
|
586
603
|
function Buff.apply(self, ...)
|
|
@@ -1163,6 +1180,19 @@ __TS__SetDescriptor(
|
|
|
1163
1180
|
},
|
|
1164
1181
|
true
|
|
1165
1182
|
)
|
|
1183
|
+
__TS__SetDescriptor(
|
|
1184
|
+
Buff.prototype,
|
|
1185
|
+
"evasionProbability",
|
|
1186
|
+
{
|
|
1187
|
+
get = function(self)
|
|
1188
|
+
return self:getUnitBonus(UnitBonusType.EVASION_PROBABILITY)
|
|
1189
|
+
end,
|
|
1190
|
+
set = function(self, evasionProbability)
|
|
1191
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.EVASION_PROBABILITY, evasionProbability)
|
|
1192
|
+
end
|
|
1193
|
+
},
|
|
1194
|
+
true
|
|
1195
|
+
)
|
|
1166
1196
|
__TS__SetDescriptor(
|
|
1167
1197
|
Buff.prototype,
|
|
1168
1198
|
"duration",
|
|
@@ -1210,7 +1240,8 @@ __TS__SetDescriptor(
|
|
|
1210
1240
|
end
|
|
1211
1241
|
},
|
|
1212
1242
|
true
|
|
1213
|
-
)
|
|
1243
|
+
)
|
|
1244
|
+
Buff.destroyEvent = buffDestroyEvent;
|
|
1214
1245
|
(function(self)
|
|
1215
1246
|
local function destroyBuffIfNeeded(buff)
|
|
1216
1247
|
if getUnitAbility(buff[100].handle, buff.typeId) ~= buff.handle then
|
|
@@ -12,7 +12,8 @@ export declare abstract class Ability extends Handle<jability> {
|
|
|
12
12
|
protected constructor(handle: jability, typeId: number);
|
|
13
13
|
toString(): string;
|
|
14
14
|
get parentTypeId(): number;
|
|
15
|
-
get
|
|
15
|
+
get orderTypeStringId(): string;
|
|
16
|
+
get orderTypeId(): number;
|
|
16
17
|
abstract readonly owner: Unit | Item;
|
|
17
18
|
getSnapshot(): AbilitySnapshot;
|
|
18
19
|
hasField(field: jabilityfield | number): boolean;
|
|
@@ -34,6 +35,9 @@ export declare abstract class Ability extends Handle<jability> {
|
|
|
34
35
|
setField(field: jabilitystringlevelfield, level: number, value: string): boolean;
|
|
35
36
|
get levelCount(): number;
|
|
36
37
|
abstract get level(): number;
|
|
38
|
+
abstract get cooldownRemaining(): number;
|
|
39
|
+
abstract set cooldownRemaining(cooldownRemaining: number);
|
|
40
|
+
abstract interruptCast(): void;
|
|
37
41
|
static get onCreate(): Event<[Ability]>;
|
|
38
42
|
static get destroyEvent(): Event<[Ability]>;
|
|
39
43
|
}
|
|
@@ -44,15 +48,21 @@ export declare class UnrecognizedAbility extends Ability {
|
|
|
44
48
|
readonly owner: Unit;
|
|
45
49
|
constructor(typeId: number, owner: Unit);
|
|
46
50
|
get level(): number;
|
|
51
|
+
get cooldownRemaining(): number;
|
|
52
|
+
set cooldownRemaining(_: number);
|
|
53
|
+
interruptCast(): void;
|
|
47
54
|
}
|
|
48
55
|
export declare class UnitAbility extends Ability {
|
|
49
56
|
readonly owner: Unit;
|
|
50
57
|
private readonly u;
|
|
51
58
|
constructor(handle: jability, typeId: number, owner: Unit);
|
|
59
|
+
incrementHideCounter(): void;
|
|
60
|
+
decrementHideCounter(): void;
|
|
52
61
|
get level(): number;
|
|
53
62
|
set level(v: number);
|
|
54
63
|
get cooldownRemaining(): number;
|
|
55
|
-
set cooldownRemaining(
|
|
64
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
65
|
+
interruptCast(): void;
|
|
56
66
|
static get onCreate(): Event<[UnitAbility]>;
|
|
57
67
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
58
68
|
}
|
|
@@ -76,6 +86,9 @@ export declare class ItemAbility extends Ability {
|
|
|
76
86
|
setField(field: jabilitybooleanlevelfield, level: number, value: boolean): boolean;
|
|
77
87
|
setField(field: jabilitystringlevelfield, level: number, value: string): boolean;
|
|
78
88
|
get level(): number;
|
|
89
|
+
get cooldownRemaining(): number;
|
|
90
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
91
|
+
interruptCast(): void;
|
|
79
92
|
static get onCreate(): Event<[ItemAbility]>;
|
|
80
93
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
81
94
|
}
|