warscript 0.0.1-dev.c8d6bc0 → 0.0.1-dev.c8f98de

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 (181) 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 +13 -3
  7. package/core/types/effect.lua +116 -17
  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 +1 -0
  15. package/core/types/sound.lua +32 -2
  16. package/core/types/unit.lua +8 -0
  17. package/core/util.d.ts +1 -1
  18. package/core/util.lua +12 -0
  19. package/decl/index.d.ts +1 -0
  20. package/engine/ability.d.ts +1 -1
  21. package/engine/behavior.d.ts +10 -10
  22. package/engine/behavior.lua +6 -6
  23. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  24. package/engine/behaviour/ability/always-enabled.lua +31 -0
  25. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  26. package/engine/behaviour/ability/apply-buff.lua +32 -0
  27. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  28. package/engine/behaviour/ability/damage.d.ts +33 -11
  29. package/engine/behaviour/ability/damage.lua +89 -31
  30. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  31. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  32. package/engine/behaviour/ability/heal.d.ts +33 -6
  33. package/engine/behaviour/ability/heal.lua +89 -10
  34. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  35. package/engine/behaviour/ability/instant-impact.lua +4 -15
  36. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  37. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  38. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  39. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  40. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  41. package/engine/behaviour/ability/restore-mana.lua +29 -0
  42. package/engine/behaviour/ability.d.ts +22 -3
  43. package/engine/behaviour/ability.lua +134 -13
  44. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  45. package/engine/behaviour/unit.d.ts +8 -2
  46. package/engine/behaviour/unit.lua +27 -0
  47. package/engine/buff.d.ts +97 -40
  48. package/engine/buff.lua +431 -209
  49. package/engine/game-map.d.ts +7 -0
  50. package/engine/game-map.lua +32 -0
  51. package/engine/internal/ability.d.ts +16 -13
  52. package/engine/internal/ability.lua +80 -76
  53. package/engine/internal/item/ability.lua +106 -0
  54. package/engine/internal/item+owner.lua +2 -2
  55. package/engine/internal/item.d.ts +2 -2
  56. package/engine/internal/item.lua +56 -25
  57. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  58. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  59. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  60. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  61. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  62. package/engine/internal/object-data/evasion-probability.lua +16 -0
  63. package/engine/internal/unit/ability.d.ts +10 -1
  64. package/engine/internal/unit/ability.lua +36 -14
  65. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  66. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  67. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  68. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  69. package/engine/internal/unit/bonus.d.ts +11 -8
  70. package/engine/internal/unit/bonus.lua +23 -1
  71. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  72. package/engine/internal/unit/ignore-events-items.lua +5 -0
  73. package/engine/internal/unit/item.d.ts +24 -0
  74. package/engine/internal/unit/item.lua +78 -0
  75. package/engine/internal/unit/main-selected.d.ts +13 -0
  76. package/engine/internal/unit/main-selected.lua +51 -0
  77. package/engine/internal/unit+ability.lua +2 -2
  78. package/engine/internal/unit+transport.lua +4 -10
  79. package/engine/internal/unit-missile-launch.lua +25 -6
  80. package/engine/internal/unit.d.ts +59 -16
  81. package/engine/internal/unit.lua +373 -132
  82. package/engine/internal/utility.lua +12 -0
  83. package/engine/lightning.d.ts +12 -5
  84. package/engine/lightning.lua +48 -14
  85. package/engine/local-client.d.ts +7 -2
  86. package/engine/local-client.lua +82 -0
  87. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  88. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  89. package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
  90. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  91. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  92. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  93. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  94. package/engine/object-data/entry/ability-type/blank-configurable.lua +21 -1
  95. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  96. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  97. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  98. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  99. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  100. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  101. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  102. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  103. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  104. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  105. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  106. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  107. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  108. package/engine/object-data/entry/ability-type.d.ts +6 -7
  109. package/engine/object-data/entry/ability-type.lua +24 -27
  110. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  111. package/engine/object-data/entry/buff-type/applicable.lua +11 -35
  112. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  113. package/engine/object-data/entry/buff-type.d.ts +1 -2
  114. package/engine/object-data/entry/buff-type.lua +2 -2
  115. package/engine/object-data/entry/destructible-type.d.ts +1 -2
  116. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  117. package/engine/object-data/entry/item-type.d.ts +15 -2
  118. package/engine/object-data/entry/item-type.lua +93 -2
  119. package/engine/object-data/entry/lightning-type.d.ts +1 -2
  120. package/engine/object-data/entry/sound-preset.d.ts +16 -0
  121. package/engine/object-data/entry/sound-preset.lua +36 -0
  122. package/engine/object-data/entry/unit-type.d.ts +29 -3
  123. package/engine/object-data/entry/unit-type.lua +284 -57
  124. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  125. package/engine/object-data/entry/upgrade.d.ts +1 -2
  126. package/engine/object-data/entry/upgrade.lua +4 -4
  127. package/engine/object-data/entry.d.ts +18 -17
  128. package/engine/object-data/entry.lua +60 -32
  129. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  130. package/engine/object-field/ability.d.ts +26 -3
  131. package/engine/object-field/ability.lua +54 -1
  132. package/engine/object-field.d.ts +2 -3
  133. package/engine/object-field.lua +4 -0
  134. package/engine/random.d.ts +1 -0
  135. package/engine/random.lua +9 -0
  136. package/engine/standard/entries/sound-preset.d.ts +10 -0
  137. package/engine/standard/entries/sound-preset.lua +10 -0
  138. package/engine/standard/entries/unit-type.d.ts +39 -1
  139. package/engine/standard/entries/unit-type.lua +39 -1
  140. package/engine/standard/fields/ability.d.ts +3 -1
  141. package/engine/standard/fields/ability.lua +3 -1
  142. package/engine/unit.d.ts +3 -0
  143. package/engine/unit.lua +12 -2
  144. package/event.d.ts +2 -3
  145. package/event.lua +9 -5
  146. package/index.d.ts +1 -0
  147. package/index.lua +1 -0
  148. package/lualib_bundle.lua +146 -42
  149. package/math/vec2.d.ts +2 -9
  150. package/math.d.ts +0 -2
  151. package/net/socket.d.ts +7 -1
  152. package/net/socket.lua +45 -4
  153. package/network.d.ts +1 -0
  154. package/network.lua +3 -2
  155. package/objutil/ability.d.ts +0 -1
  156. package/objutil/buff.d.ts +0 -1
  157. package/objutil/buff.lua +1 -1
  158. package/objutil/object.d.ts +0 -1
  159. package/objutil/unit.d.ts +0 -1
  160. package/objutil/unit.lua +8 -0
  161. package/package.json +13 -13
  162. package/patch-lua.d.ts +0 -0
  163. package/patch-lua.lua +10 -0
  164. package/property.d.ts +55 -0
  165. package/property.lua +374 -0
  166. package/string.d.ts +30 -0
  167. package/string.lua +14 -0
  168. package/util/stream.d.ts +0 -1
  169. package/utility/arrays.d.ts +11 -5
  170. package/utility/arrays.lua +34 -3
  171. package/utility/bit-set.d.ts +0 -2
  172. package/utility/lazy.d.ts +2 -0
  173. package/utility/lazy.lua +14 -0
  174. package/utility/linked-set.d.ts +11 -3
  175. package/utility/linked-set.lua +5 -2
  176. package/utility/lua-maps.d.ts +1 -2
  177. package/utility/lua-sets.d.ts +1 -2
  178. package/utility/reflection.lua +11 -7
  179. package/utility/types.d.ts +1 -0
  180. package/core/mapbounds.d.ts +0 -8
  181. package/core/mapbounds.lua +0 -12
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { TupleOf } from "../../../utility/types";
4
3
  import { ArmorSoundType } from "../auxiliary/armor-sound-type";
@@ -14,7 +13,7 @@ import type { AbilityTypeId } from "./ability-type";
14
13
  import type { UpgradeId } from "./upgrade";
15
14
  import { AnimationQualifier } from "../auxiliary/animation-qualifier";
16
15
  import { AttackType } from "../auxiliary/attack-type";
17
- export type UnitTypeId = ObjectDataEntryId & {
16
+ export type UnitTypeId = ObjectDataEntryId & number & {
18
17
  readonly __unitTypeId: unique symbol;
19
18
  };
20
19
  export type StandardUnitTypeId = UnitTypeId & {
@@ -28,6 +27,16 @@ export declare class UnitTypeWeapon {
28
27
  set attackType(attackType: AttackType);
29
28
  get backSwingDuration(): number;
30
29
  set backSwingDuration(backSwingDuration: number);
30
+ get cooldown(): number;
31
+ set cooldown(cooldown: number);
32
+ get damage(): [minimumDamage: number, maximumDamage: number];
33
+ set damage([minimumDamage, maximumDamage]: [number, number]);
34
+ get damageBase(): number;
35
+ set damageBase(damageBase: number);
36
+ get damageDiceCount(): number;
37
+ set damageDiceCount(damageDiceNumber: number);
38
+ get damageDiceSideCount(): number;
39
+ set damageDiceSideCount(damageDiceSideCount: number);
31
40
  get impactDelay(): number;
32
41
  set impactDelay(impactDelay: number);
33
42
  get missileModelPath(): string;
@@ -46,6 +55,7 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
46
55
  protected static readonly idGenerator: ObjectDataEntryIdGenerator;
47
56
  protected static generateId(): number;
48
57
  protected static getObjectData(map: WarMap): WarObjects;
58
+ private isPortraitModelPathSet?;
49
59
  get abilityTypeIds(): AbilityTypeId[];
50
60
  set abilityTypeIds(abilityTypeIds: AbilityTypeId[]);
51
61
  get defaultActiveAbilityTypeId(): AbilityTypeId | undefined;
@@ -122,6 +132,12 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
122
132
  set modelPathSD(modelPathSD: string);
123
133
  get modelPathHD(): string;
124
134
  set modelPathHD(modelPathHD: string);
135
+ get portraitModelPath(): string;
136
+ set portraitModelPath(portraitModelPath: string);
137
+ get portraitModelPathSD(): string;
138
+ set portraitModelPathSD(portraitModelPathSD: string);
139
+ get portraitModelPathHD(): string;
140
+ set portraitModelPathHD(portraitModelPathHD: string);
125
141
  get runSpeed(): number;
126
142
  set runSpeed(runSpeed: number);
127
143
  get runSpeedSD(): number;
@@ -176,9 +192,9 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
176
192
  set combatClassifications(combatClassifications: CombatClassifications);
177
193
  get unitClassifications(): UnitClassifications;
178
194
  set unitClassifications(unitClassifications: UnitClassifications);
195
+ get weapons(): TupleOf<UnitTypeWeapon, 2>;
179
196
  get firstWeapon(): UnitTypeWeapon;
180
197
  get secondWeapon(): UnitTypeWeapon;
181
- get weapons(): TupleOf<UnitTypeWeapon, 2>;
182
198
  get flyHeight(): number;
183
199
  set flyHeight(flyHeight: number);
184
200
  get flyHeightMinimum(): number;
@@ -207,6 +223,16 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
207
223
  set formationRank(formationRank: number);
208
224
  get goldCost(): number;
209
225
  set goldCost(goldCost: number);
226
+ get healthRegenerationRate(): number;
227
+ set healthRegenerationRate(healthRegenerationRate: number);
228
+ get manaRegenerationRate(): number;
229
+ set manaRegenerationRate(manaRegenerationRate: number);
230
+ get maximumHealth(): number;
231
+ set maximumHealth(maximumHealth: number);
232
+ get maximumMana(): number;
233
+ set maximumMana(maximumMana: number);
234
+ get initialMana(): number;
235
+ set initialMana(initialMana: number);
210
236
  get isStructure(): boolean;
211
237
  set isStructure(isStructure: boolean);
212
238
  get race(): Race;
@@ -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", modelPath)
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", modelPathSD)
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", modelPathHD)
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
  },