warscript 0.0.1-dev.4620de6 → 0.0.1-dev.47f470c
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/sound.d.ts +1 -0
- package/core/types/sound.lua +32 -2
- 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/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +21 -1
- 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/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- 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.d.ts +1 -1
- package/engine/object-data/entry/ability-type.lua +8 -8
- 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 +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +17 -0
- package/engine/object-data/entry/sound-preset.lua +50 -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 +15 -13
- package/engine/object-data/entry.lua +53 -32
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
package/config.d.ts
ADDED
package/config.lua
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
____exports.WarscriptConfig = __TS__Class()
|
|
5
|
+
local WarscriptConfig = ____exports.WarscriptConfig
|
|
6
|
+
WarscriptConfig.name = "WarscriptConfig"
|
|
7
|
+
function WarscriptConfig.prototype.____constructor(self)
|
|
8
|
+
end
|
|
9
|
+
WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH = true
|
|
10
|
+
return ____exports
|
package/core/types/sound.d.ts
CHANGED
|
@@ -64,6 +64,7 @@ export declare class Sound extends Handle<jsound, [fadeOut?: boolean]> {
|
|
|
64
64
|
export declare class Sound3D extends Sound {
|
|
65
65
|
static playAtPosition(fileName: string, preset: Sound3DPreset, x?: number, y?: number, z?: number): void;
|
|
66
66
|
static playOnUnit(fileName: string, preset: Sound3DPreset, unit: Unit): void;
|
|
67
|
+
static playFromLabel(label: string, preset: Sound3DPreset, unit: Unit): void;
|
|
67
68
|
static createAtPosition(fileName: string, preset: Sound3DPreset, x?: number, y?: number, z?: number): Sound3D;
|
|
68
69
|
static createOnUnit(fileName: string, preset: Sound3DPreset, unit: Unit): Sound3D;
|
|
69
70
|
}
|
package/core/types/sound.lua
CHANGED
|
@@ -6,14 +6,13 @@ local ____exports = {}
|
|
|
6
6
|
local ____handle = require("core.types.handle")
|
|
7
7
|
local Handle = ____handle.Handle
|
|
8
8
|
local createSound = CreateSound
|
|
9
|
+
local createSoundFromLabel = CreateSoundFromLabel
|
|
9
10
|
local setSoundPitch = SetSoundPitch
|
|
10
11
|
local setSoundChannel = SetSoundChannel
|
|
11
12
|
local setSoundPosition = SetSoundPosition
|
|
12
13
|
local setSoundVolume = SetSoundVolume
|
|
13
14
|
local setSoundDistances = SetSoundDistances
|
|
14
15
|
local setSoundDistanceCutoff = SetSoundDistanceCutoff
|
|
15
|
-
local setSoundConeAngles = SetSoundConeAngles
|
|
16
|
-
local setSoundConeOrientation = SetSoundConeOrientation
|
|
17
16
|
local startSound = StartSound
|
|
18
17
|
local setSoundPlayPosition = SetSoundPlayPosition
|
|
19
18
|
local stopSound = StopSound
|
|
@@ -153,6 +152,31 @@ local function createPreset3DSound(fileName, preset)
|
|
|
153
152
|
setSoundDistanceCutoff(sound, preset.distanceCutoff or 1500)
|
|
154
153
|
return sound
|
|
155
154
|
end
|
|
155
|
+
local function createPreset3DSoundFromLabel(label, preset)
|
|
156
|
+
local ____label_7 = label
|
|
157
|
+
local ____preset_looping_5 = preset.looping
|
|
158
|
+
if ____preset_looping_5 == nil then
|
|
159
|
+
____preset_looping_5 = false
|
|
160
|
+
end
|
|
161
|
+
local ____preset_stopWhenOutOfRange_6 = preset.stopWhenOutOfRange
|
|
162
|
+
if ____preset_stopWhenOutOfRange_6 == nil then
|
|
163
|
+
____preset_stopWhenOutOfRange_6 = true
|
|
164
|
+
end
|
|
165
|
+
local sound = createSoundFromLabel(
|
|
166
|
+
____label_7,
|
|
167
|
+
____preset_looping_5,
|
|
168
|
+
true,
|
|
169
|
+
____preset_stopWhenOutOfRange_6,
|
|
170
|
+
preset.fadeInRate or 12700,
|
|
171
|
+
preset.fadeOutRate or 12700
|
|
172
|
+
)
|
|
173
|
+
setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
|
|
174
|
+
setSoundVolume(sound, preset.volume or 127)
|
|
175
|
+
setSoundPitch(sound, preset.pitch or 1)
|
|
176
|
+
setSoundDistances(sound, preset.minDistance or 600, preset.maxDistance or 8000)
|
|
177
|
+
setSoundDistanceCutoff(sound, preset.distanceCutoff or 1500)
|
|
178
|
+
return sound
|
|
179
|
+
end
|
|
156
180
|
____exports.Sound = __TS__Class()
|
|
157
181
|
local Sound = ____exports.Sound
|
|
158
182
|
Sound.name = "Sound"
|
|
@@ -225,6 +249,12 @@ function Sound3D.playOnUnit(self, fileName, preset, unit)
|
|
|
225
249
|
startSound(sound)
|
|
226
250
|
killSoundWhenDone(sound)
|
|
227
251
|
end
|
|
252
|
+
function Sound3D.playFromLabel(self, label, preset, unit)
|
|
253
|
+
local sound = createPreset3DSoundFromLabel(label, preset)
|
|
254
|
+
attachSoundToUnit(sound, unit.handle)
|
|
255
|
+
startSound(sound)
|
|
256
|
+
killSoundWhenDone(sound)
|
|
257
|
+
end
|
|
228
258
|
function Sound3D.createAtPosition(self, fileName, preset, x, y, z)
|
|
229
259
|
if x == nil then
|
|
230
260
|
x = 0
|
|
@@ -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
|
|
@@ -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")
|
|
@@ -21,6 +23,9 @@ local ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD = ____ability.A
|
|
|
21
23
|
local AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD = ____ability.AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD
|
|
22
24
|
local ____linked_2Dset = require("utility.linked-set")
|
|
23
25
|
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
26
|
+
local ____sound = require("core.types.sound")
|
|
27
|
+
local Sound3D = ____sound.Sound3D
|
|
28
|
+
local SoundPreset = ____sound.SoundPreset
|
|
24
29
|
local isChannelingAbilityTypeIds = {}
|
|
25
30
|
local usesAttackAnimationByAbilityTypeId = {}
|
|
26
31
|
____exports.BlankConfigurableAbilityType = __TS__Class()
|
|
@@ -211,11 +216,26 @@ for abilityTypeId, usesAttackAnimation in pairs(postcompile(function()
|
|
|
211
216
|
for abilityTypeId, usesAttackAnimation in pairs(usesAttackAnimationByAbilityTypeId) do
|
|
212
217
|
if usesAttackAnimation then
|
|
213
218
|
local abilityType = checkNotNull(____exports.BlankConfigurableAbilityType:of(abilityTypeId))
|
|
214
|
-
abilityType.channelingAnimation
|
|
219
|
+
if isAnimationName(abilityType.channelingAnimation[1]) then
|
|
220
|
+
if abilityType.channelingAnimation[1] ~= "attack" then
|
|
221
|
+
abilityType.channelingAnimation = {"attack"}
|
|
222
|
+
end
|
|
223
|
+
else
|
|
224
|
+
abilityType.channelingAnimation = {
|
|
225
|
+
"attack",
|
|
226
|
+
table.unpack(abilityType.channelingAnimation)
|
|
227
|
+
}
|
|
228
|
+
end
|
|
215
229
|
end
|
|
216
230
|
end
|
|
217
231
|
return usesAttackAnimationByAbilityTypeId
|
|
218
232
|
end)) do
|
|
233
|
+
Unit.abilityCastingFinishEvent[abilityTypeId]:addListener(function(caster, ability)
|
|
234
|
+
local effectSound = ability:getField(ABILITY_SF_EFFECT_SOUND)
|
|
235
|
+
if effectSound ~= "" then
|
|
236
|
+
Sound3D:playFromLabel(effectSound, SoundPreset.Ability, caster)
|
|
237
|
+
end
|
|
238
|
+
end)
|
|
219
239
|
if usesAttackAnimation then
|
|
220
240
|
Unit.abilityCastingStartEvent[abilityTypeId]:addListener(
|
|
221
241
|
4,
|
|
@@ -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
|
|
@@ -55,7 +55,7 @@ __TS__SetDescriptor(
|
|
|
55
55
|
get = function(self)
|
|
56
56
|
local abilityUpgrades = {}
|
|
57
57
|
for i = 0, 3 do
|
|
58
|
-
local abilityUpgrade = self:
|
|
58
|
+
local abilityUpgrade = self:getObjectDataEntryNumericIdsLevelField("Neg" .. tostring(3 + i))
|
|
59
59
|
for level = 0, #abilityUpgrade - 1 do
|
|
60
60
|
local levelAbilityUpgrade = abilityUpgrade[level + 1]
|
|
61
61
|
if #levelAbilityUpgrade == 2 then
|
|
@@ -71,7 +71,7 @@ __TS__SetDescriptor(
|
|
|
71
71
|
local ____opt_0 = abilityUpgrades[1]
|
|
72
72
|
local isArray = __TS__ArrayIsArray(____opt_0 and ____opt_0[1])
|
|
73
73
|
for i = 0, #abilityUpgrades - 1 do
|
|
74
|
-
self:
|
|
74
|
+
self:setObjectDataEntryNumericIdsLevelField(
|
|
75
75
|
"Neg" .. tostring(3 + i),
|
|
76
76
|
isArray and map(
|
|
77
77
|
abilityUpgrades,
|
|
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
|
|
|
15
15
|
"summonedUnitTypeId",
|
|
16
16
|
{
|
|
17
17
|
get = function(self)
|
|
18
|
-
return self:
|
|
18
|
+
return self:getObjectDataEntryNumericIdLevelField("Osf1")
|
|
19
19
|
end,
|
|
20
20
|
set = function(self, summonedUnitTypeId)
|
|
21
|
-
self:
|
|
21
|
+
self:setObjectDataEntryNumericIdLevelField("Osf1", summonedUnitTypeId)
|
|
22
22
|
end
|
|
23
23
|
},
|
|
24
24
|
true
|
|
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
|
|
|
15
15
|
"normalFormUnitTypeId",
|
|
16
16
|
{
|
|
17
17
|
get = function(self)
|
|
18
|
-
return self:
|
|
18
|
+
return self:getObjectDataEntryNumericIdLevelField("Eme1")
|
|
19
19
|
end,
|
|
20
20
|
set = function(self, normalFormUnitTypeId)
|
|
21
|
-
self:
|
|
21
|
+
self:setObjectDataEntryNumericIdLevelField("Eme1", normalFormUnitTypeId)
|
|
22
22
|
end
|
|
23
23
|
},
|
|
24
24
|
true
|
|
@@ -119,10 +119,10 @@ __TS__SetDescriptor(
|
|
|
119
119
|
"alternateFormUnitTypeId",
|
|
120
120
|
{
|
|
121
121
|
get = function(self)
|
|
122
|
-
return self:
|
|
122
|
+
return self:getObjectDataEntryNumericIdLevelField("Emeu")
|
|
123
123
|
end,
|
|
124
124
|
set = function(self, alternateFormUnitTypeId)
|
|
125
|
-
self:
|
|
125
|
+
self:setObjectDataEntryNumericIdLevelField("Emeu", alternateFormUnitTypeId)
|
|
126
126
|
end
|
|
127
127
|
},
|
|
128
128
|
true
|
|
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
|
|
|
15
15
|
"summonedUnitTypeId",
|
|
16
16
|
{
|
|
17
17
|
get = function(self)
|
|
18
|
-
return self:
|
|
18
|
+
return self:getObjectDataEntryNumericIdLevelField("Hwe1")
|
|
19
19
|
end,
|
|
20
20
|
set = function(self, summonedUnitTypeId)
|
|
21
|
-
self:
|
|
21
|
+
self:setObjectDataEntryNumericIdLevelField("Hwe1", summonedUnitTypeId)
|
|
22
22
|
end
|
|
23
23
|
},
|
|
24
24
|
true
|
|
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
|
|
|
15
15
|
"summonedUnitTypeId",
|
|
16
16
|
{
|
|
17
17
|
get = function(self)
|
|
18
|
-
return self:
|
|
18
|
+
return self:getObjectDataEntryNumericIdLevelField("Hwe1")
|
|
19
19
|
end,
|
|
20
20
|
set = function(self, summonedUnitTypeId)
|
|
21
|
-
self:
|
|
21
|
+
self:setObjectDataEntryNumericIdLevelField("Hwe1", summonedUnitTypeId)
|
|
22
22
|
end
|
|
23
23
|
},
|
|
24
24
|
true
|
|
@@ -11,7 +11,7 @@ import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-t
|
|
|
11
11
|
import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
|
|
12
12
|
import { BuffTypeId } from "./buff-type";
|
|
13
13
|
import { LightningTypeId } from "./lightning-type";
|
|
14
|
-
export type AbilityTypeId = ObjectDataEntryId & {
|
|
14
|
+
export type AbilityTypeId = ObjectDataEntryId & number & {
|
|
15
15
|
readonly __abilityTypeId: unique symbol;
|
|
16
16
|
};
|
|
17
17
|
export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId> {
|
|
@@ -271,10 +271,10 @@ __TS__SetDescriptor(
|
|
|
271
271
|
"lightningTypeIds",
|
|
272
272
|
{
|
|
273
273
|
get = function(self)
|
|
274
|
-
return self:
|
|
274
|
+
return self:getObjectDataEntryNumericIdsField("alig")
|
|
275
275
|
end,
|
|
276
276
|
set = function(self, lightningTypeIds)
|
|
277
|
-
self:
|
|
277
|
+
self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
|
|
278
278
|
end
|
|
279
279
|
},
|
|
280
280
|
true
|
|
@@ -508,7 +508,7 @@ __TS__SetDescriptor(
|
|
|
508
508
|
"techTreeDependencies",
|
|
509
509
|
{
|
|
510
510
|
get = function(self)
|
|
511
|
-
local techTreeDependencyIds = self:
|
|
511
|
+
local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
|
|
512
512
|
local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
|
|
513
513
|
return mapIndexed(
|
|
514
514
|
techTreeDependencyIds,
|
|
@@ -528,7 +528,7 @@ __TS__SetDescriptor(
|
|
|
528
528
|
map(techTreeDependencies, extractTechTreeDependencyInputLevel),
|
|
529
529
|
function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
|
|
530
530
|
)
|
|
531
|
-
self:
|
|
531
|
+
self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
|
|
532
532
|
self:setNumbersField("arqa", techTreeDependencyInternalLevels)
|
|
533
533
|
end
|
|
534
534
|
},
|
|
@@ -796,10 +796,10 @@ __TS__SetDescriptor(
|
|
|
796
796
|
"buffTypeIds",
|
|
797
797
|
{
|
|
798
798
|
get = function(self)
|
|
799
|
-
return self:
|
|
799
|
+
return self:getObjectDataEntryNumericIdsLevelField("abuf")
|
|
800
800
|
end,
|
|
801
801
|
set = function(self, buffTypeIds)
|
|
802
|
-
self:
|
|
802
|
+
self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
|
|
803
803
|
end
|
|
804
804
|
},
|
|
805
805
|
true
|
|
@@ -848,10 +848,10 @@ __TS__SetDescriptor(
|
|
|
848
848
|
"effectBuffTypeIds",
|
|
849
849
|
{
|
|
850
850
|
get = function(self)
|
|
851
|
-
return self:
|
|
851
|
+
return self:getObjectDataEntryNumericIdsLevelField("aeff")
|
|
852
852
|
end,
|
|
853
853
|
set = function(self, effectBuffTypeIds)
|
|
854
|
-
self:
|
|
854
|
+
self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
|
|
855
855
|
end
|
|
856
856
|
},
|
|
857
857
|
true
|
|
@@ -5,7 +5,7 @@ import { Race } from "../auxiliary/race";
|
|
|
5
5
|
import { SoundPresetName } from "../auxiliary/sound-preset-name";
|
|
6
6
|
import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
|
|
7
7
|
import { LightningTypeId } from "./lightning-type";
|
|
8
|
-
export type BuffTypeId = ObjectDataEntryId & {
|
|
8
|
+
export type BuffTypeId = ObjectDataEntryId & number & {
|
|
9
9
|
readonly __buffTypeId: unique symbol;
|
|
10
10
|
};
|
|
11
11
|
export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> extends ObjectDataEntry<Id> {
|
|
@@ -94,10 +94,10 @@ __TS__SetDescriptor(
|
|
|
94
94
|
"lightningTypeIds",
|
|
95
95
|
{
|
|
96
96
|
get = function(self)
|
|
97
|
-
return self:
|
|
97
|
+
return self:getObjectDataEntryNumericIdsField("flig")
|
|
98
98
|
end,
|
|
99
99
|
set = function(self, lightningTypeIds)
|
|
100
|
-
self:
|
|
100
|
+
self:setObjectDataEntryNumericIdsField("flig", lightningTypeIds)
|
|
101
101
|
end
|
|
102
102
|
},
|
|
103
103
|
true
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ArmorSoundType } from "../auxiliary/armor-sound-type";
|
|
3
3
|
import { CombatClassifications } from "../auxiliary/combat-classification";
|
|
4
4
|
import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
|
|
5
|
-
export type DestructibleTypeId = ObjectDataEntryId & {
|
|
5
|
+
export type DestructibleTypeId = ObjectDataEntryId & number & {
|
|
6
6
|
readonly __destructibleTypeId: unique symbol;
|
|
7
7
|
};
|
|
8
8
|
export declare abstract class DestructibleType extends ObjectDataEntry<DestructibleTypeId> {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ArmorSoundType } from "../auxiliary/armor-sound-type";
|
|
3
3
|
import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
|
|
4
4
|
import type { AbilityTypeId } from "./ability-type";
|
|
5
|
-
export type ItemTypeId = ObjectDataEntryId & {
|
|
5
|
+
export type ItemTypeId = ObjectDataEntryId & number & {
|
|
6
6
|
readonly __itemTypeId: unique symbol;
|
|
7
7
|
};
|
|
8
8
|
export declare class ItemType extends ObjectDataEntry<ItemTypeId> {
|
|
@@ -27,10 +27,10 @@ __TS__SetDescriptor(
|
|
|
27
27
|
"abilityTypeIds",
|
|
28
28
|
{
|
|
29
29
|
get = function(self)
|
|
30
|
-
return self:
|
|
30
|
+
return self:getObjectDataEntryNumericIdsField("iabi")
|
|
31
31
|
end,
|
|
32
32
|
set = function(self, abilityTypeIds)
|
|
33
|
-
self:
|
|
33
|
+
self:setObjectDataEntryNumericIdsField("iabi", abilityTypeIds)
|
|
34
34
|
end
|
|
35
35
|
},
|
|
36
36
|
true
|
|
@@ -261,10 +261,10 @@ __TS__SetDescriptor(
|
|
|
261
261
|
"cooldownGroupId",
|
|
262
262
|
{
|
|
263
263
|
get = function(self)
|
|
264
|
-
return self:
|
|
264
|
+
return self:getObjectDataEntryNumericIdField("icid")
|
|
265
265
|
end,
|
|
266
266
|
set = function(self, cooldownGroupId)
|
|
267
|
-
self:
|
|
267
|
+
self:setObjectDataEntryNumericIdField("icid", cooldownGroupId)
|
|
268
268
|
end
|
|
269
269
|
},
|
|
270
270
|
true
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { ObjectDataEntry, ObjectDataEntryConstructor, ObjectDataEntryId } from "../entry";
|
|
3
3
|
import { Color } from "../../../core/types/color";
|
|
4
|
-
export type LightningTypeId = ObjectDataEntryId & {
|
|
4
|
+
export type LightningTypeId = ObjectDataEntryId & number & {
|
|
5
5
|
readonly __lightningTypeId: unique symbol;
|
|
6
6
|
};
|
|
7
7
|
export type StandardLightningTypeId = LightningTypeId & {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { ObjectDataEntry, ObjectDataEntryConstructor, ObjectDataEntryId } from "../entry";
|
|
3
|
+
export type SoundPresetId = ObjectDataEntryId & string & {
|
|
4
|
+
readonly __soundPresetId: unique symbol;
|
|
5
|
+
};
|
|
6
|
+
export type StandardSoundPresetId = SoundPresetId & {
|
|
7
|
+
readonly __standardSoundPresetId: unique symbol;
|
|
8
|
+
};
|
|
9
|
+
export declare class SoundPreset extends ObjectDataEntry<SoundPresetId> {
|
|
10
|
+
static readonly [id: StandardSoundPresetId]: ObjectDataEntryConstructor<SoundPreset>;
|
|
11
|
+
static readonly BASE_ID: SoundPresetId;
|
|
12
|
+
private static nextId;
|
|
13
|
+
protected static generateId(): string;
|
|
14
|
+
protected static getObjectData(map: WarMap): WarObjects;
|
|
15
|
+
get filePaths(): string[];
|
|
16
|
+
set filePaths(filePaths: string[]);
|
|
17
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 ____entry = require("engine.object-data.entry")
|
|
7
|
+
local ObjectDataEntry = ____entry.ObjectDataEntry
|
|
8
|
+
local ____reflection = require("utility.reflection")
|
|
9
|
+
local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNumberIndexSupplier
|
|
10
|
+
____exports.SoundPreset = __TS__Class()
|
|
11
|
+
local SoundPreset = ____exports.SoundPreset
|
|
12
|
+
SoundPreset.name = "SoundPreset"
|
|
13
|
+
__TS__ClassExtends(SoundPreset, ObjectDataEntry)
|
|
14
|
+
function SoundPreset.generateId(self)
|
|
15
|
+
local ____self_0, ____nextId_1 = self, "nextId"
|
|
16
|
+
local ____self_nextId_2 = ____self_0[____nextId_1]
|
|
17
|
+
____self_0[____nextId_1] = ____self_nextId_2 + 1
|
|
18
|
+
return "CustomSound" .. tostring(____self_nextId_2)
|
|
19
|
+
end
|
|
20
|
+
function SoundPreset.getObjectData(self, map)
|
|
21
|
+
return map.objects.sound
|
|
22
|
+
end;
|
|
23
|
+
(function(self)
|
|
24
|
+
implementReadonlyNumberIndexSupplier(
|
|
25
|
+
____exports.SoundPreset,
|
|
26
|
+
function(id)
|
|
27
|
+
local ____class_3 = __TS__Class()
|
|
28
|
+
____class_3.name = ____class_3.name
|
|
29
|
+
__TS__ClassExtends(____class_3, ____exports.SoundPreset)
|
|
30
|
+
____class_3.BASE_ID = id
|
|
31
|
+
return ____class_3
|
|
32
|
+
end
|
|
33
|
+
)
|
|
34
|
+
end)(SoundPreset)
|
|
35
|
+
SoundPreset.BASE_ID = "BlizzardWave"
|
|
36
|
+
SoundPreset.nextId = 0
|
|
37
|
+
__TS__SetDescriptor(
|
|
38
|
+
SoundPreset.prototype,
|
|
39
|
+
"filePaths",
|
|
40
|
+
{
|
|
41
|
+
get = function(self)
|
|
42
|
+
return self:getStringsField("FileNames")
|
|
43
|
+
end,
|
|
44
|
+
set = function(self, filePaths)
|
|
45
|
+
self:setStringsField("FileNames", filePaths)
|
|
46
|
+
end
|
|
47
|
+
},
|
|
48
|
+
true
|
|
49
|
+
)
|
|
50
|
+
return ____exports
|
|
@@ -13,7 +13,7 @@ import type { AbilityTypeId } from "./ability-type";
|
|
|
13
13
|
import type { UpgradeId } from "./upgrade";
|
|
14
14
|
import { AnimationQualifier } from "../auxiliary/animation-qualifier";
|
|
15
15
|
import { AttackType } from "../auxiliary/attack-type";
|
|
16
|
-
export type UnitTypeId = ObjectDataEntryId & {
|
|
16
|
+
export type UnitTypeId = ObjectDataEntryId & number & {
|
|
17
17
|
readonly __unitTypeId: unique symbol;
|
|
18
18
|
};
|
|
19
19
|
export type StandardUnitTypeId = UnitTypeId & {
|
|
@@ -55,6 +55,7 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
|
|
|
55
55
|
protected static readonly idGenerator: ObjectDataEntryIdGenerator;
|
|
56
56
|
protected static generateId(): number;
|
|
57
57
|
protected static getObjectData(map: WarMap): WarObjects;
|
|
58
|
+
private isPortraitModelPathSet?;
|
|
58
59
|
get abilityTypeIds(): AbilityTypeId[];
|
|
59
60
|
set abilityTypeIds(abilityTypeIds: AbilityTypeId[]);
|
|
60
61
|
get defaultActiveAbilityTypeId(): AbilityTypeId | undefined;
|
|
@@ -131,6 +132,12 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
|
|
|
131
132
|
set modelPathSD(modelPathSD: string);
|
|
132
133
|
get modelPathHD(): string;
|
|
133
134
|
set modelPathHD(modelPathHD: string);
|
|
135
|
+
get portraitModelPath(): string;
|
|
136
|
+
set portraitModelPath(portraitModelPath: string);
|
|
137
|
+
get portraitModelPathSD(): string;
|
|
138
|
+
set portraitModelPathSD(portraitModelPathSD: string);
|
|
139
|
+
get portraitModelPathHD(): string;
|
|
140
|
+
set portraitModelPathHD(portraitModelPathHD: string);
|
|
134
141
|
get runSpeed(): number;
|
|
135
142
|
set runSpeed(runSpeed: number);
|
|
136
143
|
get runSpeedSD(): number;
|
|
@@ -19,6 +19,8 @@ local ____entry = require("engine.object-data.entry")
|
|
|
19
19
|
local ObjectDataEntry = ____entry.ObjectDataEntry
|
|
20
20
|
local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
|
|
21
21
|
local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
|
|
22
|
+
local ____config = require("config")
|
|
23
|
+
local WarscriptConfig = ____config.WarscriptConfig
|
|
22
24
|
local getOrCreateUnitTypeWeapons
|
|
23
25
|
____exports.UnitTypeWeapon = __TS__Class()
|
|
24
26
|
local UnitTypeWeapon = ____exports.UnitTypeWeapon
|
|
@@ -345,10 +347,10 @@ __TS__SetDescriptor(
|
|
|
345
347
|
"abilityTypeIds",
|
|
346
348
|
{
|
|
347
349
|
get = function(self)
|
|
348
|
-
return self:
|
|
350
|
+
return self:getObjectDataEntryNumericIdsField("uabi")
|
|
349
351
|
end,
|
|
350
352
|
set = function(self, abilityTypeIds)
|
|
351
|
-
self:
|
|
353
|
+
self:setObjectDataEntryNumericIdsField("uabi", abilityTypeIds)
|
|
352
354
|
end
|
|
353
355
|
},
|
|
354
356
|
true
|
|
@@ -358,10 +360,10 @@ __TS__SetDescriptor(
|
|
|
358
360
|
"defaultActiveAbilityTypeId",
|
|
359
361
|
{
|
|
360
362
|
get = function(self)
|
|
361
|
-
return self:
|
|
363
|
+
return self:getObjectDataEntryNumericIdsField("udaa")[1]
|
|
362
364
|
end,
|
|
363
365
|
set = function(self, abilityTypeId)
|
|
364
|
-
self:
|
|
366
|
+
self:setObjectDataEntryNumericIdsField(
|
|
365
367
|
"udaa",
|
|
366
368
|
arrayOfNotNull(abilityTypeId)
|
|
367
369
|
)
|
|
@@ -807,6 +809,9 @@ __TS__SetDescriptor(
|
|
|
807
809
|
end,
|
|
808
810
|
set = function(self, modelPath)
|
|
809
811
|
self:setStringField("umdl", modelPath)
|
|
812
|
+
if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
813
|
+
self:setStringField("upor", modelPath)
|
|
814
|
+
end
|
|
810
815
|
end
|
|
811
816
|
},
|
|
812
817
|
true
|
|
@@ -820,6 +825,9 @@ __TS__SetDescriptor(
|
|
|
820
825
|
end,
|
|
821
826
|
set = function(self, modelPathSD)
|
|
822
827
|
self:setStringField("umdl:sd", modelPathSD)
|
|
828
|
+
if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
829
|
+
self:setStringField("upor:sd", modelPathSD)
|
|
830
|
+
end
|
|
823
831
|
end
|
|
824
832
|
},
|
|
825
833
|
true
|
|
@@ -833,6 +841,51 @@ __TS__SetDescriptor(
|
|
|
833
841
|
end,
|
|
834
842
|
set = function(self, modelPathHD)
|
|
835
843
|
self:setStringField("umdl:hd", modelPathHD)
|
|
844
|
+
if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
845
|
+
self:setStringField("upor:hd", modelPathHD)
|
|
846
|
+
end
|
|
847
|
+
end
|
|
848
|
+
},
|
|
849
|
+
true
|
|
850
|
+
)
|
|
851
|
+
__TS__SetDescriptor(
|
|
852
|
+
UnitType.prototype,
|
|
853
|
+
"portraitModelPath",
|
|
854
|
+
{
|
|
855
|
+
get = function(self)
|
|
856
|
+
return self:getStringField("upor")
|
|
857
|
+
end,
|
|
858
|
+
set = function(self, portraitModelPath)
|
|
859
|
+
self:setStringField("upor", portraitModelPath)
|
|
860
|
+
self.isPortraitModelPathSet = true
|
|
861
|
+
end
|
|
862
|
+
},
|
|
863
|
+
true
|
|
864
|
+
)
|
|
865
|
+
__TS__SetDescriptor(
|
|
866
|
+
UnitType.prototype,
|
|
867
|
+
"portraitModelPathSD",
|
|
868
|
+
{
|
|
869
|
+
get = function(self)
|
|
870
|
+
return self:getStringField("upor:sd")
|
|
871
|
+
end,
|
|
872
|
+
set = function(self, portraitModelPathSD)
|
|
873
|
+
self:setStringField("upor:sd", portraitModelPathSD)
|
|
874
|
+
self.isPortraitModelPathSet = true
|
|
875
|
+
end
|
|
876
|
+
},
|
|
877
|
+
true
|
|
878
|
+
)
|
|
879
|
+
__TS__SetDescriptor(
|
|
880
|
+
UnitType.prototype,
|
|
881
|
+
"portraitModelPathHD",
|
|
882
|
+
{
|
|
883
|
+
get = function(self)
|
|
884
|
+
return self:getStringField("upor:hd")
|
|
885
|
+
end,
|
|
886
|
+
set = function(self, portraitModelPathHD)
|
|
887
|
+
self:setStringField("upor:hd", portraitModelPathHD)
|
|
888
|
+
self.isPortraitModelPathSet = true
|
|
836
889
|
end
|
|
837
890
|
},
|
|
838
891
|
true
|
|
@@ -1496,10 +1549,10 @@ __TS__SetDescriptor(
|
|
|
1496
1549
|
"affectingUpgradeIds",
|
|
1497
1550
|
{
|
|
1498
1551
|
get = function(self)
|
|
1499
|
-
return self:
|
|
1552
|
+
return self:getObjectDataEntryNumericIdsField("upgr")
|
|
1500
1553
|
end,
|
|
1501
1554
|
set = function(self, affectingUpgradeIds)
|
|
1502
|
-
self:
|
|
1555
|
+
self:setObjectDataEntryNumericIdsField("upgr", affectingUpgradeIds)
|
|
1503
1556
|
end
|
|
1504
1557
|
},
|
|
1505
1558
|
true
|
|
@@ -1582,10 +1635,10 @@ __TS__SetDescriptor(
|
|
|
1582
1635
|
"heroAbilityTypeIds",
|
|
1583
1636
|
{
|
|
1584
1637
|
get = function(self)
|
|
1585
|
-
return self:
|
|
1638
|
+
return self:getObjectDataEntryNumericIdsField("uhab")
|
|
1586
1639
|
end,
|
|
1587
1640
|
set = function(self, heroAbilityTypeIds)
|
|
1588
|
-
self:
|
|
1641
|
+
self:setObjectDataEntryNumericIdsField("uhab", heroAbilityTypeIds)
|
|
1589
1642
|
end
|
|
1590
1643
|
},
|
|
1591
1644
|
true
|
|
@@ -3,7 +3,7 @@ import { TupleOf } from "../../../utility/types";
|
|
|
3
3
|
import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
|
|
4
4
|
import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
|
|
5
5
|
import { AbilityTypeId } from "./ability-type";
|
|
6
|
-
export type UpgradeId = ObjectDataEntryId & {
|
|
6
|
+
export type UpgradeId = ObjectDataEntryId & number & {
|
|
7
7
|
readonly __upgradeId: unique symbol;
|
|
8
8
|
};
|
|
9
9
|
export declare const enum UpgradeEffectType {
|
|
@@ -32,7 +32,7 @@ function Upgrade.prototype.getEffect(self, i)
|
|
|
32
32
|
type = effectType,
|
|
33
33
|
bonusBase = self:getNumberField("gba" .. tostring(i)),
|
|
34
34
|
bonusIncrement = self:getNumberField("gmo" .. tostring(i)),
|
|
35
|
-
abilityTypeId = self:
|
|
35
|
+
abilityTypeId = self:getObjectDataEntryNumericIdField("gco" .. tostring(i))
|
|
36
36
|
}
|
|
37
37
|
end
|
|
38
38
|
return nil
|
|
@@ -51,7 +51,7 @@ function Upgrade.prototype.setEffect(self, i, effect)
|
|
|
51
51
|
effect and effect.bonusIncrement or 0
|
|
52
52
|
)
|
|
53
53
|
if (effect and effect.abilityTypeId) ~= nil then
|
|
54
|
-
self:
|
|
54
|
+
self:setObjectDataEntryNumericIdField(
|
|
55
55
|
"gco" .. tostring(i),
|
|
56
56
|
effect and effect.abilityTypeId
|
|
57
57
|
)
|
|
@@ -145,7 +145,7 @@ __TS__SetDescriptor(
|
|
|
145
145
|
"techTreeDependencies",
|
|
146
146
|
{
|
|
147
147
|
get = function(self)
|
|
148
|
-
local techTreeDependencyIds = self:
|
|
148
|
+
local techTreeDependencyIds = self:getObjectDataEntryNumericIdsLevelField("greq")
|
|
149
149
|
local techTreeDependencyInternalLevels = self:getNumbersLevelField("grqc")
|
|
150
150
|
return mapIndexed(
|
|
151
151
|
techTreeDependencyIds,
|
|
@@ -177,7 +177,7 @@ __TS__SetDescriptor(
|
|
|
177
177
|
function(level) return level + 1 end
|
|
178
178
|
)
|
|
179
179
|
end
|
|
180
|
-
self:
|
|
180
|
+
self:setObjectDataEntryNumericIdsLevelField("greq", techTreeDependencyIds)
|
|
181
181
|
self:setNumbersLevelField("grqc", techTreeDependencyInternalLevels)
|
|
182
182
|
end
|
|
183
183
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset";
|
|
3
3
|
import { MutableKeys } from "../../utility/types";
|
|
4
|
-
export type ObjectDataEntryId = number & {
|
|
4
|
+
export type ObjectDataEntryId = (number | string) & {
|
|
5
5
|
readonly __objectDataEntryId: unique symbol;
|
|
6
6
|
};
|
|
7
7
|
export type ObjectDataEntryIdType<T extends ObjectDataEntry> = T extends ObjectDataEntry<infer Id> ? Id : never;
|
|
@@ -14,18 +14,20 @@ export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends stri
|
|
|
14
14
|
export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = ObjectDataEntryId> {
|
|
15
15
|
protected readonly object: WarObject;
|
|
16
16
|
static readonly BASE_ID: ObjectDataEntryId;
|
|
17
|
+
static readonly ID_TYPE: string;
|
|
17
18
|
protected static readonly IS_SYNTHETIC: boolean;
|
|
18
19
|
private readonly levelFieldParametersByField;
|
|
19
20
|
private readonly maxAffectedLevelByField;
|
|
20
21
|
private _isInternal;
|
|
22
|
+
private get type();
|
|
21
23
|
get isInternal(): boolean;
|
|
22
|
-
protected static generateId(): number;
|
|
24
|
+
protected static generateId(): number | string;
|
|
23
25
|
protected static getObjectData(map: WarMap): WarObjects;
|
|
24
|
-
static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): ObjectDataEntryIdType<T>[];
|
|
26
|
+
static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): ObjectDataEntryIdType<T>[];
|
|
25
27
|
static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
|
|
26
|
-
static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): T[];
|
|
28
|
+
static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): T[];
|
|
27
29
|
static getAll<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>): T[];
|
|
28
|
-
static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number): T | undefined;
|
|
30
|
+
static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number | string): T | undefined;
|
|
29
31
|
constructor(object: WarObject);
|
|
30
32
|
get id(): Id;
|
|
31
33
|
get baseId(): Id;
|
|
@@ -42,8 +44,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
|
|
|
42
44
|
protected setNumberField(field: string, value: number): void;
|
|
43
45
|
protected getStringField(field: string): string;
|
|
44
46
|
protected setStringField(field: string, value: string): void;
|
|
45
|
-
protected
|
|
46
|
-
protected
|
|
47
|
+
protected getObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string): Id;
|
|
48
|
+
protected setObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string, value: Id): void;
|
|
47
49
|
protected getAttachmentPresetField(modelPathField: string, nodeFQNField: string): AttachmentPreset | undefined;
|
|
48
50
|
protected setAttachmentPresetField(modelPathField: string, nodeFQNField: string, attachmentPreset: AttachmentPresetInput | undefined): void;
|
|
49
51
|
protected getBooleansField(field: string): boolean[];
|
|
@@ -52,8 +54,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
|
|
|
52
54
|
protected setNumbersField(field: string, values: number[]): void;
|
|
53
55
|
protected getStringsField(field: string): string[];
|
|
54
56
|
protected setStringsField(field: string, values: string[]): void;
|
|
55
|
-
protected
|
|
56
|
-
protected
|
|
57
|
+
protected getObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string): Id[];
|
|
58
|
+
protected setObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string, values: Id[]): void;
|
|
57
59
|
protected getAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[]): AttachmentPreset[];
|
|
58
60
|
protected setAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[], lengthField: string, attachmentPresets: AttachmentPresetInput[]): void;
|
|
59
61
|
protected setFlagLevelFieldValue(fieldId: string, flag: 1 | 2 | 4 | 8 | 16, supplier: ObjectDataEntryLevelFieldValueSupplier<boolean>): void;
|
|
@@ -64,16 +66,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
|
|
|
64
66
|
protected setNumberLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number>): void;
|
|
65
67
|
protected getStringLevelField(field: string): string[];
|
|
66
68
|
protected setStringLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string>): void;
|
|
67
|
-
protected
|
|
68
|
-
protected
|
|
69
|
+
protected getObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string): Id[];
|
|
70
|
+
protected setObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void;
|
|
69
71
|
protected getBooleansLevelField(field: string): boolean[][];
|
|
70
72
|
protected setBooleansLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<boolean[]>): void;
|
|
71
73
|
protected getNumbersLevelField(field: string): number[][];
|
|
72
74
|
protected setNumbersLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number[]>): void;
|
|
73
75
|
protected getStringsLevelField(field: string): string[][];
|
|
74
76
|
protected setStringsLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string[]>): void;
|
|
75
|
-
protected
|
|
76
|
-
protected
|
|
77
|
+
protected getObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string): T[][];
|
|
78
|
+
protected setObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void;
|
|
77
79
|
private getLevelField;
|
|
78
80
|
private setLevelField;
|
|
79
81
|
}
|
|
@@ -10,7 +10,7 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
|
10
10
|
local __TS__StringSplit = ____lualib.__TS__StringSplit
|
|
11
11
|
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
12
12
|
local ____exports = {}
|
|
13
|
-
local booleanToData, dataToBoolean, numberToData, dataToNumber, stringToData, dataToString, objectDataEntryIdToData, dataToObjectDataEntryId, booleansToData, dataToBooleans, numbersToData, dataToNumbers, stringsToData, dataToStrings,
|
|
13
|
+
local booleanToData, dataToBoolean, numberToData, dataToNumber, stringToData, dataToString, objectDataEntryNumericIdToData, dataToObjectDataEntryNumericId, objectDataEntryIdToData, dataToObjectDataEntryId, booleansToData, dataToBooleans, numbersToData, dataToNumbers, stringsToData, dataToStrings, objectDataEntryNumericIdsToData, dataToObjectDataEntryNumericIds, isDataNotBlank
|
|
14
14
|
local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
|
|
15
15
|
local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
|
|
16
16
|
local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
|
|
@@ -124,7 +124,7 @@ function ObjectDataEntry.getAllByBaseIds(self, baseIds)
|
|
|
124
124
|
local constructor = self
|
|
125
125
|
for id, object in pairs(constructor:getObjectData(currentMap).all) do
|
|
126
126
|
if dataBaseIds[object.parentId or id] ~= nil then
|
|
127
|
-
local objectDataEntry = self:of(dataToObjectDataEntryId(id))
|
|
127
|
+
local objectDataEntry = self:of(dataToObjectDataEntryId(id, self.ID_TYPE))
|
|
128
128
|
if objectDataEntry ~= nil and not objectDataEntry.isInternal then
|
|
129
129
|
result[#result + 1] = objectDataEntry
|
|
130
130
|
end
|
|
@@ -139,7 +139,7 @@ function ObjectDataEntry.getAll(self)
|
|
|
139
139
|
local constructor = self
|
|
140
140
|
local result = {}
|
|
141
141
|
for id in pairs(constructor:getObjectData(currentMap).all) do
|
|
142
|
-
local objectDataEntry = self:of(dataToObjectDataEntryId(id))
|
|
142
|
+
local objectDataEntry = self:of(dataToObjectDataEntryId(id, self.ID_TYPE))
|
|
143
143
|
if objectDataEntry ~= nil and not objectDataEntry.isInternal then
|
|
144
144
|
result[#result + 1] = objectDataEntry
|
|
145
145
|
end
|
|
@@ -156,9 +156,9 @@ function ObjectDataEntry.of(self, id)
|
|
|
156
156
|
if object == nil then
|
|
157
157
|
return nil
|
|
158
158
|
end
|
|
159
|
-
local objectDataEntry = objectDataEntryByObjectDataEntryId[dataToObjectDataEntryId(object.id)]
|
|
159
|
+
local objectDataEntry = objectDataEntryByObjectDataEntryId[dataToObjectDataEntryId(object.id, self.ID_TYPE)]
|
|
160
160
|
if objectDataEntry == nil then
|
|
161
|
-
if not constructor.IS_SYNTHETIC and (self.BASE_ID == 0 or dataToObjectDataEntryId(object.parentId) == self.BASE_ID) then
|
|
161
|
+
if not constructor.IS_SYNTHETIC and (self.BASE_ID == 0 or dataToObjectDataEntryId(object.parentId, self.ID_TYPE) == self.BASE_ID) then
|
|
162
162
|
local AbstractObjectDataEntryView = __TS__Class()
|
|
163
163
|
AbstractObjectDataEntryView.name = "AbstractObjectDataEntryView"
|
|
164
164
|
__TS__ClassExtends(AbstractObjectDataEntryView, constructor)
|
|
@@ -231,13 +231,13 @@ function ObjectDataEntry.prototype.setStringField(self, field, value)
|
|
|
231
231
|
stringToData(value)
|
|
232
232
|
)
|
|
233
233
|
end
|
|
234
|
-
function ObjectDataEntry.prototype.
|
|
235
|
-
return
|
|
234
|
+
function ObjectDataEntry.prototype.getObjectDataEntryNumericIdField(self, field)
|
|
235
|
+
return dataToObjectDataEntryNumericId(self.object:getField(field))
|
|
236
236
|
end
|
|
237
|
-
function ObjectDataEntry.prototype.
|
|
237
|
+
function ObjectDataEntry.prototype.setObjectDataEntryNumericIdField(self, field, value)
|
|
238
238
|
self.object:setField(
|
|
239
239
|
field,
|
|
240
|
-
|
|
240
|
+
objectDataEntryNumericIdToData(value)
|
|
241
241
|
)
|
|
242
242
|
end
|
|
243
243
|
function ObjectDataEntry.prototype.getAttachmentPresetField(self, modelPathField, nodeFQNField)
|
|
@@ -285,13 +285,13 @@ function ObjectDataEntry.prototype.setStringsField(self, field, values)
|
|
|
285
285
|
stringsToData(values)
|
|
286
286
|
)
|
|
287
287
|
end
|
|
288
|
-
function ObjectDataEntry.prototype.
|
|
289
|
-
return
|
|
288
|
+
function ObjectDataEntry.prototype.getObjectDataEntryNumericIdsField(self, field)
|
|
289
|
+
return dataToObjectDataEntryNumericIds(self.object:getField(field))
|
|
290
290
|
end
|
|
291
|
-
function ObjectDataEntry.prototype.
|
|
291
|
+
function ObjectDataEntry.prototype.setObjectDataEntryNumericIdsField(self, field, values)
|
|
292
292
|
self.object:setField(
|
|
293
293
|
field,
|
|
294
|
-
|
|
294
|
+
objectDataEntryNumericIdsToData(values)
|
|
295
295
|
)
|
|
296
296
|
end
|
|
297
297
|
function ObjectDataEntry.prototype.getAttachmentPresetListField(self, modelPathListField, nodeFQNFields)
|
|
@@ -369,16 +369,16 @@ function ObjectDataEntry.prototype.setStringLevelField(self, field, values)
|
|
|
369
369
|
stringToData
|
|
370
370
|
)
|
|
371
371
|
end
|
|
372
|
-
function ObjectDataEntry.prototype.
|
|
373
|
-
return self:getLevelField(field,
|
|
372
|
+
function ObjectDataEntry.prototype.getObjectDataEntryNumericIdLevelField(self, field)
|
|
373
|
+
return self:getLevelField(field, dataToObjectDataEntryNumericId)
|
|
374
374
|
end
|
|
375
|
-
function ObjectDataEntry.prototype.
|
|
375
|
+
function ObjectDataEntry.prototype.setObjectDataEntryNumericIdLevelField(self, field, values)
|
|
376
376
|
self:setLevelField(
|
|
377
377
|
field,
|
|
378
378
|
values,
|
|
379
379
|
____exports.extractObjectDataEntryLevelFieldValue,
|
|
380
|
-
|
|
381
|
-
|
|
380
|
+
dataToObjectDataEntryNumericId,
|
|
381
|
+
objectDataEntryNumericIdToData
|
|
382
382
|
)
|
|
383
383
|
end
|
|
384
384
|
function ObjectDataEntry.prototype.getBooleansLevelField(self, field)
|
|
@@ -417,23 +417,26 @@ function ObjectDataEntry.prototype.setStringsLevelField(self, field, values)
|
|
|
417
417
|
stringsToData
|
|
418
418
|
)
|
|
419
419
|
end
|
|
420
|
-
function ObjectDataEntry.prototype.
|
|
421
|
-
return self:getLevelField(field,
|
|
420
|
+
function ObjectDataEntry.prototype.getObjectDataEntryNumericIdsLevelField(self, field)
|
|
421
|
+
return self:getLevelField(field, dataToObjectDataEntryNumericIds)
|
|
422
422
|
end
|
|
423
|
-
function ObjectDataEntry.prototype.
|
|
423
|
+
function ObjectDataEntry.prototype.setObjectDataEntryNumericIdsLevelField(self, field, values)
|
|
424
424
|
self:setLevelField(
|
|
425
425
|
field,
|
|
426
426
|
values,
|
|
427
427
|
____exports.extractObjectDataEntryLevelArrayFieldValue,
|
|
428
|
-
|
|
429
|
-
|
|
428
|
+
dataToObjectDataEntryNumericIds,
|
|
429
|
+
objectDataEntryNumericIdsToData
|
|
430
430
|
)
|
|
431
431
|
end
|
|
432
432
|
function ObjectDataEntry.prototype.getLevelField(self, field, dataToValue)
|
|
433
433
|
local values = {}
|
|
434
434
|
local object = self.object
|
|
435
435
|
for level = 1, tonumber(object:getField("levels")) or 1 do
|
|
436
|
-
values[level] = dataToValue(
|
|
436
|
+
values[level] = dataToValue(
|
|
437
|
+
object:getField((field .. "+") .. tostring(level)),
|
|
438
|
+
"number"
|
|
439
|
+
)
|
|
437
440
|
end
|
|
438
441
|
return values
|
|
439
442
|
end
|
|
@@ -472,7 +475,16 @@ function ObjectDataEntry.prototype.setLevelField(self, field, supplier, extracto
|
|
|
472
475
|
end
|
|
473
476
|
end
|
|
474
477
|
ObjectDataEntry.BASE_ID = 0
|
|
478
|
+
ObjectDataEntry.ID_TYPE = type(self.BASE_ID) == "number" and "number" or "string"
|
|
475
479
|
ObjectDataEntry.IS_SYNTHETIC = false
|
|
480
|
+
__TS__SetDescriptor(
|
|
481
|
+
ObjectDataEntry.prototype,
|
|
482
|
+
"type",
|
|
483
|
+
{get = function(self)
|
|
484
|
+
return self.constructor
|
|
485
|
+
end},
|
|
486
|
+
true
|
|
487
|
+
)
|
|
476
488
|
__TS__SetDescriptor(
|
|
477
489
|
ObjectDataEntry.prototype,
|
|
478
490
|
"isInternal",
|
|
@@ -495,7 +507,7 @@ __TS__SetDescriptor(
|
|
|
495
507
|
ObjectDataEntry.prototype,
|
|
496
508
|
"id",
|
|
497
509
|
{get = function(self)
|
|
498
|
-
return dataToObjectDataEntryId(self.object.id)
|
|
510
|
+
return dataToObjectDataEntryId(self.object.id, self.type.ID_TYPE)
|
|
499
511
|
end},
|
|
500
512
|
true
|
|
501
513
|
)
|
|
@@ -503,7 +515,7 @@ __TS__SetDescriptor(
|
|
|
503
515
|
ObjectDataEntry.prototype,
|
|
504
516
|
"baseId",
|
|
505
517
|
{get = function(self)
|
|
506
|
-
return dataToObjectDataEntryId(self.object.parentId or self.object.id)
|
|
518
|
+
return dataToObjectDataEntryId(self.object.parentId or self.object.id, self.type.ID_TYPE)
|
|
507
519
|
end},
|
|
508
520
|
true
|
|
509
521
|
)
|
|
@@ -533,10 +545,10 @@ end
|
|
|
533
545
|
dataToString = function(data)
|
|
534
546
|
return tostring(data or "")
|
|
535
547
|
end
|
|
536
|
-
|
|
548
|
+
objectDataEntryNumericIdToData = function(value)
|
|
537
549
|
return value == 0 and "" or string.pack(">I4", value)
|
|
538
550
|
end
|
|
539
|
-
|
|
551
|
+
dataToObjectDataEntryNumericId = function(data)
|
|
540
552
|
local dataString = dataToString(data)
|
|
541
553
|
if isDataNotBlank(nil, dataString) then
|
|
542
554
|
return (string.unpack(">I4", dataString))
|
|
@@ -544,6 +556,15 @@ dataToObjectDataEntryId = function(data)
|
|
|
544
556
|
return 0
|
|
545
557
|
end
|
|
546
558
|
end
|
|
559
|
+
objectDataEntryIdToData = function(value)
|
|
560
|
+
return type(value) == "number" and objectDataEntryNumericIdToData(value) or value
|
|
561
|
+
end
|
|
562
|
+
dataToObjectDataEntryId = function(data, ____type)
|
|
563
|
+
if ____type == "number" then
|
|
564
|
+
return dataToObjectDataEntryNumericId(data)
|
|
565
|
+
end
|
|
566
|
+
return dataToString(data)
|
|
567
|
+
end
|
|
547
568
|
booleansToData = function(value)
|
|
548
569
|
return table.concat(
|
|
549
570
|
__TS__ArrayMap(
|
|
@@ -607,16 +628,16 @@ dataToStrings = function(data)
|
|
|
607
628
|
function(____, data) return dataToString(data) end
|
|
608
629
|
)
|
|
609
630
|
end
|
|
610
|
-
|
|
631
|
+
objectDataEntryNumericIdsToData = function(value)
|
|
611
632
|
return table.concat(
|
|
612
633
|
__TS__ArrayMap(
|
|
613
634
|
value,
|
|
614
|
-
function(____, objectDataEntryId) return
|
|
635
|
+
function(____, objectDataEntryId) return objectDataEntryNumericIdToData(objectDataEntryId) end
|
|
615
636
|
),
|
|
616
637
|
","
|
|
617
638
|
)
|
|
618
639
|
end
|
|
619
|
-
|
|
640
|
+
dataToObjectDataEntryNumericIds = function(data)
|
|
620
641
|
return __TS__ArrayMap(
|
|
621
642
|
__TS__ArrayFilter(
|
|
622
643
|
__TS__StringSplit(
|
|
@@ -625,7 +646,7 @@ dataToObjectDataEntryIds = function(data)
|
|
|
625
646
|
),
|
|
626
647
|
isDataNotBlank
|
|
627
648
|
),
|
|
628
|
-
function(____, data) return
|
|
649
|
+
function(____, data) return dataToObjectDataEntryNumericId(data) end
|
|
629
650
|
)
|
|
630
651
|
end
|
|
631
652
|
isDataNotBlank = function(self, data)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { StandardSoundPresetId } from "../../object-data/entry/sound-preset";
|
|
3
|
+
export declare const ABOMINATION_PISSED_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
4
|
+
export declare const ABOMINATION_READY_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
5
|
+
export declare const ABOMINATION_WAR_CRY_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
6
|
+
export declare const AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
7
|
+
export declare const IMPALE_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
8
|
+
export declare const IMPALE_HIT_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
9
|
+
export declare const IMPALE_LAND_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
10
|
+
export declare const IMPALE_CAST_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
____exports.ABOMINATION_PISSED_SOUND_PRESET_ID = "AbominationPissed"
|
|
3
|
+
____exports.ABOMINATION_READY_SOUND_PRESET_ID = "AbominationReady"
|
|
4
|
+
____exports.ABOMINATION_WAR_CRY_SOUND_PRESET_ID = "AbominationWarcry"
|
|
5
|
+
____exports.AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID = "AxeMediumChopWood"
|
|
6
|
+
____exports.IMPALE_SOUND_PRESET_ID = "Impale"
|
|
7
|
+
____exports.IMPALE_HIT_SOUND_PRESET_ID = "ImpaleHit"
|
|
8
|
+
____exports.IMPALE_LAND_SOUND_PRESET_ID = "ImpaleLand"
|
|
9
|
+
____exports.IMPALE_CAST_SOUND_PRESET_ID = "ImpaleCast"
|
|
10
|
+
return ____exports
|
package/objutil/unit.lua
CHANGED
|
@@ -11,6 +11,8 @@ local ____exports = {}
|
|
|
11
11
|
local ____object = require("objutil.object")
|
|
12
12
|
local ObjectDefinition = ____object.ObjectDefinition
|
|
13
13
|
local idgen = require("objutil.idgen")
|
|
14
|
+
local ____config = require("config")
|
|
15
|
+
local WarscriptConfig = ____config.WarscriptConfig
|
|
14
16
|
local attackTypes = setmetatable(
|
|
15
17
|
{
|
|
16
18
|
normal = "normal",
|
|
@@ -593,6 +595,9 @@ __TS__SetDescriptor(
|
|
|
593
595
|
end,
|
|
594
596
|
set = function(self, v)
|
|
595
597
|
self:setStringField("umdl", v)
|
|
598
|
+
if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
599
|
+
self:setStringField("upor", v)
|
|
600
|
+
end
|
|
596
601
|
end
|
|
597
602
|
},
|
|
598
603
|
true
|
|
@@ -606,6 +611,9 @@ __TS__SetDescriptor(
|
|
|
606
611
|
end,
|
|
607
612
|
set = function(self, v)
|
|
608
613
|
self.object:setField("umdl:hd", v)
|
|
614
|
+
if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
615
|
+
self.object:setField("upor:hd", v)
|
|
616
|
+
end
|
|
609
617
|
end
|
|
610
618
|
},
|
|
611
619
|
true
|
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.47f470c",
|
|
5
5
|
"description": "A typescript library for Warcraft III using Warpack.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"warcraft",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@warscript/language-extensions": "^0.0.1",
|
|
25
25
|
"@warscript/tstl-plugin": "^0.0.4",
|
|
26
26
|
"lua-types": "^2.13.1",
|
|
27
|
-
"warpack": "0.0.1-dev.
|
|
27
|
+
"warpack": "0.0.1-dev.57dfac2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@typescript-eslint/eslint-plugin": "^8.13.0",
|