warscript 0.0.1-dev.2cd2e68 → 0.0.1-dev.3030dbc
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 +1 -0
- package/attributes.lua +9 -0
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +15 -0
- package/core/types/player.lua +56 -14
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/tileCell.d.ts +9 -0
- package/core/types/tileCell.lua +92 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/decl/native.d.ts +6 -4
- package/engine/behavior.d.ts +5 -0
- package/engine/behavior.lua +106 -27
- package/engine/behaviour/ability/apply-buff.lua +1 -1
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +2 -1
- 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.lua +7 -16
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +19 -2
- package/engine/behaviour/unit.lua +83 -7
- package/engine/buff.d.ts +12 -5
- package/engine/buff.lua +123 -86
- package/engine/internal/ability.d.ts +3 -1
- package/engine/internal/ability.lua +34 -11
- package/engine/internal/item/ability.lua +51 -1
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +13 -15
- package/engine/internal/item.lua +63 -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 -5
- package/engine/internal/unit/ability.lua +96 -21
- 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+ability.lua +10 -1
- package/engine/internal/unit-missile-launch.lua +45 -14
- package/engine/internal/unit.d.ts +19 -12
- package/engine/internal/unit.lua +170 -109
- 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.lua +5 -4
- package/engine/object-data/entry/unit-type.d.ts +11 -2
- package/engine/object-data/entry/unit-type.lua +59 -1
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +11 -0
- package/engine/object-field/unit.lua +34 -0
- package/engine/object-field.d.ts +11 -3
- package/engine/object-field.lua +194 -102
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -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 +1 -0
- package/engine/unit.lua +1 -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 -26
- package/core/types/order.lua +0 -65
|
@@ -17,6 +17,11 @@ local getOrPut = ____lua_2Dmaps.getOrPut
|
|
|
17
17
|
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
18
18
|
local ____lua_2Dsets = require("utility.lua-sets")
|
|
19
19
|
local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
|
|
20
|
+
local ____bonus = require("engine.internal.unit.bonus")
|
|
21
|
+
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
22
|
+
local getUnitBonus = ____bonus.getUnitBonus
|
|
23
|
+
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
24
|
+
local safeCall = warpack.safeCall
|
|
20
25
|
local behaviorsByEvent = {}
|
|
21
26
|
local rangeByBehaviorByEvent = {}
|
|
22
27
|
local listenerByBehaviorByEvent = {}
|
|
@@ -47,9 +52,27 @@ function UnitBehavior.prototype.onDestroy(self)
|
|
|
47
52
|
end
|
|
48
53
|
eventsByBehavior[self] = nil
|
|
49
54
|
end
|
|
55
|
+
if self._bonusIdByBonusType ~= nil then
|
|
56
|
+
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
57
|
+
removeUnitBonus(self.object, bonusType, bonusId)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
50
60
|
return Behavior.prototype.onDestroy(self)
|
|
51
61
|
end
|
|
52
|
-
function UnitBehavior.prototype.
|
|
62
|
+
function UnitBehavior.prototype.getUnitBonus(self, bonusType)
|
|
63
|
+
local ____opt_6 = self._bonusIdByBonusType
|
|
64
|
+
local bonusId = ____opt_6 and ____opt_6[bonusType]
|
|
65
|
+
return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
|
|
66
|
+
end
|
|
67
|
+
function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
68
|
+
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
69
|
+
if bonusIdByBonusType == nil then
|
|
70
|
+
bonusIdByBonusType = {}
|
|
71
|
+
self._bonusIdByBonusType = bonusIdByBonusType
|
|
72
|
+
end
|
|
73
|
+
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self.object, bonusType, bonusIdByBonusType[bonusType], value)
|
|
74
|
+
end
|
|
75
|
+
function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, extractUnit, range, listener)
|
|
53
76
|
local rangeByBehavior = getOrPut(rangeByBehaviorByEvent, event, mutableLuaMap)
|
|
54
77
|
rangeByBehavior[self] = range
|
|
55
78
|
local listenerByBehavior = getOrPut(listenerByBehaviorByEvent, event, mutableLuaMap)
|
|
@@ -57,14 +80,16 @@ function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, range, lis
|
|
|
57
80
|
getOrPut(eventsByBehavior, self, mutableLuaSet)[event] = true
|
|
58
81
|
local behaviors = behaviorsByEvent[event]
|
|
59
82
|
if behaviors == nil then
|
|
60
|
-
event:addListener(function(
|
|
83
|
+
event:addListener(function(...)
|
|
61
84
|
local behaviors = behaviorsByEvent[event]
|
|
62
85
|
if behaviors ~= nil then
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
local
|
|
67
|
-
|
|
86
|
+
local unit = extractUnit(...)
|
|
87
|
+
if unit ~= nil then
|
|
88
|
+
for behavior in pairs(behaviors) do
|
|
89
|
+
local range = rangeByBehavior[behavior]
|
|
90
|
+
if range ~= nil and unit:getCollisionDistanceTo(behavior.unit) <= range then
|
|
91
|
+
safeCall(behavior[listenerByBehavior[behavior]], behavior, ...)
|
|
92
|
+
end
|
|
68
93
|
end
|
|
69
94
|
end
|
|
70
95
|
end
|
|
@@ -104,10 +129,28 @@ function UnitBehavior.prototype.onAbilityChannelingStart(self, ability)
|
|
|
104
129
|
end
|
|
105
130
|
function UnitBehavior.prototype.onAbilityImpact(self, ability)
|
|
106
131
|
end
|
|
132
|
+
function UnitBehavior.prototype.onAbilityWidgetTargetImpact(self, ability, target)
|
|
133
|
+
end
|
|
134
|
+
function UnitBehavior.prototype.onAbilityUnitTargetImpact(self, ability, target)
|
|
135
|
+
end
|
|
136
|
+
function UnitBehavior.prototype.onAbilityItemTargetImpact(self, ability, target)
|
|
137
|
+
end
|
|
138
|
+
function UnitBehavior.prototype.onAbilityDestructibleTargetImpact(self, ability, target)
|
|
139
|
+
end
|
|
140
|
+
function UnitBehavior.prototype.onAbilityPointTargetImpact(self, ability, x, y)
|
|
141
|
+
end
|
|
142
|
+
function UnitBehavior.prototype.onAbilityNoTargetImpact(self, ability)
|
|
143
|
+
end
|
|
107
144
|
function UnitBehavior.prototype.onAbilityChannelingFinish(self, ability)
|
|
108
145
|
end
|
|
109
146
|
function UnitBehavior.prototype.onAbilityStop(self, ability)
|
|
110
147
|
end
|
|
148
|
+
function UnitBehavior.prototype.onTargetingAbilityChannelingStart(self, ability, source)
|
|
149
|
+
end
|
|
150
|
+
function UnitBehavior.prototype.onTargetingAbilityImpact(self, ability, source)
|
|
151
|
+
end
|
|
152
|
+
function UnitBehavior.prototype.onBuffGained(self, buff)
|
|
153
|
+
end
|
|
111
154
|
function UnitBehavior.prototype.onItemDropped(self, item)
|
|
112
155
|
end
|
|
113
156
|
function UnitBehavior.prototype.onItemPickedUp(self, item)
|
|
@@ -122,6 +165,8 @@ function UnitBehavior.prototype.onKill(self, target)
|
|
|
122
165
|
end
|
|
123
166
|
function UnitBehavior.prototype.onDeath(self, source)
|
|
124
167
|
end
|
|
168
|
+
function UnitBehavior.prototype.onOwnerChange(self, previousOwner)
|
|
169
|
+
end
|
|
125
170
|
__TS__SetDescriptor(
|
|
126
171
|
UnitBehavior.prototype,
|
|
127
172
|
"unit",
|
|
@@ -175,9 +220,37 @@ __TS__SetDescriptor(
|
|
|
175
220
|
Unit.abilityChannelingStartEvent:addListener(function(source, ability)
|
|
176
221
|
____exports.UnitBehavior:forAll(source, "onAbilityChannelingStart", ability)
|
|
177
222
|
end)
|
|
223
|
+
Unit.abilityUnitTargetChannelingStartEvent:addListener(function(source, ability, target)
|
|
224
|
+
____exports.UnitBehavior:forAll(target, "onTargetingAbilityChannelingStart", ability, source)
|
|
225
|
+
end)
|
|
178
226
|
Unit.abilityImpactEvent:addListener(function(source, ability)
|
|
179
227
|
____exports.UnitBehavior:forAll(source, "onAbilityImpact", ability)
|
|
180
228
|
end)
|
|
229
|
+
Unit.abilityWidgetTargetImpactEvent:addListener(function(source, ability, target)
|
|
230
|
+
____exports.UnitBehavior:forAll(source, "onAbilityWidgetTargetImpact", ability, target)
|
|
231
|
+
end)
|
|
232
|
+
Unit.abilityUnitTargetImpactEvent:addListener(function(source, ability, target)
|
|
233
|
+
____exports.UnitBehavior:forAll(source, "onAbilityUnitTargetImpact", ability, target)
|
|
234
|
+
____exports.UnitBehavior:forAll(target, "onTargetingAbilityImpact", ability, source)
|
|
235
|
+
end)
|
|
236
|
+
Unit.abilityItemTargetImpactEvent:addListener(function(source, ability, target)
|
|
237
|
+
____exports.UnitBehavior:forAll(source, "onAbilityItemTargetImpact", ability, target)
|
|
238
|
+
end)
|
|
239
|
+
Unit.abilityDestructibleTargetImpactEvent:addListener(function(source, ability, target)
|
|
240
|
+
____exports.UnitBehavior:forAll(source, "onAbilityDestructibleTargetImpact", ability, target)
|
|
241
|
+
end)
|
|
242
|
+
Unit.abilityPointTargetImpactEvent:addListener(function(source, ability, x, y)
|
|
243
|
+
____exports.UnitBehavior:forAll(
|
|
244
|
+
source,
|
|
245
|
+
"onAbilityPointTargetImpact",
|
|
246
|
+
ability,
|
|
247
|
+
x,
|
|
248
|
+
y
|
|
249
|
+
)
|
|
250
|
+
end)
|
|
251
|
+
Unit.abilityNoTargetImpactEvent:addListener(function(source, ability)
|
|
252
|
+
____exports.UnitBehavior:forAll(source, "onAbilityNoTargetImpact", ability)
|
|
253
|
+
end)
|
|
181
254
|
Unit.abilityChannelingFinishEvent:addListener(function(source, ability)
|
|
182
255
|
____exports.UnitBehavior:forAll(source, "onAbilityChannelingFinish", ability)
|
|
183
256
|
end)
|
|
@@ -205,6 +278,9 @@ __TS__SetDescriptor(
|
|
|
205
278
|
Unit.itemChargesChangedEvent:addListener(function(unit, item)
|
|
206
279
|
____exports.UnitBehavior:forAll(unit, "onItemChargesChanged", item)
|
|
207
280
|
end)
|
|
281
|
+
Unit.onOwnerChange:addListener(function(unit, previousOwner)
|
|
282
|
+
____exports.UnitBehavior:forAll(unit, "onOwnerChange", previousOwner)
|
|
283
|
+
end)
|
|
208
284
|
end)(UnitBehavior)
|
|
209
285
|
Unit.destroyEvent:addListener(function(unit)
|
|
210
286
|
____exports.UnitBehavior:forAll(unit, "destroy")
|
package/engine/buff.d.ts
CHANGED
|
@@ -79,6 +79,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
79
79
|
healingOnExpiration?: NumberParameterValueType;
|
|
80
80
|
killsOnExpiration?: BooleanParameterValueType;
|
|
81
81
|
explodesOnExpiration?: BooleanParameterValueType;
|
|
82
|
+
abilityCooldownFactor?: NumberParameterValueType;
|
|
82
83
|
uniqueGroup?: BuffUniqueGroup;
|
|
83
84
|
} : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
|
|
84
85
|
declare const enum BuffPropertyKey {
|
|
@@ -124,7 +125,9 @@ declare const enum BuffPropertyKey {
|
|
|
124
125
|
PROVIDES_INVULNERABILITY = 139,
|
|
125
126
|
KILLS_ON_EXPIRATION = 140,
|
|
126
127
|
EXPLODES_ON_EXPIRATION = 141,
|
|
127
|
-
MISS_PROBABILITY = 142
|
|
128
|
+
MISS_PROBABILITY = 142,
|
|
129
|
+
ABILITY_COOLDOWN_FACTOR = 143,
|
|
130
|
+
ABILITY_COOLDOWN_MODIFIER = 144
|
|
128
131
|
}
|
|
129
132
|
export declare const enum BuffTypeIdSelectionPolicy {
|
|
130
133
|
LEAST_DURATION = 0
|
|
@@ -187,6 +190,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
187
190
|
private [BuffPropertyKey.PROVIDES_INVULNERABILITY]?;
|
|
188
191
|
private [BuffPropertyKey.KILLS_ON_EXPIRATION]?;
|
|
189
192
|
private [BuffPropertyKey.EXPLODES_ON_EXPIRATION]?;
|
|
193
|
+
private [BuffPropertyKey.ABILITY_COOLDOWN_FACTOR]?;
|
|
194
|
+
private [BuffPropertyKey.ABILITY_COOLDOWN_MODIFIER]?;
|
|
190
195
|
protected static readonly defaultParameters: BuffParameters;
|
|
191
196
|
get source(): Unit;
|
|
192
197
|
readonly typeId: ApplicableBuffTypeId;
|
|
@@ -201,11 +206,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
201
206
|
private readonly _spellStealPriority?;
|
|
202
207
|
private readonly _learnLevelMinimum?;
|
|
203
208
|
private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
|
|
204
|
-
private _bonusIdByBonusType?;
|
|
205
209
|
private readonly _abilityTypeIds?;
|
|
206
210
|
private _behaviors?;
|
|
207
|
-
private getUnitBonus;
|
|
208
|
-
private addOrUpdateOrRemoveUnitBonus;
|
|
209
211
|
constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
|
|
210
212
|
get level(): number;
|
|
211
213
|
get remainingDamageOverDuration(): number;
|
|
@@ -265,6 +267,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
265
267
|
get duration(): number;
|
|
266
268
|
get remainingDuration(): number;
|
|
267
269
|
set remainingDuration(remainingDuration: number);
|
|
270
|
+
get abilityCooldownFactor(): number;
|
|
271
|
+
set abilityCooldownFactor(abilityCooldownFactor: number);
|
|
272
|
+
onAbilityGained(ability: Ability): void;
|
|
273
|
+
onAbilityLost(ability: Ability): void;
|
|
268
274
|
flashEffect(...parameters: [
|
|
269
275
|
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
270
276
|
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
@@ -278,6 +284,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
278
284
|
onDeath(source: Unit | undefined): void;
|
|
279
285
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|
|
280
286
|
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
281
|
-
static readonly
|
|
287
|
+
static readonly createdEvent: Event<[Buff<object>]>;
|
|
288
|
+
static readonly beingDestroyedEvent: Event<[Buff<object>]>;
|
|
282
289
|
}
|
|
283
290
|
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,8 @@ 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
56
|
local getUnitAbility = BlzGetUnitAbility
|
|
57
57
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
58
58
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -124,7 +124,8 @@ local buffParametersKeys = {
|
|
|
124
124
|
damageOnExpiration = true,
|
|
125
125
|
healingOnExpiration = true,
|
|
126
126
|
killsOnExpiration = true,
|
|
127
|
-
explodesOnExpiration = true
|
|
127
|
+
explodesOnExpiration = true,
|
|
128
|
+
abilityCooldownFactor = true
|
|
128
129
|
}
|
|
129
130
|
local function resolveEnumValue(ability, level, value)
|
|
130
131
|
if value == nil or type(value) == "number" then
|
|
@@ -304,7 +305,8 @@ buffHealingIntervalTimerCallback = function(buff)
|
|
|
304
305
|
source:healTarget(buff[101], healingPerInterval)
|
|
305
306
|
end
|
|
306
307
|
end
|
|
307
|
-
local
|
|
308
|
+
local buffCreatedEvent = __TS__New(Event)
|
|
309
|
+
local buffBeingDestroyedEvent = __TS__New(Event)
|
|
308
310
|
____exports.Buff = __TS__Class()
|
|
309
311
|
local Buff = ____exports.Buff
|
|
310
312
|
Buff.name = "Buff"
|
|
@@ -506,64 +508,68 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
506
508
|
end
|
|
507
509
|
self:onCreate()
|
|
508
510
|
self[100] = 1
|
|
511
|
+
Event.invoke(buffCreatedEvent, self)
|
|
509
512
|
end
|
|
510
|
-
function Buff.prototype.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
513
|
+
function Buff.prototype.onAbilityGained(self, ability)
|
|
514
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
515
|
+
local abilityCooldownModifier = self[144]
|
|
516
|
+
if abilityCooldownModifier then
|
|
517
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, abilityCooldownModifier)
|
|
518
|
+
end
|
|
519
|
+
end
|
|
514
520
|
end
|
|
515
|
-
function Buff.prototype.
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
521
|
+
function Buff.prototype.onAbilityLost(self, ability)
|
|
522
|
+
if __TS__InstanceOf(ability, UnitAbility) then
|
|
523
|
+
local abilityCooldownModifier = self[144]
|
|
524
|
+
if abilityCooldownModifier then
|
|
525
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, abilityCooldownModifier)
|
|
526
|
+
end
|
|
520
527
|
end
|
|
521
|
-
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
522
528
|
end
|
|
523
529
|
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
524
530
|
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
525
531
|
Effect:flash(self[105], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
526
532
|
else
|
|
527
533
|
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
528
|
-
local
|
|
529
|
-
local
|
|
530
|
-
local
|
|
534
|
+
local ____Effect_40 = Effect
|
|
535
|
+
local ____Effect_flash_41 = Effect.flash
|
|
536
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
531
537
|
self[105],
|
|
532
538
|
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
533
539
|
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
534
540
|
)
|
|
535
|
-
local
|
|
541
|
+
local ____isWidgetProvided_38
|
|
536
542
|
if isWidgetProvided then
|
|
537
|
-
|
|
543
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
538
544
|
else
|
|
539
|
-
|
|
545
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
540
546
|
end
|
|
541
|
-
__TS__SparseArrayPush(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
__TS__SparseArraySpread(
|
|
547
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
548
|
+
____Effect_flash_41(
|
|
549
|
+
____Effect_40,
|
|
550
|
+
__TS__SparseArraySpread(____array_39)
|
|
545
551
|
)
|
|
546
552
|
end
|
|
547
553
|
end
|
|
548
554
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
549
555
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
550
|
-
local
|
|
551
|
-
local
|
|
552
|
-
local
|
|
556
|
+
local ____Effect_44 = Effect
|
|
557
|
+
local ____Effect_flash_45 = Effect.flash
|
|
558
|
+
local ____array_43 = __TS__SparseArrayNew(
|
|
553
559
|
self[106],
|
|
554
560
|
isWidgetProvided and widgetOrDuration or self._unit,
|
|
555
561
|
stringValueByBuffTypeIdByFieldId[fourCC("fspt")][self.typeId] or "origin"
|
|
556
562
|
)
|
|
557
|
-
local
|
|
563
|
+
local ____isWidgetProvided_42
|
|
558
564
|
if isWidgetProvided then
|
|
559
|
-
|
|
565
|
+
____isWidgetProvided_42 = duration
|
|
560
566
|
else
|
|
561
|
-
|
|
567
|
+
____isWidgetProvided_42 = widgetOrDuration
|
|
562
568
|
end
|
|
563
|
-
__TS__SparseArrayPush(
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
__TS__SparseArraySpread(
|
|
569
|
+
__TS__SparseArrayPush(____array_43, ____isWidgetProvided_42)
|
|
570
|
+
____Effect_flash_45(
|
|
571
|
+
____Effect_44,
|
|
572
|
+
__TS__SparseArraySpread(____array_43)
|
|
567
573
|
)
|
|
568
574
|
end
|
|
569
575
|
function Buff.prototype.onCreate(self)
|
|
@@ -594,6 +600,12 @@ function Buff.prototype.onDestroy(self)
|
|
|
594
600
|
behavior:destroy()
|
|
595
601
|
end
|
|
596
602
|
end
|
|
603
|
+
local previousAbilityCooldownModifier = self[144]
|
|
604
|
+
if previousAbilityCooldownModifier then
|
|
605
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
606
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
607
|
+
end
|
|
608
|
+
end
|
|
597
609
|
if self[139] then
|
|
598
610
|
unit:decrementInvulnerabilityCounter()
|
|
599
611
|
end
|
|
@@ -602,7 +614,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
602
614
|
end
|
|
603
615
|
if self[136] then
|
|
604
616
|
if self[137] then
|
|
605
|
-
unit:
|
|
617
|
+
unit:decrementForceStunCounter()
|
|
606
618
|
end
|
|
607
619
|
unit:decrementStunCounter()
|
|
608
620
|
end
|
|
@@ -614,12 +626,7 @@ function Buff.prototype.onDestroy(self)
|
|
|
614
626
|
unit:removeAbility(abilityTypeId)
|
|
615
627
|
end
|
|
616
628
|
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)
|
|
629
|
+
Event.invoke(buffBeingDestroyedEvent, self)
|
|
623
630
|
self[100] = 3
|
|
624
631
|
return UnitBehavior.prototype.onDestroy(self)
|
|
625
632
|
end
|
|
@@ -648,8 +655,8 @@ function Buff.apply(self, ...)
|
|
|
648
655
|
end
|
|
649
656
|
end
|
|
650
657
|
function Buff.getByTypeId(self, unit, typeId)
|
|
651
|
-
local
|
|
652
|
-
local buff =
|
|
658
|
+
local ____opt_46 = buffByTypeIdByUnit[unit]
|
|
659
|
+
local buff = ____opt_46 and ____opt_46[typeId]
|
|
653
660
|
if __TS__InstanceOf(buff, self) then
|
|
654
661
|
return buff
|
|
655
662
|
end
|
|
@@ -807,8 +814,8 @@ __TS__SetDescriptor(
|
|
|
807
814
|
return
|
|
808
815
|
end
|
|
809
816
|
self[112] = damageInterval
|
|
810
|
-
local
|
|
811
|
-
local elapsed =
|
|
817
|
+
local ____opt_48 = self._timer
|
|
818
|
+
local elapsed = ____opt_48 and ____opt_48.elapsed or 0
|
|
812
819
|
local timer = self[114]
|
|
813
820
|
if timer == nil then
|
|
814
821
|
timer = Timer:create()
|
|
@@ -887,8 +894,8 @@ __TS__SetDescriptor(
|
|
|
887
894
|
return
|
|
888
895
|
end
|
|
889
896
|
self[117] = healingInterval
|
|
890
|
-
local
|
|
891
|
-
local elapsed =
|
|
897
|
+
local ____opt_50 = self._timer
|
|
898
|
+
local elapsed = ____opt_50 and ____opt_50.elapsed or 0
|
|
892
899
|
local timer = self[119]
|
|
893
900
|
if timer == nil then
|
|
894
901
|
timer = Timer:create()
|
|
@@ -974,11 +981,11 @@ __TS__SetDescriptor(
|
|
|
974
981
|
"turnsIntoGhost",
|
|
975
982
|
{
|
|
976
983
|
get = function(self)
|
|
977
|
-
local
|
|
978
|
-
if
|
|
979
|
-
|
|
984
|
+
local ____self__135_52 = self[135]
|
|
985
|
+
if ____self__135_52 == nil then
|
|
986
|
+
____self__135_52 = false
|
|
980
987
|
end
|
|
981
|
-
return
|
|
988
|
+
return ____self__135_52
|
|
982
989
|
end,
|
|
983
990
|
set = function(self, turnsIntoGhost)
|
|
984
991
|
if not turnsIntoGhost and self[135] then
|
|
@@ -997,22 +1004,22 @@ __TS__SetDescriptor(
|
|
|
997
1004
|
"stuns",
|
|
998
1005
|
{
|
|
999
1006
|
get = function(self)
|
|
1000
|
-
local
|
|
1001
|
-
if
|
|
1002
|
-
|
|
1007
|
+
local ____self__136_53 = self[136]
|
|
1008
|
+
if ____self__136_53 == nil then
|
|
1009
|
+
____self__136_53 = false
|
|
1003
1010
|
end
|
|
1004
|
-
return
|
|
1011
|
+
return ____self__136_53
|
|
1005
1012
|
end,
|
|
1006
1013
|
set = function(self, stuns)
|
|
1007
1014
|
if not stuns and self[136] then
|
|
1008
1015
|
if self[137] then
|
|
1009
|
-
self.object:
|
|
1016
|
+
self.object:decrementForceStunCounter()
|
|
1010
1017
|
end
|
|
1011
1018
|
self.object:decrementStunCounter()
|
|
1012
1019
|
self[136] = nil
|
|
1013
1020
|
elseif stuns and not self[136] then
|
|
1014
1021
|
if self[137] then
|
|
1015
|
-
self.object:
|
|
1022
|
+
self.object:incrementForceStunCounter()
|
|
1016
1023
|
end
|
|
1017
1024
|
self.object:incrementStunCounter()
|
|
1018
1025
|
self[136] = true
|
|
@@ -1026,21 +1033,21 @@ __TS__SetDescriptor(
|
|
|
1026
1033
|
"ignoresStunImmunity",
|
|
1027
1034
|
{
|
|
1028
1035
|
get = function(self)
|
|
1029
|
-
local
|
|
1030
|
-
if
|
|
1031
|
-
|
|
1036
|
+
local ____self__137_54 = self[137]
|
|
1037
|
+
if ____self__137_54 == nil then
|
|
1038
|
+
____self__137_54 = false
|
|
1032
1039
|
end
|
|
1033
|
-
return
|
|
1040
|
+
return ____self__137_54
|
|
1034
1041
|
end,
|
|
1035
1042
|
set = function(self, ignoresStunImmunity)
|
|
1036
1043
|
if not ignoresStunImmunity and self[137] then
|
|
1037
1044
|
if self[136] then
|
|
1038
|
-
self.object:
|
|
1045
|
+
self.object:decrementForceStunCounter()
|
|
1039
1046
|
end
|
|
1040
1047
|
self[137] = nil
|
|
1041
1048
|
elseif ignoresStunImmunity and not self[137] then
|
|
1042
1049
|
if self[136] then
|
|
1043
|
-
self.object:
|
|
1050
|
+
self.object:incrementForceStunCounter()
|
|
1044
1051
|
end
|
|
1045
1052
|
self[137] = true
|
|
1046
1053
|
end
|
|
@@ -1053,11 +1060,11 @@ __TS__SetDescriptor(
|
|
|
1053
1060
|
"disablesAutoAttack",
|
|
1054
1061
|
{
|
|
1055
1062
|
get = function(self)
|
|
1056
|
-
local
|
|
1057
|
-
if
|
|
1058
|
-
|
|
1063
|
+
local ____self__138_55 = self[138]
|
|
1064
|
+
if ____self__138_55 == nil then
|
|
1065
|
+
____self__138_55 = false
|
|
1059
1066
|
end
|
|
1060
|
-
return
|
|
1067
|
+
return ____self__138_55
|
|
1061
1068
|
end,
|
|
1062
1069
|
set = function(self, disablesAutoAttack)
|
|
1063
1070
|
if not disablesAutoAttack and self[138] then
|
|
@@ -1076,11 +1083,11 @@ __TS__SetDescriptor(
|
|
|
1076
1083
|
"providesInvulnerability",
|
|
1077
1084
|
{
|
|
1078
1085
|
get = function(self)
|
|
1079
|
-
local
|
|
1080
|
-
if
|
|
1081
|
-
|
|
1086
|
+
local ____self__139_56 = self[139]
|
|
1087
|
+
if ____self__139_56 == nil then
|
|
1088
|
+
____self__139_56 = false
|
|
1082
1089
|
end
|
|
1083
|
-
return
|
|
1090
|
+
return ____self__139_56
|
|
1084
1091
|
end,
|
|
1085
1092
|
set = function(self, providesInvulnerability)
|
|
1086
1093
|
if not providesInvulnerability and self[139] then
|
|
@@ -1099,11 +1106,11 @@ __TS__SetDescriptor(
|
|
|
1099
1106
|
"killsOnExpiration",
|
|
1100
1107
|
{
|
|
1101
1108
|
get = function(self)
|
|
1102
|
-
local
|
|
1103
|
-
if
|
|
1104
|
-
|
|
1109
|
+
local ____self__140_57 = self[140]
|
|
1110
|
+
if ____self__140_57 == nil then
|
|
1111
|
+
____self__140_57 = false
|
|
1105
1112
|
end
|
|
1106
|
-
return
|
|
1113
|
+
return ____self__140_57
|
|
1107
1114
|
end,
|
|
1108
1115
|
set = function(self, killsOnExpiration)
|
|
1109
1116
|
if not killsOnExpiration and self[140] then
|
|
@@ -1120,11 +1127,11 @@ __TS__SetDescriptor(
|
|
|
1120
1127
|
"explodesOnExpiration",
|
|
1121
1128
|
{
|
|
1122
1129
|
get = function(self)
|
|
1123
|
-
local
|
|
1124
|
-
if
|
|
1125
|
-
|
|
1130
|
+
local ____self__141_58 = self[141]
|
|
1131
|
+
if ____self__141_58 == nil then
|
|
1132
|
+
____self__141_58 = false
|
|
1126
1133
|
end
|
|
1127
|
-
return
|
|
1134
|
+
return ____self__141_58
|
|
1128
1135
|
end,
|
|
1129
1136
|
set = function(self, killsOnExpiration)
|
|
1130
1137
|
if not killsOnExpiration and self[141] then
|
|
@@ -1252,13 +1259,13 @@ __TS__SetDescriptor(
|
|
|
1252
1259
|
"remainingDuration",
|
|
1253
1260
|
{
|
|
1254
1261
|
get = function(self)
|
|
1255
|
-
local
|
|
1256
|
-
return
|
|
1262
|
+
local ____opt_59 = self._timer
|
|
1263
|
+
return ____opt_59 and ____opt_59.remaining or 0
|
|
1257
1264
|
end,
|
|
1258
1265
|
set = function(self, remainingDuration)
|
|
1259
|
-
local
|
|
1260
|
-
local
|
|
1261
|
-
local remainingDurationDelta =
|
|
1266
|
+
local ____remainingDuration_63 = remainingDuration
|
|
1267
|
+
local ____opt_61 = self._timer
|
|
1268
|
+
local remainingDurationDelta = ____remainingDuration_63 - (____opt_61 and ____opt_61.remaining or 0)
|
|
1262
1269
|
if remainingDurationDelta ~= 0 then
|
|
1263
1270
|
self[103] = self[103] + remainingDurationDelta
|
|
1264
1271
|
if remainingDuration <= 0 then
|
|
@@ -1288,7 +1295,34 @@ __TS__SetDescriptor(
|
|
|
1288
1295
|
},
|
|
1289
1296
|
true
|
|
1290
1297
|
)
|
|
1291
|
-
|
|
1298
|
+
__TS__SetDescriptor(
|
|
1299
|
+
Buff.prototype,
|
|
1300
|
+
"abilityCooldownFactor",
|
|
1301
|
+
{
|
|
1302
|
+
get = function(self)
|
|
1303
|
+
return self[143] or 1
|
|
1304
|
+
end,
|
|
1305
|
+
set = function(self, abilityCooldownFactor)
|
|
1306
|
+
local previousAbilityCooldownModifier = self[144]
|
|
1307
|
+
if previousAbilityCooldownModifier then
|
|
1308
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1309
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:removeModifier(ability, previousAbilityCooldownModifier)
|
|
1310
|
+
end
|
|
1311
|
+
end
|
|
1312
|
+
local function modifier(ability, level, cooldown)
|
|
1313
|
+
return cooldown * abilityCooldownFactor
|
|
1314
|
+
end
|
|
1315
|
+
for ____, ability in ipairs(self._unit.abilities) do
|
|
1316
|
+
COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD:applyModifier(ability, modifier)
|
|
1317
|
+
end
|
|
1318
|
+
self[144] = modifier
|
|
1319
|
+
self[143] = abilityCooldownFactor
|
|
1320
|
+
end
|
|
1321
|
+
},
|
|
1322
|
+
true
|
|
1323
|
+
)
|
|
1324
|
+
Buff.createdEvent = buffCreatedEvent
|
|
1325
|
+
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1292
1326
|
(function(self)
|
|
1293
1327
|
local function destroyBuffIfNeeded(buff)
|
|
1294
1328
|
if getUnitAbility(buff[101].handle, buff.typeId) ~= buff.handle and buff[100] == 1 then
|
|
@@ -1342,5 +1376,8 @@ Buff.destroyEvent = buffDestroyEvent;
|
|
|
1342
1376
|
____exports.checkBuffs(target)
|
|
1343
1377
|
end
|
|
1344
1378
|
)
|
|
1379
|
+
buffCreatedEvent:addListener(function(buff)
|
|
1380
|
+
UnitBehavior:forAll(buff.unit, "onBuffGained", buff)
|
|
1381
|
+
end)
|
|
1345
1382
|
end)(Buff)
|
|
1346
1383
|
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";
|
|
@@ -67,6 +67,7 @@ export declare class UnitAbility extends Ability {
|
|
|
67
67
|
get cooldownRemaining(): number;
|
|
68
68
|
set cooldownRemaining(cooldownRemaining: number);
|
|
69
69
|
interruptCast(): void;
|
|
70
|
+
protected onDestroy(): HandleDestructor;
|
|
70
71
|
static get onCreate(): Event<[UnitAbility]>;
|
|
71
72
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
72
73
|
}
|
|
@@ -93,6 +94,7 @@ export declare class ItemAbility extends Ability {
|
|
|
93
94
|
get cooldownRemaining(): number;
|
|
94
95
|
set cooldownRemaining(cooldownRemaining: number);
|
|
95
96
|
interruptCast(): void;
|
|
97
|
+
protected onDestroy(): HandleDestructor;
|
|
96
98
|
static get onCreate(): Event<[ItemAbility]>;
|
|
97
99
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
98
100
|
}
|