warscript 0.0.1-dev.c8224f3 → 0.0.1-dev.c8f98de
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/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability.d.ts +2 -1
- package/engine/behaviour/ability.lua +16 -3
- package/engine/buff.d.ts +50 -40
- package/engine/buff.lua +261 -225
- package/engine/internal/item.d.ts +2 -2
- package/engine/internal/item.lua +56 -25
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/add-item-to-slot.lua +4 -2
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- package/engine/lightning.d.ts +4 -3
- package/engine/lightning.lua +21 -12
- 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/curse.lua +2 -2
- 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 +6 -6
- package/engine/object-data/entry/ability-type.lua +16 -15
- package/engine/object-data/entry/buff-type/applicable.lua +11 -35
- 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 +16 -0
- package/engine/object-data/entry/sound-preset.lua +36 -0
- package/engine/object-data/entry/unit-type.d.ts +8 -1
- package/engine/object-data/entry/unit-type.lua +61 -8
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/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/utility/reflection.lua +11 -7
|
@@ -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
|
},
|
|
@@ -718,26 +718,27 @@ __TS__SetDescriptor(
|
|
|
718
718
|
)
|
|
719
719
|
__TS__SetDescriptor(
|
|
720
720
|
AbilityType.prototype,
|
|
721
|
-
"
|
|
721
|
+
"casterEffectSoundPresetId",
|
|
722
722
|
{
|
|
723
723
|
get = function(self)
|
|
724
|
-
|
|
724
|
+
local casterEffectSoundPresetId = self:getStringField("aefs")
|
|
725
|
+
return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
|
|
725
726
|
end,
|
|
726
|
-
set = function(self,
|
|
727
|
-
self:setStringField("aefs",
|
|
727
|
+
set = function(self, casterEffectSoundPresetId)
|
|
728
|
+
self:setStringField("aefs", casterEffectSoundPresetId or "")
|
|
728
729
|
end
|
|
729
730
|
},
|
|
730
731
|
true
|
|
731
732
|
)
|
|
732
733
|
__TS__SetDescriptor(
|
|
733
734
|
AbilityType.prototype,
|
|
734
|
-
"
|
|
735
|
+
"casterEffectLoopingSoundPresetId",
|
|
735
736
|
{
|
|
736
737
|
get = function(self)
|
|
737
738
|
return self:getStringField("aefl")
|
|
738
739
|
end,
|
|
739
|
-
set = function(self,
|
|
740
|
-
self:setStringField("aefl",
|
|
740
|
+
set = function(self, casterEffectLoopingSoundPresetId)
|
|
741
|
+
self:setStringField("aefl", casterEffectLoopingSoundPresetId)
|
|
741
742
|
end
|
|
742
743
|
},
|
|
743
744
|
true
|
|
@@ -796,10 +797,10 @@ __TS__SetDescriptor(
|
|
|
796
797
|
"buffTypeIds",
|
|
797
798
|
{
|
|
798
799
|
get = function(self)
|
|
799
|
-
return self:
|
|
800
|
+
return self:getObjectDataEntryNumericIdsLevelField("abuf")
|
|
800
801
|
end,
|
|
801
802
|
set = function(self, buffTypeIds)
|
|
802
|
-
self:
|
|
803
|
+
self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
|
|
803
804
|
end
|
|
804
805
|
},
|
|
805
806
|
true
|
|
@@ -848,10 +849,10 @@ __TS__SetDescriptor(
|
|
|
848
849
|
"effectBuffTypeIds",
|
|
849
850
|
{
|
|
850
851
|
get = function(self)
|
|
851
|
-
return self:
|
|
852
|
+
return self:getObjectDataEntryNumericIdsLevelField("aeff")
|
|
852
853
|
end,
|
|
853
854
|
set = function(self, effectBuffTypeIds)
|
|
854
|
-
self:
|
|
855
|
+
self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
|
|
855
856
|
end
|
|
856
857
|
},
|
|
857
858
|
true
|
|
@@ -10,8 +10,8 @@ local ____exports = {}
|
|
|
10
10
|
local preparePhysicalPositiveApplicatorAbility
|
|
11
11
|
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
12
12
|
local AbilityType = ____ability_2Dtype.AbilityType
|
|
13
|
-
local
|
|
14
|
-
local
|
|
13
|
+
local ____curse = require("engine.object-data.entry.ability-type.curse")
|
|
14
|
+
local CurseAbilityType = ____curse.CurseAbilityType
|
|
15
15
|
local ____searing_2Darrows = require("engine.object-data.entry.ability-type.searing-arrows")
|
|
16
16
|
local SearingArrowsAbilityType = ____searing_2Darrows.SearingArrowsAbilityType
|
|
17
17
|
local ____slow_2Dpoison = require("engine.object-data.entry.ability-type.slow-poison")
|
|
@@ -30,7 +30,6 @@ local ____arrays = require("utility.arrays")
|
|
|
30
30
|
local chunked = ____arrays.chunked
|
|
31
31
|
local map = ____arrays.map
|
|
32
32
|
local max = ____arrays.max
|
|
33
|
-
local toLuaSet = ____arrays.toLuaSet
|
|
34
33
|
local ____blood_2Dlust = require("engine.object-data.entry.ability-type.blood-lust")
|
|
35
34
|
local BloodLustAbilityType = ____blood_2Dlust.BloodLustAbilityType
|
|
36
35
|
local ____berserk = require("engine.object-data.entry.ability-type.berserk")
|
|
@@ -43,22 +42,11 @@ local ____permanent_2Dimmolation = require("engine.object-data.entry.ability-typ
|
|
|
43
42
|
local PermanentImmolationAbilityType = ____permanent_2Dimmolation.PermanentImmolationAbilityType
|
|
44
43
|
local ____cast_2Dability = require("engine.internal.mechanics.cast-ability")
|
|
45
44
|
local castAbility = ____cast_2Dability.castAbility
|
|
46
|
-
local createItem = CreateItem
|
|
47
|
-
local getAbilityId = BlzGetAbilityId
|
|
48
|
-
local getItemAbility = BlzGetItemAbility
|
|
49
|
-
local getOwningPlayer = GetOwningPlayer
|
|
50
|
-
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
51
|
-
local itemAddAbility = BlzItemAddAbility
|
|
52
|
-
local removeItem = RemoveItem
|
|
53
45
|
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
54
46
|
local setAbilityRealLevelField = BlzSetAbilityRealLevelField
|
|
55
|
-
local setItemBooleanField = BlzSetItemBooleanField
|
|
56
47
|
local setPlayerTechResearched = SetPlayerTechResearched
|
|
57
48
|
local unitAddAbility = UnitAddAbility
|
|
58
|
-
local unitAddItem = UnitAddItem
|
|
59
49
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
60
|
-
local unitDropItemSlot = UnitDropItemSlot
|
|
61
|
-
local unitInventorySize = UnitInventorySize
|
|
62
50
|
local unitRemoveAbility = UnitRemoveAbility
|
|
63
51
|
local compiletimeApplicableBuffTypes = {}
|
|
64
52
|
____exports.ApplicableBuffType = __TS__Class()
|
|
@@ -86,7 +74,7 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
|
|
|
86
74
|
abilityType.buttonPositionY = -11
|
|
87
75
|
abilityType.casterAttachmentPresets = {}
|
|
88
76
|
abilityType.targetEffectPresets = {}
|
|
89
|
-
abilityType.
|
|
77
|
+
abilityType.casterEffectSoundPresetId = nil
|
|
90
78
|
abilityType.learnLevelMinimum = 6
|
|
91
79
|
abilityType.race = "other"
|
|
92
80
|
abilityType.shouldCheckTechTreeDependencies = false
|
|
@@ -113,10 +101,8 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
|
|
|
113
101
|
local applicatorAbilityTypeIdByApplicatorType = {}
|
|
114
102
|
if applicableBuffType.resistanceType == 1 or applicableBuffType.resistanceType == nil then
|
|
115
103
|
if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
|
|
116
|
-
local applicatorAbilityType = prepareAbilityType(
|
|
117
|
-
applicatorAbilityType.
|
|
118
|
-
applicatorAbilityType.attackSpeedDecreaseFactor = 0
|
|
119
|
-
applicatorAbilityType.damageDecreaseFactor = 0
|
|
104
|
+
local applicatorAbilityType = prepareAbilityType(CurseAbilityType, applicableBuffType)
|
|
105
|
+
applicatorAbilityType.missProbability = 0
|
|
120
106
|
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
121
107
|
applicatorAbilityTypeIdByApplicatorType[852189] = applicatorAbilityType.id
|
|
122
108
|
end
|
|
@@ -204,15 +190,6 @@ local EVASION_ABILITY_TYPE_IDS = postcompile(function()
|
|
|
204
190
|
"AIcs"
|
|
205
191
|
}, fourCC))
|
|
206
192
|
end)
|
|
207
|
-
local INVENTORY_ABILITY_TYPE_IDS = postcompile(function()
|
|
208
|
-
return toLuaSet(AbilityType:getAllIdsByBaseIds(map({
|
|
209
|
-
"AInv",
|
|
210
|
-
"Aihn",
|
|
211
|
-
"Aien",
|
|
212
|
-
"Aion",
|
|
213
|
-
"Aiun"
|
|
214
|
-
}, fourCC)))
|
|
215
|
-
end)
|
|
216
193
|
local SEARING_ARROWS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
217
194
|
local abilityType = SearingArrowsAbilityType:create()
|
|
218
195
|
abilityType.isInternal = true
|
|
@@ -244,7 +221,7 @@ Unit.abilityCastingStartEvent[SEARING_ARROWS_DUMMY_ABILITY_TYPE_ID]:addListener(
|
|
|
244
221
|
)
|
|
245
222
|
---
|
|
246
223
|
-- @internal For use by internal systems only.
|
|
247
|
-
____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum,
|
|
224
|
+
____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum, missProbability)
|
|
248
225
|
local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852189 or 852173) or 0)
|
|
249
226
|
local ____opt_1 = applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffTypeId]
|
|
250
227
|
local applicatorAbilityTypeId = ____opt_1 and ____opt_1[applicatorType]
|
|
@@ -267,8 +244,7 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
267
244
|
applicatorAbilityTypeId,
|
|
268
245
|
preparePhysicalPositiveApplicatorAbility,
|
|
269
246
|
level,
|
|
270
|
-
duration or 0
|
|
271
|
-
movementSpeedIncreaseFactor
|
|
247
|
+
duration or 0
|
|
272
248
|
)
|
|
273
249
|
if level ~= nil and level > 0 then
|
|
274
250
|
local upgradeId = applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId]
|
|
@@ -298,6 +274,9 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
298
274
|
ability:setField(ABILITY_RLF_DURATION_HERO, level, actualDuration)
|
|
299
275
|
ability:setField(ABILITY_IF_PRIORITY, spellStealPriority or 0)
|
|
300
276
|
ability:setField(ABILITY_IF_REQUIRED_LEVEL, learnLevelMinimum or 6)
|
|
277
|
+
if missProbability ~= nil and applicatorType == 852189 then
|
|
278
|
+
ability:setField(ABILITY_RLF_CHANCE_TO_MISS_CRS, missProbability)
|
|
279
|
+
end
|
|
301
280
|
end,
|
|
302
281
|
applicatorType,
|
|
303
282
|
unit
|
|
@@ -309,16 +288,13 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
309
288
|
end
|
|
310
289
|
return success
|
|
311
290
|
end
|
|
312
|
-
preparePhysicalPositiveApplicatorAbility = function(ability, level, duration
|
|
291
|
+
preparePhysicalPositiveApplicatorAbility = function(ability, level, duration)
|
|
313
292
|
if level == nil then
|
|
314
293
|
setAbilityIntegerField(ability, ABILITY_IF_LEVELS, 1)
|
|
315
294
|
level = 1
|
|
316
295
|
end
|
|
317
296
|
setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_NORMAL, level, duration)
|
|
318
297
|
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
298
|
end
|
|
323
299
|
---
|
|
324
300
|
-- @internal For use by internal systems only.
|
|
@@ -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,16 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { ObjectDataEntry, 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 BASE_ID: SoundPresetId;
|
|
11
|
+
private static nextId;
|
|
12
|
+
protected static generateId(): string;
|
|
13
|
+
protected static getObjectData(map: WarMap): WarObjects;
|
|
14
|
+
get filePaths(): string[];
|
|
15
|
+
set filePaths(filePaths: string[]);
|
|
16
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
____exports.SoundPreset = __TS__Class()
|
|
9
|
+
local SoundPreset = ____exports.SoundPreset
|
|
10
|
+
SoundPreset.name = "SoundPreset"
|
|
11
|
+
__TS__ClassExtends(SoundPreset, ObjectDataEntry)
|
|
12
|
+
function SoundPreset.generateId(self)
|
|
13
|
+
local ____self_0, ____nextId_1 = self, "nextId"
|
|
14
|
+
local ____self_nextId_2 = ____self_0[____nextId_1]
|
|
15
|
+
____self_0[____nextId_1] = ____self_nextId_2 + 1
|
|
16
|
+
return "CustomSound" .. tostring(____self_nextId_2)
|
|
17
|
+
end
|
|
18
|
+
function SoundPreset.getObjectData(self, map)
|
|
19
|
+
return map.objects.sound
|
|
20
|
+
end
|
|
21
|
+
SoundPreset.BASE_ID = "BlizzardWave"
|
|
22
|
+
SoundPreset.nextId = 0
|
|
23
|
+
__TS__SetDescriptor(
|
|
24
|
+
SoundPreset.prototype,
|
|
25
|
+
"filePaths",
|
|
26
|
+
{
|
|
27
|
+
get = function(self)
|
|
28
|
+
return self:getStringsField("FileNames")
|
|
29
|
+
end,
|
|
30
|
+
set = function(self, filePaths)
|
|
31
|
+
self:setStringsField("FileNames", filePaths)
|
|
32
|
+
end
|
|
33
|
+
},
|
|
34
|
+
true
|
|
35
|
+
)
|
|
36
|
+
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;
|
|
@@ -18,14 +18,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
|
|
|
18
18
|
private readonly levelFieldParametersByField;
|
|
19
19
|
private readonly maxAffectedLevelByField;
|
|
20
20
|
private _isInternal;
|
|
21
|
+
private get type();
|
|
21
22
|
get isInternal(): boolean;
|
|
22
|
-
|
|
23
|
+
static get idType(): "number" | "string";
|
|
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>[];
|
|
25
|
-
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[];
|
|
26
|
+
static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): ObjectDataEntryIdType<T>[];
|
|
27
|
+
static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number | string, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): 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
|
}
|