warscript 0.0.1-dev.effa673 → 0.0.1-dev.f074376
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 +6 -0
- package/attributes.lua +17 -1
- 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/sound.lua +5 -0
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/decl/native.d.ts +846 -790
- 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 +6 -3
- package/engine/behaviour/ability/damage.lua +24 -36
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -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 +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +39 -3
- package/engine/behaviour/unit.lua +259 -6
- package/engine/buff.d.ts +17 -6
- package/engine/buff.lua +160 -97
- 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 +18 -17
- package/engine/internal/item.lua +135 -49
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- 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/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/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+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +45 -14
- package/engine/internal/unit.d.ts +39 -19
- package/engine/internal/unit.lua +329 -169
- 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/attachment-preset.d.ts +1 -1
- package/engine/object-data/auxiliary/attachment-preset.lua +3 -2
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -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/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type.lua +11 -3
- package/engine/object-data/entry/buff-type/applicable.lua +5 -0
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- 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 +17 -4
- package/engine/object-data/entry/unit-type.lua +197 -85
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +335 -118
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -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 +7 -0
- package/engine/standard/fields/unit.lua +13 -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 +3 -0
- package/engine/unit.lua +3 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- 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
|
@@ -20,6 +20,15 @@ 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 emptyLuaMap = ____lua_2Dmaps.emptyLuaMap
|
|
27
|
+
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
28
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
29
|
+
local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
|
|
30
|
+
local ____arrays = require("utility.arrays")
|
|
31
|
+
local emptyArray = ____arrays.emptyArray
|
|
23
32
|
local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
|
|
24
33
|
local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
|
|
25
34
|
local objectFieldById = {}
|
|
@@ -29,7 +38,11 @@ local idGenerator = __TS__New(
|
|
|
29
38
|
)
|
|
30
39
|
local ObjectFieldBase = __TS__Class()
|
|
31
40
|
ObjectFieldBase.name = "ObjectFieldBase"
|
|
32
|
-
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
|
|
33
46
|
self.valueByInstance = setmetatable({}, {__mode = "k"})
|
|
34
47
|
if objectFieldById[id] ~= nil then
|
|
35
48
|
error(
|
|
@@ -46,14 +59,15 @@ end
|
|
|
46
59
|
function ObjectFieldBase.prototype.supports(self, instance)
|
|
47
60
|
return __TS__InstanceOf(instance, self.instanceClass)
|
|
48
61
|
end
|
|
49
|
-
function ObjectFieldBase.prototype.hasValue(self,
|
|
62
|
+
function ObjectFieldBase.prototype.hasValue(self, objectDataEntryId)
|
|
50
63
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
51
|
-
return defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[
|
|
64
|
+
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[objectDataEntryId] ~= nil or self:hasNativeFieldValue(objectDataEntryId)
|
|
52
65
|
end
|
|
53
|
-
function ObjectFieldBase.create(self, id)
|
|
66
|
+
function ObjectFieldBase.create(self, id, isGlobal)
|
|
54
67
|
return __TS__New(
|
|
55
68
|
self,
|
|
56
|
-
id or idGenerator:next()
|
|
69
|
+
id or idGenerator:next(),
|
|
70
|
+
isGlobal
|
|
57
71
|
)
|
|
58
72
|
end
|
|
59
73
|
function ObjectFieldBase.of(self, id)
|
|
@@ -75,7 +89,7 @@ ____exports.ObjectField = __TS__Class()
|
|
|
75
89
|
local ObjectField = ____exports.ObjectField
|
|
76
90
|
ObjectField.name = "ObjectField"
|
|
77
91
|
__TS__ClassExtends(ObjectField, ObjectFieldBase)
|
|
78
|
-
function ObjectField.prototype.getValue(self, entry)
|
|
92
|
+
function ObjectField.prototype.getValue(self, entry, includeModifiers)
|
|
79
93
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
80
94
|
local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
|
|
81
95
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
@@ -86,22 +100,16 @@ function ObjectField.prototype.getValue(self, entry)
|
|
|
86
100
|
end
|
|
87
101
|
return self.defaultValue
|
|
88
102
|
end
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
____self_valueByInstance_entry_0 = defaultValue
|
|
103
|
+
if not includeModifiers then
|
|
104
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
105
|
+
if originalValueByInstance ~= nil then
|
|
106
|
+
local originalValue = originalValueByInstance[entry]
|
|
107
|
+
if originalValue ~= nil then
|
|
108
|
+
return originalValue
|
|
96
109
|
end
|
|
97
|
-
return ____self_valueByInstance_entry_0
|
|
98
110
|
end
|
|
99
111
|
end
|
|
100
|
-
|
|
101
|
-
if ____temp_1 == nil then
|
|
102
|
-
____temp_1 = self.defaultValue
|
|
103
|
-
end
|
|
104
|
-
return ____temp_1
|
|
112
|
+
return self:getActualValue(entry)
|
|
105
113
|
end
|
|
106
114
|
function ObjectField.prototype.setValue(self, entry, value)
|
|
107
115
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
@@ -116,38 +124,84 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
116
124
|
defaultValueByObjectDataEntryId[entry.id] = value
|
|
117
125
|
return true
|
|
118
126
|
end
|
|
119
|
-
local
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
local previousOriginalValue
|
|
128
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
129
|
+
if modifiersByInstance ~= nil then
|
|
130
|
+
local modifiers = modifiersByInstance[entry]
|
|
131
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
132
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
133
|
+
if originalValueByInstance == nil then
|
|
134
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
135
|
+
self.originalValueByInstance = originalValueByInstance
|
|
126
136
|
end
|
|
127
|
-
|
|
128
|
-
if
|
|
129
|
-
|
|
137
|
+
previousOriginalValue = originalValueByInstance[entry]
|
|
138
|
+
if value == previousOriginalValue then
|
|
139
|
+
return true
|
|
130
140
|
end
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
self.valueByInstance[entry] = value
|
|
134
|
-
self:invokeValueChangeEvent(entry, self, previousValue, value)
|
|
135
|
-
end
|
|
136
|
-
return true
|
|
141
|
+
originalValueByInstance[entry] = value
|
|
142
|
+
value = self:calculateActualValue(entry)
|
|
137
143
|
end
|
|
138
144
|
end
|
|
139
|
-
|
|
145
|
+
local previousValue = self:setActualValue(entry, value)
|
|
146
|
+
if previousValue == nil then
|
|
140
147
|
return false
|
|
141
148
|
end
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
|
146
155
|
end
|
|
147
|
-
|
|
156
|
+
____self_invokeValueChangeEvent_2(
|
|
157
|
+
self,
|
|
158
|
+
____entry_1,
|
|
159
|
+
self,
|
|
160
|
+
____previousOriginalValue_0,
|
|
161
|
+
value
|
|
162
|
+
)
|
|
148
163
|
end
|
|
149
164
|
return true
|
|
150
165
|
end
|
|
166
|
+
function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
167
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
168
|
+
if modifiersByInstance == nil then
|
|
169
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
170
|
+
self.modifiersByInstance = modifiersByInstance
|
|
171
|
+
end
|
|
172
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
173
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
174
|
+
if originalValueByInstance == nil then
|
|
175
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
176
|
+
self.originalValueByInstance = originalValueByInstance
|
|
177
|
+
end
|
|
178
|
+
local ____originalValueByInstance_4 = originalValueByInstance
|
|
179
|
+
local ____instance_5 = instance
|
|
180
|
+
local ____originalValueByInstance_instance_3 = originalValueByInstance[instance]
|
|
181
|
+
if ____originalValueByInstance_instance_3 == nil then
|
|
182
|
+
____originalValueByInstance_instance_3 = self:getActualValue(instance)
|
|
183
|
+
end
|
|
184
|
+
____originalValueByInstance_4[____instance_5] = ____originalValueByInstance_instance_3
|
|
185
|
+
self:setActualValue(
|
|
186
|
+
instance,
|
|
187
|
+
self:calculateActualValue(instance)
|
|
188
|
+
)
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
192
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
193
|
+
if modifiersByInstance ~= nil then
|
|
194
|
+
local modifiers = modifiersByInstance[instance]
|
|
195
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
196
|
+
self:setActualValue(
|
|
197
|
+
instance,
|
|
198
|
+
self:calculateActualValue(instance)
|
|
199
|
+
)
|
|
200
|
+
return true
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
return false
|
|
204
|
+
end
|
|
151
205
|
function ObjectField.prototype.removeValue(self, entry)
|
|
152
206
|
if not warpack.compiletime then
|
|
153
207
|
return false
|
|
@@ -168,6 +222,72 @@ function ObjectField.prototype.trySetValue(self, entry, value)
|
|
|
168
222
|
end
|
|
169
223
|
return self:setValue(entry, value)
|
|
170
224
|
end
|
|
225
|
+
function ObjectField.prototype.getActualValue(self, instance)
|
|
226
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
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
|
|
233
|
+
end
|
|
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
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
local ____temp_8 = self:getNativeFieldValue(instance)
|
|
242
|
+
if ____temp_8 == nil then
|
|
243
|
+
____temp_8 = self.defaultValue
|
|
244
|
+
end
|
|
245
|
+
return ____temp_8
|
|
246
|
+
end
|
|
247
|
+
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
248
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
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
|
|
256
|
+
end
|
|
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
|
|
260
|
+
end
|
|
261
|
+
local previousValue = ____self_valueByInstance_instance_9_10
|
|
262
|
+
self.valueByInstance[instance] = value
|
|
263
|
+
return previousValue
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
267
|
+
return nil
|
|
268
|
+
end
|
|
269
|
+
local previousValue = self:getNativeFieldValue(instance)
|
|
270
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, value) then
|
|
271
|
+
return nil
|
|
272
|
+
end
|
|
273
|
+
return previousValue
|
|
274
|
+
end
|
|
275
|
+
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
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]
|
|
280
|
+
if originalValue ~= nil then
|
|
281
|
+
local value = originalValue
|
|
282
|
+
if modifiers ~= nil then
|
|
283
|
+
for modifier in pairs(modifiers) do
|
|
284
|
+
value = modifier(instance, value, originalValue)
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
return value
|
|
288
|
+
end
|
|
289
|
+
return self.defaultValue
|
|
290
|
+
end
|
|
171
291
|
function ObjectField.prototype.invokeValueChangeEvent(self, ...)
|
|
172
292
|
self:invokeValueChangeEventRecursive(
|
|
173
293
|
getClass(self),
|
|
@@ -221,37 +341,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
221
341
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
222
342
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
223
343
|
if value ~= nil then
|
|
224
|
-
local
|
|
344
|
+
local ____temp_16
|
|
225
345
|
if index == nil then
|
|
226
|
-
|
|
346
|
+
____temp_16 = value
|
|
227
347
|
else
|
|
228
|
-
local
|
|
229
|
-
if
|
|
230
|
-
|
|
348
|
+
local ____value_index_15 = value[index + 1]
|
|
349
|
+
if ____value_index_15 == nil then
|
|
350
|
+
____value_index_15 = self.defaultValue
|
|
231
351
|
end
|
|
232
|
-
|
|
352
|
+
____temp_16 = ____value_index_15
|
|
233
353
|
end
|
|
234
|
-
return
|
|
354
|
+
return ____temp_16
|
|
235
355
|
end
|
|
236
356
|
end
|
|
237
357
|
return index == nil and ({}) or self.defaultValue
|
|
238
358
|
end
|
|
239
359
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
240
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
241
|
-
local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
242
|
-
if defaultValue ~= nil then
|
|
243
|
-
local value = self.valueByInstance[entry] or defaultValue
|
|
244
|
-
local
|
|
360
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
361
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
362
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
363
|
+
local value = self.valueByInstance[entry] or defaultValue or emptyArray()
|
|
364
|
+
local ____temp_18
|
|
245
365
|
if index == nil then
|
|
246
|
-
|
|
366
|
+
____temp_18 = value
|
|
247
367
|
else
|
|
248
|
-
local
|
|
249
|
-
if
|
|
250
|
-
|
|
368
|
+
local ____value_index_17 = value[index + 1]
|
|
369
|
+
if ____value_index_17 == nil then
|
|
370
|
+
____value_index_17 = self.defaultValue
|
|
251
371
|
end
|
|
252
|
-
|
|
372
|
+
____temp_18 = ____value_index_17
|
|
253
373
|
end
|
|
254
|
-
return
|
|
374
|
+
return ____temp_18
|
|
255
375
|
end
|
|
256
376
|
end
|
|
257
377
|
if index ~= nil then
|
|
@@ -296,36 +416,22 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
296
416
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
297
417
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
298
418
|
if valueByLevel ~= nil then
|
|
299
|
-
local
|
|
300
|
-
if
|
|
301
|
-
|
|
419
|
+
local ____valueByLevel_index_19 = valueByLevel[level + 1]
|
|
420
|
+
if ____valueByLevel_index_19 == nil then
|
|
421
|
+
____valueByLevel_index_19 = self.defaultValue
|
|
302
422
|
end
|
|
303
|
-
return
|
|
423
|
+
return ____valueByLevel_index_19
|
|
304
424
|
end
|
|
305
425
|
end
|
|
306
426
|
return self.defaultValue
|
|
307
427
|
end
|
|
308
|
-
local
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
local ____temp_11 = ____opt_9 and ____opt_9[level + 1]
|
|
314
|
-
if ____temp_11 == nil then
|
|
315
|
-
____temp_11 = defaultValueByLevel[level + 1]
|
|
316
|
-
end
|
|
317
|
-
local ____temp_11_12 = ____temp_11
|
|
318
|
-
if ____temp_11_12 == nil then
|
|
319
|
-
____temp_11_12 = self.defaultValue
|
|
320
|
-
end
|
|
321
|
-
return ____temp_11_12
|
|
322
|
-
end
|
|
428
|
+
local ____opt_22 = self.originalValueByLevelByInstance
|
|
429
|
+
local ____opt_20 = ____opt_22 and ____opt_22[entry]
|
|
430
|
+
local originalValue = ____opt_20 and ____opt_20[level]
|
|
431
|
+
if originalValue ~= nil then
|
|
432
|
+
return originalValue
|
|
323
433
|
end
|
|
324
|
-
|
|
325
|
-
if ____temp_13 == nil then
|
|
326
|
-
____temp_13 = self.defaultValue
|
|
327
|
-
end
|
|
328
|
-
return ____temp_13
|
|
434
|
+
return self:getActualValue(entry, level)
|
|
329
435
|
end
|
|
330
436
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
331
437
|
if value == nil then
|
|
@@ -365,55 +471,93 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
365
471
|
valueByLevel[level + 1] = value
|
|
366
472
|
return true
|
|
367
473
|
end
|
|
368
|
-
local
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
local ____valueByLevel_index_14 = valueByLevel[level + 1]
|
|
378
|
-
if ____valueByLevel_index_14 == nil then
|
|
379
|
-
____valueByLevel_index_14 = defaultValueByLevel[level + 1]
|
|
474
|
+
local previousOriginalValue
|
|
475
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
476
|
+
if modifiersByInstance ~= nil then
|
|
477
|
+
local modifiers = modifiersByInstance[entry]
|
|
478
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
479
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
480
|
+
if originalValueByLevelByInstance == nil then
|
|
481
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
482
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
380
483
|
end
|
|
381
|
-
local
|
|
382
|
-
|
|
383
|
-
|
|
484
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, entry, mutableLuaMap)
|
|
485
|
+
previousOriginalValue = originalValueByLevel[level]
|
|
486
|
+
if value == previousOriginalValue then
|
|
487
|
+
return true
|
|
384
488
|
end
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
valueByLevel[level + 1] = value
|
|
388
|
-
self:invokeValueChangeEvent(
|
|
389
|
-
entry,
|
|
390
|
-
self,
|
|
391
|
-
level,
|
|
392
|
-
previousValue,
|
|
393
|
-
value
|
|
394
|
-
)
|
|
395
|
-
end
|
|
396
|
-
return true
|
|
489
|
+
originalValueByLevel[level] = value
|
|
490
|
+
value = self:calculateActualValue(entry, level)
|
|
397
491
|
end
|
|
398
492
|
end
|
|
399
|
-
|
|
493
|
+
local previousValue = self:setActualValue(entry, level, value)
|
|
494
|
+
if previousValue == nil then
|
|
400
495
|
return false
|
|
401
496
|
end
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
497
|
+
if previousOriginalValue ~= nil or value ~= previousValue then
|
|
498
|
+
local ____self_invokeValueChangeEvent_26 = self.invokeValueChangeEvent
|
|
499
|
+
local ____entry_25 = entry
|
|
500
|
+
local ____previousOriginalValue_24 = previousOriginalValue
|
|
501
|
+
if ____previousOriginalValue_24 == nil then
|
|
502
|
+
____previousOriginalValue_24 = previousValue
|
|
406
503
|
end
|
|
407
|
-
|
|
408
|
-
|
|
504
|
+
____self_invokeValueChangeEvent_26(
|
|
505
|
+
self,
|
|
506
|
+
____entry_25,
|
|
409
507
|
self,
|
|
410
508
|
level,
|
|
411
|
-
|
|
509
|
+
____previousOriginalValue_24,
|
|
412
510
|
value
|
|
413
511
|
)
|
|
414
512
|
end
|
|
415
513
|
return true
|
|
416
514
|
end
|
|
515
|
+
function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
|
|
516
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
517
|
+
if modifiersByInstance == nil then
|
|
518
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
519
|
+
self.modifiersByInstance = modifiersByInstance
|
|
520
|
+
end
|
|
521
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
522
|
+
local originalValueByLevelByInstance = self.originalValueByLevelByInstance
|
|
523
|
+
if originalValueByLevelByInstance == nil then
|
|
524
|
+
originalValueByLevelByInstance = mutableWeakLuaMap()
|
|
525
|
+
self.originalValueByLevelByInstance = originalValueByLevelByInstance
|
|
526
|
+
end
|
|
527
|
+
local originalValueByLevel = getOrPut(originalValueByLevelByInstance, instance, mutableLuaMap)
|
|
528
|
+
local levelCount = self:getLevelCount(instance)
|
|
529
|
+
for level = 0, levelCount - 1 do
|
|
530
|
+
local ____originalValueByLevel_level_27 = originalValueByLevel[level]
|
|
531
|
+
if ____originalValueByLevel_level_27 == nil then
|
|
532
|
+
____originalValueByLevel_level_27 = self:getActualValue(instance, level)
|
|
533
|
+
end
|
|
534
|
+
originalValueByLevel[level] = ____originalValueByLevel_level_27
|
|
535
|
+
self:setActualValue(
|
|
536
|
+
instance,
|
|
537
|
+
level,
|
|
538
|
+
self:calculateActualValue(instance, level)
|
|
539
|
+
)
|
|
540
|
+
end
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
function ObjectLevelField.prototype.removeModifier(self, instance, modifier)
|
|
544
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
545
|
+
if modifiersByInstance ~= nil then
|
|
546
|
+
local modifiers = modifiersByInstance[instance]
|
|
547
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
548
|
+
local levelCount = self:getLevelCount(instance)
|
|
549
|
+
for level = 0, levelCount - 1 do
|
|
550
|
+
self:setActualValue(
|
|
551
|
+
instance,
|
|
552
|
+
level,
|
|
553
|
+
self:calculateActualValue(instance, level)
|
|
554
|
+
)
|
|
555
|
+
end
|
|
556
|
+
return true
|
|
557
|
+
end
|
|
558
|
+
end
|
|
559
|
+
return false
|
|
560
|
+
end
|
|
417
561
|
function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
|
|
418
562
|
if value ~= nil then
|
|
419
563
|
if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
|
|
@@ -429,6 +573,79 @@ function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value
|
|
|
429
573
|
end
|
|
430
574
|
return self:setValue(entry, levelOrValue)
|
|
431
575
|
end
|
|
576
|
+
function ObjectLevelField.prototype.getActualValue(self, instance, level)
|
|
577
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
578
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
579
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
580
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
581
|
+
local ____opt_28 = self.valueByInstance[instance]
|
|
582
|
+
local ____temp_30 = ____opt_28 and ____opt_28[level + 1]
|
|
583
|
+
if ____temp_30 == nil then
|
|
584
|
+
____temp_30 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
585
|
+
end
|
|
586
|
+
local ____temp_30_31 = ____temp_30
|
|
587
|
+
if ____temp_30_31 == nil then
|
|
588
|
+
____temp_30_31 = self.defaultValue
|
|
589
|
+
end
|
|
590
|
+
return ____temp_30_31
|
|
591
|
+
end
|
|
592
|
+
end
|
|
593
|
+
local ____temp_32 = self:getNativeFieldValue(instance, level)
|
|
594
|
+
if ____temp_32 == nil then
|
|
595
|
+
____temp_32 = self.defaultValue
|
|
596
|
+
end
|
|
597
|
+
return ____temp_32
|
|
598
|
+
end
|
|
599
|
+
function ObjectLevelField.prototype.setActualValue(self, instance, level, value)
|
|
600
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
601
|
+
local objectDataEntryId = self:getObjectDataEntryId(instance)
|
|
602
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
603
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[objectDataEntryId]
|
|
604
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
605
|
+
local valueByLevel = self.valueByInstance[instance]
|
|
606
|
+
if valueByLevel == nil then
|
|
607
|
+
valueByLevel = {}
|
|
608
|
+
self.valueByInstance[instance] = valueByLevel
|
|
609
|
+
end
|
|
610
|
+
local ____valueByLevel_index_33 = valueByLevel[level + 1]
|
|
611
|
+
if ____valueByLevel_index_33 == nil then
|
|
612
|
+
____valueByLevel_index_33 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
613
|
+
end
|
|
614
|
+
local ____valueByLevel_index_33_34 = ____valueByLevel_index_33
|
|
615
|
+
if ____valueByLevel_index_33_34 == nil then
|
|
616
|
+
____valueByLevel_index_33_34 = self.defaultValue
|
|
617
|
+
end
|
|
618
|
+
local previousValue = ____valueByLevel_index_33_34
|
|
619
|
+
valueByLevel[level + 1] = value
|
|
620
|
+
return previousValue
|
|
621
|
+
end
|
|
622
|
+
end
|
|
623
|
+
if not self:hasNativeFieldValue(objectDataEntryId) then
|
|
624
|
+
return nil
|
|
625
|
+
end
|
|
626
|
+
local previousValue = self:getNativeFieldValue(instance, level)
|
|
627
|
+
if value ~= previousValue and not self:setNativeFieldValue(instance, level, value) then
|
|
628
|
+
return nil
|
|
629
|
+
end
|
|
630
|
+
return previousValue
|
|
631
|
+
end
|
|
632
|
+
function ObjectLevelField.prototype.calculateActualValue(self, instance, level)
|
|
633
|
+
local ____opt_37 = self.originalValueByLevelByInstance
|
|
634
|
+
local ____opt_35 = ____opt_37 and ____opt_37[instance]
|
|
635
|
+
local originalValue = ____opt_35 and ____opt_35[level]
|
|
636
|
+
local ____opt_39 = self.modifiersByInstance
|
|
637
|
+
local modifiers = ____opt_39 and ____opt_39[instance]
|
|
638
|
+
if originalValue ~= nil then
|
|
639
|
+
local value = originalValue
|
|
640
|
+
if modifiers ~= nil then
|
|
641
|
+
for modifier in pairs(modifiers) do
|
|
642
|
+
value = modifier(instance, level, value, originalValue)
|
|
643
|
+
end
|
|
644
|
+
end
|
|
645
|
+
return value
|
|
646
|
+
end
|
|
647
|
+
return self.defaultValue
|
|
648
|
+
end
|
|
432
649
|
function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
|
|
433
650
|
self:invokeValueChangeEventRecursive(
|
|
434
651
|
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,7 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { UnitClassificationsField, UnitFlyHeightField, UnitHealthRegenerationTypeField, UnitPropulsionWindowField, UnitScalingValueField } from "../../object-field/unit";
|
|
3
|
+
export declare const PROPULSION_WINDOW_UNIT_FLOAT_FIELD: UnitPropulsionWindowField & symbol;
|
|
4
|
+
export declare const UNIT_CLASSIFICATIONS_FIELD: UnitClassificationsField & symbol;
|
|
5
|
+
export declare const FLY_HEIGHT_UNIT_FLOAT_FIELD: UnitFlyHeightField & symbol;
|
|
6
|
+
export declare const SCALING_VALUE_UNIT_FLOAT_FIELD: UnitScalingValueField & symbol;
|
|
7
|
+
export declare const UNIT_HEALTH_REGENERATION_TYPE_FIELD: UnitHealthRegenerationTypeField & symbol;
|