warscript 0.0.1-dev.a5f2d10 → 0.0.1-dev.a9a8ba4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +5 -0
- package/attributes.lua +8 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +7 -8
- package/core/types/timer.lua +18 -21
- package/core/util.lua +6 -1
- package/decl/native.d.ts +840 -786
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.lua +16 -2
- package/engine/behaviour/ability.d.ts +5 -1
- package/engine/behaviour/ability.lua +26 -21
- package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
- package/engine/behaviour/unit/stun-immunity.lua +43 -27
- package/engine/behaviour/unit.d.ts +28 -0
- package/engine/behaviour/unit.lua +160 -4
- package/engine/buff.d.ts +54 -41
- package/engine/buff.lua +286 -228
- package/engine/internal/ability.d.ts +4 -0
- package/engine/internal/ability.lua +17 -0
- package/engine/internal/item/ability.lua +62 -11
- package/engine/internal/item.d.ts +7 -4
- package/engine/internal/item.lua +131 -28
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +62 -0
- package/engine/internal/unit/add-item-to-slot.lua +4 -2
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +1 -1
- package/engine/internal/unit.d.ts +28 -5
- package/engine/internal/unit.lua +243 -74
- 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/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- 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/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- 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/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +81 -21
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- 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 +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- 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/object-field/ability.d.ts +1 -1
- package/engine/object-field/unit.d.ts +50 -3
- package/engine/object-field/unit.lua +186 -7
- package/engine/object-field.d.ts +15 -4
- package/engine/object-field.lua +184 -90
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/unit.d.ts +3 -0
- package/engine/standard/fields/unit.lua +5 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +175 -10
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/objutil/buff.lua +1 -2
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +3 -0
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
|
@@ -2,6 +2,7 @@ local ____lualib = require("lualib_bundle")
|
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
5
6
|
local ____exports = {}
|
|
6
7
|
local ____unit = require("engine.internal.unit")
|
|
7
8
|
local Unit = ____unit.Unit
|
|
@@ -19,7 +20,7 @@ local mapIndexed = ____arrays.mapIndexed
|
|
|
19
20
|
local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
|
|
20
21
|
local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
|
|
21
22
|
local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
|
|
22
|
-
local
|
|
23
|
+
local toEffectPreset = ____attachment_2Dpreset.toEffectPreset
|
|
23
24
|
local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
|
|
24
25
|
local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
|
|
25
26
|
local stringArrayToCombatClassifications = ____combat_2Dclassification.stringArrayToCombatClassifications
|
|
@@ -33,11 +34,16 @@ local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.u
|
|
|
33
34
|
local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
|
|
34
35
|
local ____upgrade = require("engine.object-data.entry.upgrade")
|
|
35
36
|
local Upgrade = ____upgrade.Upgrade
|
|
37
|
+
local ____sound = require("core.types.sound")
|
|
38
|
+
local isSoundLabelCustom = ____sound.isSoundLabelCustom
|
|
39
|
+
local Sound3D = ____sound.Sound3D
|
|
40
|
+
local SoundSettings = ____sound.SoundSettings
|
|
36
41
|
local castAnimationFQNByAbilityTypeId = {}
|
|
37
42
|
local isButtonVisibleFalseAbilityTypes = {}
|
|
38
43
|
local casterCastingEffectPresetsByAbilityTypeId = {}
|
|
39
44
|
local casterChannelingEffectPresetsByAbilityTypeId = {}
|
|
40
45
|
local targetCastingEffectPresetsByAbilityTypeId = {}
|
|
46
|
+
local targetEffectSoundPresetByAbilityTypeId = {}
|
|
41
47
|
____exports.AbilityType = __TS__Class()
|
|
42
48
|
local AbilityType = ____exports.AbilityType
|
|
43
49
|
AbilityType.name = "AbilityType"
|
|
@@ -113,7 +119,7 @@ __TS__SetDescriptor(
|
|
|
113
119
|
return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
|
|
114
120
|
end,
|
|
115
121
|
set = function(self, casterCastingEffectPresets)
|
|
116
|
-
casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets,
|
|
122
|
+
casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
|
|
117
123
|
end
|
|
118
124
|
},
|
|
119
125
|
true
|
|
@@ -126,7 +132,7 @@ __TS__SetDescriptor(
|
|
|
126
132
|
return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
|
|
127
133
|
end,
|
|
128
134
|
set = function(self, casterChannelingEffectPresets)
|
|
129
|
-
casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets,
|
|
135
|
+
casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
|
|
130
136
|
end
|
|
131
137
|
},
|
|
132
138
|
true
|
|
@@ -271,10 +277,10 @@ __TS__SetDescriptor(
|
|
|
271
277
|
"lightningTypeIds",
|
|
272
278
|
{
|
|
273
279
|
get = function(self)
|
|
274
|
-
return self:
|
|
280
|
+
return self:getObjectDataEntryNumericIdsField("alig")
|
|
275
281
|
end,
|
|
276
282
|
set = function(self, lightningTypeIds)
|
|
277
|
-
self:
|
|
283
|
+
self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
|
|
278
284
|
end
|
|
279
285
|
},
|
|
280
286
|
true
|
|
@@ -365,7 +371,7 @@ __TS__SetDescriptor(
|
|
|
365
371
|
return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
|
|
366
372
|
end,
|
|
367
373
|
set = function(self, targetCastingEffectPresets)
|
|
368
|
-
targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets,
|
|
374
|
+
targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
|
|
369
375
|
end
|
|
370
376
|
},
|
|
371
377
|
true
|
|
@@ -508,7 +514,7 @@ __TS__SetDescriptor(
|
|
|
508
514
|
"techTreeDependencies",
|
|
509
515
|
{
|
|
510
516
|
get = function(self)
|
|
511
|
-
local techTreeDependencyIds = self:
|
|
517
|
+
local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
|
|
512
518
|
local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
|
|
513
519
|
return mapIndexed(
|
|
514
520
|
techTreeDependencyIds,
|
|
@@ -528,7 +534,7 @@ __TS__SetDescriptor(
|
|
|
528
534
|
map(techTreeDependencies, extractTechTreeDependencyInputLevel),
|
|
529
535
|
function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
|
|
530
536
|
)
|
|
531
|
-
self:
|
|
537
|
+
self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
|
|
532
538
|
self:setNumbersField("arqa", techTreeDependencyInternalLevels)
|
|
533
539
|
end
|
|
534
540
|
},
|
|
@@ -718,26 +724,40 @@ __TS__SetDescriptor(
|
|
|
718
724
|
)
|
|
719
725
|
__TS__SetDescriptor(
|
|
720
726
|
AbilityType.prototype,
|
|
721
|
-
"
|
|
727
|
+
"casterEffectSoundPresetId",
|
|
722
728
|
{
|
|
723
729
|
get = function(self)
|
|
724
|
-
|
|
730
|
+
local casterEffectSoundPresetId = self:getStringField("aefs")
|
|
731
|
+
return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
|
|
725
732
|
end,
|
|
726
|
-
set = function(self,
|
|
727
|
-
self:setStringField("aefs",
|
|
733
|
+
set = function(self, casterEffectSoundPresetId)
|
|
734
|
+
self:setStringField("aefs", casterEffectSoundPresetId or "")
|
|
728
735
|
end
|
|
729
736
|
},
|
|
730
737
|
true
|
|
731
738
|
)
|
|
732
739
|
__TS__SetDescriptor(
|
|
733
740
|
AbilityType.prototype,
|
|
734
|
-
"
|
|
741
|
+
"casterEffectLoopingSoundPresetId",
|
|
735
742
|
{
|
|
736
743
|
get = function(self)
|
|
737
744
|
return self:getStringField("aefl")
|
|
738
745
|
end,
|
|
739
|
-
set = function(self,
|
|
740
|
-
self:setStringField("aefl",
|
|
746
|
+
set = function(self, casterEffectLoopingSoundPresetId)
|
|
747
|
+
self:setStringField("aefl", casterEffectLoopingSoundPresetId)
|
|
748
|
+
end
|
|
749
|
+
},
|
|
750
|
+
true
|
|
751
|
+
)
|
|
752
|
+
__TS__SetDescriptor(
|
|
753
|
+
AbilityType.prototype,
|
|
754
|
+
"targetEffectSoundPresetId",
|
|
755
|
+
{
|
|
756
|
+
get = function(self)
|
|
757
|
+
return targetEffectSoundPresetByAbilityTypeId[self.id]
|
|
758
|
+
end,
|
|
759
|
+
set = function(self, targetEffectSoundPresetId)
|
|
760
|
+
targetEffectSoundPresetByAbilityTypeId[self.id] = targetEffectSoundPresetId
|
|
741
761
|
end
|
|
742
762
|
},
|
|
743
763
|
true
|
|
@@ -796,10 +816,10 @@ __TS__SetDescriptor(
|
|
|
796
816
|
"buffTypeIds",
|
|
797
817
|
{
|
|
798
818
|
get = function(self)
|
|
799
|
-
return self:
|
|
819
|
+
return self:getObjectDataEntryNumericIdsLevelField("abuf")
|
|
800
820
|
end,
|
|
801
821
|
set = function(self, buffTypeIds)
|
|
802
|
-
self:
|
|
822
|
+
self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
|
|
803
823
|
end
|
|
804
824
|
},
|
|
805
825
|
true
|
|
@@ -848,10 +868,10 @@ __TS__SetDescriptor(
|
|
|
848
868
|
"effectBuffTypeIds",
|
|
849
869
|
{
|
|
850
870
|
get = function(self)
|
|
851
|
-
return self:
|
|
871
|
+
return self:getObjectDataEntryNumericIdsLevelField("aeff")
|
|
852
872
|
end,
|
|
853
873
|
set = function(self, effectBuffTypeIds)
|
|
854
|
-
self:
|
|
874
|
+
self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
|
|
855
875
|
end
|
|
856
876
|
},
|
|
857
877
|
true
|
|
@@ -966,6 +986,32 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
|
|
|
966
986
|
end
|
|
967
987
|
)
|
|
968
988
|
end
|
|
989
|
+
for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEffectSoundPresetByAbilityTypeId end)) do
|
|
990
|
+
if soundPresetId ~= nil then
|
|
991
|
+
Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(
|
|
992
|
+
4,
|
|
993
|
+
function(caster, ability, target)
|
|
994
|
+
if __TS__InstanceOf(target, Unit) then
|
|
995
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target)
|
|
996
|
+
else
|
|
997
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target.x, target.y)
|
|
998
|
+
end
|
|
999
|
+
end
|
|
1000
|
+
)
|
|
1001
|
+
Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(
|
|
1002
|
+
4,
|
|
1003
|
+
function(caster, ability, x, y)
|
|
1004
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, x, y)
|
|
1005
|
+
end
|
|
1006
|
+
)
|
|
1007
|
+
end
|
|
1008
|
+
end
|
|
1009
|
+
Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
|
|
1010
|
+
local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
|
|
1011
|
+
if isSoundLabelCustom(soundPresetId) then
|
|
1012
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
|
|
1013
|
+
end
|
|
1014
|
+
end)
|
|
969
1015
|
local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
|
|
970
1016
|
return mapValues(
|
|
971
1017
|
casterCastingEffectPresetsByAbilityTypeId,
|
|
@@ -978,10 +1024,17 @@ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function(
|
|
|
978
1024
|
function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
|
|
979
1025
|
)
|
|
980
1026
|
end)
|
|
1027
|
+
local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
|
|
1028
|
+
return mapValues(
|
|
1029
|
+
casterCastingEffectPresetsByAbilityTypeId,
|
|
1030
|
+
function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
|
|
1031
|
+
)
|
|
1032
|
+
end)
|
|
981
1033
|
local casterCastingEffectsByCaster = {}
|
|
982
1034
|
local function handleAbilityCastingStartEvent(caster, ability)
|
|
983
1035
|
local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
|
|
984
1036
|
local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
|
|
1037
|
+
local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
|
|
985
1038
|
local effects = {}
|
|
986
1039
|
if effectModelPaths ~= nil then
|
|
987
1040
|
for i = 1, #effectModelPaths do
|
|
@@ -990,7 +1043,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
|
|
|
990
1043
|
if attachmentPoint == nil or attachmentPoint == "" then
|
|
991
1044
|
attachmentPoint = "origin"
|
|
992
1045
|
end
|
|
993
|
-
effects[i] = Effect:
|
|
1046
|
+
effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
|
|
994
1047
|
end
|
|
995
1048
|
end
|
|
996
1049
|
casterCastingEffectsByCaster[caster] = effects
|
|
@@ -1021,10 +1074,17 @@ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(functi
|
|
|
1021
1074
|
function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
|
|
1022
1075
|
)
|
|
1023
1076
|
end)
|
|
1077
|
+
local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
|
|
1078
|
+
return mapValues(
|
|
1079
|
+
casterChannelingEffectPresetsByAbilityTypeId,
|
|
1080
|
+
function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
|
|
1081
|
+
)
|
|
1082
|
+
end)
|
|
1024
1083
|
local casterChannelingEffectsByCaster = {}
|
|
1025
1084
|
local function handleAbilityChannelingStartEvent(caster, ability)
|
|
1026
1085
|
local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
|
|
1027
1086
|
local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
|
|
1087
|
+
local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
|
|
1028
1088
|
local effects = {}
|
|
1029
1089
|
if effectModelPaths ~= nil then
|
|
1030
1090
|
for i = 1, #effectModelPaths do
|
|
@@ -1033,7 +1093,7 @@ local function handleAbilityChannelingStartEvent(caster, ability)
|
|
|
1033
1093
|
if attachmentPoint == nil or attachmentPoint == "" then
|
|
1034
1094
|
attachmentPoint = "origin"
|
|
1035
1095
|
end
|
|
1036
|
-
effects[i] = Effect:
|
|
1096
|
+
effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
|
|
1037
1097
|
end
|
|
1038
1098
|
end
|
|
1039
1099
|
casterChannelingEffectsByCaster[caster] = effects
|
|
@@ -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,12 +101,10 @@ 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
|
-
applicatorAbilityTypeIdByApplicatorType[
|
|
107
|
+
applicatorAbilityTypeIdByApplicatorType[852190] = applicatorAbilityType.id
|
|
122
108
|
end
|
|
123
109
|
if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
|
|
124
110
|
local applicatorAbilityType = prepareAbilityType(BloodLustAbilityType, applicableBuffType)
|
|
@@ -135,6 +121,10 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
|
|
|
135
121
|
applicatorAbilityType.damagePerSecond = 0
|
|
136
122
|
applicatorAbilityType.movementSpeedDecreaseFactor = 0
|
|
137
123
|
applicatorAbilityType.attackSpeedDecreaseFactor = 0
|
|
124
|
+
applicatorAbilityType.isDamageStacking = false
|
|
125
|
+
applicatorAbilityType.isMovementSpeedFactorStacking = false
|
|
126
|
+
applicatorAbilityType.isAttackSpeedFactorStacking = false
|
|
127
|
+
applicatorAbilityType.isAbleToKill = false
|
|
138
128
|
applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
|
|
139
129
|
applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
|
|
140
130
|
end
|
|
@@ -142,6 +132,7 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
|
|
|
142
132
|
local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
|
|
143
133
|
applicatorAbilityType.attackSpeedIncreaseFactor = 0
|
|
144
134
|
applicatorAbilityType.movementSpeedIncreaseFactor = 0
|
|
135
|
+
applicatorAbilityType.receivedDamageIncreaseFactor = 0
|
|
145
136
|
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
146
137
|
if applicatorAbilityType.levelCount > 1 then
|
|
147
138
|
multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
|
|
@@ -204,15 +195,6 @@ local EVASION_ABILITY_TYPE_IDS = postcompile(function()
|
|
|
204
195
|
"AIcs"
|
|
205
196
|
}, fourCC))
|
|
206
197
|
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
198
|
local SEARING_ARROWS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
217
199
|
local abilityType = SearingArrowsAbilityType:create()
|
|
218
200
|
abilityType.isInternal = true
|
|
@@ -244,8 +226,8 @@ Unit.abilityCastingStartEvent[SEARING_ARROWS_DUMMY_ABILITY_TYPE_ID]:addListener(
|
|
|
244
226
|
)
|
|
245
227
|
---
|
|
246
228
|
-- @internal For use by internal systems only.
|
|
247
|
-
____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum,
|
|
248
|
-
local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and
|
|
229
|
+
____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum, missProbability)
|
|
230
|
+
local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852190 or 852173) or 0)
|
|
249
231
|
local ____opt_1 = applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffTypeId]
|
|
250
232
|
local applicatorAbilityTypeId = ____opt_1 and ____opt_1[applicatorType]
|
|
251
233
|
if applicatorAbilityTypeId == nil then
|
|
@@ -267,8 +249,7 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
267
249
|
applicatorAbilityTypeId,
|
|
268
250
|
preparePhysicalPositiveApplicatorAbility,
|
|
269
251
|
level,
|
|
270
|
-
duration or 0
|
|
271
|
-
movementSpeedIncreaseFactor
|
|
252
|
+
duration or 0
|
|
272
253
|
)
|
|
273
254
|
if level ~= nil and level > 0 then
|
|
274
255
|
local upgradeId = applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId]
|
|
@@ -298,6 +279,9 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
298
279
|
ability:setField(ABILITY_RLF_DURATION_HERO, level, actualDuration)
|
|
299
280
|
ability:setField(ABILITY_IF_PRIORITY, spellStealPriority or 0)
|
|
300
281
|
ability:setField(ABILITY_IF_REQUIRED_LEVEL, learnLevelMinimum or 6)
|
|
282
|
+
if missProbability ~= nil and applicatorType == 852190 then
|
|
283
|
+
ability:setField(ABILITY_RLF_CHANCE_TO_MISS_CRS, missProbability)
|
|
284
|
+
end
|
|
301
285
|
end,
|
|
302
286
|
applicatorType,
|
|
303
287
|
unit
|
|
@@ -309,16 +293,13 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
|
|
|
309
293
|
end
|
|
310
294
|
return success
|
|
311
295
|
end
|
|
312
|
-
preparePhysicalPositiveApplicatorAbility = function(ability, level, duration
|
|
296
|
+
preparePhysicalPositiveApplicatorAbility = function(ability, level, duration)
|
|
313
297
|
if level == nil then
|
|
314
298
|
setAbilityIntegerField(ability, ABILITY_IF_LEVELS, 1)
|
|
315
299
|
level = 1
|
|
316
300
|
end
|
|
317
301
|
setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_NORMAL, level, duration)
|
|
318
302
|
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
303
|
end
|
|
323
304
|
---
|
|
324
305
|
-- @internal For use by internal systems only.
|
|
@@ -3,12 +3,16 @@ import { TupleOf } from "../../../utility/types";
|
|
|
3
3
|
import { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
|
|
4
4
|
import { Race } from "../auxiliary/race";
|
|
5
5
|
import { SoundPresetName } from "../auxiliary/sound-preset-name";
|
|
6
|
-
import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
|
|
6
|
+
import { ObjectDataEntry, ObjectDataEntryConstructor, 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
|
+
export type StandardBuffTypeId = BuffTypeId & {
|
|
12
|
+
readonly __standardBuffTypeId: unique symbol;
|
|
13
|
+
};
|
|
11
14
|
export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> extends ObjectDataEntry<Id> {
|
|
15
|
+
static readonly [id: StandardBuffTypeId]: ObjectDataEntryConstructor<BuffType>;
|
|
12
16
|
private static readonly idGenerator;
|
|
13
17
|
protected static generateId(): number;
|
|
14
18
|
protected static getObjectData(map: WarMap): WarObjects;
|
|
@@ -51,13 +55,3 @@ export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> exten
|
|
|
51
55
|
get tooltipExtendedText(): string;
|
|
52
56
|
set tooltipExtendedText(tooltipText: string);
|
|
53
57
|
}
|
|
54
|
-
declare const AvatarBuffType_base: typeof BuffType;
|
|
55
|
-
export declare class AvatarBuffType extends AvatarBuffType_base {
|
|
56
|
-
}
|
|
57
|
-
declare const DevotionAuraBuffType_base: typeof BuffType;
|
|
58
|
-
export declare class DevotionAuraBuffType extends DevotionAuraBuffType_base {
|
|
59
|
-
}
|
|
60
|
-
declare const DivineShieldBuffType_base: typeof BuffType;
|
|
61
|
-
export declare class DivineShieldBuffType extends DivineShieldBuffType_base {
|
|
62
|
-
}
|
|
63
|
-
export {};
|
|
@@ -6,6 +6,8 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
|
6
6
|
local ____exports = {}
|
|
7
7
|
local ____arrays = require("utility.arrays")
|
|
8
8
|
local array = ____arrays.array
|
|
9
|
+
local ____reflection = require("utility.reflection")
|
|
10
|
+
local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNumberIndexSupplier
|
|
9
11
|
local ____entry = require("engine.object-data.entry")
|
|
10
12
|
local ObjectDataEntry = ____entry.ObjectDataEntry
|
|
11
13
|
local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
|
|
@@ -94,10 +96,10 @@ __TS__SetDescriptor(
|
|
|
94
96
|
"lightningTypeIds",
|
|
95
97
|
{
|
|
96
98
|
get = function(self)
|
|
97
|
-
return self:
|
|
99
|
+
return self:getObjectDataEntryNumericIdsField("flig")
|
|
98
100
|
end,
|
|
99
101
|
set = function(self, lightningTypeIds)
|
|
100
|
-
self:
|
|
102
|
+
self:setObjectDataEntryNumericIdsField("flig", lightningTypeIds)
|
|
101
103
|
end
|
|
102
104
|
},
|
|
103
105
|
true
|
|
@@ -285,32 +287,14 @@ __TS__SetDescriptor(
|
|
|
285
287
|
},
|
|
286
288
|
true
|
|
287
289
|
)
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
AvatarBuffType.name = "AvatarBuffType"
|
|
298
|
-
__TS__ClassExtends(
|
|
299
|
-
AvatarBuffType,
|
|
300
|
-
makeBaseBuffType(fourCC("BHav"))
|
|
301
|
-
)
|
|
302
|
-
____exports.DevotionAuraBuffType = __TS__Class()
|
|
303
|
-
local DevotionAuraBuffType = ____exports.DevotionAuraBuffType
|
|
304
|
-
DevotionAuraBuffType.name = "DevotionAuraBuffType"
|
|
305
|
-
__TS__ClassExtends(
|
|
306
|
-
DevotionAuraBuffType,
|
|
307
|
-
makeBaseBuffType(fourCC("BHad"))
|
|
308
|
-
)
|
|
309
|
-
____exports.DivineShieldBuffType = __TS__Class()
|
|
310
|
-
local DivineShieldBuffType = ____exports.DivineShieldBuffType
|
|
311
|
-
DivineShieldBuffType.name = "DivineShieldBuffType"
|
|
312
|
-
__TS__ClassExtends(
|
|
313
|
-
DivineShieldBuffType,
|
|
314
|
-
makeBaseBuffType(fourCC("BHds"))
|
|
290
|
+
implementReadonlyNumberIndexSupplier(
|
|
291
|
+
____exports.BuffType,
|
|
292
|
+
function(id)
|
|
293
|
+
local ____class_0 = __TS__Class()
|
|
294
|
+
____class_0.name = ____class_0.name
|
|
295
|
+
__TS__ClassExtends(____class_0, ____exports.BuffType)
|
|
296
|
+
____class_0.BASE_ID = id
|
|
297
|
+
return ____class_0
|
|
298
|
+
end
|
|
315
299
|
)
|
|
316
300
|
return ____exports
|
|
@@ -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,33 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
|
|
3
|
+
import { SoundEax } from "../auxiliary/sound-eax";
|
|
4
|
+
export type SoundPresetId = ObjectDataEntryId & string & {
|
|
5
|
+
readonly __soundPresetId: unique symbol;
|
|
6
|
+
};
|
|
7
|
+
export type StandardSoundPresetId = SoundPresetId & {
|
|
8
|
+
readonly __standardSoundPresetId: unique symbol;
|
|
9
|
+
};
|
|
10
|
+
export declare class SoundPreset extends ObjectDataEntry<SoundPresetId> {
|
|
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
|
+
get volume(): number;
|
|
18
|
+
set volume(volume: number);
|
|
19
|
+
get pitch(): number;
|
|
20
|
+
set pitch(pitch: number);
|
|
21
|
+
get priority(): number;
|
|
22
|
+
set priority(priority: number);
|
|
23
|
+
get channel(): number;
|
|
24
|
+
set channel(channel: number);
|
|
25
|
+
get minimumDistance(): number;
|
|
26
|
+
set minimumDistance(minimumDistance: number);
|
|
27
|
+
get maximumDistance(): number;
|
|
28
|
+
set maximumDistance(maximumDistance: number);
|
|
29
|
+
get distanceCutoff(): number;
|
|
30
|
+
set distanceCutoff(distanceCutoff: number);
|
|
31
|
+
get eax(): SoundEax;
|
|
32
|
+
set eax(eax: SoundEax);
|
|
33
|
+
}
|