warscript 0.0.1-dev.64cec8d → 0.0.1-dev.65ee461
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 -3
- package/core/types/effect.lua +26 -29
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +94 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/util.lua +6 -1
- 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 +3 -0
- package/engine/behaviour/ability/damage.lua +2 -2
- package/engine/behaviour/ability/emulate-impact.lua +4 -5
- package/engine/behaviour/ability.d.ts +12 -3
- package/engine/behaviour/ability.lua +66 -7
- package/engine/behaviour/unit.d.ts +2 -0
- package/engine/buff.d.ts +56 -41
- package/engine/buff.lua +295 -228
- package/engine/internal/ability.lua +16 -15
- package/engine/internal/item/ability.lua +47 -9
- package/engine/internal/item.d.ts +2 -2
- package/engine/internal/item.lua +56 -25
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- 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 +3 -4
- package/engine/internal/unit.d.ts +7 -1
- package/engine/internal/unit.lua +48 -13
- 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/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- 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/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/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/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 +20 -17
- package/engine/object-data/entry/ability-type.lua +159 -39
- package/engine/object-data/entry/buff-type/applicable.lua +13 -37
- 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 +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -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/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +5 -2
- 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/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/utility/reflection.lua +11 -7
- package/engine/object-data/entry/ability-type-effects.d.ts +0 -2
- package/engine/object-data/entry/ability-type-effects.lua +0 -89
|
@@ -1,9 +1,16 @@
|
|
|
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
|
|
5
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
6
6
|
local ____exports = {}
|
|
7
|
+
local ____unit = require("engine.internal.unit")
|
|
8
|
+
local Unit = ____unit.Unit
|
|
9
|
+
require("engine.internal.unit.ability")
|
|
10
|
+
local ____timer = require("core.types.timer")
|
|
11
|
+
local Timer = ____timer.Timer
|
|
12
|
+
local ____effect = require("core.types.effect")
|
|
13
|
+
local Effect = ____effect.Effect
|
|
7
14
|
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
8
15
|
local mapValues = ____lua_2Dmaps.mapValues
|
|
9
16
|
local ____arrays = require("utility.arrays")
|
|
@@ -13,7 +20,7 @@ local mapIndexed = ____arrays.mapIndexed
|
|
|
13
20
|
local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
|
|
14
21
|
local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
|
|
15
22
|
local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
|
|
16
|
-
local
|
|
23
|
+
local toEffectPreset = ____attachment_2Dpreset.toEffectPreset
|
|
17
24
|
local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
|
|
18
25
|
local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
|
|
19
26
|
local stringArrayToCombatClassifications = ____combat_2Dclassification.stringArrayToCombatClassifications
|
|
@@ -24,13 +31,18 @@ local ____entry = require("engine.object-data.entry")
|
|
|
24
31
|
local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLevelFieldValue
|
|
25
32
|
local ObjectDataEntry = ____entry.ObjectDataEntry
|
|
26
33
|
local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
|
|
27
|
-
local
|
|
34
|
+
local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
|
|
28
35
|
local ____upgrade = require("engine.object-data.entry.upgrade")
|
|
29
36
|
local Upgrade = ____upgrade.Upgrade
|
|
37
|
+
local ____sound = require("core.types.sound")
|
|
38
|
+
local Sound3D = ____sound.Sound3D
|
|
39
|
+
local SoundSettings = ____sound.SoundSettings
|
|
40
|
+
local castAnimationFQNByAbilityTypeId = {}
|
|
30
41
|
local isButtonVisibleFalseAbilityTypes = {}
|
|
31
42
|
local casterCastingEffectPresetsByAbilityTypeId = {}
|
|
32
43
|
local casterChannelingEffectPresetsByAbilityTypeId = {}
|
|
33
44
|
local targetCastingEffectPresetsByAbilityTypeId = {}
|
|
45
|
+
local targetEffectSoundPresetByAbilityTypeId = {}
|
|
34
46
|
____exports.AbilityType = __TS__Class()
|
|
35
47
|
local AbilityType = ____exports.AbilityType
|
|
36
48
|
AbilityType.name = "AbilityType"
|
|
@@ -45,10 +57,7 @@ end
|
|
|
45
57
|
function AbilityType.getObjectData(self, map)
|
|
46
58
|
return map.objects.ability
|
|
47
59
|
end
|
|
48
|
-
AbilityType.idGenerator =
|
|
49
|
-
ObjectDataEntryIdGenerator,
|
|
50
|
-
fourCC("A000")
|
|
51
|
-
)
|
|
60
|
+
AbilityType.idGenerator = abilityTypeIdGenerator
|
|
52
61
|
__TS__SetDescriptor(
|
|
53
62
|
AbilityType.prototype,
|
|
54
63
|
"channelingAnimation",
|
|
@@ -109,7 +118,7 @@ __TS__SetDescriptor(
|
|
|
109
118
|
return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
|
|
110
119
|
end,
|
|
111
120
|
set = function(self, casterCastingEffectPresets)
|
|
112
|
-
casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets,
|
|
121
|
+
casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
|
|
113
122
|
end
|
|
114
123
|
},
|
|
115
124
|
true
|
|
@@ -122,7 +131,7 @@ __TS__SetDescriptor(
|
|
|
122
131
|
return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
|
|
123
132
|
end,
|
|
124
133
|
set = function(self, casterChannelingEffectPresets)
|
|
125
|
-
casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets,
|
|
134
|
+
casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
|
|
126
135
|
end
|
|
127
136
|
},
|
|
128
137
|
true
|
|
@@ -267,10 +276,10 @@ __TS__SetDescriptor(
|
|
|
267
276
|
"lightningTypeIds",
|
|
268
277
|
{
|
|
269
278
|
get = function(self)
|
|
270
|
-
return self:
|
|
279
|
+
return self:getObjectDataEntryNumericIdsField("alig")
|
|
271
280
|
end,
|
|
272
281
|
set = function(self, lightningTypeIds)
|
|
273
|
-
self:
|
|
282
|
+
self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
|
|
274
283
|
end
|
|
275
284
|
},
|
|
276
285
|
true
|
|
@@ -361,7 +370,7 @@ __TS__SetDescriptor(
|
|
|
361
370
|
return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
|
|
362
371
|
end,
|
|
363
372
|
set = function(self, targetCastingEffectPresets)
|
|
364
|
-
targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets,
|
|
373
|
+
targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
|
|
365
374
|
end
|
|
366
375
|
},
|
|
367
376
|
true
|
|
@@ -504,7 +513,7 @@ __TS__SetDescriptor(
|
|
|
504
513
|
"techTreeDependencies",
|
|
505
514
|
{
|
|
506
515
|
get = function(self)
|
|
507
|
-
local techTreeDependencyIds = self:
|
|
516
|
+
local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
|
|
508
517
|
local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
|
|
509
518
|
return mapIndexed(
|
|
510
519
|
techTreeDependencyIds,
|
|
@@ -524,7 +533,7 @@ __TS__SetDescriptor(
|
|
|
524
533
|
map(techTreeDependencies, extractTechTreeDependencyInputLevel),
|
|
525
534
|
function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
|
|
526
535
|
)
|
|
527
|
-
self:
|
|
536
|
+
self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
|
|
528
537
|
self:setNumbersField("arqa", techTreeDependencyInternalLevels)
|
|
529
538
|
end
|
|
530
539
|
},
|
|
@@ -714,26 +723,40 @@ __TS__SetDescriptor(
|
|
|
714
723
|
)
|
|
715
724
|
__TS__SetDescriptor(
|
|
716
725
|
AbilityType.prototype,
|
|
717
|
-
"
|
|
726
|
+
"casterEffectSoundPresetId",
|
|
718
727
|
{
|
|
719
728
|
get = function(self)
|
|
720
|
-
|
|
729
|
+
local casterEffectSoundPresetId = self:getStringField("aefs")
|
|
730
|
+
return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
|
|
721
731
|
end,
|
|
722
|
-
set = function(self,
|
|
723
|
-
self:setStringField("aefs",
|
|
732
|
+
set = function(self, casterEffectSoundPresetId)
|
|
733
|
+
self:setStringField("aefs", casterEffectSoundPresetId or "")
|
|
724
734
|
end
|
|
725
735
|
},
|
|
726
736
|
true
|
|
727
737
|
)
|
|
728
738
|
__TS__SetDescriptor(
|
|
729
739
|
AbilityType.prototype,
|
|
730
|
-
"
|
|
740
|
+
"casterEffectLoopingSoundPresetId",
|
|
731
741
|
{
|
|
732
742
|
get = function(self)
|
|
733
743
|
return self:getStringField("aefl")
|
|
734
744
|
end,
|
|
735
|
-
set = function(self,
|
|
736
|
-
self:setStringField("aefl",
|
|
745
|
+
set = function(self, casterEffectLoopingSoundPresetId)
|
|
746
|
+
self:setStringField("aefl", casterEffectLoopingSoundPresetId)
|
|
747
|
+
end
|
|
748
|
+
},
|
|
749
|
+
true
|
|
750
|
+
)
|
|
751
|
+
__TS__SetDescriptor(
|
|
752
|
+
AbilityType.prototype,
|
|
753
|
+
"targetEffectSoundPresetId",
|
|
754
|
+
{
|
|
755
|
+
get = function(self)
|
|
756
|
+
return targetEffectSoundPresetByAbilityTypeId[self.id]
|
|
757
|
+
end,
|
|
758
|
+
set = function(self, targetEffectSoundPresetId)
|
|
759
|
+
targetEffectSoundPresetByAbilityTypeId[self.id] = targetEffectSoundPresetId
|
|
737
760
|
end
|
|
738
761
|
},
|
|
739
762
|
true
|
|
@@ -792,10 +815,10 @@ __TS__SetDescriptor(
|
|
|
792
815
|
"buffTypeIds",
|
|
793
816
|
{
|
|
794
817
|
get = function(self)
|
|
795
|
-
return self:
|
|
818
|
+
return self:getObjectDataEntryNumericIdsLevelField("abuf")
|
|
796
819
|
end,
|
|
797
820
|
set = function(self, buffTypeIds)
|
|
798
|
-
self:
|
|
821
|
+
self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
|
|
799
822
|
end
|
|
800
823
|
},
|
|
801
824
|
true
|
|
@@ -844,10 +867,10 @@ __TS__SetDescriptor(
|
|
|
844
867
|
"effectBuffTypeIds",
|
|
845
868
|
{
|
|
846
869
|
get = function(self)
|
|
847
|
-
return self:
|
|
870
|
+
return self:getObjectDataEntryNumericIdsLevelField("aeff")
|
|
848
871
|
end,
|
|
849
872
|
set = function(self, effectBuffTypeIds)
|
|
850
|
-
self:
|
|
873
|
+
self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
|
|
851
874
|
end
|
|
852
875
|
},
|
|
853
876
|
true
|
|
@@ -950,39 +973,136 @@ local _ = postcompile(function()
|
|
|
950
973
|
abilityType.buttonPositionY = -11
|
|
951
974
|
end
|
|
952
975
|
end)
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
976
|
+
for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnimationFQNByAbilityTypeId end)) do
|
|
977
|
+
Unit.abilityCastingStartEvent[abilityTypeId]:addListener(
|
|
978
|
+
4,
|
|
979
|
+
function(caster, ability)
|
|
980
|
+
if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
|
|
981
|
+
Timer:run(function()
|
|
982
|
+
caster:playAnimation(animationFQN)
|
|
983
|
+
end)
|
|
984
|
+
end
|
|
985
|
+
end
|
|
986
|
+
)
|
|
987
|
+
end
|
|
988
|
+
for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEffectSoundPresetByAbilityTypeId end)) do
|
|
989
|
+
if soundPresetId ~= nil then
|
|
990
|
+
Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(
|
|
991
|
+
4,
|
|
992
|
+
function(caster, ability, target)
|
|
993
|
+
if __TS__InstanceOf(target, Unit) then
|
|
994
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target)
|
|
995
|
+
else
|
|
996
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target.x, target.y)
|
|
997
|
+
end
|
|
998
|
+
end
|
|
999
|
+
)
|
|
1000
|
+
Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(
|
|
1001
|
+
4,
|
|
1002
|
+
function(caster, ability, x, y)
|
|
1003
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, x, y)
|
|
1004
|
+
end
|
|
1005
|
+
)
|
|
1006
|
+
end
|
|
1007
|
+
end
|
|
1008
|
+
local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
|
|
956
1009
|
return mapValues(
|
|
957
1010
|
casterCastingEffectPresetsByAbilityTypeId,
|
|
958
1011
|
function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputModelPath) end
|
|
959
1012
|
)
|
|
960
1013
|
end)
|
|
961
|
-
|
|
962
|
-
-- @internal For use by internal systems only.
|
|
963
|
-
____exports.casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
|
|
1014
|
+
local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
|
|
964
1015
|
return mapValues(
|
|
965
1016
|
casterCastingEffectPresetsByAbilityTypeId,
|
|
966
1017
|
function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
|
|
967
1018
|
)
|
|
968
1019
|
end)
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
1020
|
+
local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
|
|
1021
|
+
return mapValues(
|
|
1022
|
+
casterCastingEffectPresetsByAbilityTypeId,
|
|
1023
|
+
function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
|
|
1024
|
+
)
|
|
1025
|
+
end)
|
|
1026
|
+
local casterCastingEffectsByCaster = {}
|
|
1027
|
+
local function handleAbilityCastingStartEvent(caster, ability)
|
|
1028
|
+
local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
|
|
1029
|
+
local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
|
|
1030
|
+
local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
|
|
1031
|
+
local effects = {}
|
|
1032
|
+
if effectModelPaths ~= nil then
|
|
1033
|
+
for i = 1, #effectModelPaths do
|
|
1034
|
+
local effectModelPath = effectModelPaths[i]
|
|
1035
|
+
local attachmentPoint = attachmentPoints and attachmentPoints[i]
|
|
1036
|
+
if attachmentPoint == nil or attachmentPoint == "" then
|
|
1037
|
+
attachmentPoint = "origin"
|
|
1038
|
+
end
|
|
1039
|
+
effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
|
|
1040
|
+
end
|
|
1041
|
+
end
|
|
1042
|
+
casterCastingEffectsByCaster[caster] = effects
|
|
1043
|
+
end
|
|
1044
|
+
local function handleAbilityStopCastingEvent(caster)
|
|
1045
|
+
local effects = casterCastingEffectsByCaster[caster]
|
|
1046
|
+
if effects ~= nil then
|
|
1047
|
+
for i = 1, #effects do
|
|
1048
|
+
effects[i]:destroy()
|
|
1049
|
+
end
|
|
1050
|
+
casterCastingEffectsByCaster[caster] = nil
|
|
1051
|
+
end
|
|
1052
|
+
end
|
|
1053
|
+
for abilityTypeId in pairs(casterCastingEffectModelPathsByAbilityTypeId) do
|
|
1054
|
+
Unit.abilityCastingStartEvent[abilityTypeId]:addListener(4, handleAbilityCastingStartEvent)
|
|
1055
|
+
Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
|
|
1056
|
+
Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
|
|
1057
|
+
end
|
|
1058
|
+
local casterChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
|
|
972
1059
|
return mapValues(
|
|
973
1060
|
casterChannelingEffectPresetsByAbilityTypeId,
|
|
974
1061
|
function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputModelPath) end
|
|
975
1062
|
)
|
|
976
1063
|
end)
|
|
977
|
-
|
|
978
|
-
-- @internal For use by internal systems only.
|
|
979
|
-
____exports.casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
|
|
1064
|
+
local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
|
|
980
1065
|
return mapValues(
|
|
981
1066
|
casterChannelingEffectPresetsByAbilityTypeId,
|
|
982
1067
|
function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
|
|
983
1068
|
)
|
|
984
1069
|
end)
|
|
985
|
-
|
|
986
|
-
|
|
1070
|
+
local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
|
|
1071
|
+
return mapValues(
|
|
1072
|
+
casterChannelingEffectPresetsByAbilityTypeId,
|
|
1073
|
+
function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
|
|
1074
|
+
)
|
|
987
1075
|
end)
|
|
1076
|
+
local casterChannelingEffectsByCaster = {}
|
|
1077
|
+
local function handleAbilityChannelingStartEvent(caster, ability)
|
|
1078
|
+
local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
|
|
1079
|
+
local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
|
|
1080
|
+
local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
|
|
1081
|
+
local effects = {}
|
|
1082
|
+
if effectModelPaths ~= nil then
|
|
1083
|
+
for i = 1, #effectModelPaths do
|
|
1084
|
+
local effectModelPath = effectModelPaths[i]
|
|
1085
|
+
local attachmentPoint = attachmentPoints and attachmentPoints[i]
|
|
1086
|
+
if attachmentPoint == nil or attachmentPoint == "" then
|
|
1087
|
+
attachmentPoint = "origin"
|
|
1088
|
+
end
|
|
1089
|
+
effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
|
|
1090
|
+
end
|
|
1091
|
+
end
|
|
1092
|
+
casterChannelingEffectsByCaster[caster] = effects
|
|
1093
|
+
end
|
|
1094
|
+
local function handleAbilityStopChannelingEvent(caster)
|
|
1095
|
+
local effects = casterChannelingEffectsByCaster[caster]
|
|
1096
|
+
if effects ~= nil then
|
|
1097
|
+
for i = 1, #effects do
|
|
1098
|
+
effects[i]:destroy()
|
|
1099
|
+
end
|
|
1100
|
+
casterChannelingEffectsByCaster[caster] = nil
|
|
1101
|
+
end
|
|
1102
|
+
end
|
|
1103
|
+
for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
|
|
1104
|
+
Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
|
|
1105
|
+
Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1106
|
+
Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1107
|
+
end
|
|
988
1108
|
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,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)
|
|
@@ -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,8 +221,8 @@ 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,
|
|
248
|
-
local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and
|
|
224
|
+
____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum, missProbability)
|
|
225
|
+
local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852190 or 852173) or 0)
|
|
249
226
|
local ____opt_1 = applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffTypeId]
|
|
250
227
|
local applicatorAbilityTypeId = ____opt_1 and ____opt_1[applicatorType]
|
|
251
228
|
if applicatorAbilityTypeId == nil then
|
|
@@ -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 == 852190 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,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
|
+
}
|