warscript 0.0.1-dev.ab8c392 → 0.0.1-dev.ad08e94

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 (199) hide show
  1. package/attributes.d.ts +0 -1
  2. package/binaryreader.d.ts +1 -0
  3. package/binaryreader.lua +3 -0
  4. package/config.d.ts +5 -0
  5. package/config.lua +10 -0
  6. package/core/types/effect.d.ts +14 -6
  7. package/core/types/effect.lua +131 -35
  8. package/core/types/frame.d.ts +8 -1
  9. package/core/types/frame.lua +93 -1
  10. package/core/types/group.d.ts +0 -1
  11. package/core/types/image.d.ts +0 -1
  12. package/core/types/missile.d.ts +2 -2
  13. package/core/types/missile.lua +8 -2
  14. package/core/types/sound.d.ts +17 -24
  15. package/core/types/sound.lua +94 -24
  16. package/core/types/timer.d.ts +6 -7
  17. package/core/types/timer.lua +18 -21
  18. package/core/types/unit.lua +8 -0
  19. package/core/util.d.ts +1 -1
  20. package/core/util.lua +18 -1
  21. package/decl/index.d.ts +1 -0
  22. package/engine/ability.d.ts +1 -1
  23. package/engine/behavior.d.ts +10 -10
  24. package/engine/behavior.lua +6 -6
  25. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  26. package/engine/behaviour/ability/always-enabled.lua +31 -0
  27. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  28. package/engine/behaviour/ability/apply-buff.lua +32 -0
  29. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  30. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  31. package/engine/behaviour/ability/damage.d.ts +36 -11
  32. package/engine/behaviour/ability/damage.lua +90 -32
  33. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  34. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  35. package/engine/behaviour/ability/heal.d.ts +33 -6
  36. package/engine/behaviour/ability/heal.lua +89 -10
  37. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  38. package/engine/behaviour/ability/instant-impact.lua +4 -15
  39. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  40. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  41. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  42. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  43. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  44. package/engine/behaviour/ability/restore-mana.lua +29 -0
  45. package/engine/behaviour/ability.d.ts +27 -4
  46. package/engine/behaviour/ability.lua +152 -17
  47. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  48. package/engine/behaviour/unit.d.ts +10 -2
  49. package/engine/behaviour/unit.lua +27 -0
  50. package/engine/buff.d.ts +103 -41
  51. package/engine/buff.lua +465 -212
  52. package/engine/game-map.d.ts +7 -0
  53. package/engine/game-map.lua +32 -0
  54. package/engine/internal/ability.d.ts +16 -13
  55. package/engine/internal/ability.lua +80 -76
  56. package/engine/internal/item/ability.lua +106 -0
  57. package/engine/internal/item+owner.lua +2 -2
  58. package/engine/internal/item.d.ts +2 -2
  59. package/engine/internal/item.lua +56 -25
  60. package/engine/internal/mechanics/ability-duration.lua +1 -1
  61. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  62. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  63. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  64. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  65. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  66. package/engine/internal/object-data/evasion-probability.lua +16 -0
  67. package/engine/internal/unit/ability.d.ts +10 -1
  68. package/engine/internal/unit/ability.lua +36 -14
  69. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  70. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  71. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  72. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  73. package/engine/internal/unit/bonus.d.ts +11 -8
  74. package/engine/internal/unit/bonus.lua +23 -1
  75. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  76. package/engine/internal/unit/ignore-events-items.lua +5 -0
  77. package/engine/internal/unit/item.d.ts +24 -0
  78. package/engine/internal/unit/item.lua +78 -0
  79. package/engine/internal/unit/main-selected.d.ts +13 -0
  80. package/engine/internal/unit/main-selected.lua +51 -0
  81. package/engine/internal/unit+ability.lua +2 -2
  82. package/engine/internal/unit+transport.lua +4 -10
  83. package/engine/internal/unit-missile-launch.lua +25 -6
  84. package/engine/internal/unit.d.ts +64 -16
  85. package/engine/internal/unit.lua +381 -134
  86. package/engine/internal/utility.lua +12 -0
  87. package/engine/lightning.d.ts +12 -5
  88. package/engine/lightning.lua +48 -14
  89. package/engine/local-client.d.ts +7 -2
  90. package/engine/local-client.lua +82 -0
  91. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  92. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  93. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
  94. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  95. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  96. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  97. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  98. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  99. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  100. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  101. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  102. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  103. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  104. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  105. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  106. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  107. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  108. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  109. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  110. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  111. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  112. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  113. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  114. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  115. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  116. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  117. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  118. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  119. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  120. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  121. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  122. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  123. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  124. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  125. package/engine/object-data/entry/ability-type/web.lua +52 -0
  126. package/engine/object-data/entry/ability-type.d.ts +19 -18
  127. package/engine/object-data/entry/ability-type.lua +82 -33
  128. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  129. package/engine/object-data/entry/buff-type/applicable.lua +13 -37
  130. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  131. package/engine/object-data/entry/buff-type.d.ts +1 -2
  132. package/engine/object-data/entry/buff-type.lua +2 -2
  133. package/engine/object-data/entry/destructible-type.d.ts +1 -2
  134. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  135. package/engine/object-data/entry/item-type.d.ts +15 -2
  136. package/engine/object-data/entry/item-type.lua +93 -2
  137. package/engine/object-data/entry/lightning-type.d.ts +1 -2
  138. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  139. package/engine/object-data/entry/sound-preset.lua +140 -0
  140. package/engine/object-data/entry/unit-type.d.ts +29 -3
  141. package/engine/object-data/entry/unit-type.lua +284 -57
  142. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  143. package/engine/object-data/entry/upgrade.d.ts +1 -2
  144. package/engine/object-data/entry/upgrade.lua +4 -4
  145. package/engine/object-data/entry.d.ts +18 -17
  146. package/engine/object-data/entry.lua +60 -32
  147. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  148. package/engine/object-field/ability.d.ts +26 -3
  149. package/engine/object-field/ability.lua +54 -1
  150. package/engine/object-field.d.ts +2 -3
  151. package/engine/object-field.lua +4 -0
  152. package/engine/random.d.ts +1 -0
  153. package/engine/random.lua +9 -0
  154. package/engine/standard/entries/sound-preset.d.ts +10 -0
  155. package/engine/standard/entries/sound-preset.lua +10 -0
  156. package/engine/standard/entries/unit-type.d.ts +39 -1
  157. package/engine/standard/entries/unit-type.lua +39 -1
  158. package/engine/standard/fields/ability.d.ts +3 -1
  159. package/engine/standard/fields/ability.lua +3 -1
  160. package/engine/unit.d.ts +3 -0
  161. package/engine/unit.lua +12 -2
  162. package/event.d.ts +2 -3
  163. package/event.lua +9 -5
  164. package/index.d.ts +1 -0
  165. package/index.lua +1 -0
  166. package/lualib_bundle.lua +146 -42
  167. package/math/vec2.d.ts +2 -9
  168. package/math.d.ts +0 -2
  169. package/net/socket.d.ts +7 -1
  170. package/net/socket.lua +45 -4
  171. package/network.d.ts +1 -0
  172. package/network.lua +3 -2
  173. package/objutil/ability.d.ts +0 -1
  174. package/objutil/buff.d.ts +0 -1
  175. package/objutil/buff.lua +1 -1
  176. package/objutil/object.d.ts +0 -1
  177. package/objutil/unit.d.ts +0 -1
  178. package/objutil/unit.lua +8 -0
  179. package/package.json +13 -13
  180. package/patch-lua.d.ts +0 -0
  181. package/patch-lua.lua +10 -0
  182. package/property.d.ts +55 -0
  183. package/property.lua +374 -0
  184. package/string.d.ts +16 -0
  185. package/string.lua +5 -0
  186. package/util/stream.d.ts +0 -1
  187. package/utility/arrays.d.ts +11 -5
  188. package/utility/arrays.lua +34 -3
  189. package/utility/bit-set.d.ts +0 -2
  190. package/utility/lazy.d.ts +2 -0
  191. package/utility/lazy.lua +14 -0
  192. package/utility/linked-set.d.ts +11 -3
  193. package/utility/linked-set.lua +5 -2
  194. package/utility/lua-maps.d.ts +1 -2
  195. package/utility/lua-sets.d.ts +1 -2
  196. package/utility/reflection.lua +11 -7
  197. package/utility/types.d.ts +1 -0
  198. package/core/mapbounds.d.ts +0 -8
  199. package/core/mapbounds.lua +0 -12
@@ -19,6 +19,8 @@ local ____entry = require("engine.object-data.entry")
19
19
  local ObjectDataEntry = ____entry.ObjectDataEntry
20
20
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
21
21
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
22
+ local ____config = require("config")
23
+ local WarscriptConfig = ____config.WarscriptConfig
22
24
  local getOrCreateUnitTypeWeapons
23
25
  ____exports.UnitTypeWeapon = __TS__Class()
24
26
  local UnitTypeWeapon = ____exports.UnitTypeWeapon
@@ -73,21 +75,21 @@ __TS__SetDescriptor(
73
75
  )
74
76
  __TS__SetDescriptor(
75
77
  UnitTypeWeapon.prototype,
76
- "impactDelay",
78
+ "cooldown",
77
79
  {
78
80
  get = function(self)
79
81
  local ____self_4 = self.unitType
80
82
  return ____self_4.getNumberField(
81
83
  ____self_4,
82
- "udp" .. tostring(self.index)
84
+ ("ua" .. tostring(self.index)) .. "c"
83
85
  )
84
86
  end,
85
- set = function(self, impactDelay)
87
+ set = function(self, cooldown)
86
88
  local ____self_5 = self.unitType
87
89
  ____self_5.setNumberField(
88
90
  ____self_5,
89
- "udp" .. tostring(self.index),
90
- impactDelay
91
+ ("ua" .. tostring(self.index)) .. "c",
92
+ cooldown
91
93
  )
92
94
  end
93
95
  },
@@ -95,21 +97,42 @@ __TS__SetDescriptor(
95
97
  )
96
98
  __TS__SetDescriptor(
97
99
  UnitTypeWeapon.prototype,
98
- "missileModelPath",
100
+ "damage",
101
+ {
102
+ get = function(self)
103
+ local minimumDamage = self.damageBase + self.damageDiceCount
104
+ local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
105
+ return {minimumDamage, maximumDamage}
106
+ end,
107
+ set = function(self, ____bindingPattern0)
108
+ local maximumDamage
109
+ local minimumDamage
110
+ minimumDamage = ____bindingPattern0[1]
111
+ maximumDamage = ____bindingPattern0[2]
112
+ self.damageBase = minimumDamage - 1
113
+ self.damageDiceCount = 1
114
+ self.damageDiceSideCount = maximumDamage - minimumDamage + 1
115
+ end
116
+ },
117
+ true
118
+ )
119
+ __TS__SetDescriptor(
120
+ UnitTypeWeapon.prototype,
121
+ "damageBase",
99
122
  {
100
123
  get = function(self)
101
124
  local ____self_6 = self.unitType
102
- return ____self_6.getStringField(
125
+ return ____self_6.getNumberField(
103
126
  ____self_6,
104
- ("ua" .. tostring(self.index)) .. "m"
127
+ ("ua" .. tostring(self.index)) .. "b"
105
128
  )
106
129
  end,
107
- set = function(self, missileModelPath)
130
+ set = function(self, damageBase)
108
131
  local ____self_7 = self.unitType
109
- ____self_7.setStringField(
132
+ ____self_7.setNumberField(
110
133
  ____self_7,
111
- ("ua" .. tostring(self.index)) .. "m",
112
- missileModelPath
134
+ ("ua" .. tostring(self.index)) .. "b",
135
+ damageBase
113
136
  )
114
137
  end
115
138
  },
@@ -117,19 +140,107 @@ __TS__SetDescriptor(
117
140
  )
118
141
  __TS__SetDescriptor(
119
142
  UnitTypeWeapon.prototype,
120
- "range",
143
+ "damageDiceCount",
121
144
  {
122
145
  get = function(self)
123
146
  local ____self_8 = self.unitType
124
147
  return ____self_8.getNumberField(
125
148
  ____self_8,
126
- ("ua" .. tostring(self.index)) .. "r"
149
+ ("ua" .. tostring(self.index)) .. "d"
127
150
  )
128
151
  end,
129
- set = function(self, range)
152
+ set = function(self, damageDiceNumber)
130
153
  local ____self_9 = self.unitType
131
154
  ____self_9.setNumberField(
132
155
  ____self_9,
156
+ ("ua" .. tostring(self.index)) .. "d",
157
+ damageDiceNumber
158
+ )
159
+ end
160
+ },
161
+ true
162
+ )
163
+ __TS__SetDescriptor(
164
+ UnitTypeWeapon.prototype,
165
+ "damageDiceSideCount",
166
+ {
167
+ get = function(self)
168
+ local ____self_10 = self.unitType
169
+ return ____self_10.getNumberField(
170
+ ____self_10,
171
+ ("ua" .. tostring(self.index)) .. "s"
172
+ )
173
+ end,
174
+ set = function(self, damageDiceSideCount)
175
+ local ____self_11 = self.unitType
176
+ ____self_11.setNumberField(
177
+ ____self_11,
178
+ ("ua" .. tostring(self.index)) .. "s",
179
+ damageDiceSideCount
180
+ )
181
+ end
182
+ },
183
+ true
184
+ )
185
+ __TS__SetDescriptor(
186
+ UnitTypeWeapon.prototype,
187
+ "impactDelay",
188
+ {
189
+ get = function(self)
190
+ local ____self_12 = self.unitType
191
+ return ____self_12.getNumberField(
192
+ ____self_12,
193
+ "udp" .. tostring(self.index)
194
+ )
195
+ end,
196
+ set = function(self, impactDelay)
197
+ local ____self_13 = self.unitType
198
+ ____self_13.setNumberField(
199
+ ____self_13,
200
+ "udp" .. tostring(self.index),
201
+ impactDelay
202
+ )
203
+ end
204
+ },
205
+ true
206
+ )
207
+ __TS__SetDescriptor(
208
+ UnitTypeWeapon.prototype,
209
+ "missileModelPath",
210
+ {
211
+ get = function(self)
212
+ local ____self_14 = self.unitType
213
+ return ____self_14.getStringField(
214
+ ____self_14,
215
+ ("ua" .. tostring(self.index)) .. "m"
216
+ )
217
+ end,
218
+ set = function(self, missileModelPath)
219
+ local ____self_15 = self.unitType
220
+ ____self_15.setStringField(
221
+ ____self_15,
222
+ ("ua" .. tostring(self.index)) .. "m",
223
+ missileModelPath
224
+ )
225
+ end
226
+ },
227
+ true
228
+ )
229
+ __TS__SetDescriptor(
230
+ UnitTypeWeapon.prototype,
231
+ "range",
232
+ {
233
+ get = function(self)
234
+ local ____self_16 = self.unitType
235
+ return ____self_16.getNumberField(
236
+ ____self_16,
237
+ ("ua" .. tostring(self.index)) .. "r"
238
+ )
239
+ end,
240
+ set = function(self, range)
241
+ local ____self_17 = self.unitType
242
+ ____self_17.setNumberField(
243
+ ____self_17,
133
244
  ("ua" .. tostring(self.index)) .. "r",
134
245
  range
135
246
  )
@@ -142,16 +253,16 @@ __TS__SetDescriptor(
142
253
  "soundType",
143
254
  {
144
255
  get = function(self)
145
- local ____self_10 = self.unitType
146
- return ____self_10.getStringField(
147
- ____self_10,
256
+ local ____self_18 = self.unitType
257
+ return ____self_18.getStringField(
258
+ ____self_18,
148
259
  "ucs" .. tostring(self.index)
149
260
  )
150
261
  end,
151
262
  set = function(self, soundType)
152
- local ____self_11 = self.unitType
153
- ____self_11.setStringField(
154
- ____self_11,
263
+ local ____self_19 = self.unitType
264
+ ____self_19.setStringField(
265
+ ____self_19,
155
266
  "ucs" .. tostring(self.index),
156
267
  soundType
157
268
  )
@@ -164,16 +275,16 @@ __TS__SetDescriptor(
164
275
  "soundTypeSD",
165
276
  {
166
277
  get = function(self)
167
- local ____self_12 = self.unitType
168
- return ____self_12.getStringField(
169
- ____self_12,
278
+ local ____self_20 = self.unitType
279
+ return ____self_20.getStringField(
280
+ ____self_20,
170
281
  ("ucs" .. tostring(self.index)) .. ":sd"
171
282
  )
172
283
  end,
173
284
  set = function(self, soundTypeSD)
174
- local ____self_13 = self.unitType
175
- ____self_13.setStringField(
176
- ____self_13,
285
+ local ____self_21 = self.unitType
286
+ ____self_21.setStringField(
287
+ ____self_21,
177
288
  ("ucs" .. tostring(self.index)) .. ":sd",
178
289
  soundTypeSD
179
290
  )
@@ -186,16 +297,16 @@ __TS__SetDescriptor(
186
297
  "soundTypeHD",
187
298
  {
188
299
  get = function(self)
189
- local ____self_14 = self.unitType
190
- return ____self_14.getStringField(
191
- ____self_14,
300
+ local ____self_22 = self.unitType
301
+ return ____self_22.getStringField(
302
+ ____self_22,
192
303
  ("ucs" .. tostring(self.index)) .. ":hd"
193
304
  )
194
305
  end,
195
306
  set = function(self, soundTypeHD)
196
- local ____self_15 = self.unitType
197
- ____self_15.setStringField(
198
- ____self_15,
307
+ local ____self_23 = self.unitType
308
+ ____self_23.setStringField(
309
+ ____self_23,
199
310
  ("ucs" .. tostring(self.index)) .. ":hd",
200
311
  soundTypeHD
201
312
  )
@@ -236,10 +347,10 @@ __TS__SetDescriptor(
236
347
  "abilityTypeIds",
237
348
  {
238
349
  get = function(self)
239
- return self:getObjectDataEntryIdsField("uabi")
350
+ return self:getObjectDataEntryNumericIdsField("uabi")
240
351
  end,
241
352
  set = function(self, abilityTypeIds)
242
- self:setObjectDataEntryIdsField("uabi", abilityTypeIds)
353
+ self:setObjectDataEntryNumericIdsField("uabi", abilityTypeIds)
243
354
  end
244
355
  },
245
356
  true
@@ -249,10 +360,10 @@ __TS__SetDescriptor(
249
360
  "defaultActiveAbilityTypeId",
250
361
  {
251
362
  get = function(self)
252
- return self:getObjectDataEntryIdsField("udaa")[1]
363
+ return self:getObjectDataEntryNumericIdsField("udaa")[1]
253
364
  end,
254
365
  set = function(self, abilityTypeId)
255
- self:setObjectDataEntryIdsField(
366
+ self:setObjectDataEntryNumericIdsField(
256
367
  "udaa",
257
368
  arrayOfNotNull(abilityTypeId)
258
369
  )
@@ -698,6 +809,9 @@ __TS__SetDescriptor(
698
809
  end,
699
810
  set = function(self, modelPath)
700
811
  self:setStringField("umdl", modelPath)
812
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
813
+ self:setStringField("upor", "")
814
+ end
701
815
  end
702
816
  },
703
817
  true
@@ -711,6 +825,9 @@ __TS__SetDescriptor(
711
825
  end,
712
826
  set = function(self, modelPathSD)
713
827
  self:setStringField("umdl:sd", modelPathSD)
828
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
829
+ self:setStringField("upor:sd", "")
830
+ end
714
831
  end
715
832
  },
716
833
  true
@@ -724,6 +841,51 @@ __TS__SetDescriptor(
724
841
  end,
725
842
  set = function(self, modelPathHD)
726
843
  self:setStringField("umdl:hd", modelPathHD)
844
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
845
+ self:setStringField("upor:hd", "")
846
+ end
847
+ end
848
+ },
849
+ true
850
+ )
851
+ __TS__SetDescriptor(
852
+ UnitType.prototype,
853
+ "portraitModelPath",
854
+ {
855
+ get = function(self)
856
+ return self:getStringField("upor")
857
+ end,
858
+ set = function(self, portraitModelPath)
859
+ self:setStringField("upor", portraitModelPath)
860
+ self.isPortraitModelPathSet = true
861
+ end
862
+ },
863
+ true
864
+ )
865
+ __TS__SetDescriptor(
866
+ UnitType.prototype,
867
+ "portraitModelPathSD",
868
+ {
869
+ get = function(self)
870
+ return self:getStringField("upor:sd")
871
+ end,
872
+ set = function(self, portraitModelPathSD)
873
+ self:setStringField("upor:sd", portraitModelPathSD)
874
+ self.isPortraitModelPathSet = true
875
+ end
876
+ },
877
+ true
878
+ )
879
+ __TS__SetDescriptor(
880
+ UnitType.prototype,
881
+ "portraitModelPathHD",
882
+ {
883
+ get = function(self)
884
+ return self:getStringField("upor:hd")
885
+ end,
886
+ set = function(self, portraitModelPathHD)
887
+ self:setStringField("upor:hd", portraitModelPathHD)
888
+ self.isPortraitModelPathSet = true
727
889
  end
728
890
  },
729
891
  true
@@ -1087,25 +1249,25 @@ __TS__SetDescriptor(
1087
1249
  )
1088
1250
  __TS__SetDescriptor(
1089
1251
  UnitType.prototype,
1090
- "firstWeapon",
1252
+ "weapons",
1091
1253
  {get = function(self)
1092
- return self.weapons[1]
1254
+ return getOrCreateUnitTypeWeapons(self)
1093
1255
  end},
1094
1256
  true
1095
1257
  )
1096
1258
  __TS__SetDescriptor(
1097
1259
  UnitType.prototype,
1098
- "secondWeapon",
1260
+ "firstWeapon",
1099
1261
  {get = function(self)
1100
- return self.weapons[2]
1262
+ return self.weapons[1]
1101
1263
  end},
1102
1264
  true
1103
1265
  )
1104
1266
  __TS__SetDescriptor(
1105
1267
  UnitType.prototype,
1106
- "weapons",
1268
+ "secondWeapon",
1107
1269
  {get = function(self)
1108
- return getOrCreateUnitTypeWeapons(self)
1270
+ return self.weapons[2]
1109
1271
  end},
1110
1272
  true
1111
1273
  )
@@ -1291,6 +1453,71 @@ __TS__SetDescriptor(
1291
1453
  },
1292
1454
  true
1293
1455
  )
1456
+ __TS__SetDescriptor(
1457
+ UnitType.prototype,
1458
+ "healthRegenerationRate",
1459
+ {
1460
+ get = function(self)
1461
+ return self:getNumberField("uhpr")
1462
+ end,
1463
+ set = function(self, healthRegenerationRate)
1464
+ self:setNumberField("uhpr", healthRegenerationRate)
1465
+ end
1466
+ },
1467
+ true
1468
+ )
1469
+ __TS__SetDescriptor(
1470
+ UnitType.prototype,
1471
+ "manaRegenerationRate",
1472
+ {
1473
+ get = function(self)
1474
+ return self:getNumberField("umpr")
1475
+ end,
1476
+ set = function(self, manaRegenerationRate)
1477
+ self:setNumberField("umpr", manaRegenerationRate)
1478
+ end
1479
+ },
1480
+ true
1481
+ )
1482
+ __TS__SetDescriptor(
1483
+ UnitType.prototype,
1484
+ "maximumHealth",
1485
+ {
1486
+ get = function(self)
1487
+ return self:getNumberField("uhpm")
1488
+ end,
1489
+ set = function(self, maximumHealth)
1490
+ self:setNumberField("uhpm", maximumHealth)
1491
+ end
1492
+ },
1493
+ true
1494
+ )
1495
+ __TS__SetDescriptor(
1496
+ UnitType.prototype,
1497
+ "maximumMana",
1498
+ {
1499
+ get = function(self)
1500
+ return self:getNumberField("umpm")
1501
+ end,
1502
+ set = function(self, maximumMana)
1503
+ self:setNumberField("umpm", maximumMana)
1504
+ end
1505
+ },
1506
+ true
1507
+ )
1508
+ __TS__SetDescriptor(
1509
+ UnitType.prototype,
1510
+ "initialMana",
1511
+ {
1512
+ get = function(self)
1513
+ return self:getNumberField("umpi")
1514
+ end,
1515
+ set = function(self, initialMana)
1516
+ self:setNumberField("umpi", initialMana)
1517
+ end
1518
+ },
1519
+ true
1520
+ )
1294
1521
  __TS__SetDescriptor(
1295
1522
  UnitType.prototype,
1296
1523
  "isStructure",
@@ -1322,10 +1549,10 @@ __TS__SetDescriptor(
1322
1549
  "affectingUpgradeIds",
1323
1550
  {
1324
1551
  get = function(self)
1325
- return self:getObjectDataEntryIdsField("upgr")
1552
+ return self:getObjectDataEntryNumericIdsField("upgr")
1326
1553
  end,
1327
1554
  set = function(self, affectingUpgradeIds)
1328
- self:setObjectDataEntryIdsField("upgr", affectingUpgradeIds)
1555
+ self:setObjectDataEntryNumericIdsField("upgr", affectingUpgradeIds)
1329
1556
  end
1330
1557
  },
1331
1558
  true
@@ -1385,11 +1612,11 @@ __TS__SetDescriptor(
1385
1612
  implementReadonlyNumberIndexSupplier(
1386
1613
  ____exports.UnitType,
1387
1614
  function(id)
1388
- local ____class_16 = __TS__Class()
1389
- ____class_16.name = ____class_16.name
1390
- __TS__ClassExtends(____class_16, ____exports.UnitType)
1391
- ____class_16.BASE_ID = id
1392
- return ____class_16
1615
+ local ____class_24 = __TS__Class()
1616
+ ____class_24.name = ____class_24.name
1617
+ __TS__ClassExtends(____class_24, ____exports.UnitType)
1618
+ ____class_24.BASE_ID = id
1619
+ return ____class_24
1393
1620
  end
1394
1621
  )
1395
1622
  ____exports.HeroUnitType = __TS__Class()
@@ -1408,10 +1635,10 @@ __TS__SetDescriptor(
1408
1635
  "heroAbilityTypeIds",
1409
1636
  {
1410
1637
  get = function(self)
1411
- return self:getObjectDataEntryIdsField("uhab")
1638
+ return self:getObjectDataEntryNumericIdsField("uhab")
1412
1639
  end,
1413
1640
  set = function(self, heroAbilityTypeIds)
1414
- self:setObjectDataEntryIdsField("uhab", heroAbilityTypeIds)
1641
+ self:setObjectDataEntryNumericIdsField("uhab", heroAbilityTypeIds)
1415
1642
  end
1416
1643
  },
1417
1644
  true
@@ -1450,11 +1677,11 @@ __TS__SetDescriptor(
1450
1677
  implementReadonlyNumberIndexSupplier(
1451
1678
  ____exports.HeroUnitType,
1452
1679
  function(id)
1453
- local ____class_17 = __TS__Class()
1454
- ____class_17.name = ____class_17.name
1455
- __TS__ClassExtends(____class_17, ____exports.HeroUnitType)
1456
- ____class_17.BASE_ID = id
1457
- return ____class_17
1680
+ local ____class_25 = __TS__Class()
1681
+ ____class_25.name = ____class_25.name
1682
+ __TS__ClassExtends(____class_25, ____exports.HeroUnitType)
1683
+ ____class_25.BASE_ID = id
1684
+ return ____class_25
1458
1685
  end
1459
1686
  )
1460
1687
  return ____exports
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { Upgrade, UpgradeId } from "../upgrade";
4
3
  export declare class BlankUpgrade extends Upgrade {
@@ -1,10 +1,9 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { TupleOf } from "../../../utility/types";
4
3
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
5
4
  import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
6
5
  import { AbilityTypeId } from "./ability-type";
7
- export type UpgradeId = ObjectDataEntryId & {
6
+ export type UpgradeId = ObjectDataEntryId & number & {
8
7
  readonly __upgradeId: unique symbol;
9
8
  };
10
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,8 +1,7 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset";
4
3
  import { MutableKeys } from "../../utility/types";
5
- export type ObjectDataEntryId = number & {
4
+ export type ObjectDataEntryId = (number | string) & {
6
5
  readonly __objectDataEntryId: unique symbol;
7
6
  };
8
7
  export type ObjectDataEntryIdType<T extends ObjectDataEntry> = T extends ObjectDataEntry<infer Id> ? Id : never;
@@ -10,8 +9,8 @@ export type ObjectDataEntryConstructor<T extends ObjectDataEntry> = OmitConstruc
10
9
  export type ObjectDataEntryAbstractConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (abstract new (object: WarObject) => T);
11
10
  export type ObjectDataEntryProperties<T extends ObjectDataEntry> = Partial<T[MutableKeys<T>]>;
12
11
  export type ObjectDataEntryLevelFieldValueSupplier<ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType> = ValueType | readonly ValueType[] | ((level: number, currentValue: InputValueType) => ValueType);
13
- export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | Record<string, any> | undefined, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType;
14
- export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | Record<string, any> | undefined, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S, S>, level: number, currentValue: S) => S;
12
+ export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType;
13
+ export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | undefined | Record<string, any>, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S>, level: number, currentValue: S) => S;
15
14
  export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = ObjectDataEntryId> {
16
15
  protected readonly object: WarObject;
17
16
  static readonly BASE_ID: ObjectDataEntryId;
@@ -19,14 +18,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
19
18
  private readonly levelFieldParametersByField;
20
19
  private readonly maxAffectedLevelByField;
21
20
  private _isInternal;
21
+ private get type();
22
22
  get isInternal(): boolean;
23
- protected static generateId(): number;
23
+ static get idType(): "number" | "string";
24
+ protected static generateId(): number | string;
24
25
  protected static getObjectData(map: WarMap): WarObjects;
25
- static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): ObjectDataEntryIdType<T>[];
26
- static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
27
- 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[];
28
29
  static getAll<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>): T[];
29
- 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;
30
31
  constructor(object: WarObject);
31
32
  get id(): Id;
32
33
  get baseId(): Id;
@@ -43,8 +44,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
43
44
  protected setNumberField(field: string, value: number): void;
44
45
  protected getStringField(field: string): string;
45
46
  protected setStringField(field: string, value: string): void;
46
- protected getObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string): Id;
47
- 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;
48
49
  protected getAttachmentPresetField(modelPathField: string, nodeFQNField: string): AttachmentPreset | undefined;
49
50
  protected setAttachmentPresetField(modelPathField: string, nodeFQNField: string, attachmentPreset: AttachmentPresetInput | undefined): void;
50
51
  protected getBooleansField(field: string): boolean[];
@@ -53,8 +54,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
53
54
  protected setNumbersField(field: string, values: number[]): void;
54
55
  protected getStringsField(field: string): string[];
55
56
  protected setStringsField(field: string, values: string[]): void;
56
- protected getObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string): Id[];
57
- 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;
58
59
  protected getAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[]): AttachmentPreset[];
59
60
  protected setAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[], lengthField: string, attachmentPresets: AttachmentPresetInput[]): void;
60
61
  protected setFlagLevelFieldValue(fieldId: string, flag: 1 | 2 | 4 | 8 | 16, supplier: ObjectDataEntryLevelFieldValueSupplier<boolean>): void;
@@ -65,16 +66,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
65
66
  protected setNumberLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number>): void;
66
67
  protected getStringLevelField(field: string): string[];
67
68
  protected setStringLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string>): void;
68
- protected getObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string): Id[];
69
- 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;
70
71
  protected getBooleansLevelField(field: string): boolean[][];
71
72
  protected setBooleansLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<boolean[]>): void;
72
73
  protected getNumbersLevelField(field: string): number[][];
73
74
  protected setNumbersLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number[]>): void;
74
75
  protected getStringsLevelField(field: string): string[][];
75
76
  protected setStringsLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string[]>): void;
76
- protected getObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string): T[][];
77
- 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;
78
79
  private getLevelField;
79
80
  private setLevelField;
80
81
  }