warscript 0.0.1-dev.46a1ede → 0.0.1-dev.475a555
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 +5 -0
- package/attributes.lua +8 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/util.lua +6 -1
- package/decl/native.d.ts +840 -786
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.lua +16 -2
- package/engine/behaviour/ability.d.ts +5 -1
- package/engine/behaviour/ability.lua +19 -5
- package/engine/behaviour/unit.d.ts +17 -0
- package/engine/behaviour/unit.lua +114 -4
- package/engine/buff.d.ts +15 -7
- package/engine/buff.lua +145 -104
- package/engine/internal/ability.d.ts +4 -0
- package/engine/internal/ability.lua +17 -0
- package/engine/internal/item/ability.lua +12 -10
- package/engine/internal/item.d.ts +5 -2
- package/engine/internal/item.lua +75 -3
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- 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/unit/ability.d.ts +5 -0
- package/engine/internal/unit/ability.lua +14 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- 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 +1 -1
- package/engine/internal/unit.d.ts +27 -4
- package/engine/internal/unit.lua +184 -37
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- 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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- 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/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- 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/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.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/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +19 -17
- package/engine/object-data/entry/ability-type.lua +81 -21
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +10 -3
- package/engine/object-data/entry/unit-type.lua +155 -92
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-field/ability.d.ts +1 -1
- package/engine/object-field/unit.d.ts +46 -3
- package/engine/object-field/unit.lua +173 -7
- package/engine/object-field.d.ts +15 -4
- package/engine/object-field.lua +184 -90
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/text-tag.d.ts +12 -1
- package/engine/text-tag.lua +44 -10
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/objutil/buff.lua +1 -2
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +3 -0
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +4 -0
- package/utility/lua-maps.lua +20 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/engine/object-field.lua
CHANGED
|
@@ -20,6 +20,14 @@ 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 mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
|
|
29
|
+
local ____arrays = require("utility.arrays")
|
|
30
|
+
local emptyArray = ____arrays.emptyArray
|
|
23
31
|
local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
|
|
24
32
|
local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
|
|
25
33
|
local objectFieldById = {}
|
|
@@ -29,7 +37,11 @@ local idGenerator = __TS__New(
|
|
|
29
37
|
)
|
|
30
38
|
local ObjectFieldBase = __TS__Class()
|
|
31
39
|
ObjectFieldBase.name = "ObjectFieldBase"
|
|
32
|
-
function ObjectFieldBase.prototype.____constructor(self, id)
|
|
40
|
+
function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
|
|
41
|
+
if isGlobal == nil then
|
|
42
|
+
isGlobal = false
|
|
43
|
+
end
|
|
44
|
+
self.isGlobal = isGlobal
|
|
33
45
|
self.valueByInstance = setmetatable({}, {__mode = "k"})
|
|
34
46
|
if objectFieldById[id] ~= nil then
|
|
35
47
|
error(
|
|
@@ -48,12 +60,13 @@ function ObjectFieldBase.prototype.supports(self, instance)
|
|
|
48
60
|
end
|
|
49
61
|
function ObjectFieldBase.prototype.hasValue(self, instance)
|
|
50
62
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
51
|
-
return defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
|
|
63
|
+
return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
|
|
52
64
|
end
|
|
53
|
-
function ObjectFieldBase.create(self, id)
|
|
65
|
+
function ObjectFieldBase.create(self, id, isGlobal)
|
|
54
66
|
return __TS__New(
|
|
55
67
|
self,
|
|
56
|
-
id or idGenerator:next()
|
|
68
|
+
id or idGenerator:next(),
|
|
69
|
+
isGlobal
|
|
57
70
|
)
|
|
58
71
|
end
|
|
59
72
|
function ObjectFieldBase.of(self, id)
|
|
@@ -75,7 +88,7 @@ ____exports.ObjectField = __TS__Class()
|
|
|
75
88
|
local ObjectField = ____exports.ObjectField
|
|
76
89
|
ObjectField.name = "ObjectField"
|
|
77
90
|
__TS__ClassExtends(ObjectField, ObjectFieldBase)
|
|
78
|
-
function ObjectField.prototype.getValue(self, entry)
|
|
91
|
+
function ObjectField.prototype.getValue(self, entry, includeModifiers)
|
|
79
92
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
80
93
|
local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
|
|
81
94
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
@@ -86,22 +99,16 @@ function ObjectField.prototype.getValue(self, entry)
|
|
|
86
99
|
end
|
|
87
100
|
return self.defaultValue
|
|
88
101
|
end
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
____self_valueByInstance_entry_0 = defaultValue
|
|
102
|
+
if includeModifiers == false then
|
|
103
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
104
|
+
if originalValueByInstance ~= nil then
|
|
105
|
+
local originalValue = originalValueByInstance[entry]
|
|
106
|
+
if originalValue ~= nil then
|
|
107
|
+
return originalValue
|
|
96
108
|
end
|
|
97
|
-
return ____self_valueByInstance_entry_0
|
|
98
109
|
end
|
|
99
110
|
end
|
|
100
|
-
|
|
101
|
-
if ____temp_1 == nil then
|
|
102
|
-
____temp_1 = self.defaultValue
|
|
103
|
-
end
|
|
104
|
-
return ____temp_1
|
|
111
|
+
return self:getActualValue(entry)
|
|
105
112
|
end
|
|
106
113
|
function ObjectField.prototype.setValue(self, entry, value)
|
|
107
114
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
@@ -116,37 +123,53 @@ function ObjectField.prototype.setValue(self, entry, value)
|
|
|
116
123
|
defaultValueByObjectDataEntryId[entry.id] = value
|
|
117
124
|
return true
|
|
118
125
|
end
|
|
119
|
-
local
|
|
120
|
-
if
|
|
121
|
-
local
|
|
122
|
-
if
|
|
123
|
-
local
|
|
124
|
-
if
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
local ____self_valueByInstance_entry_2_3 = ____self_valueByInstance_entry_2
|
|
128
|
-
if ____self_valueByInstance_entry_2_3 == nil then
|
|
129
|
-
____self_valueByInstance_entry_2_3 = self.defaultValue
|
|
126
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
127
|
+
if modifiersByInstance ~= nil then
|
|
128
|
+
local modifiers = modifiersByInstance[entry]
|
|
129
|
+
if modifiers ~= nil and modifiers.size ~= 0 then
|
|
130
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
131
|
+
if originalValueByInstance == nil then
|
|
132
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
133
|
+
self.originalValueByInstance = originalValueByInstance
|
|
130
134
|
end
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
self.valueByInstance[entry] = value
|
|
134
|
-
self:invokeValueChangeEvent(entry, self, previousValue, value)
|
|
135
|
-
end
|
|
136
|
-
return true
|
|
135
|
+
originalValueByInstance[entry] = value
|
|
136
|
+
value = self:calculateActualValue(entry)
|
|
137
137
|
end
|
|
138
138
|
end
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
return self:setActualValue(entry, value)
|
|
140
|
+
end
|
|
141
|
+
function ObjectField.prototype.applyModifier(self, instance, modifier)
|
|
142
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
143
|
+
if modifiersByInstance == nil then
|
|
144
|
+
modifiersByInstance = mutableWeakLuaMap()
|
|
145
|
+
self.modifiersByInstance = modifiersByInstance
|
|
146
|
+
end
|
|
147
|
+
if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
|
|
148
|
+
local originalValueByInstance = self.originalValueByInstance
|
|
149
|
+
if originalValueByInstance == nil then
|
|
150
|
+
originalValueByInstance = mutableWeakLuaMap()
|
|
151
|
+
self.originalValueByInstance = originalValueByInstance
|
|
152
|
+
end
|
|
153
|
+
originalValueByInstance[instance] = self:getActualValue(instance)
|
|
154
|
+
self:setActualValue(
|
|
155
|
+
instance,
|
|
156
|
+
self:calculateActualValue(instance)
|
|
157
|
+
)
|
|
141
158
|
end
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
159
|
+
end
|
|
160
|
+
function ObjectField.prototype.removeModifier(self, instance, modifier)
|
|
161
|
+
local modifiersByInstance = self.modifiersByInstance
|
|
162
|
+
if modifiersByInstance ~= nil then
|
|
163
|
+
local modifiers = modifiersByInstance[instance]
|
|
164
|
+
if modifiers ~= nil and modifiers:remove(modifier) then
|
|
165
|
+
self:setActualValue(
|
|
166
|
+
instance,
|
|
167
|
+
self:calculateActualValue(instance)
|
|
168
|
+
)
|
|
169
|
+
return true
|
|
146
170
|
end
|
|
147
|
-
self:invokeValueChangeEvent(entry, self, previousValue, value)
|
|
148
171
|
end
|
|
149
|
-
return
|
|
172
|
+
return false
|
|
150
173
|
end
|
|
151
174
|
function ObjectField.prototype.removeValue(self, entry)
|
|
152
175
|
if not warpack.compiletime then
|
|
@@ -168,6 +191,77 @@ function ObjectField.prototype.trySetValue(self, entry, value)
|
|
|
168
191
|
end
|
|
169
192
|
return self:setValue(entry, value)
|
|
170
193
|
end
|
|
194
|
+
function ObjectField.prototype.getActualValue(self, instance)
|
|
195
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
196
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
197
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
198
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
199
|
+
local ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
|
|
200
|
+
if ____self_valueByInstance_instance_0 == nil then
|
|
201
|
+
____self_valueByInstance_instance_0 = defaultValue
|
|
202
|
+
end
|
|
203
|
+
local ____self_valueByInstance_instance_0_1 = ____self_valueByInstance_instance_0
|
|
204
|
+
if ____self_valueByInstance_instance_0_1 == nil then
|
|
205
|
+
____self_valueByInstance_instance_0_1 = self.defaultValue
|
|
206
|
+
end
|
|
207
|
+
return ____self_valueByInstance_instance_0_1
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
local ____temp_2 = self:getNativeFieldValue(instance)
|
|
211
|
+
if ____temp_2 == nil then
|
|
212
|
+
____temp_2 = self.defaultValue
|
|
213
|
+
end
|
|
214
|
+
return ____temp_2
|
|
215
|
+
end
|
|
216
|
+
function ObjectField.prototype.setActualValue(self, instance, value)
|
|
217
|
+
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
218
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
219
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(instance)]
|
|
220
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
221
|
+
local ____self_valueByInstance_instance_3 = self.valueByInstance[instance]
|
|
222
|
+
if ____self_valueByInstance_instance_3 == nil then
|
|
223
|
+
____self_valueByInstance_instance_3 = defaultValue
|
|
224
|
+
end
|
|
225
|
+
local ____self_valueByInstance_instance_3_4 = ____self_valueByInstance_instance_3
|
|
226
|
+
if ____self_valueByInstance_instance_3_4 == nil then
|
|
227
|
+
____self_valueByInstance_instance_3_4 = self.defaultValue
|
|
228
|
+
end
|
|
229
|
+
local previousValue = ____self_valueByInstance_instance_3_4
|
|
230
|
+
if value ~= previousValue then
|
|
231
|
+
self.valueByInstance[instance] = value
|
|
232
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
233
|
+
end
|
|
234
|
+
return true
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
if not self:hasNativeFieldValue(instance) then
|
|
238
|
+
return false
|
|
239
|
+
end
|
|
240
|
+
local previousValue = self:getNativeFieldValue(instance)
|
|
241
|
+
if value ~= previousValue then
|
|
242
|
+
if not self:setNativeFieldValue(instance, value) then
|
|
243
|
+
return false
|
|
244
|
+
end
|
|
245
|
+
self:invokeValueChangeEvent(instance, self, previousValue, value)
|
|
246
|
+
end
|
|
247
|
+
return true
|
|
248
|
+
end
|
|
249
|
+
function ObjectField.prototype.calculateActualValue(self, instance)
|
|
250
|
+
local ____opt_5 = self.originalValueByInstance
|
|
251
|
+
local originalValue = ____opt_5 and ____opt_5[instance]
|
|
252
|
+
local ____opt_7 = self.modifiersByInstance
|
|
253
|
+
local modifiers = ____opt_7 and ____opt_7[instance]
|
|
254
|
+
if originalValue ~= nil then
|
|
255
|
+
local value = originalValue
|
|
256
|
+
if modifiers ~= nil then
|
|
257
|
+
for modifier in pairs(modifiers) do
|
|
258
|
+
value = modifier(instance, value, originalValue)
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
return value
|
|
262
|
+
end
|
|
263
|
+
return self.defaultValue
|
|
264
|
+
end
|
|
171
265
|
function ObjectField.prototype.invokeValueChangeEvent(self, ...)
|
|
172
266
|
self:invokeValueChangeEventRecursive(
|
|
173
267
|
getClass(self),
|
|
@@ -221,37 +315,37 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
|
|
|
221
315
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
222
316
|
local value = defaultValueByObjectDataEntryId[entry.id]
|
|
223
317
|
if value ~= nil then
|
|
224
|
-
local
|
|
318
|
+
local ____temp_10
|
|
225
319
|
if index == nil then
|
|
226
|
-
|
|
320
|
+
____temp_10 = value
|
|
227
321
|
else
|
|
228
|
-
local
|
|
229
|
-
if
|
|
230
|
-
|
|
322
|
+
local ____value_index_9 = value[index + 1]
|
|
323
|
+
if ____value_index_9 == nil then
|
|
324
|
+
____value_index_9 = self.defaultValue
|
|
231
325
|
end
|
|
232
|
-
|
|
326
|
+
____temp_10 = ____value_index_9
|
|
233
327
|
end
|
|
234
|
-
return
|
|
328
|
+
return ____temp_10
|
|
235
329
|
end
|
|
236
330
|
end
|
|
237
331
|
return index == nil and ({}) or self.defaultValue
|
|
238
332
|
end
|
|
239
333
|
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
|
|
334
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
335
|
+
local defaultValue = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
336
|
+
if defaultValue ~= nil or self.isGlobal then
|
|
337
|
+
local value = self.valueByInstance[entry] or defaultValue or emptyArray()
|
|
338
|
+
local ____temp_12
|
|
245
339
|
if index == nil then
|
|
246
|
-
|
|
340
|
+
____temp_12 = value
|
|
247
341
|
else
|
|
248
|
-
local
|
|
249
|
-
if
|
|
250
|
-
|
|
342
|
+
local ____value_index_11 = value[index + 1]
|
|
343
|
+
if ____value_index_11 == nil then
|
|
344
|
+
____value_index_11 = self.defaultValue
|
|
251
345
|
end
|
|
252
|
-
|
|
346
|
+
____temp_12 = ____value_index_11
|
|
253
347
|
end
|
|
254
|
-
return
|
|
348
|
+
return ____temp_12
|
|
255
349
|
end
|
|
256
350
|
end
|
|
257
351
|
if index ~= nil then
|
|
@@ -296,36 +390,36 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
|
|
|
296
390
|
if defaultValueByObjectDataEntryId ~= nil then
|
|
297
391
|
local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
|
|
298
392
|
if valueByLevel ~= nil then
|
|
299
|
-
local
|
|
300
|
-
if
|
|
301
|
-
|
|
393
|
+
local ____valueByLevel_index_13 = valueByLevel[level + 1]
|
|
394
|
+
if ____valueByLevel_index_13 == nil then
|
|
395
|
+
____valueByLevel_index_13 = self.defaultValue
|
|
302
396
|
end
|
|
303
|
-
return
|
|
397
|
+
return ____valueByLevel_index_13
|
|
304
398
|
end
|
|
305
399
|
end
|
|
306
400
|
return self.defaultValue
|
|
307
401
|
end
|
|
308
402
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
309
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
310
|
-
local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
311
|
-
if defaultValueByLevel ~= nil then
|
|
312
|
-
local
|
|
313
|
-
local
|
|
314
|
-
if
|
|
315
|
-
|
|
403
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
404
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
405
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
406
|
+
local ____opt_14 = self.valueByInstance[entry]
|
|
407
|
+
local ____temp_16 = ____opt_14 and ____opt_14[level + 1]
|
|
408
|
+
if ____temp_16 == nil then
|
|
409
|
+
____temp_16 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
316
410
|
end
|
|
317
|
-
local
|
|
318
|
-
if
|
|
319
|
-
|
|
411
|
+
local ____temp_16_17 = ____temp_16
|
|
412
|
+
if ____temp_16_17 == nil then
|
|
413
|
+
____temp_16_17 = self.defaultValue
|
|
320
414
|
end
|
|
321
|
-
return
|
|
415
|
+
return ____temp_16_17
|
|
322
416
|
end
|
|
323
417
|
end
|
|
324
|
-
local
|
|
325
|
-
if
|
|
326
|
-
|
|
418
|
+
local ____temp_18 = self:getNativeFieldValue(entry, level)
|
|
419
|
+
if ____temp_18 == nil then
|
|
420
|
+
____temp_18 = self.defaultValue
|
|
327
421
|
end
|
|
328
|
-
return
|
|
422
|
+
return ____temp_18
|
|
329
423
|
end
|
|
330
424
|
function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
331
425
|
if value == nil then
|
|
@@ -366,23 +460,23 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
366
460
|
return true
|
|
367
461
|
end
|
|
368
462
|
local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
|
|
369
|
-
if defaultValueByObjectDataEntryId ~= nil then
|
|
370
|
-
local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
|
|
371
|
-
if defaultValueByLevel ~= nil then
|
|
463
|
+
if defaultValueByObjectDataEntryId ~= nil or self.isGlobal then
|
|
464
|
+
local defaultValueByLevel = (defaultValueByObjectDataEntryId or emptyLuaMap())[self:getObjectDataEntryId(entry)]
|
|
465
|
+
if defaultValueByLevel ~= nil or self.isGlobal then
|
|
372
466
|
local valueByLevel = self.valueByInstance[entry]
|
|
373
467
|
if valueByLevel == nil then
|
|
374
468
|
valueByLevel = {}
|
|
375
469
|
self.valueByInstance[entry] = valueByLevel
|
|
376
470
|
end
|
|
377
|
-
local
|
|
378
|
-
if
|
|
379
|
-
|
|
471
|
+
local ____valueByLevel_index_19 = valueByLevel[level + 1]
|
|
472
|
+
if ____valueByLevel_index_19 == nil then
|
|
473
|
+
____valueByLevel_index_19 = (defaultValueByLevel or emptyArray())[level + 1]
|
|
380
474
|
end
|
|
381
|
-
local
|
|
382
|
-
if
|
|
383
|
-
|
|
475
|
+
local ____valueByLevel_index_19_20 = ____valueByLevel_index_19
|
|
476
|
+
if ____valueByLevel_index_19_20 == nil then
|
|
477
|
+
____valueByLevel_index_19_20 = self.defaultValue
|
|
384
478
|
end
|
|
385
|
-
local previousValue =
|
|
479
|
+
local previousValue = ____valueByLevel_index_19_20
|
|
386
480
|
if value ~= previousValue then
|
|
387
481
|
valueByLevel[level + 1] = value
|
|
388
482
|
self:invokeValueChangeEvent(
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { StandardSoundPresetId } from "../../object-data/entry/sound-preset";
|
|
3
|
+
export declare const ABOMINATION_PISSED_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
4
|
+
export declare const ABOMINATION_READY_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
5
|
+
export declare const ABOMINATION_WAR_CRY_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
6
|
+
export declare const AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
7
|
+
export declare const IMPALE_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
8
|
+
export declare const IMPALE_HIT_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
9
|
+
export declare const IMPALE_LAND_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
10
|
+
export declare const IMPALE_CAST_SOUND_PRESET_ID: StandardSoundPresetId;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
____exports.ABOMINATION_PISSED_SOUND_PRESET_ID = "AbominationPissed"
|
|
3
|
+
____exports.ABOMINATION_READY_SOUND_PRESET_ID = "AbominationReady"
|
|
4
|
+
____exports.ABOMINATION_WAR_CRY_SOUND_PRESET_ID = "AbominationWarcry"
|
|
5
|
+
____exports.AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID = "AxeMediumChopWood"
|
|
6
|
+
____exports.IMPALE_SOUND_PRESET_ID = "Impale"
|
|
7
|
+
____exports.IMPALE_HIT_SOUND_PRESET_ID = "ImpaleHit"
|
|
8
|
+
____exports.IMPALE_LAND_SOUND_PRESET_ID = "ImpaleLand"
|
|
9
|
+
____exports.IMPALE_CAST_SOUND_PRESET_ID = "ImpaleCast"
|
|
10
|
+
return ____exports
|
package/engine/text-tag.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Color } from "../core/types/color";
|
|
3
|
+
import { Unit } from "./internal/unit";
|
|
4
|
+
import { AbstractDestroyable, Destructor } from "../destroyable";
|
|
3
5
|
export type TextTagPreset = {
|
|
4
6
|
fadepoint: number;
|
|
5
7
|
lifespan: number;
|
|
@@ -10,9 +12,16 @@ export type TextTagPreset = {
|
|
|
10
12
|
velocityY: number;
|
|
11
13
|
color: Color;
|
|
12
14
|
};
|
|
13
|
-
|
|
15
|
+
declare const enum TextTagPropertyKey {
|
|
16
|
+
UNIT = 100,
|
|
17
|
+
CONFIGURATION = 101
|
|
18
|
+
}
|
|
19
|
+
export declare class TextTag extends AbstractDestroyable {
|
|
14
20
|
private readonly handle;
|
|
21
|
+
private [TextTagPropertyKey.UNIT]?;
|
|
22
|
+
private [TextTagPropertyKey.CONFIGURATION]?;
|
|
15
23
|
private constructor();
|
|
24
|
+
protected onDestroy(): Destructor;
|
|
16
25
|
static BASE: Readonly<TextTagPreset>;
|
|
17
26
|
static BASH: Readonly<TextTagPreset>;
|
|
18
27
|
static CRITICAL_STRIKE: Readonly<TextTagPreset>;
|
|
@@ -22,4 +31,6 @@ export declare class TextTag {
|
|
|
22
31
|
static MISS: Readonly<TextTagPreset>;
|
|
23
32
|
static SHADOW_STRIKE: Readonly<TextTagPreset>;
|
|
24
33
|
static flash(configuration: Readonly<TextTagPreset>, text: string, x: number, y: number, z?: number): void;
|
|
34
|
+
static create(configuration: Readonly<TextTagPreset>, text: string, unit: Unit): TextTag;
|
|
25
35
|
}
|
|
36
|
+
export {};
|
package/engine/text-tag.lua
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
5
|
local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
|
|
4
6
|
local ____exports = {}
|
|
5
7
|
local ____color = require("core.types.color")
|
|
6
8
|
local Color = ____color.Color
|
|
9
|
+
local ____timer = require("core.types.timer")
|
|
10
|
+
local Timer = ____timer.Timer
|
|
11
|
+
local ____destroyable = require("destroyable")
|
|
12
|
+
local AbstractDestroyable = ____destroyable.AbstractDestroyable
|
|
7
13
|
local createTextTag = CreateTextTag
|
|
8
14
|
local destroyTextTag = DestroyTextTag
|
|
9
15
|
local setTextTagText = SetTextTagText
|
|
@@ -18,16 +24,7 @@ local setTextTagAge = SetTextTagAge
|
|
|
18
24
|
local setTextTagLifespan = SetTextTagLifespan
|
|
19
25
|
local setTextTagFadepoint = SetTextTagFadepoint
|
|
20
26
|
local DEFAULT_FONT_SIZE = 0.024
|
|
21
|
-
|
|
22
|
-
local TextTag = ____exports.TextTag
|
|
23
|
-
TextTag.name = "TextTag"
|
|
24
|
-
function TextTag.prototype.____constructor(self, handle)
|
|
25
|
-
self.handle = handle
|
|
26
|
-
end
|
|
27
|
-
function TextTag.flash(self, configuration, text, x, y, z)
|
|
28
|
-
local textTag = createTextTag()
|
|
29
|
-
setTextTagText(textTag, text, DEFAULT_FONT_SIZE)
|
|
30
|
-
setTextTagPos(textTag, x + configuration.offsetX, y + configuration.offsetY, (z or 0) + configuration.offsetZ)
|
|
27
|
+
local function applyConfiguration(textTag, configuration)
|
|
31
28
|
setTextTagFadepoint(textTag, configuration.fadepoint)
|
|
32
29
|
setTextTagLifespan(textTag, configuration.lifespan)
|
|
33
30
|
local color = configuration.color
|
|
@@ -42,6 +39,38 @@ function TextTag.flash(self, configuration, text, x, y, z)
|
|
|
42
39
|
setTextTagPermanent(textTag, false)
|
|
43
40
|
setTextTagVisibility(textTag, true)
|
|
44
41
|
end
|
|
42
|
+
local unitTextTags = setmetatable({}, {__mode = "k"})
|
|
43
|
+
____exports.TextTag = __TS__Class()
|
|
44
|
+
local TextTag = ____exports.TextTag
|
|
45
|
+
TextTag.name = "TextTag"
|
|
46
|
+
__TS__ClassExtends(TextTag, AbstractDestroyable)
|
|
47
|
+
function TextTag.prototype.____constructor(self, handle)
|
|
48
|
+
AbstractDestroyable.prototype.____constructor(self)
|
|
49
|
+
self.handle = handle
|
|
50
|
+
end
|
|
51
|
+
function TextTag.prototype.onDestroy(self)
|
|
52
|
+
destroyTextTag(self.handle)
|
|
53
|
+
unitTextTags[self] = nil
|
|
54
|
+
return AbstractDestroyable.prototype.onDestroy(self)
|
|
55
|
+
end
|
|
56
|
+
function TextTag.flash(self, configuration, text, x, y, z)
|
|
57
|
+
local textTag = createTextTag()
|
|
58
|
+
setTextTagText(textTag, text, DEFAULT_FONT_SIZE)
|
|
59
|
+
setTextTagPos(textTag, x + configuration.offsetX, y + configuration.offsetY, (z or 0) + configuration.offsetZ)
|
|
60
|
+
applyConfiguration(textTag, configuration)
|
|
61
|
+
end
|
|
62
|
+
function TextTag.create(self, configuration, text, unit)
|
|
63
|
+
local handle = createTextTag()
|
|
64
|
+
setTextTagText(handle, text, DEFAULT_FONT_SIZE)
|
|
65
|
+
setTextTagPosUnit(handle, unit.handle, configuration.offsetZ)
|
|
66
|
+
applyConfiguration(handle, configuration)
|
|
67
|
+
setTextTagPermanent(handle, true)
|
|
68
|
+
local textTag = __TS__New(____exports.TextTag, handle)
|
|
69
|
+
textTag[100] = unit.handle
|
|
70
|
+
textTag[101] = configuration
|
|
71
|
+
unitTextTags[textTag] = true
|
|
72
|
+
return textTag
|
|
73
|
+
end
|
|
45
74
|
TextTag.BASE = {
|
|
46
75
|
fadepoint = 2,
|
|
47
76
|
lifespan = 3,
|
|
@@ -106,4 +135,9 @@ TextTag.SHADOW_STRIKE = __TS__ObjectAssign(
|
|
|
106
135
|
lifespan = 5
|
|
107
136
|
}
|
|
108
137
|
)
|
|
138
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
139
|
+
for textTag in pairs(unitTextTags) do
|
|
140
|
+
setTextTagPosUnit(textTag.handle, textTag[100], textTag[101].offsetZ)
|
|
141
|
+
end
|
|
142
|
+
end)
|
|
109
143
|
return ____exports
|
package/engine/unit.d.ts
CHANGED
package/engine/unit.lua
CHANGED
package/objutil/buff.lua
CHANGED
|
@@ -20,7 +20,6 @@ local AbilityDefinitionInnerFire = ____ability.AbilityDefinitionInnerFire
|
|
|
20
20
|
local AbilityDefinitionSearingArrows = ____ability.AbilityDefinitionSearingArrows
|
|
21
21
|
local AbilityDefinitionSlowPoison = ____ability.AbilityDefinitionSlowPoison
|
|
22
22
|
local ____unit = require("core.types.unit")
|
|
23
|
-
local AttackType = ____unit.AttackType
|
|
24
23
|
local DamageType = ____unit.DamageType
|
|
25
24
|
local Unit = ____unit.Unit
|
|
26
25
|
local ____dummy = require("core.dummy")
|
|
@@ -756,7 +755,7 @@ for ____, pointDispelAbilityId in ipairs(pointDispelAbilityIds) do
|
|
|
756
755
|
end)
|
|
757
756
|
end
|
|
758
757
|
Unit.onDamaging:addListener(function(source, target, event)
|
|
759
|
-
if event.amount == 0 and event.attackType ==
|
|
758
|
+
if event.amount == 0 and event.attackType == 0 and event.damageType == DamageType.NORMAL and not event.isAttack then
|
|
760
759
|
Timer:run(function()
|
|
761
760
|
checkBuffs(target, true, source)
|
|
762
761
|
end)
|
package/objutil/unit.lua
CHANGED
|
@@ -11,6 +11,8 @@ local ____exports = {}
|
|
|
11
11
|
local ____object = require("objutil.object")
|
|
12
12
|
local ObjectDefinition = ____object.ObjectDefinition
|
|
13
13
|
local idgen = require("objutil.idgen")
|
|
14
|
+
local ____config = require("config")
|
|
15
|
+
local WarscriptConfig = ____config.WarscriptConfig
|
|
14
16
|
local attackTypes = setmetatable(
|
|
15
17
|
{
|
|
16
18
|
normal = "normal",
|
|
@@ -593,6 +595,9 @@ __TS__SetDescriptor(
|
|
|
593
595
|
end,
|
|
594
596
|
set = function(self, v)
|
|
595
597
|
self:setStringField("umdl", v)
|
|
598
|
+
if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
599
|
+
self:setStringField("upor", "")
|
|
600
|
+
end
|
|
596
601
|
end
|
|
597
602
|
},
|
|
598
603
|
true
|
|
@@ -606,6 +611,9 @@ __TS__SetDescriptor(
|
|
|
606
611
|
end,
|
|
607
612
|
set = function(self, v)
|
|
608
613
|
self.object:setField("umdl:hd", v)
|
|
614
|
+
if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
615
|
+
self.object:setField("upor:hd", "")
|
|
616
|
+
end
|
|
609
617
|
end
|
|
610
618
|
},
|
|
611
619
|
true
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "warscript",
|
|
4
|
-
"version": "0.0.1-dev.
|
|
4
|
+
"version": "0.0.1-dev.475a555",
|
|
5
5
|
"description": "A typescript library for Warcraft III using Warpack.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"warcraft",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@warscript/language-extensions": "^0.0.1",
|
|
25
25
|
"@warscript/tstl-plugin": "^0.0.4",
|
|
26
26
|
"lua-types": "^2.13.1",
|
|
27
|
-
"warpack": "0.0.1-dev.
|
|
27
|
+
"warpack": "0.0.1-dev.fa5e065"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@typescript-eslint/eslint-plugin": "^8.13.0",
|
package/utility/arrays.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare const mapToLuaSet: {
|
|
|
22
22
|
<T, R extends AnyNotNil>(array: readonly T[], transform: (value: T) => R): LuaSet<R>;
|
|
23
23
|
<T, K extends KeysOfType<T, AnyNotNil>>(array: readonly T[], key: K): LuaSet<T[K] extends AnyNotNil ? T[K] : never>;
|
|
24
24
|
};
|
|
25
|
+
export declare const flatten: <T>(array: readonly (readonly T[])[]) => T[];
|
|
25
26
|
export declare const flatMap: {
|
|
26
27
|
<T, R>(array: readonly T[], transform: (value: T) => readonly R[]): R[];
|
|
27
28
|
<T, K extends KeysOfType<T, readonly any[]>>(array: readonly T[], key: K): (T[K] extends readonly (infer R)[] ? R : never)[];
|
package/utility/arrays.lua
CHANGED
|
@@ -3,6 +3,8 @@ local __TS__New = ____lualib.__TS__New
|
|
|
3
3
|
local ____exports = {}
|
|
4
4
|
local ____exception = require("exception")
|
|
5
5
|
local IllegalArgumentException = ____exception.IllegalArgumentException
|
|
6
|
+
local ____functions = require("utility.functions")
|
|
7
|
+
local identity = ____functions.identity
|
|
6
8
|
local mathMax = math.max
|
|
7
9
|
local mathMin = math.min
|
|
8
10
|
local select = _G.select
|
|
@@ -120,6 +122,7 @@ ____exports.mapToLuaSet = function(array, transform)
|
|
|
120
122
|
end
|
|
121
123
|
return result
|
|
122
124
|
end
|
|
125
|
+
____exports.flatten = function(array) return ____exports.flatMap(array, identity) end
|
|
123
126
|
____exports.flatMap = function(array, transform)
|
|
124
127
|
local result = {}
|
|
125
128
|
local k = 1
|
package/utility/functions.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export declare const apply: {
|
|
|
3
3
|
<T, ConsumerParameters extends any[]>(object: T, consumer: (value: T, ...parameters: ConsumerParameters) => void, ...parameters: ConsumerParameters): T;
|
|
4
4
|
<T, ConsumerParameters extends any[], K extends KeysOfType<T, (...parameters: ConsumerParameters) => void>>(object: T, key: K, ...parameters: ConsumerParameters): T;
|
|
5
5
|
};
|
|
6
|
+
export declare const identity: <T>(value: T) => T;
|