warscript 0.0.1-dev.d18f377 → 0.0.1-dev.d410c75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -0
- package/core/types/effect.lua +80 -30
- package/core/types/sound.d.ts +1 -0
- package/core/types/sound.lua +32 -2
- package/core/util.d.ts +1 -1
- package/core/util.lua +6 -0
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/emulate-impact.lua +6 -7
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- package/engine/behaviour/ability.d.ts +10 -2
- package/engine/behaviour/ability.lua +59 -1
- package/engine/buff.d.ts +50 -40
- package/engine/buff.lua +261 -225
- package/engine/internal/ability.d.ts +11 -1
- package/engine/internal/ability.lua +67 -2
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item.d.ts +2 -2
- package/engine/internal/item.lua +56 -25
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.lua +6 -12
- package/engine/internal/unit.d.ts +3 -1
- package/engine/internal/unit.lua +63 -13
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/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 +24 -27
- 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 +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +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 +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +9 -3
- package/engine/object-field/ability.lua +3 -0
- package/engine/object-field.d.ts +2 -2
- package/engine/object-field.lua +4 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
-
local __TS__New = ____lualib.__TS__New
|
|
5
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
6
5
|
local ____exports = {}
|
|
7
6
|
local ____unit = require("engine.internal.unit")
|
|
@@ -31,7 +30,7 @@ local ____entry = require("engine.object-data.entry")
|
|
|
31
30
|
local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLevelFieldValue
|
|
32
31
|
local ObjectDataEntry = ____entry.ObjectDataEntry
|
|
33
32
|
local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
|
|
34
|
-
local
|
|
33
|
+
local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
|
|
35
34
|
local ____upgrade = require("engine.object-data.entry.upgrade")
|
|
36
35
|
local Upgrade = ____upgrade.Upgrade
|
|
37
36
|
local castAnimationFQNByAbilityTypeId = {}
|
|
@@ -53,10 +52,7 @@ end
|
|
|
53
52
|
function AbilityType.getObjectData(self, map)
|
|
54
53
|
return map.objects.ability
|
|
55
54
|
end
|
|
56
|
-
AbilityType.idGenerator =
|
|
57
|
-
ObjectDataEntryIdGenerator,
|
|
58
|
-
fourCC("A000")
|
|
59
|
-
)
|
|
55
|
+
AbilityType.idGenerator = abilityTypeIdGenerator
|
|
60
56
|
__TS__SetDescriptor(
|
|
61
57
|
AbilityType.prototype,
|
|
62
58
|
"channelingAnimation",
|
|
@@ -275,10 +271,10 @@ __TS__SetDescriptor(
|
|
|
275
271
|
"lightningTypeIds",
|
|
276
272
|
{
|
|
277
273
|
get = function(self)
|
|
278
|
-
return self:
|
|
274
|
+
return self:getObjectDataEntryNumericIdsField("alig")
|
|
279
275
|
end,
|
|
280
276
|
set = function(self, lightningTypeIds)
|
|
281
|
-
self:
|
|
277
|
+
self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
|
|
282
278
|
end
|
|
283
279
|
},
|
|
284
280
|
true
|
|
@@ -512,7 +508,7 @@ __TS__SetDescriptor(
|
|
|
512
508
|
"techTreeDependencies",
|
|
513
509
|
{
|
|
514
510
|
get = function(self)
|
|
515
|
-
local techTreeDependencyIds = self:
|
|
511
|
+
local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
|
|
516
512
|
local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
|
|
517
513
|
return mapIndexed(
|
|
518
514
|
techTreeDependencyIds,
|
|
@@ -532,7 +528,7 @@ __TS__SetDescriptor(
|
|
|
532
528
|
map(techTreeDependencies, extractTechTreeDependencyInputLevel),
|
|
533
529
|
function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
|
|
534
530
|
)
|
|
535
|
-
self:
|
|
531
|
+
self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
|
|
536
532
|
self:setNumbersField("arqa", techTreeDependencyInternalLevels)
|
|
537
533
|
end
|
|
538
534
|
},
|
|
@@ -722,26 +718,27 @@ __TS__SetDescriptor(
|
|
|
722
718
|
)
|
|
723
719
|
__TS__SetDescriptor(
|
|
724
720
|
AbilityType.prototype,
|
|
725
|
-
"
|
|
721
|
+
"casterEffectSoundPresetId",
|
|
726
722
|
{
|
|
727
723
|
get = function(self)
|
|
728
|
-
|
|
724
|
+
local casterEffectSoundPresetId = self:getStringField("aefs")
|
|
725
|
+
return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
|
|
729
726
|
end,
|
|
730
|
-
set = function(self,
|
|
731
|
-
self:setStringField("aefs",
|
|
727
|
+
set = function(self, casterEffectSoundPresetId)
|
|
728
|
+
self:setStringField("aefs", casterEffectSoundPresetId or "")
|
|
732
729
|
end
|
|
733
730
|
},
|
|
734
731
|
true
|
|
735
732
|
)
|
|
736
733
|
__TS__SetDescriptor(
|
|
737
734
|
AbilityType.prototype,
|
|
738
|
-
"
|
|
735
|
+
"casterEffectLoopingSoundPresetId",
|
|
739
736
|
{
|
|
740
737
|
get = function(self)
|
|
741
738
|
return self:getStringField("aefl")
|
|
742
739
|
end,
|
|
743
|
-
set = function(self,
|
|
744
|
-
self:setStringField("aefl",
|
|
740
|
+
set = function(self, casterEffectLoopingSoundPresetId)
|
|
741
|
+
self:setStringField("aefl", casterEffectLoopingSoundPresetId)
|
|
745
742
|
end
|
|
746
743
|
},
|
|
747
744
|
true
|
|
@@ -800,10 +797,10 @@ __TS__SetDescriptor(
|
|
|
800
797
|
"buffTypeIds",
|
|
801
798
|
{
|
|
802
799
|
get = function(self)
|
|
803
|
-
return self:
|
|
800
|
+
return self:getObjectDataEntryNumericIdsLevelField("abuf")
|
|
804
801
|
end,
|
|
805
802
|
set = function(self, buffTypeIds)
|
|
806
|
-
self:
|
|
803
|
+
self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
|
|
807
804
|
end
|
|
808
805
|
},
|
|
809
806
|
true
|
|
@@ -852,10 +849,10 @@ __TS__SetDescriptor(
|
|
|
852
849
|
"effectBuffTypeIds",
|
|
853
850
|
{
|
|
854
851
|
get = function(self)
|
|
855
|
-
return self:
|
|
852
|
+
return self:getObjectDataEntryNumericIdsLevelField("aeff")
|
|
856
853
|
end,
|
|
857
854
|
set = function(self, effectBuffTypeIds)
|
|
858
|
-
self:
|
|
855
|
+
self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
|
|
859
856
|
end
|
|
860
857
|
},
|
|
861
858
|
true
|
|
@@ -999,7 +996,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
|
|
|
999
996
|
end
|
|
1000
997
|
casterCastingEffectsByCaster[caster] = effects
|
|
1001
998
|
end
|
|
1002
|
-
local function
|
|
999
|
+
local function handleAbilityStopCastingEvent(caster)
|
|
1003
1000
|
local effects = casterCastingEffectsByCaster[caster]
|
|
1004
1001
|
if effects ~= nil then
|
|
1005
1002
|
for i = 1, #effects do
|
|
@@ -1010,8 +1007,8 @@ local function handleAbilityStopEvent(caster)
|
|
|
1010
1007
|
end
|
|
1011
1008
|
for abilityTypeId in pairs(casterCastingEffectModelPathsByAbilityTypeId) do
|
|
1012
1009
|
Unit.abilityCastingStartEvent[abilityTypeId]:addListener(4, handleAbilityCastingStartEvent)
|
|
1013
|
-
Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4,
|
|
1014
|
-
Unit.abilityStopEvent[abilityTypeId]:addListener(4,
|
|
1010
|
+
Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
|
|
1011
|
+
Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
|
|
1015
1012
|
end
|
|
1016
1013
|
local casterChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
|
|
1017
1014
|
return mapValues(
|
|
@@ -1042,7 +1039,7 @@ local function handleAbilityChannelingStartEvent(caster, ability)
|
|
|
1042
1039
|
end
|
|
1043
1040
|
casterChannelingEffectsByCaster[caster] = effects
|
|
1044
1041
|
end
|
|
1045
|
-
local function
|
|
1042
|
+
local function handleAbilityStopChannelingEvent(caster)
|
|
1046
1043
|
local effects = casterChannelingEffectsByCaster[caster]
|
|
1047
1044
|
if effects ~= nil then
|
|
1048
1045
|
for i = 1, #effects do
|
|
@@ -1053,7 +1050,7 @@ local function handleAbilityStopEventV2(caster)
|
|
|
1053
1050
|
end
|
|
1054
1051
|
for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
|
|
1055
1052
|
Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
|
|
1056
|
-
Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4,
|
|
1057
|
-
Unit.abilityStopEvent[abilityTypeId]:addListener(4,
|
|
1053
|
+
Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1054
|
+
Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1058
1055
|
end
|
|
1059
1056
|
return ____exports
|
|
@@ -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> {
|
|
@@ -45,6 +45,8 @@ export declare class ItemType extends ObjectDataEntry<ItemTypeId> {
|
|
|
45
45
|
set tooltipText(tooltipText: string);
|
|
46
46
|
get tooltipExtendedText(): string;
|
|
47
47
|
set tooltipExtendedText(tooltipText: string);
|
|
48
|
+
get cooldownGroupId(): number;
|
|
49
|
+
set cooldownGroupId(cooldownGroupId: number);
|
|
48
50
|
get goldCost(): number;
|
|
49
51
|
set goldCost(goldCost: number);
|
|
50
52
|
get lumberCost(): number;
|
|
@@ -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
|
|
@@ -256,6 +256,19 @@ __TS__SetDescriptor(
|
|
|
256
256
|
},
|
|
257
257
|
true
|
|
258
258
|
)
|
|
259
|
+
__TS__SetDescriptor(
|
|
260
|
+
ItemType.prototype,
|
|
261
|
+
"cooldownGroupId",
|
|
262
|
+
{
|
|
263
|
+
get = function(self)
|
|
264
|
+
return self:getObjectDataEntryNumericIdField("icid")
|
|
265
|
+
end,
|
|
266
|
+
set = function(self, cooldownGroupId)
|
|
267
|
+
self:setObjectDataEntryNumericIdField("icid", cooldownGroupId)
|
|
268
|
+
end
|
|
269
|
+
},
|
|
270
|
+
true
|
|
271
|
+
)
|
|
259
272
|
__TS__SetDescriptor(
|
|
260
273
|
ItemType.prototype,
|
|
261
274
|
"goldCost",
|
|
@@ -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
|
},
|