warscript 0.0.1-dev.64cec8d → 0.0.1-dev.6564df4

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.
Files changed (172) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +1 -3
  6. package/core/types/effect.lua +26 -29
  7. package/core/types/frame.lua +10 -12
  8. package/core/types/player.lua +3 -1
  9. package/core/types/playerCamera.d.ts +2 -0
  10. package/core/types/playerCamera.lua +79 -5
  11. package/core/types/sound.d.ts +17 -24
  12. package/core/types/sound.lua +99 -24
  13. package/core/types/timer.d.ts +8 -8
  14. package/core/types/timer.lua +39 -23
  15. package/core/util.lua +6 -1
  16. package/decl/native.d.ts +844 -788
  17. package/engine/behavior.d.ts +2 -0
  18. package/engine/behavior.lua +53 -27
  19. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  20. package/engine/behaviour/ability/apply-buff.lua +32 -0
  21. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  22. package/engine/behaviour/ability/damage.d.ts +9 -3
  23. package/engine/behaviour/ability/damage.lua +26 -38
  24. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  25. package/engine/behaviour/ability/emulate-impact.lua +22 -8
  26. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  27. package/engine/behaviour/ability/restore-mana.lua +6 -6
  28. package/engine/behaviour/ability.d.ts +12 -3
  29. package/engine/behaviour/ability.lua +74 -24
  30. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  31. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  32. package/engine/behaviour/unit.d.ts +32 -0
  33. package/engine/behaviour/unit.lua +185 -4
  34. package/engine/buff.d.ts +57 -44
  35. package/engine/buff.lua +273 -221
  36. package/engine/internal/ability.d.ts +7 -1
  37. package/engine/internal/ability.lua +64 -24
  38. package/engine/internal/item/ability.lua +110 -20
  39. package/engine/internal/item+owner.lua +12 -6
  40. package/engine/internal/item.d.ts +7 -4
  41. package/engine/internal/item.lua +141 -35
  42. package/engine/internal/mechanics/ability-duration.lua +1 -1
  43. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  44. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  45. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  46. package/engine/internal/misc/frame-coordinates.lua +21 -0
  47. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  48. package/engine/internal/misc/get-terrain-z.lua +11 -0
  49. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  50. package/engine/internal/misc/player-local-handle.lua +5 -0
  51. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  52. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  53. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  54. package/engine/internal/object-data/evasion-probability.lua +16 -0
  55. package/engine/internal/unit/ability.d.ts +35 -0
  56. package/engine/internal/unit/ability.lua +62 -0
  57. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  58. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  59. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  60. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  61. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  62. package/engine/internal/unit/allowed-targets.lua +9 -1
  63. package/engine/internal/unit/bonus.d.ts +2 -0
  64. package/engine/internal/unit/bonus.lua +17 -0
  65. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  66. package/engine/internal/unit/ignore-events-items.lua +5 -0
  67. package/engine/internal/unit/item.lua +3 -4
  68. package/engine/internal/unit/order.d.ts +20 -0
  69. package/engine/internal/unit/order.lua +136 -0
  70. package/engine/internal/unit+ability.lua +10 -1
  71. package/engine/internal/unit+damage.d.ts +2 -11
  72. package/engine/internal/unit+damage.lua +10 -14
  73. package/engine/internal/unit+spellSteal.lua +1 -2
  74. package/engine/internal/unit-missile-launch.lua +9 -2
  75. package/engine/internal/unit.d.ts +31 -8
  76. package/engine/internal/unit.lua +290 -115
  77. package/engine/lightning.d.ts +12 -5
  78. package/engine/lightning.lua +48 -14
  79. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  80. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  81. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  82. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  83. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  84. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  85. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  86. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  87. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  88. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  89. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  90. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  91. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  92. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  93. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  94. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  95. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  96. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  97. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  98. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  99. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  100. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  101. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  102. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  103. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  104. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  105. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  106. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  107. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  108. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  109. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  110. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  111. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  112. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  113. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  114. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  115. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  116. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  117. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  118. package/engine/object-data/entry/ability-type/web.lua +52 -0
  119. package/engine/object-data/entry/ability-type.d.ts +20 -17
  120. package/engine/object-data/entry/ability-type.lua +164 -39
  121. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  122. package/engine/object-data/entry/buff-type.d.ts +6 -12
  123. package/engine/object-data/entry/buff-type.lua +13 -29
  124. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  125. package/engine/object-data/entry/item-type.d.ts +1 -1
  126. package/engine/object-data/entry/item-type.lua +4 -4
  127. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  128. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  129. package/engine/object-data/entry/sound-preset.lua +140 -0
  130. package/engine/object-data/entry/unit-type.d.ts +21 -5
  131. package/engine/object-data/entry/unit-type.lua +214 -93
  132. package/engine/object-data/entry/upgrade.d.ts +1 -1
  133. package/engine/object-data/entry/upgrade.lua +4 -4
  134. package/engine/object-data/entry.d.ts +16 -14
  135. package/engine/object-data/entry.lua +60 -32
  136. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  137. package/engine/object-field/ability.d.ts +8 -5
  138. package/engine/object-field/ability.lua +8 -4
  139. package/engine/object-field/unit.d.ts +57 -3
  140. package/engine/object-field/unit.lua +207 -7
  141. package/engine/object-field.d.ts +17 -6
  142. package/engine/object-field.lua +190 -90
  143. package/engine/standard/entries/buff-type.d.ts +3 -0
  144. package/engine/standard/entries/buff-type.lua +3 -0
  145. package/engine/standard/entries/sound-preset.d.ts +10 -0
  146. package/engine/standard/entries/sound-preset.lua +10 -0
  147. package/engine/standard/fields/unit.d.ts +4 -0
  148. package/engine/standard/fields/unit.lua +7 -0
  149. package/engine/text-tag.d.ts +36 -2
  150. package/engine/text-tag.lua +249 -10
  151. package/engine/unit.d.ts +2 -0
  152. package/engine/unit.lua +2 -0
  153. package/objutil/buff.lua +1 -2
  154. package/objutil/unit.lua +8 -0
  155. package/package.json +2 -2
  156. package/utility/arrays.d.ts +1 -0
  157. package/utility/arrays.lua +3 -0
  158. package/utility/callback-array.d.ts +13 -0
  159. package/utility/callback-array.lua +46 -0
  160. package/utility/functions.d.ts +8 -0
  161. package/utility/functions.lua +13 -0
  162. package/utility/linked-set.d.ts +1 -0
  163. package/utility/linked-set.lua +3 -0
  164. package/utility/lua-maps.d.ts +4 -0
  165. package/utility/lua-maps.lua +20 -0
  166. package/utility/lua-sets.d.ts +2 -0
  167. package/utility/lua-sets.lua +7 -0
  168. package/utility/reflection.lua +11 -7
  169. package/core/types/order.d.ts +0 -25
  170. package/core/types/order.lua +0 -55
  171. package/engine/object-data/entry/ability-type-effects.d.ts +0 -2
  172. 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 toAttachmentPreset = ____attachment_2Dpreset.toAttachmentPreset
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,19 @@ 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 ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
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 isSoundLabelCustom = ____sound.isSoundLabelCustom
39
+ local Sound3D = ____sound.Sound3D
40
+ local SoundSettings = ____sound.SoundSettings
41
+ local castAnimationFQNByAbilityTypeId = {}
30
42
  local isButtonVisibleFalseAbilityTypes = {}
31
43
  local casterCastingEffectPresetsByAbilityTypeId = {}
32
44
  local casterChannelingEffectPresetsByAbilityTypeId = {}
33
45
  local targetCastingEffectPresetsByAbilityTypeId = {}
46
+ local targetEffectSoundPresetByAbilityTypeId = {}
34
47
  ____exports.AbilityType = __TS__Class()
35
48
  local AbilityType = ____exports.AbilityType
36
49
  AbilityType.name = "AbilityType"
@@ -45,10 +58,7 @@ end
45
58
  function AbilityType.getObjectData(self, map)
46
59
  return map.objects.ability
47
60
  end
48
- AbilityType.idGenerator = __TS__New(
49
- ObjectDataEntryIdGenerator,
50
- fourCC("A000")
51
- )
61
+ AbilityType.idGenerator = abilityTypeIdGenerator
52
62
  __TS__SetDescriptor(
53
63
  AbilityType.prototype,
54
64
  "channelingAnimation",
@@ -109,7 +119,7 @@ __TS__SetDescriptor(
109
119
  return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
110
120
  end,
111
121
  set = function(self, casterCastingEffectPresets)
112
- casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toAttachmentPreset)
122
+ casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
113
123
  end
114
124
  },
115
125
  true
@@ -122,7 +132,7 @@ __TS__SetDescriptor(
122
132
  return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
123
133
  end,
124
134
  set = function(self, casterChannelingEffectPresets)
125
- casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toAttachmentPreset)
135
+ casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
126
136
  end
127
137
  },
128
138
  true
@@ -267,10 +277,10 @@ __TS__SetDescriptor(
267
277
  "lightningTypeIds",
268
278
  {
269
279
  get = function(self)
270
- return self:getObjectDataEntryIdsField("alig")
280
+ return self:getObjectDataEntryNumericIdsField("alig")
271
281
  end,
272
282
  set = function(self, lightningTypeIds)
273
- self:setObjectDataEntryIdsField("alig", lightningTypeIds)
283
+ self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
274
284
  end
275
285
  },
276
286
  true
@@ -361,7 +371,7 @@ __TS__SetDescriptor(
361
371
  return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
362
372
  end,
363
373
  set = function(self, targetCastingEffectPresets)
364
- targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toAttachmentPreset)
374
+ targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
365
375
  end
366
376
  },
367
377
  true
@@ -504,7 +514,7 @@ __TS__SetDescriptor(
504
514
  "techTreeDependencies",
505
515
  {
506
516
  get = function(self)
507
- local techTreeDependencyIds = self:getObjectDataEntryIdsField("areq")
517
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
508
518
  local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
509
519
  return mapIndexed(
510
520
  techTreeDependencyIds,
@@ -524,7 +534,7 @@ __TS__SetDescriptor(
524
534
  map(techTreeDependencies, extractTechTreeDependencyInputLevel),
525
535
  function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
526
536
  )
527
- self:setObjectDataEntryIdsField("areq", techTreeDependencyIds)
537
+ self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
528
538
  self:setNumbersField("arqa", techTreeDependencyInternalLevels)
529
539
  end
530
540
  },
@@ -714,26 +724,40 @@ __TS__SetDescriptor(
714
724
  )
715
725
  __TS__SetDescriptor(
716
726
  AbilityType.prototype,
717
- "soundPresetName",
727
+ "casterEffectSoundPresetId",
718
728
  {
719
729
  get = function(self)
720
- return self:getStringField("aefs")
730
+ local casterEffectSoundPresetId = self:getStringField("aefs")
731
+ return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
721
732
  end,
722
- set = function(self, soundPresetName)
723
- self:setStringField("aefs", soundPresetName)
733
+ set = function(self, casterEffectSoundPresetId)
734
+ self:setStringField("aefs", casterEffectSoundPresetId or "")
724
735
  end
725
736
  },
726
737
  true
727
738
  )
728
739
  __TS__SetDescriptor(
729
740
  AbilityType.prototype,
730
- "loopingSoundPresetName",
741
+ "casterEffectLoopingSoundPresetId",
731
742
  {
732
743
  get = function(self)
733
744
  return self:getStringField("aefl")
734
745
  end,
735
- set = function(self, loopingSoundPresetName)
736
- self:setStringField("aefl", loopingSoundPresetName)
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
737
761
  end
738
762
  },
739
763
  true
@@ -792,10 +816,10 @@ __TS__SetDescriptor(
792
816
  "buffTypeIds",
793
817
  {
794
818
  get = function(self)
795
- return self:getObjectDataEntryIdsLevelField("abuf")
819
+ return self:getObjectDataEntryNumericIdsLevelField("abuf")
796
820
  end,
797
821
  set = function(self, buffTypeIds)
798
- self:setObjectDataEntryIdsLevelField("abuf", buffTypeIds)
822
+ self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
799
823
  end
800
824
  },
801
825
  true
@@ -844,10 +868,10 @@ __TS__SetDescriptor(
844
868
  "effectBuffTypeIds",
845
869
  {
846
870
  get = function(self)
847
- return self:getObjectDataEntryIdsLevelField("aeff")
871
+ return self:getObjectDataEntryNumericIdsLevelField("aeff")
848
872
  end,
849
873
  set = function(self, effectBuffTypeIds)
850
- self:setObjectDataEntryIdsLevelField("aeff", effectBuffTypeIds)
874
+ self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
851
875
  end
852
876
  },
853
877
  true
@@ -950,39 +974,140 @@ local _ = postcompile(function()
950
974
  abilityType.buttonPositionY = -11
951
975
  end
952
976
  end)
953
- ---
954
- -- @internal For use by internal systems only.
955
- ____exports.casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
977
+ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnimationFQNByAbilityTypeId end)) do
978
+ Unit.abilityCastingStartEvent[abilityTypeId]:addListener(
979
+ 4,
980
+ function(caster, ability)
981
+ if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
982
+ Timer:run(caster, "playAnimation", animationFQN)
983
+ end
984
+ end
985
+ )
986
+ end
987
+ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEffectSoundPresetByAbilityTypeId end)) do
988
+ if soundPresetId ~= nil then
989
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(
990
+ 4,
991
+ function(caster, ability, target)
992
+ if __TS__InstanceOf(target, Unit) then
993
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target)
994
+ else
995
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target.x, target.y)
996
+ end
997
+ end
998
+ )
999
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(
1000
+ 4,
1001
+ function(caster, ability, x, y)
1002
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, x, y)
1003
+ end
1004
+ )
1005
+ end
1006
+ end
1007
+ Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1008
+ local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1009
+ if isSoundLabelCustom(soundPresetId) then
1010
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1011
+ end
1012
+ end)
1013
+ local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
956
1014
  return mapValues(
957
1015
  casterCastingEffectPresetsByAbilityTypeId,
958
1016
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputModelPath) end
959
1017
  )
960
1018
  end)
961
- ---
962
- -- @internal For use by internal systems only.
963
- ____exports.casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
1019
+ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
964
1020
  return mapValues(
965
1021
  casterCastingEffectPresetsByAbilityTypeId,
966
1022
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
967
1023
  )
968
1024
  end)
969
- ---
970
- -- @internal For use by internal systems only.
971
- ____exports.casterChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
1025
+ local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
1026
+ return mapValues(
1027
+ casterCastingEffectPresetsByAbilityTypeId,
1028
+ function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
1029
+ )
1030
+ end)
1031
+ local casterCastingEffectsByCaster = {}
1032
+ local function handleAbilityCastingStartEvent(caster, ability)
1033
+ local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
1034
+ local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1035
+ local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
1036
+ local effects = {}
1037
+ if effectModelPaths ~= nil then
1038
+ for i = 1, #effectModelPaths do
1039
+ local effectModelPath = effectModelPaths[i]
1040
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1041
+ if attachmentPoint == nil or attachmentPoint == "" then
1042
+ attachmentPoint = "origin"
1043
+ end
1044
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1045
+ end
1046
+ end
1047
+ casterCastingEffectsByCaster[caster] = effects
1048
+ end
1049
+ local function handleAbilityStopCastingEvent(caster)
1050
+ local effects = casterCastingEffectsByCaster[caster]
1051
+ if effects ~= nil then
1052
+ for i = 1, #effects do
1053
+ effects[i]:destroy()
1054
+ end
1055
+ casterCastingEffectsByCaster[caster] = nil
1056
+ end
1057
+ end
1058
+ for abilityTypeId in pairs(casterCastingEffectModelPathsByAbilityTypeId) do
1059
+ Unit.abilityCastingStartEvent[abilityTypeId]:addListener(4, handleAbilityCastingStartEvent)
1060
+ Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
1061
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
1062
+ end
1063
+ local casterChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
972
1064
  return mapValues(
973
1065
  casterChannelingEffectPresetsByAbilityTypeId,
974
1066
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputModelPath) end
975
1067
  )
976
1068
  end)
977
- ---
978
- -- @internal For use by internal systems only.
979
- ____exports.casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
1069
+ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
980
1070
  return mapValues(
981
1071
  casterChannelingEffectPresetsByAbilityTypeId,
982
1072
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
983
1073
  )
984
1074
  end)
985
- warpack.afterMapInit(function()
986
- require("engine.object-data.entry.ability-type-effects")
1075
+ local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
1076
+ return mapValues(
1077
+ casterChannelingEffectPresetsByAbilityTypeId,
1078
+ function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
1079
+ )
987
1080
  end)
1081
+ local casterChannelingEffectsByCaster = {}
1082
+ local function handleAbilityChannelingStartEvent(caster, ability)
1083
+ local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1084
+ local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1085
+ local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
1086
+ local effects = {}
1087
+ if effectModelPaths ~= nil then
1088
+ for i = 1, #effectModelPaths do
1089
+ local effectModelPath = effectModelPaths[i]
1090
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1091
+ if attachmentPoint == nil or attachmentPoint == "" then
1092
+ attachmentPoint = "origin"
1093
+ end
1094
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1095
+ end
1096
+ end
1097
+ casterChannelingEffectsByCaster[caster] = effects
1098
+ end
1099
+ local function handleAbilityStopChannelingEvent(caster)
1100
+ local effects = casterChannelingEffectsByCaster[caster]
1101
+ if effects ~= nil then
1102
+ for i = 1, #effects do
1103
+ effects[i]:destroy()
1104
+ end
1105
+ casterChannelingEffectsByCaster[caster] = nil
1106
+ end
1107
+ end
1108
+ for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1109
+ Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1110
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1111
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1112
+ end
988
1113
  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 ____cripple = require("engine.object-data.entry.ability-type.cripple")
14
- local CrippleAbilityType = ____cripple.CrippleAbilityType
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.soundPresetName = ""
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(CrippleAbilityType, applicableBuffType)
117
- applicatorAbilityType.movementSpeedDecreaseFactor = 0
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[852189] = applicatorAbilityType.id
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, movementSpeedIncreaseFactor)
248
- local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852189 or 852173) or 0)
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, movementSpeedIncreaseFactor)
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:getObjectDataEntryIdsField("flig")
99
+ return self:getObjectDataEntryNumericIdsField("flig")
98
100
  end,
99
101
  set = function(self, lightningTypeIds)
100
- self:setObjectDataEntryIdsField("flig", lightningTypeIds)
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
- local function makeBaseBuffType(id)
289
- local BaseBuffType = __TS__Class()
290
- BaseBuffType.name = "BaseBuffType"
291
- __TS__ClassExtends(BaseBuffType, ____exports.BuffType)
292
- BaseBuffType.BASE_ID = id
293
- return BaseBuffType
294
- end
295
- ____exports.AvatarBuffType = __TS__Class()
296
- local AvatarBuffType = ____exports.AvatarBuffType
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:getObjectDataEntryIdsField("iabi")
30
+ return self:getObjectDataEntryNumericIdsField("iabi")
31
31
  end,
32
32
  set = function(self, abilityTypeIds)
33
- self:setObjectDataEntryIdsField("iabi", abilityTypeIds)
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:getObjectDataEntryIdField("icid")
264
+ return self:getObjectDataEntryNumericIdField("icid")
265
265
  end,
266
266
  set = function(self, cooldownGroupId)
267
- self:setObjectDataEntryIdField("icid", cooldownGroupId)
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 & {