warscript 0.0.1-dev.d30161d → 0.0.1-dev.d63794c
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/core/types/effect.d.ts +13 -3
- package/core/types/effect.lua +116 -17
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +91 -1
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -0
- package/engine/behavior.d.ts +2 -2
- 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/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +29 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +18 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability.d.ts +9 -2
- package/engine/behaviour/ability.lua +47 -33
- package/engine/behaviour/unit.d.ts +5 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +38 -12
- package/engine/buff.lua +171 -79
- package/engine/internal/ability.d.ts +16 -13
- package/engine/internal/ability.lua +87 -76
- package/engine/internal/item/ability.lua +32 -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 +4 -2
- 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-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +25 -10
- package/engine/internal/unit.lua +123 -71
- 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/sound-preset-name.d.ts +5 -1
- package/engine/object-data/entry/item-type.d.ts +12 -0
- package/engine/object-data/entry/item-type.lua +78 -0
- package/engine/object-field/ability.d.ts +21 -1
- package/engine/object-field/ability.lua +51 -1
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- 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/buff.lua +1 -1
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +34 -3
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +11 -2
- package/utility/linked-set.lua +5 -2
- package/utility/types.d.ts +1 -0
|
@@ -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,9 @@ 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
|
|
15
16
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
16
17
|
local setUnitAbilityLevel = SetUnitAbilityLevel
|
|
17
18
|
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
@@ -33,7 +34,7 @@ local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
|
33
34
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
34
35
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
35
36
|
local getHandleId = GetHandleId
|
|
36
|
-
local
|
|
37
|
+
local unitHideAbility = BlzUnitHideAbility
|
|
37
38
|
local match = string.match
|
|
38
39
|
local ____type = _G.type
|
|
39
40
|
local ____tostring = _G.tostring
|
|
@@ -151,55 +152,6 @@ local orders = postcompile(function()
|
|
|
151
152
|
end
|
|
152
153
|
return orders
|
|
153
154
|
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
155
|
local fieldGetters = {
|
|
204
156
|
abilityintegerfield = function(ability, field)
|
|
205
157
|
return getAbilityIntegerField(ability.handle, field)
|
|
@@ -346,43 +298,26 @@ __TS__SetDescriptor(
|
|
|
346
298
|
)
|
|
347
299
|
__TS__SetDescriptor(
|
|
348
300
|
Ability.prototype,
|
|
349
|
-
"
|
|
301
|
+
"orderTypeStringId",
|
|
350
302
|
{get = function(self)
|
|
351
303
|
local field = orderIdFieldByParentTypeId[self.parentTypeId]
|
|
352
|
-
return
|
|
304
|
+
return field ~= nil and getAbilityStringLevelField(self.handle, field, self.level) or (orders[self.parentTypeId] or "")
|
|
353
305
|
end},
|
|
354
306
|
true
|
|
355
307
|
)
|
|
356
308
|
__TS__SetDescriptor(
|
|
357
309
|
Ability.prototype,
|
|
358
|
-
"
|
|
310
|
+
"orderTypeId",
|
|
359
311
|
{get = function(self)
|
|
360
|
-
|
|
361
|
-
rawset(self, "realFields", realFields)
|
|
362
|
-
return realFields
|
|
312
|
+
return order2orderId(self.orderTypeStringId)
|
|
363
313
|
end},
|
|
364
314
|
true
|
|
365
315
|
)
|
|
366
316
|
__TS__SetDescriptor(
|
|
367
317
|
Ability.prototype,
|
|
368
|
-
"
|
|
318
|
+
"levelCount",
|
|
369
319
|
{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
|
|
320
|
+
return self:getField(ABILITY_IF_LEVELS)
|
|
386
321
|
end},
|
|
387
322
|
true
|
|
388
323
|
)
|
|
@@ -393,6 +328,17 @@ __TS__SetDescriptor(
|
|
|
393
328
|
end},
|
|
394
329
|
true
|
|
395
330
|
)
|
|
331
|
+
__TS__SetDescriptor(
|
|
332
|
+
Ability.prototype,
|
|
333
|
+
"cooldownRemaining",
|
|
334
|
+
{
|
|
335
|
+
get = function(self)
|
|
336
|
+
end,
|
|
337
|
+
set = function(self, cooldownRemaining)
|
|
338
|
+
end
|
|
339
|
+
},
|
|
340
|
+
true
|
|
341
|
+
)
|
|
396
342
|
__TS__ObjectDefineProperty(
|
|
397
343
|
Ability,
|
|
398
344
|
"onCreate",
|
|
@@ -416,6 +362,8 @@ function UnrecognizedAbility.prototype.____constructor(self, typeId, owner)
|
|
|
416
362
|
UnrecognizedAbility.____super.prototype.____constructor(self, nil, typeId)
|
|
417
363
|
self.owner = owner
|
|
418
364
|
end
|
|
365
|
+
function UnrecognizedAbility.prototype.interruptCast(self)
|
|
366
|
+
end
|
|
419
367
|
__TS__SetDescriptor(
|
|
420
368
|
UnrecognizedAbility.prototype,
|
|
421
369
|
"level",
|
|
@@ -424,6 +372,18 @@ __TS__SetDescriptor(
|
|
|
424
372
|
end},
|
|
425
373
|
true
|
|
426
374
|
)
|
|
375
|
+
__TS__SetDescriptor(
|
|
376
|
+
UnrecognizedAbility.prototype,
|
|
377
|
+
"cooldownRemaining",
|
|
378
|
+
{
|
|
379
|
+
get = function(self)
|
|
380
|
+
return 0
|
|
381
|
+
end,
|
|
382
|
+
set = function(self, _)
|
|
383
|
+
end
|
|
384
|
+
},
|
|
385
|
+
true
|
|
386
|
+
)
|
|
427
387
|
____exports.UnitAbility = __TS__Class()
|
|
428
388
|
local UnitAbility = ____exports.UnitAbility
|
|
429
389
|
UnitAbility.name = "UnitAbility"
|
|
@@ -433,6 +393,15 @@ function UnitAbility.prototype.____constructor(self, handle, typeId, owner)
|
|
|
433
393
|
self.owner = owner
|
|
434
394
|
self.u = owner.handle
|
|
435
395
|
end
|
|
396
|
+
function UnitAbility.prototype.incrementHideCounter(self)
|
|
397
|
+
unitHideAbility(self.u, self.typeId, true)
|
|
398
|
+
end
|
|
399
|
+
function UnitAbility.prototype.decrementHideCounter(self)
|
|
400
|
+
unitHideAbility(self.u, self.typeId, false)
|
|
401
|
+
end
|
|
402
|
+
function UnitAbility.prototype.interruptCast(self)
|
|
403
|
+
self.owner:interruptCast(self.typeId)
|
|
404
|
+
end
|
|
436
405
|
__TS__SetDescriptor(
|
|
437
406
|
UnitAbility.prototype,
|
|
438
407
|
"level",
|
|
@@ -453,8 +422,8 @@ __TS__SetDescriptor(
|
|
|
453
422
|
get = function(self)
|
|
454
423
|
return getUnitAbilityCooldownRemaining(self.u, self.typeId)
|
|
455
424
|
end,
|
|
456
|
-
set = function(self,
|
|
457
|
-
startUnitAbilityCooldown(self.u, self.typeId,
|
|
425
|
+
set = function(self, cooldownRemaining)
|
|
426
|
+
startUnitAbilityCooldown(self.u, self.typeId, cooldownRemaining)
|
|
458
427
|
end
|
|
459
428
|
},
|
|
460
429
|
true
|
|
@@ -479,6 +448,14 @@ end
|
|
|
479
448
|
local function setAbilityField(_, ability, field, levelOrValue, value)
|
|
480
449
|
return ____exports.Ability.prototype.setField(ability, field, levelOrValue, value)
|
|
481
450
|
end
|
|
451
|
+
local function getAbilityCooldown(_, abilityTypeId)
|
|
452
|
+
return getUnitAbilityCooldownRemaining(abilityActionDummy, abilityTypeId)
|
|
453
|
+
end
|
|
454
|
+
local function startAbilityCooldown(_, abilityTypeId, cooldown)
|
|
455
|
+
startUnitAbilityCooldown(abilityActionDummy, abilityTypeId, cooldown)
|
|
456
|
+
end
|
|
457
|
+
local function doNothing()
|
|
458
|
+
end
|
|
482
459
|
____exports.ItemAbility = __TS__Class()
|
|
483
460
|
local ItemAbility = ____exports.ItemAbility
|
|
484
461
|
ItemAbility.name = "ItemAbility"
|
|
@@ -506,6 +483,13 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
506
483
|
value
|
|
507
484
|
)
|
|
508
485
|
end
|
|
486
|
+
function ItemAbility.prototype.interruptCast(self)
|
|
487
|
+
local item = self.owner
|
|
488
|
+
local ____doAbilityActionForceDummy_4 = doAbilityActionForceDummy
|
|
489
|
+
local ____item_handle_3 = item.handle
|
|
490
|
+
local ____opt_1 = item.owner
|
|
491
|
+
____doAbilityActionForceDummy_4(____item_handle_3, ____opt_1 and ____opt_1.handle, doNothing)
|
|
492
|
+
end
|
|
509
493
|
__TS__SetDescriptor(
|
|
510
494
|
ItemAbility.prototype,
|
|
511
495
|
"level",
|
|
@@ -514,6 +498,33 @@ __TS__SetDescriptor(
|
|
|
514
498
|
end},
|
|
515
499
|
true
|
|
516
500
|
)
|
|
501
|
+
__TS__SetDescriptor(
|
|
502
|
+
ItemAbility.prototype,
|
|
503
|
+
"cooldownRemaining",
|
|
504
|
+
{
|
|
505
|
+
get = function(self)
|
|
506
|
+
local item = self.owner
|
|
507
|
+
local ____doAbilityActionForceDummy_8 = doAbilityActionForceDummy
|
|
508
|
+
local ____item_handle_7 = item.handle
|
|
509
|
+
local ____opt_5 = item.owner
|
|
510
|
+
return ____doAbilityActionForceDummy_8(____item_handle_7, ____opt_5 and ____opt_5.handle, getAbilityCooldown, self.typeId)
|
|
511
|
+
end,
|
|
512
|
+
set = function(self, cooldownRemaining)
|
|
513
|
+
local item = self.owner
|
|
514
|
+
local ____doAbilityActionForceDummy_12 = doAbilityActionForceDummy
|
|
515
|
+
local ____item_handle_11 = item.handle
|
|
516
|
+
local ____opt_9 = item.owner
|
|
517
|
+
____doAbilityActionForceDummy_12(
|
|
518
|
+
____item_handle_11,
|
|
519
|
+
____opt_9 and ____opt_9.handle,
|
|
520
|
+
startAbilityCooldown,
|
|
521
|
+
self.typeId,
|
|
522
|
+
cooldownRemaining
|
|
523
|
+
)
|
|
524
|
+
end
|
|
525
|
+
},
|
|
526
|
+
true
|
|
527
|
+
)
|
|
517
528
|
__TS__ObjectDefineProperty(
|
|
518
529
|
ItemAbility,
|
|
519
530
|
"onCreate",
|
|
@@ -3,6 +3,8 @@ local ____player = require("core.types.player")
|
|
|
3
3
|
local Player = ____player.Player
|
|
4
4
|
local ____dummy = require("objutil.dummy")
|
|
5
5
|
local dummyUnitId = ____dummy.dummyUnitId
|
|
6
|
+
local ____utility = require("engine.internal.utility")
|
|
7
|
+
local findUnitItemSlot = ____utility.findUnitItemSlot
|
|
6
8
|
local isItemOwned = IsItemOwned
|
|
7
9
|
local isItemPowerup = IsItemPowerup
|
|
8
10
|
local getItemX = GetItemX
|
|
@@ -10,6 +12,7 @@ local getItemY = GetItemY
|
|
|
10
12
|
local setItemBooleanField = BlzSetItemBooleanField
|
|
11
13
|
local setItemPosition = SetItemPosition
|
|
12
14
|
local unitAddItem = UnitAddItem
|
|
15
|
+
local unitDropItemSlot = UnitDropItemSlot
|
|
13
16
|
local unitRemoveItem = UnitRemoveItem
|
|
14
17
|
local dummy = assert(CreateUnit(
|
|
15
18
|
Player.neutralVictim.handle,
|
|
@@ -21,6 +24,9 @@ local dummy = assert(CreateUnit(
|
|
|
21
24
|
ShowUnit(dummy, false)
|
|
22
25
|
---
|
|
23
26
|
-- @internal For use by internal systems only.
|
|
27
|
+
____exports.abilityActionDummy = dummy
|
|
28
|
+
---
|
|
29
|
+
-- @internal For use by internal systems only.
|
|
24
30
|
____exports.doAbilityAction = function(handle, action, ...)
|
|
25
31
|
local isOwned = isItemOwned(handle)
|
|
26
32
|
local isPowerup
|
|
@@ -45,4 +51,30 @@ ____exports.doAbilityAction = function(handle, action, ...)
|
|
|
45
51
|
end
|
|
46
52
|
return result
|
|
47
53
|
end
|
|
54
|
+
---
|
|
55
|
+
-- @internal For use by internal systems only.
|
|
56
|
+
____exports.doAbilityActionForceDummy = function(handle, owner, action, ...)
|
|
57
|
+
if owner == nil then
|
|
58
|
+
return ____exports.doAbilityAction(handle, action, ...)
|
|
59
|
+
end
|
|
60
|
+
local slot = findUnitItemSlot(owner, handle)
|
|
61
|
+
if slot == nil then
|
|
62
|
+
return ____exports.doAbilityAction(handle, action, ...)
|
|
63
|
+
end
|
|
64
|
+
local isPowerup
|
|
65
|
+
if isItemPowerup(handle) then
|
|
66
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
67
|
+
isPowerup = true
|
|
68
|
+
end
|
|
69
|
+
unitRemoveItem(owner, handle)
|
|
70
|
+
unitAddItem(dummy, handle)
|
|
71
|
+
local result = action(handle, ...)
|
|
72
|
+
unitRemoveItem(dummy, handle)
|
|
73
|
+
unitAddItem(owner, handle)
|
|
74
|
+
unitDropItemSlot(owner, handle, slot)
|
|
75
|
+
if isPowerup then
|
|
76
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
77
|
+
end
|
|
78
|
+
return result
|
|
79
|
+
end
|
|
48
80
|
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
|
|
@@ -8,7 +8,8 @@ export type UnitBonusId<Brand extends string = any> = number & {
|
|
|
8
8
|
export type UnitArmorBonusId = UnitBonusId<"armor">;
|
|
9
9
|
export type UnitAttackSpeedFactorBonusId = UnitBonusId<"attackSpeedFactor">;
|
|
10
10
|
export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
|
|
11
|
-
export type
|
|
11
|
+
export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
|
|
12
|
+
export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
|
|
12
13
|
export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
|
|
13
14
|
export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
14
15
|
abilityTypeId: AbilityTypeId;
|
|
@@ -30,7 +31,8 @@ export declare namespace UnitBonusType {
|
|
|
30
31
|
const ARMOR: UnitBonusType<UnitArmorBonusId>;
|
|
31
32
|
const ATTACK_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
32
33
|
const MOVEMENT_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
33
|
-
const
|
|
34
|
+
const AUTO_ATTACK_DAMAGE: UnitBonusType<UnitAutoAttackDamageBonusId>;
|
|
35
|
+
const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
34
36
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
35
37
|
}
|
|
36
38
|
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
@@ -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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { Player } from "../../../core/types/player";
|
|
3
|
+
import { Event } from "../../../event";
|
|
4
|
+
declare module "../unit" {
|
|
5
|
+
namespace Unit {
|
|
6
|
+
const mainSelectedUnitChangeEvent: Event<[Player]>;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
declare module "../unit" {
|
|
10
|
+
namespace Unit {
|
|
11
|
+
const getMainSelectedOf: (player: Player) => Unit | undefined;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____player = require("core.types.player")
|
|
5
|
+
local Player = ____player.Player
|
|
6
|
+
local ____math = require("math")
|
|
7
|
+
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
8
|
+
local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
|
|
9
|
+
local ____local_2Dclient = require("engine.local-client")
|
|
10
|
+
local LocalClient = ____local_2Dclient.LocalClient
|
|
11
|
+
local ____unit = require("engine.internal.unit")
|
|
12
|
+
local Unit = ____unit.Unit
|
|
13
|
+
local ____event = require("event")
|
|
14
|
+
local Event = ____event.Event
|
|
15
|
+
local mainSelectedUnitChangeEvent = __TS__New(Event)
|
|
16
|
+
rawset(Unit, "mainSelectedUnitChangeEvent", mainSelectedUnitChangeEvent)
|
|
17
|
+
local mainSelectedUnitByPlayer = {}
|
|
18
|
+
local syncSlider = BlzCreateFrameByType(
|
|
19
|
+
"SLIDER",
|
|
20
|
+
"UnitSyncId",
|
|
21
|
+
BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
|
|
22
|
+
"",
|
|
23
|
+
0
|
|
24
|
+
)
|
|
25
|
+
BlzFrameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
|
|
26
|
+
LocalClient.mainSelectedUnitChangeEvent:addListener(function()
|
|
27
|
+
local ____opt_0 = LocalClient.mainSelectedUnit
|
|
28
|
+
local syncId = ____opt_0 and ____opt_0.syncId
|
|
29
|
+
BlzFrameSetValue(syncSlider, syncId or 0)
|
|
30
|
+
end)
|
|
31
|
+
local trg = CreateTrigger()
|
|
32
|
+
BlzTriggerRegisterFrameEvent(trg, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
|
|
33
|
+
TriggerAddAction(
|
|
34
|
+
trg,
|
|
35
|
+
function()
|
|
36
|
+
local player = Player:of(GetTriggerPlayer())
|
|
37
|
+
local mainSelectedUnit = Unit:getBySyncId(BlzGetTriggerFrameValue())
|
|
38
|
+
if mainSelectedUnit ~= mainSelectedUnitByPlayer[player] then
|
|
39
|
+
mainSelectedUnitByPlayer[player] = mainSelectedUnit
|
|
40
|
+
Event.invoke(mainSelectedUnitChangeEvent, player)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
)
|
|
44
|
+
rawset(
|
|
45
|
+
Unit,
|
|
46
|
+
"getMainSelectedOf",
|
|
47
|
+
function(player)
|
|
48
|
+
return mainSelectedUnitByPlayer[player]
|
|
49
|
+
end
|
|
50
|
+
)
|
|
51
|
+
return ____exports
|