warscript 0.0.1-dev.5a50e5d → 0.0.1-dev.5abc199
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/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -25
- package/core/types/sound.lua +85 -44
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/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 +10 -2
- package/engine/behaviour/ability.lua +44 -21
- 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 +29 -12
- package/engine/buff.lua +207 -124
- 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/ability-duration.lua +1 -1
- 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/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -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 +40 -27
- package/engine/internal/unit.lua +382 -264
- 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/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/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/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -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/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -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/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +13 -11
- package/engine/object-data/entry/ability-type.lua +115 -17
- 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/sound-preset.d.ts +17 -0
- package/engine/object-data/entry/sound-preset.lua +104 -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 +10 -0
- package/engine/random.lua +21 -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 +6 -0
- package/engine/unit.lua +6 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +11 -10
- package/package.json +2 -2
- package/patch-lua.lua +15 -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 +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +43 -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
|
-
if not resolveBooleanValue(ability, level, abilityParameterValue) then
|
|
467
|
-
_unit:hideAbility(abilityTypeId, true)
|
|
468
|
-
end
|
|
469
|
-
elseif abilityParameterKey ~= "level" then
|
|
470
|
-
abilityParameterKey:setValue(
|
|
471
|
-
addedAbility,
|
|
472
|
-
resolveNumberValue(ability, level, abilityParameterValue)
|
|
473
|
-
)
|
|
474
|
-
end
|
|
480
|
+
if abilityParameters.isButtonVisible == false then
|
|
481
|
+
_unit:hideAbility(abilityTypeId, true)
|
|
475
482
|
end
|
|
476
|
-
|
|
483
|
+
for ____, field in ipairs(abilityParameters.fields or emptyArray()) do
|
|
484
|
+
field[1]:setValue(
|
|
485
|
+
addedAbility,
|
|
486
|
+
resolveNumberValue(ability, level, field[2])
|
|
487
|
+
)
|
|
488
|
+
end
|
|
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,66 +521,73 @@ 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
|
|
588
|
+
function Buff.prototype.expire(self)
|
|
589
|
+
expireBuff(self)
|
|
590
|
+
end
|
|
569
591
|
function Buff.prototype.onCreate(self)
|
|
570
592
|
end
|
|
571
593
|
function Buff.prototype.onDestroy(self)
|
|
@@ -594,6 +616,12 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
616
|
behavior:destroy()
|
|
595
617
|
end
|
|
596
618
|
end
|
|
619
|
+
local previousAbilityCooldownModifier = self[144]
|
|
620
|
+
if previousAbilityCooldownModifier then
|
|
621
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
622
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
623
|
+
end
|
|
624
|
+
end
|
|
597
625
|
if self[139] then
|
|
598
626
|
unit:decrementInvulnerabilityCounter()
|
|
599
627
|
end
|
|
@@ -602,7 +630,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
602
630
|
end
|
|
603
631
|
if self[136] then
|
|
604
632
|
if self[137] then
|
|
605
|
-
unit:
|
|
633
|
+
unit:decrementForceStunCounter()
|
|
606
634
|
end
|
|
607
635
|
unit:decrementStunCounter()
|
|
608
636
|
end
|
|
@@ -610,16 +638,11 @@ function Buff.prototype.onDestroy(self)
|
|
|
610
638
|
unit:decrementGhostCounter()
|
|
611
639
|
end
|
|
612
640
|
if self._abilityTypeIds ~= nil then
|
|
613
|
-
for abilityTypeId in
|
|
641
|
+
for ____, abilityTypeId in ipairs(self._abilityTypeIds) do
|
|
614
642
|
unit:removeAbility(abilityTypeId)
|
|
615
643
|
end
|
|
616
644
|
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)
|
|
645
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
646
|
self[100] = 3
|
|
624
647
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
648
|
end
|
|
@@ -648,8 +671,8 @@ function Buff.apply(self, ...)
|
|
|
648
671
|
end
|
|
649
672
|
end
|
|
650
673
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
674
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
675
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
653
676
|
if __TS__InstanceOf(buff, self) then
|
|
654
677
|
return buff
|
|
655
678
|
end
|
|
@@ -807,8 +830,8 @@ __TS__SetDescriptor(
|
|
|
807
830
|
return
|
|
808
831
|
end
|
|
809
832
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
833
|
+
local ____opt_48 = self._timer
|
|
834
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
812
835
|
local timer = self[114]
|
|
813
836
|
if timer == nil then
|
|
814
837
|
timer = Timer:create()
|
|
@@ -887,8 +910,8 @@ __TS__SetDescriptor(
|
|
|
887
910
|
return
|
|
888
911
|
end
|
|
889
912
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
913
|
+
local ____opt_50 = self._timer
|
|
914
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
892
915
|
local timer = self[119]
|
|
893
916
|
if timer == nil then
|
|
894
917
|
timer = Timer:create()
|
|
@@ -974,11 +997,11 @@ __TS__SetDescriptor(
|
|
|
974
997
|
"turnsIntoGhost",
|
|
975
998
|
{
|
|
976
999
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
1000
|
+
local ____self__135_52 = self[135]
|
|
1001
|
+
if ____self__135_52 == nil then
|
|
1002
|
+
____self__135_52 = false
|
|
980
1003
|
end
|
|
981
|
-
return
|
|
1004
|
+
return ____self__135_52
|
|
982
1005
|
end,
|
|
983
1006
|
set = function(self, turnsIntoGhost)
|
|
984
1007
|
if not turnsIntoGhost and self[135] then
|
|
@@ -997,22 +1020,22 @@ __TS__SetDescriptor(
|
|
|
997
1020
|
"stuns",
|
|
998
1021
|
{
|
|
999
1022
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1023
|
+
local ____self__136_53 = self[136]
|
|
1024
|
+
if ____self__136_53 == nil then
|
|
1025
|
+
____self__136_53 = false
|
|
1003
1026
|
end
|
|
1004
|
-
return
|
|
1027
|
+
return ____self__136_53
|
|
1005
1028
|
end,
|
|
1006
1029
|
set = function(self, stuns)
|
|
1007
1030
|
if not stuns and self[136] then
|
|
1008
1031
|
if self[137] then
|
|
1009
|
-
self.object:
|
|
1032
|
+
self.object:decrementForceStunCounter()
|
|
1010
1033
|
end
|
|
1011
1034
|
self.object:decrementStunCounter()
|
|
1012
1035
|
self[136] = nil
|
|
1013
1036
|
elseif stuns and not self[136] then
|
|
1014
1037
|
if self[137] then
|
|
1015
|
-
self.object:
|
|
1038
|
+
self.object:incrementForceStunCounter()
|
|
1016
1039
|
end
|
|
1017
1040
|
self.object:incrementStunCounter()
|
|
1018
1041
|
self[136] = true
|
|
@@ -1026,21 +1049,21 @@ __TS__SetDescriptor(
|
|
|
1026
1049
|
"ignoresStunImmunity",
|
|
1027
1050
|
{
|
|
1028
1051
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1052
|
+
local ____self__137_54 = self[137]
|
|
1053
|
+
if ____self__137_54 == nil then
|
|
1054
|
+
____self__137_54 = false
|
|
1032
1055
|
end
|
|
1033
|
-
return
|
|
1056
|
+
return ____self__137_54
|
|
1034
1057
|
end,
|
|
1035
1058
|
set = function(self, ignoresStunImmunity)
|
|
1036
1059
|
if not ignoresStunImmunity and self[137] then
|
|
1037
1060
|
if self[136] then
|
|
1038
|
-
self.object:
|
|
1061
|
+
self.object:decrementForceStunCounter()
|
|
1039
1062
|
end
|
|
1040
1063
|
self[137] = nil
|
|
1041
1064
|
elseif ignoresStunImmunity and not self[137] then
|
|
1042
1065
|
if self[136] then
|
|
1043
|
-
self.object:
|
|
1066
|
+
self.object:incrementForceStunCounter()
|
|
1044
1067
|
end
|
|
1045
1068
|
self[137] = true
|
|
1046
1069
|
end
|
|
@@ -1053,11 +1076,11 @@ __TS__SetDescriptor(
|
|
|
1053
1076
|
"disablesAutoAttack",
|
|
1054
1077
|
{
|
|
1055
1078
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1079
|
+
local ____self__138_55 = self[138]
|
|
1080
|
+
if ____self__138_55 == nil then
|
|
1081
|
+
____self__138_55 = false
|
|
1059
1082
|
end
|
|
1060
|
-
return
|
|
1083
|
+
return ____self__138_55
|
|
1061
1084
|
end,
|
|
1062
1085
|
set = function(self, disablesAutoAttack)
|
|
1063
1086
|
if not disablesAutoAttack and self[138] then
|
|
@@ -1076,11 +1099,11 @@ __TS__SetDescriptor(
|
|
|
1076
1099
|
"providesInvulnerability",
|
|
1077
1100
|
{
|
|
1078
1101
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1102
|
+
local ____self__139_56 = self[139]
|
|
1103
|
+
if ____self__139_56 == nil then
|
|
1104
|
+
____self__139_56 = false
|
|
1082
1105
|
end
|
|
1083
|
-
return
|
|
1106
|
+
return ____self__139_56
|
|
1084
1107
|
end,
|
|
1085
1108
|
set = function(self, providesInvulnerability)
|
|
1086
1109
|
if not providesInvulnerability and self[139] then
|
|
@@ -1099,11 +1122,11 @@ __TS__SetDescriptor(
|
|
|
1099
1122
|
"killsOnExpiration",
|
|
1100
1123
|
{
|
|
1101
1124
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1125
|
+
local ____self__140_57 = self[140]
|
|
1126
|
+
if ____self__140_57 == nil then
|
|
1127
|
+
____self__140_57 = false
|
|
1105
1128
|
end
|
|
1106
|
-
return
|
|
1129
|
+
return ____self__140_57
|
|
1107
1130
|
end,
|
|
1108
1131
|
set = function(self, killsOnExpiration)
|
|
1109
1132
|
if not killsOnExpiration and self[140] then
|
|
@@ -1120,11 +1143,11 @@ __TS__SetDescriptor(
|
|
|
1120
1143
|
"explodesOnExpiration",
|
|
1121
1144
|
{
|
|
1122
1145
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1146
|
+
local ____self__141_58 = self[141]
|
|
1147
|
+
if ____self__141_58 == nil then
|
|
1148
|
+
____self__141_58 = false
|
|
1126
1149
|
end
|
|
1127
|
-
return
|
|
1150
|
+
return ____self__141_58
|
|
1128
1151
|
end,
|
|
1129
1152
|
set = function(self, killsOnExpiration)
|
|
1130
1153
|
if not killsOnExpiration and self[141] then
|
|
@@ -1239,12 +1262,39 @@ __TS__SetDescriptor(
|
|
|
1239
1262
|
},
|
|
1240
1263
|
true
|
|
1241
1264
|
)
|
|
1265
|
+
__TS__SetDescriptor(
|
|
1266
|
+
Buff.prototype,
|
|
1267
|
+
"manaRegenerationRateIncreaseFactor",
|
|
1268
|
+
{
|
|
1269
|
+
get = function(self)
|
|
1270
|
+
return self:getUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR)
|
|
1271
|
+
end,
|
|
1272
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
1273
|
+
self:addOrUpdateOrRemoveUnitBonus(UnitBonusType.MANA_REGENERATION_RATE_FACTOR, manaRegenerationRateIncreaseFactor)
|
|
1274
|
+
end
|
|
1275
|
+
},
|
|
1276
|
+
true
|
|
1277
|
+
)
|
|
1242
1278
|
__TS__SetDescriptor(
|
|
1243
1279
|
Buff.prototype,
|
|
1244
1280
|
"duration",
|
|
1245
|
-
{
|
|
1246
|
-
|
|
1247
|
-
|
|
1281
|
+
{
|
|
1282
|
+
get = function(self)
|
|
1283
|
+
return self[103]
|
|
1284
|
+
end,
|
|
1285
|
+
set = function(self, duration)
|
|
1286
|
+
if duration <= 0 then
|
|
1287
|
+
local timer = self._timer
|
|
1288
|
+
if timer ~= nil then
|
|
1289
|
+
timer:destroy()
|
|
1290
|
+
self._timer = nil
|
|
1291
|
+
end
|
|
1292
|
+
self[103] = 0
|
|
1293
|
+
else
|
|
1294
|
+
self.remainingDuration = self.remainingDuration + (duration - self[103])
|
|
1295
|
+
end
|
|
1296
|
+
end
|
|
1297
|
+
},
|
|
1248
1298
|
true
|
|
1249
1299
|
)
|
|
1250
1300
|
__TS__SetDescriptor(
|
|
@@ -1252,13 +1302,13 @@ __TS__SetDescriptor(
|
|
|
1252
1302
|
"remainingDuration",
|
|
1253
1303
|
{
|
|
1254
1304
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1305
|
+
local ____opt_59 = self._timer
|
|
1306
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1257
1307
|
end,
|
|
1258
1308
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
local remainingDurationDelta =
|
|
1309
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1310
|
+
local ____opt_61 = self._timer
|
|
1311
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1262
1312
|
if remainingDurationDelta ~= 0 then
|
|
1263
1313
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1314
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1338,34 @@ __TS__SetDescriptor(
|
|
|
1288
1338
|
},
|
|
1289
1339
|
true
|
|
1290
1340
|
)
|
|
1291
|
-
|
|
1341
|
+
__TS__SetDescriptor(
|
|
1342
|
+
Buff.prototype,
|
|
1343
|
+
"abilityCooldownFactor",
|
|
1344
|
+
{
|
|
1345
|
+
get = function(self)
|
|
1346
|
+
return self[143] or 1
|
|
1347
|
+
end,
|
|
1348
|
+
set = function(self, abilityCooldownFactor)
|
|
1349
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1350
|
+
if previousAbilityCooldownModifier then
|
|
1351
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1352
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1353
|
+
end
|
|
1354
|
+
end
|
|
1355
|
+
local function modifier(ability, level, cooldown)
|
|
1356
|
+
return cooldown * abilityCooldownFactor
|
|
1357
|
+
end
|
|
1358
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1359
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1360
|
+
end
|
|
1361
|
+
self[144] = modifier
|
|
1362
|
+
self[143] = abilityCooldownFactor
|
|
1363
|
+
end
|
|
1364
|
+
},
|
|
1365
|
+
true
|
|
1366
|
+
)
|
|
1367
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1368
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1369
|
(function(self)
|
|
1293
1370
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1371
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1419,11 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1419
|
____exports.checkBuffs(target)
|
|
1343
1420
|
end
|
|
1344
1421
|
)
|
|
1422
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1423
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1424
|
+
end)
|
|
1425
|
+
buffBeingDestroyedEvent:addListener(function(buff)
|
|
1426
|
+
UnitBehavior:forAll(buff.unit, "onBuffLost", buff)
|
|
1427
|
+
end)
|
|
1345
1428
|
end)(Buff)
|
|
1346
1429
|
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
|
}
|