warscript 0.0.1-dev.8717dbb → 0.0.1-dev.87bdb89

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 (234) hide show
  1. package/attributes.d.ts +17 -0
  2. package/attributes.lua +23 -0
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/types/effect.d.ts +14 -6
  8. package/core/types/effect.lua +131 -35
  9. package/core/types/frame.d.ts +8 -1
  10. package/core/types/frame.lua +93 -1
  11. package/core/types/group.d.ts +0 -1
  12. package/core/types/handle.d.ts +2 -1
  13. package/core/types/handle.lua +5 -0
  14. package/core/types/image.d.ts +0 -1
  15. package/core/types/missile.d.ts +2 -2
  16. package/core/types/missile.lua +8 -2
  17. package/core/types/order.d.ts +1 -0
  18. package/core/types/order.lua +11 -1
  19. package/core/types/sound.d.ts +17 -24
  20. package/core/types/sound.lua +99 -24
  21. package/core/types/timer.d.ts +6 -7
  22. package/core/types/timer.lua +18 -21
  23. package/core/types/unit.lua +8 -0
  24. package/core/util.d.ts +1 -1
  25. package/core/util.lua +18 -1
  26. package/decl/index.d.ts +1 -0
  27. package/decl/native.d.ts +840 -786
  28. package/engine/ability.d.ts +1 -1
  29. package/engine/behavior.d.ts +10 -10
  30. package/engine/behavior.lua +6 -6
  31. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  32. package/engine/behaviour/ability/always-enabled.lua +31 -0
  33. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  34. package/engine/behaviour/ability/apply-buff.lua +32 -0
  35. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  36. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  37. package/engine/behaviour/ability/damage.d.ts +39 -11
  38. package/engine/behaviour/ability/damage.lua +83 -37
  39. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  40. package/engine/behaviour/ability/emulate-impact.lua +42 -0
  41. package/engine/behaviour/ability/heal.d.ts +33 -6
  42. package/engine/behaviour/ability/heal.lua +89 -10
  43. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  44. package/engine/behaviour/ability/instant-impact.lua +4 -15
  45. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  46. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  47. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  48. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  49. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  50. package/engine/behaviour/ability/restore-mana.lua +29 -0
  51. package/engine/behaviour/ability.d.ts +27 -4
  52. package/engine/behaviour/ability.lua +153 -18
  53. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  54. package/engine/behaviour/unit.d.ts +25 -2
  55. package/engine/behaviour/unit.lua +137 -0
  56. package/engine/buff.d.ts +103 -41
  57. package/engine/buff.lua +465 -212
  58. package/engine/game-map.d.ts +7 -0
  59. package/engine/game-map.lua +32 -0
  60. package/engine/internal/ability.d.ts +20 -13
  61. package/engine/internal/ability.lua +97 -76
  62. package/engine/internal/item/ability.lua +112 -4
  63. package/engine/internal/item+owner.lua +2 -2
  64. package/engine/internal/item.d.ts +7 -4
  65. package/engine/internal/item.lua +131 -28
  66. package/engine/internal/mechanics/ability-duration.lua +1 -1
  67. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  68. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  69. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  70. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  71. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  72. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  73. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  74. package/engine/internal/object-data/evasion-probability.lua +16 -0
  75. package/engine/internal/unit/ability.d.ts +15 -1
  76. package/engine/internal/unit/ability.lua +50 -14
  77. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  78. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  79. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  80. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  81. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  82. package/engine/internal/unit/allowed-targets.lua +9 -1
  83. package/engine/internal/unit/bonus.d.ts +11 -8
  84. package/engine/internal/unit/bonus.lua +23 -1
  85. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  86. package/engine/internal/unit/ignore-events-items.lua +5 -0
  87. package/engine/internal/unit/item.d.ts +24 -0
  88. package/engine/internal/unit/item.lua +78 -0
  89. package/engine/internal/unit/main-selected.d.ts +13 -0
  90. package/engine/internal/unit/main-selected.lua +51 -0
  91. package/engine/internal/unit+ability.lua +2 -2
  92. package/engine/internal/unit+damage.d.ts +2 -11
  93. package/engine/internal/unit+damage.lua +10 -14
  94. package/engine/internal/unit+spellSteal.lua +1 -2
  95. package/engine/internal/unit+transport.lua +4 -10
  96. package/engine/internal/unit-missile-launch.lua +25 -6
  97. package/engine/internal/unit.d.ts +84 -19
  98. package/engine/internal/unit.lua +540 -167
  99. package/engine/internal/utility.lua +12 -0
  100. package/engine/lightning.d.ts +12 -5
  101. package/engine/lightning.lua +48 -14
  102. package/engine/local-client.d.ts +7 -2
  103. package/engine/local-client.lua +82 -0
  104. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  105. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  106. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
  107. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  108. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  109. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  110. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  111. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  112. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  113. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  114. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  115. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  116. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  117. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  118. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  119. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  120. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  121. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  122. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  123. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  124. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  125. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  126. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  127. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  128. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  129. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  130. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  131. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  132. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  133. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  134. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  135. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  136. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  137. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  138. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  139. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  140. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  141. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  142. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  143. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  144. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  145. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  146. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  147. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  148. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  149. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  150. package/engine/object-data/entry/ability-type/web.lua +52 -0
  151. package/engine/object-data/entry/ability-type.d.ts +19 -18
  152. package/engine/object-data/entry/ability-type.lua +89 -33
  153. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  154. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  155. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  156. package/engine/object-data/entry/buff-type.d.ts +6 -13
  157. package/engine/object-data/entry/buff-type.lua +13 -29
  158. package/engine/object-data/entry/destructible-type.d.ts +1 -2
  159. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  160. package/engine/object-data/entry/item-type.d.ts +15 -2
  161. package/engine/object-data/entry/item-type.lua +93 -2
  162. package/engine/object-data/entry/lightning-type.d.ts +1 -2
  163. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  164. package/engine/object-data/entry/sound-preset.lua +140 -0
  165. package/engine/object-data/entry/unit-type.d.ts +47 -5
  166. package/engine/object-data/entry/unit-type.lua +421 -74
  167. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  168. package/engine/object-data/entry/upgrade.d.ts +1 -2
  169. package/engine/object-data/entry/upgrade.lua +4 -4
  170. package/engine/object-data/entry.d.ts +18 -17
  171. package/engine/object-data/entry.lua +60 -32
  172. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  173. package/engine/object-field/ability.d.ts +26 -3
  174. package/engine/object-field/ability.lua +54 -1
  175. package/engine/object-field/unit.d.ts +46 -3
  176. package/engine/object-field/unit.lua +173 -7
  177. package/engine/object-field.d.ts +15 -7
  178. package/engine/object-field.lua +178 -81
  179. package/engine/random.d.ts +1 -0
  180. package/engine/random.lua +9 -0
  181. package/engine/standard/entries/buff-type.d.ts +3 -0
  182. package/engine/standard/entries/buff-type.lua +3 -0
  183. package/engine/standard/entries/sound-preset.d.ts +10 -0
  184. package/engine/standard/entries/sound-preset.lua +10 -0
  185. package/engine/standard/entries/unit-type.d.ts +39 -1
  186. package/engine/standard/entries/unit-type.lua +39 -1
  187. package/engine/standard/fields/ability.d.ts +3 -1
  188. package/engine/standard/fields/ability.lua +3 -1
  189. package/engine/text-tag.d.ts +12 -1
  190. package/engine/text-tag.lua +44 -10
  191. package/engine/unit.d.ts +3 -0
  192. package/engine/unit.lua +12 -2
  193. package/event.d.ts +2 -3
  194. package/event.lua +9 -5
  195. package/index.d.ts +1 -0
  196. package/index.lua +1 -0
  197. package/lualib_bundle.lua +146 -42
  198. package/math/vec2.d.ts +2 -9
  199. package/math.d.ts +0 -2
  200. package/net/socket.d.ts +7 -1
  201. package/net/socket.lua +45 -4
  202. package/network.d.ts +1 -0
  203. package/network.lua +3 -2
  204. package/objutil/ability.d.ts +0 -1
  205. package/objutil/buff.d.ts +0 -1
  206. package/objutil/buff.lua +2 -3
  207. package/objutil/object.d.ts +0 -1
  208. package/objutil/unit.d.ts +0 -1
  209. package/objutil/unit.lua +8 -0
  210. package/package.json +13 -14
  211. package/patch-lua.d.ts +0 -0
  212. package/patch-lua.lua +10 -0
  213. package/property.d.ts +55 -0
  214. package/property.lua +374 -0
  215. package/string.d.ts +30 -0
  216. package/string.lua +14 -0
  217. package/util/stream.d.ts +0 -1
  218. package/utility/arrays.d.ts +12 -5
  219. package/utility/arrays.lua +37 -3
  220. package/utility/bit-set.d.ts +0 -2
  221. package/utility/functions.d.ts +1 -0
  222. package/utility/functions.lua +1 -0
  223. package/utility/lazy.d.ts +2 -0
  224. package/utility/lazy.lua +14 -0
  225. package/utility/linked-set.d.ts +12 -3
  226. package/utility/linked-set.lua +8 -2
  227. package/utility/lua-maps.d.ts +4 -2
  228. package/utility/lua-maps.lua +16 -0
  229. package/utility/lua-sets.d.ts +2 -2
  230. package/utility/lua-sets.lua +3 -0
  231. package/utility/reflection.lua +11 -7
  232. package/utility/types.d.ts +1 -0
  233. package/core/mapbounds.d.ts +0 -8
  234. package/core/mapbounds.lua +0 -12
@@ -2,11 +2,22 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
6
  local ____exports = {}
6
7
  local ____unit = require("engine.internal.unit")
7
8
  local Unit = ____unit.Unit
8
9
  local ____object_2Dfield = require("engine.object-field")
9
10
  local ObjectField = ____object_2Dfield.ObjectField
11
+ local ObjectLevelField = ____object_2Dfield.ObjectLevelField
12
+ local ____linked_2Dset = require("utility.linked-set")
13
+ local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
14
+ local convertUnitBooleanField = ConvertUnitBooleanField
15
+ local convertUnitIntegerField = ConvertUnitIntegerField
16
+ local convertUnitRealField = ConvertUnitRealField
17
+ local convertUnitStringField = ConvertUnitStringField
18
+ local convertUnitWeaponIntegerField = ConvertUnitWeaponIntegerField
19
+ local getUnitWeaponIntegerField = BlzGetUnitWeaponIntegerField
20
+ local setUnitWeaponIntegerField = BlzSetUnitWeaponIntegerField
10
21
  ____exports.UnitField = __TS__Class()
11
22
  local UnitField = ____exports.UnitField
12
23
  UnitField.name = "UnitField"
@@ -14,6 +25,9 @@ __TS__ClassExtends(UnitField, ObjectField)
14
25
  function UnitField.prototype.getObjectDataEntryId(self, instance)
15
26
  return instance.typeId
16
27
  end
28
+ function UnitField.prototype.hasNativeFieldValue(self)
29
+ return true
30
+ end
17
31
  __TS__SetDescriptor(
18
32
  UnitField.prototype,
19
33
  "instanceClass",
@@ -22,22 +36,79 @@ __TS__SetDescriptor(
22
36
  end},
23
37
  true
24
38
  )
39
+ ____exports.UnitBooleanField = __TS__Class()
40
+ local UnitBooleanField = ____exports.UnitBooleanField
41
+ UnitBooleanField.name = "UnitBooleanField"
42
+ __TS__ClassExtends(UnitBooleanField, ____exports.UnitField)
43
+ function UnitBooleanField.prototype.getNativeFieldById(self, id)
44
+ return convertUnitBooleanField(id)
45
+ end
46
+ function UnitBooleanField.prototype.getNativeFieldValue(self, instance)
47
+ return instance:getField(self.nativeField)
48
+ end
49
+ function UnitBooleanField.prototype.setNativeFieldValue(self, instance, value)
50
+ return instance:setField(self.nativeField, value)
51
+ end
52
+ __TS__SetDescriptor(
53
+ UnitBooleanField.prototype,
54
+ "defaultValue",
55
+ {get = function(self)
56
+ return false
57
+ end},
58
+ true
59
+ )
60
+ ____exports.UnitFloatField = __TS__Class()
61
+ local UnitFloatField = ____exports.UnitFloatField
62
+ UnitFloatField.name = "UnitFloatField"
63
+ __TS__ClassExtends(UnitFloatField, ____exports.UnitField)
64
+ function UnitFloatField.prototype.getNativeFieldById(self, id)
65
+ return convertUnitRealField(id)
66
+ end
67
+ function UnitFloatField.prototype.getNativeFieldValue(self, instance)
68
+ return instance:getField(self.nativeField)
69
+ end
70
+ function UnitFloatField.prototype.setNativeFieldValue(self, instance, value)
71
+ return instance:setField(self.nativeField, value)
72
+ end
73
+ __TS__SetDescriptor(
74
+ UnitFloatField.prototype,
75
+ "defaultValue",
76
+ {get = function(self)
77
+ return 0
78
+ end},
79
+ true
80
+ )
81
+ ____exports.UnitIntegerField = __TS__Class()
82
+ local UnitIntegerField = ____exports.UnitIntegerField
83
+ UnitIntegerField.name = "UnitIntegerField"
84
+ __TS__ClassExtends(UnitIntegerField, ____exports.UnitField)
85
+ function UnitIntegerField.prototype.getNativeFieldById(self, id)
86
+ return convertUnitIntegerField(id)
87
+ end
88
+ function UnitIntegerField.prototype.getNativeFieldValue(self, instance)
89
+ return instance:getField(self.nativeField)
90
+ end
91
+ function UnitIntegerField.prototype.setNativeFieldValue(self, instance, value)
92
+ return instance:setField(self.nativeField, value)
93
+ end
94
+ __TS__SetDescriptor(
95
+ UnitIntegerField.prototype,
96
+ "defaultValue",
97
+ {get = function(self)
98
+ return 0
99
+ end},
100
+ true
101
+ )
25
102
  ____exports.UnitStringField = __TS__Class()
26
103
  local UnitStringField = ____exports.UnitStringField
27
104
  UnitStringField.name = "UnitStringField"
28
105
  __TS__ClassExtends(UnitStringField, ____exports.UnitField)
29
106
  function UnitStringField.prototype.getNativeFieldById(self, id)
30
- return ConvertUnitStringField(id)
31
- end
32
- function UnitStringField.prototype.hasNativeFieldValue(self)
33
- return true
107
+ return convertUnitStringField(id)
34
108
  end
35
109
  function UnitStringField.prototype.getNativeFieldValue(self, instance)
36
110
  return instance:getField(self.nativeField)
37
111
  end
38
- function UnitStringField.prototype.getObjectDataEntryId(self, instance)
39
- return instance.typeId
40
- end
41
112
  function UnitStringField.prototype.setNativeFieldValue(self, instance, value)
42
113
  return instance:setField(self.nativeField, value)
43
114
  end
@@ -49,4 +120,99 @@ __TS__SetDescriptor(
49
120
  end},
50
121
  true
51
122
  )
123
+ ____exports.UnitWeaponField = __TS__Class()
124
+ local UnitWeaponField = ____exports.UnitWeaponField
125
+ UnitWeaponField.name = "UnitWeaponField"
126
+ __TS__ClassExtends(UnitWeaponField, ObjectLevelField)
127
+ function UnitWeaponField.prototype.getLevelCount(self)
128
+ return 2
129
+ end
130
+ function UnitWeaponField.prototype.getObjectDataEntryId(self, instance)
131
+ return instance.typeId
132
+ end
133
+ function UnitWeaponField.prototype.hasNativeFieldValue(self)
134
+ return true
135
+ end
136
+ __TS__SetDescriptor(
137
+ UnitWeaponField.prototype,
138
+ "instanceClass",
139
+ {get = function(self)
140
+ return Unit
141
+ end},
142
+ true
143
+ )
144
+ __TS__ObjectDefineProperty(
145
+ UnitWeaponField,
146
+ "valueChangeEvent",
147
+ {get = function(self)
148
+ return self:getOrCreateValueChangeEvent()
149
+ end}
150
+ )
151
+ ____exports.UnitNumberWeaponField = __TS__Class()
152
+ local UnitNumberWeaponField = ____exports.UnitNumberWeaponField
153
+ UnitNumberWeaponField.name = "UnitNumberWeaponField"
154
+ __TS__ClassExtends(UnitNumberWeaponField, ____exports.UnitWeaponField)
155
+ __TS__SetDescriptor(
156
+ UnitNumberWeaponField.prototype,
157
+ "defaultValue",
158
+ {get = function(self)
159
+ return 0
160
+ end},
161
+ true
162
+ )
163
+ __TS__ObjectDefineProperty(
164
+ UnitNumberWeaponField,
165
+ "valueChangeEvent",
166
+ {get = function(self)
167
+ return self:getOrCreateValueChangeEvent()
168
+ end}
169
+ )
170
+ ____exports.UnitEnumWeaponField = __TS__Class()
171
+ local UnitEnumWeaponField = ____exports.UnitEnumWeaponField
172
+ UnitEnumWeaponField.name = "UnitEnumWeaponField"
173
+ __TS__ClassExtends(UnitEnumWeaponField, ____exports.UnitWeaponField)
174
+ function UnitEnumWeaponField.prototype.getNativeFieldById(self, id)
175
+ return convertUnitWeaponIntegerField(id)
176
+ end
177
+ function UnitEnumWeaponField.prototype.getNativeFieldValue(self, instance, index)
178
+ local value = getUnitWeaponIntegerField(instance.handle, self.nativeField, index)
179
+ if self.values:contains(value) then
180
+ return value
181
+ end
182
+ return self.values:first()
183
+ end
184
+ function UnitEnumWeaponField.prototype.setNativeFieldValue(self, instance, index, value)
185
+ return setUnitWeaponIntegerField(instance.handle, self.nativeField, index, value)
186
+ end
187
+ __TS__SetDescriptor(
188
+ UnitEnumWeaponField.prototype,
189
+ "defaultValue",
190
+ {get = function(self)
191
+ return self.values:first()
192
+ end},
193
+ true
194
+ )
195
+ __TS__ObjectDefineProperty(
196
+ UnitEnumWeaponField,
197
+ "valueChangeEvent",
198
+ {get = function(self)
199
+ return self:getOrCreateValueChangeEvent()
200
+ end}
201
+ )
202
+ ____exports.UnitAttackTypeWeaponField = __TS__Class()
203
+ local UnitAttackTypeWeaponField = ____exports.UnitAttackTypeWeaponField
204
+ UnitAttackTypeWeaponField.name = "UnitAttackTypeWeaponField"
205
+ __TS__ClassExtends(UnitAttackTypeWeaponField, ____exports.UnitEnumWeaponField)
206
+ function UnitAttackTypeWeaponField.prototype.____constructor(self, ...)
207
+ UnitAttackTypeWeaponField.____super.prototype.____constructor(self, ...)
208
+ self.values = nonEmptyLinkedSetOf(
209
+ 1,
210
+ 2,
211
+ 3,
212
+ 0,
213
+ 5,
214
+ 4,
215
+ 6
216
+ )
217
+ end
52
218
  return ____exports
@@ -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";
@@ -6,9 +5,10 @@ import { ObjectDataEntry, ObjectDataEntryIdType, ObjectDataEntryLevelFieldValueS
6
5
  export type ObjectFieldId = number & {
7
6
  readonly __objectDataEntryFieldId: unique symbol;
8
7
  };
9
- export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number) => T);
8
+ export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number, isGlobal?: boolean) => T);
10
9
  export type ObjectFieldAbstractConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (abstract new (id: number) => T);
11
10
  declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEntry, InstanceType extends AnyNotNil, ValueType, NativeFieldType> {
11
+ readonly isGlobal: boolean;
12
12
  protected abstract readonly instanceClass: AbstractConstructor<InstanceType> | Function;
13
13
  supports(instance: AnyNotNil): instance is InstanceType & {
14
14
  readonly __oneSidedTypeGuard: unique symbol;
@@ -17,8 +17,10 @@ declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEnt
17
17
  readonly id: ObjectFieldId;
18
18
  protected abstract getNativeFieldById(id: number): NativeFieldType;
19
19
  protected abstract getObjectDataEntryId(instance: InstanceType): ObjectDataEntryIdType<ObjectDataEntryType>;
20
- constructor(id: number);
21
- static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number): T & symbol;
20
+ protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
21
+ hasValue(instance: InstanceType): boolean;
22
+ constructor(id: number, isGlobal?: boolean);
23
+ static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number, isGlobal?: boolean): T & symbol;
22
24
  static of<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldAbstractConstructor<T>, id: number): T | undefined;
23
25
  }
24
26
  export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any> | ReadonlyObjectFieldType<ObjectField<any, any, any, any>>> = T extends ObjectField<any, infer InstanceType, infer ValueType, any> ? DispatchingEvent<[
@@ -34,15 +36,22 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
34
36
  ]> : never;
35
37
  export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
36
38
  type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
39
+ type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
37
40
  export declare abstract class ObjectField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType, NativeFieldType> {
38
41
  protected abstract readonly defaultValue: ValueType;
39
- protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
40
42
  protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
41
43
  protected abstract setNativeFieldValue(instance: InstanceType, value: ValueType): boolean;
42
- getValue(entry: ObjectDataEntryType | InstanceType): ValueType;
44
+ private originalValueByInstance?;
45
+ private modifiersByInstance?;
46
+ getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
43
47
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
48
+ applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
49
+ removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
44
50
  removeValue(entry: ObjectDataEntryType): boolean;
45
51
  trySetValue(entry: ObjectDataEntryType | InstanceType, value: unknown): boolean;
52
+ private getActualValue;
53
+ private setActualValue;
54
+ private calculateActualValue;
46
55
  private invokeValueChangeEvent;
47
56
  private invokeValueChangeEventRecursive;
48
57
  protected static getOrCreateValueChangeEvent<T extends ObjectField, R extends ReadonlyObjectFieldType<T>>(this: ReadonlyObjectFieldConstructor<T>): ObjectFieldValueChangeEvent<R>;
@@ -72,7 +81,6 @@ export declare abstract class ObjectArrayField<ObjectDataEntryType extends Objec
72
81
  }
73
82
  export declare abstract class ObjectLevelField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType[], NativeFieldType> {
74
83
  protected abstract readonly defaultValue: ValueType;
75
- protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
76
84
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
77
85
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
78
86
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
@@ -20,6 +20,13 @@ local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLe
20
20
  local ObjectDataEntry = ____entry.ObjectDataEntry
21
21
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
22
22
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
23
+ local ____linked_2Dset = require("utility.linked-set")
24
+ local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
25
+ local ____lua_2Dmaps = require("utility.lua-maps")
26
+ local getOrPut = ____lua_2Dmaps.getOrPut
27
+ local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
28
+ local ____arrays = require("utility.arrays")
29
+ local emptyArray = ____arrays.emptyArray
23
30
  local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
24
31
  local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
25
32
  local objectFieldById = {}
@@ -29,7 +36,11 @@ local idGenerator = __TS__New(
29
36
  )
30
37
  local ObjectFieldBase = __TS__Class()
31
38
  ObjectFieldBase.name = "ObjectFieldBase"
32
- function ObjectFieldBase.prototype.____constructor(self, id)
39
+ function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
40
+ if isGlobal == nil then
41
+ isGlobal = true
42
+ end
43
+ self.isGlobal = isGlobal
33
44
  self.valueByInstance = setmetatable({}, {__mode = "k"})
34
45
  if objectFieldById[id] ~= nil then
35
46
  error(
@@ -46,10 +57,15 @@ end
46
57
  function ObjectFieldBase.prototype.supports(self, instance)
47
58
  return __TS__InstanceOf(instance, self.instanceClass)
48
59
  end
49
- function ObjectFieldBase.create(self, id)
60
+ function ObjectFieldBase.prototype.hasValue(self, instance)
61
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
62
+ return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
63
+ end
64
+ function ObjectFieldBase.create(self, id, isGlobal)
50
65
  return __TS__New(
51
66
  self,
52
- id or idGenerator:next()
67
+ id or idGenerator:next(),
68
+ isGlobal
53
69
  )
54
70
  end
55
71
  function ObjectFieldBase.of(self, id)
@@ -71,7 +87,7 @@ ____exports.ObjectField = __TS__Class()
71
87
  local ObjectField = ____exports.ObjectField
72
88
  ObjectField.name = "ObjectField"
73
89
  __TS__ClassExtends(ObjectField, ObjectFieldBase)
74
- function ObjectField.prototype.getValue(self, entry)
90
+ function ObjectField.prototype.getValue(self, entry, includeModifiers)
75
91
  if __TS__InstanceOf(entry, ObjectDataEntry) then
76
92
  local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
77
93
  if defaultValueByObjectDataEntryId ~= nil then
@@ -82,22 +98,16 @@ function ObjectField.prototype.getValue(self, entry)
82
98
  end
83
99
  return self.defaultValue
84
100
  end
85
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
86
- if defaultValueByObjectDataEntryId ~= nil then
87
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
88
- if defaultValue ~= nil then
89
- local ____self_valueByInstance_entry_0 = self.valueByInstance[entry]
90
- if ____self_valueByInstance_entry_0 == nil then
91
- ____self_valueByInstance_entry_0 = defaultValue
101
+ if includeModifiers == false then
102
+ local originalValueByInstance = self.originalValueByInstance
103
+ if originalValueByInstance ~= nil then
104
+ local originalValue = originalValueByInstance[entry]
105
+ if originalValue ~= nil then
106
+ return originalValue
92
107
  end
93
- return ____self_valueByInstance_entry_0
94
108
  end
95
109
  end
96
- local ____temp_1 = self:getNativeFieldValue(entry)
97
- if ____temp_1 == nil then
98
- ____temp_1 = self.defaultValue
99
- end
100
- return ____temp_1
110
+ return self:getActualValue(entry)
101
111
  end
102
112
  function ObjectField.prototype.setValue(self, entry, value)
103
113
  if __TS__InstanceOf(entry, ObjectDataEntry) then
@@ -112,37 +122,53 @@ function ObjectField.prototype.setValue(self, entry, value)
112
122
  defaultValueByObjectDataEntryId[entry.id] = value
113
123
  return true
114
124
  end
115
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
116
- if defaultValueByObjectDataEntryId ~= nil then
117
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
118
- if defaultValue ~= nil then
119
- local ____self_valueByInstance_entry_2 = self.valueByInstance[entry]
120
- if ____self_valueByInstance_entry_2 == nil then
121
- ____self_valueByInstance_entry_2 = defaultValue
122
- end
123
- local ____self_valueByInstance_entry_2_3 = ____self_valueByInstance_entry_2
124
- if ____self_valueByInstance_entry_2_3 == nil then
125
- ____self_valueByInstance_entry_2_3 = self.defaultValue
126
- end
127
- local previousValue = ____self_valueByInstance_entry_2_3
128
- if value ~= previousValue then
129
- self.valueByInstance[entry] = value
130
- self:invokeValueChangeEvent(entry, self, previousValue, value)
125
+ local modifiersByInstance = self.modifiersByInstance
126
+ if modifiersByInstance ~= nil then
127
+ local modifiers = modifiersByInstance[entry]
128
+ if modifiers ~= nil and modifiers.size ~= 0 then
129
+ local originalValueByInstance = self.originalValueByInstance
130
+ if originalValueByInstance == nil then
131
+ originalValueByInstance = mutableWeakLuaMap()
132
+ self.originalValueByInstance = originalValueByInstance
131
133
  end
132
- return true
134
+ originalValueByInstance[entry] = value
135
+ value = self:calculateActualValue(entry)
133
136
  end
134
137
  end
135
- if not self:hasNativeFieldValue(entry) then
136
- return false
138
+ return self:setActualValue(entry, value)
139
+ end
140
+ function ObjectField.prototype.applyModifier(self, instance, modifier)
141
+ local modifiersByInstance = self.modifiersByInstance
142
+ if modifiersByInstance == nil then
143
+ modifiersByInstance = mutableWeakLuaMap()
144
+ self.modifiersByInstance = modifiersByInstance
145
+ end
146
+ if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
147
+ local originalValueByInstance = self.originalValueByInstance
148
+ if originalValueByInstance == nil then
149
+ originalValueByInstance = mutableWeakLuaMap()
150
+ self.originalValueByInstance = originalValueByInstance
151
+ end
152
+ originalValueByInstance[instance] = self:getActualValue(instance)
153
+ self:setActualValue(
154
+ instance,
155
+ self:calculateActualValue(instance)
156
+ )
137
157
  end
138
- local previousValue = self:getNativeFieldValue(entry)
139
- if value ~= previousValue then
140
- if not self:setNativeFieldValue(entry, value) then
141
- return false
158
+ end
159
+ function ObjectField.prototype.removeModifier(self, instance, modifier)
160
+ local modifiersByInstance = self.modifiersByInstance
161
+ if modifiersByInstance ~= nil then
162
+ local modifiers = modifiersByInstance[instance]
163
+ if modifiers ~= nil and modifiers:remove(modifier) then
164
+ self:setActualValue(
165
+ instance,
166
+ self:calculateActualValue(instance)
167
+ )
168
+ return true
142
169
  end
143
- self:invokeValueChangeEvent(entry, self, previousValue, value)
144
170
  end
145
- return true
171
+ return false
146
172
  end
147
173
  function ObjectField.prototype.removeValue(self, entry)
148
174
  if not warpack.compiletime then
@@ -164,6 +190,77 @@ function ObjectField.prototype.trySetValue(self, entry, value)
164
190
  end
165
191
  return self:setValue(entry, value)
166
192
  end
193
+ function ObjectField.prototype.getActualValue(self, instance)
194
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
195
+ if defaultValueByObjectDataEntryId ~= nil then
196
+ local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
197
+ if defaultValue ~= nil or self.isGlobal then
198
+ local ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
199
+ if ____self_valueByInstance_instance_0 == nil then
200
+ ____self_valueByInstance_instance_0 = defaultValue
201
+ end
202
+ local ____self_valueByInstance_instance_0_1 = ____self_valueByInstance_instance_0
203
+ if ____self_valueByInstance_instance_0_1 == nil then
204
+ ____self_valueByInstance_instance_0_1 = self.defaultValue
205
+ end
206
+ return ____self_valueByInstance_instance_0_1
207
+ end
208
+ end
209
+ local ____temp_2 = self:getNativeFieldValue(instance)
210
+ if ____temp_2 == nil then
211
+ ____temp_2 = self.defaultValue
212
+ end
213
+ return ____temp_2
214
+ end
215
+ function ObjectField.prototype.setActualValue(self, instance, value)
216
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
217
+ if defaultValueByObjectDataEntryId ~= nil then
218
+ local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
219
+ if defaultValue ~= nil or self.isGlobal then
220
+ local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
221
+ if ____self_valueByInstance_instance_3 == nil then
222
+ ____self_valueByInstance_instance_3 = defaultValue
223
+ end
224
+ local ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
225
+ if ____self_valueByInstance_instance_3_4 == nil then
226
+ ____self_valueByInstance_instance_3_4 = self.defaultValue
227
+ end
228
+ local previousValue = ____self_valueByInstance_instance_3_4
229
+ if value ~= previousValue then
230
+ self.valueByInstance[instance] = value
231
+ self:invokeValueChangeEvent(instance, self, previousValue, value)
232
+ end
233
+ return true
234
+ end
235
+ end
236
+ if not self:hasNativeFieldValue(instance) then
237
+ return false
238
+ end
239
+ local previousValue = self:getNativeFieldValue(instance)
240
+ if value ~= previousValue then
241
+ if not self:setNativeFieldValue(instance, value) then
242
+ return false
243
+ end
244
+ self:invokeValueChangeEvent(instance, self, previousValue, value)
245
+ end
246
+ return true
247
+ end
248
+ function ObjectField.prototype.calculateActualValue(self, instance)
249
+ local ____opt_5 = self.originalValueByInstance
250
+ local originalValue = ____opt_5 and ____opt_5[instance]
251
+ local ____opt_7 = self.modifiersByInstance
252
+ local modifiers = ____opt_7 and ____opt_7[instance]
253
+ if originalValue ~= nil then
254
+ local value = originalValue
255
+ if modifiers ~= nil then
256
+ for modifier in pairs(modifiers) do
257
+ value = modifier(instance, value, originalValue)
258
+ end
259
+ end
260
+ return value
261
+ end
262
+ return self.defaultValue
263
+ end
167
264
  function ObjectField.prototype.invokeValueChangeEvent(self, ...)
168
265
  self:invokeValueChangeEventRecursive(
169
266
  getClass(self),
@@ -217,17 +314,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
217
314
  if defaultValueByObjectDataEntryId ~= nil then
218
315
  local value = defaultValueByObjectDataEntryId[entry.id]
219
316
  if value ~= nil then
220
- local ____temp_5
317
+ local ____temp_10
221
318
  if index == nil then
222
- ____temp_5 = value
319
+ ____temp_10 = value
223
320
  else
224
- local ____value_index_4 = value[index + 1]
225
- if ____value_index_4 == nil then
226
- ____value_index_4 = self.defaultValue
321
+ local ____value_index_9 = value[index + 1]
322
+ if ____value_index_9 == nil then
323
+ ____value_index_9 = self.defaultValue
227
324
  end
228
- ____temp_5 = ____value_index_4
325
+ ____temp_10 = ____value_index_9
229
326
  end
230
- return ____temp_5
327
+ return ____temp_10
231
328
  end
232
329
  end
233
330
  return index == nil and ({}) or self.defaultValue
@@ -237,17 +334,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
237
334
  local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
238
335
  if defaultValue ~= nil then
239
336
  local value = self.valueByInstance[entry] or defaultValue
240
- local ____temp_7
337
+ local ____temp_12
241
338
  if index == nil then
242
- ____temp_7 = value
339
+ ____temp_12 = value
243
340
  else
244
- local ____value_index_6 = value[index + 1]
245
- if ____value_index_6 == nil then
246
- ____value_index_6 = self.defaultValue
341
+ local ____value_index_11 = value[index + 1]
342
+ if ____value_index_11 == nil then
343
+ ____value_index_11 = self.defaultValue
247
344
  end
248
- ____temp_7 = ____value_index_6
345
+ ____temp_12 = ____value_index_11
249
346
  end
250
- return ____temp_7
347
+ return ____temp_12
251
348
  end
252
349
  end
253
350
  if index ~= nil then
@@ -292,11 +389,11 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
292
389
  if defaultValueByObjectDataEntryId ~= nil then
293
390
  local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
294
391
  if valueByLevel ~= nil then
295
- local ____valueByLevel_index_8 = valueByLevel[level + 1]
296
- if ____valueByLevel_index_8 == nil then
297
- ____valueByLevel_index_8 = self.defaultValue
392
+ local ____valueByLevel_index_13 = valueByLevel[level + 1]
393
+ if ____valueByLevel_index_13 == nil then
394
+ ____valueByLevel_index_13 = self.defaultValue
298
395
  end
299
- return ____valueByLevel_index_8
396
+ return ____valueByLevel_index_13
300
397
  end
301
398
  end
302
399
  return self.defaultValue
@@ -304,24 +401,24 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
304
401
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
305
402
  if defaultValueByObjectDataEntryId ~= nil then
306
403
  local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
307
- if defaultValueByLevel ~= nil then
308
- local ____opt_9 = self.valueByInstance[entry]
309
- local ____temp_11 = ____opt_9 and ____opt_9[level + 1]
310
- if ____temp_11 == nil then
311
- ____temp_11 = defaultValueByLevel[level + 1]
404
+ if defaultValueByLevel ~= nil or self.isGlobal then
405
+ local ____opt_14 = self.valueByInstance[entry]
406
+ local ____temp_16 = ____opt_14 and ____opt_14[level + 1]
407
+ if ____temp_16 == nil then
408
+ ____temp_16 = (defaultValueByLevel or emptyArray())[level + 1]
312
409
  end
313
- local ____temp_11_12 = ____temp_11
314
- if ____temp_11_12 == nil then
315
- ____temp_11_12 = self.defaultValue
410
+ local ____temp_16_17 = ____temp_16
411
+ if ____temp_16_17 == nil then
412
+ ____temp_16_17 = self.defaultValue
316
413
  end
317
- return ____temp_11_12
414
+ return ____temp_16_17
318
415
  end
319
416
  end
320
- local ____temp_13 = self:getNativeFieldValue(entry, level)
321
- if ____temp_13 == nil then
322
- ____temp_13 = self.defaultValue
417
+ local ____temp_18 = self:getNativeFieldValue(entry, level)
418
+ if ____temp_18 == nil then
419
+ ____temp_18 = self.defaultValue
323
420
  end
324
- return ____temp_13
421
+ return ____temp_18
325
422
  end
326
423
  function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
327
424
  if value == nil then
@@ -364,21 +461,21 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
364
461
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
365
462
  if defaultValueByObjectDataEntryId ~= nil then
366
463
  local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
367
- if defaultValueByLevel ~= nil then
464
+ if defaultValueByLevel ~= nil or self.isGlobal then
368
465
  local valueByLevel = self.valueByInstance[entry]
369
466
  if valueByLevel == nil then
370
467
  valueByLevel = {}
371
468
  self.valueByInstance[entry] = valueByLevel
372
469
  end
373
- local ____valueByLevel_index_14 = valueByLevel[level + 1]
374
- if ____valueByLevel_index_14 == nil then
375
- ____valueByLevel_index_14 = defaultValueByLevel[level + 1]
470
+ local ____valueByLevel_index_19 = valueByLevel[level + 1]
471
+ if ____valueByLevel_index_19 == nil then
472
+ ____valueByLevel_index_19 = (defaultValueByLevel or emptyArray())[level + 1]
376
473
  end
377
- local ____valueByLevel_index_14_15 = ____valueByLevel_index_14
378
- if ____valueByLevel_index_14_15 == nil then
379
- ____valueByLevel_index_14_15 = self.defaultValue
474
+ local ____valueByLevel_index_19_20 = ____valueByLevel_index_19
475
+ if ____valueByLevel_index_19_20 == nil then
476
+ ____valueByLevel_index_19_20 = self.defaultValue
380
477
  end
381
- local previousValue = ____valueByLevel_index_14_15
478
+ local previousValue = ____valueByLevel_index_19_20
382
479
  if value ~= previousValue then
383
480
  valueByLevel[level + 1] = value
384
481
  self:invokeValueChangeEvent(
@@ -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]>;