warscript 0.0.1-dev.29b3feb → 0.0.1-dev.2ae9956
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/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 +13 -2
- package/engine/internal/ability.lua +77 -4
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item.d.ts +2 -2
- package/engine/internal/item.lua +56 -25
- 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 +52 -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.lua +6 -12
- package/engine/internal/unit/main-selected.d.ts +6 -0
- package/engine/internal/unit/main-selected.lua +12 -1
- package/engine/internal/unit.d.ts +3 -1
- package/engine/internal/unit.lua +65 -26
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +8 -2
- package/engine/lightning.lua +27 -2
- 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 +1 -0
- package/engine/unit.lua +1 -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
|
@@ -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,6 +48,9 @@ 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;
|
|
@@ -54,7 +61,8 @@ export declare class UnitAbility extends Ability {
|
|
|
54
61
|
get level(): number;
|
|
55
62
|
set level(v: number);
|
|
56
63
|
get cooldownRemaining(): number;
|
|
57
|
-
set cooldownRemaining(
|
|
64
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
65
|
+
interruptCast(): void;
|
|
58
66
|
static get onCreate(): Event<[UnitAbility]>;
|
|
59
67
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
60
68
|
}
|
|
@@ -78,6 +86,9 @@ export declare class ItemAbility extends Ability {
|
|
|
78
86
|
setField(field: jabilitybooleanlevelfield, level: number, value: boolean): boolean;
|
|
79
87
|
setField(field: jabilitystringlevelfield, level: number, value: string): boolean;
|
|
80
88
|
get level(): number;
|
|
89
|
+
get cooldownRemaining(): number;
|
|
90
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
91
|
+
interruptCast(): void;
|
|
81
92
|
static get onCreate(): Event<[ItemAbility]>;
|
|
82
93
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
83
94
|
}
|
|
@@ -10,7 +10,10 @@ local ____exports = {}
|
|
|
10
10
|
local ____handle = require("core.types.handle")
|
|
11
11
|
local Handle = ____handle.Handle
|
|
12
12
|
local ____ability = require("engine.internal.item.ability")
|
|
13
|
+
local abilityActionDummy = ____ability.abilityActionDummy
|
|
13
14
|
local doAbilityAction = ____ability.doAbilityAction
|
|
15
|
+
local doAbilityActionForceDummy = ____ability.doAbilityActionForceDummy
|
|
16
|
+
local startItemCooldown = ____ability.startItemCooldown
|
|
14
17
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
15
18
|
local setUnitAbilityLevel = SetUnitAbilityLevel
|
|
16
19
|
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
@@ -32,6 +35,8 @@ local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
|
32
35
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
33
36
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
34
37
|
local getHandleId = GetHandleId
|
|
38
|
+
local getItemBooleanField = BlzGetItemBooleanField
|
|
39
|
+
local setItemBooleanField = BlzSetItemBooleanField
|
|
35
40
|
local unitHideAbility = BlzUnitHideAbility
|
|
36
41
|
local match = string.match
|
|
37
42
|
local ____type = _G.type
|
|
@@ -296,10 +301,18 @@ __TS__SetDescriptor(
|
|
|
296
301
|
)
|
|
297
302
|
__TS__SetDescriptor(
|
|
298
303
|
Ability.prototype,
|
|
299
|
-
"
|
|
304
|
+
"orderTypeStringId",
|
|
300
305
|
{get = function(self)
|
|
301
306
|
local field = orderIdFieldByParentTypeId[self.parentTypeId]
|
|
302
|
-
return
|
|
307
|
+
return field ~= nil and getAbilityStringLevelField(self.handle, field, self.level) or (orders[self.parentTypeId] or "")
|
|
308
|
+
end},
|
|
309
|
+
true
|
|
310
|
+
)
|
|
311
|
+
__TS__SetDescriptor(
|
|
312
|
+
Ability.prototype,
|
|
313
|
+
"orderTypeId",
|
|
314
|
+
{get = function(self)
|
|
315
|
+
return order2orderId(self.orderTypeStringId)
|
|
303
316
|
end},
|
|
304
317
|
true
|
|
305
318
|
)
|
|
@@ -318,6 +331,17 @@ __TS__SetDescriptor(
|
|
|
318
331
|
end},
|
|
319
332
|
true
|
|
320
333
|
)
|
|
334
|
+
__TS__SetDescriptor(
|
|
335
|
+
Ability.prototype,
|
|
336
|
+
"cooldownRemaining",
|
|
337
|
+
{
|
|
338
|
+
get = function(self)
|
|
339
|
+
end,
|
|
340
|
+
set = function(self, cooldownRemaining)
|
|
341
|
+
end
|
|
342
|
+
},
|
|
343
|
+
true
|
|
344
|
+
)
|
|
321
345
|
__TS__ObjectDefineProperty(
|
|
322
346
|
Ability,
|
|
323
347
|
"onCreate",
|
|
@@ -341,6 +365,8 @@ function UnrecognizedAbility.prototype.____constructor(self, typeId, owner)
|
|
|
341
365
|
UnrecognizedAbility.____super.prototype.____constructor(self, nil, typeId)
|
|
342
366
|
self.owner = owner
|
|
343
367
|
end
|
|
368
|
+
function UnrecognizedAbility.prototype.interruptCast(self)
|
|
369
|
+
end
|
|
344
370
|
__TS__SetDescriptor(
|
|
345
371
|
UnrecognizedAbility.prototype,
|
|
346
372
|
"level",
|
|
@@ -349,6 +375,18 @@ __TS__SetDescriptor(
|
|
|
349
375
|
end},
|
|
350
376
|
true
|
|
351
377
|
)
|
|
378
|
+
__TS__SetDescriptor(
|
|
379
|
+
UnrecognizedAbility.prototype,
|
|
380
|
+
"cooldownRemaining",
|
|
381
|
+
{
|
|
382
|
+
get = function(self)
|
|
383
|
+
return 0
|
|
384
|
+
end,
|
|
385
|
+
set = function(self, _)
|
|
386
|
+
end
|
|
387
|
+
},
|
|
388
|
+
true
|
|
389
|
+
)
|
|
352
390
|
____exports.UnitAbility = __TS__Class()
|
|
353
391
|
local UnitAbility = ____exports.UnitAbility
|
|
354
392
|
UnitAbility.name = "UnitAbility"
|
|
@@ -364,6 +402,9 @@ end
|
|
|
364
402
|
function UnitAbility.prototype.decrementHideCounter(self)
|
|
365
403
|
unitHideAbility(self.u, self.typeId, false)
|
|
366
404
|
end
|
|
405
|
+
function UnitAbility.prototype.interruptCast(self)
|
|
406
|
+
self.owner:interruptCast(self.typeId)
|
|
407
|
+
end
|
|
367
408
|
__TS__SetDescriptor(
|
|
368
409
|
UnitAbility.prototype,
|
|
369
410
|
"level",
|
|
@@ -384,8 +425,8 @@ __TS__SetDescriptor(
|
|
|
384
425
|
get = function(self)
|
|
385
426
|
return getUnitAbilityCooldownRemaining(self.u, self.typeId)
|
|
386
427
|
end,
|
|
387
|
-
set = function(self,
|
|
388
|
-
startUnitAbilityCooldown(self.u, self.typeId,
|
|
428
|
+
set = function(self, cooldownRemaining)
|
|
429
|
+
startUnitAbilityCooldown(self.u, self.typeId, cooldownRemaining)
|
|
389
430
|
end
|
|
390
431
|
},
|
|
391
432
|
true
|
|
@@ -410,6 +451,9 @@ end
|
|
|
410
451
|
local function setAbilityField(_, ability, field, levelOrValue, value)
|
|
411
452
|
return ____exports.Ability.prototype.setField(ability, field, levelOrValue, value)
|
|
412
453
|
end
|
|
454
|
+
local function getAbilityCooldown(_, abilityTypeId)
|
|
455
|
+
return getUnitAbilityCooldownRemaining(abilityActionDummy, abilityTypeId)
|
|
456
|
+
end
|
|
413
457
|
____exports.ItemAbility = __TS__Class()
|
|
414
458
|
local ItemAbility = ____exports.ItemAbility
|
|
415
459
|
ItemAbility.name = "ItemAbility"
|
|
@@ -437,6 +481,14 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
437
481
|
value
|
|
438
482
|
)
|
|
439
483
|
end
|
|
484
|
+
function ItemAbility.prototype.interruptCast(self)
|
|
485
|
+
local handle = self.owner.handle
|
|
486
|
+
local activelyUsed = getItemBooleanField(handle, ITEM_BF_ACTIVELY_USED)
|
|
487
|
+
if activelyUsed then
|
|
488
|
+
setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, false)
|
|
489
|
+
setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, true)
|
|
490
|
+
end
|
|
491
|
+
end
|
|
440
492
|
__TS__SetDescriptor(
|
|
441
493
|
ItemAbility.prototype,
|
|
442
494
|
"level",
|
|
@@ -445,6 +497,27 @@ __TS__SetDescriptor(
|
|
|
445
497
|
end},
|
|
446
498
|
true
|
|
447
499
|
)
|
|
500
|
+
__TS__SetDescriptor(
|
|
501
|
+
ItemAbility.prototype,
|
|
502
|
+
"cooldownRemaining",
|
|
503
|
+
{
|
|
504
|
+
get = function(self)
|
|
505
|
+
local item = self.owner
|
|
506
|
+
local ____doAbilityActionForceDummy_4 = doAbilityActionForceDummy
|
|
507
|
+
local ____item_handle_3 = item.handle
|
|
508
|
+
local ____opt_1 = item.owner
|
|
509
|
+
return ____doAbilityActionForceDummy_4(____item_handle_3, ____opt_1 and ____opt_1.handle, getAbilityCooldown, self.typeId)
|
|
510
|
+
end,
|
|
511
|
+
set = function(self, cooldownRemaining)
|
|
512
|
+
local item = self.owner
|
|
513
|
+
local ____startItemCooldown_8 = startItemCooldown
|
|
514
|
+
local ____item_handle_7 = item.handle
|
|
515
|
+
local ____opt_5 = item.owner
|
|
516
|
+
____startItemCooldown_8(____item_handle_7, ____opt_5 and ____opt_5.handle, cooldownRemaining)
|
|
517
|
+
end
|
|
518
|
+
},
|
|
519
|
+
true
|
|
520
|
+
)
|
|
448
521
|
__TS__ObjectDefineProperty(
|
|
449
522
|
ItemAbility,
|
|
450
523
|
"onCreate",
|