warscript 0.0.1-dev.aaf0a9d → 0.0.1-dev.ac556d2
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 +12 -0
- package/attributes.lua +16 -0
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/core/types/effect.d.ts +13 -3
- package/core/types/effect.lua +116 -17
- package/core/types/frame.d.ts +8 -1
- package/core/types/frame.lua +93 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -0
- package/decl/index.d.ts +1 -0
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +3 -5
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +31 -9
- package/engine/behaviour/ability/damage.d.ts +33 -11
- package/engine/behaviour/ability/damage.lua +89 -31
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +29 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +16 -2
- package/engine/behaviour/ability.lua +88 -12
- package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
- package/engine/behaviour/unit.d.ts +8 -2
- package/engine/behaviour/unit.lua +27 -0
- package/engine/buff.d.ts +68 -21
- package/engine/buff.lua +276 -90
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +17 -14
- package/engine/internal/ability.lua +79 -76
- package/engine/internal/item/ability.lua +90 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +2 -0
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -0
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- package/engine/internal/unit/bonus.d.ts +9 -8
- package/engine/internal/unit/bonus.lua +6 -1
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +79 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +25 -6
- package/engine/internal/unit.d.ts +58 -16
- package/engine/internal/unit.lua +346 -126
- package/engine/internal/utility.lua +12 -0
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- package/engine/object-data/entry/ability-type.d.ts +1 -1
- package/engine/object-data/entry/ability-type.lua +9 -12
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +27 -71
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +0 -1
- package/engine/object-data/entry/destructible-type.d.ts +0 -1
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +14 -1
- package/engine/object-data/entry/item-type.lua +91 -0
- package/engine/object-data/entry/lightning-type.d.ts +0 -1
- package/engine/object-data/entry/unit-type.d.ts +42 -2
- package/engine/object-data/entry/unit-type.lua +378 -50
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +0 -1
- package/engine/object-data/entry.d.ts +2 -3
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -6
- package/engine/object-field/ability.lua +57 -1
- package/engine/object-field/unit.d.ts +1 -0
- package/engine/object-field/unit.lua +3 -0
- package/engine/object-field.d.ts +6 -5
- package/engine/object-field.lua +37 -15
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/unit-type.d.ts +42 -1
- package/engine/standard/entries/unit-type.lua +42 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +12 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/global/vec2.lua +1 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +1 -1
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/package.json +13 -14
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +11 -5
- package/utility/arrays.lua +34 -3
- package/utility/bit-set.d.ts +0 -2
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +12 -3
- package/utility/linked-set.lua +21 -2
- package/utility/lua-maps.d.ts +1 -2
- package/utility/lua-sets.d.ts +1 -2
- package/utility/types.d.ts +3 -2
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
|
@@ -2,7 +2,6 @@ local ____lualib = require("lualib_bundle")
|
|
|
2
2
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
3
3
|
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
4
4
|
local __TS__Class = ____lualib.__TS__Class
|
|
5
|
-
local __TS__New = ____lualib.__TS__New
|
|
6
5
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
7
6
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
8
7
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
@@ -11,7 +10,10 @@ local ____exports = {}
|
|
|
11
10
|
local ____handle = require("core.types.handle")
|
|
12
11
|
local Handle = ____handle.Handle
|
|
13
12
|
local ____ability = require("engine.internal.item.ability")
|
|
13
|
+
local abilityActionDummy = ____ability.abilityActionDummy
|
|
14
14
|
local doAbilityAction = ____ability.doAbilityAction
|
|
15
|
+
local doAbilityActionForceDummy = ____ability.doAbilityActionForceDummy
|
|
16
|
+
local startItemCooldown = ____ability.startItemCooldown
|
|
15
17
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
16
18
|
local setUnitAbilityLevel = SetUnitAbilityLevel
|
|
17
19
|
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
@@ -33,7 +35,7 @@ local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
|
33
35
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
34
36
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
35
37
|
local getHandleId = GetHandleId
|
|
36
|
-
local
|
|
38
|
+
local unitHideAbility = BlzUnitHideAbility
|
|
37
39
|
local match = string.match
|
|
38
40
|
local ____type = _G.type
|
|
39
41
|
local ____tostring = _G.tostring
|
|
@@ -151,55 +153,6 @@ local orders = postcompile(function()
|
|
|
151
153
|
end
|
|
152
154
|
return orders
|
|
153
155
|
end)
|
|
154
|
-
local RealFields = __TS__Class()
|
|
155
|
-
RealFields.name = "RealFields"
|
|
156
|
-
function RealFields.prototype.____constructor(self, handle)
|
|
157
|
-
self.handle = handle
|
|
158
|
-
end
|
|
159
|
-
function RealFields.prototype.set(self, field, value)
|
|
160
|
-
return BlzSetAbilityRealField(self.handle, field, value)
|
|
161
|
-
end
|
|
162
|
-
function RealFields.prototype.get(self, field)
|
|
163
|
-
return BlzGetAbilityRealField(self.handle, field)
|
|
164
|
-
end
|
|
165
|
-
function RealFields.prototype.has(self, field)
|
|
166
|
-
local handle = self.handle
|
|
167
|
-
return BlzSetAbilityRealField(
|
|
168
|
-
handle,
|
|
169
|
-
field,
|
|
170
|
-
BlzGetAbilityRealField(handle, field)
|
|
171
|
-
)
|
|
172
|
-
end
|
|
173
|
-
local RealLevelFields = __TS__Class()
|
|
174
|
-
RealLevelFields.name = "RealLevelFields"
|
|
175
|
-
function RealLevelFields.prototype.____constructor(self, handle, level)
|
|
176
|
-
self.handle = handle
|
|
177
|
-
self.level = level
|
|
178
|
-
end
|
|
179
|
-
function RealLevelFields.prototype.set(self, field, value)
|
|
180
|
-
return BlzSetAbilityRealLevelField(self.handle, field, self.level, value)
|
|
181
|
-
end
|
|
182
|
-
function RealLevelFields.prototype.get(self, field)
|
|
183
|
-
return BlzGetAbilityRealLevelField(self.handle, field, self.level)
|
|
184
|
-
end
|
|
185
|
-
function RealLevelFields.prototype.has(self, field)
|
|
186
|
-
local handle = self.handle
|
|
187
|
-
return BlzSetAbilityRealLevelField(
|
|
188
|
-
handle,
|
|
189
|
-
field,
|
|
190
|
-
0,
|
|
191
|
-
BlzGetAbilityRealLevelField(handle, field, 0)
|
|
192
|
-
)
|
|
193
|
-
end
|
|
194
|
-
local realLevelMetatable = {__index = self}
|
|
195
|
-
local levelDescriptors = {realFields = function(self, handle, level)
|
|
196
|
-
return __TS__New(RealLevelFields, handle, level)
|
|
197
|
-
end}
|
|
198
|
-
local levelMetatable = {__index = function(self, key)
|
|
199
|
-
local fields = levelDescriptors[key](levelDescriptors, self.handle, self.level)
|
|
200
|
-
rawset(self, key, fields)
|
|
201
|
-
return fields
|
|
202
|
-
end}
|
|
203
156
|
local fieldGetters = {
|
|
204
157
|
abilityintegerfield = function(ability, field)
|
|
205
158
|
return getAbilityIntegerField(ability.handle, field)
|
|
@@ -346,43 +299,26 @@ __TS__SetDescriptor(
|
|
|
346
299
|
)
|
|
347
300
|
__TS__SetDescriptor(
|
|
348
301
|
Ability.prototype,
|
|
349
|
-
"
|
|
302
|
+
"orderTypeStringId",
|
|
350
303
|
{get = function(self)
|
|
351
304
|
local field = orderIdFieldByParentTypeId[self.parentTypeId]
|
|
352
|
-
return
|
|
305
|
+
return field ~= nil and getAbilityStringLevelField(self.handle, field, self.level) or (orders[self.parentTypeId] or "")
|
|
353
306
|
end},
|
|
354
307
|
true
|
|
355
308
|
)
|
|
356
309
|
__TS__SetDescriptor(
|
|
357
310
|
Ability.prototype,
|
|
358
|
-
"
|
|
311
|
+
"orderTypeId",
|
|
359
312
|
{get = function(self)
|
|
360
|
-
|
|
361
|
-
rawset(self, "realFields", realFields)
|
|
362
|
-
return realFields
|
|
313
|
+
return order2orderId(self.orderTypeStringId)
|
|
363
314
|
end},
|
|
364
315
|
true
|
|
365
316
|
)
|
|
366
317
|
__TS__SetDescriptor(
|
|
367
318
|
Ability.prototype,
|
|
368
|
-
"
|
|
319
|
+
"levelCount",
|
|
369
320
|
{get = function(self)
|
|
370
|
-
|
|
371
|
-
local levels = setmetatable(
|
|
372
|
-
{},
|
|
373
|
-
{
|
|
374
|
-
__len = function(self)
|
|
375
|
-
return BlzGetAbilityIntegerField(handle, ABILITY_IF_LEVELS)
|
|
376
|
-
end,
|
|
377
|
-
__index = function(self, i)
|
|
378
|
-
local level = setmetatable({handle = handle, level = i - 1}, levelMetatable)
|
|
379
|
-
self[i] = level
|
|
380
|
-
return level
|
|
381
|
-
end
|
|
382
|
-
}
|
|
383
|
-
)
|
|
384
|
-
rawset(self, "levels", levels)
|
|
385
|
-
return levels
|
|
321
|
+
return self:getField(ABILITY_IF_LEVELS)
|
|
386
322
|
end},
|
|
387
323
|
true
|
|
388
324
|
)
|
|
@@ -393,6 +329,17 @@ __TS__SetDescriptor(
|
|
|
393
329
|
end},
|
|
394
330
|
true
|
|
395
331
|
)
|
|
332
|
+
__TS__SetDescriptor(
|
|
333
|
+
Ability.prototype,
|
|
334
|
+
"cooldownRemaining",
|
|
335
|
+
{
|
|
336
|
+
get = function(self)
|
|
337
|
+
end,
|
|
338
|
+
set = function(self, cooldownRemaining)
|
|
339
|
+
end
|
|
340
|
+
},
|
|
341
|
+
true
|
|
342
|
+
)
|
|
396
343
|
__TS__ObjectDefineProperty(
|
|
397
344
|
Ability,
|
|
398
345
|
"onCreate",
|
|
@@ -416,6 +363,8 @@ function UnrecognizedAbility.prototype.____constructor(self, typeId, owner)
|
|
|
416
363
|
UnrecognizedAbility.____super.prototype.____constructor(self, nil, typeId)
|
|
417
364
|
self.owner = owner
|
|
418
365
|
end
|
|
366
|
+
function UnrecognizedAbility.prototype.interruptCast(self)
|
|
367
|
+
end
|
|
419
368
|
__TS__SetDescriptor(
|
|
420
369
|
UnrecognizedAbility.prototype,
|
|
421
370
|
"level",
|
|
@@ -424,6 +373,18 @@ __TS__SetDescriptor(
|
|
|
424
373
|
end},
|
|
425
374
|
true
|
|
426
375
|
)
|
|
376
|
+
__TS__SetDescriptor(
|
|
377
|
+
UnrecognizedAbility.prototype,
|
|
378
|
+
"cooldownRemaining",
|
|
379
|
+
{
|
|
380
|
+
get = function(self)
|
|
381
|
+
return 0
|
|
382
|
+
end,
|
|
383
|
+
set = function(self, _)
|
|
384
|
+
end
|
|
385
|
+
},
|
|
386
|
+
true
|
|
387
|
+
)
|
|
427
388
|
____exports.UnitAbility = __TS__Class()
|
|
428
389
|
local UnitAbility = ____exports.UnitAbility
|
|
429
390
|
UnitAbility.name = "UnitAbility"
|
|
@@ -433,6 +394,15 @@ function UnitAbility.prototype.____constructor(self, handle, typeId, owner)
|
|
|
433
394
|
self.owner = owner
|
|
434
395
|
self.u = owner.handle
|
|
435
396
|
end
|
|
397
|
+
function UnitAbility.prototype.incrementHideCounter(self)
|
|
398
|
+
unitHideAbility(self.u, self.typeId, true)
|
|
399
|
+
end
|
|
400
|
+
function UnitAbility.prototype.decrementHideCounter(self)
|
|
401
|
+
unitHideAbility(self.u, self.typeId, false)
|
|
402
|
+
end
|
|
403
|
+
function UnitAbility.prototype.interruptCast(self)
|
|
404
|
+
self.owner:interruptCast(self.typeId)
|
|
405
|
+
end
|
|
436
406
|
__TS__SetDescriptor(
|
|
437
407
|
UnitAbility.prototype,
|
|
438
408
|
"level",
|
|
@@ -453,8 +423,8 @@ __TS__SetDescriptor(
|
|
|
453
423
|
get = function(self)
|
|
454
424
|
return getUnitAbilityCooldownRemaining(self.u, self.typeId)
|
|
455
425
|
end,
|
|
456
|
-
set = function(self,
|
|
457
|
-
startUnitAbilityCooldown(self.u, self.typeId,
|
|
426
|
+
set = function(self, cooldownRemaining)
|
|
427
|
+
startUnitAbilityCooldown(self.u, self.typeId, cooldownRemaining)
|
|
458
428
|
end
|
|
459
429
|
},
|
|
460
430
|
true
|
|
@@ -479,6 +449,11 @@ end
|
|
|
479
449
|
local function setAbilityField(_, ability, field, levelOrValue, value)
|
|
480
450
|
return ____exports.Ability.prototype.setField(ability, field, levelOrValue, value)
|
|
481
451
|
end
|
|
452
|
+
local function getAbilityCooldown(_, abilityTypeId)
|
|
453
|
+
return getUnitAbilityCooldownRemaining(abilityActionDummy, abilityTypeId)
|
|
454
|
+
end
|
|
455
|
+
local function doNothing()
|
|
456
|
+
end
|
|
482
457
|
____exports.ItemAbility = __TS__Class()
|
|
483
458
|
local ItemAbility = ____exports.ItemAbility
|
|
484
459
|
ItemAbility.name = "ItemAbility"
|
|
@@ -506,6 +481,13 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
506
481
|
value
|
|
507
482
|
)
|
|
508
483
|
end
|
|
484
|
+
function ItemAbility.prototype.interruptCast(self)
|
|
485
|
+
local item = self.owner
|
|
486
|
+
local ____doAbilityActionForceDummy_4 = doAbilityActionForceDummy
|
|
487
|
+
local ____item_handle_3 = item.handle
|
|
488
|
+
local ____opt_1 = item.owner
|
|
489
|
+
____doAbilityActionForceDummy_4(____item_handle_3, ____opt_1 and ____opt_1.handle, doNothing)
|
|
490
|
+
end
|
|
509
491
|
__TS__SetDescriptor(
|
|
510
492
|
ItemAbility.prototype,
|
|
511
493
|
"level",
|
|
@@ -514,6 +496,27 @@ __TS__SetDescriptor(
|
|
|
514
496
|
end},
|
|
515
497
|
true
|
|
516
498
|
)
|
|
499
|
+
__TS__SetDescriptor(
|
|
500
|
+
ItemAbility.prototype,
|
|
501
|
+
"cooldownRemaining",
|
|
502
|
+
{
|
|
503
|
+
get = function(self)
|
|
504
|
+
local item = self.owner
|
|
505
|
+
local ____doAbilityActionForceDummy_8 = doAbilityActionForceDummy
|
|
506
|
+
local ____item_handle_7 = item.handle
|
|
507
|
+
local ____opt_5 = item.owner
|
|
508
|
+
return ____doAbilityActionForceDummy_8(____item_handle_7, ____opt_5 and ____opt_5.handle, getAbilityCooldown, self.typeId)
|
|
509
|
+
end,
|
|
510
|
+
set = function(self, cooldownRemaining)
|
|
511
|
+
local item = self.owner
|
|
512
|
+
local ____startItemCooldown_12 = startItemCooldown
|
|
513
|
+
local ____item_handle_11 = item.handle
|
|
514
|
+
local ____opt_9 = item.owner
|
|
515
|
+
____startItemCooldown_12(____item_handle_11, ____opt_9 and ____opt_9.handle, cooldownRemaining)
|
|
516
|
+
end
|
|
517
|
+
},
|
|
518
|
+
true
|
|
519
|
+
)
|
|
517
520
|
__TS__ObjectDefineProperty(
|
|
518
521
|
ItemAbility,
|
|
519
522
|
"onCreate",
|
|
@@ -1,16 +1,57 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
|
+
local restoreCooldownGroup
|
|
2
3
|
local ____player = require("core.types.player")
|
|
3
4
|
local Player = ____player.Player
|
|
4
5
|
local ____dummy = require("objutil.dummy")
|
|
5
6
|
local dummyUnitId = ____dummy.dummyUnitId
|
|
7
|
+
local ____utility = require("engine.internal.utility")
|
|
8
|
+
local findUnitItemSlot = ____utility.findUnitItemSlot
|
|
9
|
+
local ____blank = require("engine.object-data.entry.item-type.blank")
|
|
10
|
+
local BlankItemType = ____blank.BlankItemType
|
|
11
|
+
local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
|
|
12
|
+
local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
|
|
13
|
+
local ____math = require("math")
|
|
14
|
+
local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
15
|
+
local ____timer = require("core.types.timer")
|
|
16
|
+
local Timer = ____timer.Timer
|
|
6
17
|
local isItemOwned = IsItemOwned
|
|
7
18
|
local isItemPowerup = IsItemPowerup
|
|
8
19
|
local getItemX = GetItemX
|
|
9
20
|
local getItemY = GetItemY
|
|
21
|
+
local setAbilityRealLevelField = BlzSetAbilityRealLevelField
|
|
22
|
+
local setItemIntegerField = BlzSetItemIntegerField
|
|
23
|
+
local getItemIntegerField = BlzGetItemIntegerField
|
|
10
24
|
local setItemBooleanField = BlzSetItemBooleanField
|
|
11
25
|
local setItemPosition = SetItemPosition
|
|
12
26
|
local unitAddItem = UnitAddItem
|
|
27
|
+
local unitDropItemSlot = UnitDropItemSlot
|
|
13
28
|
local unitRemoveItem = UnitRemoveItem
|
|
29
|
+
local unitUseItem = UnitUseItem
|
|
30
|
+
local unitResetCooldown = UnitResetCooldown
|
|
31
|
+
local COOLDOWN_STARTER_ABILITY_TYPE_ID = compiletime(function()
|
|
32
|
+
if not currentMap then
|
|
33
|
+
return 0
|
|
34
|
+
end
|
|
35
|
+
local abilityType = currentMap.objects.ability:newObject(
|
|
36
|
+
util.id2s(abilityTypeIdGenerator:next()),
|
|
37
|
+
"Absk"
|
|
38
|
+
)
|
|
39
|
+
abilityType["bsk1+0"] = 0
|
|
40
|
+
abilityType["bsk2+0"] = 0
|
|
41
|
+
abilityType["bsk3+0"] = 0
|
|
42
|
+
abilityType["amcs+0"] = 0
|
|
43
|
+
abilityType["adur+0"] = MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
44
|
+
abilityType["ahdu+0"] = MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
45
|
+
return util.s2id(abilityType.id)
|
|
46
|
+
end)
|
|
47
|
+
local COOLDOWN_STARTER_ITEM_TYPE_ID = compiletime(function()
|
|
48
|
+
local itemType = BlankItemType:create()
|
|
49
|
+
itemType.name = "[Warscript/Dummy] Item Cooldown Starter"
|
|
50
|
+
itemType.abilityTypeIds = {COOLDOWN_STARTER_ABILITY_TYPE_ID}
|
|
51
|
+
itemType.cooldownGroupId = COOLDOWN_STARTER_ABILITY_TYPE_ID
|
|
52
|
+
itemType.activelyUsed = true
|
|
53
|
+
return itemType.id
|
|
54
|
+
end)
|
|
14
55
|
local dummy = assert(CreateUnit(
|
|
15
56
|
Player.neutralVictim.handle,
|
|
16
57
|
dummyUnitId,
|
|
@@ -18,7 +59,30 @@ local dummy = assert(CreateUnit(
|
|
|
18
59
|
0,
|
|
19
60
|
270
|
|
20
61
|
))
|
|
62
|
+
local cooldownStarterItem = UnitAddItemById(dummy, COOLDOWN_STARTER_ITEM_TYPE_ID)
|
|
63
|
+
local cooldownStarterAbility = BlzGetItemAbility(cooldownStarterItem, COOLDOWN_STARTER_ABILITY_TYPE_ID)
|
|
21
64
|
ShowUnit(dummy, false)
|
|
65
|
+
local function startItemCooldownInternal(handle, cooldown)
|
|
66
|
+
local cooldownGroup = getItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP)
|
|
67
|
+
setItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP, COOLDOWN_STARTER_ABILITY_TYPE_ID)
|
|
68
|
+
setAbilityRealLevelField(cooldownStarterAbility, ABILITY_RLF_COOLDOWN, 0, cooldown)
|
|
69
|
+
unitResetCooldown(dummy)
|
|
70
|
+
unitUseItem(dummy, cooldownStarterItem)
|
|
71
|
+
Timer:run(restoreCooldownGroup, handle, cooldownGroup)
|
|
72
|
+
end
|
|
73
|
+
restoreCooldownGroup = function(handle, cooldownGroup)
|
|
74
|
+
if getItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP) == COOLDOWN_STARTER_ABILITY_TYPE_ID then
|
|
75
|
+
setItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP, cooldownGroup)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
---
|
|
79
|
+
-- @internal For use by internal systems only.
|
|
80
|
+
____exports.startItemCooldown = function(handle, owner, cooldown)
|
|
81
|
+
____exports.doAbilityActionForceDummy(handle, owner, startItemCooldownInternal, cooldown)
|
|
82
|
+
end
|
|
83
|
+
---
|
|
84
|
+
-- @internal For use by internal systems only.
|
|
85
|
+
____exports.abilityActionDummy = dummy
|
|
22
86
|
---
|
|
23
87
|
-- @internal For use by internal systems only.
|
|
24
88
|
____exports.doAbilityAction = function(handle, action, ...)
|
|
@@ -45,4 +109,30 @@ ____exports.doAbilityAction = function(handle, action, ...)
|
|
|
45
109
|
end
|
|
46
110
|
return result
|
|
47
111
|
end
|
|
112
|
+
---
|
|
113
|
+
-- @internal For use by internal systems only.
|
|
114
|
+
____exports.doAbilityActionForceDummy = function(handle, owner, action, ...)
|
|
115
|
+
if owner == nil then
|
|
116
|
+
return ____exports.doAbilityAction(handle, action, ...)
|
|
117
|
+
end
|
|
118
|
+
local slot = findUnitItemSlot(owner, handle)
|
|
119
|
+
if slot == nil then
|
|
120
|
+
return ____exports.doAbilityAction(handle, action, ...)
|
|
121
|
+
end
|
|
122
|
+
local isPowerup
|
|
123
|
+
if isItemPowerup(handle) then
|
|
124
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
125
|
+
isPowerup = true
|
|
126
|
+
end
|
|
127
|
+
unitRemoveItem(owner, handle)
|
|
128
|
+
unitAddItem(dummy, handle)
|
|
129
|
+
local result = action(handle, ...)
|
|
130
|
+
unitRemoveItem(dummy, handle)
|
|
131
|
+
unitAddItem(owner, handle)
|
|
132
|
+
unitDropItemSlot(owner, handle, slot)
|
|
133
|
+
if isPowerup then
|
|
134
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
135
|
+
end
|
|
136
|
+
return result
|
|
137
|
+
end
|
|
48
138
|
return ____exports
|
|
@@ -6,10 +6,10 @@ local Item = ____item.Item
|
|
|
6
6
|
local ____unit = require("engine.internal.unit")
|
|
7
7
|
local Unit = ____unit.Unit
|
|
8
8
|
local ownerByItem = setmetatable({}, {__mode = "kv"})
|
|
9
|
-
Unit.
|
|
9
|
+
Unit.itemPickedUpEvent:addListener(function(unit, item)
|
|
10
10
|
ownerByItem[item] = unit
|
|
11
11
|
end)
|
|
12
|
-
Unit.
|
|
12
|
+
Unit.itemDroppedEvent:addListener(function(unit, item)
|
|
13
13
|
ownerByItem[item] = nil
|
|
14
14
|
end)
|
|
15
15
|
__TS__ObjectDefineProperty(
|
|
@@ -4,6 +4,8 @@ local UnitClassification = ____unit.UnitClassification
|
|
|
4
4
|
local ____ability = require("engine.standard.fields.ability")
|
|
5
5
|
local DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD
|
|
6
6
|
local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD
|
|
7
|
+
---
|
|
8
|
+
-- @internal For use by internal systems only.
|
|
7
9
|
____exports.getAbilityDuration = function(ability, target)
|
|
8
10
|
local level = ability.level
|
|
9
11
|
return target ~= nil and target:hasClassification(UnitClassification.RESISTANT) and DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level) or DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
3
|
+
local AbilityType = ____ability_2Dtype.AbilityType
|
|
4
|
+
local ____dummy_2Ditem = require("engine.internal.object-data.dummy-item")
|
|
5
|
+
local DUMMY_ITEM_ID = ____dummy_2Ditem.DUMMY_ITEM_ID
|
|
6
|
+
local ____dummy_2Dunits = require("engine.internal.misc.dummy-units")
|
|
7
|
+
local INVENTORY_DUMMY_NATIVE_UNIT = ____dummy_2Dunits.INVENTORY_DUMMY_NATIVE_UNIT
|
|
8
|
+
local ____preconditions = require("utility.preconditions")
|
|
9
|
+
local checkNotNull = ____preconditions.checkNotNull
|
|
10
|
+
local ____dummy_2Dinventory = require("engine.internal.object-data.dummy-inventory")
|
|
11
|
+
local INVENTORY_ABILITY_TYPE_ID = ____dummy_2Dinventory.INVENTORY_ABILITY_TYPE_ID
|
|
12
|
+
local ____arrays = require("utility.arrays")
|
|
13
|
+
local map = ____arrays.map
|
|
14
|
+
local toLuaSet = ____arrays.toLuaSet
|
|
15
|
+
local createItem = CreateItem
|
|
16
|
+
local getAbilityId = BlzGetAbilityId
|
|
17
|
+
local getItemAbility = BlzGetItemAbility
|
|
18
|
+
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
19
|
+
local itemAddAbility = BlzItemAddAbility
|
|
20
|
+
local setItemBooleanField = BlzSetItemBooleanField
|
|
21
|
+
local removeItem = RemoveItem
|
|
22
|
+
local unitAddAbility = UnitAddAbility
|
|
23
|
+
local unitAddItem = UnitAddItem
|
|
24
|
+
local unitDropItemSlot = UnitDropItemSlot
|
|
25
|
+
local unitInventorySize = UnitInventorySize
|
|
26
|
+
local unitRemoveAbility = UnitRemoveAbility
|
|
27
|
+
local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
|
|
28
|
+
local INVENTORY_ABILITY_TYPE_IDS = postcompile(function()
|
|
29
|
+
return toLuaSet(AbilityType:getAllIdsByBaseIds(map({
|
|
30
|
+
"AInv",
|
|
31
|
+
"Aihn",
|
|
32
|
+
"Aien",
|
|
33
|
+
"Aion",
|
|
34
|
+
"Aiun"
|
|
35
|
+
}, fourCC)))
|
|
36
|
+
end)
|
|
37
|
+
---
|
|
38
|
+
-- @internal For use by internal systems only.
|
|
39
|
+
____exports.castAbility = function(nativeUnit, abilityTypeId, prepareAbility, ...)
|
|
40
|
+
local nativeItem = createItem(DUMMY_ITEM_ID, 0, 0)
|
|
41
|
+
unitAddItem(INVENTORY_DUMMY_NATIVE_UNIT, nativeItem)
|
|
42
|
+
itemAddAbility(nativeItem, abilityTypeId)
|
|
43
|
+
local nativeAbility = checkNotNull(getItemAbility(nativeItem, abilityTypeId))
|
|
44
|
+
if prepareAbility ~= nil then
|
|
45
|
+
prepareAbility(nativeAbility, ...)
|
|
46
|
+
end
|
|
47
|
+
setItemBooleanField(nativeItem, ITEM_BF_ACTIVELY_USED, true)
|
|
48
|
+
setItemBooleanField(nativeItem, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
49
|
+
local success
|
|
50
|
+
if unitAddItem(nativeUnit, nativeItem) then
|
|
51
|
+
success = true
|
|
52
|
+
else
|
|
53
|
+
local latestInventoryAbilityTypeId = 0
|
|
54
|
+
local nativeItemBySlot = {}
|
|
55
|
+
local inventorySize = unitInventorySize(nativeUnit)
|
|
56
|
+
if inventorySize ~= 0 then
|
|
57
|
+
for slot = 0, inventorySize - 1 do
|
|
58
|
+
nativeItemBySlot[slot] = unitRemoveItemFromSlot(nativeUnit, slot)
|
|
59
|
+
end
|
|
60
|
+
local unitNativeAbility = getUnitAbilityByIndex(nativeUnit, 0)
|
|
61
|
+
local i = 1
|
|
62
|
+
while unitNativeAbility ~= nil do
|
|
63
|
+
local abilityTypeId = getAbilityId(unitNativeAbility)
|
|
64
|
+
if INVENTORY_ABILITY_TYPE_IDS[abilityTypeId] ~= nil then
|
|
65
|
+
latestInventoryAbilityTypeId = abilityTypeId
|
|
66
|
+
end
|
|
67
|
+
unitNativeAbility = getUnitAbilityByIndex(nativeUnit, i)
|
|
68
|
+
i = i + 1
|
|
69
|
+
end
|
|
70
|
+
unitRemoveAbility(nativeUnit, latestInventoryAbilityTypeId)
|
|
71
|
+
end
|
|
72
|
+
unitAddAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
|
|
73
|
+
success = unitAddItem(nativeUnit, nativeItem)
|
|
74
|
+
unitRemoveAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
|
|
75
|
+
if latestInventoryAbilityTypeId ~= 0 then
|
|
76
|
+
unitAddAbility(nativeUnit, latestInventoryAbilityTypeId)
|
|
77
|
+
for slot, nativeItem in pairs(nativeItemBySlot) do
|
|
78
|
+
unitAddItem(nativeUnit, nativeItem)
|
|
79
|
+
unitDropItemSlot(nativeUnit, nativeItem, slot)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
removeItem(nativeItem)
|
|
84
|
+
return success
|
|
85
|
+
end
|
|
86
|
+
return ____exports
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local disableAbility = BlzUnitDisableAbility
|
|
3
|
+
---
|
|
4
|
+
-- @internal For use by internal systems only.
|
|
5
|
+
____exports.increaseAbilityDisableCounter = function(unit, abilityTypeId, times)
|
|
6
|
+
for _ = 1, times do
|
|
7
|
+
disableAbility(unit, abilityTypeId, true, false)
|
|
8
|
+
end
|
|
9
|
+
for _ = times, -1 do
|
|
10
|
+
disableAbility(unit, abilityTypeId, false, false)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
return ____exports
|
|
@@ -3,7 +3,7 @@ import { Ability } from "../ability";
|
|
|
3
3
|
import { Destructable } from "../../../core/types/destructable";
|
|
4
4
|
import { Item } from "../item";
|
|
5
5
|
import { Widget } from "../../../core/types/widget";
|
|
6
|
-
import { DispatchingEvent } from "../../../event";
|
|
6
|
+
import { DispatchingEvent, Event } from "../../../event";
|
|
7
7
|
declare module "../unit" {
|
|
8
8
|
namespace Unit {
|
|
9
9
|
const abilityCastingStartEvent: DispatchingEvent<[Unit, Ability]>;
|
|
@@ -141,3 +141,12 @@ declare module "../unit" {
|
|
|
141
141
|
const abilityStopEvent: DispatchingEvent<[Unit, Ability]>;
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
+
declare module "../unit" {
|
|
145
|
+
namespace Unit {
|
|
146
|
+
const abilityCommandEvent: {
|
|
147
|
+
readonly [abilityTypeId: number]: {
|
|
148
|
+
readonly [orderTypeStringId: string]: Event<[Unit, Ability, string]>;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -15,8 +15,15 @@ local UnitTriggerEvent = ____unit.UnitTriggerEvent
|
|
|
15
15
|
local ____event = require("event")
|
|
16
16
|
local createDispatchingEvent = ____event.createDispatchingEvent
|
|
17
17
|
local DependentInitializingEvent = ____event.DependentInitializingEvent
|
|
18
|
+
local Event = ____event.Event
|
|
19
|
+
local InitializingEvent = ____event.InitializingEvent
|
|
18
20
|
local ____preconditions = require("utility.preconditions")
|
|
19
21
|
local checkNotNull = ____preconditions.checkNotNull
|
|
22
|
+
local ____lazy = require("utility.lazy")
|
|
23
|
+
local lazyRecord = ____lazy.lazyRecord
|
|
24
|
+
local eventInvoke = Event.invoke
|
|
25
|
+
local condition = Condition
|
|
26
|
+
local createTrigger = CreateTrigger
|
|
20
27
|
local getItemAbility = BlzGetItemAbility
|
|
21
28
|
local getSpellAbility = GetSpellAbility
|
|
22
29
|
local getSpellAbilityId = GetSpellAbilityId
|
|
@@ -26,11 +33,10 @@ local getSpellTargetUnit = GetSpellTargetUnit
|
|
|
26
33
|
local getSpellTargetX = GetSpellTargetX
|
|
27
34
|
local getSpellTargetY = GetSpellTargetY
|
|
28
35
|
local getTriggerUnit = GetTriggerUnit
|
|
29
|
-
local
|
|
30
|
-
local
|
|
36
|
+
local triggerAddCondition = TriggerAddCondition
|
|
37
|
+
local triggerRegisterCommandEvent = TriggerRegisterCommandEvent
|
|
31
38
|
local unitInventorySize = UnitInventorySize
|
|
32
39
|
local unitItemInSlot = UnitItemInSlot
|
|
33
|
-
local unitRemoveAbility = UnitRemoveAbility
|
|
34
40
|
local function retrieveAbility(unit, ability, abilityId)
|
|
35
41
|
if ability == nil then
|
|
36
42
|
return __TS__New(
|
|
@@ -39,17 +45,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
39
45
|
Unit:of(unit)
|
|
40
46
|
)
|
|
41
47
|
end
|
|
42
|
-
if not unitAddAbility(unit, abilityId) then
|
|
43
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
44
|
-
return UnitAbility:of(
|
|
45
|
-
ability,
|
|
46
|
-
abilityId,
|
|
47
|
-
Unit:of(unit)
|
|
48
|
-
)
|
|
49
|
-
end
|
|
50
|
-
else
|
|
51
|
-
unitRemoveAbility(unit, abilityId)
|
|
52
|
-
end
|
|
53
48
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
54
49
|
local item = unitItemInSlot(unit, i)
|
|
55
50
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -366,4 +361,31 @@ rawset(
|
|
|
366
361
|
extractAbilityTypeId
|
|
367
362
|
)
|
|
368
363
|
)
|
|
364
|
+
rawset(
|
|
365
|
+
Unit,
|
|
366
|
+
"abilityCommandEvent",
|
|
367
|
+
lazyRecord(function(abilityTypeId)
|
|
368
|
+
return lazyRecord(function(orderTypeStringId)
|
|
369
|
+
return __TS__New(
|
|
370
|
+
InitializingEvent,
|
|
371
|
+
function(event)
|
|
372
|
+
local trigger = createTrigger()
|
|
373
|
+
triggerRegisterCommandEvent(trigger, abilityTypeId, orderTypeStringId)
|
|
374
|
+
triggerAddCondition(
|
|
375
|
+
trigger,
|
|
376
|
+
condition(function()
|
|
377
|
+
local unit = Unit:of(getTriggerUnit())
|
|
378
|
+
if unit ~= nil then
|
|
379
|
+
local ability = unit:getAbilityById(abilityTypeId)
|
|
380
|
+
if ability ~= nil then
|
|
381
|
+
eventInvoke(event, unit, ability, orderTypeStringId)
|
|
382
|
+
end
|
|
383
|
+
end
|
|
384
|
+
end)
|
|
385
|
+
)
|
|
386
|
+
end
|
|
387
|
+
)
|
|
388
|
+
end)
|
|
389
|
+
end)
|
|
390
|
+
)
|
|
369
391
|
return ____exports
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { Unit } from "../unit";
|
|
4
3
|
import { AbilityTypeId } from "../../object-data/entry/ability-type";
|
|
@@ -9,7 +8,8 @@ export type UnitBonusId<Brand extends string = any> = number & {
|
|
|
9
8
|
export type UnitArmorBonusId = UnitBonusId<"armor">;
|
|
10
9
|
export type UnitAttackSpeedFactorBonusId = UnitBonusId<"attackSpeedFactor">;
|
|
11
10
|
export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
|
|
12
|
-
export type
|
|
11
|
+
export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
|
|
12
|
+
export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
|
|
13
13
|
export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
|
|
14
14
|
export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
15
15
|
abilityTypeId: AbilityTypeId;
|
|
@@ -31,11 +31,12 @@ export declare namespace UnitBonusType {
|
|
|
31
31
|
const ARMOR: UnitBonusType<UnitArmorBonusId>;
|
|
32
32
|
const ATTACK_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
33
33
|
const MOVEMENT_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
34
|
-
const
|
|
34
|
+
const AUTO_ATTACK_DAMAGE: UnitBonusType<UnitAutoAttackDamageBonusId>;
|
|
35
|
+
const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
35
36
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
36
37
|
}
|
|
37
|
-
export declare const addUnitBonus: <Id extends UnitBonusId
|
|
38
|
-
export declare const removeUnitBonus: <Id extends UnitBonusId
|
|
39
|
-
export declare const updateUnitBonus: <Id extends UnitBonusId
|
|
40
|
-
export declare const addOrUpdateOrRemoveUnitBonus: <Id extends UnitBonusId
|
|
41
|
-
export declare const getUnitBonus: <Id extends UnitBonusId
|
|
38
|
+
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
39
|
+
export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
|
|
40
|
+
export declare const updateUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id, value: number) => boolean;
|
|
41
|
+
export declare const addOrUpdateOrRemoveUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id | undefined, value: number) => Id | undefined;
|
|
42
|
+
export declare const getUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => number;
|