warscript 0.0.1-dev.e4a5fce → 0.0.1-dev.ea10f2b
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/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -0
- package/core/types/effect.lua +80 -30
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +94 -24
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +2 -2
- package/engine/behaviour/ability/emulate-impact.lua +5 -7
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- package/engine/behaviour/ability.d.ts +12 -3
- package/engine/behaviour/ability.lua +66 -7
- package/engine/behaviour/unit.d.ts +2 -0
- package/engine/buff.d.ts +56 -41
- package/engine/buff.lua +295 -228
- package/engine/internal/ability.d.ts +11 -1
- package/engine/internal/ability.lua +67 -2
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item.d.ts +2 -2
- package/engine/internal/item.lua +56 -25
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- 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.lua +6 -12
- package/engine/internal/unit.d.ts +9 -2
- package/engine/internal/unit.lua +71 -15
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +8 -6
- package/engine/object-data/entry/ability-type.lua +62 -27
- package/engine/object-data/entry/buff-type/applicable.lua +13 -37
- package/engine/object-data/entry/buff-type.d.ts +1 -1
- package/engine/object-data/entry/buff-type.lua +2 -2
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +8 -1
- package/engine/object-data/entry/unit-type.lua +61 -8
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +5 -2
- package/engine/object-field/ability.lua +3 -0
- package/engine/object-field.d.ts +2 -2
- package/engine/object-field.lua +4 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/utility/reflection.lua +11 -7
|
@@ -7,12 +7,14 @@ local ____item = require("engine.internal.item")
|
|
|
7
7
|
local Item = ____item.Item
|
|
8
8
|
local ____unit = require("engine.internal.unit")
|
|
9
9
|
local Unit = ____unit.Unit
|
|
10
|
+
local ____utility = require("engine.internal.utility")
|
|
11
|
+
local findUnitItemSlot = ____utility.findUnitItemSlot
|
|
12
|
+
local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slot")
|
|
13
|
+
local unitAddItemToSlot = ____add_2Ditem_2Dto_2Dslot.unitAddItemToSlot
|
|
10
14
|
local rawset = _G.rawset
|
|
11
15
|
local ____type = _G.type
|
|
12
16
|
local isItemPowerup = IsItemPowerup
|
|
13
17
|
local setItemBooleanField = BlzSetItemBooleanField
|
|
14
|
-
local unitAddItem = UnitAddItem
|
|
15
|
-
local unitDropItemSlot = UnitDropItemSlot
|
|
16
18
|
local unitInventorySize = UnitInventorySize
|
|
17
19
|
local unitItemInSlot = UnitItemInSlot
|
|
18
20
|
local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
|
|
@@ -31,14 +33,7 @@ function UnitItems.prototype.____constructor(self, handle)
|
|
|
31
33
|
handleByUnitItems[self] = handle
|
|
32
34
|
end
|
|
33
35
|
function UnitItems.prototype.findSlot(self, item)
|
|
34
|
-
|
|
35
|
-
local itemHandle = item.handle
|
|
36
|
-
for slot = 0, unitInventorySize(handle) - 1 do
|
|
37
|
-
if itemHandle == unitItemInSlot(handle, slot) then
|
|
38
|
-
return slot
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
return nil
|
|
36
|
+
return findUnitItemSlot(handleByUnitItems[self], item.handle)
|
|
42
37
|
end
|
|
43
38
|
function UnitItems.prototype.__newindex(self, slot, item)
|
|
44
39
|
local handle = handleByUnitItems[self]
|
|
@@ -52,8 +47,7 @@ function UnitItems.prototype.__newindex(self, slot, item)
|
|
|
52
47
|
if isPowerup then
|
|
53
48
|
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
54
49
|
end
|
|
55
|
-
|
|
56
|
-
unitDropItemSlot(handle, itemHandle, slot - 1)
|
|
50
|
+
unitAddItemToSlot(handle, itemHandle, slot - 1)
|
|
57
51
|
if isPowerup then
|
|
58
52
|
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
59
53
|
end
|
|
@@ -100,7 +100,9 @@ declare const enum UnitPropertyKey {
|
|
|
100
100
|
DELAY_HEALTH_CHECKS_COUNTER = 103,
|
|
101
101
|
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 104,
|
|
102
102
|
PREVENT_DEATH_HEALTH_BONUS = 105,
|
|
103
|
-
IS_TEAM_GLOW_HIDDEN = 106
|
|
103
|
+
IS_TEAM_GLOW_HIDDEN = 106,
|
|
104
|
+
LAST_X = 107,
|
|
105
|
+
LAST_Y = 108
|
|
104
106
|
}
|
|
105
107
|
export type UnitSyncId = number & {
|
|
106
108
|
readonly __unitSyncId: unique symbol;
|
|
@@ -113,6 +115,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
113
115
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
114
116
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
115
117
|
private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
|
|
118
|
+
private [UnitPropertyKey.LAST_X]?;
|
|
119
|
+
private [UnitPropertyKey.LAST_Y]?;
|
|
116
120
|
private _owner?;
|
|
117
121
|
private _timeScale?;
|
|
118
122
|
private events?;
|
|
@@ -133,6 +137,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
133
137
|
get isAlive(): boolean;
|
|
134
138
|
get isDead(): boolean;
|
|
135
139
|
get isIllusion(): boolean;
|
|
140
|
+
get isStunned(): boolean;
|
|
136
141
|
get combatClassifications(): CombatClassifications;
|
|
137
142
|
set combatClassifications(combatClassifications: CombatClassifications);
|
|
138
143
|
hasCombatClassification(combatClassification: CombatClassification): boolean;
|
|
@@ -147,6 +152,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
147
152
|
isEnemyOf(unit: Unit): boolean;
|
|
148
153
|
playAnimation(animation: string, rarity?: jraritycontrol): void;
|
|
149
154
|
playAnimation(animation: number): void;
|
|
155
|
+
resetAnimation(): void;
|
|
150
156
|
queueAnimation(animation: string): void;
|
|
151
157
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
152
158
|
get firstWeapon(): UnitWeapon;
|
|
@@ -332,7 +338,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
332
338
|
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
333
339
|
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
334
340
|
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
335
|
-
static get
|
|
341
|
+
static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
|
|
342
|
+
static get itemMoveOrderEvent(): Event<[
|
|
336
343
|
unit: Unit,
|
|
337
344
|
item: Item,
|
|
338
345
|
slotFrom: 0 | 1 | 2 | 3 | 4 | 5,
|
package/engine/internal/unit.lua
CHANGED
|
@@ -51,11 +51,14 @@ 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
|
|
57
59
|
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
58
60
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
61
|
+
local resetUnitAnimation = ResetUnitAnimation
|
|
59
62
|
local queueUnitAnimation = QueueUnitAnimation
|
|
60
63
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
61
64
|
local getUnitRealField = BlzGetUnitRealField
|
|
@@ -75,6 +78,7 @@ local setUnitScale = SetUnitScale
|
|
|
75
78
|
local setUnitPosition = SetUnitPosition
|
|
76
79
|
local setUnitTimeScale = SetUnitTimeScale
|
|
77
80
|
local getHandleId = GetHandleId
|
|
81
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
78
82
|
local createUnit = CreateUnit
|
|
79
83
|
local killUnit = KillUnit
|
|
80
84
|
local setUnitExploded = SetUnitExploded
|
|
@@ -677,6 +681,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
677
681
|
end
|
|
678
682
|
function Unit.prototype.onDestroy(self)
|
|
679
683
|
local handle = self.handle
|
|
684
|
+
self[107] = getUnitX(handle)
|
|
685
|
+
self[108] = getUnitY(handle)
|
|
680
686
|
if not self._owner then
|
|
681
687
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
682
688
|
end
|
|
@@ -792,6 +798,9 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
798
|
setUnitAnimation(self.handle, animation)
|
|
793
799
|
end
|
|
794
800
|
end
|
|
801
|
+
function Unit.prototype.resetAnimation(self)
|
|
802
|
+
resetUnitAnimation(self.handle)
|
|
803
|
+
end
|
|
795
804
|
function Unit.prototype.queueAnimation(self, animation)
|
|
796
805
|
queueUnitAnimation(self.handle, animation)
|
|
797
806
|
end
|
|
@@ -929,8 +938,15 @@ function Unit.prototype.interruptAttack(self)
|
|
|
929
938
|
unitInterruptAttack(self.handle)
|
|
930
939
|
end
|
|
931
940
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
932
|
-
|
|
933
|
-
unitDisableAbility(
|
|
941
|
+
local handle = self.handle
|
|
942
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
943
|
+
Timer:run(
|
|
944
|
+
unitDisableAbility,
|
|
945
|
+
handle,
|
|
946
|
+
abilityId,
|
|
947
|
+
false,
|
|
948
|
+
false
|
|
949
|
+
)
|
|
934
950
|
end
|
|
935
951
|
function Unit.prototype.getDistanceTo(self, target)
|
|
936
952
|
local handle = self.handle
|
|
@@ -1195,6 +1211,14 @@ __TS__SetDescriptor(
|
|
|
1195
1211
|
end},
|
|
1196
1212
|
true
|
|
1197
1213
|
)
|
|
1214
|
+
__TS__SetDescriptor(
|
|
1215
|
+
Unit.prototype,
|
|
1216
|
+
"isStunned",
|
|
1217
|
+
{get = function(self)
|
|
1218
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1219
|
+
end},
|
|
1220
|
+
true
|
|
1221
|
+
)
|
|
1198
1222
|
__TS__SetDescriptor(
|
|
1199
1223
|
Unit.prototype,
|
|
1200
1224
|
"combatClassifications",
|
|
@@ -1579,7 +1603,7 @@ __TS__SetDescriptor(
|
|
|
1579
1603
|
"x",
|
|
1580
1604
|
{
|
|
1581
1605
|
get = function(self)
|
|
1582
|
-
return getUnitX(self.handle)
|
|
1606
|
+
return self[107] or getUnitX(self.handle)
|
|
1583
1607
|
end,
|
|
1584
1608
|
set = function(self, v)
|
|
1585
1609
|
SetUnitX(self.handle, v)
|
|
@@ -1592,7 +1616,7 @@ __TS__SetDescriptor(
|
|
|
1592
1616
|
"y",
|
|
1593
1617
|
{
|
|
1594
1618
|
get = function(self)
|
|
1595
|
-
return getUnitY(self.handle)
|
|
1619
|
+
return self[108] or getUnitY(self.handle)
|
|
1596
1620
|
end,
|
|
1597
1621
|
set = function(self, v)
|
|
1598
1622
|
SetUnitY(self.handle, v)
|
|
@@ -2315,10 +2339,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2315
2339
|
____exports.UnitTriggerEvent,
|
|
2316
2340
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2317
2341
|
function()
|
|
2318
|
-
local
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2342
|
+
local handle = getOrderedUnit()
|
|
2343
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2344
|
+
local unit = ____exports.Unit:of(handle)
|
|
2345
|
+
if unit.state == 1 then
|
|
2346
|
+
return unit, getIssuedOrderId()
|
|
2347
|
+
end
|
|
2322
2348
|
end
|
|
2323
2349
|
return IgnoreEvent
|
|
2324
2350
|
end
|
|
@@ -2509,8 +2535,9 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2509
2535
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2510
2536
|
function()
|
|
2511
2537
|
local unit = getTriggerUnit()
|
|
2512
|
-
|
|
2513
|
-
|
|
2538
|
+
local item = getManipulatedItem()
|
|
2539
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2540
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2514
2541
|
end
|
|
2515
2542
|
return IgnoreEvent
|
|
2516
2543
|
end
|
|
@@ -2520,8 +2547,9 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2520
2547
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2521
2548
|
function()
|
|
2522
2549
|
local unit = getTriggerUnit()
|
|
2523
|
-
|
|
2524
|
-
|
|
2550
|
+
local item = getManipulatedItem()
|
|
2551
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2552
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2525
2553
|
end
|
|
2526
2554
|
return IgnoreEvent
|
|
2527
2555
|
end
|
|
@@ -2529,7 +2557,14 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2529
2557
|
Unit.itemUsedEvent = __TS__New(
|
|
2530
2558
|
____exports.UnitTriggerEvent,
|
|
2531
2559
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2532
|
-
function()
|
|
2560
|
+
function()
|
|
2561
|
+
local unit = getTriggerUnit()
|
|
2562
|
+
local item = getManipulatedItem()
|
|
2563
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2564
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2565
|
+
end
|
|
2566
|
+
return IgnoreEvent
|
|
2567
|
+
end
|
|
2533
2568
|
)
|
|
2534
2569
|
Unit.itemStackedEvent = __TS__New(
|
|
2535
2570
|
____exports.UnitTriggerEvent,
|
|
@@ -2538,7 +2573,28 @@ Unit.itemStackedEvent = __TS__New(
|
|
|
2538
2573
|
)
|
|
2539
2574
|
__TS__ObjectDefineProperty(
|
|
2540
2575
|
Unit,
|
|
2541
|
-
"
|
|
2576
|
+
"itemUseOrderEvent",
|
|
2577
|
+
{get = function(self)
|
|
2578
|
+
local event = __TS__New(Event)
|
|
2579
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2580
|
+
local slot = order - orderId("useslot0")
|
|
2581
|
+
local function listener(unit)
|
|
2582
|
+
local item = unit.items[slot + 1]
|
|
2583
|
+
if item ~= nil then
|
|
2584
|
+
invoke(event, unit, item)
|
|
2585
|
+
end
|
|
2586
|
+
end
|
|
2587
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2588
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2589
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2590
|
+
end
|
|
2591
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2592
|
+
return event
|
|
2593
|
+
end}
|
|
2594
|
+
)
|
|
2595
|
+
__TS__ObjectDefineProperty(
|
|
2596
|
+
Unit,
|
|
2597
|
+
"itemMoveOrderEvent",
|
|
2542
2598
|
{get = function(self)
|
|
2543
2599
|
local event = __TS__New(Event)
|
|
2544
2600
|
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
@@ -2556,7 +2612,7 @@ __TS__ObjectDefineProperty(
|
|
|
2556
2612
|
end
|
|
2557
2613
|
end)
|
|
2558
2614
|
end
|
|
2559
|
-
rawset(self, "
|
|
2615
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2560
2616
|
return event
|
|
2561
2617
|
end}
|
|
2562
2618
|
)
|
|
@@ -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/lightning.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { LightningTypeId } from "./object-data/entry/lightning-type";
|
|
3
|
-
import { Handle, HandleDestructor } from "../core/types/handle";
|
|
4
3
|
import { Unit } from "../core/types/unit";
|
|
4
|
+
import { AbstractDestroyable, Destructor } from "../destroyable";
|
|
5
5
|
declare const enum LightningPropertyKey {
|
|
6
6
|
CHECK_VISIBILITY = 100,
|
|
7
7
|
SOURCE_UNIT = 101,
|
|
@@ -12,10 +12,12 @@ declare const enum LightningPropertyKey {
|
|
|
12
12
|
TARGET_X = 106,
|
|
13
13
|
TARGET_Y = 107,
|
|
14
14
|
TARGET_Z = 108,
|
|
15
|
-
DURATION = 109
|
|
15
|
+
DURATION = 109,
|
|
16
|
+
FADING = 110
|
|
16
17
|
}
|
|
17
18
|
export type LightningConstructor<T extends Lightning> = typeof Lightning & (new (handle: jlightning, typeId: LightningTypeId) => T);
|
|
18
|
-
export declare class Lightning extends
|
|
19
|
+
export declare class Lightning extends AbstractDestroyable {
|
|
20
|
+
readonly handle: jlightning;
|
|
19
21
|
readonly typeId: LightningTypeId;
|
|
20
22
|
private [LightningPropertyKey.CHECK_VISIBILITY]?;
|
|
21
23
|
private [LightningPropertyKey.SOURCE_UNIT]?;
|
|
@@ -27,8 +29,9 @@ export declare class Lightning extends Handle<jlightning> {
|
|
|
27
29
|
private [LightningPropertyKey.TARGET_Y]?;
|
|
28
30
|
private [LightningPropertyKey.TARGET_Z]?;
|
|
29
31
|
private [LightningPropertyKey.DURATION]?;
|
|
32
|
+
private [LightningPropertyKey.FADING]?;
|
|
30
33
|
constructor(handle: jlightning, typeId: LightningTypeId);
|
|
31
|
-
protected onDestroy():
|
|
34
|
+
protected onDestroy(): Destructor;
|
|
32
35
|
static create<T extends Lightning>(this: LightningConstructor<T>, typeId: LightningTypeId, ...parameters: [
|
|
33
36
|
...checkVisibility: [boolean] | [],
|
|
34
37
|
...sourceAndTarget: [sourceX: number, sourceY: number, targetX: number, targetY: number] | [
|
|
@@ -46,6 +49,10 @@ export declare class Lightning extends Handle<jlightning> {
|
|
|
46
49
|
target: Unit
|
|
47
50
|
]
|
|
48
51
|
]): T;
|
|
49
|
-
static flash(...parameters: [
|
|
52
|
+
static flash(...parameters: [
|
|
53
|
+
...parameters: Parameters<(typeof Lightning)["create"]>,
|
|
54
|
+
duration: number,
|
|
55
|
+
fading?: boolean
|
|
56
|
+
]): void;
|
|
50
57
|
}
|
|
51
58
|
export {};
|
package/engine/lightning.lua
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__New = ____lualib.__TS__New
|
|
4
5
|
local ____exports = {}
|
|
5
|
-
local ____handle = require("core.types.handle")
|
|
6
|
-
local Handle = ____handle.Handle
|
|
7
6
|
local ____timer = require("core.types.timer")
|
|
8
7
|
local Timer = ____timer.Timer
|
|
9
8
|
local ____functions = require("utility.functions")
|
|
10
9
|
local forwardByN = ____functions.forwardByN
|
|
11
10
|
local ____unit_2Dmissile_2Ddata = require("engine.internal.unit-missile-data")
|
|
12
11
|
local MISSILE_DATA_BY_UNIT_TYPE_ID = ____unit_2Dmissile_2Ddata.MISSILE_DATA_BY_UNIT_TYPE_ID
|
|
12
|
+
local ____destroyable = require("destroyable")
|
|
13
|
+
local AbstractDestroyable = ____destroyable.AbstractDestroyable
|
|
13
14
|
local ____type = _G.type
|
|
14
15
|
local select = _G.select
|
|
15
16
|
local cos = math.cos
|
|
@@ -27,6 +28,11 @@ local getUnitZ = BlzGetUnitZ
|
|
|
27
28
|
local getUnitFlyHeight = GetUnitFlyHeight
|
|
28
29
|
local getLocationZ = GetLocationZ
|
|
29
30
|
local moveLocation = MoveLocation
|
|
31
|
+
local getLightningColorA = GetLightningColorA
|
|
32
|
+
local getLightningColorR = GetLightningColorR
|
|
33
|
+
local getLightningColorG = GetLightningColorG
|
|
34
|
+
local getLightningColorB = GetLightningColorB
|
|
35
|
+
local setLightningColor = SetLightningColor
|
|
30
36
|
local location = Location(0, 0)
|
|
31
37
|
local unitToUnitLightnings = setmetatable({}, {__mode = "k"})
|
|
32
38
|
local unitToPointLightnings = setmetatable({}, {__mode = "k"})
|
|
@@ -36,9 +42,10 @@ local temporaryLightningsCount = 0
|
|
|
36
42
|
____exports.Lightning = __TS__Class()
|
|
37
43
|
local Lightning = ____exports.Lightning
|
|
38
44
|
Lightning.name = "Lightning"
|
|
39
|
-
__TS__ClassExtends(Lightning,
|
|
45
|
+
__TS__ClassExtends(Lightning, AbstractDestroyable)
|
|
40
46
|
function Lightning.prototype.____constructor(self, handle, typeId)
|
|
41
|
-
|
|
47
|
+
AbstractDestroyable.prototype.____constructor(self)
|
|
48
|
+
self.handle = handle
|
|
42
49
|
self.typeId = typeId
|
|
43
50
|
end
|
|
44
51
|
function Lightning.prototype.onDestroy(self)
|
|
@@ -46,7 +53,7 @@ function Lightning.prototype.onDestroy(self)
|
|
|
46
53
|
unitToPointLightnings[self] = nil
|
|
47
54
|
pointToUnitLightnings[self] = nil
|
|
48
55
|
destroyLightning(self.handle)
|
|
49
|
-
return
|
|
56
|
+
return AbstractDestroyable.prototype.onDestroy(self)
|
|
50
57
|
end
|
|
51
58
|
function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY, targetXOrTargetUnitOrTargetYOrTargetZ, targetY, targetZ)
|
|
52
59
|
if type(checkVisibility) ~= "boolean" then
|
|
@@ -62,7 +69,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
62
69
|
)
|
|
63
70
|
end
|
|
64
71
|
if targetZ ~= nil then
|
|
65
|
-
return
|
|
72
|
+
return __TS__New(
|
|
73
|
+
self,
|
|
66
74
|
addLightningEx(
|
|
67
75
|
util.id2s(typeId),
|
|
68
76
|
checkVisibility,
|
|
@@ -79,7 +87,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
79
87
|
if targetXOrTargetUnitOrTargetYOrTargetZ ~= nil then
|
|
80
88
|
if ____type(targetXOrTargetUnitOrTargetYOrTargetZ) == "number" then
|
|
81
89
|
if ____type(sourceXOrSourceUnit) == "number" then
|
|
82
|
-
return
|
|
90
|
+
return __TS__New(
|
|
91
|
+
self,
|
|
83
92
|
addLightning(
|
|
84
93
|
util.id2s(typeId),
|
|
85
94
|
checkVisibility,
|
|
@@ -92,7 +101,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
92
101
|
)
|
|
93
102
|
end
|
|
94
103
|
local unit = sourceXOrSourceUnit.handle
|
|
95
|
-
local lightning =
|
|
104
|
+
local lightning = __TS__New(
|
|
105
|
+
self,
|
|
96
106
|
addLightningEx(
|
|
97
107
|
util.id2s(typeId),
|
|
98
108
|
checkVisibility,
|
|
@@ -117,7 +127,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
117
127
|
return lightning
|
|
118
128
|
end
|
|
119
129
|
local unit = targetXOrTargetUnitOrTargetYOrTargetZ.handle
|
|
120
|
-
local lightning =
|
|
130
|
+
local lightning = __TS__New(
|
|
131
|
+
self,
|
|
121
132
|
addLightningEx(
|
|
122
133
|
util.id2s(typeId),
|
|
123
134
|
checkVisibility,
|
|
@@ -146,7 +157,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
146
157
|
local unit = sourceXOrSourceUnit.handle
|
|
147
158
|
moveLocation(location, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY)
|
|
148
159
|
local z = getLocationZ(location)
|
|
149
|
-
local lightning =
|
|
160
|
+
local lightning = __TS__New(
|
|
161
|
+
self,
|
|
150
162
|
addLightningEx(
|
|
151
163
|
util.id2s(typeId),
|
|
152
164
|
checkVisibility,
|
|
@@ -173,7 +185,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
173
185
|
local unit = sourceZOrTargetXOrTargetUnitOrTargetY.handle
|
|
174
186
|
moveLocation(location, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit)
|
|
175
187
|
local z = getLocationZ(location)
|
|
176
|
-
local lightning =
|
|
188
|
+
local lightning = __TS__New(
|
|
189
|
+
self,
|
|
177
190
|
addLightningEx(
|
|
178
191
|
util.id2s(typeId),
|
|
179
192
|
checkVisibility,
|
|
@@ -199,7 +212,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
199
212
|
end
|
|
200
213
|
local sourceUnit = sourceXOrSourceUnit.handle
|
|
201
214
|
local targetUnit = sourceYOrTargetXOrTargetUnit.handle
|
|
202
|
-
local lightning =
|
|
215
|
+
local lightning = __TS__New(
|
|
216
|
+
self,
|
|
203
217
|
addLightningEx(
|
|
204
218
|
util.id2s(typeId),
|
|
205
219
|
checkVisibility,
|
|
@@ -225,9 +239,19 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
225
239
|
return lightning
|
|
226
240
|
end
|
|
227
241
|
function Lightning.flash(self, ...)
|
|
228
|
-
local
|
|
242
|
+
local parameterOrDuration, durationOrFading = select(-2, ...)
|
|
243
|
+
local hasFading = ____type(durationOrFading) ~= "number"
|
|
244
|
+
local parametersToForwardCount = select("#", ...) - (hasFading and 2 or 1)
|
|
229
245
|
local lightning = forwardByN[parametersToForwardCount](____exports.Lightning.create, self, ...)
|
|
230
|
-
local duration
|
|
246
|
+
local duration
|
|
247
|
+
if hasFading then
|
|
248
|
+
duration = parameterOrDuration
|
|
249
|
+
if durationOrFading then
|
|
250
|
+
lightning[110] = true
|
|
251
|
+
end
|
|
252
|
+
else
|
|
253
|
+
duration = durationOrFading
|
|
254
|
+
end
|
|
231
255
|
lightning[109] = duration
|
|
232
256
|
temporaryLightningsCount = temporaryLightningsCount + 1
|
|
233
257
|
temporaryLightnings[temporaryLightningsCount] = lightning
|
|
@@ -295,6 +319,16 @@ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
|
|
|
295
319
|
temporaryLightnings[temporaryLightningsCount] = nil
|
|
296
320
|
temporaryLightningsCount = temporaryLightningsCount - 1
|
|
297
321
|
else
|
|
322
|
+
if lightning[110] then
|
|
323
|
+
local handle = lightning.handle
|
|
324
|
+
setLightningColor(
|
|
325
|
+
handle,
|
|
326
|
+
getLightningColorR(handle),
|
|
327
|
+
getLightningColorG(handle),
|
|
328
|
+
getLightningColorB(handle),
|
|
329
|
+
getLightningColorA(handle) * (1 - UPDATE_PERIOD / duration)
|
|
330
|
+
)
|
|
331
|
+
end
|
|
298
332
|
lightning[109] = duration - UPDATE_PERIOD
|
|
299
333
|
i = i + 1
|
|
300
334
|
end
|
|
@@ -1,2 +1,18 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
|
+
local animationNames = {
|
|
3
|
+
attack = true,
|
|
4
|
+
birth = true,
|
|
5
|
+
death = true,
|
|
6
|
+
decay = true,
|
|
7
|
+
dissipate = true,
|
|
8
|
+
morph = true,
|
|
9
|
+
portrait = true,
|
|
10
|
+
sleep = true,
|
|
11
|
+
spell = true,
|
|
12
|
+
stand = true,
|
|
13
|
+
walk = true
|
|
14
|
+
}
|
|
15
|
+
____exports.isAnimationName = function(value)
|
|
16
|
+
return animationNames[value] ~= nil
|
|
17
|
+
end
|
|
2
18
|
return ____exports
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
export declare const enum SoundEax {
|
|
3
|
+
DEFAULT = "DefaultEAXON",
|
|
4
|
+
ACKNOWLEDGEMENTS = "HeroAcksEAX",
|
|
5
|
+
ENVIRONMENT = "DoodadsEAX",
|
|
6
|
+
DRUMS = "KotoDrumsEAX",
|
|
7
|
+
ATTACKS = "CombatSoundsEAX",
|
|
8
|
+
ABILITIES = "SpellsEAX",
|
|
9
|
+
MISSILES = "MissilesEAX"
|
|
10
|
+
}
|
|
@@ -12,5 +12,5 @@ export type TechTreeDependency = {
|
|
|
12
12
|
level: number;
|
|
13
13
|
};
|
|
14
14
|
export type TechTreeDependencyInput = TechTreeDependency | UnitTypeId | UpgradeId;
|
|
15
|
-
export declare const extractTechTreeDependencyInputObjectDataEntryId: (techTreeDependencyInput: TechTreeDependencyInput) => ObjectDataEntryId;
|
|
15
|
+
export declare const extractTechTreeDependencyInputObjectDataEntryId: (techTreeDependencyInput: TechTreeDependencyInput) => ObjectDataEntryId & number;
|
|
16
16
|
export declare const extractTechTreeDependencyInputLevel: (techTreeDependencyInput: TechTreeDependencyInput) => number;
|
|
@@ -6,6 +6,8 @@ local __TS__New = ____lualib.__TS__New
|
|
|
6
6
|
local ____exports = {}
|
|
7
7
|
local ____channel = require("engine.object-data.entry.ability-type.channel")
|
|
8
8
|
local ChannelAbilityType = ____channel.ChannelAbilityType
|
|
9
|
+
local ____animation_2Dname = require("engine.object-data.auxiliary.animation-name")
|
|
10
|
+
local isAnimationName = ____animation_2Dname.isAnimationName
|
|
9
11
|
local ____order_2Dtype_2Dstring_2Did_2Dfactory = require("engine.object-data.utility.order-type-string-id-factory")
|
|
10
12
|
local orderTypeStringIdFactory = ____order_2Dtype_2Dstring_2Did_2Dfactory.orderTypeStringIdFactory
|
|
11
13
|
local ____timer = require("core.types.timer")
|
|
@@ -211,7 +213,16 @@ for abilityTypeId, usesAttackAnimation in pairs(postcompile(function()
|
|
|
211
213
|
for abilityTypeId, usesAttackAnimation in pairs(usesAttackAnimationByAbilityTypeId) do
|
|
212
214
|
if usesAttackAnimation then
|
|
213
215
|
local abilityType = checkNotNull(____exports.BlankConfigurableAbilityType:of(abilityTypeId))
|
|
214
|
-
abilityType.channelingAnimation
|
|
216
|
+
if isAnimationName(abilityType.channelingAnimation[1]) then
|
|
217
|
+
if abilityType.channelingAnimation[1] ~= "attack" then
|
|
218
|
+
abilityType.channelingAnimation = {"attack"}
|
|
219
|
+
end
|
|
220
|
+
else
|
|
221
|
+
abilityType.channelingAnimation = {
|
|
222
|
+
"attack",
|
|
223
|
+
table.unpack(abilityType.channelingAnimation)
|
|
224
|
+
}
|
|
225
|
+
end
|
|
215
226
|
end
|
|
216
227
|
end
|
|
217
228
|
return usesAttackAnimationByAbilityTypeId
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class CarrionSwarmAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get damagePerTarget(): number[];
|
|
7
|
+
set damagePerTarget(damagePerTarget: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
get maximumTotalDamage(): number[];
|
|
9
|
+
set maximumTotalDamage(maximumTotalDamage: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
10
|
+
get distance(): number[];
|
|
11
|
+
set distance(distance: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
12
|
+
get finalAreaOfEffect(): number[];
|
|
13
|
+
set finalAreaOfEffect(finalAreaOfEffect: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
14
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
7
|
+
local AbilityType = ____ability_2Dtype.AbilityType
|
|
8
|
+
____exports.CarrionSwarmAbilityType = __TS__Class()
|
|
9
|
+
local CarrionSwarmAbilityType = ____exports.CarrionSwarmAbilityType
|
|
10
|
+
CarrionSwarmAbilityType.name = "CarrionSwarmAbilityType"
|
|
11
|
+
__TS__ClassExtends(CarrionSwarmAbilityType, AbilityType)
|
|
12
|
+
CarrionSwarmAbilityType.BASE_ID = fourCC("AUcs")
|
|
13
|
+
__TS__SetDescriptor(
|
|
14
|
+
CarrionSwarmAbilityType.prototype,
|
|
15
|
+
"damagePerTarget",
|
|
16
|
+
{
|
|
17
|
+
get = function(self)
|
|
18
|
+
return self:getNumberLevelField("Ucs1")
|
|
19
|
+
end,
|
|
20
|
+
set = function(self, damagePerTarget)
|
|
21
|
+
self:setNumberLevelField("Ucs1", damagePerTarget)
|
|
22
|
+
end
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
)
|
|
26
|
+
__TS__SetDescriptor(
|
|
27
|
+
CarrionSwarmAbilityType.prototype,
|
|
28
|
+
"maximumTotalDamage",
|
|
29
|
+
{
|
|
30
|
+
get = function(self)
|
|
31
|
+
return self:getNumberLevelField("Ucs2")
|
|
32
|
+
end,
|
|
33
|
+
set = function(self, maximumTotalDamage)
|
|
34
|
+
self:setNumberLevelField("Ucs2", maximumTotalDamage)
|
|
35
|
+
end
|
|
36
|
+
},
|
|
37
|
+
true
|
|
38
|
+
)
|
|
39
|
+
__TS__SetDescriptor(
|
|
40
|
+
CarrionSwarmAbilityType.prototype,
|
|
41
|
+
"distance",
|
|
42
|
+
{
|
|
43
|
+
get = function(self)
|
|
44
|
+
return self:getNumberLevelField("Ucs3")
|
|
45
|
+
end,
|
|
46
|
+
set = function(self, distance)
|
|
47
|
+
self:setNumberLevelField("Ucs3", distance)
|
|
48
|
+
end
|
|
49
|
+
},
|
|
50
|
+
true
|
|
51
|
+
)
|
|
52
|
+
__TS__SetDescriptor(
|
|
53
|
+
CarrionSwarmAbilityType.prototype,
|
|
54
|
+
"finalAreaOfEffect",
|
|
55
|
+
{
|
|
56
|
+
get = function(self)
|
|
57
|
+
return self:getNumberLevelField("Ucs4")
|
|
58
|
+
end,
|
|
59
|
+
set = function(self, finalAreaOfEffect)
|
|
60
|
+
self:setNumberLevelField("Ucs4", finalAreaOfEffect)
|
|
61
|
+
end
|
|
62
|
+
},
|
|
63
|
+
true
|
|
64
|
+
)
|
|
65
|
+
return ____exports
|
|
@@ -54,10 +54,10 @@ __TS__SetDescriptor(
|
|
|
54
54
|
"plagueWardUnitTypeId",
|
|
55
55
|
{
|
|
56
56
|
get = function(self)
|
|
57
|
-
return self:
|
|
57
|
+
return self:getObjectDataEntryNumericIdLevelField("Aplu")
|
|
58
58
|
end,
|
|
59
59
|
set = function(self, plagueWardUnitTypeId)
|
|
60
|
-
self:
|
|
60
|
+
self:setObjectDataEntryNumericIdLevelField("Aplu", plagueWardUnitTypeId)
|
|
61
61
|
end
|
|
62
62
|
},
|
|
63
63
|
true
|