warscript 0.0.1-dev.ad08e94 → 0.0.1-dev.aeaf398
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/sound.lua +5 -0
- 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 +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/damage.d.ts +6 -3
- package/engine/behaviour/ability/damage.lua +24 -36
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +2 -1
- package/engine/behaviour/ability.lua +10 -18
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +39 -3
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +21 -8
- package/engine/buff.lua +187 -121
- 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 +18 -17
- package/engine/internal/item.lua +135 -49
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -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/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +10 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +39 -26
- package/engine/internal/unit.lua +375 -236
- 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/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -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/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type.lua +11 -3
- package/engine/object-data/entry/buff-type/applicable.lua +5 -0
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +17 -4
- package/engine/object-data/entry/unit-type.lua +197 -85
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +357 -118
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -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 +5 -0
- package/engine/unit.lua +5 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/package.json +2 -2
- package/patch-lua.lua +9 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +26 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- 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.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
|
|
@@ -44,6 +42,7 @@ local BuffType = ____buff_2Dtype.BuffType
|
|
|
44
42
|
local ____unit = require("engine.behaviour.unit")
|
|
45
43
|
local UnitBehavior = ____unit.UnitBehavior
|
|
46
44
|
local ____arrays = require("utility.arrays")
|
|
45
|
+
local emptyArray = ____arrays.emptyArray
|
|
47
46
|
local forEach = ____arrays.forEach
|
|
48
47
|
local ____event = require("event")
|
|
49
48
|
local Event = ____event.Event
|
|
@@ -53,6 +52,12 @@ local ____item = require("engine.internal.item")
|
|
|
53
52
|
local Item = ____item.Item
|
|
54
53
|
local ____destructable = require("core.types.destructable")
|
|
55
54
|
local Destructable = ____destructable.Destructable
|
|
55
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
56
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
57
|
+
local ____ability = require("engine.behaviour.ability")
|
|
58
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
59
|
+
local ____records = require("utility.records")
|
|
60
|
+
local sortedKeysUnnested = ____records.sortedKeysUnnested
|
|
56
61
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
62
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
63
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -101,6 +106,7 @@ local buffParametersKeys = {
|
|
|
101
106
|
armorIncreaseFactor = true,
|
|
102
107
|
attackSpeedIncreaseFactor = true,
|
|
103
108
|
movementSpeedIncreaseFactor = true,
|
|
109
|
+
manaRegenerationRateIncreaseFactor = true,
|
|
104
110
|
evasionProbability = true,
|
|
105
111
|
missProbability = true,
|
|
106
112
|
damageFactor = true,
|
|
@@ -124,7 +130,8 @@ local buffParametersKeys = {
|
|
|
124
130
|
damageOnExpiration = true,
|
|
125
131
|
healingOnExpiration = true,
|
|
126
132
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
133
|
+
explodesOnExpiration = true,
|
|
134
|
+
abilityCooldownFactor = true
|
|
128
135
|
}
|
|
129
136
|
local function resolveEnumValue(ability, level, value)
|
|
130
137
|
if value == nil or type(value) == "number" then
|
|
@@ -187,6 +194,7 @@ local buffNumberParameters = {
|
|
|
187
194
|
"durationIncreaseOnAutoAttack",
|
|
188
195
|
"attackSpeedIncreaseFactor",
|
|
189
196
|
"movementSpeedIncreaseFactor",
|
|
197
|
+
"manaRegenerationRateIncreaseFactor",
|
|
190
198
|
"evasionProbability",
|
|
191
199
|
"armorIncrease",
|
|
192
200
|
"damageFactor",
|
|
@@ -201,7 +209,8 @@ local buffNumberParameters = {
|
|
|
201
209
|
"healingPerInterval",
|
|
202
210
|
"healingOverDuration",
|
|
203
211
|
"damageOnExpiration",
|
|
204
|
-
"healingOnExpiration"
|
|
212
|
+
"healingOnExpiration",
|
|
213
|
+
"abilityCooldownFactor"
|
|
205
214
|
}
|
|
206
215
|
local unsuccessfulApplicationMarker = {}
|
|
207
216
|
local function selectBuffTypeIdWithLeastDuration(buffTypeIds, unit)
|
|
@@ -304,7 +313,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
313
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
314
|
end
|
|
306
315
|
end
|
|
307
|
-
local
|
|
316
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
317
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
318
|
____exports.Buff = __TS__Class()
|
|
309
319
|
local Buff = ____exports.Buff
|
|
310
320
|
Buff.name = "Buff"
|
|
@@ -319,33 +329,38 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
319
329
|
local polarity
|
|
320
330
|
local resistanceType
|
|
321
331
|
local ability
|
|
332
|
+
local abilityBehavior
|
|
322
333
|
if type(typeIdOrTypeIds) ~= "number" then
|
|
323
334
|
typeId = selectBuffTypeIdWithLeastDuration(typeIdOrTypeIds, _unit)
|
|
324
335
|
polarity = resistanceTypeOrPolarity
|
|
325
336
|
resistanceType = abilityOrParametersOrResistanceType
|
|
326
|
-
if __TS__InstanceOf(parametersOrAbility,
|
|
337
|
+
if __TS__InstanceOf(parametersOrAbility, AbilityBehavior) then
|
|
338
|
+
abilityBehavior = parametersOrAbility
|
|
339
|
+
ability = abilityBehavior.ability
|
|
340
|
+
elseif __TS__InstanceOf(parametersOrAbility, Ability) then
|
|
327
341
|
ability = parametersOrAbility
|
|
328
|
-
|
|
329
|
-
ability = nil
|
|
342
|
+
elseif parametersOrAbility ~= nil then
|
|
330
343
|
parameters = parametersOrAbility
|
|
331
344
|
end
|
|
332
345
|
else
|
|
333
346
|
typeId = typeIdOrTypeIds
|
|
334
347
|
polarity = polarityOrTypeIdSelectionPolicy
|
|
335
348
|
resistanceType = resistanceTypeOrPolarity
|
|
336
|
-
if __TS__InstanceOf(abilityOrParametersOrResistanceType,
|
|
349
|
+
if __TS__InstanceOf(abilityOrParametersOrResistanceType, AbilityBehavior) then
|
|
350
|
+
abilityBehavior = abilityOrParametersOrResistanceType
|
|
351
|
+
ability = abilityBehavior.ability
|
|
352
|
+
parameters = parametersOrAbility
|
|
353
|
+
elseif __TS__InstanceOf(abilityOrParametersOrResistanceType, Ability) then
|
|
337
354
|
ability = abilityOrParametersOrResistanceType
|
|
338
355
|
parameters = parametersOrAbility
|
|
339
|
-
|
|
340
|
-
ability = nil
|
|
356
|
+
elseif abilityOrParametersOrResistanceType ~= nil then
|
|
341
357
|
parameters = abilityOrParametersOrResistanceType
|
|
358
|
+
else
|
|
359
|
+
parameters = parametersOrAbility
|
|
342
360
|
end
|
|
343
361
|
end
|
|
362
|
+
self.sourceAbilityBehavior = abilityBehavior
|
|
344
363
|
self.typeId = typeId
|
|
345
|
-
if not (__TS__InstanceOf(ability, Ability) or ability == nil) then
|
|
346
|
-
parameters = ability
|
|
347
|
-
ability = nil
|
|
348
|
-
end
|
|
349
364
|
local defaultParameters = self.constructor.defaultParameters
|
|
350
365
|
local level = parameters and parameters.level or defaultParameters.level
|
|
351
366
|
local spellStealPriority = parameters and parameters.spellStealPriority or defaultParameters.spellStealPriority
|
|
@@ -456,24 +471,22 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
456
471
|
abilityTypeIds = {}
|
|
457
472
|
self._abilityTypeIds = abilityTypeIds
|
|
458
473
|
end
|
|
459
|
-
for
|
|
474
|
+
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
475
|
+
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
460
476
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
461
477
|
if addedAbility ~= nil then
|
|
462
478
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
463
479
|
_unit:setAbilityLevel(abilityTypeId, 1 + (abilityParameters.level or ability and ability.level or 0))
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
473
|
-
)
|
|
474
|
-
end
|
|
480
|
+
if abilityParameters.isButtonVisible == false then
|
|
481
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
482
|
+
end
|
|
483
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
484
|
+
field[1]:setValue(
|
|
485
|
+
addedAbility,
|
|
486
|
+
resolveNumberValue(ability, level, field[2])
|
|
487
|
+
)
|
|
475
488
|
end
|
|
476
|
-
abilityTypeIds[
|
|
489
|
+
abilityTypeIds[#abilityTypeIds + 1] = abilityTypeId
|
|
477
490
|
end
|
|
478
491
|
end
|
|
479
492
|
local behaviorConstructors = parameters and parameters.behaviorConstructors or defaultParameters.behaviorConstructors
|
|
@@ -485,18 +498,20 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
485
498
|
self._behaviors = behaviors
|
|
486
499
|
end
|
|
487
500
|
end
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
if
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
501
|
+
if parameters ~= nil then
|
|
502
|
+
local additionalParameters = {}
|
|
503
|
+
for ____, key in ipairs(sortedKeysUnnested(parameters)) do
|
|
504
|
+
if not buffParametersKeys[key] then
|
|
505
|
+
if ability then
|
|
506
|
+
additionalParameters[key] = resolveCurrentAbilityDependentValue(ability, parameters[key])
|
|
507
|
+
else
|
|
508
|
+
additionalParameters[key] = parameters[key]
|
|
509
|
+
end
|
|
495
510
|
end
|
|
496
511
|
end
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
512
|
+
if (next(additionalParameters)) ~= nil then
|
|
513
|
+
self.parameters = additionalParameters
|
|
514
|
+
end
|
|
500
515
|
end
|
|
501
516
|
end
|
|
502
517
|
if duration ~= nil and duration > 0 then
|
|
@@ -506,64 +521,68 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
521
|
end
|
|
507
522
|
self:onCreate()
|
|
508
523
|
self[100] = 1
|
|
524
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
525
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
526
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
527
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
528
|
+
local abilityCooldownModifier = self[144]
|
|
529
|
+
if abilityCooldownModifier then
|
|
530
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
531
|
+
end
|
|
532
|
+
end
|
|
514
533
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
534
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
535
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
536
|
+
local abilityCooldownModifier = self[144]
|
|
537
|
+
if abilityCooldownModifier then
|
|
538
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
539
|
+
end
|
|
520
540
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
541
|
end
|
|
523
542
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
543
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
544
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
545
|
else
|
|
527
546
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
547
|
+
local ____Effect_40 = Effect
|
|
548
|
+
local ____Effect_flash_41 = Effect.flash
|
|
549
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
531
550
|
self[105],
|
|
532
551
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
552
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
553
|
)
|
|
535
|
-
local
|
|
554
|
+
local ____isWidgetProvided_38
|
|
536
555
|
if isWidgetProvided then
|
|
537
|
-
|
|
556
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
557
|
else
|
|
539
|
-
|
|
558
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
559
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
560
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
561
|
+
____Effect_flash_41(
|
|
562
|
+
____Effect_40,
|
|
563
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
564
|
)
|
|
546
565
|
end
|
|
547
566
|
end
|
|
548
567
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
549
568
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
550
|
-
local
|
|
551
|
-
local
|
|
552
|
-
local
|
|
569
|
+
local ____Effect_44 = Effect
|
|
570
|
+
local ____Effect_flash_45 = Effect.flash
|
|
571
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
553
572
|
self[106],
|
|
554
573
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
555
574
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
556
575
|
)
|
|
557
|
-
local
|
|
576
|
+
local ____isWidgetProvided_42
|
|
558
577
|
if isWidgetProvided then
|
|
559
|
-
|
|
578
|
+
____isWidgetProvided_42 = duration
|
|
560
579
|
else
|
|
561
|
-
|
|
580
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
562
581
|
end
|
|
563
|
-
__TS__SparseArrayPush(
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
__TS__SparseArraySpread(
|
|
582
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
583
|
+
____Effect_flash_45(
|
|
584
|
+
____Effect_44,
|
|
585
|
+
__TS__SparseArraySpread(____array_43)
|
|
567
586
|
)
|
|
568
587
|
end
|
|
569
588
|
function Buff.prototype.onCreate(self)
|
|
@@ -594,6 +613,12 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
613
|
behavior:destroy()
|
|
595
614
|
end
|
|
596
615
|
end
|
|
616
|
+
local previousAbilityCooldownModifier = self[144]
|
|
617
|
+
if previousAbilityCooldownModifier then
|
|
618
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
619
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
620
|
+
end
|
|
621
|
+
end
|
|
597
622
|
if self[139] then
|
|
598
623
|
unit:decrementInvulnerabilityCounter()
|
|
599
624
|
end
|
|
@@ -602,7 +627,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
602
627
|
end
|
|
603
628
|
if self[136] then
|
|
604
629
|
if self[137] then
|
|
605
|
-
unit:
|
|
630
|
+
unit:decrementForceStunCounter()
|
|
606
631
|
end
|
|
607
632
|
unit:decrementStunCounter()
|
|
608
633
|
end
|
|
@@ -610,16 +635,11 @@ function Buff.prototype.onDestroy(self)
|
|
|
610
635
|
unit:decrementGhostCounter()
|
|
611
636
|
end
|
|
612
637
|
if self._abilityTypeIds ~= nil then
|
|
613
|
-
for abilityTypeId in
|
|
638
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
614
639
|
unit:removeAbility(abilityTypeId)
|
|
615
640
|
end
|
|
616
641
|
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)
|
|
642
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
643
|
self[100] = 3
|
|
624
644
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
645
|
end
|
|
@@ -648,8 +668,8 @@ function Buff.apply(self, ...)
|
|
|
648
668
|
end
|
|
649
669
|
end
|
|
650
670
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
671
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
672
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
653
673
|
if __TS__InstanceOf(buff, self) then
|
|
654
674
|
return buff
|
|
655
675
|
end
|
|
@@ -807,8 +827,8 @@ __TS__SetDescriptor(
|
|
|
807
827
|
return
|
|
808
828
|
end
|
|
809
829
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
830
|
+
local ____opt_48 = self._timer
|
|
831
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
812
832
|
local timer = self[114]
|
|
813
833
|
if timer == nil then
|
|
814
834
|
timer = Timer:create()
|
|
@@ -887,8 +907,8 @@ __TS__SetDescriptor(
|
|
|
887
907
|
return
|
|
888
908
|
end
|
|
889
909
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
910
|
+
local ____opt_50 = self._timer
|
|
911
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
892
912
|
local timer = self[119]
|
|
893
913
|
if timer == nil then
|
|
894
914
|
timer = Timer:create()
|
|
@@ -974,11 +994,11 @@ __TS__SetDescriptor(
|
|
|
974
994
|
"turnsIntoGhost",
|
|
975
995
|
{
|
|
976
996
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
997
|
+
local ____self__135_52 = self[135]
|
|
998
|
+
if ____self__135_52 == nil then
|
|
999
|
+
____self__135_52 = false
|
|
980
1000
|
end
|
|
981
|
-
return
|
|
1001
|
+
return ____self__135_52
|
|
982
1002
|
end,
|
|
983
1003
|
set = function(self, turnsIntoGhost)
|
|
984
1004
|
if not turnsIntoGhost and self[135] then
|
|
@@ -997,22 +1017,22 @@ __TS__SetDescriptor(
|
|
|
997
1017
|
"stuns",
|
|
998
1018
|
{
|
|
999
1019
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1020
|
+
local ____self__136_53 = self[136]
|
|
1021
|
+
if ____self__136_53 == nil then
|
|
1022
|
+
____self__136_53 = false
|
|
1003
1023
|
end
|
|
1004
|
-
return
|
|
1024
|
+
return ____self__136_53
|
|
1005
1025
|
end,
|
|
1006
1026
|
set = function(self, stuns)
|
|
1007
1027
|
if not stuns and self[136] then
|
|
1008
1028
|
if self[137] then
|
|
1009
|
-
self.object:
|
|
1029
|
+
self.object:decrementForceStunCounter()
|
|
1010
1030
|
end
|
|
1011
1031
|
self.object:decrementStunCounter()
|
|
1012
1032
|
self[136] = nil
|
|
1013
1033
|
elseif stuns and not self[136] then
|
|
1014
1034
|
if self[137] then
|
|
1015
|
-
self.object:
|
|
1035
|
+
self.object:incrementForceStunCounter()
|
|
1016
1036
|
end
|
|
1017
1037
|
self.object:incrementStunCounter()
|
|
1018
1038
|
self[136] = true
|
|
@@ -1026,21 +1046,21 @@ __TS__SetDescriptor(
|
|
|
1026
1046
|
"ignoresStunImmunity",
|
|
1027
1047
|
{
|
|
1028
1048
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1049
|
+
local ____self__137_54 = self[137]
|
|
1050
|
+
if ____self__137_54 == nil then
|
|
1051
|
+
____self__137_54 = false
|
|
1032
1052
|
end
|
|
1033
|
-
return
|
|
1053
|
+
return ____self__137_54
|
|
1034
1054
|
end,
|
|
1035
1055
|
set = function(self, ignoresStunImmunity)
|
|
1036
1056
|
if not ignoresStunImmunity and self[137] then
|
|
1037
1057
|
if self[136] then
|
|
1038
|
-
self.object:
|
|
1058
|
+
self.object:decrementForceStunCounter()
|
|
1039
1059
|
end
|
|
1040
1060
|
self[137] = nil
|
|
1041
1061
|
elseif ignoresStunImmunity and not self[137] then
|
|
1042
1062
|
if self[136] then
|
|
1043
|
-
self.object:
|
|
1063
|
+
self.object:incrementForceStunCounter()
|
|
1044
1064
|
end
|
|
1045
1065
|
self[137] = true
|
|
1046
1066
|
end
|
|
@@ -1053,11 +1073,11 @@ __TS__SetDescriptor(
|
|
|
1053
1073
|
"disablesAutoAttack",
|
|
1054
1074
|
{
|
|
1055
1075
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1076
|
+
local ____self__138_55 = self[138]
|
|
1077
|
+
if ____self__138_55 == nil then
|
|
1078
|
+
____self__138_55 = false
|
|
1059
1079
|
end
|
|
1060
|
-
return
|
|
1080
|
+
return ____self__138_55
|
|
1061
1081
|
end,
|
|
1062
1082
|
set = function(self, disablesAutoAttack)
|
|
1063
1083
|
if not disablesAutoAttack and self[138] then
|
|
@@ -1076,11 +1096,11 @@ __TS__SetDescriptor(
|
|
|
1076
1096
|
"providesInvulnerability",
|
|
1077
1097
|
{
|
|
1078
1098
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1099
|
+
local ____self__139_56 = self[139]
|
|
1100
|
+
if ____self__139_56 == nil then
|
|
1101
|
+
____self__139_56 = false
|
|
1082
1102
|
end
|
|
1083
|
-
return
|
|
1103
|
+
return ____self__139_56
|
|
1084
1104
|
end,
|
|
1085
1105
|
set = function(self, providesInvulnerability)
|
|
1086
1106
|
if not providesInvulnerability and self[139] then
|
|
@@ -1099,11 +1119,11 @@ __TS__SetDescriptor(
|
|
|
1099
1119
|
"killsOnExpiration",
|
|
1100
1120
|
{
|
|
1101
1121
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1122
|
+
local ____self__140_57 = self[140]
|
|
1123
|
+
if ____self__140_57 == nil then
|
|
1124
|
+
____self__140_57 = false
|
|
1105
1125
|
end
|
|
1106
|
-
return
|
|
1126
|
+
return ____self__140_57
|
|
1107
1127
|
end,
|
|
1108
1128
|
set = function(self, killsOnExpiration)
|
|
1109
1129
|
if not killsOnExpiration and self[140] then
|
|
@@ -1120,11 +1140,11 @@ __TS__SetDescriptor(
|
|
|
1120
1140
|
"explodesOnExpiration",
|
|
1121
1141
|
{
|
|
1122
1142
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1143
|
+
local ____self__141_58 = self[141]
|
|
1144
|
+
if ____self__141_58 == nil then
|
|
1145
|
+
____self__141_58 = false
|
|
1126
1146
|
end
|
|
1127
|
-
return
|
|
1147
|
+
return ____self__141_58
|
|
1128
1148
|
end,
|
|
1129
1149
|
set = function(self, killsOnExpiration)
|
|
1130
1150
|
if not killsOnExpiration and self[141] then
|
|
@@ -1239,6 +1259,19 @@ __TS__SetDescriptor(
|
|
|
1239
1259
|
},
|
|
1240
1260
|
true
|
|
1241
1261
|
)
|
|
1262
|
+
__TS__SetDescriptor(
|
|
1263
|
+
Buff.prototype,
|
|
1264
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1265
|
+
{
|
|
1266
|
+
get = function(self)
|
|
1267
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1268
|
+
end,
|
|
1269
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1270
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1271
|
+
end
|
|
1272
|
+
},
|
|
1273
|
+
true
|
|
1274
|
+
)
|
|
1242
1275
|
__TS__SetDescriptor(
|
|
1243
1276
|
Buff.prototype,
|
|
1244
1277
|
"duration",
|
|
@@ -1252,13 +1285,13 @@ __TS__SetDescriptor(
|
|
|
1252
1285
|
"remainingDuration",
|
|
1253
1286
|
{
|
|
1254
1287
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1288
|
+
local ____opt_59 = self._timer
|
|
1289
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1257
1290
|
end,
|
|
1258
1291
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
local remainingDurationDelta =
|
|
1292
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1293
|
+
local ____opt_61 = self._timer
|
|
1294
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1262
1295
|
if remainingDurationDelta ~= 0 then
|
|
1263
1296
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1297
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1321,34 @@ __TS__SetDescriptor(
|
|
|
1288
1321
|
},
|
|
1289
1322
|
true
|
|
1290
1323
|
)
|
|
1291
|
-
|
|
1324
|
+
__TS__SetDescriptor(
|
|
1325
|
+
Buff.prototype,
|
|
1326
|
+
"abilityCooldownFactor",
|
|
1327
|
+
{
|
|
1328
|
+
get = function(self)
|
|
1329
|
+
return self[143] or 1
|
|
1330
|
+
end,
|
|
1331
|
+
set = function(self, abilityCooldownFactor)
|
|
1332
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1333
|
+
if previousAbilityCooldownModifier then
|
|
1334
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1335
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1336
|
+
end
|
|
1337
|
+
end
|
|
1338
|
+
local function modifier(ability, level, cooldown)
|
|
1339
|
+
return cooldown * abilityCooldownFactor
|
|
1340
|
+
end
|
|
1341
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1342
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1343
|
+
end
|
|
1344
|
+
self[144] = modifier
|
|
1345
|
+
self[143] = abilityCooldownFactor
|
|
1346
|
+
end
|
|
1347
|
+
},
|
|
1348
|
+
true
|
|
1349
|
+
)
|
|
1350
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1351
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1352
|
(function(self)
|
|
1293
1353
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1354
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1402,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1402
|
____exports.checkBuffs(target)
|
|
1343
1403
|
end
|
|
1344
1404
|
)
|
|
1405
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1406
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1407
|
+
end)
|
|
1408
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1409
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1410
|
+
end)
|
|
1345
1411
|
end)(Buff)
|
|
1346
1412
|
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
|
}
|