warscript 0.0.1-dev.ed60fea → 0.0.1-dev.ee6f224

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 (174) 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 +24 -21
  8. package/core/types/player.lua +3 -1
  9. package/core/types/playerCamera.d.ts +2 -0
  10. package/core/types/playerCamera.lua +123 -5
  11. package/core/types/sound.d.ts +17 -24
  12. package/core/types/sound.lua +99 -24
  13. package/core/types/tileCell.d.ts +9 -0
  14. package/core/types/tileCell.lua +92 -0
  15. package/core/types/timer.d.ts +8 -8
  16. package/core/types/timer.lua +39 -23
  17. package/core/util.lua +6 -1
  18. package/decl/native.d.ts +846 -790
  19. package/engine/behavior.d.ts +5 -0
  20. package/engine/behavior.lua +106 -27
  21. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  22. package/engine/behaviour/ability/apply-buff.lua +32 -0
  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 +7 -2
  31. package/engine/behaviour/ability.lua +42 -24
  32. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  33. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  34. package/engine/behaviour/unit.d.ts +32 -0
  35. package/engine/behaviour/unit.lua +185 -4
  36. package/engine/buff.d.ts +57 -44
  37. package/engine/buff.lua +273 -221
  38. package/engine/internal/ability.d.ts +7 -1
  39. package/engine/internal/ability.lua +49 -11
  40. package/engine/internal/item/ability.lua +82 -14
  41. package/engine/internal/item+owner.lua +12 -6
  42. package/engine/internal/item.d.ts +8 -7
  43. package/engine/internal/item.lua +153 -51
  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/object-data/auto-attack-speed-increase.d.ts +1 -1
  54. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  55. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  56. package/engine/internal/object-data/evasion-probability.lua +16 -0
  57. package/engine/internal/unit/ability.d.ts +35 -0
  58. package/engine/internal/unit/ability.lua +63 -1
  59. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  60. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  61. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  62. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  63. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  64. package/engine/internal/unit/allowed-targets.lua +9 -1
  65. package/engine/internal/unit/bonus.d.ts +2 -0
  66. package/engine/internal/unit/bonus.lua +17 -0
  67. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  68. package/engine/internal/unit/ignore-events-items.lua +5 -0
  69. package/engine/internal/unit/item.lua +3 -4
  70. package/engine/internal/unit/order.d.ts +20 -0
  71. package/engine/internal/unit/order.lua +136 -0
  72. package/engine/internal/unit+ability.lua +10 -1
  73. package/engine/internal/unit+damage.d.ts +2 -11
  74. package/engine/internal/unit+damage.lua +10 -14
  75. package/engine/internal/unit+spellSteal.lua +1 -2
  76. package/engine/internal/unit-missile-launch.lua +9 -2
  77. package/engine/internal/unit.d.ts +33 -10
  78. package/engine/internal/unit.lua +274 -113
  79. package/engine/lightning.d.ts +12 -5
  80. package/engine/lightning.lua +48 -14
  81. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  82. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  83. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  84. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  85. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  86. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  87. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  88. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  89. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  90. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  91. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  92. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  93. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  94. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  95. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  96. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  97. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  98. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  99. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  100. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  101. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  102. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  103. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  104. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  105. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  106. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  107. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  108. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  109. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  110. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  111. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  112. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  113. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  114. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  115. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  116. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  117. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  118. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  119. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  120. package/engine/object-data/entry/ability-type/web.lua +52 -0
  121. package/engine/object-data/entry/ability-type.d.ts +19 -17
  122. package/engine/object-data/entry/ability-type.lua +82 -24
  123. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  124. package/engine/object-data/entry/buff-type.d.ts +6 -12
  125. package/engine/object-data/entry/buff-type.lua +13 -29
  126. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  127. package/engine/object-data/entry/item-type.d.ts +1 -1
  128. package/engine/object-data/entry/item-type.lua +4 -4
  129. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  130. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  131. package/engine/object-data/entry/sound-preset.lua +140 -0
  132. package/engine/object-data/entry/unit-type.d.ts +21 -5
  133. package/engine/object-data/entry/unit-type.lua +214 -93
  134. package/engine/object-data/entry/upgrade.d.ts +1 -1
  135. package/engine/object-data/entry/upgrade.lua +4 -4
  136. package/engine/object-data/entry.d.ts +16 -14
  137. package/engine/object-data/entry.lua +60 -32
  138. package/engine/object-field/ability.d.ts +4 -4
  139. package/engine/object-field/ability.lua +7 -6
  140. package/engine/object-field/unit.d.ts +57 -3
  141. package/engine/object-field/unit.lua +207 -7
  142. package/engine/object-field.d.ts +17 -6
  143. package/engine/object-field.lua +188 -92
  144. package/engine/random.d.ts +9 -0
  145. package/engine/random.lua +13 -0
  146. package/engine/standard/entries/buff-type.d.ts +3 -0
  147. package/engine/standard/entries/buff-type.lua +3 -0
  148. package/engine/standard/entries/sound-preset.d.ts +10 -0
  149. package/engine/standard/entries/sound-preset.lua +10 -0
  150. package/engine/standard/fields/unit.d.ts +4 -0
  151. package/engine/standard/fields/unit.lua +7 -0
  152. package/engine/text-tag.d.ts +36 -2
  153. package/engine/text-tag.lua +249 -10
  154. package/engine/unit.d.ts +2 -0
  155. package/engine/unit.lua +2 -0
  156. package/objutil/buff.lua +1 -2
  157. package/objutil/unit.lua +8 -0
  158. package/package.json +2 -2
  159. package/patch-lualib.lua +1 -1
  160. package/utility/arrays.d.ts +1 -0
  161. package/utility/arrays.lua +3 -0
  162. package/utility/callback-array.d.ts +13 -0
  163. package/utility/callback-array.lua +46 -0
  164. package/utility/functions.d.ts +8 -0
  165. package/utility/functions.lua +13 -0
  166. package/utility/linked-set.d.ts +1 -0
  167. package/utility/linked-set.lua +3 -0
  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/reflection.lua +11 -7
  173. package/core/types/order.d.ts +0 -25
  174. package/core/types/order.lua +0 -55
@@ -12,6 +12,9 @@ local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNum
12
12
  local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
13
13
  local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
14
14
  local stringArrayToCombatClassifications = ____combat_2Dclassification.stringArrayToCombatClassifications
15
+ local ____movement_2Dtype = require("engine.object-data.auxiliary.movement-type")
16
+ local movementTypeToString = ____movement_2Dtype.movementTypeToString
17
+ local stringToMovementType = ____movement_2Dtype.stringToMovementType
15
18
  local ____unit_2Dclassification = require("engine.object-data.auxiliary.unit-classification")
16
19
  local stringArrayToUnitClassifications = ____unit_2Dclassification.stringArrayToUnitClassifications
17
20
  local unitClassificationsToStringArray = ____unit_2Dclassification.unitClassificationsToStringArray
@@ -19,6 +22,14 @@ local ____entry = require("engine.object-data.entry")
19
22
  local ObjectDataEntry = ____entry.ObjectDataEntry
20
23
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
21
24
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
25
+ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
26
+ local attackTypeToString = ____attack_2Dtype.attackTypeToString
27
+ local stringToAttackType = ____attack_2Dtype.stringToAttackType
28
+ local ____config = require("config")
29
+ local WarscriptConfig = ____config.WarscriptConfig
30
+ local ____armor_2Dtype = require("engine.object-data.auxiliary.armor-type")
31
+ local armorTypeToString = ____armor_2Dtype.armorTypeToString
32
+ local stringToArmorType = ____armor_2Dtype.stringToArmorType
22
33
  local getOrCreateUnitTypeWeapons
23
34
  ____exports.UnitTypeWeapon = __TS__Class()
24
35
  local UnitTypeWeapon = ____exports.UnitTypeWeapon
@@ -32,18 +43,19 @@ __TS__SetDescriptor(
32
43
  "attackType",
33
44
  {
34
45
  get = function(self)
46
+ local ____stringToAttackType_1 = stringToAttackType
35
47
  local ____self_0 = self.unitType
36
- return ____self_0.getStringField(
48
+ return ____stringToAttackType_1(____self_0.getStringField(
37
49
  ____self_0,
38
50
  ("ua" .. tostring(self.index)) .. "t"
39
- )
51
+ ))
40
52
  end,
41
53
  set = function(self, attackType)
42
- local ____self_1 = self.unitType
43
- ____self_1.setStringField(
44
- ____self_1,
54
+ local ____self_2 = self.unitType
55
+ ____self_2.setStringField(
56
+ ____self_2,
45
57
  ("ua" .. tostring(self.index)) .. "t",
46
- attackType
58
+ attackTypeToString(attackType)
47
59
  )
48
60
  end
49
61
  },
@@ -54,16 +66,16 @@ __TS__SetDescriptor(
54
66
  "backSwingDuration",
55
67
  {
56
68
  get = function(self)
57
- local ____self_2 = self.unitType
58
- return ____self_2.getNumberField(
59
- ____self_2,
69
+ local ____self_3 = self.unitType
70
+ return ____self_3.getNumberField(
71
+ ____self_3,
60
72
  "ubs" .. tostring(self.index)
61
73
  )
62
74
  end,
63
75
  set = function(self, backSwingDuration)
64
- local ____self_3 = self.unitType
65
- ____self_3.setNumberField(
66
- ____self_3,
76
+ local ____self_4 = self.unitType
77
+ ____self_4.setNumberField(
78
+ ____self_4,
67
79
  "ubs" .. tostring(self.index),
68
80
  backSwingDuration
69
81
  )
@@ -76,16 +88,16 @@ __TS__SetDescriptor(
76
88
  "cooldown",
77
89
  {
78
90
  get = function(self)
79
- local ____self_4 = self.unitType
80
- return ____self_4.getNumberField(
81
- ____self_4,
91
+ local ____self_5 = self.unitType
92
+ return ____self_5.getNumberField(
93
+ ____self_5,
82
94
  ("ua" .. tostring(self.index)) .. "c"
83
95
  )
84
96
  end,
85
97
  set = function(self, cooldown)
86
- local ____self_5 = self.unitType
87
- ____self_5.setNumberField(
88
- ____self_5,
98
+ local ____self_6 = self.unitType
99
+ ____self_6.setNumberField(
100
+ ____self_6,
89
101
  ("ua" .. tostring(self.index)) .. "c",
90
102
  cooldown
91
103
  )
@@ -119,16 +131,16 @@ __TS__SetDescriptor(
119
131
  "damageBase",
120
132
  {
121
133
  get = function(self)
122
- local ____self_6 = self.unitType
123
- return ____self_6.getNumberField(
124
- ____self_6,
134
+ local ____self_7 = self.unitType
135
+ return ____self_7.getNumberField(
136
+ ____self_7,
125
137
  ("ua" .. tostring(self.index)) .. "b"
126
138
  )
127
139
  end,
128
140
  set = function(self, damageBase)
129
- local ____self_7 = self.unitType
130
- ____self_7.setNumberField(
131
- ____self_7,
141
+ local ____self_8 = self.unitType
142
+ ____self_8.setNumberField(
143
+ ____self_8,
132
144
  ("ua" .. tostring(self.index)) .. "b",
133
145
  damageBase
134
146
  )
@@ -141,16 +153,16 @@ __TS__SetDescriptor(
141
153
  "damageDiceCount",
142
154
  {
143
155
  get = function(self)
144
- local ____self_8 = self.unitType
145
- return ____self_8.getNumberField(
146
- ____self_8,
156
+ local ____self_9 = self.unitType
157
+ return ____self_9.getNumberField(
158
+ ____self_9,
147
159
  ("ua" .. tostring(self.index)) .. "d"
148
160
  )
149
161
  end,
150
162
  set = function(self, damageDiceNumber)
151
- local ____self_9 = self.unitType
152
- ____self_9.setNumberField(
153
- ____self_9,
163
+ local ____self_10 = self.unitType
164
+ ____self_10.setNumberField(
165
+ ____self_10,
154
166
  ("ua" .. tostring(self.index)) .. "d",
155
167
  damageDiceNumber
156
168
  )
@@ -163,16 +175,16 @@ __TS__SetDescriptor(
163
175
  "damageDiceSideCount",
164
176
  {
165
177
  get = function(self)
166
- local ____self_10 = self.unitType
167
- return ____self_10.getNumberField(
168
- ____self_10,
178
+ local ____self_11 = self.unitType
179
+ return ____self_11.getNumberField(
180
+ ____self_11,
169
181
  ("ua" .. tostring(self.index)) .. "s"
170
182
  )
171
183
  end,
172
184
  set = function(self, damageDiceSideCount)
173
- local ____self_11 = self.unitType
174
- ____self_11.setNumberField(
175
- ____self_11,
185
+ local ____self_12 = self.unitType
186
+ ____self_12.setNumberField(
187
+ ____self_12,
176
188
  ("ua" .. tostring(self.index)) .. "s",
177
189
  damageDiceSideCount
178
190
  )
@@ -185,16 +197,16 @@ __TS__SetDescriptor(
185
197
  "impactDelay",
186
198
  {
187
199
  get = function(self)
188
- local ____self_12 = self.unitType
189
- return ____self_12.getNumberField(
190
- ____self_12,
200
+ local ____self_13 = self.unitType
201
+ return ____self_13.getNumberField(
202
+ ____self_13,
191
203
  "udp" .. tostring(self.index)
192
204
  )
193
205
  end,
194
206
  set = function(self, impactDelay)
195
- local ____self_13 = self.unitType
196
- ____self_13.setNumberField(
197
- ____self_13,
207
+ local ____self_14 = self.unitType
208
+ ____self_14.setNumberField(
209
+ ____self_14,
198
210
  "udp" .. tostring(self.index),
199
211
  impactDelay
200
212
  )
@@ -207,16 +219,16 @@ __TS__SetDescriptor(
207
219
  "missileModelPath",
208
220
  {
209
221
  get = function(self)
210
- local ____self_14 = self.unitType
211
- return ____self_14.getStringField(
212
- ____self_14,
222
+ local ____self_15 = self.unitType
223
+ return ____self_15.getStringField(
224
+ ____self_15,
213
225
  ("ua" .. tostring(self.index)) .. "m"
214
226
  )
215
227
  end,
216
228
  set = function(self, missileModelPath)
217
- local ____self_15 = self.unitType
218
- ____self_15.setStringField(
219
- ____self_15,
229
+ local ____self_16 = self.unitType
230
+ ____self_16.setStringField(
231
+ ____self_16,
220
232
  ("ua" .. tostring(self.index)) .. "m",
221
233
  missileModelPath
222
234
  )
@@ -229,16 +241,16 @@ __TS__SetDescriptor(
229
241
  "range",
230
242
  {
231
243
  get = function(self)
232
- local ____self_16 = self.unitType
233
- return ____self_16.getNumberField(
234
- ____self_16,
244
+ local ____self_17 = self.unitType
245
+ return ____self_17.getNumberField(
246
+ ____self_17,
235
247
  ("ua" .. tostring(self.index)) .. "r"
236
248
  )
237
249
  end,
238
250
  set = function(self, range)
239
- local ____self_17 = self.unitType
240
- ____self_17.setNumberField(
241
- ____self_17,
251
+ local ____self_18 = self.unitType
252
+ ____self_18.setNumberField(
253
+ ____self_18,
242
254
  ("ua" .. tostring(self.index)) .. "r",
243
255
  range
244
256
  )
@@ -251,16 +263,16 @@ __TS__SetDescriptor(
251
263
  "soundType",
252
264
  {
253
265
  get = function(self)
254
- local ____self_18 = self.unitType
255
- return ____self_18.getStringField(
256
- ____self_18,
266
+ local ____self_19 = self.unitType
267
+ return ____self_19.getStringField(
268
+ ____self_19,
257
269
  "ucs" .. tostring(self.index)
258
270
  )
259
271
  end,
260
272
  set = function(self, soundType)
261
- local ____self_19 = self.unitType
262
- ____self_19.setStringField(
263
- ____self_19,
273
+ local ____self_20 = self.unitType
274
+ ____self_20.setStringField(
275
+ ____self_20,
264
276
  "ucs" .. tostring(self.index),
265
277
  soundType
266
278
  )
@@ -273,16 +285,16 @@ __TS__SetDescriptor(
273
285
  "soundTypeSD",
274
286
  {
275
287
  get = function(self)
276
- local ____self_20 = self.unitType
277
- return ____self_20.getStringField(
278
- ____self_20,
288
+ local ____self_21 = self.unitType
289
+ return ____self_21.getStringField(
290
+ ____self_21,
279
291
  ("ucs" .. tostring(self.index)) .. ":sd"
280
292
  )
281
293
  end,
282
294
  set = function(self, soundTypeSD)
283
- local ____self_21 = self.unitType
284
- ____self_21.setStringField(
285
- ____self_21,
295
+ local ____self_22 = self.unitType
296
+ ____self_22.setStringField(
297
+ ____self_22,
286
298
  ("ucs" .. tostring(self.index)) .. ":sd",
287
299
  soundTypeSD
288
300
  )
@@ -295,16 +307,16 @@ __TS__SetDescriptor(
295
307
  "soundTypeHD",
296
308
  {
297
309
  get = function(self)
298
- local ____self_22 = self.unitType
299
- return ____self_22.getStringField(
300
- ____self_22,
310
+ local ____self_23 = self.unitType
311
+ return ____self_23.getStringField(
312
+ ____self_23,
301
313
  ("ucs" .. tostring(self.index)) .. ":hd"
302
314
  )
303
315
  end,
304
316
  set = function(self, soundTypeHD)
305
- local ____self_23 = self.unitType
306
- ____self_23.setStringField(
307
- ____self_23,
317
+ local ____self_24 = self.unitType
318
+ ____self_24.setStringField(
319
+ ____self_24,
308
320
  ("ucs" .. tostring(self.index)) .. ":hd",
309
321
  soundTypeHD
310
322
  )
@@ -345,10 +357,10 @@ __TS__SetDescriptor(
345
357
  "abilityTypeIds",
346
358
  {
347
359
  get = function(self)
348
- return self:getObjectDataEntryIdsField("uabi")
360
+ return self:getObjectDataEntryNumericIdsField("uabi")
349
361
  end,
350
362
  set = function(self, abilityTypeIds)
351
- self:setObjectDataEntryIdsField("uabi", abilityTypeIds)
363
+ self:setObjectDataEntryNumericIdsField("uabi", abilityTypeIds)
352
364
  end
353
365
  },
354
366
  true
@@ -358,10 +370,10 @@ __TS__SetDescriptor(
358
370
  "defaultActiveAbilityTypeId",
359
371
  {
360
372
  get = function(self)
361
- return self:getObjectDataEntryIdsField("udaa")[1]
373
+ return self:getObjectDataEntryNumericIdsField("udaa")[1]
362
374
  end,
363
375
  set = function(self, abilityTypeId)
364
- self:setObjectDataEntryIdsField(
376
+ self:setObjectDataEntryNumericIdsField(
365
377
  "udaa",
366
378
  arrayOfNotNull(abilityTypeId)
367
379
  )
@@ -807,6 +819,9 @@ __TS__SetDescriptor(
807
819
  end,
808
820
  set = function(self, modelPath)
809
821
  self:setStringField("umdl", modelPath)
822
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
823
+ self:setStringField("upor", "")
824
+ end
810
825
  end
811
826
  },
812
827
  true
@@ -820,6 +835,9 @@ __TS__SetDescriptor(
820
835
  end,
821
836
  set = function(self, modelPathSD)
822
837
  self:setStringField("umdl:sd", modelPathSD)
838
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
839
+ self:setStringField("upor:sd", "")
840
+ end
823
841
  end
824
842
  },
825
843
  true
@@ -833,6 +851,51 @@ __TS__SetDescriptor(
833
851
  end,
834
852
  set = function(self, modelPathHD)
835
853
  self:setStringField("umdl:hd", modelPathHD)
854
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
855
+ self:setStringField("upor:hd", "")
856
+ end
857
+ end
858
+ },
859
+ true
860
+ )
861
+ __TS__SetDescriptor(
862
+ UnitType.prototype,
863
+ "portraitModelPath",
864
+ {
865
+ get = function(self)
866
+ return self:getStringField("upor")
867
+ end,
868
+ set = function(self, portraitModelPath)
869
+ self:setStringField("upor", portraitModelPath)
870
+ self.isPortraitModelPathSet = true
871
+ end
872
+ },
873
+ true
874
+ )
875
+ __TS__SetDescriptor(
876
+ UnitType.prototype,
877
+ "portraitModelPathSD",
878
+ {
879
+ get = function(self)
880
+ return self:getStringField("upor:sd")
881
+ end,
882
+ set = function(self, portraitModelPathSD)
883
+ self:setStringField("upor:sd", portraitModelPathSD)
884
+ self.isPortraitModelPathSet = true
885
+ end
886
+ },
887
+ true
888
+ )
889
+ __TS__SetDescriptor(
890
+ UnitType.prototype,
891
+ "portraitModelPathHD",
892
+ {
893
+ get = function(self)
894
+ return self:getStringField("upor:hd")
895
+ end,
896
+ set = function(self, portraitModelPathHD)
897
+ self:setStringField("upor:hd", portraitModelPathHD)
898
+ self.isPortraitModelPathSet = true
836
899
  end
837
900
  },
838
901
  true
@@ -876,6 +939,19 @@ __TS__SetDescriptor(
876
939
  },
877
940
  true
878
941
  )
942
+ __TS__SetDescriptor(
943
+ UnitType.prototype,
944
+ "selectionCircleHeight",
945
+ {
946
+ get = function(self)
947
+ return self:getNumberField("uslz")
948
+ end,
949
+ set = function(self, height)
950
+ self:setNumberField("uslz", height)
951
+ end
952
+ },
953
+ true
954
+ )
879
955
  __TS__SetDescriptor(
880
956
  UnitType.prototype,
881
957
  "selectionCircleScale",
@@ -1123,6 +1199,19 @@ __TS__SetDescriptor(
1123
1199
  },
1124
1200
  true
1125
1201
  )
1202
+ __TS__SetDescriptor(
1203
+ UnitType.prototype,
1204
+ "armor",
1205
+ {
1206
+ get = function(self)
1207
+ return self:getNumberField("udef")
1208
+ end,
1209
+ set = function(self, armor)
1210
+ self:setNumberField("udef", armor)
1211
+ end
1212
+ },
1213
+ true
1214
+ )
1126
1215
  __TS__SetDescriptor(
1127
1216
  UnitType.prototype,
1128
1217
  "armorSoundType",
@@ -1162,6 +1251,22 @@ __TS__SetDescriptor(
1162
1251
  },
1163
1252
  true
1164
1253
  )
1254
+ __TS__SetDescriptor(
1255
+ UnitType.prototype,
1256
+ "armorType",
1257
+ {
1258
+ get = function(self)
1259
+ return stringToArmorType(self:getStringField("udty"))
1260
+ end,
1261
+ set = function(self, armorType)
1262
+ self:setStringField(
1263
+ "udty",
1264
+ armorTypeToString(armorType)
1265
+ )
1266
+ end
1267
+ },
1268
+ true
1269
+ )
1165
1270
  __TS__SetDescriptor(
1166
1271
  UnitType.prototype,
1167
1272
  "combatClassifications",
@@ -1180,7 +1285,7 @@ __TS__SetDescriptor(
1180
1285
  )
1181
1286
  __TS__SetDescriptor(
1182
1287
  UnitType.prototype,
1183
- "unitClassifications",
1288
+ "classifications",
1184
1289
  {
1185
1290
  get = function(self)
1186
1291
  return stringArrayToUnitClassifications(self:getStringsField("utyp"))
@@ -1288,10 +1393,13 @@ __TS__SetDescriptor(
1288
1393
  "movementType",
1289
1394
  {
1290
1395
  get = function(self)
1291
- return self:getStringField("umvt")
1396
+ return stringToMovementType(self:getStringField("umvt"))
1292
1397
  end,
1293
1398
  set = function(self, movementType)
1294
- self:setStringField("umvt", movementType)
1399
+ self:setStringField(
1400
+ "umvt",
1401
+ movementTypeToString(movementType)
1402
+ )
1295
1403
  end
1296
1404
  },
1297
1405
  true
@@ -1413,6 +1521,19 @@ __TS__SetDescriptor(
1413
1521
  },
1414
1522
  true
1415
1523
  )
1524
+ __TS__SetDescriptor(
1525
+ UnitType.prototype,
1526
+ "level",
1527
+ {
1528
+ get = function(self)
1529
+ return self:getNumberField("ulev")
1530
+ end,
1531
+ set = function(self, level)
1532
+ self:setNumberField("ulev", level)
1533
+ end
1534
+ },
1535
+ true
1536
+ )
1416
1537
  __TS__SetDescriptor(
1417
1538
  UnitType.prototype,
1418
1539
  "manaRegenerationRate",
@@ -1496,10 +1617,10 @@ __TS__SetDescriptor(
1496
1617
  "affectingUpgradeIds",
1497
1618
  {
1498
1619
  get = function(self)
1499
- return self:getObjectDataEntryIdsField("upgr")
1620
+ return self:getObjectDataEntryNumericIdsField("upgr")
1500
1621
  end,
1501
1622
  set = function(self, affectingUpgradeIds)
1502
- self:setObjectDataEntryIdsField("upgr", affectingUpgradeIds)
1623
+ self:setObjectDataEntryNumericIdsField("upgr", affectingUpgradeIds)
1503
1624
  end
1504
1625
  },
1505
1626
  true
@@ -1559,11 +1680,11 @@ __TS__SetDescriptor(
1559
1680
  implementReadonlyNumberIndexSupplier(
1560
1681
  ____exports.UnitType,
1561
1682
  function(id)
1562
- local ____class_24 = __TS__Class()
1563
- ____class_24.name = ____class_24.name
1564
- __TS__ClassExtends(____class_24, ____exports.UnitType)
1565
- ____class_24.BASE_ID = id
1566
- return ____class_24
1683
+ local ____class_25 = __TS__Class()
1684
+ ____class_25.name = ____class_25.name
1685
+ __TS__ClassExtends(____class_25, ____exports.UnitType)
1686
+ ____class_25.BASE_ID = id
1687
+ return ____class_25
1567
1688
  end
1568
1689
  )
1569
1690
  ____exports.HeroUnitType = __TS__Class()
@@ -1582,10 +1703,10 @@ __TS__SetDescriptor(
1582
1703
  "heroAbilityTypeIds",
1583
1704
  {
1584
1705
  get = function(self)
1585
- return self:getObjectDataEntryIdsField("uhab")
1706
+ return self:getObjectDataEntryNumericIdsField("uhab")
1586
1707
  end,
1587
1708
  set = function(self, heroAbilityTypeIds)
1588
- self:setObjectDataEntryIdsField("uhab", heroAbilityTypeIds)
1709
+ self:setObjectDataEntryNumericIdsField("uhab", heroAbilityTypeIds)
1589
1710
  end
1590
1711
  },
1591
1712
  true
@@ -1624,11 +1745,11 @@ __TS__SetDescriptor(
1624
1745
  implementReadonlyNumberIndexSupplier(
1625
1746
  ____exports.HeroUnitType,
1626
1747
  function(id)
1627
- local ____class_25 = __TS__Class()
1628
- ____class_25.name = ____class_25.name
1629
- __TS__ClassExtends(____class_25, ____exports.HeroUnitType)
1630
- ____class_25.BASE_ID = id
1631
- return ____class_25
1748
+ local ____class_26 = __TS__Class()
1749
+ ____class_26.name = ____class_26.name
1750
+ __TS__ClassExtends(____class_26, ____exports.HeroUnitType)
1751
+ ____class_26.BASE_ID = id
1752
+ return ____class_26
1632
1753
  end
1633
1754
  )
1634
1755
  return ____exports
@@ -3,7 +3,7 @@ import { TupleOf } from "../../../utility/types";
3
3
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
4
4
  import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
5
5
  import { AbilityTypeId } from "./ability-type";
6
- export type UpgradeId = ObjectDataEntryId & {
6
+ export type UpgradeId = ObjectDataEntryId & number & {
7
7
  readonly __upgradeId: unique symbol;
8
8
  };
9
9
  export declare const enum UpgradeEffectType {
@@ -32,7 +32,7 @@ function Upgrade.prototype.getEffect(self, i)
32
32
  type = effectType,
33
33
  bonusBase = self:getNumberField("gba" .. tostring(i)),
34
34
  bonusIncrement = self:getNumberField("gmo" .. tostring(i)),
35
- abilityTypeId = self:getObjectDataEntryIdField("gco" .. tostring(i))
35
+ abilityTypeId = self:getObjectDataEntryNumericIdField("gco" .. tostring(i))
36
36
  }
37
37
  end
38
38
  return nil
@@ -51,7 +51,7 @@ function Upgrade.prototype.setEffect(self, i, effect)
51
51
  effect and effect.bonusIncrement or 0
52
52
  )
53
53
  if (effect and effect.abilityTypeId) ~= nil then
54
- self:setObjectDataEntryIdField(
54
+ self:setObjectDataEntryNumericIdField(
55
55
  "gco" .. tostring(i),
56
56
  effect and effect.abilityTypeId
57
57
  )
@@ -145,7 +145,7 @@ __TS__SetDescriptor(
145
145
  "techTreeDependencies",
146
146
  {
147
147
  get = function(self)
148
- local techTreeDependencyIds = self:getObjectDataEntryIdsLevelField("greq")
148
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsLevelField("greq")
149
149
  local techTreeDependencyInternalLevels = self:getNumbersLevelField("grqc")
150
150
  return mapIndexed(
151
151
  techTreeDependencyIds,
@@ -177,7 +177,7 @@ __TS__SetDescriptor(
177
177
  function(level) return level + 1 end
178
178
  )
179
179
  end
180
- self:setObjectDataEntryIdsLevelField("greq", techTreeDependencyIds)
180
+ self:setObjectDataEntryNumericIdsLevelField("greq", techTreeDependencyIds)
181
181
  self:setNumbersLevelField("grqc", techTreeDependencyInternalLevels)
182
182
  end
183
183
  },
@@ -1,7 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset";
3
3
  import { MutableKeys } from "../../utility/types";
4
- export type ObjectDataEntryId = number & {
4
+ export type ObjectDataEntryId = (number | string) & {
5
5
  readonly __objectDataEntryId: unique symbol;
6
6
  };
7
7
  export type ObjectDataEntryIdType<T extends ObjectDataEntry> = T extends ObjectDataEntry<infer Id> ? Id : never;
@@ -18,14 +18,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
18
18
  private readonly levelFieldParametersByField;
19
19
  private readonly maxAffectedLevelByField;
20
20
  private _isInternal;
21
+ private get type();
21
22
  get isInternal(): boolean;
22
- protected static generateId(): number;
23
+ static get idType(): "number" | "string";
24
+ protected static generateId(): number | string;
23
25
  protected static getObjectData(map: WarMap): WarObjects;
24
- static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): ObjectDataEntryIdType<T>[];
25
- static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
26
- static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): T[];
26
+ static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): ObjectDataEntryIdType<T>[];
27
+ static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number | string, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
28
+ static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): T[];
27
29
  static getAll<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>): T[];
28
- static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number): T | undefined;
30
+ static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number | string): T | undefined;
29
31
  constructor(object: WarObject);
30
32
  get id(): Id;
31
33
  get baseId(): Id;
@@ -42,8 +44,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
42
44
  protected setNumberField(field: string, value: number): void;
43
45
  protected getStringField(field: string): string;
44
46
  protected setStringField(field: string, value: string): void;
45
- protected getObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string): Id;
46
- protected setObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string, value: Id): void;
47
+ protected getObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string): Id;
48
+ protected setObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string, value: Id): void;
47
49
  protected getAttachmentPresetField(modelPathField: string, nodeFQNField: string): AttachmentPreset | undefined;
48
50
  protected setAttachmentPresetField(modelPathField: string, nodeFQNField: string, attachmentPreset: AttachmentPresetInput | undefined): void;
49
51
  protected getBooleansField(field: string): boolean[];
@@ -52,8 +54,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
52
54
  protected setNumbersField(field: string, values: number[]): void;
53
55
  protected getStringsField(field: string): string[];
54
56
  protected setStringsField(field: string, values: string[]): void;
55
- protected getObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string): Id[];
56
- protected setObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string, values: Id[]): void;
57
+ protected getObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string): Id[];
58
+ protected setObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string, values: Id[]): void;
57
59
  protected getAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[]): AttachmentPreset[];
58
60
  protected setAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[], lengthField: string, attachmentPresets: AttachmentPresetInput[]): void;
59
61
  protected setFlagLevelFieldValue(fieldId: string, flag: 1 | 2 | 4 | 8 | 16, supplier: ObjectDataEntryLevelFieldValueSupplier<boolean>): void;
@@ -64,16 +66,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
64
66
  protected setNumberLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number>): void;
65
67
  protected getStringLevelField(field: string): string[];
66
68
  protected setStringLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string>): void;
67
- protected getObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string): Id[];
68
- protected setObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void;
69
+ protected getObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string): Id[];
70
+ protected setObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void;
69
71
  protected getBooleansLevelField(field: string): boolean[][];
70
72
  protected setBooleansLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<boolean[]>): void;
71
73
  protected getNumbersLevelField(field: string): number[][];
72
74
  protected setNumbersLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number[]>): void;
73
75
  protected getStringsLevelField(field: string): string[][];
74
76
  protected setStringsLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string[]>): void;
75
- protected getObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string): T[][];
76
- protected setObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void;
77
+ protected getObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string): T[][];
78
+ protected setObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void;
77
79
  private getLevelField;
78
80
  private setLevelField;
79
81
  }