warscript 0.0.1-dev.87bdb89 → 0.0.1-dev.8895725
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 -0
- package/attributes.lua +9 -0
- package/core/types/frame.lua +71 -22
- package/core/types/handle.lua +6 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +17 -1
- package/core/types/player.lua +70 -24
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.lua +1 -1
- 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/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +7 -5
- 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 +11 -6
- package/engine/behaviour/ability.lua +37 -16
- 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 +26 -5
- package/engine/behaviour/unit.lua +180 -27
- package/engine/buff.d.ts +67 -22
- package/engine/buff.lua +371 -182
- package/engine/internal/ability.d.ts +3 -1
- package/engine/internal/ability.lua +49 -26
- package/engine/internal/item/ability.lua +51 -1
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +11 -14
- package/engine/internal/item.lua +81 -70
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -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 -5
- package/engine/internal/unit/ability.lua +96 -21
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- 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/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -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+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +20 -24
- package/engine/internal/unit.lua +232 -240
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +86 -1
- 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/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +89 -8
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- 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 +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +31 -5
- package/engine/object-field/unit.lua +95 -0
- package/engine/object-field.d.ts +14 -4
- package/engine/object-field.lua +282 -134
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- 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 +26 -3
- package/engine/text-tag.lua +217 -11
- package/engine/unit.d.ts +6 -0
- package/engine/unit.lua +6 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/objutil/object.lua +1 -1
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -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 +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -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/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -26
- package/core/types/order.lua +0 -65
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/object-field.lua
CHANGED
|
@@ -23,7 +23,9 @@ 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
|
|
28
30
|
local ____arrays = require("utility.arrays")
|
|
29
31
|
local emptyArray = ____arrays.emptyArray
|
|
@@ -38,7 +40,7 @@ local ObjectFieldBase = __TS__Class()
|
|
|
38
40
|
ObjectFieldBase.name = "ObjectFieldBase"
|
|
39
41
|
function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
|
|
40
42
|
if isGlobal == nil then
|
|
41
|
-
isGlobal =
|
|
43
|
+
isGlobal = false
|
|
42
44
|
end
|
|
43
45
|
self.isGlobal = isGlobal
|
|
44
46
|
self.valueByInstance = setmetatable({}, {__mode = "k"})
|
|
@@ -57,9 +59,9 @@ end
|
|
|
57
59
|
function ObjectFieldBase.prototype.supports(self, instance)
|
|
58
60
|
return __TS__InstanceOf(instance, self.instanceClass)
|
|
59
61
|
end
|
|
60
|
-
function ObjectFieldBase.prototype.hasValue(self,
|
|
62
|
+
function ObjectFieldBase.prototype.hasValue(self, objectDataEntryId)
|
|
61
63
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
62
|
-
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[
|
|
64
|
+
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[objectDataEntryId] ~= nil or self:hasNativeFieldValue(objectDataEntryId)
|
|
63
65
|
end
|
|
64
66
|
function ObjectFieldBase.create(self, id, isGlobal)
|
|
65
67
|
return __TS__New(
|
|
@@ -98,7 +100,7 @@ function ObjectField.prototype.getValue(self, entry, includeModifiers)
|
|
|
98
100
|
end
|
|
99
101
|
return self.defaultValue
|
|
100
102
|
end
|
|
101
|
-
if includeModifiers
|
|
103
|
+
if not includeModifiers then
|
|
102
104
|
local originalValueByInstance = self.originalValueByInstance
|
|
103
105
|
if originalValueByInstance ~= nil then
|
|
104
106
|
local originalValue = originalValueByInstance[entry]
|
|
@@ -122,6 +124,7 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
122
124
|
defaultValueByObjectDataEntryId[entry.id] = value
|
|
123
125
|
return true
|
|
124
126
|
end
|
|
127
|
+
local previousOriginalValue
|
|
125
128
|
local modifiersByInstance = self.modifiersByInstance
|
|
126
129
|
if modifiersByInstance ~= nil then
|
|
127
130
|
local modifiers = modifiersByInstance[entry]
|
|
@@ -131,11 +134,40 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
131
134
|
originalValueByInstance = mutableWeakLuaMap()
|
|
132
135
|
self.originalValueByInstance = originalValueByInstance
|
|
133
136
|
end
|
|
137
|
+
previousOriginalValue = originalValueByInstance[entry]
|
|
138
|
+
if value == previousOriginalValue then
|
|
139
|
+
return true
|
|
140
|
+
end
|
|
134
141
|
originalValueByInstance[entry] = value
|
|
135
|
-
value = self:calculateActualValue(entry)
|
|
142
|
+
value = (self:calculateActualValue(entry))
|
|
136
143
|
end
|
|
137
144
|
end
|
|
138
|
-
|
|
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
|
|
139
171
|
end
|
|
140
172
|
function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
141
173
|
local modifiersByInstance = self.modifiersByInstance
|
|
@@ -149,11 +181,14 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
|
149
181
|
originalValueByInstance = mutableWeakLuaMap()
|
|
150
182
|
self.originalValueByInstance = originalValueByInstance
|
|
151
183
|
end
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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)))
|
|
157
192
|
end
|
|
158
193
|
end
|
|
159
194
|
function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
@@ -161,10 +196,7 @@ function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
|
161
196
|
if modifiersByInstance ~= nil then
|
|
162
197
|
local modifiers = modifiersByInstance[instance]
|
|
163
198
|
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
164
|
-
self:setActualValue(
|
|
165
|
-
instance,
|
|
166
|
-
self:calculateActualValue(instance)
|
|
167
|
-
)
|
|
199
|
+
self:setActualValue(instance, (self:calculateActualValue(instance)))
|
|
168
200
|
return true
|
|
169
201
|
end
|
|
170
202
|
end
|
|
@@ -192,74 +224,70 @@ function ObjectField.prototype.trySetValue(self, entry, value)
|
|
|
192
224
|
end
|
|
193
225
|
function ObjectField.prototype.getActualValue(self, instance)
|
|
194
226
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
195
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
196
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
|
|
227
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
228
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
197
229
|
if defaultValue ~= nil or self.isGlobal then
|
|
198
|
-
local
|
|
199
|
-
if
|
|
200
|
-
|
|
230
|
+
local ____self_valueByInstance_instance_6 = self.valueByInstance[instance]
|
|
231
|
+
if ____self_valueByInstance_instance_6 == nil then
|
|
232
|
+
____self_valueByInstance_instance_6 = defaultValue
|
|
201
233
|
end
|
|
202
|
-
local
|
|
203
|
-
if
|
|
204
|
-
|
|
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
|
|
205
237
|
end
|
|
206
|
-
return
|
|
238
|
+
return ____self_valueByInstance_instance_6_7
|
|
207
239
|
end
|
|
208
240
|
end
|
|
209
|
-
local
|
|
210
|
-
if
|
|
211
|
-
|
|
241
|
+
local ____temp_8 = self:getNativeFieldValue(instance)
|
|
242
|
+
if ____temp_8 == nil then
|
|
243
|
+
____temp_8 = self.defaultValue
|
|
212
244
|
end
|
|
213
|
-
return
|
|
245
|
+
return ____temp_8
|
|
214
246
|
end
|
|
215
247
|
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
216
248
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
217
|
-
|
|
218
|
-
|
|
249
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
250
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
251
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
219
252
|
if defaultValue ~= nil or self.isGlobal then
|
|
220
|
-
local
|
|
221
|
-
if
|
|
222
|
-
|
|
253
|
+
local ____self_valueByInstance_instance_9 = self.valueByInstance[instance]
|
|
254
|
+
if ____self_valueByInstance_instance_9 == nil then
|
|
255
|
+
____self_valueByInstance_instance_9 = defaultValue
|
|
223
256
|
end
|
|
224
|
-
local
|
|
225
|
-
if
|
|
226
|
-
|
|
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
|
|
227
260
|
end
|
|
228
|
-
local previousValue =
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
232
|
-
end
|
|
233
|
-
return true
|
|
261
|
+
local previousValue = ____self_valueByInstance_instance_9_10
|
|
262
|
+
self.valueByInstance[instance] = value
|
|
263
|
+
return previousValue
|
|
234
264
|
end
|
|
235
265
|
end
|
|
236
|
-
if not self:hasNativeFieldValue(
|
|
237
|
-
return
|
|
266
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
267
|
+
return nil
|
|
238
268
|
end
|
|
239
269
|
local previousValue = self:getNativeFieldValue(instance)
|
|
240
|
-
if value ~= previousValue then
|
|
241
|
-
|
|
242
|
-
return false
|
|
243
|
-
end
|
|
244
|
-
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
270
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, value) then
|
|
271
|
+
return nil
|
|
245
272
|
end
|
|
246
|
-
return
|
|
273
|
+
return previousValue
|
|
247
274
|
end
|
|
248
275
|
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
249
|
-
local
|
|
250
|
-
local originalValue =
|
|
251
|
-
local
|
|
252
|
-
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]
|
|
253
280
|
if originalValue ~= nil then
|
|
254
281
|
local value = originalValue
|
|
255
282
|
if modifiers ~= nil then
|
|
256
283
|
for modifier in pairs(modifiers) do
|
|
257
284
|
value = modifier(instance, value, originalValue)
|
|
258
285
|
end
|
|
286
|
+
return value, true
|
|
259
287
|
end
|
|
260
|
-
return value
|
|
288
|
+
return value, false
|
|
261
289
|
end
|
|
262
|
-
return self.defaultValue
|
|
290
|
+
return self.defaultValue, false
|
|
263
291
|
end
|
|
264
292
|
function ObjectField.prototype.invokeValueChangeEvent(self, ...)
|
|
265
293
|
self:invokeValueChangeEventRecursive(
|
|
@@ -314,37 +342,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
314
342
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
315
343
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
316
344
|
if value ~= nil then
|
|
317
|
-
local
|
|
345
|
+
local ____temp_16
|
|
318
346
|
if index == nil then
|
|
319
|
-
|
|
347
|
+
____temp_16 = value
|
|
320
348
|
else
|
|
321
|
-
local
|
|
322
|
-
if
|
|
323
|
-
|
|
349
|
+
local ____value_index_15 = value[index + 1]
|
|
350
|
+
if ____value_index_15 == nil then
|
|
351
|
+
____value_index_15 = self.defaultValue
|
|
324
352
|
end
|
|
325
|
-
|
|
353
|
+
____temp_16 = ____value_index_15
|
|
326
354
|
end
|
|
327
|
-
return
|
|
355
|
+
return ____temp_16
|
|
328
356
|
end
|
|
329
357
|
end
|
|
330
358
|
return index == nil and ({}) or self.defaultValue
|
|
331
359
|
end
|
|
332
360
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
333
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
334
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
335
|
-
if defaultValue ~= nil then
|
|
336
|
-
local value = self.valueByInstance[entry] or defaultValue
|
|
337
|
-
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
|
|
338
366
|
if index == nil then
|
|
339
|
-
|
|
367
|
+
____temp_18 = value
|
|
340
368
|
else
|
|
341
|
-
local
|
|
342
|
-
if
|
|
343
|
-
|
|
369
|
+
local ____value_index_17 = value[index + 1]
|
|
370
|
+
if ____value_index_17 == nil then
|
|
371
|
+
____value_index_17 = self.defaultValue
|
|
344
372
|
end
|
|
345
|
-
|
|
373
|
+
____temp_18 = ____value_index_17
|
|
346
374
|
end
|
|
347
|
-
return
|
|
375
|
+
return ____temp_18
|
|
348
376
|
end
|
|
349
377
|
end
|
|
350
378
|
if index ~= nil then
|
|
@@ -375,12 +403,12 @@ ____exports.ObjectLevelField = __TS__Class()
|
|
|
375
403
|
local ObjectLevelField = ____exports.ObjectLevelField
|
|
376
404
|
ObjectLevelField.name = "ObjectLevelField"
|
|
377
405
|
__TS__ClassExtends(ObjectLevelField, ObjectFieldBase)
|
|
378
|
-
function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
406
|
+
function ObjectLevelField.prototype.getValue(self, entry, level, includeModifiers)
|
|
379
407
|
if level == nil then
|
|
380
408
|
local result = {}
|
|
381
409
|
local levelCount = self:getLevelCount(entry)
|
|
382
410
|
for i = 0, levelCount - 1 do
|
|
383
|
-
result[i + 1] = self:getValue(entry, i)
|
|
411
|
+
result[i + 1] = self:getValue(entry, i, includeModifiers)
|
|
384
412
|
end
|
|
385
413
|
return result
|
|
386
414
|
end
|
|
@@ -389,36 +417,24 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
389
417
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
390
418
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
391
419
|
if valueByLevel ~= nil then
|
|
392
|
-
local
|
|
393
|
-
if
|
|
394
|
-
|
|
420
|
+
local ____valueByLevel_index_19 = valueByLevel[level + 1]
|
|
421
|
+
if ____valueByLevel_index_19 == nil then
|
|
422
|
+
____valueByLevel_index_19 = self.defaultValue
|
|
395
423
|
end
|
|
396
|
-
return
|
|
424
|
+
return ____valueByLevel_index_19
|
|
397
425
|
end
|
|
398
426
|
end
|
|
399
427
|
return self.defaultValue
|
|
400
428
|
end
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
local
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
if ____temp_16 == nil then
|
|
408
|
-
____temp_16 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
409
|
-
end
|
|
410
|
-
local ____temp_16_17 = ____temp_16
|
|
411
|
-
if ____temp_16_17 == nil then
|
|
412
|
-
____temp_16_17 = self.defaultValue
|
|
413
|
-
end
|
|
414
|
-
return ____temp_16_17
|
|
429
|
+
if not includeModifiers then
|
|
430
|
+
local ____opt_22 = self.originalValueByLevelByInstance
|
|
431
|
+
local ____opt_20 = ____opt_22 and ____opt_22[entry]
|
|
432
|
+
local originalValue = ____opt_20 and ____opt_20[level]
|
|
433
|
+
if originalValue ~= nil then
|
|
434
|
+
return originalValue
|
|
415
435
|
end
|
|
416
436
|
end
|
|
417
|
-
|
|
418
|
-
if ____temp_18 == nil then
|
|
419
|
-
____temp_18 = self.defaultValue
|
|
420
|
-
end
|
|
421
|
-
return ____temp_18
|
|
437
|
+
return self:getActualValue(entry, level)
|
|
422
438
|
end
|
|
423
439
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
424
440
|
if value == nil then
|
|
@@ -458,55 +474,114 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
458
474
|
valueByLevel[level + 1] = value
|
|
459
475
|
return true
|
|
460
476
|
end
|
|
461
|
-
local
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
local ____valueByLevel_index_19 = valueByLevel[level + 1]
|
|
471
|
-
if ____valueByLevel_index_19 == nil then
|
|
472
|
-
____valueByLevel_index_19 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
473
|
-
end
|
|
474
|
-
local ____valueByLevel_index_19_20 = ____valueByLevel_index_19
|
|
475
|
-
if ____valueByLevel_index_19_20 == nil then
|
|
476
|
-
____valueByLevel_index_19_20 = self.defaultValue
|
|
477
|
+
local previousOriginalValue
|
|
478
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
479
|
+
if modifiersByInstance ~= nil then
|
|
480
|
+
local modifiers = modifiersByInstance[entry]
|
|
481
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
482
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
483
|
+
if originalValueByLevelByInstance == nil then
|
|
484
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
485
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
477
486
|
end
|
|
478
|
-
local
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
entry,
|
|
483
|
-
self,
|
|
484
|
-
level,
|
|
485
|
-
previousValue,
|
|
486
|
-
value
|
|
487
|
-
)
|
|
487
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)
|
|
488
|
+
previousOriginalValue = originalValueByLevel[level]
|
|
489
|
+
if value == previousOriginalValue then
|
|
490
|
+
return true
|
|
488
491
|
end
|
|
489
|
-
|
|
492
|
+
originalValueByLevel[level] = value
|
|
493
|
+
value = self:calculateActualValue(entry, level)
|
|
490
494
|
end
|
|
491
495
|
end
|
|
492
|
-
|
|
496
|
+
local previousValue = self:setActualValue(entry, level, value)
|
|
497
|
+
if previousValue == nil then
|
|
493
498
|
return false
|
|
494
499
|
end
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
500
|
+
if previousOriginalValue ~= nil or value ~= previousValue then
|
|
501
|
+
local ____self_invokeValueChangeEvent_26 = self.invokeValueChangeEvent
|
|
502
|
+
local ____entry_25 = entry
|
|
503
|
+
local ____previousOriginalValue_24 = previousOriginalValue
|
|
504
|
+
if ____previousOriginalValue_24 == nil then
|
|
505
|
+
____previousOriginalValue_24 = previousValue
|
|
499
506
|
end
|
|
500
|
-
|
|
501
|
-
|
|
507
|
+
____self_invokeValueChangeEvent_26(
|
|
508
|
+
self,
|
|
509
|
+
____entry_25,
|
|
502
510
|
self,
|
|
503
511
|
level,
|
|
504
|
-
|
|
512
|
+
____previousOriginalValue_24,
|
|
505
513
|
value
|
|
506
514
|
)
|
|
507
515
|
end
|
|
508
516
|
return true
|
|
509
517
|
end
|
|
518
|
+
function ObjectLevelField.prototype.updateActualValue(self, instance, level)
|
|
519
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
520
|
+
if modifiersByInstance == nil then
|
|
521
|
+
return
|
|
522
|
+
end
|
|
523
|
+
local modifiers = modifiersByInstance[instance]
|
|
524
|
+
if modifiers == nil or modifiers.size == 0 then
|
|
525
|
+
return
|
|
526
|
+
end
|
|
527
|
+
if level == nil then
|
|
528
|
+
for i = 0, self:getLevelCount(instance) - 1 do
|
|
529
|
+
self:updateActualValue(instance, i)
|
|
530
|
+
end
|
|
531
|
+
return
|
|
532
|
+
end
|
|
533
|
+
self:setActualValue(
|
|
534
|
+
instance,
|
|
535
|
+
level,
|
|
536
|
+
self:calculateActualValue(instance, level)
|
|
537
|
+
)
|
|
538
|
+
end
|
|
539
|
+
function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
|
|
540
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
541
|
+
if modifiersByInstance == nil then
|
|
542
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
543
|
+
self.modifiersByInstance = modifiersByInstance
|
|
544
|
+
end
|
|
545
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
546
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
547
|
+
if originalValueByLevelByInstance == nil then
|
|
548
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
549
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
550
|
+
end
|
|
551
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
|
|
552
|
+
local levelCount = self:getLevelCount(instance)
|
|
553
|
+
for level = 0, levelCount - 1 do
|
|
554
|
+
local ____originalValueByLevel_level_27 = originalValueByLevel[level]
|
|
555
|
+
if ____originalValueByLevel_level_27 == nil then
|
|
556
|
+
____originalValueByLevel_level_27 = self:getActualValue(instance, level)
|
|
557
|
+
end
|
|
558
|
+
originalValueByLevel[level] = ____originalValueByLevel_level_27
|
|
559
|
+
self:setActualValue(
|
|
560
|
+
instance,
|
|
561
|
+
level,
|
|
562
|
+
self:calculateActualValue(instance, level)
|
|
563
|
+
)
|
|
564
|
+
end
|
|
565
|
+
end
|
|
566
|
+
end
|
|
567
|
+
function ObjectLevelField.prototype.removeModifier(self, instance, modifier)
|
|
568
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
569
|
+
if modifiersByInstance ~= nil then
|
|
570
|
+
local modifiers = modifiersByInstance[instance]
|
|
571
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
572
|
+
local levelCount = self:getLevelCount(instance)
|
|
573
|
+
for level = 0, levelCount - 1 do
|
|
574
|
+
self:setActualValue(
|
|
575
|
+
instance,
|
|
576
|
+
level,
|
|
577
|
+
self:calculateActualValue(instance, level)
|
|
578
|
+
)
|
|
579
|
+
end
|
|
580
|
+
return true
|
|
581
|
+
end
|
|
582
|
+
end
|
|
583
|
+
return false
|
|
584
|
+
end
|
|
510
585
|
function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
|
|
511
586
|
if value ~= nil then
|
|
512
587
|
if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
|
|
@@ -522,6 +597,79 @@ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value
|
|
|
522
597
|
end
|
|
523
598
|
return self:setValue(entry, levelOrValue)
|
|
524
599
|
end
|
|
600
|
+
function ObjectLevelField.prototype.getActualValue(self, instance, level)
|
|
601
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
602
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
603
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
604
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
605
|
+
local ____opt_28 = self.valueByInstance[instance]
|
|
606
|
+
local ____temp_30 = ____opt_28 and ____opt_28[level + 1]
|
|
607
|
+
if ____temp_30 == nil then
|
|
608
|
+
____temp_30 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
609
|
+
end
|
|
610
|
+
local ____temp_30_31 = ____temp_30
|
|
611
|
+
if ____temp_30_31 == nil then
|
|
612
|
+
____temp_30_31 = self.defaultValue
|
|
613
|
+
end
|
|
614
|
+
return ____temp_30_31
|
|
615
|
+
end
|
|
616
|
+
end
|
|
617
|
+
local ____temp_32 = self:getNativeFieldValue(instance, level)
|
|
618
|
+
if ____temp_32 == nil then
|
|
619
|
+
____temp_32 = self.defaultValue
|
|
620
|
+
end
|
|
621
|
+
return ____temp_32
|
|
622
|
+
end
|
|
623
|
+
function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
|
|
624
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
625
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
626
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
627
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
628
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
629
|
+
local valueByLevel = self.valueByInstance[instance]
|
|
630
|
+
if valueByLevel == nil then
|
|
631
|
+
valueByLevel = {}
|
|
632
|
+
self.valueByInstance[instance] = valueByLevel
|
|
633
|
+
end
|
|
634
|
+
local ____valueByLevel_index_33 = valueByLevel[level + 1]
|
|
635
|
+
if ____valueByLevel_index_33 == nil then
|
|
636
|
+
____valueByLevel_index_33 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
637
|
+
end
|
|
638
|
+
local ____valueByLevel_index_33_34 = ____valueByLevel_index_33
|
|
639
|
+
if ____valueByLevel_index_33_34 == nil then
|
|
640
|
+
____valueByLevel_index_33_34 = self.defaultValue
|
|
641
|
+
end
|
|
642
|
+
local previousValue = ____valueByLevel_index_33_34
|
|
643
|
+
valueByLevel[level + 1] = value
|
|
644
|
+
return previousValue
|
|
645
|
+
end
|
|
646
|
+
end
|
|
647
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
648
|
+
return nil
|
|
649
|
+
end
|
|
650
|
+
local previousValue = self:getNativeFieldValue(instance, level)
|
|
651
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, level, value) then
|
|
652
|
+
return nil
|
|
653
|
+
end
|
|
654
|
+
return previousValue
|
|
655
|
+
end
|
|
656
|
+
function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
|
|
657
|
+
local ____opt_37 = self.originalValueByLevelByInstance
|
|
658
|
+
local ____opt_35 = ____opt_37 and ____opt_37[instance]
|
|
659
|
+
local originalValue = ____opt_35 and ____opt_35[level]
|
|
660
|
+
local ____opt_39 = self.modifiersByInstance
|
|
661
|
+
local modifiers = ____opt_39 and ____opt_39[instance]
|
|
662
|
+
if originalValue ~= nil then
|
|
663
|
+
local value = originalValue
|
|
664
|
+
if modifiers ~= nil then
|
|
665
|
+
for modifier in pairs(modifiers) do
|
|
666
|
+
value = modifier(instance, level, value, originalValue)
|
|
667
|
+
end
|
|
668
|
+
end
|
|
669
|
+
return value
|
|
670
|
+
end
|
|
671
|
+
return self.defaultValue
|
|
672
|
+
end
|
|
525
673
|
function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
|
|
526
674
|
self:invokeValueChangeEventRecursive(
|
|
527
675
|
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,12 @@ 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
|
+
};
|
|
21
|
+
export declare const shuffle: (array: unknown[]) => void;
|
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,24 @@ ____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
|
|
31
|
+
____exports.shuffle = function(array)
|
|
32
|
+
for i = #array - 1, 1 do
|
|
33
|
+
local j = getRandomInt(0, i)
|
|
34
|
+
local value = array[i + 1]
|
|
35
|
+
array[i + 1] = array[j + 1]
|
|
36
|
+
array[j + 1] = value
|
|
37
|
+
end
|
|
38
|
+
end
|
|
18
39
|
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"))
|