warscript 0.0.1-dev.d690591 → 0.0.1-dev.d6e2c10
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/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/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/decl/native.d.ts +6 -4
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +172 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +11 -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 +2 -1
- package/engine/behaviour/ability.lua +10 -18
- 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 +39 -3
- package/engine/behaviour/unit.lua +259 -6
- package/engine/buff.d.ts +14 -6
- package/engine/buff.lua +145 -97
- 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 +16 -16
- package/engine/internal/item.lua +135 -49
- 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/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-missile-launch.lua +45 -14
- package/engine/internal/unit.d.ts +29 -18
- package/engine/internal/unit.lua +257 -140
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -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/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.lua +5 -4
- package/engine/object-data/entry/destructible-type.d.ts +17 -1
- package/engine/object-data/entry/destructible-type.lua +90 -0
- package/engine/object-data/entry/unit-type.d.ts +15 -2
- package/engine/object-data/entry/unit-type.lua +135 -33
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +24 -1
- package/engine/object-field/unit.lua +91 -0
- package/engine/object-field.d.ts +15 -6
- package/engine/object-field.lua +225 -124
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- 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 +1 -1
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +19 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/buff.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { UnitBehavior } from "./behaviour/unit";
|
|
|
13
13
|
import type { Widget } from "../core/types/widget";
|
|
14
14
|
import { Destructor } from "../destroyable";
|
|
15
15
|
import { Event } from "../event";
|
|
16
|
+
import { AbilityBehavior } from "./behaviour/ability";
|
|
16
17
|
export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
|
|
17
18
|
type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
|
|
18
19
|
type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
|
|
@@ -79,6 +80,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
79
80
|
healingOnExpiration?: NumberParameterValueType;
|
|
80
81
|
killsOnExpiration?: BooleanParameterValueType;
|
|
81
82
|
explodesOnExpiration?: BooleanParameterValueType;
|
|
83
|
+
abilityCooldownFactor?: NumberParameterValueType;
|
|
82
84
|
uniqueGroup?: BuffUniqueGroup;
|
|
83
85
|
} : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
|
|
84
86
|
declare const enum BuffPropertyKey {
|
|
@@ -124,7 +126,9 @@ declare const enum BuffPropertyKey {
|
|
|
124
126
|
PROVIDES_INVULNERABILITY = 139,
|
|
125
127
|
KILLS_ON_EXPIRATION = 140,
|
|
126
128
|
EXPLODES_ON_EXPIRATION = 141,
|
|
127
|
-
MISS_PROBABILITY = 142
|
|
129
|
+
MISS_PROBABILITY = 142,
|
|
130
|
+
ABILITY_COOLDOWN_FACTOR = 143,
|
|
131
|
+
ABILITY_COOLDOWN_MODIFIER = 144
|
|
128
132
|
}
|
|
129
133
|
export declare const enum BuffTypeIdSelectionPolicy {
|
|
130
134
|
LEAST_DURATION = 0
|
|
@@ -138,7 +142,7 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
|
|
|
138
142
|
polarity: BuffPolarityParameterType,
|
|
139
143
|
resistanceType: BuffResistanceTypeParameterType,
|
|
140
144
|
...abilityOrParameters: [
|
|
141
|
-
ability?: Ability,
|
|
145
|
+
ability?: Ability | AbilityBehavior,
|
|
142
146
|
parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
|
|
143
147
|
] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
|
|
144
148
|
];
|
|
@@ -187,6 +191,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
187
191
|
private [BuffPropertyKey.PROVIDES_INVULNERABILITY]?;
|
|
188
192
|
private [BuffPropertyKey.KILLS_ON_EXPIRATION]?;
|
|
189
193
|
private [BuffPropertyKey.EXPLODES_ON_EXPIRATION]?;
|
|
194
|
+
private [BuffPropertyKey.ABILITY_COOLDOWN_FACTOR]?;
|
|
195
|
+
private [BuffPropertyKey.ABILITY_COOLDOWN_MODIFIER]?;
|
|
190
196
|
protected static readonly defaultParameters: BuffParameters;
|
|
191
197
|
get source(): Unit;
|
|
192
198
|
readonly typeId: ApplicableBuffTypeId;
|
|
@@ -201,11 +207,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
201
207
|
private readonly _spellStealPriority?;
|
|
202
208
|
private readonly _learnLevelMinimum?;
|
|
203
209
|
private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
|
|
204
|
-
private _bonusIdByBonusType?;
|
|
205
210
|
private readonly _abilityTypeIds?;
|
|
206
211
|
private _behaviors?;
|
|
207
|
-
private getUnitBonus;
|
|
208
|
-
private addOrUpdateOrRemoveUnitBonus;
|
|
209
212
|
constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
|
|
210
213
|
get level(): number;
|
|
211
214
|
get remainingDamageOverDuration(): number;
|
|
@@ -265,6 +268,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
265
268
|
get duration(): number;
|
|
266
269
|
get remainingDuration(): number;
|
|
267
270
|
set remainingDuration(remainingDuration: number);
|
|
271
|
+
get abilityCooldownFactor(): number;
|
|
272
|
+
set abilityCooldownFactor(abilityCooldownFactor: number);
|
|
273
|
+
onAbilityGained(ability: Ability): void;
|
|
274
|
+
onAbilityLost(ability: Ability): void;
|
|
268
275
|
flashEffect(...parameters: [
|
|
269
276
|
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
270
277
|
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
@@ -278,6 +285,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
278
285
|
onDeath(source: Unit | undefined): void;
|
|
279
286
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|
|
280
287
|
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
281
|
-
static readonly
|
|
288
|
+
static readonly createdEvent: Event<[Buff<object>]>;
|
|
289
|
+
static readonly beingDestroyedEvent: Event<[Buff<object>]>;
|
|
282
290
|
}
|
|
283
291
|
export {};
|
package/engine/buff.lua
CHANGED
|
@@ -16,6 +16,7 @@ local internalApplyBuff = ____applicable.internalApplyBuff
|
|
|
16
16
|
local removeBuff = ____applicable.removeBuff
|
|
17
17
|
local ____ability = require("engine.internal.ability")
|
|
18
18
|
local Ability = ____ability.Ability
|
|
19
|
+
local UnitAbility = ____ability.UnitAbility
|
|
19
20
|
local ____ability = require("engine.object-field.ability")
|
|
20
21
|
local AbilityBooleanField = ____ability.AbilityBooleanField
|
|
21
22
|
local AbilityNumberField = ____ability.AbilityNumberField
|
|
@@ -28,9 +29,6 @@ local ____math = require("math")
|
|
|
28
29
|
local max = ____math.max
|
|
29
30
|
local min = ____math.min
|
|
30
31
|
local ____bonus = require("engine.internal.unit.bonus")
|
|
31
|
-
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
32
|
-
local getUnitBonus = ____bonus.getUnitBonus
|
|
33
|
-
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
34
32
|
local UnitBonusType = ____bonus.UnitBonusType
|
|
35
33
|
local ____area_2Ddamage = require("engine.internal.mechanics.area-damage")
|
|
36
34
|
local damageArea = ____area_2Ddamage.damageArea
|
|
@@ -53,6 +51,10 @@ local ____item = require("engine.internal.item")
|
|
|
53
51
|
local Item = ____item.Item
|
|
54
52
|
local ____destructable = require("core.types.destructable")
|
|
55
53
|
local Destructable = ____destructable.Destructable
|
|
54
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
55
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
56
|
+
local ____ability = require("engine.behaviour.ability")
|
|
57
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
56
58
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
59
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
60
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -124,7 +126,8 @@ local buffParametersKeys = {
|
|
|
124
126
|
damageOnExpiration = true,
|
|
125
127
|
healingOnExpiration = true,
|
|
126
128
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
129
|
+
explodesOnExpiration = true,
|
|
130
|
+
abilityCooldownFactor = true
|
|
128
131
|
}
|
|
129
132
|
local function resolveEnumValue(ability, level, value)
|
|
130
133
|
if value == nil or type(value) == "number" then
|
|
@@ -201,7 +204,8 @@ local buffNumberParameters = {
|
|
|
201
204
|
"healingPerInterval",
|
|
202
205
|
"healingOverDuration",
|
|
203
206
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
207
|
+
"healingOnExpiration",
|
|
208
|
+
"abilityCooldownFactor"
|
|
205
209
|
}
|
|
206
210
|
local unsuccessfulApplicationMarker = {}
|
|
207
211
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -304,7 +308,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
308
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
309
|
end
|
|
306
310
|
end
|
|
307
|
-
local
|
|
311
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
312
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
313
|
____exports.Buff = __TS__Class()
|
|
309
314
|
local Buff = ____exports.Buff
|
|
310
315
|
Buff.name = "Buff"
|
|
@@ -319,33 +324,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
319
324
|
local polarity
|
|
320
325
|
local resistanceType
|
|
321
326
|
local ability
|
|
327
|
+
local abilityBehavior
|
|
322
328
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
323
329
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
324
330
|
polarity = resistanceTypeOrPolarity
|
|
325
331
|
resistanceType = abilityOrParametersOrResistanceType
|
|
326
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
332
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
333
|
+
abilityBehavior = parametersOrAbility
|
|
334
|
+
ability = abilityBehavior.ability
|
|
335
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
327
336
|
ability = parametersOrAbility
|
|
328
|
-
|
|
329
|
-
ability = nil
|
|
337
|
+
elseif parametersOrAbility ~= nil then
|
|
330
338
|
parameters = parametersOrAbility
|
|
331
339
|
end
|
|
332
340
|
else
|
|
333
341
|
typeId = typeIdOrTypeIds
|
|
334
342
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
335
343
|
resistanceType = resistanceTypeOrPolarity
|
|
336
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
344
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
345
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
346
|
+
ability = abilityBehavior.ability
|
|
347
|
+
parameters = parametersOrAbility
|
|
348
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
337
349
|
ability = abilityOrParametersOrResistanceType
|
|
338
350
|
parameters = parametersOrAbility
|
|
339
|
-
|
|
340
|
-
ability = nil
|
|
351
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
341
352
|
parameters = abilityOrParametersOrResistanceType
|
|
353
|
+
else
|
|
354
|
+
parameters = parametersOrAbility
|
|
342
355
|
end
|
|
343
356
|
end
|
|
357
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
344
358
|
self.typeId = typeId
|
|
345
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
346
|
-
parameters = ability
|
|
347
|
-
ability = nil
|
|
348
|
-
end
|
|
349
359
|
local defaultParameters = self.constructor.defaultParameters
|
|
350
360
|
local level = parameters and parameters.level or defaultParameters.level
|
|
351
361
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -506,64 +516,68 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
516
|
end
|
|
507
517
|
self:onCreate()
|
|
508
518
|
self[100] = 1
|
|
519
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
520
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
521
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
522
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
523
|
+
local abilityCooldownModifier = self[144]
|
|
524
|
+
if abilityCooldownModifier then
|
|
525
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
526
|
+
end
|
|
527
|
+
end
|
|
514
528
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
529
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
530
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
531
|
+
local abilityCooldownModifier = self[144]
|
|
532
|
+
if abilityCooldownModifier then
|
|
533
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
534
|
+
end
|
|
520
535
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
536
|
end
|
|
523
537
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
538
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
539
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
540
|
else
|
|
527
541
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
542
|
+
local ____Effect_40 = Effect
|
|
543
|
+
local ____Effect_flash_41 = Effect.flash
|
|
544
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
531
545
|
self[105],
|
|
532
546
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
547
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
548
|
)
|
|
535
|
-
local
|
|
549
|
+
local ____isWidgetProvided_38
|
|
536
550
|
if isWidgetProvided then
|
|
537
|
-
|
|
551
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
552
|
else
|
|
539
|
-
|
|
553
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
554
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
555
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
556
|
+
____Effect_flash_41(
|
|
557
|
+
____Effect_40,
|
|
558
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
559
|
)
|
|
546
560
|
end
|
|
547
561
|
end
|
|
548
562
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
549
563
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
550
|
-
local
|
|
551
|
-
local
|
|
552
|
-
local
|
|
564
|
+
local ____Effect_44 = Effect
|
|
565
|
+
local ____Effect_flash_45 = Effect.flash
|
|
566
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
553
567
|
self[106],
|
|
554
568
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
555
569
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
556
570
|
)
|
|
557
|
-
local
|
|
571
|
+
local ____isWidgetProvided_42
|
|
558
572
|
if isWidgetProvided then
|
|
559
|
-
|
|
573
|
+
____isWidgetProvided_42 = duration
|
|
560
574
|
else
|
|
561
|
-
|
|
575
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
562
576
|
end
|
|
563
|
-
__TS__SparseArrayPush(
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
__TS__SparseArraySpread(
|
|
577
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
578
|
+
____Effect_flash_45(
|
|
579
|
+
____Effect_44,
|
|
580
|
+
__TS__SparseArraySpread(____array_43)
|
|
567
581
|
)
|
|
568
582
|
end
|
|
569
583
|
function Buff.prototype.onCreate(self)
|
|
@@ -594,6 +608,12 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
608
|
behavior:destroy()
|
|
595
609
|
end
|
|
596
610
|
end
|
|
611
|
+
local previousAbilityCooldownModifier = self[144]
|
|
612
|
+
if previousAbilityCooldownModifier then
|
|
613
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
614
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
615
|
+
end
|
|
616
|
+
end
|
|
597
617
|
if self[139] then
|
|
598
618
|
unit:decrementInvulnerabilityCounter()
|
|
599
619
|
end
|
|
@@ -602,7 +622,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
602
622
|
end
|
|
603
623
|
if self[136] then
|
|
604
624
|
if self[137] then
|
|
605
|
-
unit:
|
|
625
|
+
unit:decrementForceStunCounter()
|
|
606
626
|
end
|
|
607
627
|
unit:decrementStunCounter()
|
|
608
628
|
end
|
|
@@ -614,12 +634,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
614
634
|
unit:removeAbility(abilityTypeId)
|
|
615
635
|
end
|
|
616
636
|
end
|
|
617
|
-
|
|
618
|
-
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
619
|
-
removeUnitBonus(unit, bonusType, bonusId)
|
|
620
|
-
end
|
|
621
|
-
end
|
|
622
|
-
Event.invoke(buffDestroyEvent, self)
|
|
637
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
638
|
self[100] = 3
|
|
624
639
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
640
|
end
|
|
@@ -648,8 +663,8 @@ function Buff.apply(self, ...)
|
|
|
648
663
|
end
|
|
649
664
|
end
|
|
650
665
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
666
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
667
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
653
668
|
if __TS__InstanceOf(buff, self) then
|
|
654
669
|
return buff
|
|
655
670
|
end
|
|
@@ -807,8 +822,8 @@ __TS__SetDescriptor(
|
|
|
807
822
|
return
|
|
808
823
|
end
|
|
809
824
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
825
|
+
local ____opt_48 = self._timer
|
|
826
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
812
827
|
local timer = self[114]
|
|
813
828
|
if timer == nil then
|
|
814
829
|
timer = Timer:create()
|
|
@@ -887,8 +902,8 @@ __TS__SetDescriptor(
|
|
|
887
902
|
return
|
|
888
903
|
end
|
|
889
904
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
905
|
+
local ____opt_50 = self._timer
|
|
906
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
892
907
|
local timer = self[119]
|
|
893
908
|
if timer == nil then
|
|
894
909
|
timer = Timer:create()
|
|
@@ -974,11 +989,11 @@ __TS__SetDescriptor(
|
|
|
974
989
|
"turnsIntoGhost",
|
|
975
990
|
{
|
|
976
991
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
992
|
+
local ____self__135_52 = self[135]
|
|
993
|
+
if ____self__135_52 == nil then
|
|
994
|
+
____self__135_52 = false
|
|
980
995
|
end
|
|
981
|
-
return
|
|
996
|
+
return ____self__135_52
|
|
982
997
|
end,
|
|
983
998
|
set = function(self, turnsIntoGhost)
|
|
984
999
|
if not turnsIntoGhost and self[135] then
|
|
@@ -997,22 +1012,22 @@ __TS__SetDescriptor(
|
|
|
997
1012
|
"stuns",
|
|
998
1013
|
{
|
|
999
1014
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1015
|
+
local ____self__136_53 = self[136]
|
|
1016
|
+
if ____self__136_53 == nil then
|
|
1017
|
+
____self__136_53 = false
|
|
1003
1018
|
end
|
|
1004
|
-
return
|
|
1019
|
+
return ____self__136_53
|
|
1005
1020
|
end,
|
|
1006
1021
|
set = function(self, stuns)
|
|
1007
1022
|
if not stuns and self[136] then
|
|
1008
1023
|
if self[137] then
|
|
1009
|
-
self.object:
|
|
1024
|
+
self.object:decrementForceStunCounter()
|
|
1010
1025
|
end
|
|
1011
1026
|
self.object:decrementStunCounter()
|
|
1012
1027
|
self[136] = nil
|
|
1013
1028
|
elseif stuns and not self[136] then
|
|
1014
1029
|
if self[137] then
|
|
1015
|
-
self.object:
|
|
1030
|
+
self.object:incrementForceStunCounter()
|
|
1016
1031
|
end
|
|
1017
1032
|
self.object:incrementStunCounter()
|
|
1018
1033
|
self[136] = true
|
|
@@ -1026,21 +1041,21 @@ __TS__SetDescriptor(
|
|
|
1026
1041
|
"ignoresStunImmunity",
|
|
1027
1042
|
{
|
|
1028
1043
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1044
|
+
local ____self__137_54 = self[137]
|
|
1045
|
+
if ____self__137_54 == nil then
|
|
1046
|
+
____self__137_54 = false
|
|
1032
1047
|
end
|
|
1033
|
-
return
|
|
1048
|
+
return ____self__137_54
|
|
1034
1049
|
end,
|
|
1035
1050
|
set = function(self, ignoresStunImmunity)
|
|
1036
1051
|
if not ignoresStunImmunity and self[137] then
|
|
1037
1052
|
if self[136] then
|
|
1038
|
-
self.object:
|
|
1053
|
+
self.object:decrementForceStunCounter()
|
|
1039
1054
|
end
|
|
1040
1055
|
self[137] = nil
|
|
1041
1056
|
elseif ignoresStunImmunity and not self[137] then
|
|
1042
1057
|
if self[136] then
|
|
1043
|
-
self.object:
|
|
1058
|
+
self.object:incrementForceStunCounter()
|
|
1044
1059
|
end
|
|
1045
1060
|
self[137] = true
|
|
1046
1061
|
end
|
|
@@ -1053,11 +1068,11 @@ __TS__SetDescriptor(
|
|
|
1053
1068
|
"disablesAutoAttack",
|
|
1054
1069
|
{
|
|
1055
1070
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1071
|
+
local ____self__138_55 = self[138]
|
|
1072
|
+
if ____self__138_55 == nil then
|
|
1073
|
+
____self__138_55 = false
|
|
1059
1074
|
end
|
|
1060
|
-
return
|
|
1075
|
+
return ____self__138_55
|
|
1061
1076
|
end,
|
|
1062
1077
|
set = function(self, disablesAutoAttack)
|
|
1063
1078
|
if not disablesAutoAttack and self[138] then
|
|
@@ -1076,11 +1091,11 @@ __TS__SetDescriptor(
|
|
|
1076
1091
|
"providesInvulnerability",
|
|
1077
1092
|
{
|
|
1078
1093
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1094
|
+
local ____self__139_56 = self[139]
|
|
1095
|
+
if ____self__139_56 == nil then
|
|
1096
|
+
____self__139_56 = false
|
|
1082
1097
|
end
|
|
1083
|
-
return
|
|
1098
|
+
return ____self__139_56
|
|
1084
1099
|
end,
|
|
1085
1100
|
set = function(self, providesInvulnerability)
|
|
1086
1101
|
if not providesInvulnerability and self[139] then
|
|
@@ -1099,11 +1114,11 @@ __TS__SetDescriptor(
|
|
|
1099
1114
|
"killsOnExpiration",
|
|
1100
1115
|
{
|
|
1101
1116
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1117
|
+
local ____self__140_57 = self[140]
|
|
1118
|
+
if ____self__140_57 == nil then
|
|
1119
|
+
____self__140_57 = false
|
|
1105
1120
|
end
|
|
1106
|
-
return
|
|
1121
|
+
return ____self__140_57
|
|
1107
1122
|
end,
|
|
1108
1123
|
set = function(self, killsOnExpiration)
|
|
1109
1124
|
if not killsOnExpiration and self[140] then
|
|
@@ -1120,11 +1135,11 @@ __TS__SetDescriptor(
|
|
|
1120
1135
|
"explodesOnExpiration",
|
|
1121
1136
|
{
|
|
1122
1137
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1138
|
+
local ____self__141_58 = self[141]
|
|
1139
|
+
if ____self__141_58 == nil then
|
|
1140
|
+
____self__141_58 = false
|
|
1126
1141
|
end
|
|
1127
|
-
return
|
|
1142
|
+
return ____self__141_58
|
|
1128
1143
|
end,
|
|
1129
1144
|
set = function(self, killsOnExpiration)
|
|
1130
1145
|
if not killsOnExpiration and self[141] then
|
|
@@ -1252,13 +1267,13 @@ __TS__SetDescriptor(
|
|
|
1252
1267
|
"remainingDuration",
|
|
1253
1268
|
{
|
|
1254
1269
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1270
|
+
local ____opt_59 = self._timer
|
|
1271
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1257
1272
|
end,
|
|
1258
1273
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
local remainingDurationDelta =
|
|
1274
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1275
|
+
local ____opt_61 = self._timer
|
|
1276
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1262
1277
|
if remainingDurationDelta ~= 0 then
|
|
1263
1278
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1279
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1303,34 @@ __TS__SetDescriptor(
|
|
|
1288
1303
|
},
|
|
1289
1304
|
true
|
|
1290
1305
|
)
|
|
1291
|
-
|
|
1306
|
+
__TS__SetDescriptor(
|
|
1307
|
+
Buff.prototype,
|
|
1308
|
+
"abilityCooldownFactor",
|
|
1309
|
+
{
|
|
1310
|
+
get = function(self)
|
|
1311
|
+
return self[143] or 1
|
|
1312
|
+
end,
|
|
1313
|
+
set = function(self, abilityCooldownFactor)
|
|
1314
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1315
|
+
if previousAbilityCooldownModifier then
|
|
1316
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1317
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1318
|
+
end
|
|
1319
|
+
end
|
|
1320
|
+
local function modifier(ability, level, cooldown)
|
|
1321
|
+
return cooldown * abilityCooldownFactor
|
|
1322
|
+
end
|
|
1323
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1324
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1325
|
+
end
|
|
1326
|
+
self[144] = modifier
|
|
1327
|
+
self[143] = abilityCooldownFactor
|
|
1328
|
+
end
|
|
1329
|
+
},
|
|
1330
|
+
true
|
|
1331
|
+
)
|
|
1332
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1333
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1334
|
(function(self)
|
|
1293
1335
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1336
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1384,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1384
|
____exports.checkBuffs(target)
|
|
1343
1385
|
end
|
|
1344
1386
|
)
|
|
1387
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1388
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1389
|
+
end)
|
|
1390
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1391
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1392
|
+
end)
|
|
1345
1393
|
end)(Buff)
|
|
1346
1394
|
return ____exports
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
-
import { Handle } from "../../core/types/handle";
|
|
2
|
+
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
3
3
|
import { Event } from "../../event";
|
|
4
4
|
import type { Item } from "../../core/types/item";
|
|
5
5
|
import type { Unit } from "./unit";
|
|
@@ -55,14 +55,19 @@ export declare class UnrecognizedAbility extends Ability {
|
|
|
55
55
|
export declare class UnitAbility extends Ability {
|
|
56
56
|
readonly owner: Unit;
|
|
57
57
|
private readonly u;
|
|
58
|
+
private d?;
|
|
58
59
|
constructor(handle: jability, typeId: number, owner: Unit);
|
|
59
60
|
incrementHideCounter(): void;
|
|
60
61
|
decrementHideCounter(): void;
|
|
62
|
+
incrementDisableCounter(): void;
|
|
63
|
+
decrementDisableCounter(): void;
|
|
64
|
+
get isDisabled(): boolean;
|
|
61
65
|
get level(): number;
|
|
62
66
|
set level(v: number);
|
|
63
67
|
get cooldownRemaining(): number;
|
|
64
68
|
set cooldownRemaining(cooldownRemaining: number);
|
|
65
69
|
interruptCast(): void;
|
|
70
|
+
protected onDestroy(): HandleDestructor;
|
|
66
71
|
static get onCreate(): Event<[UnitAbility]>;
|
|
67
72
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
68
73
|
}
|
|
@@ -89,6 +94,7 @@ export declare class ItemAbility extends Ability {
|
|
|
89
94
|
get cooldownRemaining(): number;
|
|
90
95
|
set cooldownRemaining(cooldownRemaining: number);
|
|
91
96
|
interruptCast(): void;
|
|
97
|
+
protected onDestroy(): HandleDestructor;
|
|
92
98
|
static get onCreate(): Event<[ItemAbility]>;
|
|
93
99
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
94
100
|
}
|
|
@@ -38,6 +38,7 @@ local getHandleId = GetHandleId
|
|
|
38
38
|
local getItemBooleanField = BlzGetItemBooleanField
|
|
39
39
|
local setItemBooleanField = BlzSetItemBooleanField
|
|
40
40
|
local unitHideAbility = BlzUnitHideAbility
|
|
41
|
+
local unitDisableAbility = BlzUnitDisableAbility
|
|
41
42
|
local match = string.match
|
|
42
43
|
local ____type = _G.type
|
|
43
44
|
local ____tostring = _G.tostring
|
|
@@ -231,6 +232,19 @@ ____exports.getOrderIdByAbilityTypeId = function(abilityTypeId)
|
|
|
231
232
|
local parentTypeId = availableFields[abilityTypeId]
|
|
232
233
|
return order2orderId(orders[____type(parentTypeId) == "number" and parentTypeId or abilityTypeId] or "")
|
|
233
234
|
end
|
|
235
|
+
---
|
|
236
|
+
-- @internal For use by internal systems only.
|
|
237
|
+
____exports.abilityTypeHasField = function(abilityTypeId, field)
|
|
238
|
+
field = ____type(field) == "number" and field or getHandleId(field)
|
|
239
|
+
if commonFields[field] then
|
|
240
|
+
return true
|
|
241
|
+
end
|
|
242
|
+
local id = availableFields[abilityTypeId]
|
|
243
|
+
if ____type(id) == "number" then
|
|
244
|
+
id = availableFields[id]
|
|
245
|
+
end
|
|
246
|
+
return not not (id and id[field])
|
|
247
|
+
end
|
|
234
248
|
____exports.Ability = __TS__Class()
|
|
235
249
|
local Ability = ____exports.Ability
|
|
236
250
|
Ability.name = "Ability"
|
|
@@ -246,15 +260,7 @@ function Ability.prototype.getSnapshot(self)
|
|
|
246
260
|
return nil
|
|
247
261
|
end
|
|
248
262
|
function Ability.prototype.hasField(self, field)
|
|
249
|
-
|
|
250
|
-
if commonFields[field] then
|
|
251
|
-
return true
|
|
252
|
-
end
|
|
253
|
-
local id = availableFields[self.typeId]
|
|
254
|
-
if ____type(id) == "number" then
|
|
255
|
-
id = availableFields[id]
|
|
256
|
-
end
|
|
257
|
-
return not not (id and id[field])
|
|
263
|
+
return ____exports.abilityTypeHasField(self.typeId, field)
|
|
258
264
|
end
|
|
259
265
|
function Ability.prototype.getField(self, field, level)
|
|
260
266
|
local fieldType = match(
|
|
@@ -402,9 +408,37 @@ end
|
|
|
402
408
|
function UnitAbility.prototype.decrementHideCounter(self)
|
|
403
409
|
unitHideAbility(self.u, self.typeId, false)
|
|
404
410
|
end
|
|
411
|
+
function UnitAbility.prototype.incrementDisableCounter(self)
|
|
412
|
+
local unit = self.u
|
|
413
|
+
local typeId = self.typeId
|
|
414
|
+
unitHideAbility(unit, typeId, true)
|
|
415
|
+
unitDisableAbility(unit, typeId, true, false)
|
|
416
|
+
self.d = (self.d or 0) + 1
|
|
417
|
+
end
|
|
418
|
+
function UnitAbility.prototype.decrementDisableCounter(self)
|
|
419
|
+
local unit = self.u
|
|
420
|
+
local typeId = self.typeId
|
|
421
|
+
unitDisableAbility(unit, typeId, false, false)
|
|
422
|
+
unitHideAbility(unit, typeId, true)
|
|
423
|
+
self.d = (self.d or 0) - 1
|
|
424
|
+
end
|
|
405
425
|
function UnitAbility.prototype.interruptCast(self)
|
|
406
426
|
self.owner:interruptCast(self.typeId)
|
|
407
427
|
end
|
|
428
|
+
function UnitAbility.prototype.onDestroy(self)
|
|
429
|
+
if self.owner.state ~= 2 then
|
|
430
|
+
self.owner:removeAbility(self.typeId)
|
|
431
|
+
end
|
|
432
|
+
return UnitAbility.____super.prototype.onDestroy(self)
|
|
433
|
+
end
|
|
434
|
+
__TS__SetDescriptor(
|
|
435
|
+
UnitAbility.prototype,
|
|
436
|
+
"isDisabled",
|
|
437
|
+
{get = function(self)
|
|
438
|
+
return self.d ~= nil and self.d > 0
|
|
439
|
+
end},
|
|
440
|
+
true
|
|
441
|
+
)
|
|
408
442
|
__TS__SetDescriptor(
|
|
409
443
|
UnitAbility.prototype,
|
|
410
444
|
"level",
|
|
@@ -489,6 +523,12 @@ function ItemAbility.prototype.interruptCast(self)
|
|
|
489
523
|
setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, true)
|
|
490
524
|
end
|
|
491
525
|
end
|
|
526
|
+
function ItemAbility.prototype.onDestroy(self)
|
|
527
|
+
if self.owner.state ~= 2 then
|
|
528
|
+
self.owner:removeAbility(self.typeId)
|
|
529
|
+
end
|
|
530
|
+
return ItemAbility.____super.prototype.onDestroy(self)
|
|
531
|
+
end
|
|
492
532
|
__TS__SetDescriptor(
|
|
493
533
|
ItemAbility.prototype,
|
|
494
534
|
"level",
|