warscript 0.0.1-dev.78d01a4 → 0.0.1-dev.7909297
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 +65 -39
- package/core/types/order.d.ts +1 -0
- package/core/types/order.lua +11 -1
- 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-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- 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 +12 -7
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- package/engine/behaviour/ability.d.ts +12 -3
- package/engine/behaviour/ability.lua +66 -7
- package/engine/behaviour/unit.d.ts +12 -0
- package/engine/behaviour/unit.lua +85 -0
- package/engine/buff.d.ts +56 -41
- package/engine/buff.lua +295 -228
- package/engine/internal/ability.d.ts +13 -1
- package/engine/internal/ability.lua +74 -2
- package/engine/internal/item/ability.lua +112 -4
- package/engine/internal/item.d.ts +5 -4
- package/engine/internal/item.lua +107 -28
- 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/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- 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 +17 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.lua +6 -12
- 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 +26 -4
- package/engine/internal/unit.lua +194 -48
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- 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 +89 -33
- 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 +3 -1
- package/engine/object-data/entry/item-type.lua +15 -2
- 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-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +6 -3
- package/engine/object-field/ability.lua +3 -0
- package/engine/object-field/unit.d.ts +46 -3
- package/engine/object-field/unit.lua +173 -7
- package/engine/object-field.d.ts +11 -3
- package/engine/object-field.lua +162 -76
- 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/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 +3 -0
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
package/attributes.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
declare const marker: {};
|
|
2
3
|
export type Attribute<T> = {
|
|
3
4
|
readonly __attribute: unique symbol;
|
|
4
5
|
readonly __type: T;
|
|
6
|
+
readonly __marker: typeof marker;
|
|
5
7
|
} & symbol;
|
|
8
|
+
export declare const attribute: <T>() => Attribute<T>;
|
|
9
|
+
export declare const isAttribute: (value: unknown) => value is Attribute<unknown>;
|
|
6
10
|
export declare namespace Attribute {
|
|
7
11
|
const create: <T>() => Attribute<T>;
|
|
8
12
|
}
|
|
@@ -10,3 +14,4 @@ export declare class AttributesHolder {
|
|
|
10
14
|
readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
|
|
11
15
|
readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
|
|
12
16
|
}
|
|
17
|
+
export {};
|
package/attributes.lua
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local ____exports = {}
|
|
4
|
+
local marker = {}
|
|
5
|
+
____exports.attribute = function()
|
|
6
|
+
return {__marker = marker}
|
|
7
|
+
end
|
|
8
|
+
____exports.isAttribute = function(value)
|
|
9
|
+
return type(value) == "table" and rawget(value, "__marker") == marker
|
|
10
|
+
end
|
|
4
11
|
____exports.Attribute = {}
|
|
5
12
|
local Attribute = ____exports.Attribute
|
|
6
13
|
do
|
|
7
14
|
Attribute.create = function()
|
|
8
|
-
return {}
|
|
15
|
+
return {__marker = marker}
|
|
9
16
|
end
|
|
10
17
|
end
|
|
11
18
|
____exports.AttributesHolder = __TS__Class()
|
package/config.d.ts
ADDED
package/config.lua
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
____exports.WarscriptConfig = __TS__Class()
|
|
5
|
+
local WarscriptConfig = ____exports.WarscriptConfig
|
|
6
|
+
WarscriptConfig.name = "WarscriptConfig"
|
|
7
|
+
function WarscriptConfig.prototype.____constructor(self)
|
|
8
|
+
end
|
|
9
|
+
WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH = true
|
|
10
|
+
return ____exports
|
package/core/types/effect.d.ts
CHANGED
|
@@ -30,12 +30,10 @@ export declare class Effect extends Handle<jeffect> {
|
|
|
30
30
|
set pitch(pitch: number);
|
|
31
31
|
get roll(): number;
|
|
32
32
|
set roll(roll: number);
|
|
33
|
-
static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T),
|
|
34
|
-
static createTarget<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, target: Widget, attachPoint: string): T;
|
|
33
|
+
static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), modelPath: string, xOrWidget: number | Widget, yOrAttachmentPoint?: number | string, parameters?: EffectParameters): T;
|
|
35
34
|
static flash(modelPath: string, ...args: [
|
|
36
35
|
...pointOrWidget: [x: number, y: number] | [widget: Widget, attachmentPoint?: string],
|
|
37
36
|
...parametersOrDuration: [parametersOrDuration?: EffectParameters | number] | [duration?: number, parameters?: EffectParameters]
|
|
38
37
|
]): void;
|
|
39
|
-
static flashTarget(model: string, target: Widget, attachPoint: string, duration?: number): void;
|
|
40
38
|
}
|
|
41
39
|
export {};
|
package/core/types/effect.lua
CHANGED
|
@@ -4,7 +4,7 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
|
4
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
5
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
6
6
|
local ____exports = {}
|
|
7
|
-
local dummyPlayer, flash
|
|
7
|
+
local dummyPlayer, addSpecialEffectInternal, flash
|
|
8
8
|
local ____handle = require("core.types.handle")
|
|
9
9
|
local Handle = ____handle.Handle
|
|
10
10
|
local ____playerColor = require("core.types.playerColor")
|
|
@@ -119,10 +119,18 @@ local function setSpecialEffectColor(effect, color)
|
|
|
119
119
|
dummyPlayer.color = dummyColor
|
|
120
120
|
end
|
|
121
121
|
local setters = {scale = setSpecialEffectScale, color = setSpecialEffectColor, pitch = setSpecialEffectPitchDegrees, roll = setSpecialEffectRollDegrees}
|
|
122
|
+
local setterProperties = {"scale", "color", "pitch", "roll"}
|
|
122
123
|
dummyPlayer = Player.neutralExtra
|
|
123
124
|
local temporaryEffects = {}
|
|
124
125
|
local temporaryEffectsDurations = {}
|
|
125
126
|
local temporaryEffectsCount = 0
|
|
127
|
+
local delayedEffectsModelPath = {}
|
|
128
|
+
local delayedEffectsXOrWidget = {}
|
|
129
|
+
local delayedEffectsYOrAttachmentPoint = {}
|
|
130
|
+
local delayedEffectsDuration = {}
|
|
131
|
+
local delayedEffectsParameters = {}
|
|
132
|
+
local delayedEffectsDelay = {}
|
|
133
|
+
local delayedEffectsCount = 0
|
|
126
134
|
local period = 1 / 32
|
|
127
135
|
Timer.onPeriod[period]:addListener(function()
|
|
128
136
|
local i = 1
|
|
@@ -131,12 +139,36 @@ Timer.onPeriod[period]:addListener(function()
|
|
|
131
139
|
if duration <= 0 then
|
|
132
140
|
destroyEffect(temporaryEffects[i])
|
|
133
141
|
temporaryEffects[i] = temporaryEffects[temporaryEffectsCount]
|
|
142
|
+
temporaryEffectsDurations[i] = temporaryEffectsDurations[temporaryEffectsCount]
|
|
134
143
|
temporaryEffectsCount = temporaryEffectsCount - 1
|
|
135
144
|
else
|
|
136
145
|
temporaryEffectsDurations[i] = duration - period
|
|
137
146
|
i = i + 1
|
|
138
147
|
end
|
|
139
148
|
end
|
|
149
|
+
i = 1
|
|
150
|
+
while i <= delayedEffectsCount do
|
|
151
|
+
local delay = delayedEffectsDelay[i]
|
|
152
|
+
if delay <= 0 then
|
|
153
|
+
flash(
|
|
154
|
+
delayedEffectsModelPath[i],
|
|
155
|
+
delayedEffectsXOrWidget[i],
|
|
156
|
+
delayedEffectsYOrAttachmentPoint[i],
|
|
157
|
+
delayedEffectsDuration[i],
|
|
158
|
+
delayedEffectsParameters[i]
|
|
159
|
+
)
|
|
160
|
+
delayedEffectsModelPath[i] = delayedEffectsModelPath[delayedEffectsCount]
|
|
161
|
+
delayedEffectsXOrWidget[i] = delayedEffectsXOrWidget[delayedEffectsCount]
|
|
162
|
+
delayedEffectsYOrAttachmentPoint[i] = delayedEffectsYOrAttachmentPoint[delayedEffectsCount]
|
|
163
|
+
delayedEffectsDuration[i] = delayedEffectsDuration[delayedEffectsCount]
|
|
164
|
+
delayedEffectsParameters[i] = delayedEffectsParameters[delayedEffectsCount]
|
|
165
|
+
delayedEffectsDelay[i] = delayedEffectsDelay[delayedEffectsCount]
|
|
166
|
+
delayedEffectsCount = delayedEffectsCount - 1
|
|
167
|
+
else
|
|
168
|
+
delayedEffectsDelay[i] = delay - period
|
|
169
|
+
i = i + 1
|
|
170
|
+
end
|
|
171
|
+
end
|
|
140
172
|
end)
|
|
141
173
|
____exports.Effect = __TS__Class()
|
|
142
174
|
local Effect = ____exports.Effect
|
|
@@ -146,27 +178,28 @@ function Effect.prototype.onDestroy(self)
|
|
|
146
178
|
destroyEffect(self.handle)
|
|
147
179
|
return Handle.prototype.onDestroy(self)
|
|
148
180
|
end
|
|
149
|
-
function Effect.create(self,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
181
|
+
function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
182
|
+
local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
|
|
183
|
+
if parameters ~= nil then
|
|
184
|
+
effect[100] = parameters.color
|
|
185
|
+
effect[101] = parameters.pitch
|
|
186
|
+
effect[102] = parameters.roll
|
|
187
|
+
end
|
|
188
|
+
return effect
|
|
154
189
|
end
|
|
155
190
|
function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, parametersOrDuration, parameters)
|
|
156
191
|
if type(parametersOrDuration) ~= "number" then
|
|
157
192
|
parameters = parametersOrDuration
|
|
158
193
|
parametersOrDuration = nil
|
|
159
194
|
end
|
|
160
|
-
if parameters and parameters.delay
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
parameters
|
|
169
|
-
)
|
|
195
|
+
if parameters and (parameters.delay or 0) > 0 then
|
|
196
|
+
delayedEffectsCount = delayedEffectsCount + 1
|
|
197
|
+
delayedEffectsModelPath[delayedEffectsCount] = modelPath
|
|
198
|
+
delayedEffectsXOrWidget[delayedEffectsCount] = xOrWidget
|
|
199
|
+
delayedEffectsYOrAttachmentPoint[delayedEffectsCount] = yOrOrAttachmentPoint
|
|
200
|
+
delayedEffectsDuration[delayedEffectsCount] = parametersOrDuration
|
|
201
|
+
delayedEffectsParameters[delayedEffectsCount] = parameters
|
|
202
|
+
delayedEffectsDelay[delayedEffectsCount] = parameters.delay
|
|
170
203
|
return
|
|
171
204
|
end
|
|
172
205
|
flash(
|
|
@@ -177,24 +210,12 @@ function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, paramete
|
|
|
177
210
|
parameters
|
|
178
211
|
)
|
|
179
212
|
end
|
|
180
|
-
function Effect.flashTarget(self, model, target, attachPoint, duration)
|
|
181
|
-
local effect = addSpecialEffectTarget(model, target.handle, attachPoint)
|
|
182
|
-
if effect ~= nil then
|
|
183
|
-
if duration and duration > 0 then
|
|
184
|
-
temporaryEffectsCount = temporaryEffectsCount + 1
|
|
185
|
-
temporaryEffects[temporaryEffectsCount] = effect
|
|
186
|
-
temporaryEffectsDurations[temporaryEffectsCount] = duration
|
|
187
|
-
else
|
|
188
|
-
destroyEffect(effect)
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
213
|
__TS__SetDescriptor(
|
|
193
214
|
Effect.prototype,
|
|
194
215
|
"color",
|
|
195
216
|
{
|
|
196
217
|
get = function(self)
|
|
197
|
-
return self[100] or PlayerColor.
|
|
218
|
+
return self[100] or PlayerColor.red
|
|
198
219
|
end,
|
|
199
220
|
set = function(self, color)
|
|
200
221
|
setSpecialEffectColor(self.handle, color)
|
|
@@ -244,30 +265,35 @@ __TS__SetDescriptor(
|
|
|
244
265
|
},
|
|
245
266
|
true
|
|
246
267
|
)
|
|
247
|
-
|
|
268
|
+
addSpecialEffectInternal = function(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
248
269
|
local coordinatesProvided = type(xOrWidget) == "number"
|
|
249
270
|
local isPositional = coordinatesProvided or (parameters and parameters.detached) == true
|
|
250
271
|
local x = not isPositional and 0 or (coordinatesProvided and xOrWidget or xOrWidget.x)
|
|
251
|
-
local y = not isPositional and 0 or (coordinatesProvided and
|
|
252
|
-
local effect = isPositional and addSpecialEffect(modelPath, x, y) or addSpecialEffectTarget(modelPath, xOrWidget.handle,
|
|
253
|
-
if isPositional and not coordinatesProvided and (parameters and parameters.scale) == nil and __TS__InstanceOf(xOrWidget, Unit) then
|
|
254
|
-
setSpecialEffectScale(effect, xOrWidget.scale)
|
|
255
|
-
end
|
|
272
|
+
local y = not isPositional and 0 or (coordinatesProvided and yOrAttachmentPoint or xOrWidget.y)
|
|
273
|
+
local effect = isPositional and addSpecialEffect(modelPath, x, y) or addSpecialEffectTarget(modelPath, xOrWidget.handle, yOrAttachmentPoint or "origin")
|
|
256
274
|
if parameters ~= nil then
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
275
|
+
if isPositional and parameters.scale == nil and __TS__InstanceOf(xOrWidget, Unit) then
|
|
276
|
+
setSpecialEffectScale(effect, xOrWidget.scale)
|
|
277
|
+
end
|
|
278
|
+
for ____, property in ipairs(setterProperties) do
|
|
279
|
+
local value = parameters[property]
|
|
280
|
+
if value ~= nil then
|
|
281
|
+
setters[property](effect, value)
|
|
260
282
|
end
|
|
261
283
|
end
|
|
262
284
|
if isPositional and parameters.zOffset ~= nil then
|
|
263
285
|
moveLocation(location, x, y)
|
|
264
286
|
local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
|
|
265
|
-
|
|
287
|
+
setSpecialEffectZ(
|
|
266
288
|
effect,
|
|
267
289
|
z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
|
|
268
290
|
)
|
|
269
291
|
end
|
|
270
292
|
end
|
|
293
|
+
return effect
|
|
294
|
+
end
|
|
295
|
+
flash = function(modelPath, xOrWidget, yOrAttachmentPoint, duration, parameters)
|
|
296
|
+
local effect = addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
271
297
|
if duration ~= nil and duration > 0 then
|
|
272
298
|
temporaryEffectsCount = temporaryEffectsCount + 1
|
|
273
299
|
temporaryEffects[temporaryEffectsCount] = effect
|
package/core/types/order.d.ts
CHANGED
package/core/types/order.lua
CHANGED
|
@@ -3,16 +3,25 @@ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
|
3
3
|
local ____exports = {}
|
|
4
4
|
local ____unit = require("core.types.unit")
|
|
5
5
|
local Unit = ____unit.Unit
|
|
6
|
+
local ____game = require("core.game")
|
|
7
|
+
local elapsedTime = ____game.elapsedTime
|
|
6
8
|
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
7
9
|
local orders = setmetatable({}, {__mode = "k"})
|
|
8
10
|
Unit.onImmediateOrder:addListener(function(unit, orderId)
|
|
9
|
-
orders[unit] = {
|
|
11
|
+
orders[unit] = {
|
|
12
|
+
id = orderId,
|
|
13
|
+
startX = unit.x,
|
|
14
|
+
startY = unit.y,
|
|
15
|
+
issueTime = elapsedTime(),
|
|
16
|
+
type = "immediate"
|
|
17
|
+
}
|
|
10
18
|
end)
|
|
11
19
|
Unit.onPointOrder:addListener(function(unit, orderId, x, y)
|
|
12
20
|
orders[unit] = {
|
|
13
21
|
id = orderId,
|
|
14
22
|
startX = unit.x,
|
|
15
23
|
startY = unit.y,
|
|
24
|
+
issueTime = elapsedTime(),
|
|
16
25
|
type = "point",
|
|
17
26
|
targetX = x,
|
|
18
27
|
targetY = y
|
|
@@ -23,6 +32,7 @@ Unit.onTargetOrder:addListener(function(unit, orderId, target)
|
|
|
23
32
|
id = orderId,
|
|
24
33
|
startX = unit.x,
|
|
25
34
|
startY = unit.y,
|
|
35
|
+
issueTime = elapsedTime(),
|
|
26
36
|
type = "target",
|
|
27
37
|
target = target
|
|
28
38
|
}
|
package/core/types/sound.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Handle, HandleDestructor } from "./handle";
|
|
3
3
|
import { Unit } from "./unit";
|
|
4
|
+
import { SoundEax } from "../../engine/object-data/auxiliary/sound-eax";
|
|
4
5
|
export declare enum SoundChannel {
|
|
5
6
|
General = 0,
|
|
6
7
|
UnitSelection = 1,
|
|
@@ -18,16 +19,7 @@ export declare enum SoundChannel {
|
|
|
18
19
|
Birth = 13,
|
|
19
20
|
Fire = 14
|
|
20
21
|
}
|
|
21
|
-
export
|
|
22
|
-
Default = "DefaultEAXON",
|
|
23
|
-
Acknowledgements = "HeroAcksEAX",
|
|
24
|
-
Environment = "DoodadsEAX",
|
|
25
|
-
Drums = "KotoDrumsEAX",
|
|
26
|
-
Attacks = "CombatSoundsEAX",
|
|
27
|
-
Abilities = "SpellsEAX",
|
|
28
|
-
Missiles = "MissilesEAX"
|
|
29
|
-
}
|
|
30
|
-
export type SoundPreset = Readonly<{
|
|
22
|
+
export type SoundSettings = Readonly<{
|
|
31
23
|
channel?: SoundChannel;
|
|
32
24
|
eax?: SoundEax;
|
|
33
25
|
fadeInRate?: number;
|
|
@@ -36,19 +28,19 @@ export type SoundPreset = Readonly<{
|
|
|
36
28
|
volume?: number;
|
|
37
29
|
pitch?: number;
|
|
38
30
|
}>;
|
|
39
|
-
export type
|
|
31
|
+
export type Sound3DSettings = SoundSettings & Readonly<{
|
|
40
32
|
stopWhenOutOfRange?: boolean;
|
|
41
33
|
minDistance?: number;
|
|
42
34
|
maxDistance?: number;
|
|
43
35
|
distanceCutoff?: number;
|
|
44
36
|
}>;
|
|
45
|
-
export declare namespace
|
|
46
|
-
const UI:
|
|
47
|
-
const Music:
|
|
48
|
-
const Attack:
|
|
49
|
-
const Ability:
|
|
50
|
-
const AbilityLooping:
|
|
51
|
-
const Missile:
|
|
37
|
+
export declare namespace SoundSettings {
|
|
38
|
+
const UI: SoundSettings;
|
|
39
|
+
const Music: SoundSettings;
|
|
40
|
+
const Attack: Sound3DSettings;
|
|
41
|
+
const Ability: Sound3DSettings;
|
|
42
|
+
const AbilityLooping: Sound3DSettings;
|
|
43
|
+
const Missile: Sound3DSettings;
|
|
52
44
|
}
|
|
53
45
|
export declare class Sound extends Handle<jsound, [fadeOut?: boolean]> {
|
|
54
46
|
private _volume?;
|
|
@@ -58,12 +50,13 @@ export declare class Sound extends Handle<jsound, [fadeOut?: boolean]> {
|
|
|
58
50
|
start(milliseconds?: number): void;
|
|
59
51
|
stop(fadeOut?: boolean): void;
|
|
60
52
|
restart(milliseconds?: number): void;
|
|
61
|
-
static play(fileName: string, preset:
|
|
62
|
-
static create(fileName: string, preset:
|
|
53
|
+
static play(fileName: string, preset: SoundSettings): void;
|
|
54
|
+
static create(fileName: string, preset: SoundSettings): Sound;
|
|
63
55
|
}
|
|
64
56
|
export declare class Sound3D extends Sound {
|
|
65
|
-
static playAtPosition(fileName: string, preset:
|
|
66
|
-
static playOnUnit(fileName: string, preset:
|
|
67
|
-
static
|
|
68
|
-
static
|
|
57
|
+
static playAtPosition(fileName: string, preset: Sound3DSettings, x?: number, y?: number, z?: number): void;
|
|
58
|
+
static playOnUnit(fileName: string, preset: Sound3DSettings, unit: Unit): void;
|
|
59
|
+
static playFromLabel(label: string, preset: Sound3DSettings, ...positionOrUnit: [Unit] | [number, number, number?]): void;
|
|
60
|
+
static createAtPosition(fileName: string, preset: Sound3DSettings, x?: number, y?: number, z?: number): Sound3D;
|
|
61
|
+
static createOnUnit(fileName: string, preset: Sound3DSettings, unit: Unit): Sound3D;
|
|
69
62
|
}
|
package/core/types/sound.lua
CHANGED
|
@@ -5,15 +5,18 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
|
5
5
|
local ____exports = {}
|
|
6
6
|
local ____handle = require("core.types.handle")
|
|
7
7
|
local Handle = ____handle.Handle
|
|
8
|
+
local ____sound_2Dpreset = require("engine.object-data.entry.sound-preset")
|
|
9
|
+
local SoundPreset = ____sound_2Dpreset.SoundPreset
|
|
10
|
+
local ____random = require("engine.random")
|
|
11
|
+
local randomInteger = ____random.randomInteger
|
|
8
12
|
local createSound = CreateSound
|
|
13
|
+
local createSoundFromLabel = CreateSoundFromLabel
|
|
9
14
|
local setSoundPitch = SetSoundPitch
|
|
10
15
|
local setSoundChannel = SetSoundChannel
|
|
11
16
|
local setSoundPosition = SetSoundPosition
|
|
12
17
|
local setSoundVolume = SetSoundVolume
|
|
13
18
|
local setSoundDistances = SetSoundDistances
|
|
14
19
|
local setSoundDistanceCutoff = SetSoundDistanceCutoff
|
|
15
|
-
local setSoundConeAngles = SetSoundConeAngles
|
|
16
|
-
local setSoundConeOrientation = SetSoundConeOrientation
|
|
17
20
|
local startSound = StartSound
|
|
18
21
|
local setSoundPlayPosition = SetSoundPlayPosition
|
|
19
22
|
local stopSound = StopSound
|
|
@@ -50,29 +53,21 @@ ____exports.SoundChannel.Birth = 13
|
|
|
50
53
|
____exports.SoundChannel[____exports.SoundChannel.Birth] = "Birth"
|
|
51
54
|
____exports.SoundChannel.Fire = 14
|
|
52
55
|
____exports.SoundChannel[____exports.SoundChannel.Fire] = "Fire"
|
|
53
|
-
____exports.
|
|
54
|
-
|
|
55
|
-
____exports.SoundEax.Acknowledgements = "HeroAcksEAX"
|
|
56
|
-
____exports.SoundEax.Environment = "DoodadsEAX"
|
|
57
|
-
____exports.SoundEax.Drums = "KotoDrumsEAX"
|
|
58
|
-
____exports.SoundEax.Attacks = "CombatSoundsEAX"
|
|
59
|
-
____exports.SoundEax.Abilities = "SpellsEAX"
|
|
60
|
-
____exports.SoundEax.Missiles = "MissilesEAX"
|
|
61
|
-
____exports.SoundPreset = {}
|
|
62
|
-
local SoundPreset = ____exports.SoundPreset
|
|
56
|
+
____exports.SoundSettings = {}
|
|
57
|
+
local SoundSettings = ____exports.SoundSettings
|
|
63
58
|
do
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
SoundSettings.UI = {channel = ____exports.SoundChannel.UI, eax = "DefaultEAXON", fadeInRate = 12700, fadeOutRate = 12700}
|
|
60
|
+
SoundSettings.Music = {
|
|
66
61
|
channel = ____exports.SoundChannel.Music,
|
|
67
|
-
eax =
|
|
62
|
+
eax = "DefaultEAXON",
|
|
68
63
|
fadeInRate = 12700,
|
|
69
64
|
fadeOutRate = 12700,
|
|
70
65
|
looping = true
|
|
71
66
|
}
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
SoundSettings.Attack = {channel = ____exports.SoundChannel.Combat, eax = "CombatSoundsEAX", fadeInRate = 10, fadeOutRate = 10}
|
|
68
|
+
SoundSettings.Ability = {
|
|
74
69
|
channel = ____exports.SoundChannel.Animations,
|
|
75
|
-
eax =
|
|
70
|
+
eax = "SpellsEAX",
|
|
76
71
|
stopWhenOutOfRange = true,
|
|
77
72
|
volume = 127,
|
|
78
73
|
fadeInRate = 1,
|
|
@@ -82,9 +77,9 @@ do
|
|
|
82
77
|
maxDistance = 3500,
|
|
83
78
|
distanceCutoff = 3000
|
|
84
79
|
}
|
|
85
|
-
|
|
80
|
+
SoundSettings.AbilityLooping = {
|
|
86
81
|
channel = ____exports.SoundChannel.Birth,
|
|
87
|
-
eax =
|
|
82
|
+
eax = "SpellsEAX",
|
|
88
83
|
looping = true,
|
|
89
84
|
stopWhenOutOfRange = true,
|
|
90
85
|
volume = 127,
|
|
@@ -95,9 +90,9 @@ do
|
|
|
95
90
|
maxDistance = 3000,
|
|
96
91
|
distanceCutoff = 3000
|
|
97
92
|
}
|
|
98
|
-
|
|
93
|
+
SoundSettings.Missile = {
|
|
99
94
|
channel = ____exports.SoundChannel.Animations,
|
|
100
|
-
eax =
|
|
95
|
+
eax = "MissilesEAX",
|
|
101
96
|
stopWhenOutOfRange = true,
|
|
102
97
|
volume = 127,
|
|
103
98
|
fadeInRate = 1,
|
|
@@ -108,6 +103,29 @@ do
|
|
|
108
103
|
distanceCutoff = 3000
|
|
109
104
|
}
|
|
110
105
|
end
|
|
106
|
+
local customSoundPresetDataByLabel = postcompile(function()
|
|
107
|
+
local customSoundPresetDataByLabel = {}
|
|
108
|
+
for ____, soundPreset in ipairs(SoundPreset:getAll()) do
|
|
109
|
+
if soundPreset.isCustom then
|
|
110
|
+
customSoundPresetDataByLabel[soundPreset.id] = {
|
|
111
|
+
filePaths = soundPreset.filePaths,
|
|
112
|
+
volume = soundPreset.volume,
|
|
113
|
+
pitch = soundPreset.pitch,
|
|
114
|
+
channel = soundPreset.channel,
|
|
115
|
+
minimumDistance = soundPreset.minimumDistance,
|
|
116
|
+
maximumDistance = soundPreset.maximumDistance,
|
|
117
|
+
distanceCutoff = soundPreset.distanceCutoff,
|
|
118
|
+
eax = soundPreset.eax
|
|
119
|
+
}
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
return customSoundPresetDataByLabel
|
|
123
|
+
end)
|
|
124
|
+
---
|
|
125
|
+
-- @internal For use by internal systems only.
|
|
126
|
+
____exports.isSoundLabelCustom = function(label)
|
|
127
|
+
return customSoundPresetDataByLabel[label] ~= nil
|
|
128
|
+
end
|
|
111
129
|
local function createPresetSound(fileName, preset)
|
|
112
130
|
local ____fileName_1 = fileName
|
|
113
131
|
local ____preset_looping_0 = preset.looping
|
|
@@ -121,7 +139,7 @@ local function createPresetSound(fileName, preset)
|
|
|
121
139
|
true,
|
|
122
140
|
preset.fadeInRate or 12700,
|
|
123
141
|
preset.fadeOutRate or 12700,
|
|
124
|
-
preset.eax or
|
|
142
|
+
preset.eax or "DefaultEAXON"
|
|
125
143
|
)
|
|
126
144
|
setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
|
|
127
145
|
setSoundVolume(sound, preset.volume or 127)
|
|
@@ -144,7 +162,7 @@ local function createPreset3DSound(fileName, preset)
|
|
|
144
162
|
____preset_stopWhenOutOfRange_3,
|
|
145
163
|
preset.fadeInRate or 12700,
|
|
146
164
|
preset.fadeOutRate or 12700,
|
|
147
|
-
preset.eax or
|
|
165
|
+
preset.eax or "DefaultEAXON"
|
|
148
166
|
)
|
|
149
167
|
setSoundChannel(sound, preset.channel or ____exports.SoundChannel.General)
|
|
150
168
|
setSoundVolume(sound, preset.volume or 127)
|
|
@@ -153,6 +171,53 @@ local function createPreset3DSound(fileName, preset)
|
|
|
153
171
|
setSoundDistanceCutoff(sound, preset.distanceCutoff or 1500)
|
|
154
172
|
return sound
|
|
155
173
|
end
|
|
174
|
+
local function createPreset3DSoundFromLabel(label, preset)
|
|
175
|
+
local customSoundPresetData = customSoundPresetDataByLabel[label]
|
|
176
|
+
if customSoundPresetData == nil then
|
|
177
|
+
local ____label_7 = label
|
|
178
|
+
local ____preset_looping_5 = preset.looping
|
|
179
|
+
if ____preset_looping_5 == nil then
|
|
180
|
+
____preset_looping_5 = false
|
|
181
|
+
end
|
|
182
|
+
local ____preset_stopWhenOutOfRange_6 = preset.stopWhenOutOfRange
|
|
183
|
+
if ____preset_stopWhenOutOfRange_6 == nil then
|
|
184
|
+
____preset_stopWhenOutOfRange_6 = true
|
|
185
|
+
end
|
|
186
|
+
return createSoundFromLabel(
|
|
187
|
+
____label_7,
|
|
188
|
+
____preset_looping_5,
|
|
189
|
+
true,
|
|
190
|
+
____preset_stopWhenOutOfRange_6,
|
|
191
|
+
preset.fadeInRate or 12700,
|
|
192
|
+
preset.fadeOutRate or 12700
|
|
193
|
+
)
|
|
194
|
+
else
|
|
195
|
+
local ____customSoundPresetData_filePaths_index_10 = customSoundPresetData.filePaths[randomInteger(#customSoundPresetData.filePaths - 1) + 1]
|
|
196
|
+
local ____preset_looping_8 = preset.looping
|
|
197
|
+
if ____preset_looping_8 == nil then
|
|
198
|
+
____preset_looping_8 = false
|
|
199
|
+
end
|
|
200
|
+
local ____preset_stopWhenOutOfRange_9 = preset.stopWhenOutOfRange
|
|
201
|
+
if ____preset_stopWhenOutOfRange_9 == nil then
|
|
202
|
+
____preset_stopWhenOutOfRange_9 = true
|
|
203
|
+
end
|
|
204
|
+
local sound = createSound(
|
|
205
|
+
____customSoundPresetData_filePaths_index_10,
|
|
206
|
+
____preset_looping_8,
|
|
207
|
+
true,
|
|
208
|
+
____preset_stopWhenOutOfRange_9,
|
|
209
|
+
preset.fadeInRate or 12700,
|
|
210
|
+
preset.fadeOutRate or 12700,
|
|
211
|
+
customSoundPresetData.eax
|
|
212
|
+
)
|
|
213
|
+
setSoundChannel(sound, customSoundPresetData.channel)
|
|
214
|
+
setSoundVolume(sound, customSoundPresetData.volume)
|
|
215
|
+
setSoundPitch(sound, customSoundPresetData.pitch)
|
|
216
|
+
setSoundDistances(sound, customSoundPresetData.minimumDistance, customSoundPresetData.maximumDistance)
|
|
217
|
+
setSoundDistanceCutoff(sound, customSoundPresetData.distanceCutoff)
|
|
218
|
+
return sound
|
|
219
|
+
end
|
|
220
|
+
end
|
|
156
221
|
____exports.Sound = __TS__Class()
|
|
157
222
|
local Sound = ____exports.Sound
|
|
158
223
|
Sound.name = "Sound"
|
|
@@ -225,6 +290,16 @@ function Sound3D.playOnUnit(self, fileName, preset, unit)
|
|
|
225
290
|
startSound(sound)
|
|
226
291
|
killSoundWhenDone(sound)
|
|
227
292
|
end
|
|
293
|
+
function Sound3D.playFromLabel(self, label, preset, unitOrX, y, z)
|
|
294
|
+
local sound = createPreset3DSoundFromLabel(label, preset)
|
|
295
|
+
if type(unitOrX) ~= "number" then
|
|
296
|
+
attachSoundToUnit(sound, unitOrX.handle)
|
|
297
|
+
else
|
|
298
|
+
setSoundPosition(sound, unitOrX, y or 0, z or 0)
|
|
299
|
+
end
|
|
300
|
+
startSound(sound)
|
|
301
|
+
killSoundWhenDone(sound)
|
|
302
|
+
end
|
|
228
303
|
function Sound3D.createAtPosition(self, fileName, preset, x, y, z)
|
|
229
304
|
if x == nil then
|
|
230
305
|
x = 0
|
package/core/types/timer.d.ts
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Event } from "../../event";
|
|
3
|
+
import { AbstractDestroyable, Destructor } from "../../destroyable";
|
|
3
4
|
declare const enum TimerPropertyKey {
|
|
4
5
|
HANDLE = 0,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
ARGS_LENGTH = 4
|
|
6
|
+
DESTROY_ON_EXPIRATION = 1,
|
|
7
|
+
CALLBACK = 2,
|
|
8
|
+
ARGS_LENGTH = 3
|
|
9
9
|
}
|
|
10
|
-
export declare class Timer
|
|
10
|
+
export declare class Timer extends AbstractDestroyable {
|
|
11
11
|
private readonly [TimerPropertyKey.HANDLE];
|
|
12
|
-
private [TimerPropertyKey.DESTROYED]?;
|
|
13
12
|
private [TimerPropertyKey.DESTROY_ON_EXPIRATION]?;
|
|
14
13
|
private [TimerPropertyKey.CALLBACK]?;
|
|
15
14
|
private [TimerPropertyKey.ARGS_LENGTH]?;
|
|
16
15
|
private constructor();
|
|
17
16
|
get handle(): jtimer;
|
|
18
17
|
start<Args extends any[]>(timeout: number, periodic: boolean, callback: (...args: Args) => void, ...args: Args): void;
|
|
18
|
+
onDestroy(): Destructor;
|
|
19
19
|
get elapsed(): number;
|
|
20
20
|
get remaining(): number;
|
|
21
21
|
get timeout(): number;
|
|
22
22
|
pause(): void;
|
|
23
23
|
resume(): void;
|
|
24
|
-
destroy(): void;
|
|
25
24
|
static create(): Timer;
|
|
26
25
|
static run<Args extends any[]>(callback: (...args: Args) => void, ...args: Args): void;
|
|
27
26
|
static simple<Args extends any[]>(timeout: number, callback: (...args: Args) => void, ...args: Args): Timer;
|