warscript 0.0.1-dev.aefeacb → 0.0.1-dev.b23de5c

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 (175) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/types/effect.d.ts +1 -3
  4. package/core/types/effect.lua +26 -29
  5. package/core/types/frame.lua +24 -21
  6. package/core/types/player.d.ts +16 -0
  7. package/core/types/player.lua +60 -15
  8. package/core/types/playerCamera.d.ts +2 -0
  9. package/core/types/playerCamera.lua +123 -5
  10. package/core/types/sound.d.ts +17 -25
  11. package/core/types/sound.lua +85 -44
  12. package/core/types/tileCell.d.ts +11 -1
  13. package/core/types/tileCell.lua +97 -0
  14. package/core/types/timer.d.ts +9 -8
  15. package/core/types/timer.lua +45 -23
  16. package/decl/native.d.ts +846 -790
  17. package/destroyable.d.ts +1 -0
  18. package/destroyable.lua +9 -0
  19. package/engine/behavior.d.ts +14 -1
  20. package/engine/behavior.lua +230 -70
  21. package/engine/behaviour/ability/apply-buff.lua +5 -5
  22. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  23. package/engine/behaviour/ability/damage.d.ts +9 -3
  24. package/engine/behaviour/ability/damage.lua +26 -38
  25. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  26. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  27. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  28. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  29. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  30. package/engine/behaviour/ability/restore-mana.lua +6 -6
  31. package/engine/behaviour/ability.d.ts +15 -6
  32. package/engine/behaviour/ability.lua +56 -21
  33. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  34. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  35. package/engine/behaviour/unit.d.ts +40 -2
  36. package/engine/behaviour/unit.lua +269 -6
  37. package/engine/buff.d.ts +58 -18
  38. package/engine/buff.lua +347 -150
  39. package/engine/internal/ability.d.ts +7 -1
  40. package/engine/internal/ability.lua +49 -9
  41. package/engine/internal/item/ability.lua +63 -11
  42. package/engine/internal/item+owner.lua +12 -6
  43. package/engine/internal/item.d.ts +18 -17
  44. package/engine/internal/item.lua +135 -49
  45. package/engine/internal/mechanics/ability-duration.lua +1 -1
  46. package/engine/internal/mechanics/cast-ability.lua +6 -3
  47. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  48. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  49. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  50. package/engine/internal/misc/frame-coordinates.lua +21 -0
  51. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  52. package/engine/internal/misc/get-terrain-z.lua +11 -0
  53. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  54. package/engine/internal/misc/player-local-handle.lua +5 -0
  55. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  56. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  57. package/engine/internal/unit/ability.d.ts +35 -0
  58. package/engine/internal/unit/ability.lua +98 -9
  59. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  60. package/engine/internal/unit/allowed-targets.lua +9 -1
  61. package/engine/internal/unit/attributes.d.ts +17 -0
  62. package/engine/internal/unit/attributes.lua +46 -0
  63. package/engine/internal/unit/bonus.d.ts +2 -0
  64. package/engine/internal/unit/bonus.lua +10 -0
  65. package/engine/internal/unit/fly-height.d.ts +7 -0
  66. package/engine/internal/unit/fly-height.lua +20 -0
  67. package/engine/internal/unit/interrupts.d.ts +12 -0
  68. package/engine/internal/unit/interrupts.lua +28 -0
  69. package/engine/internal/unit/main-selected.lua +12 -27
  70. package/engine/internal/unit/order.d.ts +20 -0
  71. package/engine/internal/unit/order.lua +136 -0
  72. package/engine/internal/unit/range-event.d.ts +12 -0
  73. package/engine/internal/unit/range-event.lua +90 -0
  74. package/engine/internal/unit/scale.d.ts +7 -0
  75. package/engine/internal/unit/scale.lua +20 -0
  76. package/engine/internal/unit+ability.lua +10 -1
  77. package/engine/internal/unit+damage.d.ts +2 -11
  78. package/engine/internal/unit+damage.lua +10 -14
  79. package/engine/internal/unit+spellSteal.lua +1 -2
  80. package/engine/internal/unit-missile-launch.lua +52 -14
  81. package/engine/internal/unit.d.ts +43 -25
  82. package/engine/internal/unit.lua +384 -260
  83. package/engine/local-client.d.ts +2 -0
  84. package/engine/local-client.lua +30 -0
  85. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  86. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  87. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  88. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  89. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  90. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  91. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  92. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  93. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  94. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  95. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  96. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  97. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  98. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  99. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  100. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  101. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  102. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  103. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  104. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  105. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  106. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  107. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  108. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  109. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  110. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  111. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  112. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  113. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  114. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  115. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  116. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  117. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  118. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  119. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  120. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  121. package/engine/object-data/entry/ability-type/web.lua +52 -0
  122. package/engine/object-data/entry/ability-type.d.ts +13 -11
  123. package/engine/object-data/entry/ability-type.lua +119 -17
  124. package/engine/object-data/entry/buff-type/applicable.lua +5 -0
  125. package/engine/object-data/entry/buff-type.d.ts +5 -11
  126. package/engine/object-data/entry/buff-type.lua +11 -27
  127. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  128. package/engine/object-data/entry/destructible-type.lua +155 -0
  129. package/engine/object-data/entry/sound-preset.d.ts +17 -0
  130. package/engine/object-data/entry/sound-preset.lua +104 -0
  131. package/engine/object-data/entry/unit-type.d.ts +17 -4
  132. package/engine/object-data/entry/unit-type.lua +197 -85
  133. package/engine/object-field/ability.d.ts +4 -4
  134. package/engine/object-field/ability.lua +7 -6
  135. package/engine/object-field/unit.d.ts +72 -3
  136. package/engine/object-field/unit.lua +268 -7
  137. package/engine/object-field.d.ts +25 -6
  138. package/engine/object-field.lua +357 -118
  139. package/engine/random.d.ts +10 -0
  140. package/engine/random.lua +21 -0
  141. package/engine/standard/entries/buff-type.d.ts +3 -0
  142. package/engine/standard/entries/buff-type.lua +3 -0
  143. package/engine/standard/fields/ability.d.ts +2 -2
  144. package/engine/standard/fields/ability.lua +2 -2
  145. package/engine/standard/fields/unit.d.ts +12 -0
  146. package/engine/standard/fields/unit.lua +20 -0
  147. package/engine/synchronization.d.ts +11 -0
  148. package/engine/synchronization.lua +77 -0
  149. package/engine/text-tag.d.ts +36 -2
  150. package/engine/text-tag.lua +250 -10
  151. package/engine/unit.d.ts +6 -0
  152. package/engine/unit.lua +6 -0
  153. package/net/socket.lua +1 -1
  154. package/objutil/buff.lua +11 -10
  155. package/package.json +2 -2
  156. package/patch-lua.lua +15 -0
  157. package/patch-lualib.lua +1 -1
  158. package/utility/arrays.d.ts +2 -0
  159. package/utility/arrays.lua +11 -0
  160. package/utility/callback-array.d.ts +17 -0
  161. package/utility/callback-array.lua +61 -0
  162. package/utility/functions.d.ts +8 -0
  163. package/utility/functions.lua +13 -0
  164. package/utility/linked-map.d.ts +34 -0
  165. package/utility/linked-map.lua +101 -0
  166. package/utility/linked-set.d.ts +4 -1
  167. package/utility/linked-set.lua +43 -1
  168. package/utility/lua-maps.d.ts +15 -2
  169. package/utility/lua-maps.lua +53 -2
  170. package/utility/lua-sets.d.ts +2 -0
  171. package/utility/lua-sets.lua +7 -0
  172. package/utility/records.lua +20 -1
  173. package/utility/types.d.ts +3 -0
  174. package/core/types/order.d.ts +0 -25
  175. 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
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class ReincarnationAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get reincarnationDelay(): number[];
7
+ set reincarnationDelay(reincarnationDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
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.ReincarnationAbilityType = __TS__Class()
9
+ local ReincarnationAbilityType = ____exports.ReincarnationAbilityType
10
+ ReincarnationAbilityType.name = "ReincarnationAbilityType"
11
+ __TS__ClassExtends(ReincarnationAbilityType, AbilityType)
12
+ ReincarnationAbilityType.BASE_ID = fourCC("AOre")
13
+ __TS__SetDescriptor(
14
+ ReincarnationAbilityType.prototype,
15
+ "reincarnationDelay",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ore1")
19
+ end,
20
+ set = function(self, reincarnationDelay)
21
+ self:setNumberLevelField("Ore1", reincarnationDelay)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ 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
@@ -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,7 +3,7 @@ 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
9
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
@@ -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,17 @@ 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 targetChannelingEffectPresets(): EffectPresetWithParameters[];
71
+ set targetChannelingEffectPresets(targetChannelingEffectPresets: EffectPresetWithParametersInput[]);
72
+ get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
71
73
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
72
- get targetEffectPresetsSD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
74
+ get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
73
75
  set targetEffectPresetsSD(targetEffectPresetsSD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
74
- get targetEffectPresetsHD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
76
+ get targetEffectPresetsHD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
75
77
  set targetEffectPresetsHD(targetEffectPresetsHD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
76
78
  get turnOffButtonPositionX(): number;
77
79
  set turnOffButtonPositionX(buttonPositionX: number);
@@ -20,7 +20,7 @@ local mapIndexed = ____arrays.mapIndexed
20
20
  local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
21
21
  local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
22
22
  local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
23
- local toAttachmentPreset = ____attachment_2Dpreset.toAttachmentPreset
23
+ local toEffectPreset = ____attachment_2Dpreset.toEffectPreset
24
24
  local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
25
25
  local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
26
26
  local stringArrayToCombatClassifications = ____combat_2Dclassification.stringArrayToCombatClassifications
@@ -35,13 +35,17 @@ local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilit
35
35
  local ____upgrade = require("engine.object-data.entry.upgrade")
36
36
  local Upgrade = ____upgrade.Upgrade
37
37
  local ____sound = require("core.types.sound")
38
+ local isSoundLabelCustom = ____sound.isSoundLabelCustom
38
39
  local Sound3D = ____sound.Sound3D
39
- local SoundPreset = ____sound.SoundPreset
40
+ local SoundSettings = ____sound.SoundSettings
41
+ local ____lua_2Dsets = require("utility.lua-sets")
42
+ local luaSetOf = ____lua_2Dsets.luaSetOf
40
43
  local castAnimationFQNByAbilityTypeId = {}
41
44
  local isButtonVisibleFalseAbilityTypes = {}
42
45
  local casterCastingEffectPresetsByAbilityTypeId = {}
43
46
  local casterChannelingEffectPresetsByAbilityTypeId = {}
44
47
  local targetCastingEffectPresetsByAbilityTypeId = {}
48
+ local targetChannelingEffectPresetsByAbilityTypeId = {}
45
49
  local targetEffectSoundPresetByAbilityTypeId = {}
46
50
  ____exports.AbilityType = __TS__Class()
47
51
  local AbilityType = ____exports.AbilityType
@@ -118,7 +122,7 @@ __TS__SetDescriptor(
118
122
  return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
119
123
  end,
120
124
  set = function(self, casterCastingEffectPresets)
121
- casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toAttachmentPreset)
125
+ casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
122
126
  end
123
127
  },
124
128
  true
@@ -131,7 +135,7 @@ __TS__SetDescriptor(
131
135
  return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
132
136
  end,
133
137
  set = function(self, casterChannelingEffectPresets)
134
- casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toAttachmentPreset)
138
+ casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
135
139
  end
136
140
  },
137
141
  true
@@ -370,7 +374,20 @@ __TS__SetDescriptor(
370
374
  return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
371
375
  end,
372
376
  set = function(self, targetCastingEffectPresets)
373
- targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toAttachmentPreset)
377
+ targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
378
+ end
379
+ },
380
+ true
381
+ )
382
+ __TS__SetDescriptor(
383
+ AbilityType.prototype,
384
+ "targetChannelingEffectPresets",
385
+ {
386
+ get = function(self)
387
+ return targetChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
388
+ end,
389
+ set = function(self, targetChannelingEffectPresets)
390
+ targetChannelingEffectPresetsByAbilityTypeId[self.id] = map(targetChannelingEffectPresets, toEffectPreset)
374
391
  end
375
392
  },
376
393
  true
@@ -978,9 +995,7 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
978
995
  4,
979
996
  function(caster, ability)
980
997
  if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
981
- Timer:run(function()
982
- caster:playAnimation(animationFQN)
983
- end)
998
+ Timer:run(caster, "playAnimation", animationFQN)
984
999
  end
985
1000
  end
986
1001
  )
@@ -991,20 +1006,27 @@ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEf
991
1006
  4,
992
1007
  function(caster, ability, target)
993
1008
  if __TS__InstanceOf(target, Unit) then
994
- Sound3D:playFromLabel(soundPresetId, SoundPreset.Ability, target)
1009
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target)
995
1010
  else
996
- Sound3D:playFromLabel(soundPresetId, SoundPreset.Ability, target.x, target.y)
1011
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target.x, target.y)
997
1012
  end
998
1013
  end
999
1014
  )
1000
1015
  Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(
1001
1016
  4,
1002
1017
  function(caster, ability, x, y)
1003
- Sound3D:playFromLabel(soundPresetId, SoundPreset.Ability, x, y)
1018
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, x, y)
1004
1019
  end
1005
1020
  )
1006
1021
  end
1007
1022
  end
1023
+ local unsupportedEffectSoundAbilityTypeIds = luaSetOf(fourCC("AAns"))
1024
+ Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1025
+ local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1026
+ if isSoundLabelCustom(soundPresetId) or soundPresetId ~= "" and unsupportedEffectSoundAbilityTypeIds[ability.parentTypeId] ~= nil then
1027
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1028
+ end
1029
+ end)
1008
1030
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
1009
1031
  return mapValues(
1010
1032
  casterCastingEffectPresetsByAbilityTypeId,
@@ -1017,10 +1039,17 @@ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function(
1017
1039
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1018
1040
  )
1019
1041
  end)
1042
+ local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
1043
+ return mapValues(
1044
+ casterCastingEffectPresetsByAbilityTypeId,
1045
+ function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
1046
+ )
1047
+ end)
1020
1048
  local casterCastingEffectsByCaster = {}
1021
1049
  local function handleAbilityCastingStartEvent(caster, ability)
1022
1050
  local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
1023
1051
  local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1052
+ local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
1024
1053
  local effects = {}
1025
1054
  if effectModelPaths ~= nil then
1026
1055
  for i = 1, #effectModelPaths do
@@ -1029,7 +1058,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
1029
1058
  if attachmentPoint == nil or attachmentPoint == "" then
1030
1059
  attachmentPoint = "origin"
1031
1060
  end
1032
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1061
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1033
1062
  end
1034
1063
  end
1035
1064
  casterCastingEffectsByCaster[caster] = effects
@@ -1060,10 +1089,17 @@ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(functi
1060
1089
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1061
1090
  )
1062
1091
  end)
1092
+ local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
1093
+ return mapValues(
1094
+ casterChannelingEffectPresetsByAbilityTypeId,
1095
+ function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
1096
+ )
1097
+ end)
1063
1098
  local casterChannelingEffectsByCaster = {}
1064
1099
  local function handleAbilityChannelingStartEvent(caster, ability)
1065
1100
  local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1066
1101
  local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1102
+ local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
1067
1103
  local effects = {}
1068
1104
  if effectModelPaths ~= nil then
1069
1105
  for i = 1, #effectModelPaths do
@@ -1072,23 +1108,89 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1072
1108
  if attachmentPoint == nil or attachmentPoint == "" then
1073
1109
  attachmentPoint = "origin"
1074
1110
  end
1075
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1111
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1076
1112
  end
1077
1113
  end
1078
1114
  casterChannelingEffectsByCaster[caster] = effects
1079
1115
  end
1116
+ local targetChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
1117
+ return mapValues(
1118
+ targetChannelingEffectPresetsByAbilityTypeId,
1119
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputModelPath) end
1120
+ )
1121
+ end)
1122
+ local targetChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
1123
+ return mapValues(
1124
+ targetChannelingEffectPresetsByAbilityTypeId,
1125
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1126
+ )
1127
+ end)
1128
+ local targetChannelingEffectParametersByAbilityTypeId = postcompile(function()
1129
+ return mapValues(
1130
+ targetChannelingEffectPresetsByAbilityTypeId,
1131
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, "parameters") end
1132
+ )
1133
+ end)
1134
+ local targetChannelingEffectsByCaster = {}
1135
+ local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1136
+ local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1137
+ local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1138
+ local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1139
+ local effects = {}
1140
+ if effectModelPaths ~= nil then
1141
+ for i = 1, #effectModelPaths do
1142
+ local effectModelPath = effectModelPaths[i]
1143
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1144
+ if attachmentPoint == nil or attachmentPoint == "" then
1145
+ attachmentPoint = "origin"
1146
+ end
1147
+ effects[i] = Effect:create(effectModelPath, target, attachmentPoint, parameters and parameters[i])
1148
+ end
1149
+ end
1150
+ targetChannelingEffectsByCaster[caster] = effects
1151
+ end
1152
+ local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
1153
+ local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1154
+ local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1155
+ local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1156
+ local effects = {}
1157
+ if effectModelPaths ~= nil then
1158
+ for i = 1, #effectModelPaths do
1159
+ local effectModelPath = effectModelPaths[i]
1160
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1161
+ if attachmentPoint == nil or attachmentPoint == "" then
1162
+ attachmentPoint = "origin"
1163
+ end
1164
+ effects[i] = Effect:create(effectModelPath, x, y, parameters and parameters[i])
1165
+ end
1166
+ end
1167
+ targetChannelingEffectsByCaster[caster] = effects
1168
+ end
1080
1169
  local function handleAbilityStopChannelingEvent(caster)
1081
- local effects = casterChannelingEffectsByCaster[caster]
1082
- if effects ~= nil then
1083
- for i = 1, #effects do
1084
- effects[i]:destroy()
1170
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1171
+ if casterEffects ~= nil then
1172
+ for i = 1, #casterEffects do
1173
+ casterEffects[i]:destroy()
1085
1174
  end
1086
1175
  casterChannelingEffectsByCaster[caster] = nil
1087
1176
  end
1177
+ local targetEffects = targetChannelingEffectsByCaster[caster]
1178
+ if targetEffects ~= nil then
1179
+ for i = 1, #targetEffects do
1180
+ targetEffects[i]:destroy()
1181
+ end
1182
+ targetChannelingEffectsByCaster[caster] = nil
1183
+ end
1088
1184
  end
1089
1185
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1090
1186
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1091
1187
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1092
1188
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1093
1189
  end
1190
+ for abilityTypeId in pairs(targetChannelingEffectModelPathsByAbilityTypeId) do
1191
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
1192
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
1193
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1194
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1195
+ end
1094
1196
  return ____exports
@@ -121,6 +121,10 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
121
121
  applicatorAbilityType.damagePerSecond = 0
122
122
  applicatorAbilityType.movementSpeedDecreaseFactor = 0
123
123
  applicatorAbilityType.attackSpeedDecreaseFactor = 0
124
+ applicatorAbilityType.isDamageStacking = false
125
+ applicatorAbilityType.isMovementSpeedFactorStacking = false
126
+ applicatorAbilityType.isAttackSpeedFactorStacking = false
127
+ applicatorAbilityType.isAbleToKill = false
124
128
  applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
125
129
  applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
126
130
  end
@@ -128,6 +132,7 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
128
132
  local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
129
133
  applicatorAbilityType.attackSpeedIncreaseFactor = 0
130
134
  applicatorAbilityType.movementSpeedIncreaseFactor = 0
135
+ applicatorAbilityType.receivedDamageIncreaseFactor = 0
131
136
  applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
132
137
  if applicatorAbilityType.levelCount > 1 then
133
138
  multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType