warscript 0.0.1-dev.ab8c392 → 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 +0 -1
- 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/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 +6 -1
- 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 +16 -13
- 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/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/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/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 +0 -1
- package/engine/object-data/entry/ability-type.lua +8 -12
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- 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 +21 -2
- package/engine/object-data/entry/unit-type.lua +223 -49
- 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 +21 -1
- package/engine/object-field/ability.lua +51 -1
- package/engine/object-field.d.ts +0 -1
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/unit-type.d.ts +39 -1
- package/engine/standard/entries/unit-type.lua +39 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +11 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- 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 -13
- 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 +16 -0
- package/string.lua +5 -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 +11 -3
- package/utility/linked-set.lua +5 -2
- package/utility/lua-maps.d.ts +1 -2
- package/utility/lua-sets.d.ts +1 -2
- package/utility/types.d.ts +1 -0
- 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(
|
|
@@ -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;
|
|
@@ -21,6 +21,7 @@ local AUTO_ATTACK_DAMAGE_INCREASE_DUMMY_ABILITY_TYPE_ID = ____auto_2Dattack_2Dda
|
|
|
21
21
|
local ____movement_2Dspeed_2Dincrease_2Dfactor = require("engine.internal.object-data.movement-speed-increase-factor")
|
|
22
22
|
local MOVEMENT_SPEED_INCREASE_FACTOR_ABILITY_FIELD = ____movement_2Dspeed_2Dincrease_2Dfactor.MOVEMENT_SPEED_INCREASE_FACTOR_ABILITY_FIELD
|
|
23
23
|
local MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____movement_2Dspeed_2Dincrease_2Dfactor.MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
|
|
24
|
+
local damageFactorByUnit = {}
|
|
24
25
|
local receivedDamageFactorByUnit = {}
|
|
25
26
|
____exports.UnitBonusType = {}
|
|
26
27
|
local UnitBonusType = ____exports.UnitBonusType
|
|
@@ -46,13 +47,14 @@ do
|
|
|
46
47
|
reduce = sum,
|
|
47
48
|
initialValue = 0
|
|
48
49
|
}
|
|
49
|
-
UnitBonusType.
|
|
50
|
+
UnitBonusType.AUTO_ATTACK_DAMAGE = {
|
|
50
51
|
abilityTypeId = AUTO_ATTACK_DAMAGE_INCREASE_DUMMY_ABILITY_TYPE_ID,
|
|
51
52
|
field = AUTO_ATTACK_DAMAGE_INCREASE_ABILITY_FIELD,
|
|
52
53
|
integer = false,
|
|
53
54
|
reduce = sum,
|
|
54
55
|
initialValue = 0
|
|
55
56
|
}
|
|
57
|
+
UnitBonusType.DAMAGE_FACTOR = {reduce = product, valueByUnit = damageFactorByUnit, initialValue = 1}
|
|
56
58
|
UnitBonusType.RECEIVED_DAMAGE_FACTOR = {reduce = product, valueByUnit = receivedDamageFactorByUnit, initialValue = 1}
|
|
57
59
|
end
|
|
58
60
|
local bonusesByUnitByBonusType = {}
|
|
@@ -180,6 +182,9 @@ end
|
|
|
180
182
|
Unit.onDamage:addListener(
|
|
181
183
|
4,
|
|
182
184
|
function(source, target, event)
|
|
185
|
+
if source ~= nil and damageFactorByUnit[source] ~= nil then
|
|
186
|
+
event.amount = event.amount * damageFactorByUnit[source]
|
|
187
|
+
end
|
|
183
188
|
if receivedDamageFactorByUnit[target] ~= nil then
|
|
184
189
|
event.amount = event.amount * receivedDamageFactorByUnit[target]
|
|
185
190
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { Item } from "../item";
|
|
3
|
+
export interface UnitItems extends ReadonlyArray<Item | undefined> {
|
|
4
|
+
readonly length: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
5
|
+
[0]: Item | undefined;
|
|
6
|
+
[1]: Item | undefined;
|
|
7
|
+
[2]: Item | undefined;
|
|
8
|
+
[3]: Item | undefined;
|
|
9
|
+
[4]: Item | undefined;
|
|
10
|
+
[5]: Item | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare class UnitItems {
|
|
13
|
+
constructor(handle: junit);
|
|
14
|
+
findSlot(item: Item): 0 | 1 | 2 | 3 | 4 | 5 | undefined;
|
|
15
|
+
protected __newindex(slot: number, item: Item | undefined): void;
|
|
16
|
+
protected __index(key: string | number): unknown;
|
|
17
|
+
protected __len(): number;
|
|
18
|
+
protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
|
|
19
|
+
}
|
|
20
|
+
declare module "../unit" {
|
|
21
|
+
interface Unit {
|
|
22
|
+
readonly items: UnitItems;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__New = ____lualib.__TS__New
|
|
4
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____item = require("engine.internal.item")
|
|
7
|
+
local Item = ____item.Item
|
|
8
|
+
local ____unit = require("engine.internal.unit")
|
|
9
|
+
local Unit = ____unit.Unit
|
|
10
|
+
local ____utility = require("engine.internal.utility")
|
|
11
|
+
local findUnitItemSlot = ____utility.findUnitItemSlot
|
|
12
|
+
local rawset = _G.rawset
|
|
13
|
+
local ____type = _G.type
|
|
14
|
+
local isItemPowerup = IsItemPowerup
|
|
15
|
+
local setItemBooleanField = BlzSetItemBooleanField
|
|
16
|
+
local unitAddItem = UnitAddItem
|
|
17
|
+
local unitDropItemSlot = UnitDropItemSlot
|
|
18
|
+
local unitInventorySize = UnitInventorySize
|
|
19
|
+
local unitItemInSlot = UnitItemInSlot
|
|
20
|
+
local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
|
|
21
|
+
local handleByUnitItems = setmetatable({}, {__mode = "k"})
|
|
22
|
+
local function unitItemsNext(handle, index)
|
|
23
|
+
local slot = index & 7
|
|
24
|
+
if index >> 3 == slot then
|
|
25
|
+
return nil, nil
|
|
26
|
+
end
|
|
27
|
+
return index + 1, Item:of(unitItemInSlot(handle, slot))
|
|
28
|
+
end
|
|
29
|
+
____exports.UnitItems = __TS__Class()
|
|
30
|
+
local UnitItems = ____exports.UnitItems
|
|
31
|
+
UnitItems.name = "UnitItems"
|
|
32
|
+
function UnitItems.prototype.____constructor(self, handle)
|
|
33
|
+
handleByUnitItems[self] = handle
|
|
34
|
+
end
|
|
35
|
+
function UnitItems.prototype.findSlot(self, item)
|
|
36
|
+
return findUnitItemSlot(handleByUnitItems[self], item.handle)
|
|
37
|
+
end
|
|
38
|
+
function UnitItems.prototype.__newindex(self, slot, item)
|
|
39
|
+
local handle = handleByUnitItems[self]
|
|
40
|
+
if slot < 1 or slot > unitInventorySize(handle) then
|
|
41
|
+
return
|
|
42
|
+
end
|
|
43
|
+
unitRemoveItemFromSlot(handle, slot - 1)
|
|
44
|
+
if item ~= nil then
|
|
45
|
+
local itemHandle = item.handle
|
|
46
|
+
local isPowerup = isItemPowerup(itemHandle)
|
|
47
|
+
if isPowerup then
|
|
48
|
+
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
49
|
+
end
|
|
50
|
+
unitAddItem(handle, itemHandle)
|
|
51
|
+
unitDropItemSlot(handle, itemHandle, slot - 1)
|
|
52
|
+
if isPowerup then
|
|
53
|
+
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
function UnitItems.prototype.__index(self, key)
|
|
58
|
+
if ____type(key) == "number" then
|
|
59
|
+
return Item:of(unitItemInSlot(handleByUnitItems[self], key - 1))
|
|
60
|
+
end
|
|
61
|
+
return rawget(____exports.UnitItems.prototype, key)
|
|
62
|
+
end
|
|
63
|
+
function UnitItems.prototype.__len(self)
|
|
64
|
+
return unitInventorySize(handleByUnitItems[self])
|
|
65
|
+
end
|
|
66
|
+
function UnitItems.prototype.__ipairs(self)
|
|
67
|
+
local handle = handleByUnitItems[self]
|
|
68
|
+
return unitItemsNext, handle, unitInventorySize(handle) << 3
|
|
69
|
+
end
|
|
70
|
+
__TS__ObjectDefineProperty(
|
|
71
|
+
Unit.prototype,
|
|
72
|
+
"items",
|
|
73
|
+
{get = function(self)
|
|
74
|
+
local items = __TS__New(____exports.UnitItems, self.handle)
|
|
75
|
+
rawset(self, "items", items)
|
|
76
|
+
return items
|
|
77
|
+
end}
|
|
78
|
+
)
|
|
79
|
+
return ____exports
|