warscript 0.0.1-dev.2af030d → 0.0.1-dev.3599429
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/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 +6 -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/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/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.lua +4 -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 +8 -1
- package/engine/behaviour/ability.lua +62 -0
- 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 +62 -20
- package/engine/buff.lua +247 -72
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +3 -11
- package/engine/internal/ability.lua +9 -78
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/unit/ability.lua +0 -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 +84 -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 +24 -5
- package/engine/internal/unit.d.ts +26 -12
- package/engine/internal/unit.lua +118 -76
- 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/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/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 +12 -1
- package/engine/object-data/entry/item-type.lua +78 -0
- package/engine/object-data/entry/lightning-type.d.ts +0 -1
- package/engine/object-data/entry/unit-type.d.ts +0 -1
- 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-field/ability.d.ts +18 -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 +18 -0
- package/engine/standard/entries/unit-type.lua +18 -0
- package/engine/standard/fields/ability.d.ts +1 -1
- package/engine/standard/fields/ability.lua +1 -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 +3 -4
- package/utility/bit-set.d.ts +0 -2
- 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
package/engine/internal/unit.lua
CHANGED
|
@@ -7,6 +7,9 @@ local __TS__Class = ____lualib.__TS__Class
|
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
8
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
9
9
|
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
10
|
+
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
11
|
+
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
12
|
+
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
10
13
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
11
14
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
15
|
local Set = ____lualib.Set
|
|
@@ -279,16 +282,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
279
282
|
end
|
|
280
283
|
local function dispatch(event, idGetter, argsGetter)
|
|
281
284
|
local initialized = false
|
|
282
|
-
local x = {}
|
|
283
285
|
return setmetatable(
|
|
284
|
-
|
|
286
|
+
{},
|
|
285
287
|
{
|
|
286
288
|
__index = function(self, id)
|
|
287
289
|
if type(id) ~= "number" then
|
|
288
290
|
return event[id]
|
|
289
291
|
end
|
|
290
292
|
if not initialized then
|
|
291
|
-
local invoke = Event.invoke
|
|
292
293
|
event:addListener(function(...)
|
|
293
294
|
local id = idGetter(...)
|
|
294
295
|
local dispatched = rawget(self, id)
|
|
@@ -326,7 +327,6 @@ local function dispatchAbility(event)
|
|
|
326
327
|
return event[id]
|
|
327
328
|
end
|
|
328
329
|
if not initialized then
|
|
329
|
-
local invoke = Event.invoke
|
|
330
330
|
event:addListener(function(unit, ability, ...)
|
|
331
331
|
local dispatched = rawget(self, ability.typeId)
|
|
332
332
|
if dispatched ~= nil then
|
|
@@ -562,17 +562,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
562
|
____exports.Unit:of(unit)
|
|
563
563
|
)
|
|
564
564
|
end
|
|
565
|
-
if not unitAddAbility(unit, abilityId) then
|
|
566
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
565
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
566
|
local item = unitItemInSlot(unit, i)
|
|
578
567
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +619,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
619
|
dummies[player] = dummy
|
|
631
620
|
end
|
|
632
621
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
622
|
+
local counter = (unit[103] or 0) - 1
|
|
634
623
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
624
|
+
unit[103] = counter
|
|
636
625
|
return
|
|
637
626
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
627
|
+
unit[103] = nil
|
|
628
|
+
local healthBonus = unit[104]
|
|
640
629
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
630
|
+
unit[104] = nil
|
|
642
631
|
local handle = unit.handle
|
|
643
632
|
BlzSetUnitMaxHP(
|
|
644
633
|
handle,
|
|
@@ -646,12 +635,17 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
635
|
)
|
|
647
636
|
end
|
|
648
637
|
end
|
|
638
|
+
local nextSyncId = 1
|
|
639
|
+
local unitBySyncId = setmetatable({}, {__mode = "k"})
|
|
649
640
|
____exports.Unit = __TS__Class()
|
|
650
641
|
local Unit = ____exports.Unit
|
|
651
642
|
Unit.name = "Unit"
|
|
652
643
|
__TS__ClassExtends(Unit, Handle)
|
|
653
644
|
function Unit.prototype.____constructor(self, handle)
|
|
654
645
|
Handle.prototype.____constructor(self, handle)
|
|
646
|
+
local ____nextSyncId_0 = nextSyncId
|
|
647
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
648
|
+
self.syncId = ____nextSyncId_0
|
|
655
649
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
650
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
651
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +658,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
658
|
fourCC("Amrf")
|
|
665
659
|
))
|
|
666
660
|
end
|
|
661
|
+
unitBySyncId[self.syncId] = self
|
|
667
662
|
local ____ = self.abilities
|
|
668
663
|
end
|
|
669
664
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -749,8 +744,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
744
|
end}
|
|
750
745
|
end
|
|
751
746
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
747
|
+
local ____combatClassification_1 = combatClassification
|
|
748
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
754
749
|
end
|
|
755
750
|
function Unit.prototype.addClassification(self, classification)
|
|
756
751
|
return unitAddType(self.handle, classification)
|
|
@@ -768,13 +763,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
763
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
764
|
end
|
|
770
765
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
766
|
+
local ____temp_2
|
|
772
767
|
if type(x) == "number" then
|
|
773
|
-
|
|
768
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
769
|
else
|
|
775
|
-
|
|
770
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
776
771
|
end
|
|
777
|
-
return
|
|
772
|
+
return ____temp_2
|
|
778
773
|
end
|
|
779
774
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
775
|
return isUnitAlly(
|
|
@@ -801,7 +796,7 @@ function Unit.prototype.queueAnimation(self, animation)
|
|
|
801
796
|
queueUnitAnimation(self.handle, animation)
|
|
802
797
|
end
|
|
803
798
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
799
|
+
self[103] = (self[103] or 0) + 1
|
|
805
800
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
801
|
end
|
|
807
802
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -817,8 +812,15 @@ end
|
|
|
817
812
|
function Unit.prototype.kill(self)
|
|
818
813
|
killUnit(self.handle)
|
|
819
814
|
end
|
|
820
|
-
function Unit.prototype.revive(self,
|
|
821
|
-
|
|
815
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
816
|
+
local ____ReviveHero_5 = ReviveHero
|
|
817
|
+
local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
|
|
818
|
+
local ____doEffect_3 = doEffect
|
|
819
|
+
if ____doEffect_3 == nil then
|
|
820
|
+
____doEffect_3 = false
|
|
821
|
+
end
|
|
822
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
823
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
822
824
|
end
|
|
823
825
|
function Unit.prototype.healTarget(self, target, amount)
|
|
824
826
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -858,7 +860,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
858
860
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
859
861
|
end
|
|
860
862
|
function Unit.prototype.itemInSlot(self, slot)
|
|
861
|
-
return Item:of(
|
|
863
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
862
864
|
end
|
|
863
865
|
function Unit.prototype.addAbility(self, abilityId)
|
|
864
866
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -914,6 +916,9 @@ end
|
|
|
914
916
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
915
917
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
916
918
|
end
|
|
919
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
920
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
921
|
+
end
|
|
917
922
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
918
923
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
919
924
|
end
|
|
@@ -985,18 +990,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
985
990
|
self:decrementStunCounter()
|
|
986
991
|
end
|
|
987
992
|
function Unit.prototype.incrementStunCounter(self)
|
|
988
|
-
local stunCounter = self[
|
|
989
|
-
if not self[
|
|
993
|
+
local stunCounter = self[102] or 0
|
|
994
|
+
if not self[101] or stunCounter >= 0 then
|
|
990
995
|
BlzPauseUnitEx(self.handle, true)
|
|
991
996
|
end
|
|
992
|
-
self[
|
|
997
|
+
self[102] = stunCounter + 1
|
|
993
998
|
end
|
|
994
999
|
function Unit.prototype.decrementStunCounter(self)
|
|
995
|
-
local stunCounter = self[
|
|
996
|
-
if not self[
|
|
1000
|
+
local stunCounter = self[102] or 0
|
|
1001
|
+
if not self[101] or stunCounter >= 1 then
|
|
997
1002
|
BlzPauseUnitEx(self.handle, false)
|
|
998
1003
|
end
|
|
999
|
-
self[
|
|
1004
|
+
self[102] = stunCounter - 1
|
|
1000
1005
|
end
|
|
1001
1006
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1002
1007
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1098,8 +1103,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1098
1103
|
)
|
|
1099
1104
|
return targetCollection
|
|
1100
1105
|
end
|
|
1101
|
-
function Unit.getSelectionOf(self, player)
|
|
1102
|
-
|
|
1106
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1107
|
+
if target == nil then
|
|
1108
|
+
target = {}
|
|
1109
|
+
end
|
|
1110
|
+
targetCollection = target
|
|
1103
1111
|
targetCollectionNextIndex = 1
|
|
1104
1112
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1105
1113
|
return targetCollection
|
|
@@ -1121,6 +1129,9 @@ end
|
|
|
1121
1129
|
function Unit.prototype.__tostring(self)
|
|
1122
1130
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1123
1131
|
end
|
|
1132
|
+
function Unit.getBySyncId(self, syncId)
|
|
1133
|
+
return unitBySyncId[syncId]
|
|
1134
|
+
end
|
|
1124
1135
|
__TS__SetDescriptor(
|
|
1125
1136
|
Unit.prototype,
|
|
1126
1137
|
"_deltas",
|
|
@@ -1378,17 +1389,17 @@ __TS__SetDescriptor(
|
|
|
1378
1389
|
"isTeamGlowVisible",
|
|
1379
1390
|
{
|
|
1380
1391
|
get = function(self)
|
|
1381
|
-
return not self[
|
|
1392
|
+
return not self[106]
|
|
1382
1393
|
end,
|
|
1383
1394
|
set = function(self, isTeamGlowVisible)
|
|
1384
1395
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1385
|
-
local
|
|
1396
|
+
local ____temp_6
|
|
1386
1397
|
if not isTeamGlowVisible then
|
|
1387
|
-
|
|
1398
|
+
____temp_6 = true
|
|
1388
1399
|
else
|
|
1389
|
-
|
|
1400
|
+
____temp_6 = nil
|
|
1390
1401
|
end
|
|
1391
|
-
self[
|
|
1402
|
+
self[106] = ____temp_6
|
|
1392
1403
|
end
|
|
1393
1404
|
},
|
|
1394
1405
|
true
|
|
@@ -1398,7 +1409,7 @@ __TS__SetDescriptor(
|
|
|
1398
1409
|
"color",
|
|
1399
1410
|
{set = function(self, color)
|
|
1400
1411
|
setUnitColor(self.handle, color.handle)
|
|
1401
|
-
if self[
|
|
1412
|
+
if self[106] then
|
|
1402
1413
|
showUnitTeamGlow(self.handle, false)
|
|
1403
1414
|
end
|
|
1404
1415
|
end},
|
|
@@ -1422,14 +1433,14 @@ __TS__SetDescriptor(
|
|
|
1422
1433
|
"maxHealth",
|
|
1423
1434
|
{
|
|
1424
1435
|
get = function(self)
|
|
1425
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1436
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1426
1437
|
end,
|
|
1427
1438
|
set = function(self, maxHealth)
|
|
1428
|
-
if maxHealth < 1 and self[
|
|
1429
|
-
self[
|
|
1439
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1440
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1430
1441
|
maxHealth = 1
|
|
1431
1442
|
end
|
|
1432
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1443
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1433
1444
|
end
|
|
1434
1445
|
},
|
|
1435
1446
|
true
|
|
@@ -1471,10 +1482,10 @@ __TS__SetDescriptor(
|
|
|
1471
1482
|
"health",
|
|
1472
1483
|
{
|
|
1473
1484
|
get = function(self)
|
|
1474
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1485
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1475
1486
|
end,
|
|
1476
1487
|
set = function(self, health)
|
|
1477
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1488
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1478
1489
|
end
|
|
1479
1490
|
},
|
|
1480
1491
|
true
|
|
@@ -1685,17 +1696,17 @@ __TS__SetDescriptor(
|
|
|
1685
1696
|
set = function(self, isPaused)
|
|
1686
1697
|
local handle = self.handle
|
|
1687
1698
|
if isPaused and not IsUnitPaused(handle) then
|
|
1688
|
-
self[
|
|
1689
|
-
for _ = self[
|
|
1699
|
+
self[101] = true
|
|
1700
|
+
for _ = self[102] or 0, -1 do
|
|
1690
1701
|
BlzPauseUnitEx(handle, true)
|
|
1691
1702
|
end
|
|
1692
1703
|
PauseUnit(handle, true)
|
|
1693
1704
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1694
1705
|
PauseUnit(handle, false)
|
|
1695
|
-
for _ = self[
|
|
1706
|
+
for _ = self[102] or 0, -1 do
|
|
1696
1707
|
BlzPauseUnitEx(handle, false)
|
|
1697
1708
|
end
|
|
1698
|
-
self[
|
|
1709
|
+
self[101] = nil
|
|
1699
1710
|
end
|
|
1700
1711
|
end
|
|
1701
1712
|
},
|
|
@@ -2052,7 +2063,6 @@ Unit.onDecay = __TS__New(
|
|
|
2052
2063
|
Unit.onResurrect = __TS__New(
|
|
2053
2064
|
InitializingEvent,
|
|
2054
2065
|
function(event)
|
|
2055
|
-
local invoke = Event.invoke
|
|
2056
2066
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2057
2067
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2058
2068
|
dead[unit] = true
|
|
@@ -2068,10 +2078,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2068
2078
|
Unit.morphEvent = __TS__New(
|
|
2069
2079
|
InitializingEvent,
|
|
2070
2080
|
function(event)
|
|
2081
|
+
local function ifNotLeft(unit)
|
|
2082
|
+
local handle = unit.handle
|
|
2083
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2084
|
+
invoke(event, unit)
|
|
2085
|
+
end
|
|
2086
|
+
end
|
|
2071
2087
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2072
2088
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2073
|
-
|
|
2074
|
-
Timer:run(Event.invoke, event, unit)
|
|
2089
|
+
Timer:run(ifNotLeft, unit)
|
|
2075
2090
|
end
|
|
2076
2091
|
end)
|
|
2077
2092
|
end
|
|
@@ -2109,27 +2124,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2109
2124
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2110
2125
|
InitializingEvent,
|
|
2111
2126
|
function(event)
|
|
2112
|
-
local invoke = Event.invoke
|
|
2113
2127
|
local function listener(unit, id)
|
|
2114
|
-
local
|
|
2128
|
+
local ____GetSpellTargetUnit_result_9
|
|
2115
2129
|
if GetSpellTargetUnit() then
|
|
2116
|
-
|
|
2130
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2117
2131
|
else
|
|
2118
|
-
local
|
|
2132
|
+
local ____GetSpellTargetItem_result_8
|
|
2119
2133
|
if GetSpellTargetItem() then
|
|
2120
|
-
|
|
2134
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2121
2135
|
else
|
|
2122
|
-
local
|
|
2136
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2123
2137
|
if GetSpellTargetDestructable() then
|
|
2124
|
-
|
|
2138
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2125
2139
|
else
|
|
2126
|
-
|
|
2140
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2127
2141
|
end
|
|
2128
|
-
|
|
2142
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2129
2143
|
end
|
|
2130
|
-
|
|
2144
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2131
2145
|
end
|
|
2132
|
-
local target =
|
|
2146
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2133
2147
|
if target then
|
|
2134
2148
|
invoke(event, unit, id, target)
|
|
2135
2149
|
end
|
|
@@ -2326,7 +2340,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2326
2340
|
)
|
|
2327
2341
|
Unit.onDamaging = (function()
|
|
2328
2342
|
local event = __TS__New(Event)
|
|
2329
|
-
local invoke = Event.invoke
|
|
2330
2343
|
local trigger = CreateTrigger()
|
|
2331
2344
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2332
2345
|
TriggerAddCondition(
|
|
@@ -2425,7 +2438,6 @@ end)()
|
|
|
2425
2438
|
Unit.onDamage = __TS__New(
|
|
2426
2439
|
InitializingEvent,
|
|
2427
2440
|
function(event)
|
|
2428
|
-
local invoke = Event.invoke
|
|
2429
2441
|
local trigger = CreateTrigger()
|
|
2430
2442
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2431
2443
|
TriggerAddCondition(
|
|
@@ -2441,6 +2453,7 @@ Unit.onDamage = __TS__New(
|
|
|
2441
2453
|
damageType = BlzGetEventDamageType(),
|
|
2442
2454
|
weaponType = BlzGetEventWeaponType(),
|
|
2443
2455
|
isAttack = BlzGetEventIsAttack(),
|
|
2456
|
+
originalAmount = GetEventDamage(),
|
|
2444
2457
|
preventDeath = damageEventPreventDeath
|
|
2445
2458
|
}
|
|
2446
2459
|
local evData = setmetatable(
|
|
@@ -2457,7 +2470,7 @@ Unit.onDamage = __TS__New(
|
|
|
2457
2470
|
invoke(event, source, target, evData)
|
|
2458
2471
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2459
2472
|
local bonusHealth = math.ceil(evData.amount)
|
|
2460
|
-
target[
|
|
2473
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2461
2474
|
BlzSetUnitMaxHP(
|
|
2462
2475
|
target.handle,
|
|
2463
2476
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2471,7 +2484,7 @@ Unit.onDamage = __TS__New(
|
|
|
2471
2484
|
evData[0],
|
|
2472
2485
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2473
2486
|
)
|
|
2474
|
-
target[
|
|
2487
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2475
2488
|
SetWidgetLife(
|
|
2476
2489
|
target.handle,
|
|
2477
2490
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2491,7 +2504,7 @@ Unit.onDamage = __TS__New(
|
|
|
2491
2504
|
DestroyTrigger(trigger)
|
|
2492
2505
|
end
|
|
2493
2506
|
)
|
|
2494
|
-
Unit.
|
|
2507
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2495
2508
|
____exports.UnitTriggerEvent,
|
|
2496
2509
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2497
2510
|
function()
|
|
@@ -2502,7 +2515,7 @@ Unit.onItemDrop = __TS__New(
|
|
|
2502
2515
|
return IgnoreEvent
|
|
2503
2516
|
end
|
|
2504
2517
|
)
|
|
2505
|
-
Unit.
|
|
2518
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2506
2519
|
____exports.UnitTriggerEvent,
|
|
2507
2520
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2508
2521
|
function()
|
|
@@ -2513,10 +2526,39 @@ Unit.onItemPickup = __TS__New(
|
|
|
2513
2526
|
return IgnoreEvent
|
|
2514
2527
|
end
|
|
2515
2528
|
)
|
|
2516
|
-
Unit.
|
|
2529
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2517
2530
|
____exports.UnitTriggerEvent,
|
|
2518
2531
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2519
|
-
function() return ____exports.Unit:of(
|
|
2532
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2533
|
+
)
|
|
2534
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2535
|
+
____exports.UnitTriggerEvent,
|
|
2536
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2537
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2538
|
+
)
|
|
2539
|
+
__TS__ObjectDefineProperty(
|
|
2540
|
+
Unit,
|
|
2541
|
+
"itemMovedEvent",
|
|
2542
|
+
{get = function(self)
|
|
2543
|
+
local event = __TS__New(Event)
|
|
2544
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2545
|
+
local slotTo = order - orderId("moveslot0")
|
|
2546
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2547
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2548
|
+
if slotFrom ~= nil then
|
|
2549
|
+
invoke(
|
|
2550
|
+
event,
|
|
2551
|
+
unit,
|
|
2552
|
+
item,
|
|
2553
|
+
slotFrom,
|
|
2554
|
+
slotTo
|
|
2555
|
+
)
|
|
2556
|
+
end
|
|
2557
|
+
end)
|
|
2558
|
+
end
|
|
2559
|
+
rawset(self, "itemMovedEvent", event)
|
|
2560
|
+
return event
|
|
2561
|
+
end}
|
|
2520
2562
|
)
|
|
2521
2563
|
__TS__ObjectDefineProperty(
|
|
2522
2564
|
Unit,
|
package/engine/local-client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Unit } from "../core/types/unit";
|
|
3
3
|
import { Async } from "../core/types/async";
|
|
4
|
-
import { TriggerEvent } from "../event";
|
|
4
|
+
import { Event, TriggerEvent } from "../event";
|
|
5
5
|
import { GraphicsMode } from "./index";
|
|
6
6
|
export declare class LocalClient {
|
|
7
7
|
private constructor();
|
|
@@ -11,6 +11,11 @@ export declare class LocalClient {
|
|
|
11
11
|
static get isHD(): boolean;
|
|
12
12
|
static get graphicsMode(): GraphicsMode;
|
|
13
13
|
static get isActive(): boolean;
|
|
14
|
-
static get mouseFocusUnit(): Async<Unit
|
|
14
|
+
static get mouseFocusUnit(): Async<Unit> | undefined;
|
|
15
|
+
static get mainSelectedUnit(): Async<Unit> | undefined;
|
|
16
|
+
static get mainSelectedUnitChangeEvent(): Event<[
|
|
17
|
+
previousMainSelectedUnit: Unit | undefined,
|
|
18
|
+
newMainSelectedUnit: Unit | undefined
|
|
19
|
+
]>;
|
|
15
20
|
static readonly onDisconnect: TriggerEvent<[]>;
|
|
16
21
|
}
|
package/engine/local-client.lua
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
2
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
4
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
4
5
|
local __TS__New = ____lualib.__TS__New
|
|
@@ -6,13 +7,25 @@ local ____exports = {}
|
|
|
6
7
|
local ____unit = require("core.types.unit")
|
|
7
8
|
local Unit = ____unit.Unit
|
|
8
9
|
local ____event = require("event")
|
|
10
|
+
local Event = ____event.Event
|
|
9
11
|
local TriggerEvent = ____event.TriggerEvent
|
|
12
|
+
local ____frame = require("core.types.frame")
|
|
13
|
+
local Frame = ____frame.Frame
|
|
14
|
+
local ____player = require("core.types.player")
|
|
15
|
+
local Player = ____player.Player
|
|
16
|
+
local ____timer = require("core.types.timer")
|
|
17
|
+
local Timer = ____timer.Timer
|
|
10
18
|
local loadTOCFile = BlzLoadTOCFile
|
|
11
19
|
local getLocalClientWidth = BlzGetLocalClientWidth
|
|
12
20
|
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
13
21
|
local isLocalClientActive = BlzIsLocalClientActive
|
|
22
|
+
local isHeroUnitId = IsHeroUnitId
|
|
23
|
+
local getHandleId = GetHandleId
|
|
14
24
|
local getMouseFocusUnit = BlzGetMouseFocusUnit
|
|
25
|
+
local getUnitRealField = BlzGetUnitRealField
|
|
26
|
+
local getUnitTypeId = GetUnitTypeId
|
|
15
27
|
local getLocale = BlzGetLocale
|
|
28
|
+
local tableSort = table.sort
|
|
16
29
|
local tocPath = "_warscript\\IsHD.toc"
|
|
17
30
|
compiletime(function()
|
|
18
31
|
if currentMap then
|
|
@@ -21,6 +34,29 @@ compiletime(function()
|
|
|
21
34
|
currentMap:addFileString("_HD.w3mod\\" .. tocPath, fdfPath .. "\r\n")
|
|
22
35
|
end
|
|
23
36
|
end)
|
|
37
|
+
local selectionButtons
|
|
38
|
+
Timer:run(function()
|
|
39
|
+
selectionButtons = __TS__ArrayMap(
|
|
40
|
+
Frame:byName("SimpleInfoPanelUnitDetail").parent:getChild(5):getChild(0).children,
|
|
41
|
+
function(____, frame) return frame:getChild(1) end
|
|
42
|
+
)
|
|
43
|
+
end)
|
|
44
|
+
local localSelectedUnits = {}
|
|
45
|
+
local indexByLocalSelectedUnit = {}
|
|
46
|
+
local function compareUnitsSelectionPriority(a, b)
|
|
47
|
+
local aHandle = a.handle
|
|
48
|
+
local bHandle = b.handle
|
|
49
|
+
local priorityDelta = getUnitRealField(bHandle, UNIT_RF_PRIORITY) - getUnitRealField(aHandle, UNIT_RF_PRIORITY)
|
|
50
|
+
if priorityDelta ~= 0 then
|
|
51
|
+
return priorityDelta < 0
|
|
52
|
+
end
|
|
53
|
+
local aTypeId = getUnitTypeId(aHandle)
|
|
54
|
+
local bTypeId = getUnitTypeId(bHandle)
|
|
55
|
+
local orderDelta = (isHeroUnitId(aTypeId) and getHandleId(aHandle) or aTypeId) - (isHeroUnitId(bTypeId) and getHandleId(bHandle) or bTypeId)
|
|
56
|
+
return (orderDelta ~= 0 and orderDelta or indexByLocalSelectedUnit[a] - indexByLocalSelectedUnit[b]) < 0
|
|
57
|
+
end
|
|
58
|
+
local mainSelectedUnitChangeEvent
|
|
59
|
+
local previousMainSelectedUnit
|
|
24
60
|
____exports.LocalClient = __TS__Class()
|
|
25
61
|
local LocalClient = ____exports.LocalClient
|
|
26
62
|
LocalClient.name = "LocalClient"
|
|
@@ -69,6 +105,52 @@ __TS__ObjectDefineProperty(
|
|
|
69
105
|
return Unit:of(getMouseFocusUnit())
|
|
70
106
|
end}
|
|
71
107
|
)
|
|
108
|
+
__TS__ObjectDefineProperty(
|
|
109
|
+
LocalClient,
|
|
110
|
+
"mainSelectedUnit",
|
|
111
|
+
{get = function(self)
|
|
112
|
+
Unit:getSelectionOf(Player["local"], localSelectedUnits)
|
|
113
|
+
for i = 1, #localSelectedUnits do
|
|
114
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = i
|
|
115
|
+
end
|
|
116
|
+
tableSort(localSelectedUnits, compareUnitsSelectionPriority)
|
|
117
|
+
local mainSelectedUnitIndex
|
|
118
|
+
if selectionButtons and #localSelectedUnits > 1 then
|
|
119
|
+
local maxButtonWidth = 0
|
|
120
|
+
for i = 0, #selectionButtons - 1 do
|
|
121
|
+
local width = selectionButtons[i + 1].width
|
|
122
|
+
if width > maxButtonWidth then
|
|
123
|
+
maxButtonWidth = width
|
|
124
|
+
mainSelectedUnitIndex = i
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
local mainSelectedUnit = localSelectedUnits[(mainSelectedUnitIndex or 0) + 1]
|
|
129
|
+
for i = 1, #localSelectedUnits do
|
|
130
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
|
|
131
|
+
localSelectedUnits[i] = nil
|
|
132
|
+
end
|
|
133
|
+
if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
|
|
134
|
+
local previousPreviousMainSelectedUnit = previousMainSelectedUnit
|
|
135
|
+
previousMainSelectedUnit = mainSelectedUnit
|
|
136
|
+
Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
|
|
137
|
+
end
|
|
138
|
+
return mainSelectedUnit
|
|
139
|
+
end}
|
|
140
|
+
)
|
|
141
|
+
__TS__ObjectDefineProperty(
|
|
142
|
+
LocalClient,
|
|
143
|
+
"mainSelectedUnitChangeEvent",
|
|
144
|
+
{get = function(self)
|
|
145
|
+
if mainSelectedUnitChangeEvent == nil then
|
|
146
|
+
mainSelectedUnitChangeEvent = __TS__New(Event)
|
|
147
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
148
|
+
local _ = ____exports.LocalClient.mainSelectedUnit
|
|
149
|
+
end)
|
|
150
|
+
end
|
|
151
|
+
return mainSelectedUnitChangeEvent
|
|
152
|
+
end}
|
|
153
|
+
)
|
|
72
154
|
LocalClient.onDisconnect = __TS__New(
|
|
73
155
|
TriggerEvent,
|
|
74
156
|
function(trigger)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class MineAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get activationDelay(): number[];
|
|
7
|
+
set activationDelay(activationDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
get invisibilityDelay(): number[];
|
|
9
|
+
set invisibilityDelay(invisibilityDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
10
|
+
}
|