warscript 0.0.1-dev.a44a461 → 0.0.1-dev.a4646d1
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.
- package/attributes.d.ts +1 -2
- package/attributes.lua +9 -0
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/decl/native.d.ts +6 -4
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +11 -3
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +2 -1
- package/engine/behaviour/ability.lua +10 -18
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +39 -3
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +21 -8
- package/engine/buff.lua +187 -121
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +16 -16
- package/engine/internal/item.lua +135 -49
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +10 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +27 -24
- package/engine/internal/unit.lua +298 -213
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type.lua +5 -4
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +15 -2
- package/engine/object-data/entry/unit-type.lua +135 -33
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +31 -5
- package/engine/object-field/unit.lua +95 -0
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +291 -134
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/package.json +2 -2
- package/patch-lua.lua +9 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/linked-map.d.ts +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +23 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/object-field.lua
CHANGED
|
@@ -23,8 +23,12 @@ local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.Ob
|
|
|
23
23
|
local ____linked_2Dset = require("utility.linked-set")
|
|
24
24
|
local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
|
|
25
25
|
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
26
|
+
local emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
|
|
26
27
|
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
28
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
27
29
|
local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
|
|
30
|
+
local ____arrays = require("utility.arrays")
|
|
31
|
+
local emptyArray = ____arrays.emptyArray
|
|
28
32
|
local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
|
|
29
33
|
local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
|
|
30
34
|
local objectFieldById = {}
|
|
@@ -34,7 +38,11 @@ local idGenerator = __TS__New(
|
|
|
34
38
|
)
|
|
35
39
|
local ObjectFieldBase = __TS__Class()
|
|
36
40
|
ObjectFieldBase.name = "ObjectFieldBase"
|
|
37
|
-
function ObjectFieldBase.prototype.____constructor(self, id)
|
|
41
|
+
function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
|
|
42
|
+
if isGlobal == nil then
|
|
43
|
+
isGlobal = false
|
|
44
|
+
end
|
|
45
|
+
self.isGlobal = isGlobal
|
|
38
46
|
self.valueByInstance = setmetatable({}, {__mode = "k"})
|
|
39
47
|
if objectFieldById[id] ~= nil then
|
|
40
48
|
error(
|
|
@@ -51,14 +59,15 @@ end
|
|
|
51
59
|
function ObjectFieldBase.prototype.supports(self, instance)
|
|
52
60
|
return __TS__InstanceOf(instance, self.instanceClass)
|
|
53
61
|
end
|
|
54
|
-
function ObjectFieldBase.prototype.hasValue(self,
|
|
62
|
+
function ObjectFieldBase.prototype.hasValue(self, objectDataEntryId)
|
|
55
63
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
56
|
-
return defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[
|
|
64
|
+
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[objectDataEntryId] ~= nil or self:hasNativeFieldValue(objectDataEntryId)
|
|
57
65
|
end
|
|
58
|
-
function ObjectFieldBase.create(self, id)
|
|
66
|
+
function ObjectFieldBase.create(self, id, isGlobal)
|
|
59
67
|
return __TS__New(
|
|
60
68
|
self,
|
|
61
|
-
id or idGenerator:next()
|
|
69
|
+
id or idGenerator:next(),
|
|
70
|
+
isGlobal
|
|
62
71
|
)
|
|
63
72
|
end
|
|
64
73
|
function ObjectFieldBase.of(self, id)
|
|
@@ -91,7 +100,7 @@ function ObjectField.prototype.getValue(self, entry, includeModifiers)
|
|
|
91
100
|
end
|
|
92
101
|
return self.defaultValue
|
|
93
102
|
end
|
|
94
|
-
if includeModifiers
|
|
103
|
+
if not includeModifiers then
|
|
95
104
|
local originalValueByInstance = self.originalValueByInstance
|
|
96
105
|
if originalValueByInstance ~= nil then
|
|
97
106
|
local originalValue = originalValueByInstance[entry]
|
|
@@ -115,6 +124,7 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
115
124
|
defaultValueByObjectDataEntryId[entry.id] = value
|
|
116
125
|
return true
|
|
117
126
|
end
|
|
127
|
+
local previousOriginalValue
|
|
118
128
|
local modifiersByInstance = self.modifiersByInstance
|
|
119
129
|
if modifiersByInstance ~= nil then
|
|
120
130
|
local modifiers = modifiersByInstance[entry]
|
|
@@ -124,11 +134,40 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
124
134
|
originalValueByInstance = mutableWeakLuaMap()
|
|
125
135
|
self.originalValueByInstance = originalValueByInstance
|
|
126
136
|
end
|
|
137
|
+
previousOriginalValue = originalValueByInstance[entry]
|
|
138
|
+
if value == previousOriginalValue then
|
|
139
|
+
return true
|
|
140
|
+
end
|
|
127
141
|
originalValueByInstance[entry] = value
|
|
128
|
-
value = self:calculateActualValue(entry)
|
|
142
|
+
value = (self:calculateActualValue(entry))
|
|
129
143
|
end
|
|
130
144
|
end
|
|
131
|
-
|
|
145
|
+
local previousValue = self:setActualValue(entry, value)
|
|
146
|
+
if previousValue == nil then
|
|
147
|
+
return false
|
|
148
|
+
end
|
|
149
|
+
if previousOriginalValue ~= nil or value ~= previousValue then
|
|
150
|
+
local ____self_invokeValueChangeEvent_2 = self.invokeValueChangeEvent
|
|
151
|
+
local ____entry_1 = entry
|
|
152
|
+
local ____previousOriginalValue_0 = previousOriginalValue
|
|
153
|
+
if ____previousOriginalValue_0 == nil then
|
|
154
|
+
____previousOriginalValue_0 = previousValue
|
|
155
|
+
end
|
|
156
|
+
____self_invokeValueChangeEvent_2(
|
|
157
|
+
self,
|
|
158
|
+
____entry_1,
|
|
159
|
+
self,
|
|
160
|
+
____previousOriginalValue_0,
|
|
161
|
+
value
|
|
162
|
+
)
|
|
163
|
+
end
|
|
164
|
+
return true
|
|
165
|
+
end
|
|
166
|
+
function ObjectField.prototype.updateActualValue(self, instance)
|
|
167
|
+
local actualValue, hasModifiers = self:calculateActualValue(instance)
|
|
168
|
+
if hasModifiers then
|
|
169
|
+
self:setActualValue(instance, actualValue)
|
|
170
|
+
end
|
|
132
171
|
end
|
|
133
172
|
function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
134
173
|
local modifiersByInstance = self.modifiersByInstance
|
|
@@ -142,11 +181,14 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
|
142
181
|
originalValueByInstance = mutableWeakLuaMap()
|
|
143
182
|
self.originalValueByInstance = originalValueByInstance
|
|
144
183
|
end
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
184
|
+
local ____originalValueByInstance_4 = originalValueByInstance
|
|
185
|
+
local ____instance_5 = instance
|
|
186
|
+
local ____originalValueByInstance_instance_3 = originalValueByInstance[instance]
|
|
187
|
+
if ____originalValueByInstance_instance_3 == nil then
|
|
188
|
+
____originalValueByInstance_instance_3 = self:getActualValue(instance)
|
|
189
|
+
end
|
|
190
|
+
____originalValueByInstance_4[____instance_5] = ____originalValueByInstance_instance_3
|
|
191
|
+
self:setActualValue(instance, (self:calculateActualValue(instance)))
|
|
150
192
|
end
|
|
151
193
|
end
|
|
152
194
|
function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
@@ -154,10 +196,7 @@ function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
|
154
196
|
if modifiersByInstance ~= nil then
|
|
155
197
|
local modifiers = modifiersByInstance[instance]
|
|
156
198
|
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
157
|
-
self:setActualValue(
|
|
158
|
-
instance,
|
|
159
|
-
self:calculateActualValue(instance)
|
|
160
|
-
)
|
|
199
|
+
self:setActualValue(instance, (self:calculateActualValue(instance)))
|
|
161
200
|
return true
|
|
162
201
|
end
|
|
163
202
|
end
|
|
@@ -185,70 +224,70 @@ function ObjectField.prototype.trySetValue(self, entry, value)
|
|
|
185
224
|
end
|
|
186
225
|
function ObjectField.prototype.getActualValue(self, instance)
|
|
187
226
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
188
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
189
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
|
|
190
|
-
if defaultValue ~= nil then
|
|
191
|
-
local
|
|
192
|
-
if
|
|
193
|
-
|
|
227
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
228
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
229
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
230
|
+
local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
|
|
231
|
+
if ____self_valueByInstance_instance_6 == nil then
|
|
232
|
+
____self_valueByInstance_instance_6 = defaultValue
|
|
194
233
|
end
|
|
195
|
-
|
|
234
|
+
local ____self_valueByInstance_instance_6_7 = ____self_valueByInstance_instance_6
|
|
235
|
+
if ____self_valueByInstance_instance_6_7 == nil then
|
|
236
|
+
____self_valueByInstance_instance_6_7 = self.defaultValue
|
|
237
|
+
end
|
|
238
|
+
return ____self_valueByInstance_instance_6_7
|
|
196
239
|
end
|
|
197
240
|
end
|
|
198
|
-
local
|
|
199
|
-
if
|
|
200
|
-
|
|
241
|
+
local ____temp_8 = self:getNativeFieldValue(instance)
|
|
242
|
+
if ____temp_8 == nil then
|
|
243
|
+
____temp_8 = self.defaultValue
|
|
201
244
|
end
|
|
202
|
-
return
|
|
245
|
+
return ____temp_8
|
|
203
246
|
end
|
|
204
247
|
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
205
248
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
249
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
250
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
251
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
252
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
253
|
+
local ____self_valueByInstance_instance_9 = self.valueByInstance[instance]
|
|
254
|
+
if ____self_valueByInstance_instance_9 == nil then
|
|
255
|
+
____self_valueByInstance_instance_9 = defaultValue
|
|
212
256
|
end
|
|
213
|
-
local
|
|
214
|
-
if
|
|
215
|
-
|
|
257
|
+
local ____self_valueByInstance_instance_9_10 = ____self_valueByInstance_instance_9
|
|
258
|
+
if ____self_valueByInstance_instance_9_10 == nil then
|
|
259
|
+
____self_valueByInstance_instance_9_10 = self.defaultValue
|
|
216
260
|
end
|
|
217
|
-
local previousValue =
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
221
|
-
end
|
|
222
|
-
return true
|
|
261
|
+
local previousValue = ____self_valueByInstance_instance_9_10
|
|
262
|
+
self.valueByInstance[instance] = value
|
|
263
|
+
return previousValue
|
|
223
264
|
end
|
|
224
265
|
end
|
|
225
|
-
if not self:hasNativeFieldValue(
|
|
226
|
-
return
|
|
266
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
267
|
+
return nil
|
|
227
268
|
end
|
|
228
269
|
local previousValue = self:getNativeFieldValue(instance)
|
|
229
|
-
if value ~= previousValue then
|
|
230
|
-
|
|
231
|
-
return false
|
|
232
|
-
end
|
|
233
|
-
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
270
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, value) then
|
|
271
|
+
return nil
|
|
234
272
|
end
|
|
235
|
-
return
|
|
273
|
+
return previousValue
|
|
236
274
|
end
|
|
237
275
|
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
238
|
-
local
|
|
239
|
-
local originalValue =
|
|
240
|
-
local
|
|
241
|
-
local modifiers =
|
|
276
|
+
local ____opt_11 = self.originalValueByInstance
|
|
277
|
+
local originalValue = ____opt_11 and ____opt_11[instance]
|
|
278
|
+
local ____opt_13 = self.modifiersByInstance
|
|
279
|
+
local modifiers = ____opt_13 and ____opt_13[instance]
|
|
242
280
|
if originalValue ~= nil then
|
|
243
281
|
local value = originalValue
|
|
244
282
|
if modifiers ~= nil then
|
|
245
283
|
for modifier in pairs(modifiers) do
|
|
246
284
|
value = modifier(instance, value, originalValue)
|
|
247
285
|
end
|
|
286
|
+
return value, true
|
|
248
287
|
end
|
|
249
|
-
return value
|
|
288
|
+
return value, false
|
|
250
289
|
end
|
|
251
|
-
return self.defaultValue
|
|
290
|
+
return self.defaultValue, false
|
|
252
291
|
end
|
|
253
292
|
function ObjectField.prototype.invokeValueChangeEvent(self, ...)
|
|
254
293
|
self:invokeValueChangeEventRecursive(
|
|
@@ -303,37 +342,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
303
342
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
304
343
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
305
344
|
if value ~= nil then
|
|
306
|
-
local
|
|
345
|
+
local ____temp_16
|
|
307
346
|
if index == nil then
|
|
308
|
-
|
|
347
|
+
____temp_16 = value
|
|
309
348
|
else
|
|
310
|
-
local
|
|
311
|
-
if
|
|
312
|
-
|
|
349
|
+
local ____value_index_15 = value[index + 1]
|
|
350
|
+
if ____value_index_15 == nil then
|
|
351
|
+
____value_index_15 = self.defaultValue
|
|
313
352
|
end
|
|
314
|
-
|
|
353
|
+
____temp_16 = ____value_index_15
|
|
315
354
|
end
|
|
316
|
-
return
|
|
355
|
+
return ____temp_16
|
|
317
356
|
end
|
|
318
357
|
end
|
|
319
358
|
return index == nil and ({}) or self.defaultValue
|
|
320
359
|
end
|
|
321
360
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
322
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
323
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
324
|
-
if defaultValue ~= nil then
|
|
325
|
-
local value = self.valueByInstance[entry] or defaultValue
|
|
326
|
-
local
|
|
361
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
362
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
363
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
364
|
+
local value = self.valueByInstance[entry] or defaultValue or emptyArray()
|
|
365
|
+
local ____temp_18
|
|
327
366
|
if index == nil then
|
|
328
|
-
|
|
367
|
+
____temp_18 = value
|
|
329
368
|
else
|
|
330
|
-
local
|
|
331
|
-
if
|
|
332
|
-
|
|
369
|
+
local ____value_index_17 = value[index + 1]
|
|
370
|
+
if ____value_index_17 == nil then
|
|
371
|
+
____value_index_17 = self.defaultValue
|
|
333
372
|
end
|
|
334
|
-
|
|
373
|
+
____temp_18 = ____value_index_17
|
|
335
374
|
end
|
|
336
|
-
return
|
|
375
|
+
return ____temp_18
|
|
337
376
|
end
|
|
338
377
|
end
|
|
339
378
|
if index ~= nil then
|
|
@@ -378,36 +417,22 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
378
417
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
379
418
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
380
419
|
if valueByLevel ~= nil then
|
|
381
|
-
local
|
|
382
|
-
if
|
|
383
|
-
|
|
420
|
+
local ____valueByLevel_index_19 = valueByLevel[level + 1]
|
|
421
|
+
if ____valueByLevel_index_19 == nil then
|
|
422
|
+
____valueByLevel_index_19 = self.defaultValue
|
|
384
423
|
end
|
|
385
|
-
return
|
|
424
|
+
return ____valueByLevel_index_19
|
|
386
425
|
end
|
|
387
426
|
end
|
|
388
427
|
return self.defaultValue
|
|
389
428
|
end
|
|
390
|
-
local
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
local ____temp_15 = ____opt_13 and ____opt_13[level + 1]
|
|
396
|
-
if ____temp_15 == nil then
|
|
397
|
-
____temp_15 = defaultValueByLevel[level + 1]
|
|
398
|
-
end
|
|
399
|
-
local ____temp_15_16 = ____temp_15
|
|
400
|
-
if ____temp_15_16 == nil then
|
|
401
|
-
____temp_15_16 = self.defaultValue
|
|
402
|
-
end
|
|
403
|
-
return ____temp_15_16
|
|
404
|
-
end
|
|
405
|
-
end
|
|
406
|
-
local ____temp_17 = self:getNativeFieldValue(entry, level)
|
|
407
|
-
if ____temp_17 == nil then
|
|
408
|
-
____temp_17 = self.defaultValue
|
|
429
|
+
local ____opt_22 = self.originalValueByLevelByInstance
|
|
430
|
+
local ____opt_20 = ____opt_22 and ____opt_22[entry]
|
|
431
|
+
local originalValue = ____opt_20 and ____opt_20[level]
|
|
432
|
+
if originalValue ~= nil then
|
|
433
|
+
return originalValue
|
|
409
434
|
end
|
|
410
|
-
return
|
|
435
|
+
return self:getActualValue(entry, level)
|
|
411
436
|
end
|
|
412
437
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
413
438
|
if value == nil then
|
|
@@ -447,55 +472,114 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
447
472
|
valueByLevel[level + 1] = value
|
|
448
473
|
return true
|
|
449
474
|
end
|
|
450
|
-
local
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
local ____valueByLevel_index_18 = valueByLevel[level + 1]
|
|
460
|
-
if ____valueByLevel_index_18 == nil then
|
|
461
|
-
____valueByLevel_index_18 = defaultValueByLevel[level + 1]
|
|
462
|
-
end
|
|
463
|
-
local ____valueByLevel_index_18_19 = ____valueByLevel_index_18
|
|
464
|
-
if ____valueByLevel_index_18_19 == nil then
|
|
465
|
-
____valueByLevel_index_18_19 = self.defaultValue
|
|
475
|
+
local previousOriginalValue
|
|
476
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
477
|
+
if modifiersByInstance ~= nil then
|
|
478
|
+
local modifiers = modifiersByInstance[entry]
|
|
479
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
480
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
481
|
+
if originalValueByLevelByInstance == nil then
|
|
482
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
483
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
466
484
|
end
|
|
467
|
-
local
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
entry,
|
|
472
|
-
self,
|
|
473
|
-
level,
|
|
474
|
-
previousValue,
|
|
475
|
-
value
|
|
476
|
-
)
|
|
485
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)
|
|
486
|
+
previousOriginalValue = originalValueByLevel[level]
|
|
487
|
+
if value == previousOriginalValue then
|
|
488
|
+
return true
|
|
477
489
|
end
|
|
478
|
-
|
|
490
|
+
originalValueByLevel[level] = value
|
|
491
|
+
value = self:calculateActualValue(entry, level)
|
|
479
492
|
end
|
|
480
493
|
end
|
|
481
|
-
|
|
494
|
+
local previousValue = self:setActualValue(entry, level, value)
|
|
495
|
+
if previousValue == nil then
|
|
482
496
|
return false
|
|
483
497
|
end
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
498
|
+
if previousOriginalValue ~= nil or value ~= previousValue then
|
|
499
|
+
local ____self_invokeValueChangeEvent_26 = self.invokeValueChangeEvent
|
|
500
|
+
local ____entry_25 = entry
|
|
501
|
+
local ____previousOriginalValue_24 = previousOriginalValue
|
|
502
|
+
if ____previousOriginalValue_24 == nil then
|
|
503
|
+
____previousOriginalValue_24 = previousValue
|
|
488
504
|
end
|
|
489
|
-
|
|
490
|
-
|
|
505
|
+
____self_invokeValueChangeEvent_26(
|
|
506
|
+
self,
|
|
507
|
+
____entry_25,
|
|
491
508
|
self,
|
|
492
509
|
level,
|
|
493
|
-
|
|
510
|
+
____previousOriginalValue_24,
|
|
494
511
|
value
|
|
495
512
|
)
|
|
496
513
|
end
|
|
497
514
|
return true
|
|
498
515
|
end
|
|
516
|
+
function ObjectLevelField.prototype.updateActualValue(self, instance, level)
|
|
517
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
518
|
+
if modifiersByInstance == nil then
|
|
519
|
+
return
|
|
520
|
+
end
|
|
521
|
+
local modifiers = modifiersByInstance[instance]
|
|
522
|
+
if modifiers == nil or modifiers.size == 0 then
|
|
523
|
+
return
|
|
524
|
+
end
|
|
525
|
+
if level == nil then
|
|
526
|
+
for i = 0, self:getLevelCount(instance) - 1 do
|
|
527
|
+
self:updateActualValue(instance, i)
|
|
528
|
+
end
|
|
529
|
+
return
|
|
530
|
+
end
|
|
531
|
+
self:setActualValue(
|
|
532
|
+
instance,
|
|
533
|
+
level,
|
|
534
|
+
self:calculateActualValue(instance, level)
|
|
535
|
+
)
|
|
536
|
+
end
|
|
537
|
+
function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
|
|
538
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
539
|
+
if modifiersByInstance == nil then
|
|
540
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
541
|
+
self.modifiersByInstance = modifiersByInstance
|
|
542
|
+
end
|
|
543
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
544
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
545
|
+
if originalValueByLevelByInstance == nil then
|
|
546
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
547
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
548
|
+
end
|
|
549
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
|
|
550
|
+
local levelCount = self:getLevelCount(instance)
|
|
551
|
+
for level = 0, levelCount - 1 do
|
|
552
|
+
local ____originalValueByLevel_level_27 = originalValueByLevel[level]
|
|
553
|
+
if ____originalValueByLevel_level_27 == nil then
|
|
554
|
+
____originalValueByLevel_level_27 = self:getActualValue(instance, level)
|
|
555
|
+
end
|
|
556
|
+
originalValueByLevel[level] = ____originalValueByLevel_level_27
|
|
557
|
+
self:setActualValue(
|
|
558
|
+
instance,
|
|
559
|
+
level,
|
|
560
|
+
self:calculateActualValue(instance, level)
|
|
561
|
+
)
|
|
562
|
+
end
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
function ObjectLevelField.prototype.removeModifier(self, instance, modifier)
|
|
566
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
567
|
+
if modifiersByInstance ~= nil then
|
|
568
|
+
local modifiers = modifiersByInstance[instance]
|
|
569
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
570
|
+
local levelCount = self:getLevelCount(instance)
|
|
571
|
+
for level = 0, levelCount - 1 do
|
|
572
|
+
self:setActualValue(
|
|
573
|
+
instance,
|
|
574
|
+
level,
|
|
575
|
+
self:calculateActualValue(instance, level)
|
|
576
|
+
)
|
|
577
|
+
end
|
|
578
|
+
return true
|
|
579
|
+
end
|
|
580
|
+
end
|
|
581
|
+
return false
|
|
582
|
+
end
|
|
499
583
|
function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
|
|
500
584
|
if value ~= nil then
|
|
501
585
|
if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
|
|
@@ -511,6 +595,79 @@ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value
|
|
|
511
595
|
end
|
|
512
596
|
return self:setValue(entry, levelOrValue)
|
|
513
597
|
end
|
|
598
|
+
function ObjectLevelField.prototype.getActualValue(self, instance, level)
|
|
599
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
600
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
601
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
602
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
603
|
+
local ____opt_28 = self.valueByInstance[instance]
|
|
604
|
+
local ____temp_30 = ____opt_28 and ____opt_28[level + 1]
|
|
605
|
+
if ____temp_30 == nil then
|
|
606
|
+
____temp_30 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
607
|
+
end
|
|
608
|
+
local ____temp_30_31 = ____temp_30
|
|
609
|
+
if ____temp_30_31 == nil then
|
|
610
|
+
____temp_30_31 = self.defaultValue
|
|
611
|
+
end
|
|
612
|
+
return ____temp_30_31
|
|
613
|
+
end
|
|
614
|
+
end
|
|
615
|
+
local ____temp_32 = self:getNativeFieldValue(instance, level)
|
|
616
|
+
if ____temp_32 == nil then
|
|
617
|
+
____temp_32 = self.defaultValue
|
|
618
|
+
end
|
|
619
|
+
return ____temp_32
|
|
620
|
+
end
|
|
621
|
+
function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
|
|
622
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
623
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
624
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
625
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
626
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
627
|
+
local valueByLevel = self.valueByInstance[instance]
|
|
628
|
+
if valueByLevel == nil then
|
|
629
|
+
valueByLevel = {}
|
|
630
|
+
self.valueByInstance[instance] = valueByLevel
|
|
631
|
+
end
|
|
632
|
+
local ____valueByLevel_index_33 = valueByLevel[level + 1]
|
|
633
|
+
if ____valueByLevel_index_33 == nil then
|
|
634
|
+
____valueByLevel_index_33 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
635
|
+
end
|
|
636
|
+
local ____valueByLevel_index_33_34 = ____valueByLevel_index_33
|
|
637
|
+
if ____valueByLevel_index_33_34 == nil then
|
|
638
|
+
____valueByLevel_index_33_34 = self.defaultValue
|
|
639
|
+
end
|
|
640
|
+
local previousValue = ____valueByLevel_index_33_34
|
|
641
|
+
valueByLevel[level + 1] = value
|
|
642
|
+
return previousValue
|
|
643
|
+
end
|
|
644
|
+
end
|
|
645
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
646
|
+
return nil
|
|
647
|
+
end
|
|
648
|
+
local previousValue = self:getNativeFieldValue(instance, level)
|
|
649
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, level, value) then
|
|
650
|
+
return nil
|
|
651
|
+
end
|
|
652
|
+
return previousValue
|
|
653
|
+
end
|
|
654
|
+
function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
|
|
655
|
+
local ____opt_37 = self.originalValueByLevelByInstance
|
|
656
|
+
local ____opt_35 = ____opt_37 and ____opt_37[instance]
|
|
657
|
+
local originalValue = ____opt_35 and ____opt_35[level]
|
|
658
|
+
local ____opt_39 = self.modifiersByInstance
|
|
659
|
+
local modifiers = ____opt_39 and ____opt_39[instance]
|
|
660
|
+
if originalValue ~= nil then
|
|
661
|
+
local value = originalValue
|
|
662
|
+
if modifiers ~= nil then
|
|
663
|
+
for modifier in pairs(modifiers) do
|
|
664
|
+
value = modifier(instance, level, value, originalValue)
|
|
665
|
+
end
|
|
666
|
+
end
|
|
667
|
+
return value
|
|
668
|
+
end
|
|
669
|
+
return self.defaultValue
|
|
670
|
+
end
|
|
514
671
|
function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
|
|
515
672
|
self:invokeValueChangeEventRecursive(
|
|
516
673
|
getClass(self),
|
package/engine/random.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
import { ReadonlyNonEmptyArray } from "../utility/types";
|
|
2
3
|
export declare const randomAngle: () => number;
|
|
3
4
|
export declare const randomInteger: {
|
|
4
5
|
(upperBound?: number): number;
|
|
@@ -9,3 +10,11 @@ export declare const randomFloat: {
|
|
|
9
10
|
(lowerBound: number, upperBound: number): number;
|
|
10
11
|
};
|
|
11
12
|
export declare const randomXY: (centerX: number, centerY: number, range: number) => LuaMultiReturn<[x: number, y: number]>;
|
|
13
|
+
export declare const randomElement: {
|
|
14
|
+
<T>(array: ReadonlyNonEmptyArray<T>): T;
|
|
15
|
+
<T>(array: ReadonlyArray<T>): T | undefined;
|
|
16
|
+
};
|
|
17
|
+
export declare const random: {
|
|
18
|
+
<T>(element: T, ...elements: T[]): T;
|
|
19
|
+
<T>(...elements: T[]): T | undefined;
|
|
20
|
+
};
|
package/engine/random.lua
CHANGED
|
@@ -4,6 +4,7 @@ local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
|
4
4
|
local PI = ____math.PI
|
|
5
5
|
local getRandomInt = GetRandomInt
|
|
6
6
|
local getRandomReal = GetRandomReal
|
|
7
|
+
local select = _G.select
|
|
7
8
|
local cos = math.cos
|
|
8
9
|
local sin = math.sin
|
|
9
10
|
local sqrt = math.sqrt
|
|
@@ -15,4 +16,16 @@ ____exports.randomXY = function(centerX, centerY, range)
|
|
|
15
16
|
local t = getRandomReal(0, 1) * 2 * PI
|
|
16
17
|
return centerX + r * cos(t), centerY + r * sin(t)
|
|
17
18
|
end
|
|
19
|
+
____exports.randomElement = function(array)
|
|
20
|
+
return array[getRandomInt(1, #array)]
|
|
21
|
+
end
|
|
22
|
+
____exports.random = function(...)
|
|
23
|
+
return (select(
|
|
24
|
+
getRandomInt(
|
|
25
|
+
1,
|
|
26
|
+
select("#", ...)
|
|
27
|
+
),
|
|
28
|
+
...
|
|
29
|
+
))
|
|
30
|
+
end
|
|
18
31
|
return ____exports
|
|
@@ -376,8 +376,8 @@ export declare const INVISIBILITY_TRANSITION_TIME_ABILITY_FLOAT_LEVEL_FIELD: Abi
|
|
|
376
376
|
export declare const ACTIVATION_RADIUS_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
377
377
|
export declare const AMOUNT_REGENERATED_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
378
378
|
export declare const DAMAGE_PER_SECOND_POI1_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
379
|
-
export declare const
|
|
380
|
-
export declare const
|
|
379
|
+
export declare const MOVEMENT_SPEED_FACTOR_POI2_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
380
|
+
export declare const ATTACK_SPEED_FACTOR_POI3_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
381
381
|
export declare const EXTRA_DAMAGE_POA1_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
382
382
|
export declare const DAMAGE_PER_SECOND_POA2_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
383
383
|
export declare const ATTACK_SPEED_FACTOR_POA3_ABILITY_FLOAT_LEVEL_FIELD: AbilityFloatLevelField & symbol;
|
|
@@ -387,8 +387,8 @@ ____exports.INVISIBILITY_TRANSITION_TIME_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloa
|
|
|
387
387
|
____exports.ACTIVATION_RADIUS_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Neu1"))
|
|
388
388
|
____exports.AMOUNT_REGENERATED_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Arm1"))
|
|
389
389
|
____exports.DAMAGE_PER_SECOND_POI1_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Poi1"))
|
|
390
|
-
____exports.
|
|
391
|
-
____exports.
|
|
390
|
+
____exports.MOVEMENT_SPEED_FACTOR_POI2_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Poi2"))
|
|
391
|
+
____exports.ATTACK_SPEED_FACTOR_POI3_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Poi3"))
|
|
392
392
|
____exports.EXTRA_DAMAGE_POA1_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Poa1"))
|
|
393
393
|
____exports.DAMAGE_PER_SECOND_POA2_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Poa2"))
|
|
394
394
|
____exports.ATTACK_SPEED_FACTOR_POA3_ABILITY_FLOAT_LEVEL_FIELD = AbilityFloatLevelField:create(fourCC("Poa3"))
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { UnitClassificationsField, UnitFloatField, UnitFlyHeightField, UnitHealthRegenerationTypeField, UnitIntegerField, UnitPropulsionWindowField, UnitScalingValueField } from "../../object-field/unit";
|
|
3
|
+
export declare const PROPULSION_WINDOW_UNIT_FIELD: UnitPropulsionWindowField & symbol;
|
|
4
|
+
export declare const CLASSIFICATIONS_UNIT_FIELD: UnitClassificationsField & symbol;
|
|
5
|
+
export declare const FLY_HEIGHT_UNIT_FIELD: UnitFlyHeightField & symbol;
|
|
6
|
+
export declare const SCALING_VALUE_UNIT_FIELD: UnitScalingValueField & symbol;
|
|
7
|
+
export declare const HEALTH_REGENERATION_RATE_UNIT_FIELD: UnitFloatField & symbol;
|
|
8
|
+
export declare const MANA_REGENERATION_RATE_UNIT_FIELD: UnitFloatField & symbol;
|
|
9
|
+
export declare const HEALTH_REGENERATION_TYPE_UNIT_FIELD: UnitHealthRegenerationTypeField & symbol;
|
|
10
|
+
export declare const STRENGTH_UNIT_FIELD: UnitIntegerField<number> & symbol;
|
|
11
|
+
export declare const AGILITY_UNIT_FIELD: UnitIntegerField<number> & symbol;
|
|
12
|
+
export declare const INTELLIGENCE_UNIT_FIELD: UnitIntegerField<number> & symbol;
|