warscript 0.0.1-dev.6f480d0 → 0.0.1-dev.797e3f9
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 +13 -0
- package/attributes.lua +16 -0
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +1 -2
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +2 -0
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -0
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -0
- package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- package/engine/object-data/entry/buff-type/applicable.lua +27 -71
- package/engine/object-data/entry/unit-type.d.ts +21 -0
- package/engine/object-data/entry/unit-type.lua +198 -44
- package/engine/standard/entries/unit-type.d.ts +3 -0
- package/engine/standard/entries/unit-type.lua +3 -0
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/global/vec2.lua +1 -0
- package/package.json +2 -3
- package/string.d.ts +14 -0
- package/string.lua +9 -0
- package/utility/types.d.ts +2 -2
package/attributes.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
|
+
/** @noSelfInFile */
|
|
3
|
+
export type Attribute<T> = {
|
|
4
|
+
readonly __attribute: unique symbol;
|
|
5
|
+
readonly __type: T;
|
|
6
|
+
} & symbol;
|
|
7
|
+
export declare namespace Attribute {
|
|
8
|
+
const create: <T>() => Attribute<T>;
|
|
9
|
+
}
|
|
10
|
+
export declare class AttributesHolder {
|
|
11
|
+
readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
|
|
12
|
+
readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
|
|
13
|
+
}
|
package/attributes.lua
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
____exports.Attribute = {}
|
|
5
|
+
local Attribute = ____exports.Attribute
|
|
6
|
+
do
|
|
7
|
+
Attribute.create = function()
|
|
8
|
+
return {}
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
____exports.AttributesHolder = __TS__Class()
|
|
12
|
+
local AttributesHolder = ____exports.AttributesHolder
|
|
13
|
+
AttributesHolder.name = "AttributesHolder"
|
|
14
|
+
function AttributesHolder.prototype.____constructor(self)
|
|
15
|
+
end
|
|
16
|
+
return ____exports
|
package/core/types/handle.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Event } from "../../event";
|
|
3
|
+
import { AttributesHolder } from "../../attributes";
|
|
3
4
|
export type HandleConstructor<H extends jhandle, T extends Handle<H>, Args extends any[]> = new (handle: H, ...args: Args) => T;
|
|
4
5
|
export type HandleDestructor = {
|
|
5
6
|
readonly __handleDestructor: unique symbol;
|
|
@@ -11,7 +12,7 @@ type NoOverride = {
|
|
|
11
12
|
declare const enum HandlePropertyKey {
|
|
12
13
|
STATE = 0
|
|
13
14
|
}
|
|
14
|
-
export declare class Handle<H extends jhandle, DestroyParameters extends any[] = []> implements Destroyable {
|
|
15
|
+
export declare class Handle<H extends jhandle, DestroyParameters extends any[] = []> extends AttributesHolder implements Destroyable {
|
|
15
16
|
readonly handle: H;
|
|
16
17
|
private [HandlePropertyKey.STATE]?;
|
|
17
18
|
private onDestroyEvent?;
|
package/core/types/handle.lua
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
3
4
|
local __TS__New = ____lualib.__TS__New
|
|
4
5
|
local __TS__Delete = ____lualib.__TS__Delete
|
|
5
6
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
@@ -12,13 +13,17 @@ local getClass = ____reflection.getClass
|
|
|
12
13
|
local getSuperclass = ____reflection.getSuperclass
|
|
13
14
|
local ____exception = require("exception")
|
|
14
15
|
local IllegalStateException = ____exception.IllegalStateException
|
|
16
|
+
local ____attributes = require("attributes")
|
|
17
|
+
local AttributesHolder = ____attributes.AttributesHolder
|
|
15
18
|
local getHandleId = GetHandleId
|
|
16
19
|
local onCreateEventByHandleConstructor = {}
|
|
17
20
|
local onDestroyEventByHandleConstructor = {}
|
|
18
21
|
____exports.Handle = __TS__Class()
|
|
19
22
|
local Handle = ____exports.Handle
|
|
20
23
|
Handle.name = "Handle"
|
|
24
|
+
__TS__ClassExtends(Handle, AttributesHolder)
|
|
21
25
|
function Handle.prototype.____constructor(self, handle)
|
|
26
|
+
AttributesHolder.prototype.____constructor(self)
|
|
22
27
|
self[0] = 0
|
|
23
28
|
local id = getHandleId(handle)
|
|
24
29
|
local clazz = self.constructor
|
|
@@ -3,14 +3,13 @@ import { AbilityBehavior } from "../ability";
|
|
|
3
3
|
import { Ability } from "../../internal/ability";
|
|
4
4
|
import { UnitBehavior } from "../unit";
|
|
5
5
|
import { Unit } from "../../internal/unit";
|
|
6
|
-
import { MutableKeys } from "../../../utility/types";
|
|
7
6
|
import { AbilityDependentValue } from "../../object-field/ability";
|
|
8
7
|
export declare class ApplyUnitBehaviorAbilityBehavior<T extends UnitBehavior> extends AbilityBehavior {
|
|
9
8
|
private readonly unitBehaviorConstructor;
|
|
10
9
|
private readonly parameters?;
|
|
11
10
|
private readonly keys?;
|
|
12
11
|
private unitBehavior?;
|
|
13
|
-
constructor(ability: Ability, unitBehaviorConstructor: new (unit: Unit) => T, parameters?: Partial<{ [K in
|
|
12
|
+
constructor(ability: Ability, unitBehaviorConstructor: new (unit: Unit) => T, parameters?: Partial<{ [K in keyof T & { [P in keyof T]-?: (<T_1>() => T_1 extends { [Q in P]: T[P]; } ? 1 : 2) extends <T_2>() => T_2 extends { -readonly [Q_1 in P]: T[P]; } ? 1 : 2 ? P : never; }[keyof T] & KeysOfType<T, string | number | boolean>]: T[K] extends string | number | boolean ? AbilityDependentValue<T[K]> : never; }> | undefined);
|
|
14
13
|
update(): void;
|
|
15
14
|
onUnitGainAbility(unit: Unit): void;
|
|
16
15
|
onUnitLoseAbility(): void;
|
|
@@ -4,6 +4,8 @@ local UnitClassification = ____unit.UnitClassification
|
|
|
4
4
|
local ____ability = require("engine.standard.fields.ability")
|
|
5
5
|
local DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD
|
|
6
6
|
local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD
|
|
7
|
+
---
|
|
8
|
+
-- @internal For use by internal systems only.
|
|
7
9
|
____exports.getAbilityDuration = function(ability, target)
|
|
8
10
|
local level = ability.level
|
|
9
11
|
return target ~= nil and target:hasClassification(UnitClassification.RESISTANT) and DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level) or DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD:getValue(ability, level)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
3
|
+
local AbilityType = ____ability_2Dtype.AbilityType
|
|
4
|
+
local ____dummy_2Ditem = require("engine.internal.object-data.dummy-item")
|
|
5
|
+
local DUMMY_ITEM_ID = ____dummy_2Ditem.DUMMY_ITEM_ID
|
|
6
|
+
local ____dummy_2Dunits = require("engine.internal.misc.dummy-units")
|
|
7
|
+
local INVENTORY_DUMMY_NATIVE_UNIT = ____dummy_2Dunits.INVENTORY_DUMMY_NATIVE_UNIT
|
|
8
|
+
local ____preconditions = require("utility.preconditions")
|
|
9
|
+
local checkNotNull = ____preconditions.checkNotNull
|
|
10
|
+
local ____dummy_2Dinventory = require("engine.internal.object-data.dummy-inventory")
|
|
11
|
+
local INVENTORY_ABILITY_TYPE_ID = ____dummy_2Dinventory.INVENTORY_ABILITY_TYPE_ID
|
|
12
|
+
local ____arrays = require("utility.arrays")
|
|
13
|
+
local map = ____arrays.map
|
|
14
|
+
local toLuaSet = ____arrays.toLuaSet
|
|
15
|
+
local createItem = CreateItem
|
|
16
|
+
local getAbilityId = BlzGetAbilityId
|
|
17
|
+
local getItemAbility = BlzGetItemAbility
|
|
18
|
+
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
19
|
+
local itemAddAbility = BlzItemAddAbility
|
|
20
|
+
local setItemBooleanField = BlzSetItemBooleanField
|
|
21
|
+
local removeItem = RemoveItem
|
|
22
|
+
local unitAddAbility = UnitAddAbility
|
|
23
|
+
local unitAddItem = UnitAddItem
|
|
24
|
+
local unitDropItemSlot = UnitDropItemSlot
|
|
25
|
+
local unitInventorySize = UnitInventorySize
|
|
26
|
+
local unitRemoveAbility = UnitRemoveAbility
|
|
27
|
+
local unitRemoveItemFromSlot = UnitRemoveItemFromSlot
|
|
28
|
+
local INVENTORY_ABILITY_TYPE_IDS = postcompile(function()
|
|
29
|
+
return toLuaSet(AbilityType:getAllIdsByBaseIds(map({
|
|
30
|
+
"AInv",
|
|
31
|
+
"Aihn",
|
|
32
|
+
"Aien",
|
|
33
|
+
"Aion",
|
|
34
|
+
"Aiun"
|
|
35
|
+
}, fourCC)))
|
|
36
|
+
end)
|
|
37
|
+
---
|
|
38
|
+
-- @internal For use by internal systems only.
|
|
39
|
+
____exports.castAbility = function(nativeUnit, abilityTypeId, prepareAbility, ...)
|
|
40
|
+
local nativeItem = createItem(DUMMY_ITEM_ID, 0, 0)
|
|
41
|
+
unitAddItem(INVENTORY_DUMMY_NATIVE_UNIT, nativeItem)
|
|
42
|
+
itemAddAbility(nativeItem, abilityTypeId)
|
|
43
|
+
local nativeAbility = checkNotNull(getItemAbility(nativeItem, abilityTypeId))
|
|
44
|
+
if prepareAbility ~= nil then
|
|
45
|
+
prepareAbility(nativeAbility, ...)
|
|
46
|
+
end
|
|
47
|
+
setItemBooleanField(nativeItem, ITEM_BF_ACTIVELY_USED, true)
|
|
48
|
+
setItemBooleanField(nativeItem, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
49
|
+
local success
|
|
50
|
+
if unitAddItem(nativeUnit, nativeItem) then
|
|
51
|
+
success = true
|
|
52
|
+
else
|
|
53
|
+
local latestInventoryAbilityTypeId = 0
|
|
54
|
+
local nativeItemBySlot = {}
|
|
55
|
+
local inventorySize = unitInventorySize(nativeUnit)
|
|
56
|
+
if inventorySize ~= 0 then
|
|
57
|
+
for slot = 0, inventorySize - 1 do
|
|
58
|
+
nativeItemBySlot[slot] = unitRemoveItemFromSlot(nativeUnit, slot)
|
|
59
|
+
end
|
|
60
|
+
local unitNativeAbility = getUnitAbilityByIndex(nativeUnit, 0)
|
|
61
|
+
local i = 1
|
|
62
|
+
while unitNativeAbility ~= nil do
|
|
63
|
+
local abilityTypeId = getAbilityId(unitNativeAbility)
|
|
64
|
+
if INVENTORY_ABILITY_TYPE_IDS[abilityTypeId] ~= nil then
|
|
65
|
+
latestInventoryAbilityTypeId = abilityTypeId
|
|
66
|
+
end
|
|
67
|
+
unitNativeAbility = getUnitAbilityByIndex(nativeUnit, i)
|
|
68
|
+
i = i + 1
|
|
69
|
+
end
|
|
70
|
+
unitRemoveAbility(nativeUnit, latestInventoryAbilityTypeId)
|
|
71
|
+
end
|
|
72
|
+
unitAddAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
|
|
73
|
+
success = unitAddItem(nativeUnit, nativeItem)
|
|
74
|
+
unitRemoveAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
|
|
75
|
+
if latestInventoryAbilityTypeId ~= 0 then
|
|
76
|
+
unitAddAbility(nativeUnit, latestInventoryAbilityTypeId)
|
|
77
|
+
for slot, nativeItem in pairs(nativeItemBySlot) do
|
|
78
|
+
unitAddItem(nativeUnit, nativeItem)
|
|
79
|
+
unitDropItemSlot(nativeUnit, nativeItem, slot)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
removeItem(nativeItem)
|
|
84
|
+
return success
|
|
85
|
+
end
|
|
86
|
+
return ____exports
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____unit = require("engine.internal.unit")
|
|
3
|
+
local Unit = ____unit.Unit
|
|
4
|
+
local ____cast_2Dability = require("engine.internal.mechanics.cast-ability")
|
|
5
|
+
local castAbility = ____cast_2Dability.castAbility
|
|
6
|
+
local ____blink = require("engine.object-data.entry.ability-type.blink")
|
|
7
|
+
local BlinkAbilityType = ____blink.BlinkAbilityType
|
|
8
|
+
local ____math = require("math")
|
|
9
|
+
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
10
|
+
local getUnitX = GetUnitX
|
|
11
|
+
local getUnitY = GetUnitY
|
|
12
|
+
local setUnitX = SetUnitX
|
|
13
|
+
local setUnitY = SetUnitY
|
|
14
|
+
local BLINK_ABILITY_TYPE_ID = compiletime(function()
|
|
15
|
+
local abilityType = BlinkAbilityType:create()
|
|
16
|
+
abilityType.minimumRange = 0
|
|
17
|
+
abilityType.maximumRange = MAXIMUM_INTEGER
|
|
18
|
+
abilityType.manaCost = 0
|
|
19
|
+
abilityType.cooldown = 0
|
|
20
|
+
return abilityType.id
|
|
21
|
+
end)
|
|
22
|
+
Unit.prototype.detachMissiles = function(self)
|
|
23
|
+
local nativeUnit = self.handle
|
|
24
|
+
local x = getUnitX(nativeUnit)
|
|
25
|
+
local y = getUnitY(nativeUnit)
|
|
26
|
+
castAbility(nativeUnit, BLINK_ABILITY_TYPE_ID)
|
|
27
|
+
setUnitX(nativeUnit, x)
|
|
28
|
+
setUnitY(nativeUnit, y)
|
|
29
|
+
end
|
|
30
|
+
return ____exports
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class BlinkAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get maximumRange(): number[];
|
|
7
|
+
set maximumRange(maximumRange: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
get minimumRange(): number[];
|
|
9
|
+
set minimumRange(minimumRange: 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.BlinkAbilityType = __TS__Class()
|
|
9
|
+
local BlinkAbilityType = ____exports.BlinkAbilityType
|
|
10
|
+
BlinkAbilityType.name = "BlinkAbilityType"
|
|
11
|
+
__TS__ClassExtends(BlinkAbilityType, AbilityType)
|
|
12
|
+
BlinkAbilityType.BASE_ID = fourCC("AEbl")
|
|
13
|
+
__TS__SetDescriptor(
|
|
14
|
+
BlinkAbilityType.prototype,
|
|
15
|
+
"maximumRange",
|
|
16
|
+
{
|
|
17
|
+
get = function(self)
|
|
18
|
+
return self:getNumberLevelField("Ebl1")
|
|
19
|
+
end,
|
|
20
|
+
set = function(self, maximumRange)
|
|
21
|
+
self:setNumberLevelField("Ebl1", maximumRange)
|
|
22
|
+
end
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
)
|
|
26
|
+
__TS__SetDescriptor(
|
|
27
|
+
BlinkAbilityType.prototype,
|
|
28
|
+
"minimumRange",
|
|
29
|
+
{
|
|
30
|
+
get = function(self)
|
|
31
|
+
return self:getNumberLevelField("Ebl2")
|
|
32
|
+
end,
|
|
33
|
+
set = function(self, minimumRange)
|
|
34
|
+
self:setNumberLevelField("Ebl2", minimumRange)
|
|
35
|
+
end
|
|
36
|
+
},
|
|
37
|
+
true
|
|
38
|
+
)
|
|
39
|
+
return ____exports
|
|
@@ -7,6 +7,7 @@ local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
|
7
7
|
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
8
8
|
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
9
9
|
local ____exports = {}
|
|
10
|
+
local preparePhysicalPositiveApplicatorAbility
|
|
10
11
|
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
11
12
|
local AbilityType = ____ability_2Dtype.AbilityType
|
|
12
13
|
local ____cripple = require("engine.object-data.entry.ability-type.cripple")
|
|
@@ -34,20 +35,14 @@ local ____blood_2Dlust = require("engine.object-data.entry.ability-type.blood-lu
|
|
|
34
35
|
local BloodLustAbilityType = ____blood_2Dlust.BloodLustAbilityType
|
|
35
36
|
local ____berserk = require("engine.object-data.entry.ability-type.berserk")
|
|
36
37
|
local BerserkAbilityType = ____berserk.BerserkAbilityType
|
|
37
|
-
local ____dummy_2Ditem = require("engine.internal.object-data.dummy-item")
|
|
38
|
-
local DUMMY_ITEM_ID = ____dummy_2Ditem.DUMMY_ITEM_ID
|
|
39
|
-
local ____dummy_2Dinventory = require("engine.internal.object-data.dummy-inventory")
|
|
40
|
-
local INVENTORY_ABILITY_TYPE_ID = ____dummy_2Dinventory.INVENTORY_ABILITY_TYPE_ID
|
|
41
38
|
local ____blank = require("engine.object-data.entry.upgrade.blank")
|
|
42
39
|
local BlankUpgrade = ____blank.BlankUpgrade
|
|
43
|
-
local ____dummy_2Dunits = require("engine.internal.misc.dummy-units")
|
|
44
|
-
local INVENTORY_DUMMY_NATIVE_UNIT = ____dummy_2Dunits.INVENTORY_DUMMY_NATIVE_UNIT
|
|
45
|
-
local ____preconditions = require("utility.preconditions")
|
|
46
|
-
local checkNotNull = ____preconditions.checkNotNull
|
|
47
40
|
local ____unit_2Dtype = require("engine.object-data.entry.unit-type")
|
|
48
41
|
local UnitType = ____unit_2Dtype.UnitType
|
|
49
42
|
local ____permanent_2Dimmolation = require("engine.object-data.entry.ability-type.permanent-immolation")
|
|
50
43
|
local PermanentImmolationAbilityType = ____permanent_2Dimmolation.PermanentImmolationAbilityType
|
|
44
|
+
local ____cast_2Dability = require("engine.internal.mechanics.cast-ability")
|
|
45
|
+
local castAbility = ____cast_2Dability.castAbility
|
|
51
46
|
local createItem = CreateItem
|
|
52
47
|
local getAbilityId = BlzGetAbilityId
|
|
53
48
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -260,75 +255,25 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
260
255
|
return unitAddAbility(unit.handle, applicatorAbilityTypeId)
|
|
261
256
|
end
|
|
262
257
|
if applicatorType == 852100 then
|
|
263
|
-
local
|
|
264
|
-
|
|
265
|
-
local nativeItem = createItem(DUMMY_ITEM_ID, 0, 0)
|
|
266
|
-
unitAddItem(INVENTORY_DUMMY_NATIVE_UNIT, nativeItem)
|
|
267
|
-
itemAddAbility(nativeItem, applicatorAbilityTypeId)
|
|
268
|
-
local applicatorAbility = checkNotNull(getItemAbility(nativeItem, applicatorAbilityTypeId))
|
|
269
|
-
if level == nil then
|
|
270
|
-
level = 0
|
|
271
|
-
setAbilityIntegerField(applicatorAbility, ABILITY_IF_LEVELS, 1)
|
|
272
|
-
end
|
|
273
|
-
setAbilityRealLevelField(applicatorAbility, ABILITY_RLF_DURATION_NORMAL, level, duration or 0)
|
|
274
|
-
setAbilityRealLevelField(applicatorAbility, ABILITY_RLF_DURATION_HERO, level, duration or 0)
|
|
275
|
-
if movementSpeedIncreaseFactor ~= nil then
|
|
276
|
-
setAbilityRealLevelField(applicatorAbility, ABILITY_RLF_MOVEMENT_SPEED_INCREASE_BSK1, level, movementSpeedIncreaseFactor)
|
|
277
|
-
end
|
|
278
|
-
setItemBooleanField(nativeItem, ITEM_BF_ACTIVELY_USED, true)
|
|
279
|
-
setItemBooleanField(nativeItem, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
280
|
-
if level > 0 then
|
|
258
|
+
local nativePlayer = unit.owner.handle
|
|
259
|
+
if level ~= nil and level > 0 then
|
|
281
260
|
local upgradeId = applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId]
|
|
282
261
|
if upgradeId ~= nil then
|
|
283
|
-
setPlayerTechResearched(
|
|
284
|
-
getOwningPlayer(nativeUnit),
|
|
285
|
-
upgradeId,
|
|
286
|
-
level
|
|
287
|
-
)
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
|
-
if not unitAddItem(nativeUnit, nativeItem) then
|
|
291
|
-
local latestInventoryAbilityTypeId = 0
|
|
292
|
-
local nativeItemBySlot = {}
|
|
293
|
-
local inventorySize = unitInventorySize(nativeUnit)
|
|
294
|
-
if inventorySize ~= 0 then
|
|
295
|
-
for slot = 0, inventorySize - 1 do
|
|
296
|
-
nativeItemBySlot[slot] = UnitRemoveItemFromSlot(nativeUnit, slot)
|
|
297
|
-
end
|
|
298
|
-
local unitNativeAbility = getUnitAbilityByIndex(nativeUnit, 0)
|
|
299
|
-
local i = 1
|
|
300
|
-
while unitNativeAbility ~= nil do
|
|
301
|
-
local abilityTypeId = getAbilityId(unitNativeAbility)
|
|
302
|
-
if INVENTORY_ABILITY_TYPE_IDS[abilityTypeId] ~= nil then
|
|
303
|
-
latestInventoryAbilityTypeId = abilityTypeId
|
|
304
|
-
end
|
|
305
|
-
unitNativeAbility = getUnitAbilityByIndex(nativeUnit, i)
|
|
306
|
-
i = i + 1
|
|
307
|
-
end
|
|
308
|
-
unitRemoveAbility(nativeUnit, latestInventoryAbilityTypeId)
|
|
262
|
+
setPlayerTechResearched(nativePlayer, upgradeId, level)
|
|
309
263
|
end
|
|
310
|
-
unitAddAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
|
|
311
|
-
success = unitAddItem(nativeUnit, nativeItem)
|
|
312
|
-
unitRemoveAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
|
|
313
|
-
if latestInventoryAbilityTypeId ~= 0 then
|
|
314
|
-
unitAddAbility(nativeUnit, latestInventoryAbilityTypeId)
|
|
315
|
-
for slot, nativeItem in pairs(nativeItemBySlot) do
|
|
316
|
-
unitAddItem(nativeUnit, nativeItem)
|
|
317
|
-
unitDropItemSlot(nativeUnit, nativeItem, slot)
|
|
318
|
-
end
|
|
319
|
-
end
|
|
320
|
-
else
|
|
321
|
-
success = true
|
|
322
264
|
end
|
|
323
|
-
|
|
324
|
-
|
|
265
|
+
local success = castAbility(
|
|
266
|
+
unit.handle,
|
|
267
|
+
applicatorAbilityTypeId,
|
|
268
|
+
preparePhysicalPositiveApplicatorAbility,
|
|
269
|
+
level,
|
|
270
|
+
duration or 0,
|
|
271
|
+
movementSpeedIncreaseFactor
|
|
272
|
+
)
|
|
273
|
+
if level ~= nil and level > 0 then
|
|
325
274
|
local upgradeId = applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId]
|
|
326
275
|
if upgradeId ~= nil then
|
|
327
|
-
setPlayerTechResearched(
|
|
328
|
-
getOwningPlayer(nativeUnit),
|
|
329
|
-
upgradeId,
|
|
330
|
-
0
|
|
331
|
-
)
|
|
276
|
+
setPlayerTechResearched(nativePlayer, upgradeId, 0)
|
|
332
277
|
end
|
|
333
278
|
end
|
|
334
279
|
return success
|
|
@@ -364,6 +309,17 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
364
309
|
end
|
|
365
310
|
return success
|
|
366
311
|
end
|
|
312
|
+
preparePhysicalPositiveApplicatorAbility = function(ability, level, duration, movementSpeedIncreaseFactor)
|
|
313
|
+
if level == nil then
|
|
314
|
+
setAbilityIntegerField(ability, ABILITY_IF_LEVELS, 1)
|
|
315
|
+
level = 1
|
|
316
|
+
end
|
|
317
|
+
setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_NORMAL, level, duration)
|
|
318
|
+
setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_HERO, level, duration)
|
|
319
|
+
if movementSpeedIncreaseFactor ~= nil then
|
|
320
|
+
setAbilityRealLevelField(ability, ABILITY_RLF_MOVEMENT_SPEED_INCREASE_BSK1, level, movementSpeedIncreaseFactor)
|
|
321
|
+
end
|
|
322
|
+
end
|
|
367
323
|
---
|
|
368
324
|
-- @internal For use by internal systems only.
|
|
369
325
|
____exports.removeBuff = function(unit, applicableBuffTypeId)
|
|
@@ -13,6 +13,7 @@ import { ObjectDataEntryIdGenerator } from "../utility/object-data-entry-id-gene
|
|
|
13
13
|
import type { AbilityTypeId } from "./ability-type";
|
|
14
14
|
import type { UpgradeId } from "./upgrade";
|
|
15
15
|
import { AnimationQualifier } from "../auxiliary/animation-qualifier";
|
|
16
|
+
import { AttackType } from "../auxiliary/attack-type";
|
|
16
17
|
export type UnitTypeId = ObjectDataEntryId & {
|
|
17
18
|
readonly __unitTypeId: unique symbol;
|
|
18
19
|
};
|
|
@@ -23,12 +24,16 @@ export declare class UnitTypeWeapon {
|
|
|
23
24
|
private readonly unitType;
|
|
24
25
|
private readonly index;
|
|
25
26
|
private constructor();
|
|
27
|
+
get attackType(): AttackType;
|
|
28
|
+
set attackType(attackType: AttackType);
|
|
26
29
|
get backSwingDuration(): number;
|
|
27
30
|
set backSwingDuration(backSwingDuration: number);
|
|
28
31
|
get impactDelay(): number;
|
|
29
32
|
set impactDelay(impactDelay: number);
|
|
30
33
|
get missileModelPath(): string;
|
|
31
34
|
set missileModelPath(missileModelPath: string);
|
|
35
|
+
get range(): number;
|
|
36
|
+
set range(range: number);
|
|
32
37
|
get soundType(): WeaponSoundType;
|
|
33
38
|
set soundType(soundType: WeaponSoundType);
|
|
34
39
|
get soundTypeSD(): WeaponSoundType;
|
|
@@ -117,6 +122,12 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
|
|
|
117
122
|
set modelPathSD(modelPathSD: string);
|
|
118
123
|
get modelPathHD(): string;
|
|
119
124
|
set modelPathHD(modelPathHD: string);
|
|
125
|
+
get runSpeed(): number;
|
|
126
|
+
set runSpeed(runSpeed: number);
|
|
127
|
+
get runSpeedSD(): number;
|
|
128
|
+
set runSpeedSD(runSpeedSD: number);
|
|
129
|
+
get runSpeedHD(): number;
|
|
130
|
+
set runSpeedHD(runSpeedHD: number);
|
|
120
131
|
get selectionCircleScale(): number;
|
|
121
132
|
set selectionCircleScale(selectionCircleScale: number);
|
|
122
133
|
get selectionCircleScaleSD(): number;
|
|
@@ -149,6 +160,12 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
|
|
|
149
160
|
set shadowImageXOffset(shadowImageXOffset: number);
|
|
150
161
|
get shadowImageYOffset(): number;
|
|
151
162
|
set shadowImageYOffset(shadowImageYOffset: number);
|
|
163
|
+
get walkSpeed(): number;
|
|
164
|
+
set walkSpeed(walkSpeed: number);
|
|
165
|
+
get walkSpeedSD(): number;
|
|
166
|
+
set walkSpeedSD(walkSpeedSD: number);
|
|
167
|
+
get walkSpeedHD(): number;
|
|
168
|
+
set walkSpeedHD(walkSpeedHD: number);
|
|
152
169
|
get armorSoundType(): ArmorSoundType;
|
|
153
170
|
set armorSoundType(armorSoundType: ArmorSoundType);
|
|
154
171
|
get armorSoundTypeSD(): ArmorSoundType;
|
|
@@ -215,4 +232,8 @@ export declare abstract class HeroUnitType<Id extends HeroUnitTypeId = HeroUnitT
|
|
|
215
232
|
protected static generateId(): number;
|
|
216
233
|
get heroAbilityTypeIds(): AbilityTypeId[];
|
|
217
234
|
set heroAbilityTypeIds(heroAbilityTypeIds: AbilityTypeId[]);
|
|
235
|
+
get properNames(): string[];
|
|
236
|
+
set properNames(properNames: string | string[]);
|
|
237
|
+
get properNameCount(): number;
|
|
238
|
+
set properNameCount(properNameCount: number);
|
|
218
239
|
}
|
|
@@ -3,6 +3,7 @@ local __TS__Class = ____lualib.__TS__Class
|
|
|
3
3
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
6
|
+
local __TS__ArrayIsArray = ____lualib.__TS__ArrayIsArray
|
|
6
7
|
local ____exports = {}
|
|
7
8
|
local ____arrays = require("utility.arrays")
|
|
8
9
|
local arrayOfNotNull = ____arrays.arrayOfNotNull
|
|
@@ -28,21 +29,21 @@ function UnitTypeWeapon.prototype.____constructor(self, unitType, index)
|
|
|
28
29
|
end
|
|
29
30
|
__TS__SetDescriptor(
|
|
30
31
|
UnitTypeWeapon.prototype,
|
|
31
|
-
"
|
|
32
|
+
"attackType",
|
|
32
33
|
{
|
|
33
34
|
get = function(self)
|
|
34
35
|
local ____self_0 = self.unitType
|
|
35
|
-
return ____self_0.
|
|
36
|
+
return ____self_0.getStringField(
|
|
36
37
|
____self_0,
|
|
37
|
-
"
|
|
38
|
+
("ua" .. tostring(self.index)) .. "t"
|
|
38
39
|
)
|
|
39
40
|
end,
|
|
40
|
-
set = function(self,
|
|
41
|
+
set = function(self, attackType)
|
|
41
42
|
local ____self_1 = self.unitType
|
|
42
|
-
____self_1.
|
|
43
|
+
____self_1.setStringField(
|
|
43
44
|
____self_1,
|
|
44
|
-
"
|
|
45
|
-
|
|
45
|
+
("ua" .. tostring(self.index)) .. "t",
|
|
46
|
+
attackType
|
|
46
47
|
)
|
|
47
48
|
end
|
|
48
49
|
},
|
|
@@ -50,21 +51,21 @@ __TS__SetDescriptor(
|
|
|
50
51
|
)
|
|
51
52
|
__TS__SetDescriptor(
|
|
52
53
|
UnitTypeWeapon.prototype,
|
|
53
|
-
"
|
|
54
|
+
"backSwingDuration",
|
|
54
55
|
{
|
|
55
56
|
get = function(self)
|
|
56
57
|
local ____self_2 = self.unitType
|
|
57
58
|
return ____self_2.getNumberField(
|
|
58
59
|
____self_2,
|
|
59
|
-
"
|
|
60
|
+
"ubs" .. tostring(self.index)
|
|
60
61
|
)
|
|
61
62
|
end,
|
|
62
|
-
set = function(self,
|
|
63
|
+
set = function(self, backSwingDuration)
|
|
63
64
|
local ____self_3 = self.unitType
|
|
64
65
|
____self_3.setNumberField(
|
|
65
66
|
____self_3,
|
|
66
|
-
"
|
|
67
|
-
|
|
67
|
+
"ubs" .. tostring(self.index),
|
|
68
|
+
backSwingDuration
|
|
68
69
|
)
|
|
69
70
|
end
|
|
70
71
|
},
|
|
@@ -72,21 +73,21 @@ __TS__SetDescriptor(
|
|
|
72
73
|
)
|
|
73
74
|
__TS__SetDescriptor(
|
|
74
75
|
UnitTypeWeapon.prototype,
|
|
75
|
-
"
|
|
76
|
+
"impactDelay",
|
|
76
77
|
{
|
|
77
78
|
get = function(self)
|
|
78
79
|
local ____self_4 = self.unitType
|
|
79
|
-
return ____self_4.
|
|
80
|
+
return ____self_4.getNumberField(
|
|
80
81
|
____self_4,
|
|
81
|
-
|
|
82
|
+
"udp" .. tostring(self.index)
|
|
82
83
|
)
|
|
83
84
|
end,
|
|
84
|
-
set = function(self,
|
|
85
|
+
set = function(self, impactDelay)
|
|
85
86
|
local ____self_5 = self.unitType
|
|
86
|
-
____self_5.
|
|
87
|
+
____self_5.setNumberField(
|
|
87
88
|
____self_5,
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
"udp" .. tostring(self.index),
|
|
90
|
+
impactDelay
|
|
90
91
|
)
|
|
91
92
|
end
|
|
92
93
|
},
|
|
@@ -94,21 +95,21 @@ __TS__SetDescriptor(
|
|
|
94
95
|
)
|
|
95
96
|
__TS__SetDescriptor(
|
|
96
97
|
UnitTypeWeapon.prototype,
|
|
97
|
-
"
|
|
98
|
+
"missileModelPath",
|
|
98
99
|
{
|
|
99
100
|
get = function(self)
|
|
100
101
|
local ____self_6 = self.unitType
|
|
101
102
|
return ____self_6.getStringField(
|
|
102
103
|
____self_6,
|
|
103
|
-
"
|
|
104
|
+
("ua" .. tostring(self.index)) .. "m"
|
|
104
105
|
)
|
|
105
106
|
end,
|
|
106
|
-
set = function(self,
|
|
107
|
+
set = function(self, missileModelPath)
|
|
107
108
|
local ____self_7 = self.unitType
|
|
108
109
|
____self_7.setStringField(
|
|
109
110
|
____self_7,
|
|
110
|
-
"
|
|
111
|
-
|
|
111
|
+
("ua" .. tostring(self.index)) .. "m",
|
|
112
|
+
missileModelPath
|
|
112
113
|
)
|
|
113
114
|
end
|
|
114
115
|
},
|
|
@@ -116,21 +117,21 @@ __TS__SetDescriptor(
|
|
|
116
117
|
)
|
|
117
118
|
__TS__SetDescriptor(
|
|
118
119
|
UnitTypeWeapon.prototype,
|
|
119
|
-
"
|
|
120
|
+
"range",
|
|
120
121
|
{
|
|
121
122
|
get = function(self)
|
|
122
123
|
local ____self_8 = self.unitType
|
|
123
|
-
return ____self_8.
|
|
124
|
+
return ____self_8.getNumberField(
|
|
124
125
|
____self_8,
|
|
125
|
-
("
|
|
126
|
+
("ua" .. tostring(self.index)) .. "r"
|
|
126
127
|
)
|
|
127
128
|
end,
|
|
128
|
-
set = function(self,
|
|
129
|
+
set = function(self, range)
|
|
129
130
|
local ____self_9 = self.unitType
|
|
130
|
-
____self_9.
|
|
131
|
+
____self_9.setNumberField(
|
|
131
132
|
____self_9,
|
|
132
|
-
("
|
|
133
|
-
|
|
133
|
+
("ua" .. tostring(self.index)) .. "r",
|
|
134
|
+
range
|
|
134
135
|
)
|
|
135
136
|
end
|
|
136
137
|
},
|
|
@@ -138,19 +139,63 @@ __TS__SetDescriptor(
|
|
|
138
139
|
)
|
|
139
140
|
__TS__SetDescriptor(
|
|
140
141
|
UnitTypeWeapon.prototype,
|
|
141
|
-
"
|
|
142
|
+
"soundType",
|
|
142
143
|
{
|
|
143
144
|
get = function(self)
|
|
144
145
|
local ____self_10 = self.unitType
|
|
145
146
|
return ____self_10.getStringField(
|
|
146
147
|
____self_10,
|
|
147
|
-
|
|
148
|
+
"ucs" .. tostring(self.index)
|
|
148
149
|
)
|
|
149
150
|
end,
|
|
150
|
-
set = function(self,
|
|
151
|
+
set = function(self, soundType)
|
|
151
152
|
local ____self_11 = self.unitType
|
|
152
153
|
____self_11.setStringField(
|
|
153
154
|
____self_11,
|
|
155
|
+
"ucs" .. tostring(self.index),
|
|
156
|
+
soundType
|
|
157
|
+
)
|
|
158
|
+
end
|
|
159
|
+
},
|
|
160
|
+
true
|
|
161
|
+
)
|
|
162
|
+
__TS__SetDescriptor(
|
|
163
|
+
UnitTypeWeapon.prototype,
|
|
164
|
+
"soundTypeSD",
|
|
165
|
+
{
|
|
166
|
+
get = function(self)
|
|
167
|
+
local ____self_12 = self.unitType
|
|
168
|
+
return ____self_12.getStringField(
|
|
169
|
+
____self_12,
|
|
170
|
+
("ucs" .. tostring(self.index)) .. ":sd"
|
|
171
|
+
)
|
|
172
|
+
end,
|
|
173
|
+
set = function(self, soundTypeSD)
|
|
174
|
+
local ____self_13 = self.unitType
|
|
175
|
+
____self_13.setStringField(
|
|
176
|
+
____self_13,
|
|
177
|
+
("ucs" .. tostring(self.index)) .. ":sd",
|
|
178
|
+
soundTypeSD
|
|
179
|
+
)
|
|
180
|
+
end
|
|
181
|
+
},
|
|
182
|
+
true
|
|
183
|
+
)
|
|
184
|
+
__TS__SetDescriptor(
|
|
185
|
+
UnitTypeWeapon.prototype,
|
|
186
|
+
"soundTypeHD",
|
|
187
|
+
{
|
|
188
|
+
get = function(self)
|
|
189
|
+
local ____self_14 = self.unitType
|
|
190
|
+
return ____self_14.getStringField(
|
|
191
|
+
____self_14,
|
|
192
|
+
("ucs" .. tostring(self.index)) .. ":hd"
|
|
193
|
+
)
|
|
194
|
+
end,
|
|
195
|
+
set = function(self, soundTypeHD)
|
|
196
|
+
local ____self_15 = self.unitType
|
|
197
|
+
____self_15.setStringField(
|
|
198
|
+
____self_15,
|
|
154
199
|
("ucs" .. tostring(self.index)) .. ":hd",
|
|
155
200
|
soundTypeHD
|
|
156
201
|
)
|
|
@@ -683,6 +728,45 @@ __TS__SetDescriptor(
|
|
|
683
728
|
},
|
|
684
729
|
true
|
|
685
730
|
)
|
|
731
|
+
__TS__SetDescriptor(
|
|
732
|
+
UnitType.prototype,
|
|
733
|
+
"runSpeed",
|
|
734
|
+
{
|
|
735
|
+
get = function(self)
|
|
736
|
+
return self:getNumberField("urun")
|
|
737
|
+
end,
|
|
738
|
+
set = function(self, runSpeed)
|
|
739
|
+
self:setNumberField("urun", runSpeed)
|
|
740
|
+
end
|
|
741
|
+
},
|
|
742
|
+
true
|
|
743
|
+
)
|
|
744
|
+
__TS__SetDescriptor(
|
|
745
|
+
UnitType.prototype,
|
|
746
|
+
"runSpeedSD",
|
|
747
|
+
{
|
|
748
|
+
get = function(self)
|
|
749
|
+
return self:getNumberField("urun:sd")
|
|
750
|
+
end,
|
|
751
|
+
set = function(self, runSpeedSD)
|
|
752
|
+
self:setNumberField("urun:sd", runSpeedSD)
|
|
753
|
+
end
|
|
754
|
+
},
|
|
755
|
+
true
|
|
756
|
+
)
|
|
757
|
+
__TS__SetDescriptor(
|
|
758
|
+
UnitType.prototype,
|
|
759
|
+
"runSpeedHD",
|
|
760
|
+
{
|
|
761
|
+
get = function(self)
|
|
762
|
+
return self:getNumberField("urun:hd")
|
|
763
|
+
end,
|
|
764
|
+
set = function(self, runSpeedHD)
|
|
765
|
+
self:setNumberField("urun:hd", runSpeedHD)
|
|
766
|
+
end
|
|
767
|
+
},
|
|
768
|
+
true
|
|
769
|
+
)
|
|
686
770
|
__TS__SetDescriptor(
|
|
687
771
|
UnitType.prototype,
|
|
688
772
|
"selectionCircleScale",
|
|
@@ -891,6 +975,45 @@ __TS__SetDescriptor(
|
|
|
891
975
|
},
|
|
892
976
|
true
|
|
893
977
|
)
|
|
978
|
+
__TS__SetDescriptor(
|
|
979
|
+
UnitType.prototype,
|
|
980
|
+
"walkSpeed",
|
|
981
|
+
{
|
|
982
|
+
get = function(self)
|
|
983
|
+
return self:getNumberField("uwal")
|
|
984
|
+
end,
|
|
985
|
+
set = function(self, walkSpeed)
|
|
986
|
+
self:setNumberField("uwal", walkSpeed)
|
|
987
|
+
end
|
|
988
|
+
},
|
|
989
|
+
true
|
|
990
|
+
)
|
|
991
|
+
__TS__SetDescriptor(
|
|
992
|
+
UnitType.prototype,
|
|
993
|
+
"walkSpeedSD",
|
|
994
|
+
{
|
|
995
|
+
get = function(self)
|
|
996
|
+
return self:getNumberField("uwal:sd")
|
|
997
|
+
end,
|
|
998
|
+
set = function(self, walkSpeedSD)
|
|
999
|
+
self:setNumberField("uwal:sd", walkSpeedSD)
|
|
1000
|
+
end
|
|
1001
|
+
},
|
|
1002
|
+
true
|
|
1003
|
+
)
|
|
1004
|
+
__TS__SetDescriptor(
|
|
1005
|
+
UnitType.prototype,
|
|
1006
|
+
"walkSpeedHD",
|
|
1007
|
+
{
|
|
1008
|
+
get = function(self)
|
|
1009
|
+
return self:getNumberField("uwal:hd")
|
|
1010
|
+
end,
|
|
1011
|
+
set = function(self, walkSpeedHD)
|
|
1012
|
+
self:setNumberField("uwal:hd", walkSpeedHD)
|
|
1013
|
+
end
|
|
1014
|
+
},
|
|
1015
|
+
true
|
|
1016
|
+
)
|
|
894
1017
|
__TS__SetDescriptor(
|
|
895
1018
|
UnitType.prototype,
|
|
896
1019
|
"armorSoundType",
|
|
@@ -1262,11 +1385,11 @@ __TS__SetDescriptor(
|
|
|
1262
1385
|
implementReadonlyNumberIndexSupplier(
|
|
1263
1386
|
____exports.UnitType,
|
|
1264
1387
|
function(id)
|
|
1265
|
-
local
|
|
1266
|
-
|
|
1267
|
-
__TS__ClassExtends(
|
|
1268
|
-
|
|
1269
|
-
return
|
|
1388
|
+
local ____class_16 = __TS__Class()
|
|
1389
|
+
____class_16.name = ____class_16.name
|
|
1390
|
+
__TS__ClassExtends(____class_16, ____exports.UnitType)
|
|
1391
|
+
____class_16.BASE_ID = id
|
|
1392
|
+
return ____class_16
|
|
1270
1393
|
end
|
|
1271
1394
|
)
|
|
1272
1395
|
____exports.HeroUnitType = __TS__Class()
|
|
@@ -1293,14 +1416,45 @@ __TS__SetDescriptor(
|
|
|
1293
1416
|
},
|
|
1294
1417
|
true
|
|
1295
1418
|
)
|
|
1419
|
+
__TS__SetDescriptor(
|
|
1420
|
+
HeroUnitType.prototype,
|
|
1421
|
+
"properNames",
|
|
1422
|
+
{
|
|
1423
|
+
get = function(self)
|
|
1424
|
+
return self:getStringsField("upro")
|
|
1425
|
+
end,
|
|
1426
|
+
set = function(self, properNames)
|
|
1427
|
+
if __TS__ArrayIsArray(properNames) then
|
|
1428
|
+
self:setStringsField("upro", properNames)
|
|
1429
|
+
self:setNumberField("upru", #properNames)
|
|
1430
|
+
else
|
|
1431
|
+
self:setStringField("upro", properNames)
|
|
1432
|
+
end
|
|
1433
|
+
end
|
|
1434
|
+
},
|
|
1435
|
+
true
|
|
1436
|
+
)
|
|
1437
|
+
__TS__SetDescriptor(
|
|
1438
|
+
HeroUnitType.prototype,
|
|
1439
|
+
"properNameCount",
|
|
1440
|
+
{
|
|
1441
|
+
get = function(self)
|
|
1442
|
+
return self:getNumberField("upru")
|
|
1443
|
+
end,
|
|
1444
|
+
set = function(self, properNameCount)
|
|
1445
|
+
self:setNumberField("upru", properNameCount)
|
|
1446
|
+
end
|
|
1447
|
+
},
|
|
1448
|
+
true
|
|
1449
|
+
)
|
|
1296
1450
|
implementReadonlyNumberIndexSupplier(
|
|
1297
1451
|
____exports.HeroUnitType,
|
|
1298
1452
|
function(id)
|
|
1299
|
-
local
|
|
1300
|
-
|
|
1301
|
-
__TS__ClassExtends(
|
|
1302
|
-
|
|
1303
|
-
return
|
|
1453
|
+
local ____class_17 = __TS__Class()
|
|
1454
|
+
____class_17.name = ____class_17.name
|
|
1455
|
+
__TS__ClassExtends(____class_17, ____exports.HeroUnitType)
|
|
1456
|
+
____class_17.BASE_ID = id
|
|
1457
|
+
return ____class_17
|
|
1304
1458
|
end
|
|
1305
1459
|
)
|
|
1306
1460
|
return ____exports
|
|
@@ -30,6 +30,9 @@ export declare const DEMON_HUNTER_DEMON_FORM_HERO_UNIT_TYPE_ID: StandardHeroUnit
|
|
|
30
30
|
export declare const ABOMINATION_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
31
31
|
export declare const GHOUL_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
32
32
|
export declare const DEATH_KNIGHT_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
|
|
33
|
+
export declare const ZOMBIE_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
34
|
+
export declare const ZOMBIE_FEMALE_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
35
|
+
export declare const ARTHAS_EVIL_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
|
|
33
36
|
export declare const DIRE_MAMMOTH_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
34
37
|
export declare const ELDER_JUNGLE_STALKER_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
35
38
|
export declare const ENRAGED_ELEMENTAL_UNIT_TYPE_ID: StandardUnitTypeId;
|
|
@@ -29,6 +29,9 @@ ____exports.DEMON_HUNTER_DEMON_FORM_HERO_UNIT_TYPE_ID = fourCC("Edmm")
|
|
|
29
29
|
____exports.ABOMINATION_UNIT_TYPE_ID = fourCC("uabo")
|
|
30
30
|
____exports.GHOUL_UNIT_TYPE_ID = fourCC("ugho")
|
|
31
31
|
____exports.DEATH_KNIGHT_HERO_UNIT_TYPE_ID = fourCC("Udea")
|
|
32
|
+
____exports.ZOMBIE_UNIT_TYPE_ID = fourCC("nzom")
|
|
33
|
+
____exports.ZOMBIE_FEMALE_UNIT_TYPE_ID = fourCC("nzof")
|
|
34
|
+
____exports.ARTHAS_EVIL_HERO_UNIT_TYPE_ID = fourCC("Uear")
|
|
32
35
|
____exports.DIRE_MAMMOTH_UNIT_TYPE_ID = fourCC("nmdr")
|
|
33
36
|
____exports.ELDER_JUNGLE_STALKER_UNIT_TYPE_ID = fourCC("njga")
|
|
34
37
|
____exports.ENRAGED_ELEMENTAL_UNIT_TYPE_ID = fourCC("nele")
|
package/engine/unit.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ import "./internal/unit/missile";
|
|
|
14
14
|
import "./internal/unit-missile-launch";
|
|
15
15
|
import "./internal/unit/ghost-counter";
|
|
16
16
|
import "./internal/unit/invulnerability-counter";
|
|
17
|
+
import "./internal/unit/detach-missiles";
|
|
17
18
|
import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
|
|
18
19
|
export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
|
|
19
20
|
export * from "./internal/unit+damage";
|
package/engine/unit.lua
CHANGED
|
@@ -14,6 +14,7 @@ require("engine.internal.unit.missile")
|
|
|
14
14
|
require("engine.internal.unit-missile-launch")
|
|
15
15
|
require("engine.internal.unit.ghost-counter")
|
|
16
16
|
require("engine.internal.unit.invulnerability-counter")
|
|
17
|
+
require("engine.internal.unit.detach-missiles")
|
|
17
18
|
require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
|
|
18
19
|
do
|
|
19
20
|
local ____unit = require("engine.internal.unit")
|
package/global/vec2.lua
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "warscript",
|
|
4
|
-
"version": "0.0.1-dev.
|
|
4
|
+
"version": "0.0.1-dev.797e3f9",
|
|
5
5
|
"description": "A typescript library for Warcraft III using Warpack.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"warcraft",
|
|
@@ -22,8 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"@warscript/language-extensions": "^0.0.1",
|
|
25
|
-
"@warscript/tstl-plugin": "^0.0.
|
|
26
|
-
"typescript-to-lua": "^1.24.1",
|
|
25
|
+
"@warscript/tstl-plugin": "^0.0.3",
|
|
27
26
|
"lua-types": "^2.13.1",
|
|
28
27
|
"warpack": "0.0.1-dev.5bdabe5"
|
|
29
28
|
},
|
package/string.d.ts
CHANGED
|
@@ -103,4 +103,18 @@ declare global {
|
|
|
103
103
|
function isNotBlank(string: string): boolean;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
+
declare global {
|
|
107
|
+
namespace string {
|
|
108
|
+
/**
|
|
109
|
+
* Returns the number of characters matching the given predicate.
|
|
110
|
+
*/
|
|
111
|
+
function count(string: string, predicate: (char: string) => boolean): number;
|
|
112
|
+
}
|
|
113
|
+
interface String {
|
|
114
|
+
/**
|
|
115
|
+
* Returns the number of characters matching the given predicate.
|
|
116
|
+
*/
|
|
117
|
+
count(predicate: (char: string) => boolean): number;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
106
120
|
export {};
|
package/string.lua
CHANGED
|
@@ -31,4 +31,13 @@ end
|
|
|
31
31
|
_G.string.isNotBlank = function(____string)
|
|
32
32
|
return (match(____string, "^%s*$")) == nil
|
|
33
33
|
end
|
|
34
|
+
_G.string.count = function(____string, predicate)
|
|
35
|
+
local result = 0
|
|
36
|
+
for i = 1, #____string do
|
|
37
|
+
if predicate(sub(____string, i, i)) then
|
|
38
|
+
result = result + 1
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
return result
|
|
42
|
+
end
|
|
34
43
|
return ____exports
|
package/utility/types.d.ts
CHANGED
|
@@ -12,14 +12,14 @@ export type ValueOf<T> = T[keyof T];
|
|
|
12
12
|
export type EntryOf<T> = ValueOf<{
|
|
13
13
|
[K in keyof T]: [K, T[K]];
|
|
14
14
|
}>;
|
|
15
|
-
export type MutableKeys<T extends object> = {
|
|
15
|
+
export type MutableKeys<T extends object> = keyof T & {
|
|
16
16
|
[P in keyof T]-?: IfEquals<{
|
|
17
17
|
[Q in P]: T[P];
|
|
18
18
|
}, {
|
|
19
19
|
-readonly [Q in P]: T[P];
|
|
20
20
|
}, P>;
|
|
21
21
|
}[keyof T];
|
|
22
|
-
export type ReadonlyKeys<T extends object> = {
|
|
22
|
+
export type ReadonlyKeys<T extends object> = keyof T & {
|
|
23
23
|
[P in keyof T]-?: IfEquals<{
|
|
24
24
|
[Q in P]: T[P];
|
|
25
25
|
}, {
|