warscript 0.0.1-dev.987b772 → 0.0.1-dev.9b0216a
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/core/types/effect.d.ts +13 -3
- package/core/types/effect.lua +116 -17
- package/core/types/frame.d.ts +3 -0
- package/core/types/frame.lua +59 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +6 -0
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +29 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability.d.ts +9 -2
- package/engine/behaviour/ability.lua +47 -33
- package/engine/buff.d.ts +6 -1
- package/engine/buff.lua +29 -18
- package/engine/internal/ability.d.ts +15 -2
- package/engine/internal/ability.lua +83 -4
- package/engine/internal/item/ability.lua +81 -0
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- package/engine/internal/unit/item.d.ts +1 -0
- package/engine/internal/unit/item.lua +5 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit.d.ts +19 -6
- package/engine/internal/unit.lua +107 -64
- package/engine/internal/utility.lua +12 -0
- package/engine/local-client.lua +9 -8
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/entry/ability-type.lua +8 -12
- package/engine/object-data/entry/item-type.d.ts +2 -0
- package/engine/object-data/entry/item-type.lua +13 -0
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +4 -1
- package/engine/standard/fields/ability.d.ts +2 -0
- package/engine/standard/fields/ability.lua +2 -0
- package/engine/unit.d.ts +1 -0
- package/engine/unit.lua +1 -0
- package/package.json +1 -1
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +34 -3
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
|
@@ -4,6 +4,7 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
|
4
4
|
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
6
6
|
local ____exports = {}
|
|
7
|
+
local createUnitEventListener
|
|
7
8
|
local ____behavior = require("engine.behavior")
|
|
8
9
|
local Behavior = ____behavior.Behavior
|
|
9
10
|
local ____unit = require("engine.unit")
|
|
@@ -14,6 +15,8 @@ local ____effect = require("core.types.effect")
|
|
|
14
15
|
local Effect = ____effect.Effect
|
|
15
16
|
local ____ability = require("engine.standard.fields.ability")
|
|
16
17
|
local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
18
|
+
local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
|
|
19
|
+
local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
17
20
|
local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
18
21
|
local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
|
|
19
22
|
local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
@@ -24,21 +27,27 @@ local ____ability = require("engine.object-field.ability")
|
|
|
24
27
|
local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
|
|
25
28
|
local ____timer = require("core.types.timer")
|
|
26
29
|
local Timer = ____timer.Timer
|
|
27
|
-
local ____missile = require("core.types.missile")
|
|
28
|
-
local Missile = ____missile.Missile
|
|
29
30
|
local createBehaviorFunctionsByAbilityTypeId = {}
|
|
30
|
-
local
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
|
|
32
|
+
local function createZeroTimerUnitEventListener(key)
|
|
33
|
+
local unitEventListener = createUnitEventListener(key)
|
|
34
|
+
return function(unit, ability, ...)
|
|
35
|
+
Timer:run(unitEventListener, unit, ability, ...)
|
|
33
36
|
end
|
|
34
37
|
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
createUnitEventListener = function(key)
|
|
39
|
+
return function(unit, ability, ...)
|
|
40
|
+
____exports.AbilityBehavior:forAll(ability, key, unit, ...)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
local registeredCommandEventIds = {}
|
|
44
|
+
local ____class_2 = __TS__Class()
|
|
45
|
+
____class_2.name = ""
|
|
46
|
+
function ____class_2.prototype.____constructor(self, abilityBehavior)
|
|
38
47
|
self.abilityBehavior = abilityBehavior
|
|
39
48
|
end
|
|
40
49
|
__TS__SetDescriptor(
|
|
41
|
-
|
|
50
|
+
____class_2.prototype,
|
|
42
51
|
"art",
|
|
43
52
|
{get = function(self)
|
|
44
53
|
return MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.abilityBehavior.ability, 0)
|
|
@@ -46,7 +55,7 @@ __TS__SetDescriptor(
|
|
|
46
55
|
true
|
|
47
56
|
)
|
|
48
57
|
__TS__SetDescriptor(
|
|
49
|
-
|
|
58
|
+
____class_2.prototype,
|
|
50
59
|
"arc",
|
|
51
60
|
{get = function(self)
|
|
52
61
|
return MISSILE_ARC_ABILITY_FLOAT_FIELD:getValue(self.abilityBehavior.ability)
|
|
@@ -54,7 +63,7 @@ __TS__SetDescriptor(
|
|
|
54
63
|
true
|
|
55
64
|
)
|
|
56
65
|
__TS__SetDescriptor(
|
|
57
|
-
|
|
66
|
+
____class_2.prototype,
|
|
58
67
|
"speed",
|
|
59
68
|
{get = function(self)
|
|
60
69
|
return MISSILE_SPEED_ABILITY_INTEGER_FIELD:getValue(self.abilityBehavior.ability)
|
|
@@ -65,12 +74,34 @@ ____exports.AbilityBehavior = __TS__Class()
|
|
|
65
74
|
local AbilityBehavior = ____exports.AbilityBehavior
|
|
66
75
|
AbilityBehavior.name = "AbilityBehavior"
|
|
67
76
|
__TS__ClassExtends(AbilityBehavior, Behavior)
|
|
68
|
-
function AbilityBehavior.prototype.____constructor(self, ability)
|
|
77
|
+
function AbilityBehavior.prototype.____constructor(self, ability, parameters)
|
|
69
78
|
Behavior.prototype.____constructor(self, ability)
|
|
79
|
+
if parameters and parameters.isExclusiveOnImpactHandler then
|
|
80
|
+
exclusiveOnImpactHandlerAbilityBehaviorByAbility[ability] = self
|
|
81
|
+
end
|
|
82
|
+
self:onCreate()
|
|
83
|
+
end
|
|
84
|
+
function AbilityBehavior.prototype.registerCommandEvent(self, orderTypeStringId)
|
|
85
|
+
if orderTypeStringId == nil then
|
|
86
|
+
orderTypeStringId = self.ability.orderTypeStringId
|
|
87
|
+
end
|
|
88
|
+
local commandEventId = (tostring(self.ability.typeId) .. "#") .. orderTypeStringId
|
|
89
|
+
if not (registeredCommandEventIds[commandEventId] ~= nil) then
|
|
90
|
+
registeredCommandEventIds[commandEventId] = true
|
|
91
|
+
Unit.abilityCommandEvent[self.ability.typeId][orderTypeStringId]:addListener(createUnitEventListener("onCommand"))
|
|
92
|
+
end
|
|
70
93
|
end
|
|
71
94
|
function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
|
|
72
95
|
return resolveCurrentAbilityDependentValue(self.ability, value)
|
|
73
96
|
end
|
|
97
|
+
function AbilityBehavior.prototype.flashCasterEffect(self, widget)
|
|
98
|
+
local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
99
|
+
Effect:flash(
|
|
100
|
+
CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
101
|
+
widget,
|
|
102
|
+
attachmentPoint ~= "" and attachmentPoint or "origin"
|
|
103
|
+
)
|
|
104
|
+
end
|
|
74
105
|
function AbilityBehavior.prototype.flashAreaEffect(self, x, y, ...)
|
|
75
106
|
Effect:flash(
|
|
76
107
|
AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD:getValue(self.ability, 0),
|
|
@@ -104,15 +135,7 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrDurati
|
|
|
104
135
|
)
|
|
105
136
|
end
|
|
106
137
|
end
|
|
107
|
-
function AbilityBehavior.prototype.
|
|
108
|
-
Missile:launch(
|
|
109
|
-
self.missileLaunchConfig,
|
|
110
|
-
source,
|
|
111
|
-
target,
|
|
112
|
-
invokeOnMissileArrival,
|
|
113
|
-
self,
|
|
114
|
-
...
|
|
115
|
-
)
|
|
138
|
+
function AbilityBehavior.prototype.onCreate(self)
|
|
116
139
|
end
|
|
117
140
|
function AbilityBehavior.prototype.onMissileArrival(self, ...)
|
|
118
141
|
end
|
|
@@ -120,6 +143,8 @@ function AbilityBehavior.prototype.onUnitGainAbility(self, _unit)
|
|
|
120
143
|
end
|
|
121
144
|
function AbilityBehavior.prototype.onUnitLoseAbility(self, _unit)
|
|
122
145
|
end
|
|
146
|
+
function AbilityBehavior.prototype.onCommand(self, caster, orderTypeStringId)
|
|
147
|
+
end
|
|
123
148
|
function AbilityBehavior.prototype.onCastingStart(self, caster)
|
|
124
149
|
end
|
|
125
150
|
function AbilityBehavior.prototype.onCastingFinish(self, caster)
|
|
@@ -179,7 +204,7 @@ __TS__SetDescriptor(
|
|
|
179
204
|
end},
|
|
180
205
|
true
|
|
181
206
|
)
|
|
182
|
-
AbilityBehavior.MissileLaunchConfig =
|
|
207
|
+
AbilityBehavior.MissileLaunchConfig = ____class_2
|
|
183
208
|
__TS__SetDescriptor(
|
|
184
209
|
AbilityBehavior.prototype,
|
|
185
210
|
"missileLaunchConfig",
|
|
@@ -191,17 +216,6 @@ __TS__SetDescriptor(
|
|
|
191
216
|
true
|
|
192
217
|
);
|
|
193
218
|
(function(self)
|
|
194
|
-
local function createUnitEventListener(key)
|
|
195
|
-
return function(unit, ability, ...)
|
|
196
|
-
____exports.AbilityBehavior:forAll(ability, key, unit, ...)
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
local function createZeroTimerUnitEventListener(key)
|
|
200
|
-
local unitEventListener = createUnitEventListener(key)
|
|
201
|
-
return function(unit, ability, ...)
|
|
202
|
-
Timer:run(unitEventListener, unit, ability, ...)
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
219
|
Unit.abilityGainedEvent:addListener(createUnitEventListener("onUnitGainAbility"))
|
|
206
220
|
Unit.abilityLostEvent:addListener(createUnitEventListener("onUnitLoseAbility"))
|
|
207
221
|
Unit.abilityCastingStartEvent:addListener(createUnitEventListener("onCastingStart"))
|
package/engine/buff.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { BuffResistanceType } from "./object-data/auxiliary/buff-resistance-type
|
|
|
8
8
|
import { AbilityBooleanField, AbilityBooleanLevelField, AbilityCombatClassificationsLevelField, AbilityDependentValue, AbilityEnumLevelField, AbilityIntegerField, AbilityIntegerLevelField, AbilityNumberField, AbilityNumberLevelField } from "./object-field/ability";
|
|
9
9
|
import { CombatClassifications } from "./object-data/auxiliary/combat-classification";
|
|
10
10
|
import { IsExactlyAny, Prohibit, ReadonlyNonEmptyArray } from "../utility/types";
|
|
11
|
+
import { EffectParameters } from "../core/types/effect";
|
|
11
12
|
import { UnitBehavior } from "./behaviour/unit";
|
|
12
13
|
import type { Widget } from "../core/types/widget";
|
|
13
14
|
import { Destructor } from "../destroyable";
|
|
@@ -250,8 +251,12 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
250
251
|
get duration(): number;
|
|
251
252
|
get remainingDuration(): number;
|
|
252
253
|
set remainingDuration(remainingDuration: number);
|
|
253
|
-
flashEffect(...parameters: [
|
|
254
|
+
flashEffect(...parameters: [
|
|
255
|
+
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
256
|
+
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
257
|
+
]): void;
|
|
254
258
|
flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
|
|
259
|
+
protected onCreate(): void;
|
|
255
260
|
protected onDestroy(): Destructor;
|
|
256
261
|
static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
|
|
257
262
|
static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
|
package/engine/buff.lua
CHANGED
|
@@ -46,6 +46,10 @@ local ____arrays = require("utility.arrays")
|
|
|
46
46
|
local forEach = ____arrays.forEach
|
|
47
47
|
local ____ability_2Dduration = require("engine.internal.mechanics.ability-duration")
|
|
48
48
|
local getAbilityDuration = ____ability_2Dduration.getAbilityDuration
|
|
49
|
+
local ____item = require("engine.internal.item")
|
|
50
|
+
local Item = ____item.Item
|
|
51
|
+
local ____destructable = require("core.types.destructable")
|
|
52
|
+
local Destructable = ____destructable.Destructable
|
|
49
53
|
local getUnitAbility = BlzGetUnitAbility
|
|
50
54
|
local stringValueByBuffTypeIdByFieldId = postcompile(function()
|
|
51
55
|
local stringValueByBuffTypeIdByFieldId = {}
|
|
@@ -482,6 +486,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
482
486
|
timer:start(duration, false, expireBuff, self)
|
|
483
487
|
self._timer = timer
|
|
484
488
|
end
|
|
489
|
+
self:onCreate()
|
|
485
490
|
end
|
|
486
491
|
function Buff.prototype.getUnitBonus(self, bonusType)
|
|
487
492
|
local ____opt_36 = self._bonusIdByBonusType
|
|
@@ -496,26 +501,30 @@ function Buff.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
|
496
501
|
end
|
|
497
502
|
bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self._unit, bonusType, bonusIdByBonusType[bonusType], value)
|
|
498
503
|
end
|
|
499
|
-
function Buff.prototype.flashEffect(self,
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
local ____Effect_flash_41 = Effect.flash
|
|
503
|
-
local ____array_39 = __TS__SparseArrayNew(
|
|
504
|
-
self[104],
|
|
505
|
-
isWidgetProvided and widgetOrDuration or self._unit,
|
|
506
|
-
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
507
|
-
)
|
|
508
|
-
local ____isWidgetProvided_38
|
|
509
|
-
if isWidgetProvided then
|
|
510
|
-
____isWidgetProvided_38 = duration
|
|
504
|
+
function Buff.prototype.flashEffect(self, widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
505
|
+
if type(widgetOrXOrParametersOrDuration) == "number" and type(yOrParametersOrDuration) == "number" then
|
|
506
|
+
Effect:flash(self[104], widgetOrXOrParametersOrDuration, yOrParametersOrDuration, parametersOrDuration)
|
|
511
507
|
else
|
|
512
|
-
|
|
508
|
+
local isWidgetProvided = __TS__InstanceOf(widgetOrXOrParametersOrDuration, Unit) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Item) or __TS__InstanceOf(widgetOrXOrParametersOrDuration, Destructable)
|
|
509
|
+
local ____Effect_40 = Effect
|
|
510
|
+
local ____Effect_flash_41 = Effect.flash
|
|
511
|
+
local ____array_39 = __TS__SparseArrayNew(
|
|
512
|
+
self[104],
|
|
513
|
+
isWidgetProvided and widgetOrXOrParametersOrDuration or self._unit,
|
|
514
|
+
stringValueByBuffTypeIdByFieldId[fourCC("feft")][self.typeId] or "origin"
|
|
515
|
+
)
|
|
516
|
+
local ____isWidgetProvided_38
|
|
517
|
+
if isWidgetProvided then
|
|
518
|
+
____isWidgetProvided_38 = yOrParametersOrDuration
|
|
519
|
+
else
|
|
520
|
+
____isWidgetProvided_38 = widgetOrXOrParametersOrDuration
|
|
521
|
+
end
|
|
522
|
+
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
523
|
+
____Effect_flash_41(
|
|
524
|
+
____Effect_40,
|
|
525
|
+
__TS__SparseArraySpread(____array_39)
|
|
526
|
+
)
|
|
513
527
|
end
|
|
514
|
-
__TS__SparseArrayPush(____array_39, ____isWidgetProvided_38)
|
|
515
|
-
____Effect_flash_41(
|
|
516
|
-
____Effect_40,
|
|
517
|
-
__TS__SparseArraySpread(____array_39)
|
|
518
|
-
)
|
|
519
528
|
end
|
|
520
529
|
function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
521
530
|
local isWidgetProvided = type(widgetOrDuration) == "table"
|
|
@@ -538,6 +547,8 @@ function Buff.prototype.flashSpecialEffect(self, widgetOrDuration, duration)
|
|
|
538
547
|
__TS__SparseArraySpread(____array_43)
|
|
539
548
|
)
|
|
540
549
|
end
|
|
550
|
+
function Buff.prototype.onCreate(self)
|
|
551
|
+
end
|
|
541
552
|
function Buff.prototype.onDestroy(self)
|
|
542
553
|
local unit = self._unit
|
|
543
554
|
if getUnitAbility(unit.handle, self.typeId) == self.handle then
|
|
@@ -12,7 +12,8 @@ export declare abstract class Ability extends Handle<jability> {
|
|
|
12
12
|
protected constructor(handle: jability, typeId: number);
|
|
13
13
|
toString(): string;
|
|
14
14
|
get parentTypeId(): number;
|
|
15
|
-
get
|
|
15
|
+
get orderTypeStringId(): string;
|
|
16
|
+
get orderTypeId(): number;
|
|
16
17
|
abstract readonly owner: Unit | Item;
|
|
17
18
|
getSnapshot(): AbilitySnapshot;
|
|
18
19
|
hasField(field: jabilityfield | number): boolean;
|
|
@@ -34,6 +35,9 @@ export declare abstract class Ability extends Handle<jability> {
|
|
|
34
35
|
setField(field: jabilitystringlevelfield, level: number, value: string): boolean;
|
|
35
36
|
get levelCount(): number;
|
|
36
37
|
abstract get level(): number;
|
|
38
|
+
abstract get cooldownRemaining(): number;
|
|
39
|
+
abstract set cooldownRemaining(cooldownRemaining: number);
|
|
40
|
+
abstract interruptCast(): void;
|
|
37
41
|
static get onCreate(): Event<[Ability]>;
|
|
38
42
|
static get destroyEvent(): Event<[Ability]>;
|
|
39
43
|
}
|
|
@@ -44,15 +48,21 @@ export declare class UnrecognizedAbility extends Ability {
|
|
|
44
48
|
readonly owner: Unit;
|
|
45
49
|
constructor(typeId: number, owner: Unit);
|
|
46
50
|
get level(): number;
|
|
51
|
+
get cooldownRemaining(): number;
|
|
52
|
+
set cooldownRemaining(_: number);
|
|
53
|
+
interruptCast(): void;
|
|
47
54
|
}
|
|
48
55
|
export declare class UnitAbility extends Ability {
|
|
49
56
|
readonly owner: Unit;
|
|
50
57
|
private readonly u;
|
|
51
58
|
constructor(handle: jability, typeId: number, owner: Unit);
|
|
59
|
+
incrementHideCounter(): void;
|
|
60
|
+
decrementHideCounter(): void;
|
|
52
61
|
get level(): number;
|
|
53
62
|
set level(v: number);
|
|
54
63
|
get cooldownRemaining(): number;
|
|
55
|
-
set cooldownRemaining(
|
|
64
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
65
|
+
interruptCast(): void;
|
|
56
66
|
static get onCreate(): Event<[UnitAbility]>;
|
|
57
67
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
58
68
|
}
|
|
@@ -76,6 +86,9 @@ export declare class ItemAbility extends Ability {
|
|
|
76
86
|
setField(field: jabilitybooleanlevelfield, level: number, value: boolean): boolean;
|
|
77
87
|
setField(field: jabilitystringlevelfield, level: number, value: string): boolean;
|
|
78
88
|
get level(): number;
|
|
89
|
+
get cooldownRemaining(): number;
|
|
90
|
+
set cooldownRemaining(cooldownRemaining: number);
|
|
91
|
+
interruptCast(): void;
|
|
79
92
|
static get onCreate(): Event<[ItemAbility]>;
|
|
80
93
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
81
94
|
}
|
|
@@ -10,7 +10,10 @@ local ____exports = {}
|
|
|
10
10
|
local ____handle = require("core.types.handle")
|
|
11
11
|
local Handle = ____handle.Handle
|
|
12
12
|
local ____ability = require("engine.internal.item.ability")
|
|
13
|
+
local abilityActionDummy = ____ability.abilityActionDummy
|
|
13
14
|
local doAbilityAction = ____ability.doAbilityAction
|
|
15
|
+
local doAbilityActionForceDummy = ____ability.doAbilityActionForceDummy
|
|
16
|
+
local startItemCooldown = ____ability.startItemCooldown
|
|
14
17
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
15
18
|
local setUnitAbilityLevel = SetUnitAbilityLevel
|
|
16
19
|
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
@@ -32,6 +35,7 @@ local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
|
32
35
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
33
36
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
34
37
|
local getHandleId = GetHandleId
|
|
38
|
+
local unitHideAbility = BlzUnitHideAbility
|
|
35
39
|
local match = string.match
|
|
36
40
|
local ____type = _G.type
|
|
37
41
|
local ____tostring = _G.tostring
|
|
@@ -295,10 +299,18 @@ __TS__SetDescriptor(
|
|
|
295
299
|
)
|
|
296
300
|
__TS__SetDescriptor(
|
|
297
301
|
Ability.prototype,
|
|
298
|
-
"
|
|
302
|
+
"orderTypeStringId",
|
|
299
303
|
{get = function(self)
|
|
300
304
|
local field = orderIdFieldByParentTypeId[self.parentTypeId]
|
|
301
|
-
return
|
|
305
|
+
return field ~= nil and getAbilityStringLevelField(self.handle, field, self.level) or (orders[self.parentTypeId] or "")
|
|
306
|
+
end},
|
|
307
|
+
true
|
|
308
|
+
)
|
|
309
|
+
__TS__SetDescriptor(
|
|
310
|
+
Ability.prototype,
|
|
311
|
+
"orderTypeId",
|
|
312
|
+
{get = function(self)
|
|
313
|
+
return order2orderId(self.orderTypeStringId)
|
|
302
314
|
end},
|
|
303
315
|
true
|
|
304
316
|
)
|
|
@@ -317,6 +329,17 @@ __TS__SetDescriptor(
|
|
|
317
329
|
end},
|
|
318
330
|
true
|
|
319
331
|
)
|
|
332
|
+
__TS__SetDescriptor(
|
|
333
|
+
Ability.prototype,
|
|
334
|
+
"cooldownRemaining",
|
|
335
|
+
{
|
|
336
|
+
get = function(self)
|
|
337
|
+
end,
|
|
338
|
+
set = function(self, cooldownRemaining)
|
|
339
|
+
end
|
|
340
|
+
},
|
|
341
|
+
true
|
|
342
|
+
)
|
|
320
343
|
__TS__ObjectDefineProperty(
|
|
321
344
|
Ability,
|
|
322
345
|
"onCreate",
|
|
@@ -340,6 +363,8 @@ function UnrecognizedAbility.prototype.____constructor(self, typeId, owner)
|
|
|
340
363
|
UnrecognizedAbility.____super.prototype.____constructor(self, nil, typeId)
|
|
341
364
|
self.owner = owner
|
|
342
365
|
end
|
|
366
|
+
function UnrecognizedAbility.prototype.interruptCast(self)
|
|
367
|
+
end
|
|
343
368
|
__TS__SetDescriptor(
|
|
344
369
|
UnrecognizedAbility.prototype,
|
|
345
370
|
"level",
|
|
@@ -348,6 +373,18 @@ __TS__SetDescriptor(
|
|
|
348
373
|
end},
|
|
349
374
|
true
|
|
350
375
|
)
|
|
376
|
+
__TS__SetDescriptor(
|
|
377
|
+
UnrecognizedAbility.prototype,
|
|
378
|
+
"cooldownRemaining",
|
|
379
|
+
{
|
|
380
|
+
get = function(self)
|
|
381
|
+
return 0
|
|
382
|
+
end,
|
|
383
|
+
set = function(self, _)
|
|
384
|
+
end
|
|
385
|
+
},
|
|
386
|
+
true
|
|
387
|
+
)
|
|
351
388
|
____exports.UnitAbility = __TS__Class()
|
|
352
389
|
local UnitAbility = ____exports.UnitAbility
|
|
353
390
|
UnitAbility.name = "UnitAbility"
|
|
@@ -357,6 +394,15 @@ function UnitAbility.prototype.____constructor(self, handle, typeId, owner)
|
|
|
357
394
|
self.owner = owner
|
|
358
395
|
self.u = owner.handle
|
|
359
396
|
end
|
|
397
|
+
function UnitAbility.prototype.incrementHideCounter(self)
|
|
398
|
+
unitHideAbility(self.u, self.typeId, true)
|
|
399
|
+
end
|
|
400
|
+
function UnitAbility.prototype.decrementHideCounter(self)
|
|
401
|
+
unitHideAbility(self.u, self.typeId, false)
|
|
402
|
+
end
|
|
403
|
+
function UnitAbility.prototype.interruptCast(self)
|
|
404
|
+
self.owner:interruptCast(self.typeId)
|
|
405
|
+
end
|
|
360
406
|
__TS__SetDescriptor(
|
|
361
407
|
UnitAbility.prototype,
|
|
362
408
|
"level",
|
|
@@ -377,8 +423,8 @@ __TS__SetDescriptor(
|
|
|
377
423
|
get = function(self)
|
|
378
424
|
return getUnitAbilityCooldownRemaining(self.u, self.typeId)
|
|
379
425
|
end,
|
|
380
|
-
set = function(self,
|
|
381
|
-
startUnitAbilityCooldown(self.u, self.typeId,
|
|
426
|
+
set = function(self, cooldownRemaining)
|
|
427
|
+
startUnitAbilityCooldown(self.u, self.typeId, cooldownRemaining)
|
|
382
428
|
end
|
|
383
429
|
},
|
|
384
430
|
true
|
|
@@ -403,6 +449,11 @@ end
|
|
|
403
449
|
local function setAbilityField(_, ability, field, levelOrValue, value)
|
|
404
450
|
return ____exports.Ability.prototype.setField(ability, field, levelOrValue, value)
|
|
405
451
|
end
|
|
452
|
+
local function getAbilityCooldown(_, abilityTypeId)
|
|
453
|
+
return getUnitAbilityCooldownRemaining(abilityActionDummy, abilityTypeId)
|
|
454
|
+
end
|
|
455
|
+
local function doNothing()
|
|
456
|
+
end
|
|
406
457
|
____exports.ItemAbility = __TS__Class()
|
|
407
458
|
local ItemAbility = ____exports.ItemAbility
|
|
408
459
|
ItemAbility.name = "ItemAbility"
|
|
@@ -430,6 +481,13 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
430
481
|
value
|
|
431
482
|
)
|
|
432
483
|
end
|
|
484
|
+
function ItemAbility.prototype.interruptCast(self)
|
|
485
|
+
local item = self.owner
|
|
486
|
+
local ____doAbilityActionForceDummy_4 = doAbilityActionForceDummy
|
|
487
|
+
local ____item_handle_3 = item.handle
|
|
488
|
+
local ____opt_1 = item.owner
|
|
489
|
+
____doAbilityActionForceDummy_4(____item_handle_3, ____opt_1 and ____opt_1.handle, doNothing)
|
|
490
|
+
end
|
|
433
491
|
__TS__SetDescriptor(
|
|
434
492
|
ItemAbility.prototype,
|
|
435
493
|
"level",
|
|
@@ -438,6 +496,27 @@ __TS__SetDescriptor(
|
|
|
438
496
|
end},
|
|
439
497
|
true
|
|
440
498
|
)
|
|
499
|
+
__TS__SetDescriptor(
|
|
500
|
+
ItemAbility.prototype,
|
|
501
|
+
"cooldownRemaining",
|
|
502
|
+
{
|
|
503
|
+
get = function(self)
|
|
504
|
+
local item = self.owner
|
|
505
|
+
local ____doAbilityActionForceDummy_8 = doAbilityActionForceDummy
|
|
506
|
+
local ____item_handle_7 = item.handle
|
|
507
|
+
local ____opt_5 = item.owner
|
|
508
|
+
return ____doAbilityActionForceDummy_8(____item_handle_7, ____opt_5 and ____opt_5.handle, getAbilityCooldown, self.typeId)
|
|
509
|
+
end,
|
|
510
|
+
set = function(self, cooldownRemaining)
|
|
511
|
+
local item = self.owner
|
|
512
|
+
local ____startItemCooldown_12 = startItemCooldown
|
|
513
|
+
local ____item_handle_11 = item.handle
|
|
514
|
+
local ____opt_9 = item.owner
|
|
515
|
+
____startItemCooldown_12(____item_handle_11, ____opt_9 and ____opt_9.handle, cooldownRemaining)
|
|
516
|
+
end
|
|
517
|
+
},
|
|
518
|
+
true
|
|
519
|
+
)
|
|
441
520
|
__TS__ObjectDefineProperty(
|
|
442
521
|
ItemAbility,
|
|
443
522
|
"onCreate",
|
|
@@ -3,14 +3,51 @@ local ____player = require("core.types.player")
|
|
|
3
3
|
local Player = ____player.Player
|
|
4
4
|
local ____dummy = require("objutil.dummy")
|
|
5
5
|
local dummyUnitId = ____dummy.dummyUnitId
|
|
6
|
+
local ____utility = require("engine.internal.utility")
|
|
7
|
+
local findUnitItemSlot = ____utility.findUnitItemSlot
|
|
8
|
+
local ____blank = require("engine.object-data.entry.item-type.blank")
|
|
9
|
+
local BlankItemType = ____blank.BlankItemType
|
|
10
|
+
local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
|
|
11
|
+
local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
|
|
12
|
+
local ____math = require("math")
|
|
13
|
+
local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
6
14
|
local isItemOwned = IsItemOwned
|
|
7
15
|
local isItemPowerup = IsItemPowerup
|
|
8
16
|
local getItemX = GetItemX
|
|
9
17
|
local getItemY = GetItemY
|
|
18
|
+
local setAbilityRealLevelField = BlzSetAbilityRealLevelField
|
|
19
|
+
local setItemIntegerField = BlzSetItemIntegerField
|
|
20
|
+
local getItemIntegerField = BlzGetItemIntegerField
|
|
10
21
|
local setItemBooleanField = BlzSetItemBooleanField
|
|
11
22
|
local setItemPosition = SetItemPosition
|
|
12
23
|
local unitAddItem = UnitAddItem
|
|
24
|
+
local unitDropItemSlot = UnitDropItemSlot
|
|
13
25
|
local unitRemoveItem = UnitRemoveItem
|
|
26
|
+
local unitUseItem = UnitUseItem
|
|
27
|
+
local unitResetCooldown = UnitResetCooldown
|
|
28
|
+
local COOLDOWN_STARTER_ABILITY_TYPE_ID = compiletime(function()
|
|
29
|
+
if not currentMap then
|
|
30
|
+
return 0
|
|
31
|
+
end
|
|
32
|
+
local abilityType = currentMap.objects.ability:newObject(
|
|
33
|
+
util.id2s(abilityTypeIdGenerator:next()),
|
|
34
|
+
"Absk"
|
|
35
|
+
)
|
|
36
|
+
abilityType["bsk1+0"] = 0
|
|
37
|
+
abilityType["bsk2+0"] = 0
|
|
38
|
+
abilityType["bsk3+0"] = 0
|
|
39
|
+
abilityType["amcs+0"] = 0
|
|
40
|
+
abilityType["adur+0"] = MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
41
|
+
abilityType["ahdu+0"] = MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
42
|
+
return util.s2id(abilityType.id)
|
|
43
|
+
end)
|
|
44
|
+
local COOLDOWN_STARTER_ITEM_TYPE_ID = compiletime(function()
|
|
45
|
+
local itemType = BlankItemType:create()
|
|
46
|
+
itemType.abilityTypeIds = {COOLDOWN_STARTER_ABILITY_TYPE_ID}
|
|
47
|
+
itemType.cooldownGroupId = COOLDOWN_STARTER_ABILITY_TYPE_ID
|
|
48
|
+
itemType.activelyUsed = true
|
|
49
|
+
return itemType.id
|
|
50
|
+
end)
|
|
14
51
|
local dummy = assert(CreateUnit(
|
|
15
52
|
Player.neutralVictim.handle,
|
|
16
53
|
dummyUnitId,
|
|
@@ -18,7 +55,25 @@ local dummy = assert(CreateUnit(
|
|
|
18
55
|
0,
|
|
19
56
|
270
|
|
20
57
|
))
|
|
58
|
+
local cooldownStarterItem = UnitAddItemById(dummy, COOLDOWN_STARTER_ITEM_TYPE_ID)
|
|
59
|
+
local cooldownStarterAbility = BlzGetItemAbility(cooldownStarterItem, COOLDOWN_STARTER_ABILITY_TYPE_ID)
|
|
21
60
|
ShowUnit(dummy, false)
|
|
61
|
+
local function startItemCooldownInternal(handle, cooldown)
|
|
62
|
+
local cooldownGroup = getItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP)
|
|
63
|
+
setItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP, COOLDOWN_STARTER_ABILITY_TYPE_ID)
|
|
64
|
+
setAbilityRealLevelField(cooldownStarterAbility, ABILITY_RLF_COOLDOWN, 0, cooldown)
|
|
65
|
+
unitResetCooldown(dummy)
|
|
66
|
+
unitUseItem(dummy, cooldownStarterItem)
|
|
67
|
+
setItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP, cooldownGroup)
|
|
68
|
+
end
|
|
69
|
+
---
|
|
70
|
+
-- @internal For use by internal systems only.
|
|
71
|
+
____exports.startItemCooldown = function(handle, owner, cooldown)
|
|
72
|
+
____exports.doAbilityActionForceDummy(handle, owner, startItemCooldownInternal, cooldown)
|
|
73
|
+
end
|
|
74
|
+
---
|
|
75
|
+
-- @internal For use by internal systems only.
|
|
76
|
+
____exports.abilityActionDummy = dummy
|
|
22
77
|
---
|
|
23
78
|
-- @internal For use by internal systems only.
|
|
24
79
|
____exports.doAbilityAction = function(handle, action, ...)
|
|
@@ -45,4 +100,30 @@ ____exports.doAbilityAction = function(handle, action, ...)
|
|
|
45
100
|
end
|
|
46
101
|
return result
|
|
47
102
|
end
|
|
103
|
+
---
|
|
104
|
+
-- @internal For use by internal systems only.
|
|
105
|
+
____exports.doAbilityActionForceDummy = function(handle, owner, action, ...)
|
|
106
|
+
if owner == nil then
|
|
107
|
+
return ____exports.doAbilityAction(handle, action, ...)
|
|
108
|
+
end
|
|
109
|
+
local slot = findUnitItemSlot(owner, handle)
|
|
110
|
+
if slot == nil then
|
|
111
|
+
return ____exports.doAbilityAction(handle, action, ...)
|
|
112
|
+
end
|
|
113
|
+
local isPowerup
|
|
114
|
+
if isItemPowerup(handle) then
|
|
115
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
116
|
+
isPowerup = true
|
|
117
|
+
end
|
|
118
|
+
unitRemoveItem(owner, handle)
|
|
119
|
+
unitAddItem(dummy, handle)
|
|
120
|
+
local result = action(handle, ...)
|
|
121
|
+
unitRemoveItem(dummy, handle)
|
|
122
|
+
unitAddItem(owner, handle)
|
|
123
|
+
unitDropItemSlot(owner, handle, slot)
|
|
124
|
+
if isPowerup then
|
|
125
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
126
|
+
end
|
|
127
|
+
return result
|
|
128
|
+
end
|
|
48
129
|
return ____exports
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local disableAbility = BlzUnitDisableAbility
|
|
3
|
+
---
|
|
4
|
+
-- @internal For use by internal systems only.
|
|
5
|
+
____exports.increaseAbilityDisableCounter = function(unit, abilityTypeId, times)
|
|
6
|
+
for _ = 1, times do
|
|
7
|
+
disableAbility(unit, abilityTypeId, true, false)
|
|
8
|
+
end
|
|
9
|
+
for _ = times, -1 do
|
|
10
|
+
disableAbility(unit, abilityTypeId, false, false)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
return ____exports
|
|
@@ -3,7 +3,7 @@ import { Ability } from "../ability";
|
|
|
3
3
|
import { Destructable } from "../../../core/types/destructable";
|
|
4
4
|
import { Item } from "../item";
|
|
5
5
|
import { Widget } from "../../../core/types/widget";
|
|
6
|
-
import { DispatchingEvent } from "../../../event";
|
|
6
|
+
import { DispatchingEvent, Event } from "../../../event";
|
|
7
7
|
declare module "../unit" {
|
|
8
8
|
namespace Unit {
|
|
9
9
|
const abilityCastingStartEvent: DispatchingEvent<[Unit, Ability]>;
|
|
@@ -141,3 +141,12 @@ declare module "../unit" {
|
|
|
141
141
|
const abilityStopEvent: DispatchingEvent<[Unit, Ability]>;
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
+
declare module "../unit" {
|
|
145
|
+
namespace Unit {
|
|
146
|
+
const abilityCommandEvent: {
|
|
147
|
+
readonly [abilityTypeId: number]: {
|
|
148
|
+
readonly [orderTypeStringId: string]: Event<[Unit, Ability, string]>;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|