warscript 0.0.1-dev.46a1ede → 0.0.1-dev.4753736

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 (159) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/binarywriter.lua +12 -0
  4. package/config.d.ts +5 -0
  5. package/config.lua +10 -0
  6. package/core/types/effect.d.ts +1 -3
  7. package/core/types/effect.lua +26 -29
  8. package/core/types/frame.lua +24 -21
  9. package/core/types/player.lua +3 -1
  10. package/core/types/playerCamera.d.ts +2 -0
  11. package/core/types/playerCamera.lua +123 -5
  12. package/core/types/sound.d.ts +17 -24
  13. package/core/types/sound.lua +99 -24
  14. package/core/types/tileCell.d.ts +9 -0
  15. package/core/types/tileCell.lua +92 -0
  16. package/core/types/timer.d.ts +8 -8
  17. package/core/types/timer.lua +39 -23
  18. package/core/util.lua +6 -1
  19. package/decl/native.d.ts +846 -790
  20. package/engine/behavior.d.ts +5 -0
  21. package/engine/behavior.lua +106 -27
  22. package/engine/behaviour/ability/apply-buff.lua +1 -1
  23. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  24. package/engine/behaviour/ability/damage.d.ts +9 -3
  25. package/engine/behaviour/ability/damage.lua +26 -38
  26. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  27. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  28. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  29. package/engine/behaviour/ability/restore-mana.lua +6 -6
  30. package/engine/behaviour/ability.d.ts +5 -1
  31. package/engine/behaviour/ability.lua +26 -21
  32. package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
  33. package/engine/behaviour/unit/stun-immunity.lua +52 -27
  34. package/engine/behaviour/unit.d.ts +34 -0
  35. package/engine/behaviour/unit.lua +190 -4
  36. package/engine/buff.d.ts +17 -11
  37. package/engine/buff.lua +109 -83
  38. package/engine/internal/ability.d.ts +7 -1
  39. package/engine/internal/ability.lua +49 -9
  40. package/engine/internal/item/ability.lua +63 -11
  41. package/engine/internal/item+owner.lua +12 -6
  42. package/engine/internal/item.d.ts +6 -5
  43. package/engine/internal/item.lua +97 -26
  44. package/engine/internal/mechanics/ability-duration.lua +1 -1
  45. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  46. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  47. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  48. package/engine/internal/misc/frame-coordinates.lua +21 -0
  49. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  50. package/engine/internal/misc/get-terrain-z.lua +11 -0
  51. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  52. package/engine/internal/misc/player-local-handle.lua +5 -0
  53. package/engine/internal/unit/ability.d.ts +35 -0
  54. package/engine/internal/unit/ability.lua +63 -1
  55. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  56. package/engine/internal/unit/allowed-targets.lua +9 -1
  57. package/engine/internal/unit/order.d.ts +20 -0
  58. package/engine/internal/unit/order.lua +136 -0
  59. package/engine/internal/unit+ability.lua +10 -1
  60. package/engine/internal/unit+damage.d.ts +2 -11
  61. package/engine/internal/unit+damage.lua +10 -14
  62. package/engine/internal/unit+spellSteal.lua +1 -2
  63. package/engine/internal/unit-missile-launch.lua +18 -5
  64. package/engine/internal/unit.d.ts +32 -10
  65. package/engine/internal/unit.lua +257 -110
  66. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  67. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  68. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  69. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  70. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  71. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  72. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  73. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  74. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  75. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  76. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  77. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  78. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  79. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  80. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  81. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  82. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  83. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  84. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  85. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  86. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  87. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  88. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  89. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  90. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  91. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  92. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  93. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  94. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  95. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  96. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  97. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  98. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  99. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  100. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  101. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  102. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  103. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  104. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  105. package/engine/object-data/entry/ability-type/web.lua +52 -0
  106. package/engine/object-data/entry/ability-type.d.ts +19 -17
  107. package/engine/object-data/entry/ability-type.lua +85 -24
  108. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  109. package/engine/object-data/entry/buff-type.d.ts +6 -12
  110. package/engine/object-data/entry/buff-type.lua +13 -29
  111. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  112. package/engine/object-data/entry/item-type.d.ts +1 -1
  113. package/engine/object-data/entry/item-type.lua +4 -4
  114. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  115. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  116. package/engine/object-data/entry/sound-preset.lua +140 -0
  117. package/engine/object-data/entry/unit-type.d.ts +21 -5
  118. package/engine/object-data/entry/unit-type.lua +214 -93
  119. package/engine/object-data/entry/upgrade.d.ts +1 -1
  120. package/engine/object-data/entry/upgrade.lua +4 -4
  121. package/engine/object-data/entry.d.ts +16 -14
  122. package/engine/object-data/entry.lua +60 -32
  123. package/engine/object-field/ability.d.ts +4 -4
  124. package/engine/object-field/ability.lua +7 -6
  125. package/engine/object-field/unit.d.ts +57 -3
  126. package/engine/object-field/unit.lua +207 -7
  127. package/engine/object-field.d.ts +17 -6
  128. package/engine/object-field.lua +188 -92
  129. package/engine/random.d.ts +9 -0
  130. package/engine/random.lua +13 -0
  131. package/engine/standard/entries/buff-type.d.ts +3 -0
  132. package/engine/standard/entries/buff-type.lua +3 -0
  133. package/engine/standard/entries/sound-preset.d.ts +10 -0
  134. package/engine/standard/entries/sound-preset.lua +10 -0
  135. package/engine/standard/fields/unit.d.ts +4 -0
  136. package/engine/standard/fields/unit.lua +7 -0
  137. package/engine/text-tag.d.ts +36 -2
  138. package/engine/text-tag.lua +249 -10
  139. package/engine/unit.d.ts +1 -0
  140. package/engine/unit.lua +1 -0
  141. package/objutil/buff.lua +1 -2
  142. package/objutil/unit.lua +8 -0
  143. package/package.json +2 -2
  144. package/patch-lualib.lua +1 -1
  145. package/utility/arrays.d.ts +2 -0
  146. package/utility/arrays.lua +11 -0
  147. package/utility/callback-array.d.ts +13 -0
  148. package/utility/callback-array.lua +46 -0
  149. package/utility/functions.d.ts +8 -0
  150. package/utility/functions.lua +13 -0
  151. package/utility/linked-set.d.ts +1 -0
  152. package/utility/linked-set.lua +3 -0
  153. package/utility/lua-maps.d.ts +15 -2
  154. package/utility/lua-maps.lua +53 -2
  155. package/utility/lua-sets.d.ts +2 -0
  156. package/utility/lua-sets.lua +7 -0
  157. package/utility/reflection.lua +11 -7
  158. package/core/types/order.d.ts +0 -25
  159. package/core/types/order.lua +0 -55
@@ -0,0 +1,17 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ import { UnitTypeId } from "../unit-type";
5
+ export declare class RaiseDeadAbilityType extends AbilityType {
6
+ static readonly BASE_ID: AbilityTypeId;
7
+ get firstSummonedUnitCount(): number[];
8
+ set firstSummonedUnitCount(firstSummonedUnitCount: ObjectDataEntryLevelFieldValueSupplier<number>);
9
+ get secondSummonedUnitCount(): number[];
10
+ set secondSummonedUnitCount(secondSummonedUnitCount: ObjectDataEntryLevelFieldValueSupplier<number>);
11
+ get firstSummonedUnitTypeId(): UnitTypeId[];
12
+ set firstSummonedUnitTypeId(firstSummonedUnitTypeId: ObjectDataEntryLevelFieldValueSupplier<UnitTypeId>);
13
+ get secondSummonedUnitTypeId(): UnitTypeId[];
14
+ set secondSummonedUnitTypeId(secondSummonedUnitTypeId: ObjectDataEntryLevelFieldValueSupplier<UnitTypeId>);
15
+ get limitCheckUnitTypeId(): UnitTypeId[];
16
+ set limitCheckUnitTypeId(limitCheckUnitTypeId: ObjectDataEntryLevelFieldValueSupplier<UnitTypeId>);
17
+ }
@@ -0,0 +1,78 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.RaiseDeadAbilityType = __TS__Class()
9
+ local RaiseDeadAbilityType = ____exports.RaiseDeadAbilityType
10
+ RaiseDeadAbilityType.name = "RaiseDeadAbilityType"
11
+ __TS__ClassExtends(RaiseDeadAbilityType, AbilityType)
12
+ RaiseDeadAbilityType.BASE_ID = fourCC("Arai")
13
+ __TS__SetDescriptor(
14
+ RaiseDeadAbilityType.prototype,
15
+ "firstSummonedUnitCount",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Rai1")
19
+ end,
20
+ set = function(self, firstSummonedUnitCount)
21
+ self:setNumberLevelField("Rai1", firstSummonedUnitCount)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ RaiseDeadAbilityType.prototype,
28
+ "secondSummonedUnitCount",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Rai2")
32
+ end,
33
+ set = function(self, secondSummonedUnitCount)
34
+ self:setNumberLevelField("Rai2", secondSummonedUnitCount)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ __TS__SetDescriptor(
40
+ RaiseDeadAbilityType.prototype,
41
+ "firstSummonedUnitTypeId",
42
+ {
43
+ get = function(self)
44
+ return self:getObjectDataEntryNumericIdLevelField("Rai3")
45
+ end,
46
+ set = function(self, firstSummonedUnitTypeId)
47
+ self:setObjectDataEntryNumericIdLevelField("Rai3", firstSummonedUnitTypeId)
48
+ end
49
+ },
50
+ true
51
+ )
52
+ __TS__SetDescriptor(
53
+ RaiseDeadAbilityType.prototype,
54
+ "secondSummonedUnitTypeId",
55
+ {
56
+ get = function(self)
57
+ return self:getObjectDataEntryNumericIdLevelField("Rai4")
58
+ end,
59
+ set = function(self, secondSummonedUnitTypeId)
60
+ self:setObjectDataEntryNumericIdLevelField("Rai4", secondSummonedUnitTypeId)
61
+ end
62
+ },
63
+ true
64
+ )
65
+ __TS__SetDescriptor(
66
+ RaiseDeadAbilityType.prototype,
67
+ "limitCheckUnitTypeId",
68
+ {
69
+ get = function(self)
70
+ return self:getObjectDataEntryNumericIdLevelField("Raiu")
71
+ end,
72
+ set = function(self, limitCheckUnitTypeId)
73
+ self:setObjectDataEntryNumericIdLevelField("Raiu", limitCheckUnitTypeId)
74
+ end
75
+ },
76
+ true
77
+ )
78
+ return ____exports
@@ -7,4 +7,8 @@ export declare class ShockWaveAbilityType extends AbilityType {
7
7
  set damagePerTarget(damagePerTarget: ObjectDataEntryLevelFieldValueSupplier<number>);
8
8
  get maximumTotalDamage(): number[];
9
9
  set maximumTotalDamage(maximumTotalDamage: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ get distance(): number[];
11
+ set distance(distance: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ get finalAreaOfEffect(): number[];
13
+ set finalAreaOfEffect(finalAreaOfEffect: ObjectDataEntryLevelFieldValueSupplier<number>);
10
14
  }
@@ -36,4 +36,30 @@ __TS__SetDescriptor(
36
36
  },
37
37
  true
38
38
  )
39
+ __TS__SetDescriptor(
40
+ ShockWaveAbilityType.prototype,
41
+ "distance",
42
+ {
43
+ get = function(self)
44
+ return self:getNumberLevelField("Osh3")
45
+ end,
46
+ set = function(self, distance)
47
+ self:setNumberLevelField("Osh3", distance)
48
+ end
49
+ },
50
+ true
51
+ )
52
+ __TS__SetDescriptor(
53
+ ShockWaveAbilityType.prototype,
54
+ "finalAreaOfEffect",
55
+ {
56
+ get = function(self)
57
+ return self:getNumberLevelField("Osh4")
58
+ end,
59
+ set = function(self, finalAreaOfEffect)
60
+ self:setNumberLevelField("Osh4", finalAreaOfEffect)
61
+ end
62
+ },
63
+ true
64
+ )
39
65
  return ____exports
@@ -9,4 +9,14 @@ export declare class SlowPoisonAbilityType extends AbilityType {
9
9
  set movementSpeedDecreaseFactor(movementSpeedDecreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
10
10
  get attackSpeedDecreaseFactor(): number[];
11
11
  set attackSpeedDecreaseFactor(attackSpeedDecreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ get isDamageStacking(): boolean[];
13
+ set isDamageStacking(isDamageStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
14
+ get isMovementSpeedFactorStacking(): boolean[];
15
+ set isMovementSpeedFactorStacking(isMovementSpeedFactorStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
16
+ get isAttackSpeedFactorStacking(): boolean[];
17
+ set isAttackSpeedFactorStacking(isAttackSpeedFactorStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
18
+ get isAbleToKill(): boolean[];
19
+ set isAbleToKill(isAbleToKill: ObjectDataEntryLevelFieldValueSupplier<boolean>);
20
+ private setOption;
21
+ private getOption;
12
22
  }
@@ -9,6 +9,12 @@ ____exports.SlowPoisonAbilityType = __TS__Class()
9
9
  local SlowPoisonAbilityType = ____exports.SlowPoisonAbilityType
10
10
  SlowPoisonAbilityType.name = "SlowPoisonAbilityType"
11
11
  __TS__ClassExtends(SlowPoisonAbilityType, AbilityType)
12
+ function SlowPoisonAbilityType.prototype.setOption(self, option, supplier)
13
+ self:setFlagLevelFieldValue("Spo4", option, supplier)
14
+ end
15
+ function SlowPoisonAbilityType.prototype.getOption(self, option)
16
+ return self:getFlagLevelFieldValue("Spo4", option)
17
+ end
12
18
  SlowPoisonAbilityType.BASE_ID = fourCC("Aspo")
13
19
  __TS__SetDescriptor(
14
20
  SlowPoisonAbilityType.prototype,
@@ -49,4 +55,56 @@ __TS__SetDescriptor(
49
55
  },
50
56
  true
51
57
  )
58
+ __TS__SetDescriptor(
59
+ SlowPoisonAbilityType.prototype,
60
+ "isDamageStacking",
61
+ {
62
+ get = function(self)
63
+ return self:getOption(1)
64
+ end,
65
+ set = function(self, isDamageStacking)
66
+ self:setOption(1, isDamageStacking)
67
+ end
68
+ },
69
+ true
70
+ )
71
+ __TS__SetDescriptor(
72
+ SlowPoisonAbilityType.prototype,
73
+ "isMovementSpeedFactorStacking",
74
+ {
75
+ get = function(self)
76
+ return self:getOption(2)
77
+ end,
78
+ set = function(self, isMovementSpeedFactorStacking)
79
+ self:setOption(2, isMovementSpeedFactorStacking)
80
+ end
81
+ },
82
+ true
83
+ )
84
+ __TS__SetDescriptor(
85
+ SlowPoisonAbilityType.prototype,
86
+ "isAttackSpeedFactorStacking",
87
+ {
88
+ get = function(self)
89
+ return self:getOption(4)
90
+ end,
91
+ set = function(self, isAttackSpeedFactorStacking)
92
+ self:setOption(4, isAttackSpeedFactorStacking)
93
+ end
94
+ },
95
+ true
96
+ )
97
+ __TS__SetDescriptor(
98
+ SlowPoisonAbilityType.prototype,
99
+ "isAbleToKill",
100
+ {
101
+ get = function(self)
102
+ return self:getOption(8)
103
+ end,
104
+ set = function(self, isAbleToKill)
105
+ self:setOption(8, isAbleToKill)
106
+ end
107
+ },
108
+ true
109
+ )
52
110
  return ____exports
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
15
15
  "summonedUnitTypeId",
16
16
  {
17
17
  get = function(self)
18
- return self:getObjectDataEntryIdLevelField("Hwe1")
18
+ return self:getObjectDataEntryNumericIdLevelField("Hwe1")
19
19
  end,
20
20
  set = function(self, summonedUnitTypeId)
21
- self:setObjectDataEntryIdLevelField("Hwe1", summonedUnitTypeId)
21
+ self:setObjectDataEntryNumericIdLevelField("Hwe1", summonedUnitTypeId)
22
22
  end
23
23
  },
24
24
  true
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
15
15
  "summonedUnitTypeId",
16
16
  {
17
17
  get = function(self)
18
- return self:getObjectDataEntryIdLevelField("Hwe1")
18
+ return self:getObjectDataEntryNumericIdLevelField("Hwe1")
19
19
  end,
20
20
  set = function(self, summonedUnitTypeId)
21
- self:setObjectDataEntryIdLevelField("Hwe1", summonedUnitTypeId)
21
+ self:setObjectDataEntryNumericIdLevelField("Hwe1", summonedUnitTypeId)
22
22
  end
23
23
  },
24
24
  true
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class WebAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get airUnitLoweringDuration(): number[];
7
+ set airUnitLoweringDuration(airUnitLoweringDuration: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ get airUnitHeight(): number[];
9
+ set airUnitHeight(airUnitHeight: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ get meleeAttackRange(): number[];
11
+ set meleeAttackRange(meleeAttackRange: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ }
@@ -0,0 +1,52 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.WebAbilityType = __TS__Class()
9
+ local WebAbilityType = ____exports.WebAbilityType
10
+ WebAbilityType.name = "WebAbilityType"
11
+ __TS__ClassExtends(WebAbilityType, AbilityType)
12
+ WebAbilityType.BASE_ID = fourCC("Aweb")
13
+ __TS__SetDescriptor(
14
+ WebAbilityType.prototype,
15
+ "airUnitLoweringDuration",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ens1")
19
+ end,
20
+ set = function(self, airUnitLoweringDuration)
21
+ self:setNumberLevelField("Ens1", airUnitLoweringDuration)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ WebAbilityType.prototype,
28
+ "airUnitHeight",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Ens2")
32
+ end,
33
+ set = function(self, airUnitHeight)
34
+ self:setNumberLevelField("Ens2", airUnitHeight)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ __TS__SetDescriptor(
40
+ WebAbilityType.prototype,
41
+ "meleeAttackRange",
42
+ {
43
+ get = function(self)
44
+ return self:getNumberLevelField("Ens3")
45
+ end,
46
+ set = function(self, meleeAttackRange)
47
+ self:setNumberLevelField("Ens3", meleeAttackRange)
48
+ end
49
+ },
50
+ true
51
+ )
52
+ return ____exports
@@ -3,15 +3,15 @@ import "../../internal/unit/ability";
3
3
  import { TupleOf } from "../../../utility/types";
4
4
  import { AnimationName } from "../auxiliary/animation-name";
5
5
  import { AnimationQualifier } from "../auxiliary/animation-qualifier";
6
- import { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
6
+ import { AttachmentPresetInput, EffectPresetWithParameters, EffectPresetWithParametersInput } from "../auxiliary/attachment-preset";
7
7
  import { CombatClassifications } from "../auxiliary/combat-classification";
8
8
  import { Race } from "../auxiliary/race";
9
- import { SoundPresetName } from "../auxiliary/sound-preset-name";
10
9
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
11
10
  import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
12
11
  import { BuffTypeId } from "./buff-type";
13
12
  import { LightningTypeId } from "./lightning-type";
14
- export type AbilityTypeId = ObjectDataEntryId & {
13
+ import { SoundPresetId } from "./sound-preset";
14
+ export type AbilityTypeId = ObjectDataEntryId & number & {
15
15
  readonly __abilityTypeId: unique symbol;
16
16
  };
17
17
  export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId> {
@@ -27,11 +27,11 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
27
27
  set buttonPositionX(buttonPositionX: number);
28
28
  get buttonPositionY(): number;
29
29
  set buttonPositionY(buttonPositionY: number);
30
- get casterCastingEffectPresets(): AttachmentPreset[];
31
- set casterCastingEffectPresets(casterCastingEffectPresets: AttachmentPresetInput[]);
32
- get casterChannelingEffectPresets(): AttachmentPreset[];
33
- set casterChannelingEffectPresets(casterChannelingEffectPresets: AttachmentPresetInput[]);
34
- get casterAttachmentPresets(): TupleOf<AttachmentPreset, 0 | 1 | 2>;
30
+ get casterCastingEffectPresets(): EffectPresetWithParameters[];
31
+ set casterCastingEffectPresets(casterCastingEffectPresets: EffectPresetWithParametersInput[]);
32
+ get casterChannelingEffectPresets(): EffectPresetWithParameters[];
33
+ set casterChannelingEffectPresets(casterChannelingEffectPresets: EffectPresetWithParametersInput[]);
34
+ get casterAttachmentPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2>;
35
35
  set casterAttachmentPresets(casterAttachmentPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2>);
36
36
  get effectModelPaths(): string[];
37
37
  set effectModelPaths(effectModelPaths: string[]);
@@ -63,15 +63,15 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
63
63
  set missileMovementArc(missileMovementArc: number);
64
64
  get missileMovementSpeed(): number;
65
65
  set missileMovementSpeed(missileMovementSpeed: number);
66
- get specialAttachmentPreset(): AttachmentPreset | undefined;
66
+ get specialAttachmentPreset(): EffectPresetWithParameters | undefined;
67
67
  set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
68
- get targetCastingEffectPresets(): AttachmentPreset[];
68
+ get targetCastingEffectPresets(): EffectPresetWithParameters[];
69
69
  set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
70
- get targetEffectPresets(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
70
+ get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
71
71
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
72
- get targetEffectPresetsSD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
72
+ get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
73
73
  set targetEffectPresetsSD(targetEffectPresetsSD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
74
- get targetEffectPresetsHD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
74
+ get targetEffectPresetsHD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
75
75
  set targetEffectPresetsHD(targetEffectPresetsHD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
76
76
  get turnOffButtonPositionX(): number;
77
77
  set turnOffButtonPositionX(buttonPositionX: number);
@@ -111,10 +111,12 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
111
111
  set turnOffTooltipText(turnOffTooltipText: ObjectDataEntryLevelFieldValueSupplier<string>);
112
112
  get turnOffTooltipExtendedText(): string[];
113
113
  set turnOffTooltipExtendedText(turnOffTooltipExtendedText: ObjectDataEntryLevelFieldValueSupplier<string>);
114
- get soundPresetName(): SoundPresetName;
115
- set soundPresetName(soundPresetName: SoundPresetName);
116
- get loopingSoundPresetName(): SoundPresetName;
117
- set loopingSoundPresetName(loopingSoundPresetName: SoundPresetName);
114
+ get casterEffectSoundPresetId(): SoundPresetId | undefined;
115
+ set casterEffectSoundPresetId(casterEffectSoundPresetId: SoundPresetId | undefined);
116
+ get casterEffectLoopingSoundPresetId(): SoundPresetId;
117
+ set casterEffectLoopingSoundPresetId(casterEffectLoopingSoundPresetId: SoundPresetId);
118
+ get targetEffectSoundPresetId(): SoundPresetId | undefined;
119
+ set targetEffectSoundPresetId(targetEffectSoundPresetId: SoundPresetId | undefined);
118
120
  get allowedTargetCombatClassifications(): CombatClassifications[];
119
121
  set allowedTargetCombatClassifications(allowedTargetCombatClassifications: ObjectDataEntryLevelFieldValueSupplier<CombatClassifications>);
120
122
  get areaOfEffect(): number[];
@@ -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 toAttachmentPreset = ____attachment_2Dpreset.toAttachmentPreset
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,18 @@ 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
41
+ local ____lua_2Dsets = require("utility.lua-sets")
42
+ local luaSetOf = ____lua_2Dsets.luaSetOf
36
43
  local castAnimationFQNByAbilityTypeId = {}
37
44
  local isButtonVisibleFalseAbilityTypes = {}
38
45
  local casterCastingEffectPresetsByAbilityTypeId = {}
39
46
  local casterChannelingEffectPresetsByAbilityTypeId = {}
40
47
  local targetCastingEffectPresetsByAbilityTypeId = {}
48
+ local targetEffectSoundPresetByAbilityTypeId = {}
41
49
  ____exports.AbilityType = __TS__Class()
42
50
  local AbilityType = ____exports.AbilityType
43
51
  AbilityType.name = "AbilityType"
@@ -113,7 +121,7 @@ __TS__SetDescriptor(
113
121
  return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
114
122
  end,
115
123
  set = function(self, casterCastingEffectPresets)
116
- casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toAttachmentPreset)
124
+ casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
117
125
  end
118
126
  },
119
127
  true
@@ -126,7 +134,7 @@ __TS__SetDescriptor(
126
134
  return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
127
135
  end,
128
136
  set = function(self, casterChannelingEffectPresets)
129
- casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toAttachmentPreset)
137
+ casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
130
138
  end
131
139
  },
132
140
  true
@@ -271,10 +279,10 @@ __TS__SetDescriptor(
271
279
  "lightningTypeIds",
272
280
  {
273
281
  get = function(self)
274
- return self:getObjectDataEntryIdsField("alig")
282
+ return self:getObjectDataEntryNumericIdsField("alig")
275
283
  end,
276
284
  set = function(self, lightningTypeIds)
277
- self:setObjectDataEntryIdsField("alig", lightningTypeIds)
285
+ self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
278
286
  end
279
287
  },
280
288
  true
@@ -365,7 +373,7 @@ __TS__SetDescriptor(
365
373
  return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
366
374
  end,
367
375
  set = function(self, targetCastingEffectPresets)
368
- targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toAttachmentPreset)
376
+ targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
369
377
  end
370
378
  },
371
379
  true
@@ -508,7 +516,7 @@ __TS__SetDescriptor(
508
516
  "techTreeDependencies",
509
517
  {
510
518
  get = function(self)
511
- local techTreeDependencyIds = self:getObjectDataEntryIdsField("areq")
519
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
512
520
  local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
513
521
  return mapIndexed(
514
522
  techTreeDependencyIds,
@@ -528,7 +536,7 @@ __TS__SetDescriptor(
528
536
  map(techTreeDependencies, extractTechTreeDependencyInputLevel),
529
537
  function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
530
538
  )
531
- self:setObjectDataEntryIdsField("areq", techTreeDependencyIds)
539
+ self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
532
540
  self:setNumbersField("arqa", techTreeDependencyInternalLevels)
533
541
  end
534
542
  },
@@ -718,26 +726,40 @@ __TS__SetDescriptor(
718
726
  )
719
727
  __TS__SetDescriptor(
720
728
  AbilityType.prototype,
721
- "soundPresetName",
729
+ "casterEffectSoundPresetId",
722
730
  {
723
731
  get = function(self)
724
- return self:getStringField("aefs")
732
+ local casterEffectSoundPresetId = self:getStringField("aefs")
733
+ return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
725
734
  end,
726
- set = function(self, soundPresetName)
727
- self:setStringField("aefs", soundPresetName)
735
+ set = function(self, casterEffectSoundPresetId)
736
+ self:setStringField("aefs", casterEffectSoundPresetId or "")
728
737
  end
729
738
  },
730
739
  true
731
740
  )
732
741
  __TS__SetDescriptor(
733
742
  AbilityType.prototype,
734
- "loopingSoundPresetName",
743
+ "casterEffectLoopingSoundPresetId",
735
744
  {
736
745
  get = function(self)
737
746
  return self:getStringField("aefl")
738
747
  end,
739
- set = function(self, loopingSoundPresetName)
740
- self:setStringField("aefl", loopingSoundPresetName)
748
+ set = function(self, casterEffectLoopingSoundPresetId)
749
+ self:setStringField("aefl", casterEffectLoopingSoundPresetId)
750
+ end
751
+ },
752
+ true
753
+ )
754
+ __TS__SetDescriptor(
755
+ AbilityType.prototype,
756
+ "targetEffectSoundPresetId",
757
+ {
758
+ get = function(self)
759
+ return targetEffectSoundPresetByAbilityTypeId[self.id]
760
+ end,
761
+ set = function(self, targetEffectSoundPresetId)
762
+ targetEffectSoundPresetByAbilityTypeId[self.id] = targetEffectSoundPresetId
741
763
  end
742
764
  },
743
765
  true
@@ -796,10 +818,10 @@ __TS__SetDescriptor(
796
818
  "buffTypeIds",
797
819
  {
798
820
  get = function(self)
799
- return self:getObjectDataEntryIdsLevelField("abuf")
821
+ return self:getObjectDataEntryNumericIdsLevelField("abuf")
800
822
  end,
801
823
  set = function(self, buffTypeIds)
802
- self:setObjectDataEntryIdsLevelField("abuf", buffTypeIds)
824
+ self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
803
825
  end
804
826
  },
805
827
  true
@@ -848,10 +870,10 @@ __TS__SetDescriptor(
848
870
  "effectBuffTypeIds",
849
871
  {
850
872
  get = function(self)
851
- return self:getObjectDataEntryIdsLevelField("aeff")
873
+ return self:getObjectDataEntryNumericIdsLevelField("aeff")
852
874
  end,
853
875
  set = function(self, effectBuffTypeIds)
854
- self:setObjectDataEntryIdsLevelField("aeff", effectBuffTypeIds)
876
+ self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
855
877
  end
856
878
  },
857
879
  true
@@ -959,13 +981,38 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
959
981
  4,
960
982
  function(caster, ability)
961
983
  if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
962
- Timer:run(function()
963
- caster:playAnimation(animationFQN)
964
- end)
984
+ Timer:run(caster, "playAnimation", animationFQN)
965
985
  end
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
+ local unsupportedEffectSoundAbilityTypeIds = luaSetOf(fourCC("AAns"))
1010
+ Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1011
+ local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1012
+ if isSoundLabelCustom(soundPresetId) or unsupportedEffectSoundAbilityTypeIds[ability.parentTypeId] ~= nil and soundPresetId ~= "" then
1013
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1014
+ end
1015
+ end)
969
1016
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
970
1017
  return mapValues(
971
1018
  casterCastingEffectPresetsByAbilityTypeId,
@@ -978,10 +1025,17 @@ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function(
978
1025
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
979
1026
  )
980
1027
  end)
1028
+ local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
1029
+ return mapValues(
1030
+ casterCastingEffectPresetsByAbilityTypeId,
1031
+ function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
1032
+ )
1033
+ end)
981
1034
  local casterCastingEffectsByCaster = {}
982
1035
  local function handleAbilityCastingStartEvent(caster, ability)
983
1036
  local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
984
1037
  local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1038
+ local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
985
1039
  local effects = {}
986
1040
  if effectModelPaths ~= nil then
987
1041
  for i = 1, #effectModelPaths do
@@ -990,7 +1044,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
990
1044
  if attachmentPoint == nil or attachmentPoint == "" then
991
1045
  attachmentPoint = "origin"
992
1046
  end
993
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1047
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
994
1048
  end
995
1049
  end
996
1050
  casterCastingEffectsByCaster[caster] = effects
@@ -1021,10 +1075,17 @@ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(functi
1021
1075
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1022
1076
  )
1023
1077
  end)
1078
+ local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
1079
+ return mapValues(
1080
+ casterChannelingEffectPresetsByAbilityTypeId,
1081
+ function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
1082
+ )
1083
+ end)
1024
1084
  local casterChannelingEffectsByCaster = {}
1025
1085
  local function handleAbilityChannelingStartEvent(caster, ability)
1026
1086
  local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1027
1087
  local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1088
+ local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
1028
1089
  local effects = {}
1029
1090
  if effectModelPaths ~= nil then
1030
1091
  for i = 1, #effectModelPaths do
@@ -1033,7 +1094,7 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1033
1094
  if attachmentPoint == nil or attachmentPoint == "" then
1034
1095
  attachmentPoint = "origin"
1035
1096
  end
1036
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1097
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1037
1098
  end
1038
1099
  end
1039
1100
  casterChannelingEffectsByCaster[caster] = effects