warscript 0.0.1-dev.35997e2 → 0.0.1-dev.38157d0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +0 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/core/types/frame.d.ts +4 -1
- package/core/types/frame.lua +22 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/unit.lua +8 -0
- package/decl/index.d.ts +1 -0
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behaviour/ability/apply-buff.d.ts +3 -5
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
- package/engine/behaviour/ability/damage.d.ts +33 -11
- package/engine/behaviour/ability/damage.lua +89 -31
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +8 -1
- package/engine/behaviour/ability.lua +62 -0
- package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
- package/engine/behaviour/unit.d.ts +8 -2
- package/engine/behaviour/unit.lua +27 -0
- package/engine/buff.d.ts +62 -20
- package/engine/buff.lua +247 -72
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/unit/bonus.d.ts +9 -8
- package/engine/internal/unit/bonus.lua +6 -1
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit.d.ts +17 -5
- package/engine/internal/unit.lua +94 -33
- package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +0 -1
- package/engine/object-data/entry/destructible-type.d.ts +0 -1
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +0 -1
- package/engine/object-data/entry/lightning-type.d.ts +0 -1
- package/engine/object-data/entry/unit-type.d.ts +0 -1
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +0 -1
- package/engine/object-data/entry.d.ts +2 -3
- package/engine/object-field/ability.d.ts +18 -1
- package/engine/object-field/ability.lua +50 -0
- package/engine/object-field.d.ts +0 -1
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/unit-type.d.ts +1 -0
- package/engine/standard/entries/unit-type.lua +1 -0
- package/engine/standard/fields/ability.d.ts +1 -1
- package/engine/standard/fields/ability.lua +1 -1
- package/engine/unit.lua +9 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +1 -1
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/package.json +13 -13
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +16 -0
- package/string.lua +5 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +3 -4
- package/utility/bit-set.d.ts +0 -2
- package/utility/linked-set.d.ts +11 -3
- package/utility/linked-set.lua +5 -2
- package/utility/lua-maps.d.ts +1 -2
- package/utility/lua-sets.d.ts +1 -2
- package/utility/types.d.ts +1 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
4
3
|
import { Player } from "../../core/types/player";
|
|
@@ -43,6 +42,7 @@ export interface DamagingEvent {
|
|
|
43
42
|
damageType: jdamagetype;
|
|
44
43
|
weaponType: jweapontype;
|
|
45
44
|
readonly isAttack: boolean;
|
|
45
|
+
readonly originalAmount: number;
|
|
46
46
|
}
|
|
47
47
|
export type DamageEvent = DamagingEvent & {
|
|
48
48
|
preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
|
|
@@ -68,6 +68,16 @@ declare const modifiers: {
|
|
|
68
68
|
speed: (unit: junit, value: number) => void;
|
|
69
69
|
armor: (unit: junit, value: number) => void;
|
|
70
70
|
};
|
|
71
|
+
export interface UnitItems extends Array<Item | undefined> {
|
|
72
|
+
readonly length: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
73
|
+
}
|
|
74
|
+
export declare class UnitItems {
|
|
75
|
+
private readonly handle;
|
|
76
|
+
constructor(handle: junit);
|
|
77
|
+
protected __newindex(slot: number, item: Item | undefined): void;
|
|
78
|
+
protected __index(slot: number): Item | undefined;
|
|
79
|
+
protected __len(): number;
|
|
80
|
+
}
|
|
71
81
|
export declare class UnitWeapon {
|
|
72
82
|
readonly unit: Unit;
|
|
73
83
|
readonly index: 0 | 1;
|
|
@@ -228,7 +238,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
228
238
|
isSelected(player: Player): boolean;
|
|
229
239
|
explode(): void;
|
|
230
240
|
kill(): void;
|
|
231
|
-
revive(
|
|
241
|
+
revive(x: number, y: number, doEffect?: boolean): void;
|
|
232
242
|
healTarget(target: Widget, amount: number): void;
|
|
233
243
|
useItem(item: Item): boolean;
|
|
234
244
|
issueImmediateOrder(order: number): boolean;
|
|
@@ -241,6 +251,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
241
251
|
dropItemTarget(item: Item, target: Widget): boolean;
|
|
242
252
|
dropItemSlot(item: Item, slot: number): boolean;
|
|
243
253
|
itemInSlot(slot: number): Item | null;
|
|
254
|
+
get items(): UnitItems;
|
|
244
255
|
addAbility(abilityId: number): UnitAbility | null;
|
|
245
256
|
makeAbilityPermanent(abilityId: number, permanent: true): boolean;
|
|
246
257
|
setAbilityLevel(abilityId: number, level: number): number;
|
|
@@ -323,9 +334,10 @@ export declare class Unit extends Handle<junit> {
|
|
|
323
334
|
static readonly autoAttackStartEvent: UnitTriggerEvent<[Unit]>;
|
|
324
335
|
static readonly onDamaging: Event<[source: Unit | undefined, target: Unit, event: DamagingEvent]>;
|
|
325
336
|
static readonly onDamage: InitializingEvent<[source: Unit | undefined, target: Unit, event: DamageEvent], jtrigger>;
|
|
326
|
-
static
|
|
327
|
-
static
|
|
328
|
-
static
|
|
337
|
+
static itemDroppedEvent: UnitTriggerEvent<[Item]>;
|
|
338
|
+
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
339
|
+
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
340
|
+
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
329
341
|
static get onCreate(): EventDispatcher<[Unit], [Unit]>;
|
|
330
342
|
static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
|
|
331
343
|
getField(field: junitintegerfield | junitrealfield): number;
|
package/engine/internal/unit.lua
CHANGED
|
@@ -7,11 +7,15 @@ 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
|
|
13
16
|
local __TS__Spread = ____lualib.__TS__Spread
|
|
14
17
|
local ____exports = {}
|
|
18
|
+
local unitInventorySize, unitItemInSlot, unitDropItemSlot, unitRemoveItemFromSlot, unitAddItem, isItemPowerup, setItemBooleanField
|
|
15
19
|
local ____handle = require("core.types.handle")
|
|
16
20
|
local Handle = ____handle.Handle
|
|
17
21
|
local ____player = require("core.types.player")
|
|
@@ -279,16 +283,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
279
283
|
end
|
|
280
284
|
local function dispatch(event, idGetter, argsGetter)
|
|
281
285
|
local initialized = false
|
|
282
|
-
local x = {}
|
|
283
286
|
return setmetatable(
|
|
284
|
-
|
|
287
|
+
{},
|
|
285
288
|
{
|
|
286
289
|
__index = function(self, id)
|
|
287
290
|
if type(id) ~= "number" then
|
|
288
291
|
return event[id]
|
|
289
292
|
end
|
|
290
293
|
if not initialized then
|
|
291
|
-
local invoke = Event.invoke
|
|
292
294
|
event:addListener(function(...)
|
|
293
295
|
local id = idGetter(...)
|
|
294
296
|
local dispatched = rawget(self, id)
|
|
@@ -326,7 +328,6 @@ local function dispatchAbility(event)
|
|
|
326
328
|
return event[id]
|
|
327
329
|
end
|
|
328
330
|
if not initialized then
|
|
329
|
-
local invoke = Event.invoke
|
|
330
331
|
event:addListener(function(unit, ability, ...)
|
|
331
332
|
local dispatched = rawget(self, ability.typeId)
|
|
332
333
|
if dispatched ~= nil then
|
|
@@ -391,6 +392,37 @@ local getters = {
|
|
|
391
392
|
return BlzGetUnitArmor(unit)
|
|
392
393
|
end
|
|
393
394
|
}
|
|
395
|
+
____exports.UnitItems = __TS__Class()
|
|
396
|
+
local UnitItems = ____exports.UnitItems
|
|
397
|
+
UnitItems.name = "UnitItems"
|
|
398
|
+
function UnitItems.prototype.____constructor(self, handle)
|
|
399
|
+
self.handle = handle
|
|
400
|
+
end
|
|
401
|
+
function UnitItems.prototype.__newindex(self, slot, item)
|
|
402
|
+
local handle = self.handle
|
|
403
|
+
if slot < 0 or slot >= unitInventorySize(handle) then
|
|
404
|
+
return
|
|
405
|
+
end
|
|
406
|
+
unitRemoveItemFromSlot(handle, slot)
|
|
407
|
+
if item ~= nil then
|
|
408
|
+
local itemHandle = item.handle
|
|
409
|
+
local isPowerup = isItemPowerup(itemHandle)
|
|
410
|
+
if isPowerup then
|
|
411
|
+
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
412
|
+
end
|
|
413
|
+
unitAddItem(handle, itemHandle)
|
|
414
|
+
unitDropItemSlot(handle, itemHandle, slot)
|
|
415
|
+
if isPowerup then
|
|
416
|
+
setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
function UnitItems.prototype.__index(self, slot)
|
|
421
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
422
|
+
end
|
|
423
|
+
function UnitItems.prototype.__len(self)
|
|
424
|
+
return unitInventorySize(self.handle)
|
|
425
|
+
end
|
|
394
426
|
____exports.UnitWeapon = __TS__Class()
|
|
395
427
|
local UnitWeapon = ____exports.UnitWeapon
|
|
396
428
|
UnitWeapon.name = "UnitWeapon"
|
|
@@ -543,8 +575,13 @@ __TS__SetDescriptor(
|
|
|
543
575
|
},
|
|
544
576
|
true
|
|
545
577
|
)
|
|
546
|
-
|
|
547
|
-
|
|
578
|
+
unitInventorySize = UnitInventorySize
|
|
579
|
+
unitItemInSlot = UnitItemInSlot
|
|
580
|
+
unitDropItemSlot = UnitDropItemSlot
|
|
581
|
+
unitRemoveItemFromSlot = UnitRemoveItemFromSlot
|
|
582
|
+
unitAddItem = UnitAddItem
|
|
583
|
+
isItemPowerup = IsItemPowerup
|
|
584
|
+
setItemBooleanField = BlzSetItemBooleanField
|
|
548
585
|
local getItemAbility = BlzGetItemAbility
|
|
549
586
|
local getUnitAbility = BlzGetUnitAbility
|
|
550
587
|
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
@@ -817,8 +854,15 @@ end
|
|
|
817
854
|
function Unit.prototype.kill(self)
|
|
818
855
|
killUnit(self.handle)
|
|
819
856
|
end
|
|
820
|
-
function Unit.prototype.revive(self,
|
|
821
|
-
|
|
857
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
858
|
+
local ____ReviveHero_4 = ReviveHero
|
|
859
|
+
local ____array_3 = __TS__SparseArrayNew(self.handle, x, y)
|
|
860
|
+
local ____doEffect_2 = doEffect
|
|
861
|
+
if ____doEffect_2 == nil then
|
|
862
|
+
____doEffect_2 = false
|
|
863
|
+
end
|
|
864
|
+
__TS__SparseArrayPush(____array_3, ____doEffect_2)
|
|
865
|
+
____ReviveHero_4(__TS__SparseArraySpread(____array_3))
|
|
822
866
|
end
|
|
823
867
|
function Unit.prototype.healTarget(self, target, amount)
|
|
824
868
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -858,7 +902,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
858
902
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
859
903
|
end
|
|
860
904
|
function Unit.prototype.itemInSlot(self, slot)
|
|
861
|
-
return Item:of(
|
|
905
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
862
906
|
end
|
|
863
907
|
function Unit.prototype.addAbility(self, abilityId)
|
|
864
908
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -1385,13 +1429,13 @@ __TS__SetDescriptor(
|
|
|
1385
1429
|
end,
|
|
1386
1430
|
set = function(self, isTeamGlowVisible)
|
|
1387
1431
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1388
|
-
local
|
|
1432
|
+
local ____temp_5
|
|
1389
1433
|
if not isTeamGlowVisible then
|
|
1390
|
-
|
|
1434
|
+
____temp_5 = true
|
|
1391
1435
|
else
|
|
1392
|
-
|
|
1436
|
+
____temp_5 = nil
|
|
1393
1437
|
end
|
|
1394
|
-
self[105] =
|
|
1438
|
+
self[105] = ____temp_5
|
|
1395
1439
|
end
|
|
1396
1440
|
},
|
|
1397
1441
|
true
|
|
@@ -1809,6 +1853,16 @@ __TS__SetDescriptor(
|
|
|
1809
1853
|
end},
|
|
1810
1854
|
true
|
|
1811
1855
|
)
|
|
1856
|
+
__TS__SetDescriptor(
|
|
1857
|
+
Unit.prototype,
|
|
1858
|
+
"items",
|
|
1859
|
+
{get = function(self)
|
|
1860
|
+
local items = __TS__New(____exports.UnitItems, self.handle)
|
|
1861
|
+
rawset(self, "items", items)
|
|
1862
|
+
return items
|
|
1863
|
+
end},
|
|
1864
|
+
true
|
|
1865
|
+
)
|
|
1812
1866
|
__TS__SetDescriptor(
|
|
1813
1867
|
Unit.prototype,
|
|
1814
1868
|
"buffIds",
|
|
@@ -2055,7 +2109,6 @@ Unit.onDecay = __TS__New(
|
|
|
2055
2109
|
Unit.onResurrect = __TS__New(
|
|
2056
2110
|
InitializingEvent,
|
|
2057
2111
|
function(event)
|
|
2058
|
-
local invoke = Event.invoke
|
|
2059
2112
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2060
2113
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2061
2114
|
dead[unit] = true
|
|
@@ -2071,10 +2124,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2071
2124
|
Unit.morphEvent = __TS__New(
|
|
2072
2125
|
InitializingEvent,
|
|
2073
2126
|
function(event)
|
|
2127
|
+
local function ifNotLeft(unit)
|
|
2128
|
+
local handle = unit.handle
|
|
2129
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2130
|
+
invoke(event, unit)
|
|
2131
|
+
end
|
|
2132
|
+
end
|
|
2074
2133
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2075
2134
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2076
|
-
|
|
2077
|
-
Timer:run(Event.invoke, event, unit)
|
|
2135
|
+
Timer:run(ifNotLeft, unit)
|
|
2078
2136
|
end
|
|
2079
2137
|
end)
|
|
2080
2138
|
end
|
|
@@ -2112,27 +2170,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2112
2170
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2113
2171
|
InitializingEvent,
|
|
2114
2172
|
function(event)
|
|
2115
|
-
local invoke = Event.invoke
|
|
2116
2173
|
local function listener(unit, id)
|
|
2117
|
-
local
|
|
2174
|
+
local ____GetSpellTargetUnit_result_8
|
|
2118
2175
|
if GetSpellTargetUnit() then
|
|
2119
|
-
|
|
2176
|
+
____GetSpellTargetUnit_result_8 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2120
2177
|
else
|
|
2121
|
-
local
|
|
2178
|
+
local ____GetSpellTargetItem_result_7
|
|
2122
2179
|
if GetSpellTargetItem() then
|
|
2123
|
-
|
|
2180
|
+
____GetSpellTargetItem_result_7 = Item:of(GetSpellTargetItem())
|
|
2124
2181
|
else
|
|
2125
|
-
local
|
|
2182
|
+
local ____GetSpellTargetDestructable_result_6
|
|
2126
2183
|
if GetSpellTargetDestructable() then
|
|
2127
|
-
|
|
2184
|
+
____GetSpellTargetDestructable_result_6 = Destructable:of(GetSpellTargetDestructable())
|
|
2128
2185
|
else
|
|
2129
|
-
|
|
2186
|
+
____GetSpellTargetDestructable_result_6 = nil
|
|
2130
2187
|
end
|
|
2131
|
-
|
|
2188
|
+
____GetSpellTargetItem_result_7 = ____GetSpellTargetDestructable_result_6
|
|
2132
2189
|
end
|
|
2133
|
-
|
|
2190
|
+
____GetSpellTargetUnit_result_8 = ____GetSpellTargetItem_result_7
|
|
2134
2191
|
end
|
|
2135
|
-
local target =
|
|
2192
|
+
local target = ____GetSpellTargetUnit_result_8
|
|
2136
2193
|
if target then
|
|
2137
2194
|
invoke(event, unit, id, target)
|
|
2138
2195
|
end
|
|
@@ -2329,7 +2386,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2329
2386
|
)
|
|
2330
2387
|
Unit.onDamaging = (function()
|
|
2331
2388
|
local event = __TS__New(Event)
|
|
2332
|
-
local invoke = Event.invoke
|
|
2333
2389
|
local trigger = CreateTrigger()
|
|
2334
2390
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2335
2391
|
TriggerAddCondition(
|
|
@@ -2428,7 +2484,6 @@ end)()
|
|
|
2428
2484
|
Unit.onDamage = __TS__New(
|
|
2429
2485
|
InitializingEvent,
|
|
2430
2486
|
function(event)
|
|
2431
|
-
local invoke = Event.invoke
|
|
2432
2487
|
local trigger = CreateTrigger()
|
|
2433
2488
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2434
2489
|
TriggerAddCondition(
|
|
@@ -2444,6 +2499,7 @@ Unit.onDamage = __TS__New(
|
|
|
2444
2499
|
damageType = BlzGetEventDamageType(),
|
|
2445
2500
|
weaponType = BlzGetEventWeaponType(),
|
|
2446
2501
|
isAttack = BlzGetEventIsAttack(),
|
|
2502
|
+
originalAmount = GetEventDamage(),
|
|
2447
2503
|
preventDeath = damageEventPreventDeath
|
|
2448
2504
|
}
|
|
2449
2505
|
local evData = setmetatable(
|
|
@@ -2494,7 +2550,7 @@ Unit.onDamage = __TS__New(
|
|
|
2494
2550
|
DestroyTrigger(trigger)
|
|
2495
2551
|
end
|
|
2496
2552
|
)
|
|
2497
|
-
Unit.
|
|
2553
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2498
2554
|
____exports.UnitTriggerEvent,
|
|
2499
2555
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2500
2556
|
function()
|
|
@@ -2505,7 +2561,7 @@ Unit.onItemDrop = __TS__New(
|
|
|
2505
2561
|
return IgnoreEvent
|
|
2506
2562
|
end
|
|
2507
2563
|
)
|
|
2508
|
-
Unit.
|
|
2564
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2509
2565
|
____exports.UnitTriggerEvent,
|
|
2510
2566
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2511
2567
|
function()
|
|
@@ -2516,10 +2572,15 @@ Unit.onItemPickup = __TS__New(
|
|
|
2516
2572
|
return IgnoreEvent
|
|
2517
2573
|
end
|
|
2518
2574
|
)
|
|
2519
|
-
Unit.
|
|
2575
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2520
2576
|
____exports.UnitTriggerEvent,
|
|
2521
2577
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2522
|
-
function() return ____exports.Unit:of(
|
|
2578
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2579
|
+
)
|
|
2580
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2581
|
+
____exports.UnitTriggerEvent,
|
|
2582
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2583
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2523
2584
|
)
|
|
2524
2585
|
__TS__ObjectDefineProperty(
|
|
2525
2586
|
Unit,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class MineAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get activationDelay(): number[];
|
|
7
|
+
set activationDelay(activationDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
get invisibilityDelay(): number[];
|
|
9
|
+
set invisibilityDelay(invisibilityDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
10
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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.MineAbilityType = __TS__Class()
|
|
9
|
+
local MineAbilityType = ____exports.MineAbilityType
|
|
10
|
+
MineAbilityType.name = "MineAbilityType"
|
|
11
|
+
__TS__ClassExtends(MineAbilityType, AbilityType)
|
|
12
|
+
MineAbilityType.BASE_ID = fourCC("Amin")
|
|
13
|
+
__TS__SetDescriptor(
|
|
14
|
+
MineAbilityType.prototype,
|
|
15
|
+
"activationDelay",
|
|
16
|
+
{
|
|
17
|
+
get = function(self)
|
|
18
|
+
return self:getNumberLevelField("Min1")
|
|
19
|
+
end,
|
|
20
|
+
set = function(self, activationDelay)
|
|
21
|
+
self:setNumberLevelField("Min1", activationDelay)
|
|
22
|
+
end
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
)
|
|
26
|
+
__TS__SetDescriptor(
|
|
27
|
+
MineAbilityType.prototype,
|
|
28
|
+
"invisibilityDelay",
|
|
29
|
+
{
|
|
30
|
+
get = function(self)
|
|
31
|
+
return self:getNumberLevelField("Min2")
|
|
32
|
+
end,
|
|
33
|
+
set = function(self, invisibilityDelay)
|
|
34
|
+
self:setNumberLevelField("Min2", invisibilityDelay)
|
|
35
|
+
end
|
|
36
|
+
},
|
|
37
|
+
true
|
|
38
|
+
)
|
|
39
|
+
return ____exports
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="warpack-types/warpack" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset";
|
|
4
3
|
import { MutableKeys } from "../../utility/types";
|
|
@@ -10,8 +9,8 @@ export type ObjectDataEntryConstructor<T extends ObjectDataEntry> = OmitConstruc
|
|
|
10
9
|
export type ObjectDataEntryAbstractConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (abstract new (object: WarObject) => T);
|
|
11
10
|
export type ObjectDataEntryProperties<T extends ObjectDataEntry> = Partial<T[MutableKeys<T>]>;
|
|
12
11
|
export type ObjectDataEntryLevelFieldValueSupplier<ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType> = ValueType | readonly ValueType[] | ((level: number, currentValue: InputValueType) => ValueType);
|
|
13
|
-
export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | Record<string, any
|
|
14
|
-
export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | Record<string, any
|
|
12
|
+
export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType;
|
|
13
|
+
export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | undefined | Record<string, any>, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S>, level: number, currentValue: S) => S;
|
|
15
14
|
export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = ObjectDataEntryId> {
|
|
16
15
|
protected readonly object: WarObject;
|
|
17
16
|
static readonly BASE_ID: ObjectDataEntryId;
|
|
@@ -6,6 +6,9 @@ import { ObjectDataEntryId } from "../object-data/entry";
|
|
|
6
6
|
import { LightningTypeId } from "../object-data/entry/lightning-type";
|
|
7
7
|
import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
|
|
8
8
|
import { UnitTypeId } from "../object-data/entry/unit-type";
|
|
9
|
+
import { BuffResistanceType } from "../object-data/auxiliary/buff-resistance-type";
|
|
10
|
+
import { BuffPolarity } from "../object-data/auxiliary/buff-polarity";
|
|
11
|
+
import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
|
|
9
12
|
export declare abstract class AbilityField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectField<AbilityType, Ability, ValueType, NativeFieldType> {
|
|
10
13
|
protected get instanceClass(): typeof Ability;
|
|
11
14
|
protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
|
|
@@ -107,6 +110,20 @@ export declare class AbilityAbilityTypeIdLevelField extends AbilityObjectDataEnt
|
|
|
107
110
|
}
|
|
108
111
|
export declare class AbilityUnitTypeIdLevelField extends AbilityObjectDataEntryIdLevelField<UnitTypeId> {
|
|
109
112
|
}
|
|
113
|
+
export declare abstract class AbilityEnumLevelField<T extends number> extends AbilityLevelField<T, T, jabilityintegerlevelfield> {
|
|
114
|
+
protected abstract values: ReadonlyNonEmptyLinkedSet<T>;
|
|
115
|
+
protected get defaultValue(): T;
|
|
116
|
+
protected getNativeFieldById(id: number): jabilityintegerlevelfield;
|
|
117
|
+
protected getNativeFieldValue(instance: Ability, level: number): T;
|
|
118
|
+
protected setNativeFieldValue(instance: Ability, level: number, value: T): boolean;
|
|
119
|
+
static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityBooleanLevelField>;
|
|
120
|
+
}
|
|
121
|
+
export declare class AbilityBuffPolarityLevelField extends AbilityEnumLevelField<BuffPolarity> {
|
|
122
|
+
protected values: ReadonlyNonEmptyLinkedSet<BuffPolarity>;
|
|
123
|
+
}
|
|
124
|
+
export declare class AbilityBuffResistanceTypeLevelField extends AbilityEnumLevelField<BuffResistanceType> {
|
|
125
|
+
protected values: ReadonlyNonEmptyLinkedSet<BuffResistanceType>;
|
|
126
|
+
}
|
|
110
127
|
export declare class AbilityCombatClassificationsLevelField extends AbilityLevelField<CombatClassifications, CombatClassifications, jabilityintegerlevelfield> {
|
|
111
128
|
protected get defaultValue(): CombatClassifications;
|
|
112
129
|
protected getNativeFieldById(id: number): jabilityintegerlevelfield;
|
|
@@ -114,4 +131,4 @@ export declare class AbilityCombatClassificationsLevelField extends AbilityLevel
|
|
|
114
131
|
protected setNativeFieldValue(instance: Ability, level: number, value: CombatClassifications): boolean;
|
|
115
132
|
}
|
|
116
133
|
export type AbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType> | ((ability: Ability) => ValueType);
|
|
117
|
-
export declare const resolveCurrentAbilityDependentValue: <ValueType extends
|
|
134
|
+
export declare const resolveCurrentAbilityDependentValue: <ValueType extends boolean | number | string>(ability: Ability, value: AbilityDependentValue<ValueType>) => ValueType;
|
|
@@ -13,6 +13,8 @@ local ObjectField = ____object_2Dfield.ObjectField
|
|
|
13
13
|
local ObjectLevelField = ____object_2Dfield.ObjectLevelField
|
|
14
14
|
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
15
15
|
local AbilityType = ____ability_2Dtype.AbilityType
|
|
16
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
17
|
+
local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
|
|
16
18
|
local convertAbilityBooleanField = _G.ConvertAbilityBooleanField
|
|
17
19
|
local convertAbilityIntegerField = _G.ConvertAbilityIntegerField
|
|
18
20
|
local convertAbilityRealField = _G.ConvertAbilityRealField
|
|
@@ -431,6 +433,54 @@ ____exports.AbilityUnitTypeIdLevelField = __TS__Class()
|
|
|
431
433
|
local AbilityUnitTypeIdLevelField = ____exports.AbilityUnitTypeIdLevelField
|
|
432
434
|
AbilityUnitTypeIdLevelField.name = "AbilityUnitTypeIdLevelField"
|
|
433
435
|
__TS__ClassExtends(AbilityUnitTypeIdLevelField, ____exports.AbilityObjectDataEntryIdLevelField)
|
|
436
|
+
____exports.AbilityEnumLevelField = __TS__Class()
|
|
437
|
+
local AbilityEnumLevelField = ____exports.AbilityEnumLevelField
|
|
438
|
+
AbilityEnumLevelField.name = "AbilityEnumLevelField"
|
|
439
|
+
__TS__ClassExtends(AbilityEnumLevelField, ____exports.AbilityLevelField)
|
|
440
|
+
function AbilityEnumLevelField.prototype.getNativeFieldById(self, id)
|
|
441
|
+
return convertAbilityIntegerLevelField(id)
|
|
442
|
+
end
|
|
443
|
+
function AbilityEnumLevelField.prototype.getNativeFieldValue(self, instance, level)
|
|
444
|
+
local value = instance:getField(self.nativeField, level)
|
|
445
|
+
if self.values:contains(value) then
|
|
446
|
+
return value
|
|
447
|
+
end
|
|
448
|
+
return self.values:first()
|
|
449
|
+
end
|
|
450
|
+
function AbilityEnumLevelField.prototype.setNativeFieldValue(self, instance, level, value)
|
|
451
|
+
return instance:setField(self.nativeField, level, value)
|
|
452
|
+
end
|
|
453
|
+
__TS__SetDescriptor(
|
|
454
|
+
AbilityEnumLevelField.prototype,
|
|
455
|
+
"defaultValue",
|
|
456
|
+
{get = function(self)
|
|
457
|
+
return self.values:first()
|
|
458
|
+
end},
|
|
459
|
+
true
|
|
460
|
+
)
|
|
461
|
+
__TS__ObjectDefineProperty(
|
|
462
|
+
AbilityEnumLevelField,
|
|
463
|
+
"valueChangeEvent",
|
|
464
|
+
{get = function(self)
|
|
465
|
+
return self:getOrCreateValueChangeEvent()
|
|
466
|
+
end}
|
|
467
|
+
)
|
|
468
|
+
____exports.AbilityBuffPolarityLevelField = __TS__Class()
|
|
469
|
+
local AbilityBuffPolarityLevelField = ____exports.AbilityBuffPolarityLevelField
|
|
470
|
+
AbilityBuffPolarityLevelField.name = "AbilityBuffPolarityLevelField"
|
|
471
|
+
__TS__ClassExtends(AbilityBuffPolarityLevelField, ____exports.AbilityEnumLevelField)
|
|
472
|
+
function AbilityBuffPolarityLevelField.prototype.____constructor(self, ...)
|
|
473
|
+
AbilityBuffPolarityLevelField.____super.prototype.____constructor(self, ...)
|
|
474
|
+
self.values = nonEmptyLinkedSetOf(0, 1, 2)
|
|
475
|
+
end
|
|
476
|
+
____exports.AbilityBuffResistanceTypeLevelField = __TS__Class()
|
|
477
|
+
local AbilityBuffResistanceTypeLevelField = ____exports.AbilityBuffResistanceTypeLevelField
|
|
478
|
+
AbilityBuffResistanceTypeLevelField.name = "AbilityBuffResistanceTypeLevelField"
|
|
479
|
+
__TS__ClassExtends(AbilityBuffResistanceTypeLevelField, ____exports.AbilityEnumLevelField)
|
|
480
|
+
function AbilityBuffResistanceTypeLevelField.prototype.____constructor(self, ...)
|
|
481
|
+
AbilityBuffResistanceTypeLevelField.____super.prototype.____constructor(self, ...)
|
|
482
|
+
self.values = nonEmptyLinkedSetOf(1, 2, 3)
|
|
483
|
+
end
|
|
434
484
|
local allowedTargetCombatClassificationsByLevelByAbilityTypeId = postcompile(function()
|
|
435
485
|
local allowedTargetCombatClassificationsByLevelByAbilityTypeId = {}
|
|
436
486
|
for ____, abilityType in ipairs(AbilityType:getAll()) do
|
package/engine/object-field.d.ts
CHANGED
package/engine/random.d.ts
CHANGED
package/engine/random.lua
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
2
|
local ____math = require("math")
|
|
3
3
|
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
4
|
+
local PI = ____math.PI
|
|
4
5
|
local getRandomInt = GetRandomInt
|
|
5
6
|
local getRandomReal = GetRandomReal
|
|
7
|
+
local cos = math.cos
|
|
8
|
+
local sin = math.sin
|
|
9
|
+
local sqrt = math.sqrt
|
|
6
10
|
____exports.randomAngle = function() return getRandomReal(0, 360) end
|
|
7
11
|
____exports.randomInteger = function(m, n) return n ~= nil and getRandomInt(m, n) or getRandomInt(0, m or MAXIMUM_INTEGER) end
|
|
8
12
|
____exports.randomFloat = function(m, n) return n ~= nil and getRandomReal(m, n) or getRandomReal(0, m or MAXIMUM_INTEGER) end
|
|
13
|
+
____exports.randomXY = function(centerX, centerY, range)
|
|
14
|
+
local r = range * sqrt(getRandomReal(0, 1))
|
|
15
|
+
local t = getRandomReal(0, 1) * 2 * PI
|
|
16
|
+
return centerX + r * cos(t), centerY + r * sin(t)
|
|
17
|
+
end
|
|
9
18
|
return ____exports
|
|
@@ -98,6 +98,7 @@ export declare const WENDIGO_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
|
98
98
|
export declare const WENDIGO_SHAMAN_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
99
99
|
export declare const WILDKIN_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
100
100
|
export declare const WRAITH_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
101
|
+
export declare const GOBLIN_LAND_MINE_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
101
102
|
export declare const CIRCLE_OF_POWER_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
102
103
|
export declare const CIRCLE_OF_POWER_MEDIUM_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
103
104
|
export declare const CIRCLE_OF_POWER_LARGE_UNIT_TYPE_ID: StandardUnitTypeId;
|