warscript 0.0.1-dev.7a744ff → 0.0.1-dev.7aaa070
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/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/core/types/effect.d.ts +13 -3
- package/core/types/effect.lua +116 -17
- package/core/types/frame.d.ts +8 -0
- package/core/types/frame.lua +93 -1
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -0
- package/engine/behavior.d.ts +6 -6
- 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/damage.d.ts +33 -11
- package/engine/behaviour/ability/damage.lua +89 -31
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +29 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -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/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -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 +66 -19
- package/engine/buff.lua +268 -80
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +16 -13
- package/engine/internal/ability.lua +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+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +26 -11
- package/engine/internal/unit.lua +136 -76
- 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/event.d.ts +2 -2
- package/event.lua +9 -5
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +7 -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/buff.lua +1 -1
- package/package.json +2 -2
- 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/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
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
|
@@ -40,7 +40,7 @@ ItemAbility.onCreate:addListener(
|
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
)
|
|
43
|
-
Unit.
|
|
43
|
+
Unit.itemPickedUpEvent:addListener(
|
|
44
44
|
0,
|
|
45
45
|
function(unit, item)
|
|
46
46
|
for ____, ability in ipairs(item.abilities) do
|
|
@@ -48,7 +48,7 @@ Unit.onItemPickup:addListener(
|
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
)
|
|
51
|
-
Unit.
|
|
51
|
+
Unit.itemDroppedEvent:addListener(
|
|
52
52
|
4,
|
|
53
53
|
function(unit, item)
|
|
54
54
|
for ____, ability in ipairs(item.abilities) do
|
|
@@ -6,9 +6,8 @@ local ____unit = require("engine.internal.unit")
|
|
|
6
6
|
local Unit = ____unit.Unit
|
|
7
7
|
local ____event = require("event")
|
|
8
8
|
local Event = ____event.Event
|
|
9
|
-
local
|
|
10
|
-
local
|
|
11
|
-
local boundRegion = ____mapbounds.boundRegion
|
|
9
|
+
local ____game_2Dmap = require("engine.game-map")
|
|
10
|
+
local GameMap = ____game_2Dmap.GameMap
|
|
12
11
|
local eventInvoke = Event.invoke
|
|
13
12
|
local tableRemove = table.remove
|
|
14
13
|
local ____assert = _G.assert
|
|
@@ -58,8 +57,8 @@ triggerAddCondition(
|
|
|
58
57
|
deboard(unit)
|
|
59
58
|
end
|
|
60
59
|
if not unitAlive(handle) then
|
|
61
|
-
unit.x =
|
|
62
|
-
unit.y =
|
|
60
|
+
unit.x = GameMap.worldBoundsRect.maxX
|
|
61
|
+
unit.y = GameMap.worldBoundsRect.maxY
|
|
63
62
|
end
|
|
64
63
|
local transport = Unit:of(getTransportUnit())
|
|
65
64
|
transportByUnit[unit] = transport
|
|
@@ -68,11 +67,6 @@ triggerAddCondition(
|
|
|
68
67
|
eventInvoke(onBoardEvent, unit, transport)
|
|
69
68
|
end)
|
|
70
69
|
)
|
|
71
|
-
boundRegion.onUnitEnter:addListener(function(unit)
|
|
72
|
-
if transportByUnit[unit] ~= nil and not isUnitLoaded(unit.handle) then
|
|
73
|
-
deboard(unit)
|
|
74
|
-
end
|
|
75
|
-
end)
|
|
76
70
|
Unit.deathEvent:addListener(function(unit)
|
|
77
71
|
if transportByUnit[unit] ~= nil then
|
|
78
72
|
deboard(unit)
|
|
@@ -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)
|
|
@@ -42,6 +42,7 @@ export interface DamagingEvent {
|
|
|
42
42
|
damageType: jdamagetype;
|
|
43
43
|
weaponType: jweapontype;
|
|
44
44
|
readonly isAttack: boolean;
|
|
45
|
+
readonly originalAmount: number;
|
|
45
46
|
}
|
|
46
47
|
export type DamageEvent = DamagingEvent & {
|
|
47
48
|
preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
|
|
@@ -93,14 +94,19 @@ export declare class UnitWeapon {
|
|
|
93
94
|
set missileSpeed(missileSpeed: number);
|
|
94
95
|
}
|
|
95
96
|
declare const enum UnitPropertyKey {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
|
102
104
|
}
|
|
105
|
+
export type UnitSyncId = number & {
|
|
106
|
+
readonly __unitSyncId: unique symbol;
|
|
107
|
+
};
|
|
103
108
|
export declare class Unit extends Handle<junit> {
|
|
109
|
+
readonly syncId: UnitSyncId;
|
|
104
110
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
105
111
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
106
112
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
@@ -227,7 +233,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
227
233
|
isSelected(player: Player): boolean;
|
|
228
234
|
explode(): void;
|
|
229
235
|
kill(): void;
|
|
230
|
-
revive(
|
|
236
|
+
revive(x: number, y: number, doEffect?: boolean): void;
|
|
231
237
|
healTarget(target: Widget, amount: number): void;
|
|
232
238
|
useItem(item: Item): boolean;
|
|
233
239
|
issueImmediateOrder(order: number): boolean;
|
|
@@ -287,7 +293,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
287
293
|
static getInRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
288
294
|
static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
289
295
|
static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
|
|
290
|
-
static getSelectionOf(player: Player): Unit[];
|
|
296
|
+
static getSelectionOf(player: Player, target?: Unit[]): Unit[];
|
|
291
297
|
static readonly deathEvent: UnitTriggerEvent<[Unit]>;
|
|
292
298
|
static readonly onDecay: UnitTriggerEvent<[]>;
|
|
293
299
|
static readonly onResurrect: InitializingEvent<[Unit], void>;
|
|
@@ -322,9 +328,17 @@ export declare class Unit extends Handle<junit> {
|
|
|
322
328
|
static readonly autoAttackStartEvent: UnitTriggerEvent<[Unit]>;
|
|
323
329
|
static readonly onDamaging: Event<[source: Unit | undefined, target: Unit, event: DamagingEvent]>;
|
|
324
330
|
static readonly onDamage: InitializingEvent<[source: Unit | undefined, target: Unit, event: DamageEvent], jtrigger>;
|
|
325
|
-
static
|
|
326
|
-
static
|
|
327
|
-
static
|
|
331
|
+
static itemDroppedEvent: UnitTriggerEvent<[Item]>;
|
|
332
|
+
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
333
|
+
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
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
|
+
]>;
|
|
328
342
|
static get onCreate(): EventDispatcher<[Unit], [Unit]>;
|
|
329
343
|
static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
|
|
330
344
|
getField(field: junitintegerfield | junitrealfield): number;
|
|
@@ -335,5 +349,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
335
349
|
setField(field: junitbooleanfield, value: boolean): boolean;
|
|
336
350
|
setField(field: junitstringfield, value: string): boolean;
|
|
337
351
|
toString(): string;
|
|
352
|
+
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
338
353
|
}
|
|
339
354
|
export {};
|
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
|
|
@@ -988,18 +990,18 @@ function Unit.prototype.unpauseEx(self)
|
|
|
988
990
|
self:decrementStunCounter()
|
|
989
991
|
end
|
|
990
992
|
function Unit.prototype.incrementStunCounter(self)
|
|
991
|
-
local stunCounter = self[
|
|
992
|
-
if not self[
|
|
993
|
+
local stunCounter = self[102] or 0
|
|
994
|
+
if not self[101] or stunCounter >= 0 then
|
|
993
995
|
BlzPauseUnitEx(self.handle, true)
|
|
994
996
|
end
|
|
995
|
-
self[
|
|
997
|
+
self[102] = stunCounter + 1
|
|
996
998
|
end
|
|
997
999
|
function Unit.prototype.decrementStunCounter(self)
|
|
998
|
-
local stunCounter = self[
|
|
999
|
-
if not self[
|
|
1000
|
+
local stunCounter = self[102] or 0
|
|
1001
|
+
if not self[101] or stunCounter >= 1 then
|
|
1000
1002
|
BlzPauseUnitEx(self.handle, false)
|
|
1001
1003
|
end
|
|
1002
|
-
self[
|
|
1004
|
+
self[102] = stunCounter - 1
|
|
1003
1005
|
end
|
|
1004
1006
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1005
1007
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1101,8 +1103,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1101
1103
|
)
|
|
1102
1104
|
return targetCollection
|
|
1103
1105
|
end
|
|
1104
|
-
function Unit.getSelectionOf(self, player)
|
|
1105
|
-
|
|
1106
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1107
|
+
if target == nil then
|
|
1108
|
+
target = {}
|
|
1109
|
+
end
|
|
1110
|
+
targetCollection = target
|
|
1106
1111
|
targetCollectionNextIndex = 1
|
|
1107
1112
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1108
1113
|
return targetCollection
|
|
@@ -1124,6 +1129,9 @@ end
|
|
|
1124
1129
|
function Unit.prototype.__tostring(self)
|
|
1125
1130
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1126
1131
|
end
|
|
1132
|
+
function Unit.getBySyncId(self, syncId)
|
|
1133
|
+
return unitBySyncId[syncId]
|
|
1134
|
+
end
|
|
1127
1135
|
__TS__SetDescriptor(
|
|
1128
1136
|
Unit.prototype,
|
|
1129
1137
|
"_deltas",
|
|
@@ -1381,17 +1389,17 @@ __TS__SetDescriptor(
|
|
|
1381
1389
|
"isTeamGlowVisible",
|
|
1382
1390
|
{
|
|
1383
1391
|
get = function(self)
|
|
1384
|
-
return not self[
|
|
1392
|
+
return not self[106]
|
|
1385
1393
|
end,
|
|
1386
1394
|
set = function(self, isTeamGlowVisible)
|
|
1387
1395
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1388
|
-
local
|
|
1396
|
+
local ____temp_6
|
|
1389
1397
|
if not isTeamGlowVisible then
|
|
1390
|
-
|
|
1398
|
+
____temp_6 = true
|
|
1391
1399
|
else
|
|
1392
|
-
|
|
1400
|
+
____temp_6 = nil
|
|
1393
1401
|
end
|
|
1394
|
-
self[
|
|
1402
|
+
self[106] = ____temp_6
|
|
1395
1403
|
end
|
|
1396
1404
|
},
|
|
1397
1405
|
true
|
|
@@ -1401,7 +1409,7 @@ __TS__SetDescriptor(
|
|
|
1401
1409
|
"color",
|
|
1402
1410
|
{set = function(self, color)
|
|
1403
1411
|
setUnitColor(self.handle, color.handle)
|
|
1404
|
-
if self[
|
|
1412
|
+
if self[106] then
|
|
1405
1413
|
showUnitTeamGlow(self.handle, false)
|
|
1406
1414
|
end
|
|
1407
1415
|
end},
|
|
@@ -1425,14 +1433,14 @@ __TS__SetDescriptor(
|
|
|
1425
1433
|
"maxHealth",
|
|
1426
1434
|
{
|
|
1427
1435
|
get = function(self)
|
|
1428
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1436
|
+
return BlzGetUnitMaxHP(self.handle) - (self[104] or 0) - (self[105] or 0)
|
|
1429
1437
|
end,
|
|
1430
1438
|
set = function(self, maxHealth)
|
|
1431
|
-
if maxHealth < 1 and self[
|
|
1432
|
-
self[
|
|
1439
|
+
if maxHealth < 1 and self[103] ~= nil then
|
|
1440
|
+
self[104] = (self[104] or 0) + (1 - maxHealth)
|
|
1433
1441
|
maxHealth = 1
|
|
1434
1442
|
end
|
|
1435
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1443
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[105] or 0))
|
|
1436
1444
|
end
|
|
1437
1445
|
},
|
|
1438
1446
|
true
|
|
@@ -1474,10 +1482,10 @@ __TS__SetDescriptor(
|
|
|
1474
1482
|
"health",
|
|
1475
1483
|
{
|
|
1476
1484
|
get = function(self)
|
|
1477
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1485
|
+
return GetWidgetLife(self.handle) - (self[105] or 0)
|
|
1478
1486
|
end,
|
|
1479
1487
|
set = function(self, health)
|
|
1480
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1488
|
+
SetWidgetLife(self.handle, health + (self[105] or 0))
|
|
1481
1489
|
end
|
|
1482
1490
|
},
|
|
1483
1491
|
true
|
|
@@ -1688,17 +1696,17 @@ __TS__SetDescriptor(
|
|
|
1688
1696
|
set = function(self, isPaused)
|
|
1689
1697
|
local handle = self.handle
|
|
1690
1698
|
if isPaused and not IsUnitPaused(handle) then
|
|
1691
|
-
self[
|
|
1692
|
-
for _ = self[
|
|
1699
|
+
self[101] = true
|
|
1700
|
+
for _ = self[102] or 0, -1 do
|
|
1693
1701
|
BlzPauseUnitEx(handle, true)
|
|
1694
1702
|
end
|
|
1695
1703
|
PauseUnit(handle, true)
|
|
1696
1704
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1697
1705
|
PauseUnit(handle, false)
|
|
1698
|
-
for _ = self[
|
|
1706
|
+
for _ = self[102] or 0, -1 do
|
|
1699
1707
|
BlzPauseUnitEx(handle, false)
|
|
1700
1708
|
end
|
|
1701
|
-
self[
|
|
1709
|
+
self[101] = nil
|
|
1702
1710
|
end
|
|
1703
1711
|
end
|
|
1704
1712
|
},
|
|
@@ -2055,7 +2063,6 @@ Unit.onDecay = __TS__New(
|
|
|
2055
2063
|
Unit.onResurrect = __TS__New(
|
|
2056
2064
|
InitializingEvent,
|
|
2057
2065
|
function(event)
|
|
2058
|
-
local invoke = Event.invoke
|
|
2059
2066
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2060
2067
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2061
2068
|
dead[unit] = true
|
|
@@ -2071,10 +2078,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2071
2078
|
Unit.morphEvent = __TS__New(
|
|
2072
2079
|
InitializingEvent,
|
|
2073
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
|
|
2074
2087
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2075
2088
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2076
|
-
|
|
2077
|
-
Timer:run(Event.invoke, event, unit)
|
|
2089
|
+
Timer:run(ifNotLeft, unit)
|
|
2078
2090
|
end
|
|
2079
2091
|
end)
|
|
2080
2092
|
end
|
|
@@ -2112,27 +2124,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2112
2124
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2113
2125
|
InitializingEvent,
|
|
2114
2126
|
function(event)
|
|
2115
|
-
local invoke = Event.invoke
|
|
2116
2127
|
local function listener(unit, id)
|
|
2117
|
-
local
|
|
2128
|
+
local ____GetSpellTargetUnit_result_9
|
|
2118
2129
|
if GetSpellTargetUnit() then
|
|
2119
|
-
|
|
2130
|
+
____GetSpellTargetUnit_result_9 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2120
2131
|
else
|
|
2121
|
-
local
|
|
2132
|
+
local ____GetSpellTargetItem_result_8
|
|
2122
2133
|
if GetSpellTargetItem() then
|
|
2123
|
-
|
|
2134
|
+
____GetSpellTargetItem_result_8 = Item:of(GetSpellTargetItem())
|
|
2124
2135
|
else
|
|
2125
|
-
local
|
|
2136
|
+
local ____GetSpellTargetDestructable_result_7
|
|
2126
2137
|
if GetSpellTargetDestructable() then
|
|
2127
|
-
|
|
2138
|
+
____GetSpellTargetDestructable_result_7 = Destructable:of(GetSpellTargetDestructable())
|
|
2128
2139
|
else
|
|
2129
|
-
|
|
2140
|
+
____GetSpellTargetDestructable_result_7 = nil
|
|
2130
2141
|
end
|
|
2131
|
-
|
|
2142
|
+
____GetSpellTargetItem_result_8 = ____GetSpellTargetDestructable_result_7
|
|
2132
2143
|
end
|
|
2133
|
-
|
|
2144
|
+
____GetSpellTargetUnit_result_9 = ____GetSpellTargetItem_result_8
|
|
2134
2145
|
end
|
|
2135
|
-
local target =
|
|
2146
|
+
local target = ____GetSpellTargetUnit_result_9
|
|
2136
2147
|
if target then
|
|
2137
2148
|
invoke(event, unit, id, target)
|
|
2138
2149
|
end
|
|
@@ -2329,7 +2340,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2329
2340
|
)
|
|
2330
2341
|
Unit.onDamaging = (function()
|
|
2331
2342
|
local event = __TS__New(Event)
|
|
2332
|
-
local invoke = Event.invoke
|
|
2333
2343
|
local trigger = CreateTrigger()
|
|
2334
2344
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2335
2345
|
TriggerAddCondition(
|
|
@@ -2428,7 +2438,6 @@ end)()
|
|
|
2428
2438
|
Unit.onDamage = __TS__New(
|
|
2429
2439
|
InitializingEvent,
|
|
2430
2440
|
function(event)
|
|
2431
|
-
local invoke = Event.invoke
|
|
2432
2441
|
local trigger = CreateTrigger()
|
|
2433
2442
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2434
2443
|
TriggerAddCondition(
|
|
@@ -2444,6 +2453,7 @@ Unit.onDamage = __TS__New(
|
|
|
2444
2453
|
damageType = BlzGetEventDamageType(),
|
|
2445
2454
|
weaponType = BlzGetEventWeaponType(),
|
|
2446
2455
|
isAttack = BlzGetEventIsAttack(),
|
|
2456
|
+
originalAmount = GetEventDamage(),
|
|
2447
2457
|
preventDeath = damageEventPreventDeath
|
|
2448
2458
|
}
|
|
2449
2459
|
local evData = setmetatable(
|
|
@@ -2460,7 +2470,7 @@ Unit.onDamage = __TS__New(
|
|
|
2460
2470
|
invoke(event, source, target, evData)
|
|
2461
2471
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2462
2472
|
local bonusHealth = math.ceil(evData.amount)
|
|
2463
|
-
target[
|
|
2473
|
+
target[105] = (target[105] or 0) + bonusHealth
|
|
2464
2474
|
BlzSetUnitMaxHP(
|
|
2465
2475
|
target.handle,
|
|
2466
2476
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2474,7 +2484,7 @@ Unit.onDamage = __TS__New(
|
|
|
2474
2484
|
evData[0],
|
|
2475
2485
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2476
2486
|
)
|
|
2477
|
-
target[
|
|
2487
|
+
target[105] = (target[105] or 0) - bonusHealth
|
|
2478
2488
|
SetWidgetLife(
|
|
2479
2489
|
target.handle,
|
|
2480
2490
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2494,7 +2504,7 @@ Unit.onDamage = __TS__New(
|
|
|
2494
2504
|
DestroyTrigger(trigger)
|
|
2495
2505
|
end
|
|
2496
2506
|
)
|
|
2497
|
-
Unit.
|
|
2507
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2498
2508
|
____exports.UnitTriggerEvent,
|
|
2499
2509
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2500
2510
|
function()
|
|
@@ -2505,7 +2515,7 @@ Unit.onItemDrop = __TS__New(
|
|
|
2505
2515
|
return IgnoreEvent
|
|
2506
2516
|
end
|
|
2507
2517
|
)
|
|
2508
|
-
Unit.
|
|
2518
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2509
2519
|
____exports.UnitTriggerEvent,
|
|
2510
2520
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2511
2521
|
function()
|
|
@@ -2516,10 +2526,60 @@ Unit.onItemPickup = __TS__New(
|
|
|
2516
2526
|
return IgnoreEvent
|
|
2517
2527
|
end
|
|
2518
2528
|
)
|
|
2519
|
-
Unit.
|
|
2529
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2520
2530
|
____exports.UnitTriggerEvent,
|
|
2521
2531
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2522
|
-
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
|
+
"itemUseOrderEvent",
|
|
2542
|
+
{get = function(self)
|
|
2543
|
+
local event = __TS__New(Event)
|
|
2544
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2545
|
+
local slot = order - orderId("useslot0")
|
|
2546
|
+
local function listener(unit)
|
|
2547
|
+
local item = unit.items[slot + 1]
|
|
2548
|
+
if item ~= nil then
|
|
2549
|
+
invoke(event, unit, item)
|
|
2550
|
+
end
|
|
2551
|
+
end
|
|
2552
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2553
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2554
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2555
|
+
end
|
|
2556
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2557
|
+
return event
|
|
2558
|
+
end}
|
|
2559
|
+
)
|
|
2560
|
+
__TS__ObjectDefineProperty(
|
|
2561
|
+
Unit,
|
|
2562
|
+
"itemMoveOrderEvent",
|
|
2563
|
+
{get = function(self)
|
|
2564
|
+
local event = __TS__New(Event)
|
|
2565
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2566
|
+
local slotTo = order - orderId("moveslot0")
|
|
2567
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2568
|
+
local slotFrom = unit.items:findSlot(item)
|
|
2569
|
+
if slotFrom ~= nil then
|
|
2570
|
+
invoke(
|
|
2571
|
+
event,
|
|
2572
|
+
unit,
|
|
2573
|
+
item,
|
|
2574
|
+
slotFrom,
|
|
2575
|
+
slotTo
|
|
2576
|
+
)
|
|
2577
|
+
end
|
|
2578
|
+
end)
|
|
2579
|
+
end
|
|
2580
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2581
|
+
return event
|
|
2582
|
+
end}
|
|
2523
2583
|
)
|
|
2524
2584
|
__TS__ObjectDefineProperty(
|
|
2525
2585
|
Unit,
|
|
@@ -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
|