warscript 0.0.1-dev.ee2345e → 0.0.1-dev.f967846

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 (117) hide show
  1. package/attributes.d.ts +0 -1
  2. package/binaryreader.d.ts +1 -0
  3. package/binaryreader.lua +3 -0
  4. package/core/types/frame.d.ts +8 -1
  5. package/core/types/frame.lua +93 -1
  6. package/core/types/group.d.ts +0 -1
  7. package/core/types/image.d.ts +0 -1
  8. package/core/types/missile.d.ts +2 -2
  9. package/core/types/missile.lua +8 -2
  10. package/core/types/unit.lua +8 -0
  11. package/core/util.d.ts +1 -1
  12. package/core/util.lua +6 -0
  13. package/decl/index.d.ts +1 -0
  14. package/engine/ability.d.ts +1 -1
  15. package/engine/behavior.d.ts +10 -10
  16. package/engine/behavior.lua +6 -6
  17. package/engine/behaviour/ability/apply-buff.d.ts +3 -5
  18. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  19. package/engine/behaviour/ability/damage.d.ts +33 -11
  20. package/engine/behaviour/ability/damage.lua +89 -31
  21. package/engine/behaviour/ability/heal.d.ts +33 -6
  22. package/engine/behaviour/ability/heal.lua +89 -10
  23. package/engine/behaviour/ability/instant-impact.lua +4 -0
  24. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  25. package/engine/behaviour/ability/restore-mana.lua +29 -0
  26. package/engine/behaviour/ability.d.ts +8 -1
  27. package/engine/behaviour/ability.lua +62 -0
  28. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  29. package/engine/behaviour/unit.d.ts +8 -2
  30. package/engine/behaviour/unit.lua +27 -0
  31. package/engine/buff.d.ts +62 -20
  32. package/engine/buff.lua +247 -72
  33. package/engine/game-map.d.ts +7 -0
  34. package/engine/game-map.lua +32 -0
  35. package/engine/internal/ability.d.ts +3 -11
  36. package/engine/internal/ability.lua +9 -78
  37. package/engine/internal/item+owner.lua +2 -2
  38. package/engine/internal/unit/bonus.d.ts +9 -8
  39. package/engine/internal/unit/bonus.lua +6 -1
  40. package/engine/internal/unit/item.d.ts +24 -0
  41. package/engine/internal/unit/item.lua +84 -0
  42. package/engine/internal/unit/main-selected.d.ts +7 -0
  43. package/engine/internal/unit/main-selected.lua +40 -0
  44. package/engine/internal/unit+ability.lua +2 -2
  45. package/engine/internal/unit+transport.lua +4 -10
  46. package/engine/internal/unit-missile-launch.lua +25 -6
  47. package/engine/internal/unit.d.ts +57 -16
  48. package/engine/internal/unit.lua +317 -111
  49. package/engine/local-client.d.ts +7 -2
  50. package/engine/local-client.lua +82 -0
  51. package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
  52. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  53. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  54. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  55. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  56. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  57. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  58. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  59. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  60. package/engine/object-data/entry/ability-type.d.ts +0 -1
  61. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  62. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  63. package/engine/object-data/entry/buff-type.d.ts +0 -1
  64. package/engine/object-data/entry/destructible-type.d.ts +0 -1
  65. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  66. package/engine/object-data/entry/item-type.d.ts +12 -1
  67. package/engine/object-data/entry/item-type.lua +78 -0
  68. package/engine/object-data/entry/lightning-type.d.ts +0 -1
  69. package/engine/object-data/entry/unit-type.d.ts +37 -2
  70. package/engine/object-data/entry/unit-type.lua +333 -49
  71. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  72. package/engine/object-data/entry/upgrade.d.ts +0 -1
  73. package/engine/object-data/entry.d.ts +2 -3
  74. package/engine/object-field/ability.d.ts +18 -1
  75. package/engine/object-field/ability.lua +51 -1
  76. package/engine/object-field.d.ts +0 -1
  77. package/engine/random.d.ts +1 -0
  78. package/engine/random.lua +9 -0
  79. package/engine/standard/entries/unit-type.d.ts +39 -1
  80. package/engine/standard/entries/unit-type.lua +39 -1
  81. package/engine/standard/fields/ability.d.ts +1 -1
  82. package/engine/standard/fields/ability.lua +1 -1
  83. package/engine/unit.d.ts +2 -0
  84. package/engine/unit.lua +11 -2
  85. package/event.d.ts +2 -3
  86. package/event.lua +9 -5
  87. package/index.d.ts +1 -0
  88. package/index.lua +1 -0
  89. package/lualib_bundle.lua +146 -42
  90. package/math/vec2.d.ts +2 -9
  91. package/math.d.ts +0 -2
  92. package/net/socket.d.ts +7 -1
  93. package/net/socket.lua +45 -4
  94. package/network.d.ts +1 -0
  95. package/network.lua +3 -2
  96. package/objutil/ability.d.ts +0 -1
  97. package/objutil/buff.d.ts +0 -1
  98. package/objutil/buff.lua +1 -1
  99. package/objutil/object.d.ts +0 -1
  100. package/objutil/unit.d.ts +0 -1
  101. package/package.json +13 -14
  102. package/patch-lua.d.ts +0 -0
  103. package/patch-lua.lua +10 -0
  104. package/property.d.ts +55 -0
  105. package/property.lua +374 -0
  106. package/string.d.ts +30 -0
  107. package/string.lua +14 -0
  108. package/util/stream.d.ts +0 -1
  109. package/utility/arrays.d.ts +3 -4
  110. package/utility/bit-set.d.ts +0 -2
  111. package/utility/linked-set.d.ts +11 -3
  112. package/utility/linked-set.lua +5 -2
  113. package/utility/lua-maps.d.ts +1 -2
  114. package/utility/lua-sets.d.ts +1 -2
  115. package/utility/types.d.ts +1 -0
  116. package/core/mapbounds.d.ts +0 -8
  117. package/core/mapbounds.lua +0 -12
@@ -3,6 +3,7 @@ local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
4
4
  local __TS__New = ____lualib.__TS__New
5
5
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
6
+ local __TS__ArrayIsArray = ____lualib.__TS__ArrayIsArray
6
7
  local ____exports = {}
7
8
  local ____arrays = require("utility.arrays")
8
9
  local arrayOfNotNull = ____arrays.arrayOfNotNull
@@ -72,21 +73,21 @@ __TS__SetDescriptor(
72
73
  )
73
74
  __TS__SetDescriptor(
74
75
  UnitTypeWeapon.prototype,
75
- "impactDelay",
76
+ "cooldown",
76
77
  {
77
78
  get = function(self)
78
79
  local ____self_4 = self.unitType
79
80
  return ____self_4.getNumberField(
80
81
  ____self_4,
81
- "udp" .. tostring(self.index)
82
+ ("ua" .. tostring(self.index)) .. "c"
82
83
  )
83
84
  end,
84
- set = function(self, impactDelay)
85
+ set = function(self, cooldown)
85
86
  local ____self_5 = self.unitType
86
87
  ____self_5.setNumberField(
87
88
  ____self_5,
88
- "udp" .. tostring(self.index),
89
- impactDelay
89
+ ("ua" .. tostring(self.index)) .. "c",
90
+ cooldown
90
91
  )
91
92
  end
92
93
  },
@@ -94,21 +95,42 @@ __TS__SetDescriptor(
94
95
  )
95
96
  __TS__SetDescriptor(
96
97
  UnitTypeWeapon.prototype,
97
- "missileModelPath",
98
+ "damage",
99
+ {
100
+ get = function(self)
101
+ local minimumDamage = self.damageBase + self.damageDiceCount
102
+ local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
103
+ return {minimumDamage, maximumDamage}
104
+ end,
105
+ set = function(self, ____bindingPattern0)
106
+ local maximumDamage
107
+ local minimumDamage
108
+ minimumDamage = ____bindingPattern0[1]
109
+ maximumDamage = ____bindingPattern0[2]
110
+ self.damageBase = minimumDamage - 1
111
+ self.damageDiceCount = 1
112
+ self.damageDiceSideCount = maximumDamage - minimumDamage + 1
113
+ end
114
+ },
115
+ true
116
+ )
117
+ __TS__SetDescriptor(
118
+ UnitTypeWeapon.prototype,
119
+ "damageBase",
98
120
  {
99
121
  get = function(self)
100
122
  local ____self_6 = self.unitType
101
- return ____self_6.getStringField(
123
+ return ____self_6.getNumberField(
102
124
  ____self_6,
103
- ("ua" .. tostring(self.index)) .. "m"
125
+ ("ua" .. tostring(self.index)) .. "b"
104
126
  )
105
127
  end,
106
- set = function(self, missileModelPath)
128
+ set = function(self, damageBase)
107
129
  local ____self_7 = self.unitType
108
- ____self_7.setStringField(
130
+ ____self_7.setNumberField(
109
131
  ____self_7,
110
- ("ua" .. tostring(self.index)) .. "m",
111
- missileModelPath
132
+ ("ua" .. tostring(self.index)) .. "b",
133
+ damageBase
112
134
  )
113
135
  end
114
136
  },
@@ -116,19 +138,107 @@ __TS__SetDescriptor(
116
138
  )
117
139
  __TS__SetDescriptor(
118
140
  UnitTypeWeapon.prototype,
119
- "range",
141
+ "damageDiceCount",
120
142
  {
121
143
  get = function(self)
122
144
  local ____self_8 = self.unitType
123
145
  return ____self_8.getNumberField(
124
146
  ____self_8,
125
- ("ua" .. tostring(self.index)) .. "r"
147
+ ("ua" .. tostring(self.index)) .. "d"
126
148
  )
127
149
  end,
128
- set = function(self, range)
150
+ set = function(self, damageDiceNumber)
129
151
  local ____self_9 = self.unitType
130
152
  ____self_9.setNumberField(
131
153
  ____self_9,
154
+ ("ua" .. tostring(self.index)) .. "d",
155
+ damageDiceNumber
156
+ )
157
+ end
158
+ },
159
+ true
160
+ )
161
+ __TS__SetDescriptor(
162
+ UnitTypeWeapon.prototype,
163
+ "damageDiceSideCount",
164
+ {
165
+ get = function(self)
166
+ local ____self_10 = self.unitType
167
+ return ____self_10.getNumberField(
168
+ ____self_10,
169
+ ("ua" .. tostring(self.index)) .. "s"
170
+ )
171
+ end,
172
+ set = function(self, damageDiceSideCount)
173
+ local ____self_11 = self.unitType
174
+ ____self_11.setNumberField(
175
+ ____self_11,
176
+ ("ua" .. tostring(self.index)) .. "s",
177
+ damageDiceSideCount
178
+ )
179
+ end
180
+ },
181
+ true
182
+ )
183
+ __TS__SetDescriptor(
184
+ UnitTypeWeapon.prototype,
185
+ "impactDelay",
186
+ {
187
+ get = function(self)
188
+ local ____self_12 = self.unitType
189
+ return ____self_12.getNumberField(
190
+ ____self_12,
191
+ "udp" .. tostring(self.index)
192
+ )
193
+ end,
194
+ set = function(self, impactDelay)
195
+ local ____self_13 = self.unitType
196
+ ____self_13.setNumberField(
197
+ ____self_13,
198
+ "udp" .. tostring(self.index),
199
+ impactDelay
200
+ )
201
+ end
202
+ },
203
+ true
204
+ )
205
+ __TS__SetDescriptor(
206
+ UnitTypeWeapon.prototype,
207
+ "missileModelPath",
208
+ {
209
+ get = function(self)
210
+ local ____self_14 = self.unitType
211
+ return ____self_14.getStringField(
212
+ ____self_14,
213
+ ("ua" .. tostring(self.index)) .. "m"
214
+ )
215
+ end,
216
+ set = function(self, missileModelPath)
217
+ local ____self_15 = self.unitType
218
+ ____self_15.setStringField(
219
+ ____self_15,
220
+ ("ua" .. tostring(self.index)) .. "m",
221
+ missileModelPath
222
+ )
223
+ end
224
+ },
225
+ true
226
+ )
227
+ __TS__SetDescriptor(
228
+ UnitTypeWeapon.prototype,
229
+ "range",
230
+ {
231
+ get = function(self)
232
+ local ____self_16 = self.unitType
233
+ return ____self_16.getNumberField(
234
+ ____self_16,
235
+ ("ua" .. tostring(self.index)) .. "r"
236
+ )
237
+ end,
238
+ set = function(self, range)
239
+ local ____self_17 = self.unitType
240
+ ____self_17.setNumberField(
241
+ ____self_17,
132
242
  ("ua" .. tostring(self.index)) .. "r",
133
243
  range
134
244
  )
@@ -141,16 +251,16 @@ __TS__SetDescriptor(
141
251
  "soundType",
142
252
  {
143
253
  get = function(self)
144
- local ____self_10 = self.unitType
145
- return ____self_10.getStringField(
146
- ____self_10,
254
+ local ____self_18 = self.unitType
255
+ return ____self_18.getStringField(
256
+ ____self_18,
147
257
  "ucs" .. tostring(self.index)
148
258
  )
149
259
  end,
150
260
  set = function(self, soundType)
151
- local ____self_11 = self.unitType
152
- ____self_11.setStringField(
153
- ____self_11,
261
+ local ____self_19 = self.unitType
262
+ ____self_19.setStringField(
263
+ ____self_19,
154
264
  "ucs" .. tostring(self.index),
155
265
  soundType
156
266
  )
@@ -163,16 +273,16 @@ __TS__SetDescriptor(
163
273
  "soundTypeSD",
164
274
  {
165
275
  get = function(self)
166
- local ____self_12 = self.unitType
167
- return ____self_12.getStringField(
168
- ____self_12,
276
+ local ____self_20 = self.unitType
277
+ return ____self_20.getStringField(
278
+ ____self_20,
169
279
  ("ucs" .. tostring(self.index)) .. ":sd"
170
280
  )
171
281
  end,
172
282
  set = function(self, soundTypeSD)
173
- local ____self_13 = self.unitType
174
- ____self_13.setStringField(
175
- ____self_13,
283
+ local ____self_21 = self.unitType
284
+ ____self_21.setStringField(
285
+ ____self_21,
176
286
  ("ucs" .. tostring(self.index)) .. ":sd",
177
287
  soundTypeSD
178
288
  )
@@ -185,16 +295,16 @@ __TS__SetDescriptor(
185
295
  "soundTypeHD",
186
296
  {
187
297
  get = function(self)
188
- local ____self_14 = self.unitType
189
- return ____self_14.getStringField(
190
- ____self_14,
298
+ local ____self_22 = self.unitType
299
+ return ____self_22.getStringField(
300
+ ____self_22,
191
301
  ("ucs" .. tostring(self.index)) .. ":hd"
192
302
  )
193
303
  end,
194
304
  set = function(self, soundTypeHD)
195
- local ____self_15 = self.unitType
196
- ____self_15.setStringField(
197
- ____self_15,
305
+ local ____self_23 = self.unitType
306
+ ____self_23.setStringField(
307
+ ____self_23,
198
308
  ("ucs" .. tostring(self.index)) .. ":hd",
199
309
  soundTypeHD
200
310
  )
@@ -727,6 +837,45 @@ __TS__SetDescriptor(
727
837
  },
728
838
  true
729
839
  )
840
+ __TS__SetDescriptor(
841
+ UnitType.prototype,
842
+ "runSpeed",
843
+ {
844
+ get = function(self)
845
+ return self:getNumberField("urun")
846
+ end,
847
+ set = function(self, runSpeed)
848
+ self:setNumberField("urun", runSpeed)
849
+ end
850
+ },
851
+ true
852
+ )
853
+ __TS__SetDescriptor(
854
+ UnitType.prototype,
855
+ "runSpeedSD",
856
+ {
857
+ get = function(self)
858
+ return self:getNumberField("urun:sd")
859
+ end,
860
+ set = function(self, runSpeedSD)
861
+ self:setNumberField("urun:sd", runSpeedSD)
862
+ end
863
+ },
864
+ true
865
+ )
866
+ __TS__SetDescriptor(
867
+ UnitType.prototype,
868
+ "runSpeedHD",
869
+ {
870
+ get = function(self)
871
+ return self:getNumberField("urun:hd")
872
+ end,
873
+ set = function(self, runSpeedHD)
874
+ self:setNumberField("urun:hd", runSpeedHD)
875
+ end
876
+ },
877
+ true
878
+ )
730
879
  __TS__SetDescriptor(
731
880
  UnitType.prototype,
732
881
  "selectionCircleScale",
@@ -935,6 +1084,45 @@ __TS__SetDescriptor(
935
1084
  },
936
1085
  true
937
1086
  )
1087
+ __TS__SetDescriptor(
1088
+ UnitType.prototype,
1089
+ "walkSpeed",
1090
+ {
1091
+ get = function(self)
1092
+ return self:getNumberField("uwal")
1093
+ end,
1094
+ set = function(self, walkSpeed)
1095
+ self:setNumberField("uwal", walkSpeed)
1096
+ end
1097
+ },
1098
+ true
1099
+ )
1100
+ __TS__SetDescriptor(
1101
+ UnitType.prototype,
1102
+ "walkSpeedSD",
1103
+ {
1104
+ get = function(self)
1105
+ return self:getNumberField("uwal:sd")
1106
+ end,
1107
+ set = function(self, walkSpeedSD)
1108
+ self:setNumberField("uwal:sd", walkSpeedSD)
1109
+ end
1110
+ },
1111
+ true
1112
+ )
1113
+ __TS__SetDescriptor(
1114
+ UnitType.prototype,
1115
+ "walkSpeedHD",
1116
+ {
1117
+ get = function(self)
1118
+ return self:getNumberField("uwal:hd")
1119
+ end,
1120
+ set = function(self, walkSpeedHD)
1121
+ self:setNumberField("uwal:hd", walkSpeedHD)
1122
+ end
1123
+ },
1124
+ true
1125
+ )
938
1126
  __TS__SetDescriptor(
939
1127
  UnitType.prototype,
940
1128
  "armorSoundType",
@@ -1008,25 +1196,25 @@ __TS__SetDescriptor(
1008
1196
  )
1009
1197
  __TS__SetDescriptor(
1010
1198
  UnitType.prototype,
1011
- "firstWeapon",
1199
+ "weapons",
1012
1200
  {get = function(self)
1013
- return self.weapons[1]
1201
+ return getOrCreateUnitTypeWeapons(self)
1014
1202
  end},
1015
1203
  true
1016
1204
  )
1017
1205
  __TS__SetDescriptor(
1018
1206
  UnitType.prototype,
1019
- "secondWeapon",
1207
+ "firstWeapon",
1020
1208
  {get = function(self)
1021
- return self.weapons[2]
1209
+ return self.weapons[1]
1022
1210
  end},
1023
1211
  true
1024
1212
  )
1025
1213
  __TS__SetDescriptor(
1026
1214
  UnitType.prototype,
1027
- "weapons",
1215
+ "secondWeapon",
1028
1216
  {get = function(self)
1029
- return getOrCreateUnitTypeWeapons(self)
1217
+ return self.weapons[2]
1030
1218
  end},
1031
1219
  true
1032
1220
  )
@@ -1212,6 +1400,71 @@ __TS__SetDescriptor(
1212
1400
  },
1213
1401
  true
1214
1402
  )
1403
+ __TS__SetDescriptor(
1404
+ UnitType.prototype,
1405
+ "healthRegenerationRate",
1406
+ {
1407
+ get = function(self)
1408
+ return self:getNumberField("uhpr")
1409
+ end,
1410
+ set = function(self, healthRegenerationRate)
1411
+ self:setNumberField("uhpr", healthRegenerationRate)
1412
+ end
1413
+ },
1414
+ true
1415
+ )
1416
+ __TS__SetDescriptor(
1417
+ UnitType.prototype,
1418
+ "manaRegenerationRate",
1419
+ {
1420
+ get = function(self)
1421
+ return self:getNumberField("umpr")
1422
+ end,
1423
+ set = function(self, manaRegenerationRate)
1424
+ self:setNumberField("umpr", manaRegenerationRate)
1425
+ end
1426
+ },
1427
+ true
1428
+ )
1429
+ __TS__SetDescriptor(
1430
+ UnitType.prototype,
1431
+ "maximumHealth",
1432
+ {
1433
+ get = function(self)
1434
+ return self:getNumberField("uhpm")
1435
+ end,
1436
+ set = function(self, maximumHealth)
1437
+ self:setNumberField("uhpm", maximumHealth)
1438
+ end
1439
+ },
1440
+ true
1441
+ )
1442
+ __TS__SetDescriptor(
1443
+ UnitType.prototype,
1444
+ "maximumMana",
1445
+ {
1446
+ get = function(self)
1447
+ return self:getNumberField("umpm")
1448
+ end,
1449
+ set = function(self, maximumMana)
1450
+ self:setNumberField("umpm", maximumMana)
1451
+ end
1452
+ },
1453
+ true
1454
+ )
1455
+ __TS__SetDescriptor(
1456
+ UnitType.prototype,
1457
+ "initialMana",
1458
+ {
1459
+ get = function(self)
1460
+ return self:getNumberField("umpi")
1461
+ end,
1462
+ set = function(self, initialMana)
1463
+ self:setNumberField("umpi", initialMana)
1464
+ end
1465
+ },
1466
+ true
1467
+ )
1215
1468
  __TS__SetDescriptor(
1216
1469
  UnitType.prototype,
1217
1470
  "isStructure",
@@ -1306,11 +1559,11 @@ __TS__SetDescriptor(
1306
1559
  implementReadonlyNumberIndexSupplier(
1307
1560
  ____exports.UnitType,
1308
1561
  function(id)
1309
- local ____class_16 = __TS__Class()
1310
- ____class_16.name = ____class_16.name
1311
- __TS__ClassExtends(____class_16, ____exports.UnitType)
1312
- ____class_16.BASE_ID = id
1313
- return ____class_16
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
1314
1567
  end
1315
1568
  )
1316
1569
  ____exports.HeroUnitType = __TS__Class()
@@ -1337,14 +1590,45 @@ __TS__SetDescriptor(
1337
1590
  },
1338
1591
  true
1339
1592
  )
1593
+ __TS__SetDescriptor(
1594
+ HeroUnitType.prototype,
1595
+ "properNames",
1596
+ {
1597
+ get = function(self)
1598
+ return self:getStringsField("upro")
1599
+ end,
1600
+ set = function(self, properNames)
1601
+ if __TS__ArrayIsArray(properNames) then
1602
+ self:setStringsField("upro", properNames)
1603
+ self:setNumberField("upru", #properNames)
1604
+ else
1605
+ self:setStringField("upro", properNames)
1606
+ end
1607
+ end
1608
+ },
1609
+ true
1610
+ )
1611
+ __TS__SetDescriptor(
1612
+ HeroUnitType.prototype,
1613
+ "properNameCount",
1614
+ {
1615
+ get = function(self)
1616
+ return self:getNumberField("upru")
1617
+ end,
1618
+ set = function(self, properNameCount)
1619
+ self:setNumberField("upru", properNameCount)
1620
+ end
1621
+ },
1622
+ true
1623
+ )
1340
1624
  implementReadonlyNumberIndexSupplier(
1341
1625
  ____exports.HeroUnitType,
1342
1626
  function(id)
1343
- local ____class_17 = __TS__Class()
1344
- ____class_17.name = ____class_17.name
1345
- __TS__ClassExtends(____class_17, ____exports.HeroUnitType)
1346
- ____class_17.BASE_ID = id
1347
- return ____class_17
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
1348
1632
  end
1349
1633
  )
1350
1634
  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,4 +1,3 @@
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";
@@ -1,4 +1,3 @@
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";
@@ -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;
@@ -6,6 +6,9 @@ import { ObjectDataEntryId } from "../object-data/entry";
6
6
  import { LightningTypeId } from "../object-data/entry/lightning-type";
7
7
  import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
8
8
  import { UnitTypeId } from "../object-data/entry/unit-type";
9
+ import { BuffResistanceType } from "../object-data/auxiliary/buff-resistance-type";
10
+ import { BuffPolarity } from "../object-data/auxiliary/buff-polarity";
11
+ import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
9
12
  export declare abstract class AbilityField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectField<AbilityType, Ability, ValueType, NativeFieldType> {
10
13
  protected get instanceClass(): typeof Ability;
11
14
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
@@ -107,6 +110,20 @@ export declare class AbilityAbilityTypeIdLevelField extends AbilityObjectDataEnt
107
110
  }
108
111
  export declare class AbilityUnitTypeIdLevelField extends AbilityObjectDataEntryIdLevelField<UnitTypeId> {
109
112
  }
113
+ export declare abstract class AbilityEnumLevelField<T extends number> extends AbilityLevelField<T, T, jabilityintegerlevelfield> {
114
+ protected abstract values: ReadonlyNonEmptyLinkedSet<T>;
115
+ protected get defaultValue(): T;
116
+ protected getNativeFieldById(id: number): jabilityintegerlevelfield;
117
+ protected getNativeFieldValue(instance: Ability, level: number): T;
118
+ protected setNativeFieldValue(instance: Ability, level: number, value: T): boolean;
119
+ static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityBooleanLevelField>;
120
+ }
121
+ export declare class AbilityBuffPolarityLevelField extends AbilityEnumLevelField<BuffPolarity> {
122
+ protected values: ReadonlyNonEmptyLinkedSet<BuffPolarity>;
123
+ }
124
+ export declare class AbilityBuffResistanceTypeLevelField extends AbilityEnumLevelField<BuffResistanceType> {
125
+ protected values: ReadonlyNonEmptyLinkedSet<BuffResistanceType>;
126
+ }
110
127
  export declare class AbilityCombatClassificationsLevelField extends AbilityLevelField<CombatClassifications, CombatClassifications, jabilityintegerlevelfield> {
111
128
  protected get defaultValue(): CombatClassifications;
112
129
  protected getNativeFieldById(id: number): jabilityintegerlevelfield;
@@ -114,4 +131,4 @@ export declare class AbilityCombatClassificationsLevelField extends AbilityLevel
114
131
  protected setNativeFieldValue(instance: Ability, level: number, value: CombatClassifications): boolean;
115
132
  }
116
133
  export type AbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType> | ((ability: Ability) => ValueType);
117
- export declare const resolveCurrentAbilityDependentValue: <ValueType extends string | number | boolean>(ability: Ability, value: AbilityDependentValue<ValueType>) => ValueType;
134
+ export declare const resolveCurrentAbilityDependentValue: <ValueType extends boolean | number | string>(ability: Ability, value: AbilityDependentValue<ValueType>) => ValueType;
@@ -13,6 +13,8 @@ local ObjectField = ____object_2Dfield.ObjectField
13
13
  local ObjectLevelField = ____object_2Dfield.ObjectLevelField
14
14
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
15
15
  local AbilityType = ____ability_2Dtype.AbilityType
16
+ local ____linked_2Dset = require("utility.linked-set")
17
+ local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
16
18
  local convertAbilityBooleanField = _G.ConvertAbilityBooleanField
17
19
  local convertAbilityIntegerField = _G.ConvertAbilityIntegerField
18
20
  local convertAbilityRealField = _G.ConvertAbilityRealField
@@ -259,7 +261,7 @@ local AbilityLevelField = ____exports.AbilityLevelField
259
261
  AbilityLevelField.name = "AbilityLevelField"
260
262
  __TS__ClassExtends(AbilityLevelField, ObjectLevelField)
261
263
  function AbilityLevelField.prototype.getLevelCount(self, entry)
262
- return __TS__InstanceOf(entry, Ability) and #entry.levels or entry.levelCount
264
+ return entry.levelCount
263
265
  end
264
266
  function AbilityLevelField.prototype.getObjectDataEntryId(self, instance)
265
267
  return instance.typeId
@@ -431,6 +433,54 @@ ____exports.AbilityUnitTypeIdLevelField = __TS__Class()
431
433
  local AbilityUnitTypeIdLevelField = ____exports.AbilityUnitTypeIdLevelField
432
434
  AbilityUnitTypeIdLevelField.name = "AbilityUnitTypeIdLevelField"
433
435
  __TS__ClassExtends(AbilityUnitTypeIdLevelField, ____exports.AbilityObjectDataEntryIdLevelField)
436
+ ____exports.AbilityEnumLevelField = __TS__Class()
437
+ local AbilityEnumLevelField = ____exports.AbilityEnumLevelField
438
+ AbilityEnumLevelField.name = "AbilityEnumLevelField"
439
+ __TS__ClassExtends(AbilityEnumLevelField, ____exports.AbilityLevelField)
440
+ function AbilityEnumLevelField.prototype.getNativeFieldById(self, id)
441
+ return convertAbilityIntegerLevelField(id)
442
+ end
443
+ function AbilityEnumLevelField.prototype.getNativeFieldValue(self, instance, level)
444
+ local value = instance:getField(self.nativeField, level)
445
+ if self.values:contains(value) then
446
+ return value
447
+ end
448
+ return self.values:first()
449
+ end
450
+ function AbilityEnumLevelField.prototype.setNativeFieldValue(self, instance, level, value)
451
+ return instance:setField(self.nativeField, level, value)
452
+ end
453
+ __TS__SetDescriptor(
454
+ AbilityEnumLevelField.prototype,
455
+ "defaultValue",
456
+ {get = function(self)
457
+ return self.values:first()
458
+ end},
459
+ true
460
+ )
461
+ __TS__ObjectDefineProperty(
462
+ AbilityEnumLevelField,
463
+ "valueChangeEvent",
464
+ {get = function(self)
465
+ return self:getOrCreateValueChangeEvent()
466
+ end}
467
+ )
468
+ ____exports.AbilityBuffPolarityLevelField = __TS__Class()
469
+ local AbilityBuffPolarityLevelField = ____exports.AbilityBuffPolarityLevelField
470
+ AbilityBuffPolarityLevelField.name = "AbilityBuffPolarityLevelField"
471
+ __TS__ClassExtends(AbilityBuffPolarityLevelField, ____exports.AbilityEnumLevelField)
472
+ function AbilityBuffPolarityLevelField.prototype.____constructor(self, ...)
473
+ AbilityBuffPolarityLevelField.____super.prototype.____constructor(self, ...)
474
+ self.values = nonEmptyLinkedSetOf(0, 1, 2)
475
+ end
476
+ ____exports.AbilityBuffResistanceTypeLevelField = __TS__Class()
477
+ local AbilityBuffResistanceTypeLevelField = ____exports.AbilityBuffResistanceTypeLevelField
478
+ AbilityBuffResistanceTypeLevelField.name = "AbilityBuffResistanceTypeLevelField"
479
+ __TS__ClassExtends(AbilityBuffResistanceTypeLevelField, ____exports.AbilityEnumLevelField)
480
+ function AbilityBuffResistanceTypeLevelField.prototype.____constructor(self, ...)
481
+ AbilityBuffResistanceTypeLevelField.____super.prototype.____constructor(self, ...)
482
+ self.values = nonEmptyLinkedSetOf(1, 2, 3)
483
+ end
434
484
  local allowedTargetCombatClassificationsByLevelByAbilityTypeId = postcompile(function()
435
485
  local allowedTargetCombatClassificationsByLevelByAbilityTypeId = {}
436
486
  for ____, abilityType in ipairs(AbilityType:getAll()) do
@@ -1,4 +1,3 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { DispatchingEvent } from "../event";
4
3
  import { AbstractConstructor } from "../utility/types";
@@ -8,3 +8,4 @@ export declare const randomFloat: {
8
8
  (upperBound?: number): number;
9
9
  (lowerBound: number, upperBound: number): number;
10
10
  };
11
+ export declare const randomXY: (centerX: number, centerY: number, range: number) => LuaMultiReturn<[x: number, y: number]>;