warscript 0.0.1-dev.c15015e → 0.0.1-dev.c1eba7d
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 +4 -0
- package/core/types/frame.lua +71 -0
- 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/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +28 -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 +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.d.ts +14 -3
- package/engine/behaviour/ability.lua +79 -33
- package/engine/buff.d.ts +6 -1
- package/engine/buff.lua +29 -18
- package/engine/internal/ability.d.ts +16 -13
- package/engine/internal/ability.lua +82 -76
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/{unit+item.d.ts → unit/item.d.ts} +5 -4
- package/engine/internal/{unit+item.lua → unit/item.lua} +30 -8
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +20 -7
- package/engine/internal/unit.lua +143 -77
- 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/ability-type.lua +8 -12
- package/engine/object-data/entry/item-type.d.ts +14 -0
- package/engine/object-data/entry/item-type.lua +91 -0
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +9 -3
- package/engine/object-field/ability.lua +4 -1
- package/engine/object-field.d.ts +2 -2
- package/engine/object-field.lua +4 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/unit.d.ts +2 -1
- package/engine/unit.lua +2 -1
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/package.json +1 -1
- 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
|
@@ -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
|
|
@@ -7,14 +7,33 @@ local ____event = require("event")
|
|
|
7
7
|
local Event = ____event.Event
|
|
8
8
|
local ____timer = require("core.types.timer")
|
|
9
9
|
local Timer = ____timer.Timer
|
|
10
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
11
|
+
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
10
12
|
local autoAttackFinishEvent = __TS__New(Event)
|
|
11
13
|
rawset(Unit, "autoAttackFinishEvent", autoAttackFinishEvent)
|
|
12
14
|
local eventTimerByUnit = {}
|
|
13
|
-
local
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
local instantOrderIds = luaSetOf(
|
|
16
|
+
orderId("avatar"),
|
|
17
|
+
orderId("berserk"),
|
|
18
|
+
orderId("divineshield"),
|
|
19
|
+
orderId("immolation"),
|
|
20
|
+
orderId("moveslot0"),
|
|
21
|
+
orderId("moveslot1"),
|
|
22
|
+
orderId("moveslot2"),
|
|
23
|
+
orderId("moveslot3"),
|
|
24
|
+
orderId("moveslot4"),
|
|
25
|
+
orderId("moveslot5"),
|
|
26
|
+
orderId("unavatar"),
|
|
27
|
+
orderId("undivineshield"),
|
|
28
|
+
orderId("unimmolation")
|
|
29
|
+
)
|
|
30
|
+
local function reset(source, orderId)
|
|
31
|
+
if not (instantOrderIds[orderId] ~= nil) then
|
|
32
|
+
local eventTimer = eventTimerByUnit[source]
|
|
33
|
+
if eventTimer then
|
|
34
|
+
eventTimer:destroy()
|
|
35
|
+
eventTimerByUnit[source] = nil
|
|
36
|
+
end
|
|
18
37
|
end
|
|
19
38
|
end
|
|
20
39
|
Unit.onImmediateOrder:addListener(reset)
|
|
@@ -94,14 +94,19 @@ export declare class UnitWeapon {
|
|
|
94
94
|
set missileSpeed(missileSpeed: number);
|
|
95
95
|
}
|
|
96
96
|
declare const enum UnitPropertyKey {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
97
|
+
SYNC_ID = 100,
|
|
98
|
+
IS_PAUSED = 101,
|
|
99
|
+
STUN_COUNTER = 102,
|
|
100
|
+
DELAY_HEALTH_CHECKS_COUNTER = 103,
|
|
101
|
+
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 104,
|
|
102
|
+
PREVENT_DEATH_HEALTH_BONUS = 105,
|
|
103
|
+
IS_TEAM_GLOW_HIDDEN = 106
|
|
103
104
|
}
|
|
105
|
+
export type UnitSyncId = number & {
|
|
106
|
+
readonly __unitSyncId: unique symbol;
|
|
107
|
+
};
|
|
104
108
|
export declare class Unit extends Handle<junit> {
|
|
109
|
+
readonly syncId: UnitSyncId;
|
|
105
110
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
106
111
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
107
112
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
@@ -288,7 +293,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
288
293
|
static getInRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
289
294
|
static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
290
295
|
static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
|
|
291
|
-
static getSelectionOf(player: Player): Unit[];
|
|
296
|
+
static getSelectionOf(player: Player, target?: Unit[]): Unit[];
|
|
292
297
|
static readonly deathEvent: UnitTriggerEvent<[Unit]>;
|
|
293
298
|
static readonly onDecay: UnitTriggerEvent<[]>;
|
|
294
299
|
static readonly onResurrect: InitializingEvent<[Unit], void>;
|
|
@@ -327,6 +332,13 @@ export declare class Unit extends Handle<junit> {
|
|
|
327
332
|
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
328
333
|
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
329
334
|
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
335
|
+
static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
|
|
336
|
+
static get itemMoveOrderEvent(): Event<[
|
|
337
|
+
unit: Unit,
|
|
338
|
+
item: Item,
|
|
339
|
+
slotFrom: 0 | 1 | 2 | 3 | 4 | 5,
|
|
340
|
+
slotTo: 0 | 1 | 2 | 3 | 4 | 5
|
|
341
|
+
]>;
|
|
330
342
|
static get onCreate(): EventDispatcher<[Unit], [Unit]>;
|
|
331
343
|
static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
|
|
332
344
|
getField(field: junitintegerfield | junitrealfield): number;
|
|
@@ -337,5 +349,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
337
349
|
setField(field: junitbooleanfield, value: boolean): boolean;
|
|
338
350
|
setField(field: junitstringfield, value: string): boolean;
|
|
339
351
|
toString(): string;
|
|
352
|
+
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
340
353
|
}
|
|
341
354
|
export {};
|
package/engine/internal/unit.lua
CHANGED
|
@@ -51,6 +51,8 @@ local ____arrays = require("utility.arrays")
|
|
|
51
51
|
local forEach = ____arrays.forEach
|
|
52
52
|
local ____math = require("math")
|
|
53
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
54
56
|
local match = string.match
|
|
55
57
|
local ____tostring = _G.tostring
|
|
56
58
|
local setUnitAnimation = SetUnitAnimation
|
|
@@ -562,17 +564,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
564
|
____exports.Unit:of(unit)
|
|
563
565
|
)
|
|
564
566
|
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
567
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
568
|
local item = unitItemInSlot(unit, i)
|
|
578
569
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -630,15 +621,15 @@ for ____, player in ipairs(Player.all) do
|
|
|
630
621
|
dummies[player] = dummy
|
|
631
622
|
end
|
|
632
623
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
624
|
+
local counter = (unit[103] or 0) - 1
|
|
634
625
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
626
|
+
unit[103] = counter
|
|
636
627
|
return
|
|
637
628
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
629
|
+
unit[103] = nil
|
|
630
|
+
local healthBonus = unit[104]
|
|
640
631
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
632
|
+
unit[104] = nil
|
|
642
633
|
local handle = unit.handle
|
|
643
634
|
BlzSetUnitMaxHP(
|
|
644
635
|
handle,
|
|
@@ -646,12 +637,17 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
637
|
)
|
|
647
638
|
end
|
|
648
639
|
end
|
|
640
|
+
local nextSyncId = 1
|
|
641
|
+
local unitBySyncId = setmetatable({}, {__mode = "k"})
|
|
649
642
|
____exports.Unit = __TS__Class()
|
|
650
643
|
local Unit = ____exports.Unit
|
|
651
644
|
Unit.name = "Unit"
|
|
652
645
|
__TS__ClassExtends(Unit, Handle)
|
|
653
646
|
function Unit.prototype.____constructor(self, handle)
|
|
654
647
|
Handle.prototype.____constructor(self, handle)
|
|
648
|
+
local ____nextSyncId_0 = nextSyncId
|
|
649
|
+
nextSyncId = ____nextSyncId_0 + 1
|
|
650
|
+
self.syncId = ____nextSyncId_0
|
|
655
651
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
652
|
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
657
653
|
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
@@ -664,6 +660,7 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
664
660
|
fourCC("Amrf")
|
|
665
661
|
))
|
|
666
662
|
end
|
|
663
|
+
unitBySyncId[self.syncId] = self
|
|
667
664
|
local ____ = self.abilities
|
|
668
665
|
end
|
|
669
666
|
function Unit.prototype.getEvent(self, event, collector)
|
|
@@ -749,8 +746,8 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
746
|
end}
|
|
750
747
|
end
|
|
751
748
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
749
|
+
local ____combatClassification_1 = combatClassification
|
|
750
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_1 == ____combatClassification_1
|
|
754
751
|
end
|
|
755
752
|
function Unit.prototype.addClassification(self, classification)
|
|
756
753
|
return unitAddType(self.handle, classification)
|
|
@@ -768,13 +765,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
765
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
766
|
end
|
|
770
767
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
768
|
+
local ____temp_2
|
|
772
769
|
if type(x) == "number" then
|
|
773
|
-
|
|
770
|
+
____temp_2 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
771
|
else
|
|
775
|
-
|
|
772
|
+
____temp_2 = isUnitInRange(self.handle, x.handle, y)
|
|
776
773
|
end
|
|
777
|
-
return
|
|
774
|
+
return ____temp_2
|
|
778
775
|
end
|
|
779
776
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
777
|
return isUnitAlly(
|
|
@@ -801,7 +798,7 @@ function Unit.prototype.queueAnimation(self, animation)
|
|
|
801
798
|
queueUnitAnimation(self.handle, animation)
|
|
802
799
|
end
|
|
803
800
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
801
|
+
self[103] = (self[103] or 0) + 1
|
|
805
802
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
803
|
end
|
|
807
804
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -818,14 +815,14 @@ function Unit.prototype.kill(self)
|
|
|
818
815
|
killUnit(self.handle)
|
|
819
816
|
end
|
|
820
817
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
-
local
|
|
822
|
-
local
|
|
823
|
-
local
|
|
824
|
-
if
|
|
825
|
-
|
|
818
|
+
local ____ReviveHero_5 = ReviveHero
|
|
819
|
+
local ____array_4 = __TS__SparseArrayNew(self.handle, x, y)
|
|
820
|
+
local ____doEffect_3 = doEffect
|
|
821
|
+
if ____doEffect_3 == nil then
|
|
822
|
+
____doEffect_3 = false
|
|
826
823
|
end
|
|
827
|
-
__TS__SparseArrayPush(
|
|
828
|
-
|
|
824
|
+
__TS__SparseArrayPush(____array_4, ____doEffect_3)
|
|
825
|
+
____ReviveHero_5(__TS__SparseArraySpread(____array_4))
|
|
829
826
|
end
|
|
830
827
|
function Unit.prototype.healTarget(self, target, amount)
|
|
831
828
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -934,8 +931,15 @@ function Unit.prototype.interruptAttack(self)
|
|
|
934
931
|
unitInterruptAttack(self.handle)
|
|
935
932
|
end
|
|
936
933
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
937
|
-
|
|
938
|
-
unitDisableAbility(
|
|
934
|
+
local handle = self.handle
|
|
935
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
936
|
+
Timer:run(
|
|
937
|
+
unitDisableAbility,
|
|
938
|
+
handle,
|
|
939
|
+
abilityId,
|
|
940
|
+
false,
|
|
941
|
+
false
|
|
942
|
+
)
|
|
939
943
|
end
|
|
940
944
|
function Unit.prototype.getDistanceTo(self, target)
|
|
941
945
|
local handle = self.handle
|
|
@@ -995,18 +999,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
995
999
|
self:decrementStunCounter()
|
|
996
1000
|
end
|
|
997
1001
|
function Unit.prototype.incrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1002
|
+
local stunCounter = self[102] or 0
|
|
1003
|
+
if not self[101] or stunCounter >= 0 then
|
|
1000
1004
|
BlzPauseUnitEx(self.handle, true)
|
|
1001
1005
|
end
|
|
1002
|
-
self[
|
|
1006
|
+
self[102] = stunCounter + 1
|
|
1003
1007
|
end
|
|
1004
1008
|
function Unit.prototype.decrementStunCounter(self)
|
|
1005
|
-
local stunCounter = self[
|
|
1006
|
-
if not self[
|
|
1009
|
+
local stunCounter = self[102] or 0
|
|
1010
|
+
if not self[101] or stunCounter >= 1 then
|
|
1007
1011
|
BlzPauseUnitEx(self.handle, false)
|
|
1008
1012
|
end
|
|
1009
|
-
self[
|
|
1013
|
+
self[102] = stunCounter - 1
|
|
1010
1014
|
end
|
|
1011
1015
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1012
1016
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1108,8 +1112,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1108
1112
|
)
|
|
1109
1113
|
return targetCollection
|
|
1110
1114
|
end
|
|
1111
|
-
function Unit.getSelectionOf(self, player)
|
|
1112
|
-
|
|
1115
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1116
|
+
if target == nil then
|
|
1117
|
+
target = {}
|
|
1118
|
+
end
|
|
1119
|
+
targetCollection = target
|
|
1113
1120
|
targetCollectionNextIndex = 1
|
|
1114
1121
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1115
1122
|
return targetCollection
|
|
@@ -1131,6 +1138,9 @@ end
|
|
|
1131
1138
|
function Unit.prototype.__tostring(self)
|
|
1132
1139
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1133
1140
|
end
|
|
1141
|
+
function Unit.getBySyncId(self, syncId)
|
|
1142
|
+
return unitBySyncId[syncId]
|
|
1143
|
+
end
|
|
1134
1144
|
__TS__SetDescriptor(
|
|
1135
1145
|
Unit.prototype,
|
|
1136
1146
|
"_deltas",
|
|
@@ -1388,17 +1398,17 @@ __TS__SetDescriptor(
|
|
|
1388
1398
|
"isTeamGlowVisible",
|
|
1389
1399
|
{
|
|
1390
1400
|
get = function(self)
|
|
1391
|
-
return not self[
|
|
1401
|
+
return not self[106]
|
|
1392
1402
|
end,
|
|
1393
1403
|
set = function(self, isTeamGlowVisible)
|
|
1394
1404
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1395
|
-
local
|
|
1405
|
+
local ____temp_6
|
|
1396
1406
|
if not isTeamGlowVisible then
|
|
1397
|
-
|
|
1407
|
+
____temp_6 = true
|
|
1398
1408
|
else
|
|
1399
|
-
|
|
1409
|
+
____temp_6 = nil
|
|
1400
1410
|
end
|
|
1401
|
-
self[
|
|
1411
|
+
self[106] = ____temp_6
|
|
1402
1412
|
end
|
|
1403
1413
|
},
|
|
1404
1414
|
true
|
|
@@ -1408,7 +1418,7 @@ __TS__SetDescriptor(
|
|
|
1408
1418
|
"color",
|
|
1409
1419
|
{set = function(self, color)
|
|
1410
1420
|
setUnitColor(self.handle, color.handle)
|
|
1411
|
-
if self[
|
|
1421
|
+
if self[106] then
|
|
1412
1422
|
showUnitTeamGlow(self.handle, false)
|
|
1413
1423
|
end
|
|
1414
1424
|
end},
|
|
@@ -1432,14 +1442,14 @@ __TS__SetDescriptor(
|
|
|
1432
1442
|
"maxHealth",
|
|
1433
1443
|
{
|
|
1434
1444
|
get = function(self)
|
|
1435
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1445
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1436
1446
|
end,
|
|
1437
1447
|
set = function(self, maxHealth)
|
|
1438
|
-
if maxHealth < 1 and self[
|
|
1439
|
-
self[
|
|
1448
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1449
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1440
1450
|
maxHealth = 1
|
|
1441
1451
|
end
|
|
1442
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1452
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1443
1453
|
end
|
|
1444
1454
|
},
|
|
1445
1455
|
true
|
|
@@ -1481,10 +1491,10 @@ __TS__SetDescriptor(
|
|
|
1481
1491
|
"health",
|
|
1482
1492
|
{
|
|
1483
1493
|
get = function(self)
|
|
1484
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1494
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1485
1495
|
end,
|
|
1486
1496
|
set = function(self, health)
|
|
1487
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1497
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1488
1498
|
end
|
|
1489
1499
|
},
|
|
1490
1500
|
true
|
|
@@ -1695,17 +1705,17 @@ __TS__SetDescriptor(
|
|
|
1695
1705
|
set = function(self, isPaused)
|
|
1696
1706
|
local handle = self.handle
|
|
1697
1707
|
if isPaused and not IsUnitPaused(handle) then
|
|
1698
|
-
self[
|
|
1699
|
-
for _ = self[
|
|
1708
|
+
self[101] = true
|
|
1709
|
+
for _ = self[102] or 0, -1 do
|
|
1700
1710
|
BlzPauseUnitEx(handle, true)
|
|
1701
1711
|
end
|
|
1702
1712
|
PauseUnit(handle, true)
|
|
1703
1713
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1704
1714
|
PauseUnit(handle, false)
|
|
1705
|
-
for _ = self[
|
|
1715
|
+
for _ = self[102] or 0, -1 do
|
|
1706
1716
|
BlzPauseUnitEx(handle, false)
|
|
1707
1717
|
end
|
|
1708
|
-
self[
|
|
1718
|
+
self[101] = nil
|
|
1709
1719
|
end
|
|
1710
1720
|
end
|
|
1711
1721
|
},
|
|
@@ -2124,25 +2134,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
|
|
|
2124
2134
|
InitializingEvent,
|
|
2125
2135
|
function(event)
|
|
2126
2136
|
local function listener(unit, id)
|
|
2127
|
-
local
|
|
2137
|
+
local ____GetSpellTargetUnit_result_9
|
|
2128
2138
|
if GetSpellTargetUnit() then
|
|
2129
|
-
|
|
2139
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2130
2140
|
else
|
|
2131
|
-
local
|
|
2141
|
+
local ____GetSpellTargetItem_result_8
|
|
2132
2142
|
if GetSpellTargetItem() then
|
|
2133
|
-
|
|
2143
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2134
2144
|
else
|
|
2135
|
-
local
|
|
2145
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2136
2146
|
if GetSpellTargetDestructable() then
|
|
2137
|
-
|
|
2147
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2138
2148
|
else
|
|
2139
|
-
|
|
2149
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2140
2150
|
end
|
|
2141
|
-
|
|
2151
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2142
2152
|
end
|
|
2143
|
-
|
|
2153
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2144
2154
|
end
|
|
2145
|
-
local target =
|
|
2155
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2146
2156
|
if target then
|
|
2147
2157
|
invoke(event, unit, id, target)
|
|
2148
2158
|
end
|
|
@@ -2314,10 +2324,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2314
2324
|
____exports.UnitTriggerEvent,
|
|
2315
2325
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2316
2326
|
function()
|
|
2317
|
-
local
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2327
|
+
local handle = getOrderedUnit()
|
|
2328
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2329
|
+
local unit = ____exports.Unit:of(handle)
|
|
2330
|
+
if unit.state == 1 then
|
|
2331
|
+
return unit, getIssuedOrderId()
|
|
2332
|
+
end
|
|
2321
2333
|
end
|
|
2322
2334
|
return IgnoreEvent
|
|
2323
2335
|
end
|
|
@@ -2469,7 +2481,7 @@ Unit.onDamage = __TS__New(
|
|
|
2469
2481
|
invoke(event, source, target, evData)
|
|
2470
2482
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2471
2483
|
local bonusHealth = math.ceil(evData.amount)
|
|
2472
|
-
target[
|
|
2484
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2473
2485
|
BlzSetUnitMaxHP(
|
|
2474
2486
|
target.handle,
|
|
2475
2487
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2483,7 +2495,7 @@ Unit.onDamage = __TS__New(
|
|
|
2483
2495
|
evData[0],
|
|
2484
2496
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2485
2497
|
)
|
|
2486
|
-
target[
|
|
2498
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2487
2499
|
SetWidgetLife(
|
|
2488
2500
|
target.handle,
|
|
2489
2501
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2508,8 +2520,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2508
2520
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2509
2521
|
function()
|
|
2510
2522
|
local unit = getTriggerUnit()
|
|
2511
|
-
|
|
2512
|
-
|
|
2523
|
+
local item = getManipulatedItem()
|
|
2524
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2525
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2513
2526
|
end
|
|
2514
2527
|
return IgnoreEvent
|
|
2515
2528
|
end
|
|
@@ -2519,8 +2532,9 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2519
2532
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2520
2533
|
function()
|
|
2521
2534
|
local unit = getTriggerUnit()
|
|
2522
|
-
|
|
2523
|
-
|
|
2535
|
+
local item = getManipulatedItem()
|
|
2536
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2537
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2524
2538
|
end
|
|
2525
2539
|
return IgnoreEvent
|
|
2526
2540
|
end
|
|
@@ -2528,13 +2542,65 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2528
2542
|
Unit.itemUsedEvent = __TS__New(
|
|
2529
2543
|
____exports.UnitTriggerEvent,
|
|
2530
2544
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2531
|
-
function()
|
|
2545
|
+
function()
|
|
2546
|
+
local unit = getTriggerUnit()
|
|
2547
|
+
local item = getManipulatedItem()
|
|
2548
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2549
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2550
|
+
end
|
|
2551
|
+
return IgnoreEvent
|
|
2552
|
+
end
|
|
2532
2553
|
)
|
|
2533
2554
|
Unit.itemStackedEvent = __TS__New(
|
|
2534
2555
|
____exports.UnitTriggerEvent,
|
|
2535
2556
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2536
2557
|
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2537
2558
|
)
|
|
2559
|
+
__TS__ObjectDefineProperty(
|
|
2560
|
+
Unit,
|
|
2561
|
+
"itemUseOrderEvent",
|
|
2562
|
+
{get = function(self)
|
|
2563
|
+
local event = __TS__New(Event)
|
|
2564
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2565
|
+
local slot = order - orderId("useslot0")
|
|
2566
|
+
local function listener(unit)
|
|
2567
|
+
local item = unit.items[slot + 1]
|
|
2568
|
+
if item ~= nil then
|
|
2569
|
+
invoke(event, unit, item)
|
|
2570
|
+
end
|
|
2571
|
+
end
|
|
2572
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2573
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2574
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2575
|
+
end
|
|
2576
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2577
|
+
return event
|
|
2578
|
+
end}
|
|
2579
|
+
)
|
|
2580
|
+
__TS__ObjectDefineProperty(
|
|
2581
|
+
Unit,
|
|
2582
|
+
"itemMoveOrderEvent",
|
|
2583
|
+
{get = function(self)
|
|
2584
|
+
local event = __TS__New(Event)
|
|
2585
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2586
|
+
local slotTo = order - orderId("moveslot0")
|
|
2587
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2588
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2589
|
+
if slotFrom ~= nil then
|
|
2590
|
+
invoke(
|
|
2591
|
+
event,
|
|
2592
|
+
unit,
|
|
2593
|
+
item,
|
|
2594
|
+
slotFrom,
|
|
2595
|
+
slotTo
|
|
2596
|
+
)
|
|
2597
|
+
end
|
|
2598
|
+
end)
|
|
2599
|
+
end
|
|
2600
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2601
|
+
return event
|
|
2602
|
+
end}
|
|
2603
|
+
)
|
|
2538
2604
|
__TS__ObjectDefineProperty(
|
|
2539
2605
|
Unit,
|
|
2540
2606
|
"onCreate",
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
2
|
local getUnitAbility = BlzGetUnitAbility
|
|
3
3
|
local unitAddAbility = UnitAddAbility
|
|
4
|
+
local unitInventorySize = UnitInventorySize
|
|
5
|
+
local unitItemInSlot = UnitItemInSlot
|
|
4
6
|
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
5
7
|
---
|
|
6
8
|
-- @internal For use by internal systems only.
|
|
@@ -10,4 +12,14 @@ ____exports.addInternalAbility = function(unit, abilityTypeId)
|
|
|
10
12
|
end
|
|
11
13
|
return getUnitAbility(unit, abilityTypeId)
|
|
12
14
|
end
|
|
15
|
+
---
|
|
16
|
+
-- @internal For use by internal systems only.
|
|
17
|
+
____exports.findUnitItemSlot = function(unit, item)
|
|
18
|
+
for slot = 0, unitInventorySize(unit) - 1 do
|
|
19
|
+
if item == unitItemInSlot(unit, slot) then
|
|
20
|
+
return slot
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
return nil
|
|
24
|
+
end
|
|
13
25
|
return ____exports
|
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
|
}
|