warscript 0.0.1-dev.e4a5fce → 0.0.1-dev.e5e97e8
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/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +2 -3
- package/core/types/effect.lua +95 -48
- package/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +15 -0
- package/core/types/player.lua +56 -14
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +9 -0
- package/core/types/tileCell.lua +92 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +12 -1
- package/decl/native.d.ts +846 -790
- package/engine/behavior.d.ts +5 -0
- package/engine/behavior.lua +106 -27
- 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.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +22 -9
- package/engine/behaviour/ability/on-command-impact.lua +7 -0
- 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 +12 -3
- package/engine/behaviour/ability.lua +74 -24
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
- package/engine/behaviour/unit/stun-immunity.lua +52 -27
- package/engine/behaviour/unit.d.ts +34 -0
- package/engine/behaviour/unit.lua +190 -4
- package/engine/buff.d.ts +57 -44
- package/engine/buff.lua +278 -226
- package/engine/internal/ability.d.ts +18 -2
- package/engine/internal/ability.lua +116 -11
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- 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/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/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/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- 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/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+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 +45 -14
- package/engine/internal/unit.lua +391 -148
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- 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/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 +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 +93 -36
- 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 +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -93
- 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 +8 -5
- package/engine/object-field/ability.lua +8 -4
- package/engine/object-field/unit.d.ts +57 -3
- package/engine/object-field/unit.lua +207 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +303 -114
- 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/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/unit.d.ts +4 -0
- package/engine/standard/fields/unit.lua +7 -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 +2 -0
- package/engine/unit.lua +2 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- 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/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/attributes.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
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
|
}
|
|
9
13
|
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">;
|
|
16
|
+
getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
|
|
12
17
|
}
|
|
18
|
+
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()
|
|
@@ -13,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
|
|
|
13
20
|
AttributesHolder.name = "AttributesHolder"
|
|
14
21
|
function AttributesHolder.prototype.____constructor(self)
|
|
15
22
|
end
|
|
23
|
+
function AttributesHolder.prototype.getOrPut(self, attribute, defaultValue)
|
|
24
|
+
local value = self[attribute]
|
|
25
|
+
if value ~= nil then
|
|
26
|
+
return value
|
|
27
|
+
end
|
|
28
|
+
value = defaultValue()
|
|
29
|
+
self[attribute] = value
|
|
30
|
+
return value
|
|
31
|
+
end
|
|
16
32
|
return ____exports
|
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
|
@@ -8,6 +8,7 @@ declare const enum EffectPropertyKey {
|
|
|
8
8
|
ROLL = 102
|
|
9
9
|
}
|
|
10
10
|
export type EffectParameters = {
|
|
11
|
+
readonly delay?: number;
|
|
11
12
|
readonly scale?: number;
|
|
12
13
|
readonly color?: PlayerColor;
|
|
13
14
|
readonly pitch?: number;
|
|
@@ -29,12 +30,10 @@ export declare class Effect extends Handle<jeffect> {
|
|
|
29
30
|
set pitch(pitch: number);
|
|
30
31
|
get roll(): number;
|
|
31
32
|
set roll(roll: number);
|
|
32
|
-
static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T),
|
|
33
|
-
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;
|
|
34
34
|
static flash(modelPath: string, ...args: [
|
|
35
35
|
...pointOrWidget: [x: number, y: number] | [widget: Widget, attachmentPoint?: string],
|
|
36
36
|
...parametersOrDuration: [parametersOrDuration?: EffectParameters | number] | [duration?: number, parameters?: EffectParameters]
|
|
37
37
|
]): void;
|
|
38
|
-
static flashTarget(model: string, target: Widget, attachPoint: string, duration?: number): void;
|
|
39
38
|
}
|
|
40
39
|
export {};
|
package/core/types/effect.lua
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
-
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
5
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
6
6
|
local ____exports = {}
|
|
7
|
-
local dummyPlayer
|
|
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,66 +178,44 @@ 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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if parameters ~= nil then
|
|
169
|
-
for key, value in ____pairs(parameters) do
|
|
170
|
-
if key ~= "zOffset" and key ~= "detached" and key ~= "scaleZOffset" then
|
|
171
|
-
setters[key](effect, value)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
if isPositional and parameters.zOffset ~= nil then
|
|
175
|
-
moveLocation(location, x, y)
|
|
176
|
-
local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
|
|
177
|
-
BlzSetSpecialEffectZ(
|
|
178
|
-
effect,
|
|
179
|
-
z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
|
|
180
|
-
)
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
if parametersOrDuration ~= nil and parametersOrDuration > 0 then
|
|
184
|
-
temporaryEffectsCount = temporaryEffectsCount + 1
|
|
185
|
-
temporaryEffects[temporaryEffectsCount] = effect
|
|
186
|
-
temporaryEffectsDurations[temporaryEffectsCount] = parametersOrDuration
|
|
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
|
|
187
203
|
return
|
|
188
204
|
end
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
temporaryEffects[temporaryEffectsCount] = effect
|
|
197
|
-
temporaryEffectsDurations[temporaryEffectsCount] = duration
|
|
198
|
-
else
|
|
199
|
-
destroyEffect(effect)
|
|
200
|
-
end
|
|
201
|
-
end
|
|
205
|
+
flash(
|
|
206
|
+
modelPath,
|
|
207
|
+
xOrWidget,
|
|
208
|
+
yOrOrAttachmentPoint,
|
|
209
|
+
parametersOrDuration,
|
|
210
|
+
parameters
|
|
211
|
+
)
|
|
202
212
|
end
|
|
203
213
|
__TS__SetDescriptor(
|
|
204
214
|
Effect.prototype,
|
|
205
215
|
"color",
|
|
206
216
|
{
|
|
207
217
|
get = function(self)
|
|
208
|
-
return self[100] or PlayerColor.
|
|
218
|
+
return self[100] or PlayerColor.red
|
|
209
219
|
end,
|
|
210
220
|
set = function(self, color)
|
|
211
221
|
setSpecialEffectColor(self.handle, color)
|
|
@@ -255,4 +265,41 @@ __TS__SetDescriptor(
|
|
|
255
265
|
},
|
|
256
266
|
true
|
|
257
267
|
)
|
|
268
|
+
addSpecialEffectInternal = function(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
269
|
+
local coordinatesProvided = type(xOrWidget) == "number"
|
|
270
|
+
local isPositional = coordinatesProvided or (parameters and parameters.detached) == true
|
|
271
|
+
local x = not isPositional and 0 or (coordinatesProvided and xOrWidget or xOrWidget.x)
|
|
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")
|
|
274
|
+
if parameters ~= nil then
|
|
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)
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
if isPositional and parameters.zOffset ~= nil then
|
|
285
|
+
moveLocation(location, x, y)
|
|
286
|
+
local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
|
|
287
|
+
setSpecialEffectZ(
|
|
288
|
+
effect,
|
|
289
|
+
z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
|
|
290
|
+
)
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
return effect
|
|
294
|
+
end
|
|
295
|
+
flash = function(modelPath, xOrWidget, yOrAttachmentPoint, duration, parameters)
|
|
296
|
+
local effect = addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
297
|
+
if duration ~= nil and duration > 0 then
|
|
298
|
+
temporaryEffectsCount = temporaryEffectsCount + 1
|
|
299
|
+
temporaryEffects[temporaryEffectsCount] = effect
|
|
300
|
+
temporaryEffectsDurations[temporaryEffectsCount] = duration
|
|
301
|
+
return
|
|
302
|
+
end
|
|
303
|
+
destroyEffect(effect)
|
|
304
|
+
end
|
|
258
305
|
return ____exports
|
package/core/types/frame.lua
CHANGED
|
@@ -15,13 +15,20 @@ local Event = ____event.Event
|
|
|
15
15
|
local TriggerEvent = ____event.TriggerEvent
|
|
16
16
|
local ____timer = require("core.types.timer")
|
|
17
17
|
local Timer = ____timer.Timer
|
|
18
|
+
local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
|
|
19
|
+
local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
|
|
20
|
+
local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
|
|
21
|
+
local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
|
|
22
|
+
local ____playerCamera = require("core.types.playerCamera")
|
|
23
|
+
local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
|
|
24
|
+
local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
|
|
25
|
+
local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
|
|
26
|
+
local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
|
|
18
27
|
local frameClick = BlzFrameClick
|
|
19
28
|
local frameGetEnable = BlzFrameGetEnable
|
|
20
29
|
local frameIsVisible = BlzFrameIsVisible
|
|
21
30
|
local frameSetEnable = BlzFrameSetEnable
|
|
22
31
|
local frameSetScale = BlzFrameSetScale
|
|
23
|
-
local getCameraTargetPositionX = GetCameraTargetPositionX
|
|
24
|
-
local getCameraTargetPositionY = GetCameraTargetPositionY
|
|
25
32
|
local ____rawget = _G.rawget
|
|
26
33
|
local rawset = _G.rawset
|
|
27
34
|
local invoke = Event.invoke
|
|
@@ -344,27 +351,21 @@ __TS__ObjectDefineProperty(
|
|
|
344
351
|
Frame,
|
|
345
352
|
"minX",
|
|
346
353
|
{get = function(self)
|
|
347
|
-
local
|
|
348
|
-
|
|
349
|
-
local width4by3 = (w - h / 600 * 800) / 2
|
|
350
|
-
local pxtodpi = 0.6 / h
|
|
351
|
-
return -width4by3 * pxtodpi
|
|
354
|
+
local minX = getFrameMinXMaxX()
|
|
355
|
+
return minX
|
|
352
356
|
end}
|
|
353
357
|
)
|
|
354
358
|
__TS__ObjectDefineProperty(
|
|
355
359
|
Frame,
|
|
356
360
|
"maxX",
|
|
357
361
|
{get = function(self)
|
|
358
|
-
local
|
|
359
|
-
|
|
360
|
-
local width4by3 = (w - h / 600 * 800) / 2
|
|
361
|
-
local pxtodpi = 0.6 / h
|
|
362
|
-
return (-width4by3 + w) * pxtodpi
|
|
362
|
+
local ____, maxX = getFrameMinXMaxX()
|
|
363
|
+
return maxX
|
|
363
364
|
end}
|
|
364
365
|
)
|
|
365
366
|
Frame.centerX = 0.4
|
|
366
|
-
Frame.minY =
|
|
367
|
-
Frame.maxY =
|
|
367
|
+
Frame.minY = FRAME_MIN_Y
|
|
368
|
+
Frame.maxY = FRAME_MAX_Y
|
|
368
369
|
Frame.centerY = 0.3
|
|
369
370
|
__TS__SetDescriptor(
|
|
370
371
|
Frame.prototype,
|
|
@@ -938,16 +939,19 @@ __TS__ObjectDefineProperty(
|
|
|
938
939
|
local event = __TS__New(Event)
|
|
939
940
|
local syncX = 0
|
|
940
941
|
local syncY = 0
|
|
941
|
-
local
|
|
942
|
-
local
|
|
942
|
+
local syncFrameX = 0
|
|
943
|
+
local syncFrameY = 0
|
|
943
944
|
local lastX = syncX
|
|
944
945
|
local lastY = syncY
|
|
945
946
|
self.onMouseMove:addListener(function(player, x, y)
|
|
946
947
|
if player.isLocal then
|
|
947
948
|
syncX = x
|
|
948
949
|
syncY = y
|
|
949
|
-
|
|
950
|
-
|
|
950
|
+
syncFrameX, syncFrameY = worldCoordinatesToFrame(
|
|
951
|
+
x,
|
|
952
|
+
y,
|
|
953
|
+
getTerrainZ(x, y)
|
|
954
|
+
)
|
|
951
955
|
lastX = x
|
|
952
956
|
lastY = y
|
|
953
957
|
invoke(event, x, y)
|
|
@@ -957,9 +961,8 @@ __TS__ObjectDefineProperty(
|
|
|
957
961
|
if syncX == 0 and syncY == 0 then
|
|
958
962
|
return
|
|
959
963
|
end
|
|
960
|
-
local x
|
|
961
|
-
|
|
962
|
-
if x ~= lastX or y ~= lastY then
|
|
964
|
+
local x, y, ____, isDefinite = frameCoordinatesToWorld(syncFrameX, syncFrameY)
|
|
965
|
+
if isDefinite and (x ~= lastX or y ~= lastY) then
|
|
963
966
|
lastX = x
|
|
964
967
|
lastY = y
|
|
965
968
|
invoke(event, x, y)
|
package/core/types/player.d.ts
CHANGED
|
@@ -7,6 +7,18 @@ import { UpgradeId } from "../../engine/object-data/entry/upgrade";
|
|
|
7
7
|
interface Unit {
|
|
8
8
|
handle: junit;
|
|
9
9
|
}
|
|
10
|
+
export declare const enum PlayerAllianceType {
|
|
11
|
+
PASSIVE = 0,
|
|
12
|
+
RESCUABLE = 1,
|
|
13
|
+
HELP_REQUEST = 2,
|
|
14
|
+
HELP_RESPONSE = 3,
|
|
15
|
+
SHARED_XP = 4,
|
|
16
|
+
SHARED_SPELLS = 5,
|
|
17
|
+
SHARED_VISION = 6,
|
|
18
|
+
SHARED_VISION_FORCED = 7,
|
|
19
|
+
SHARED_CONTROL = 8,
|
|
20
|
+
SHARED_ADVANCED_CONTROL = 9
|
|
21
|
+
}
|
|
10
22
|
export declare class Player extends Handle<jplayer> {
|
|
11
23
|
static readonly all: Player[];
|
|
12
24
|
static readonly local: Player;
|
|
@@ -42,6 +54,8 @@ export declare class Player extends Handle<jplayer> {
|
|
|
42
54
|
forceUICancel(): void;
|
|
43
55
|
isAllyOf(other: Player): boolean;
|
|
44
56
|
isEnemyOf(other: Player): boolean;
|
|
57
|
+
setAlliance(other: Player, type: PlayerAllianceType, value: boolean): void;
|
|
58
|
+
getAlliance(other: Player, type: PlayerAllianceType): boolean;
|
|
45
59
|
setAbilityAvailable(abilityId: number, available: boolean): void;
|
|
46
60
|
getMaximumUpgradeLevel(upgradeId: UpgradeId): number;
|
|
47
61
|
setMaximumUpgradeLevel(upgradeId: UpgradeId, maximumLevel: number): void;
|
|
@@ -50,6 +64,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
50
64
|
setUpgradeLevel(upgradeId: UpgradeId, level: number): void;
|
|
51
65
|
private static getEvent;
|
|
52
66
|
private static getMouseEvent;
|
|
67
|
+
static get allianceChangedEvent(): Readonly<Record<PlayerAllianceType, Event<[Player]>>>;
|
|
53
68
|
static get onLeave(): Event<[Player]>;
|
|
54
69
|
static get onMouseDown(): Event<[Player, jmousebuttontype]>;
|
|
55
70
|
static get onMouseUp(): Event<[Player, jmousebuttontype]>;
|
package/core/types/player.lua
CHANGED
|
@@ -21,14 +21,34 @@ local ____exception = require("exception")
|
|
|
21
21
|
local IllegalStateException = ____exception.IllegalStateException
|
|
22
22
|
local ____math = require("math")
|
|
23
23
|
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
24
|
+
local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
|
|
25
|
+
local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
|
|
26
|
+
local ____lazy = require("utility.lazy")
|
|
27
|
+
local lazyRecord = ____lazy.lazyRecord
|
|
28
|
+
local getPlayerAlliance = GetPlayerAlliance
|
|
24
29
|
local getPlayerColor = GetPlayerColor
|
|
25
30
|
local getPlayerName = GetPlayerName
|
|
26
31
|
local getPlayerTechCount = GetPlayerTechCount
|
|
27
32
|
local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
|
|
33
|
+
local getTriggerPlayer = GetTriggerPlayer
|
|
34
|
+
local setPlayerAlliance = SetPlayerAlliance
|
|
28
35
|
local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
|
|
29
36
|
local setPlayerTechResearched = SetPlayerTechResearched
|
|
30
37
|
local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
|
|
38
|
+
local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
|
|
31
39
|
local playerNative = _G.Player
|
|
40
|
+
local nativeByPlayerAllianceType = {
|
|
41
|
+
[0] = ALLIANCE_PASSIVE,
|
|
42
|
+
[1] = ALLIANCE_RESCUABLE,
|
|
43
|
+
[2] = ALLIANCE_HELP_REQUEST,
|
|
44
|
+
[3] = ALLIANCE_HELP_RESPONSE,
|
|
45
|
+
[4] = ALLIANCE_SHARED_XP,
|
|
46
|
+
[5] = ALLIANCE_SHARED_SPELLS,
|
|
47
|
+
[6] = ALLIANCE_SHARED_VISION,
|
|
48
|
+
[7] = ALLIANCE_SHARED_VISION_FORCED,
|
|
49
|
+
[8] = ALLIANCE_SHARED_CONTROL,
|
|
50
|
+
[9] = ALLIANCE_SHARED_ADVANCED_CONTROL
|
|
51
|
+
}
|
|
32
52
|
____exports.Player = __TS__Class()
|
|
33
53
|
local Player = ____exports.Player
|
|
34
54
|
Player.name = "Player"
|
|
@@ -83,6 +103,12 @@ end
|
|
|
83
103
|
function Player.prototype.isEnemyOf(self, other)
|
|
84
104
|
return IsPlayerEnemy(self.handle, other.handle)
|
|
85
105
|
end
|
|
106
|
+
function Player.prototype.setAlliance(self, other, ____type, value)
|
|
107
|
+
setPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type], value)
|
|
108
|
+
end
|
|
109
|
+
function Player.prototype.getAlliance(self, other, ____type)
|
|
110
|
+
return getPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type])
|
|
111
|
+
end
|
|
86
112
|
function Player.prototype.setAbilityAvailable(self, abilityId, available)
|
|
87
113
|
setPlayerAbilityAvailable(self.handle, abilityId, available)
|
|
88
114
|
end
|
|
@@ -122,14 +148,11 @@ function Player.getMouseEvent(self, event, collector)
|
|
|
122
148
|
self.events[eventId] = __TS__New(
|
|
123
149
|
TriggerEvent,
|
|
124
150
|
function(trigger)
|
|
125
|
-
Timer:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
for ____, player in ipairs(____exports.Player.all) do
|
|
129
|
-
TriggerRegisterPlayerEvent(trigger, player.handle, event)
|
|
130
|
-
end
|
|
151
|
+
Timer:run(function()
|
|
152
|
+
for ____, player in ipairs(____exports.Player.all) do
|
|
153
|
+
TriggerRegisterPlayerEvent(trigger, player.handle, event)
|
|
131
154
|
end
|
|
132
|
-
)
|
|
155
|
+
end)
|
|
133
156
|
end,
|
|
134
157
|
collector or (function() return {} end)
|
|
135
158
|
)
|
|
@@ -178,7 +201,7 @@ function Player.getKeyEvent(self, isDown)
|
|
|
178
201
|
TriggerAddCondition(
|
|
179
202
|
trigger,
|
|
180
203
|
Condition(function()
|
|
181
|
-
local player = ____exports.Player:of(
|
|
204
|
+
local player = ____exports.Player:of(getTriggerPlayer())
|
|
182
205
|
local key = BlzGetTriggerPlayerKey()
|
|
183
206
|
local metaKey = BlzGetTriggerPlayerMetaKey()
|
|
184
207
|
Event.invoke(event, player, key, metaKey)
|
|
@@ -249,7 +272,7 @@ Player.all = (function()
|
|
|
249
272
|
end
|
|
250
273
|
return all
|
|
251
274
|
end)()
|
|
252
|
-
Player["local"] = ____exports.Player:of(
|
|
275
|
+
Player["local"] = ____exports.Player:of(PLAYER_LOCAL_HANDLE)
|
|
253
276
|
Player.neutralPassive = ____exports.Player.all[PLAYER_NEUTRAL_PASSIVE + 1]
|
|
254
277
|
Player.neutralAggressive = ____exports.Player.all[PLAYER_NEUTRAL_AGGRESSIVE + 1]
|
|
255
278
|
Player.neutralVictim = ____exports.Player.all[bj_PLAYER_NEUTRAL_VICTIM + 1]
|
|
@@ -367,13 +390,32 @@ __TS__SetDescriptor(
|
|
|
367
390
|
end},
|
|
368
391
|
true
|
|
369
392
|
)
|
|
393
|
+
__TS__ObjectDefineProperty(
|
|
394
|
+
Player,
|
|
395
|
+
"allianceChangedEvent",
|
|
396
|
+
{get = function(self)
|
|
397
|
+
local event = lazyRecord(function(____type)
|
|
398
|
+
return __TS__New(
|
|
399
|
+
TriggerEvent,
|
|
400
|
+
function(trigger)
|
|
401
|
+
for ____, player in ipairs(____exports.Player.all) do
|
|
402
|
+
triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
|
|
403
|
+
end
|
|
404
|
+
end,
|
|
405
|
+
function() return ____exports.Player:of(getTriggerPlayer()) end
|
|
406
|
+
)
|
|
407
|
+
end)
|
|
408
|
+
rawset(self, "allianceChangedEvent", event)
|
|
409
|
+
return event
|
|
410
|
+
end}
|
|
411
|
+
)
|
|
370
412
|
__TS__ObjectDefineProperty(
|
|
371
413
|
Player,
|
|
372
414
|
"onLeave",
|
|
373
415
|
{get = function(self)
|
|
374
416
|
return ____exports.Player:getEvent(
|
|
375
417
|
EVENT_PLAYER_LEAVE,
|
|
376
|
-
function() return ____exports.Player:of(
|
|
418
|
+
function() return ____exports.Player:of(getTriggerPlayer()) end
|
|
377
419
|
)
|
|
378
420
|
end}
|
|
379
421
|
)
|
|
@@ -383,7 +425,7 @@ __TS__ObjectDefineProperty(
|
|
|
383
425
|
{get = function(self)
|
|
384
426
|
return ____exports.Player:getMouseEvent(
|
|
385
427
|
EVENT_PLAYER_MOUSE_DOWN,
|
|
386
|
-
function() return ____exports.Player:of(
|
|
428
|
+
function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
|
|
387
429
|
)
|
|
388
430
|
end}
|
|
389
431
|
)
|
|
@@ -393,7 +435,7 @@ __TS__ObjectDefineProperty(
|
|
|
393
435
|
{get = function(self)
|
|
394
436
|
return ____exports.Player:getMouseEvent(
|
|
395
437
|
EVENT_PLAYER_MOUSE_UP,
|
|
396
|
-
function() return ____exports.Player:of(
|
|
438
|
+
function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
|
|
397
439
|
)
|
|
398
440
|
end}
|
|
399
441
|
)
|
|
@@ -403,7 +445,7 @@ __TS__ObjectDefineProperty(
|
|
|
403
445
|
{get = function(self)
|
|
404
446
|
return ____exports.Player:getMouseEvent(
|
|
405
447
|
EVENT_PLAYER_MOUSE_MOVE,
|
|
406
|
-
function() return ____exports.Player:of(
|
|
448
|
+
function() return ____exports.Player:of(getTriggerPlayer()), vec2(
|
|
407
449
|
BlzGetTriggerPlayerMouseX(),
|
|
408
450
|
BlzGetTriggerPlayerMouseY()
|
|
409
451
|
) end
|
|
@@ -439,7 +481,7 @@ __TS__ObjectDefineProperty(
|
|
|
439
481
|
TriggerRegisterPlayerChatEvent(trigger, player.handle, "", false)
|
|
440
482
|
end
|
|
441
483
|
end,
|
|
442
|
-
function() return ____exports.Player:of(
|
|
484
|
+
function() return ____exports.Player:of(getTriggerPlayer()), GetEventPlayerChatString() end
|
|
443
485
|
)
|
|
444
486
|
rawset(self, "onChat", event)
|
|
445
487
|
return event
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
import type { Unit } from "../../engine/internal/unit";
|
|
2
3
|
export declare class PlayerCamera {
|
|
3
4
|
private readonly player;
|
|
4
5
|
private readonly isLocal;
|
|
@@ -28,5 +29,6 @@ export declare class PlayerCamera {
|
|
|
28
29
|
get roll(): number;
|
|
29
30
|
set roll(v: number);
|
|
30
31
|
reset(): void;
|
|
32
|
+
static isUnitInView(unit: Unit): boolean;
|
|
31
33
|
static of(player: jplayer): PlayerCamera;
|
|
32
34
|
}
|