warscript 0.0.1-dev.0eca47c → 0.0.1-dev.1427c55
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/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/core/types/effect.d.ts +8 -2
- package/core/types/effect.lua +29 -5
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +91 -1
- package/core/util.d.ts +1 -1
- package/core/util.lua +6 -0
- package/engine/behavior.d.ts +2 -2
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/apply-buff.d.ts +3 -5
- package/engine/behaviour/ability/damage.d.ts +33 -11
- package/engine/behaviour/ability/damage.lua +89 -31
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/unit.d.ts +5 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +66 -19
- package/engine/buff.lua +268 -80
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +3 -11
- package/engine/internal/ability.lua +9 -78
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/unit/ability.lua +0 -14
- package/engine/internal/unit/bonus.d.ts +4 -2
- package/engine/internal/unit/bonus.lua +6 -1
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +84 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +24 -10
- package/engine/internal/unit.lua +102 -71
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/entry/item-type.d.ts +12 -0
- package/engine/object-data/entry/item-type.lua +78 -0
- package/engine/object-field/ability.d.ts +17 -0
- package/engine/object-field/ability.lua +51 -1
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +1 -1
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +34 -3
- package/utility/linked-set.d.ts +11 -2
- package/utility/linked-set.lua +5 -2
- package/utility/types.d.ts +1 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
package/binaryreader.d.ts
CHANGED
package/binaryreader.lua
CHANGED
|
@@ -9,6 +9,9 @@ function BinaryReader.prototype.____constructor(self, data)
|
|
|
9
9
|
self.i = 1
|
|
10
10
|
self.s = data
|
|
11
11
|
end
|
|
12
|
+
function BinaryReader.prototype.__tostring(self)
|
|
13
|
+
return self.s
|
|
14
|
+
end
|
|
12
15
|
function BinaryReader.prototype.read(self, fmt)
|
|
13
16
|
local value, pos = ____unpack(">" .. fmt, self.s, self.i)
|
|
14
17
|
self.i = pos
|
package/core/types/effect.d.ts
CHANGED
|
@@ -4,15 +4,19 @@ import { Widget } from "./widget";
|
|
|
4
4
|
import { PlayerColor } from "./playerColor";
|
|
5
5
|
declare const enum EffectPropertyKey {
|
|
6
6
|
COLOR = 100,
|
|
7
|
-
PITCH = 101
|
|
7
|
+
PITCH = 101,
|
|
8
|
+
ROLL = 102
|
|
8
9
|
}
|
|
9
10
|
export type EffectParameters = {
|
|
10
11
|
readonly scale?: number;
|
|
11
12
|
readonly color?: PlayerColor;
|
|
13
|
+
readonly pitch?: number;
|
|
14
|
+
readonly roll?: number;
|
|
12
15
|
};
|
|
13
16
|
export declare class Effect extends Handle<jeffect> {
|
|
14
17
|
private [EffectPropertyKey.COLOR]?;
|
|
15
18
|
private [EffectPropertyKey.PITCH]?;
|
|
19
|
+
private [EffectPropertyKey.ROLL]?;
|
|
16
20
|
protected onDestroy(): HandleDestructor;
|
|
17
21
|
get color(): PlayerColor;
|
|
18
22
|
set color(color: PlayerColor);
|
|
@@ -20,11 +24,13 @@ export declare class Effect extends Handle<jeffect> {
|
|
|
20
24
|
set scale(scale: number);
|
|
21
25
|
get pitch(): number;
|
|
22
26
|
set pitch(pitch: number);
|
|
27
|
+
get roll(): number;
|
|
28
|
+
set roll(roll: number);
|
|
23
29
|
static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, pos: Vec2): T;
|
|
24
30
|
static createTarget<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, target: Widget, attachPoint: string): T;
|
|
25
31
|
static flash(modelPath: string, ...args: [
|
|
26
32
|
...pointOrWidget: [x: number, y: number] | [widget: Widget, attachmentPoint: string],
|
|
27
|
-
...parametersOrDuration: [
|
|
33
|
+
...parametersOrDuration: [parametersOrDuration?: EffectParameters | number] | [duration?: number, parameters?: EffectParameters]
|
|
28
34
|
]): void;
|
|
29
35
|
static flashTarget(model: string, target: Widget, attachPoint: string, duration?: number): void;
|
|
30
36
|
}
|
package/core/types/effect.lua
CHANGED
|
@@ -22,10 +22,23 @@ local getSpecialEffectScale = BlzGetSpecialEffectScale
|
|
|
22
22
|
local playSpecialEffect = BlzPlaySpecialEffect
|
|
23
23
|
local setSpecialEffectScale = BlzSetSpecialEffectScale
|
|
24
24
|
local setSpecialEffectPitch = BlzSetSpecialEffectPitch
|
|
25
|
+
local setSpecialEffectRoll = BlzSetSpecialEffectRoll
|
|
25
26
|
local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
|
|
26
27
|
local specialEffectAddSubAnimation = BlzSpecialEffectAddSubAnimation
|
|
27
28
|
local specialEffectClearSubAnimations = BlzSpecialEffectClearSubAnimations
|
|
28
29
|
local specialEffectRemoveSubAnimation = BlzSpecialEffectRemoveSubAnimation
|
|
30
|
+
local function setSpecialEffectPitchDegrees(effect, pitch)
|
|
31
|
+
setSpecialEffectPitch(
|
|
32
|
+
effect,
|
|
33
|
+
-mathRad(pitch)
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
local function setSpecialEffectRollDegrees(effect, pitch)
|
|
37
|
+
setSpecialEffectRoll(
|
|
38
|
+
effect,
|
|
39
|
+
-mathRad(pitch)
|
|
40
|
+
)
|
|
41
|
+
end
|
|
29
42
|
local animTypeByAnimationName = {
|
|
30
43
|
attack = ANIM_TYPE_ATTACK,
|
|
31
44
|
birth = ANIM_TYPE_BIRTH,
|
|
@@ -97,7 +110,7 @@ local function setSpecialEffectColor(effect, color)
|
|
|
97
110
|
setSpecialEffectColorByPlayer(effect, dummyPlayer.handle)
|
|
98
111
|
dummyPlayer.color = dummyColor
|
|
99
112
|
end
|
|
100
|
-
local setters = {scale = setSpecialEffectScale, color = setSpecialEffectColor}
|
|
113
|
+
local setters = {scale = setSpecialEffectScale, color = setSpecialEffectColor, pitch = setSpecialEffectPitchDegrees, roll = setSpecialEffectRollDegrees}
|
|
101
114
|
dummyPlayer = Player.neutralExtra
|
|
102
115
|
local temporaryEffects = {}
|
|
103
116
|
local temporaryEffectsDurations = {}
|
|
@@ -197,13 +210,24 @@ __TS__SetDescriptor(
|
|
|
197
210
|
return self[101] or 0
|
|
198
211
|
end,
|
|
199
212
|
set = function(self, pitch)
|
|
200
|
-
|
|
201
|
-
self.handle,
|
|
202
|
-
-mathRad(pitch)
|
|
203
|
-
)
|
|
213
|
+
setSpecialEffectPitchDegrees(self.handle, pitch)
|
|
204
214
|
self[101] = pitch
|
|
205
215
|
end
|
|
206
216
|
},
|
|
207
217
|
true
|
|
208
218
|
)
|
|
219
|
+
__TS__SetDescriptor(
|
|
220
|
+
Effect.prototype,
|
|
221
|
+
"roll",
|
|
222
|
+
{
|
|
223
|
+
get = function(self)
|
|
224
|
+
return self[102] or 0
|
|
225
|
+
end,
|
|
226
|
+
set = function(self, roll)
|
|
227
|
+
setSpecialEffectRollDegrees(self.handle, roll)
|
|
228
|
+
self[102] = roll
|
|
229
|
+
end
|
|
230
|
+
},
|
|
231
|
+
true
|
|
232
|
+
)
|
|
209
233
|
return ____exports
|
package/core/types/frame.d.ts
CHANGED
|
@@ -25,11 +25,14 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
25
25
|
static readonly GAME_UI: Frame;
|
|
26
26
|
static readonly CONSOLE_UI: Frame;
|
|
27
27
|
static readonly CONSOLE_UI_BACKDROP: Frame;
|
|
28
|
+
private static readonly CONSOLE_UI_BACKDROP_UI_SCALE_HELPER_CHILD;
|
|
28
29
|
static readonly CONSOLE_TOP_BAR: Frame;
|
|
29
30
|
static readonly CONSOLE_BOTTOM_BAR: Frame;
|
|
30
31
|
static readonly WORLD: Frame;
|
|
31
32
|
static readonly CHAT: Frame;
|
|
32
33
|
static readonly TIME_OF_DAY_CLOCK: Frame;
|
|
34
|
+
private static readonly SIMPLE_FRAME_TEST_CHILD;
|
|
35
|
+
static get uiScale(): number;
|
|
33
36
|
static get leftBorder(): Frame;
|
|
34
37
|
static get rightBorder(): Frame;
|
|
35
38
|
static get minX(): number;
|
|
@@ -77,6 +80,8 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
77
80
|
get onMouseLeave(): FrameEvent;
|
|
78
81
|
get onMouseUp(): FrameEvent;
|
|
79
82
|
get onMouseWheel(): FrameEvent<[number]>;
|
|
83
|
+
get mouseEnterLocalEvent(): Event;
|
|
84
|
+
get mouseLeaveLocalEvent(): Event;
|
|
80
85
|
get popupMenuItemChangeEvent(): FrameEvent<[
|
|
81
86
|
popupMenu: Frame,
|
|
82
87
|
previousValue: number,
|
|
@@ -106,6 +111,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
106
111
|
enable(): void;
|
|
107
112
|
addText(text: string): void;
|
|
108
113
|
clearAllPoints(): void;
|
|
114
|
+
get children(): Frame[];
|
|
109
115
|
getChild(index: number): Frame;
|
|
110
116
|
getChildrenCount(): number;
|
|
111
117
|
setSize(width: number, height: number): void;
|
package/core/types/frame.lua
CHANGED
|
@@ -62,8 +62,10 @@ local function updateBorders()
|
|
|
62
62
|
local width4by3 = (w - h / 600 * 800) / 2
|
|
63
63
|
local pxtodpi = 0.6 / h
|
|
64
64
|
BlzFrameSetAbsPoint(leftBorder, FRAMEPOINT_TOPLEFT, -width4by3 * pxtodpi, 0.6)
|
|
65
|
+
BlzFrameSetScale(leftBorder, 1)
|
|
65
66
|
BlzFrameSetSize(leftBorder, 0.001, 0.6)
|
|
66
67
|
BlzFrameSetAbsPoint(rightBorder, FRAMEPOINT_TOPRIGHT, (-width4by3 + w) * pxtodpi, 0.6)
|
|
68
|
+
BlzFrameSetScale(rightBorder, 1)
|
|
67
69
|
BlzFrameSetSize(rightBorder, 0.001, 0.6)
|
|
68
70
|
end
|
|
69
71
|
local worldFrame = BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0)
|
|
@@ -120,6 +122,7 @@ do
|
|
|
120
122
|
FramePoint.BOTTOM = FRAMEPOINT_BOTTOM
|
|
121
123
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
122
124
|
end
|
|
125
|
+
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
123
126
|
____exports.Frame = __TS__Class()
|
|
124
127
|
local Frame = ____exports.Frame
|
|
125
128
|
Frame.name = "Frame"
|
|
@@ -240,6 +243,7 @@ function Frame.prototype.setTextColor(self, color)
|
|
|
240
243
|
end
|
|
241
244
|
function Frame.prototype.setTooltip(self, tooltip)
|
|
242
245
|
BlzFrameSetTooltip(self.handle, tooltip.handle)
|
|
246
|
+
tooltipByFrame[self] = tooltip
|
|
243
247
|
end
|
|
244
248
|
function Frame.prototype.setMinMaxValue(self, minValue, maxValue)
|
|
245
249
|
BlzFrameSetMinMaxValue(self.handle, minValue, maxValue)
|
|
@@ -267,7 +271,16 @@ function Frame.createSimple(self, name, parent, createContext)
|
|
|
267
271
|
))
|
|
268
272
|
end
|
|
269
273
|
function Frame.create(self, name, parent, priority, createContext)
|
|
270
|
-
|
|
274
|
+
if parent == ____exports.Frame.CONSOLE_UI_BACKDROP then
|
|
275
|
+
local helper = ____exports.Frame.CONSOLE_UI_BACKDROP_UI_SCALE_HELPER_CHILD.handle
|
|
276
|
+
BlzFrameSetScale(helper, 1)
|
|
277
|
+
local frame = BlzCreateFrame(name, helper, priority or 0, createContext or 0)
|
|
278
|
+
BlzFrameSetScale(helper, ____exports.Frame.uiScale)
|
|
279
|
+
BlzFrameSetParent(frame, ____exports.Frame.CONSOLE_UI_BACKDROP.handle)
|
|
280
|
+
return self:of(frame)
|
|
281
|
+
else
|
|
282
|
+
return self:of(BlzCreateFrame(name, parent.handle, priority or 0, createContext or 0))
|
|
283
|
+
end
|
|
271
284
|
end
|
|
272
285
|
function Frame.createByType(self, typeName, name, parent, inherits, createContext)
|
|
273
286
|
return self:of(BlzCreateFrameByType(
|
|
@@ -293,11 +306,20 @@ end
|
|
|
293
306
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
294
307
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
|
295
308
|
Frame.CONSOLE_UI_BACKDROP = ____exports.Frame:byName("ConsoleUIBackdrop")
|
|
309
|
+
Frame.CONSOLE_UI_BACKDROP_UI_SCALE_HELPER_CHILD = ____exports.Frame:createByType("FRAME", "ConsoleUIBackdropUIScaleHelperChild", ____exports.Frame.CONSOLE_UI_BACKDROP)
|
|
296
310
|
Frame.CONSOLE_TOP_BAR = ____exports.Frame:byName("ConsoleTopBar")
|
|
297
311
|
Frame.CONSOLE_BOTTOM_BAR = ____exports.Frame:byName("ConsoleBottomBar")
|
|
298
312
|
Frame.WORLD = ____exports.Frame:byOrigin(ORIGIN_FRAME_WORLD_FRAME)
|
|
299
313
|
Frame.CHAT = ____exports.Frame:byOrigin(ORIGIN_FRAME_CHAT_MSG)
|
|
300
314
|
Frame.TIME_OF_DAY_CLOCK = ____exports.Frame.GAME_UI:getChild(5):getChild(0)
|
|
315
|
+
Frame.SIMPLE_FRAME_TEST_CHILD = ____exports.Frame:createByType("SIMPLEFRAME", "SimpleFrameTestParent", ____exports.Frame.CONSOLE_UI)
|
|
316
|
+
__TS__ObjectDefineProperty(
|
|
317
|
+
Frame,
|
|
318
|
+
"uiScale",
|
|
319
|
+
{get = function(self)
|
|
320
|
+
return ____exports.Frame.CONSOLE_BOTTOM_BAR.width / 0.8
|
|
321
|
+
end}
|
|
322
|
+
)
|
|
301
323
|
__TS__ObjectDefineProperty(
|
|
302
324
|
Frame,
|
|
303
325
|
"leftBorder",
|
|
@@ -599,6 +621,62 @@ __TS__SetDescriptor(
|
|
|
599
621
|
end},
|
|
600
622
|
true
|
|
601
623
|
)
|
|
624
|
+
__TS__SetDescriptor(
|
|
625
|
+
Frame.prototype,
|
|
626
|
+
"mouseEnterLocalEvent",
|
|
627
|
+
{get = function(self)
|
|
628
|
+
local event = __TS__New(Event)
|
|
629
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
630
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
631
|
+
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
632
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
633
|
+
self:setTooltip(tooltip)
|
|
634
|
+
end
|
|
635
|
+
local isMouseInside = false
|
|
636
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
637
|
+
local tooltip = tooltipByFrame[self]
|
|
638
|
+
if tooltip and tooltip.visible then
|
|
639
|
+
if not isMouseInside then
|
|
640
|
+
isMouseInside = true
|
|
641
|
+
Event.invoke(event)
|
|
642
|
+
end
|
|
643
|
+
else
|
|
644
|
+
isMouseInside = false
|
|
645
|
+
end
|
|
646
|
+
end)
|
|
647
|
+
rawset(self, "mouseEnterLocalEvent", event)
|
|
648
|
+
return event
|
|
649
|
+
end},
|
|
650
|
+
true
|
|
651
|
+
)
|
|
652
|
+
__TS__SetDescriptor(
|
|
653
|
+
Frame.prototype,
|
|
654
|
+
"mouseLeaveLocalEvent",
|
|
655
|
+
{get = function(self)
|
|
656
|
+
local event = __TS__New(Event)
|
|
657
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
658
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
659
|
+
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
660
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
661
|
+
self:setTooltip(tooltip)
|
|
662
|
+
end
|
|
663
|
+
local isMouseInside = false
|
|
664
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
665
|
+
local tooltip = tooltipByFrame[self]
|
|
666
|
+
if tooltip and tooltip.visible then
|
|
667
|
+
isMouseInside = true
|
|
668
|
+
else
|
|
669
|
+
if isMouseInside then
|
|
670
|
+
isMouseInside = false
|
|
671
|
+
Event.invoke(event)
|
|
672
|
+
end
|
|
673
|
+
end
|
|
674
|
+
end)
|
|
675
|
+
rawset(self, "mouseLeaveLocalEvent", event)
|
|
676
|
+
return event
|
|
677
|
+
end},
|
|
678
|
+
true
|
|
679
|
+
)
|
|
602
680
|
__TS__SetDescriptor(
|
|
603
681
|
Frame.prototype,
|
|
604
682
|
"popupMenuItemChangeEvent",
|
|
@@ -701,6 +779,18 @@ __TS__SetDescriptor(
|
|
|
701
779
|
end},
|
|
702
780
|
true
|
|
703
781
|
)
|
|
782
|
+
__TS__SetDescriptor(
|
|
783
|
+
Frame.prototype,
|
|
784
|
+
"children",
|
|
785
|
+
{get = function(self)
|
|
786
|
+
local children = {}
|
|
787
|
+
for i = 0, self:getChildrenCount() - 1 do
|
|
788
|
+
children[i + 1] = self:getChild(i)
|
|
789
|
+
end
|
|
790
|
+
return children
|
|
791
|
+
end},
|
|
792
|
+
true
|
|
793
|
+
)
|
|
704
794
|
__TS__ObjectDefineProperty(
|
|
705
795
|
Frame,
|
|
706
796
|
"onKeyPress",
|
package/core/util.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ declare global {
|
|
|
54
54
|
function fourCC(id: string): number;
|
|
55
55
|
}
|
|
56
56
|
declare namespace inner {
|
|
57
|
-
const orderId: (id: "blink" | "stop" | "load" | "sleep" | "absorb" | "acidbomb" | "acolyteharvest" | "ambush" | "ancestralspirit" | "ancestralspirittarget" | "animatedead" | "antimagicshell" | "attack" | "attackground" | "attackonce" | "attributemodskill" | "auraunholy" | "auravampiric" | "autodispel" | "autodispeloff" | "autodispelon" | "autoentangle" | "autoentangleinstant" | "autoharvestgold" | "autoharvestlumber" | "avatar" | "avengerform" | "awaken" | "banish" | "barkskin" | "barkskinoff" | "barkskinon" | "battleroar" | "battlestations" | "bearform" | "berserk" | "blackarrow" | "blackarrowoff" | "blackarrowon" | "blight" | "blizzard" | "bloodlust" | "bloodlustoff" | "bloodluston" | "board" | "breathoffire" | "breathoffrost" | "build" | "burrow" | "cannibalize" | "carrionscarabs" | "carrionscarabsinstant" | "carrionscarabsoff" | "carrionscarabson" | "carrionswarm" | "chainlightning" | "channel" | "charm" | "chemicalrage" | "cloudoffog" | "clusterrockets" | "coldarrows" | "coldarrowstarg" | "controlmagic" | "corporealform" | "corrosivebreath" | "coupleinstant" | "coupletarget" | "creepanimatedead" | "creepdevour" | "creepheal" | "creephealoff" | "creephealon" | "creepthunderbolt" | "creepthunderclap" | "cripple" | "curse" | "curseoff" | "curseon" | "cyclone" | "darkconversion" | "darkportal" | "darkritual" | "darksummoning" | "deathanddecay" | "deathcoil" | "deathpact" | "decouple" | "defend" | "detectaoe" | "detonate" | "devour" | "devourmagic" | "disassociate" | "disenchant" | "dismount" | "dispel" | "divineshield" | "doom" | "drain" | "dreadlordinferno" | "dropitem" | "drunkenhaze" | "earthquake" | "eattree" | "elementalfury" | "ensnare" | "ensnareoff" | "ensnareon" | "entangle" | "entangleinstant" | "entanglingroots" | "etherealform" | "evileye" | "faeriefire" | "faeriefireoff" | "faeriefireon" | "fanofknives" | "farsight" | "fingerofdeath" | "firebolt" | "flamestrike" | "flamingarrows" | "flamingarrowstarg" | "flamingattack" | "flamingattacktarg" | "flare" | "forceboard" | "forceofnature" | "forkedlightning" | "freezingbreath" | "frenzy" | "frenzyoff" | "frenzyon" | "frostarmor" | "frostarmoroff" | "frostarmoron" | "frostnova" | "getitem" | "gold2lumber" | "grabtree" | "harvest" | "heal" | "healingspray" | "healingward" | "healingwave" | "healoff" | "healon" | "hex" | "holdposition" | "holybolt" | "howlofterror" | "humanbuild" | "immolation" | "impale" | "incineratearrow" | "incineratearrowoff" | "incineratearrowon" | "inferno" | "innerfire" | "innerfireoff" | "innerfireon" | "instant" | "invisibility" | "lavamonster" | "lightningshield" | "loadarcher" | "loadcorpse" | "loadcorpseinstant" | "locustswarm" | "lumber2gold" | "magicdefense" | "magicleash" | "magicundefense" | "manaburn" | "manaflareoff" | "manaflareon" | "manashieldoff" | "manashieldon" | "massteleport" | "mechanicalcritter" | "metamorphosis" | "militia" | "militiaconvert" | "militiaoff" | "militiaunconvert" | "mindrot" | "mirrorimage" | "monsoon" | "mount" | "mounthippogryph" | "move" | "moveAI" | "nagabuild" | "neutraldetectaoe" | "neutralinteract" | "neutralspell" | "nightelfbuild" | "orcbuild" | "parasite" | "parasiteoff" | "parasiteon" | "patrol" | "patrolAI" | "phaseshift" | "phaseshiftinstant" | "phaseshiftoff" | "phaseshifton" | "phoenixfire" | "phoenixmorph" | "poisonarrows" | "poisonarrowstarg" | "polymorph" | "possession" | "preservation" | "purge" | "rainofchaos" | "rainoffire" | "raisedead" | "raisedeadoff" | "raisedeadon" | "ravenform" | "recharge" | "rechargeoff" | "rechargeon" | "rejuvination" | "renew" | "renewoff" | "renewon" | "repair" | "repairoff" | "repairon" | "replenish" | "replenishlife" | "replenishlifeoff" | "replenishlifeon" | "replenishmana" | "replenishmanaoff" | "replenishmanaon" | "replenishoff" | "replenishon" | "request_hero" | "requestsacrifice" | "restoration" | "restorationoff" | "restorationon" | "resumebuild" | "resumeharvesting" | "resurrection" | "returnresources" | "revenge" | "revive" | "roar" | "robogoblin" | "root" | "sacrifice" | "sanctuary" | "scout" | "selfdestruct" | "selfdestructoff" | "selfdestructon" | "sentinel" | "follow" | "smart" | "setrally" | "shadowsight" | "shadowstrike" | "shockwave" | "silence" | "slow" | "slowoff" | "slowon" | "soulburn" | "soulpreservation" | "spellshield" | "spellshieldaoe" | "spellsteal" | "spellstealoff" | "spellstealon" | "spies" | "spiritlink" | "spiritofvengeance" | "spirittroll" | "spiritwolf" | "stampede" | "standdown" | "starfall" | "stasistrap" | "steal" | "stomp" | "stoneform" | "stunned" | "submerge" | "summonfactory" | "summongrizzly" | "summonphoenix" | "summonquillbeast" | "summonwareagle" | "tankdroppilot" | "tankloadpilot" | "tankpilot" | "taunt" | "thunderbolt" | "thunderclap" | "tornado" | "townbelloff" | "townbellon" | "tranquility" | "transmute" | "unavatar" | "unavengerform" | "unbearform" | "unburrow" | "uncoldarrows" | "uncorporealform" | "undeadbuild" | "undefend" | "undivineshield" | "unetherealform" | "unflamingarrows" | "unflamingattack" | "unholyfrenzy" | "unimmolation" | "unload" | "unloadall" | "unloadallcorpses" | "unloadallinstant" | "unpoisonarrows" | "unravenform" | "unrobogoblin" | "unroot" | "unstableconcoction" | "unstoneform" | "unsubmerge" | "unsummon" | "unwindwalk" | "vengeance" | "vengeanceinstant" | "vengeanceoff" | "vengeanceon" | "volcano" | "voodoo" | "ward" | "waterelemental" | "wateryminion" | "web" | "weboff" | "webon" | "whirlwind" | "windwalk" | "wispharvest") => number;
|
|
57
|
+
const orderId: (id: "blink" | "stop" | "load" | "sleep" | "absorb" | "acidbomb" | "acolyteharvest" | "ambush" | "ancestralspirit" | "ancestralspirittarget" | "animatedead" | "antimagicshell" | "attack" | "attackground" | "attackonce" | "attributemodskill" | "auraunholy" | "auravampiric" | "autodispel" | "autodispeloff" | "autodispelon" | "autoentangle" | "autoentangleinstant" | "autoharvestgold" | "autoharvestlumber" | "avatar" | "avengerform" | "awaken" | "banish" | "barkskin" | "barkskinoff" | "barkskinon" | "battleroar" | "battlestations" | "bearform" | "berserk" | "blackarrow" | "blackarrowoff" | "blackarrowon" | "blight" | "blizzard" | "bloodlust" | "bloodlustoff" | "bloodluston" | "board" | "breathoffire" | "breathoffrost" | "build" | "burrow" | "cannibalize" | "carrionscarabs" | "carrionscarabsinstant" | "carrionscarabsoff" | "carrionscarabson" | "carrionswarm" | "chainlightning" | "channel" | "charm" | "chemicalrage" | "cloudoffog" | "clusterrockets" | "coldarrows" | "coldarrowstarg" | "controlmagic" | "corporealform" | "corrosivebreath" | "coupleinstant" | "coupletarget" | "creepanimatedead" | "creepdevour" | "creepheal" | "creephealoff" | "creephealon" | "creepthunderbolt" | "creepthunderclap" | "cripple" | "curse" | "curseoff" | "curseon" | "cyclone" | "darkconversion" | "darkportal" | "darkritual" | "darksummoning" | "deathanddecay" | "deathcoil" | "deathpact" | "decouple" | "defend" | "detectaoe" | "detonate" | "devour" | "devourmagic" | "disassociate" | "disenchant" | "dismount" | "dispel" | "divineshield" | "doom" | "drain" | "dreadlordinferno" | "dropitem" | "moveslot0" | "moveslot1" | "moveslot2" | "moveslot3" | "moveslot4" | "moveslot5" | "drunkenhaze" | "earthquake" | "eattree" | "elementalfury" | "ensnare" | "ensnareoff" | "ensnareon" | "entangle" | "entangleinstant" | "entanglingroots" | "etherealform" | "evileye" | "faeriefire" | "faeriefireoff" | "faeriefireon" | "fanofknives" | "farsight" | "fingerofdeath" | "firebolt" | "flamestrike" | "flamingarrows" | "flamingarrowstarg" | "flamingattack" | "flamingattacktarg" | "flare" | "forceboard" | "forceofnature" | "forkedlightning" | "freezingbreath" | "frenzy" | "frenzyoff" | "frenzyon" | "frostarmor" | "frostarmoroff" | "frostarmoron" | "frostnova" | "getitem" | "gold2lumber" | "grabtree" | "harvest" | "heal" | "healingspray" | "healingward" | "healingwave" | "healoff" | "healon" | "hex" | "holdposition" | "holybolt" | "howlofterror" | "humanbuild" | "immolation" | "impale" | "incineratearrow" | "incineratearrowoff" | "incineratearrowon" | "inferno" | "innerfire" | "innerfireoff" | "innerfireon" | "instant" | "invisibility" | "lavamonster" | "lightningshield" | "loadarcher" | "loadcorpse" | "loadcorpseinstant" | "locustswarm" | "lumber2gold" | "magicdefense" | "magicleash" | "magicundefense" | "manaburn" | "manaflareoff" | "manaflareon" | "manashieldoff" | "manashieldon" | "massteleport" | "mechanicalcritter" | "metamorphosis" | "militia" | "militiaconvert" | "militiaoff" | "militiaunconvert" | "mindrot" | "mirrorimage" | "monsoon" | "mount" | "mounthippogryph" | "move" | "moveAI" | "nagabuild" | "neutraldetectaoe" | "neutralinteract" | "neutralspell" | "nightelfbuild" | "orcbuild" | "parasite" | "parasiteoff" | "parasiteon" | "patrol" | "patrolAI" | "phaseshift" | "phaseshiftinstant" | "phaseshiftoff" | "phaseshifton" | "phoenixfire" | "phoenixmorph" | "poisonarrows" | "poisonarrowstarg" | "polymorph" | "possession" | "preservation" | "purge" | "rainofchaos" | "rainoffire" | "raisedead" | "raisedeadoff" | "raisedeadon" | "ravenform" | "recharge" | "rechargeoff" | "rechargeon" | "rejuvination" | "renew" | "renewoff" | "renewon" | "repair" | "repairoff" | "repairon" | "replenish" | "replenishlife" | "replenishlifeoff" | "replenishlifeon" | "replenishmana" | "replenishmanaoff" | "replenishmanaon" | "replenishoff" | "replenishon" | "request_hero" | "requestsacrifice" | "restoration" | "restorationoff" | "restorationon" | "resumebuild" | "resumeharvesting" | "resurrection" | "returnresources" | "revenge" | "revive" | "roar" | "robogoblin" | "root" | "sacrifice" | "sanctuary" | "scout" | "selfdestruct" | "selfdestructoff" | "selfdestructon" | "sentinel" | "follow" | "smart" | "setrally" | "shadowsight" | "shadowstrike" | "shockwave" | "silence" | "slow" | "slowoff" | "slowon" | "soulburn" | "soulpreservation" | "spellshield" | "spellshieldaoe" | "spellsteal" | "spellstealoff" | "spellstealon" | "spies" | "spiritlink" | "spiritofvengeance" | "spirittroll" | "spiritwolf" | "stampede" | "standdown" | "starfall" | "stasistrap" | "steal" | "stomp" | "stoneform" | "stunned" | "submerge" | "summonfactory" | "summongrizzly" | "summonphoenix" | "summonquillbeast" | "summonwareagle" | "tankdroppilot" | "tankloadpilot" | "tankpilot" | "taunt" | "thunderbolt" | "thunderclap" | "tornado" | "townbelloff" | "townbellon" | "tranquility" | "transmute" | "unavatar" | "unavengerform" | "unbearform" | "unburrow" | "uncoldarrows" | "uncorporealform" | "undeadbuild" | "undefend" | "undivineshield" | "unetherealform" | "unflamingarrows" | "unflamingattack" | "unholyfrenzy" | "unimmolation" | "unload" | "unloadall" | "unloadallcorpses" | "unloadallinstant" | "unpoisonarrows" | "unravenform" | "unrobogoblin" | "unroot" | "unstableconcoction" | "unstoneform" | "unsubmerge" | "unsummon" | "unwindwalk" | "vengeance" | "vengeanceinstant" | "vengeanceoff" | "vengeanceon" | "volcano" | "voodoo" | "ward" | "waterelemental" | "wateryminion" | "web" | "weboff" | "webon" | "whirlwind" | "windwalk" | "wispharvest") => number;
|
|
58
58
|
}
|
|
59
59
|
declare global {
|
|
60
60
|
function orderId(...args: Parameters<typeof inner.orderId>): ReturnType<typeof inner.orderId>;
|
package/core/util.lua
CHANGED
|
@@ -196,6 +196,12 @@ do
|
|
|
196
196
|
drain = 852487,
|
|
197
197
|
dreadlordinferno = 852224,
|
|
198
198
|
dropitem = 852001,
|
|
199
|
+
moveslot0 = 852002,
|
|
200
|
+
moveslot1 = 852003,
|
|
201
|
+
moveslot2 = 852004,
|
|
202
|
+
moveslot3 = 852005,
|
|
203
|
+
moveslot4 = 852006,
|
|
204
|
+
moveslot5 = 852007,
|
|
199
205
|
drunkenhaze = 852585,
|
|
200
206
|
earthquake = 852121,
|
|
201
207
|
eattree = 852146,
|
package/engine/behavior.d.ts
CHANGED
|
@@ -17,9 +17,9 @@ export declare abstract class Behavior<T extends AnyNotNil, PeriodicActionParame
|
|
|
17
17
|
protected startPeriodicAction(interval: number, ...parameters: PeriodicActionParameters): void;
|
|
18
18
|
protected stopPeriodicAction(): void;
|
|
19
19
|
static count<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, limit?: number): number;
|
|
20
|
-
static getFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[],
|
|
20
|
+
static getFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], CountOrPredicate extends [number] | [] | [(behavior: T, ...args: PredicateArgs) => boolean, ...PredicateArgs], PredicateArgs extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, ...[countOrPredicate]: CountOrPredicate): CountOrPredicate extends [number] ? T[] : T | undefined;
|
|
21
21
|
static getLast<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T | undefined;
|
|
22
|
-
static getAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T[];
|
|
22
|
+
static getAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], PredicateArgs extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, predicate?: (this: void, behavior: T, ...args: PredicateArgs) => boolean, ...predicateArgs: PredicateArgs): T[];
|
|
23
23
|
static forFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, consumer: (this: void, behavior: T, ...parameters: ConsumerParameters) => any, ...parameters: ConsumerParameters): number;
|
|
24
24
|
static forFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], K extends KeysOfType<T, (this: T, ...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never): number;
|
|
25
25
|
static forAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, consumer: (this: void, behavior: T, ...parameters: ConsumerParameters) => unknown, ...parameters: ConsumerParameters): number;
|
package/engine/behavior.lua
CHANGED
|
@@ -83,11 +83,11 @@ function Behavior.count(self, object, limit)
|
|
|
83
83
|
end
|
|
84
84
|
return behaviorsCount
|
|
85
85
|
end
|
|
86
|
-
function Behavior.getFirst(self, object,
|
|
86
|
+
function Behavior.getFirst(self, object, countOrPredicate, ...)
|
|
87
87
|
local behavior = firstBehaviorByObject[object]
|
|
88
|
-
if
|
|
88
|
+
if type(countOrPredicate) ~= "number" then
|
|
89
89
|
while behavior ~= nil do
|
|
90
|
-
if __TS__InstanceOf(behavior, self) then
|
|
90
|
+
if __TS__InstanceOf(behavior, self) and (countOrPredicate == nil or countOrPredicate(behavior, ...)) then
|
|
91
91
|
return behavior
|
|
92
92
|
end
|
|
93
93
|
behavior = behavior[1]
|
|
@@ -96,7 +96,7 @@ function Behavior.getFirst(self, object, count)
|
|
|
96
96
|
end
|
|
97
97
|
local behaviors = {}
|
|
98
98
|
local behaviorsCount = 0
|
|
99
|
-
while behavior ~= nil and behaviorsCount <
|
|
99
|
+
while behavior ~= nil and behaviorsCount < countOrPredicate do
|
|
100
100
|
if __TS__InstanceOf(behavior, self) then
|
|
101
101
|
behaviorsCount = behaviorsCount + 1
|
|
102
102
|
behaviors[behaviorsCount] = behavior
|
|
@@ -115,12 +115,12 @@ function Behavior.getLast(self, object)
|
|
|
115
115
|
end
|
|
116
116
|
return nil
|
|
117
117
|
end
|
|
118
|
-
function Behavior.getAll(self, object)
|
|
118
|
+
function Behavior.getAll(self, object, predicate, ...)
|
|
119
119
|
local behaviors = {}
|
|
120
120
|
local behaviorsCount = 0
|
|
121
121
|
local behavior = firstBehaviorByObject[object]
|
|
122
122
|
while behavior ~= nil do
|
|
123
|
-
if __TS__InstanceOf(behavior, self) then
|
|
123
|
+
if __TS__InstanceOf(behavior, self) and (predicate == nil or predicate(behavior, ...)) then
|
|
124
124
|
behaviorsCount = behaviorsCount + 1
|
|
125
125
|
behaviors[behaviorsCount] = behavior
|
|
126
126
|
end
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { AbilityBehavior } from "../ability";
|
|
3
3
|
import { Ability } from "../../internal/ability";
|
|
4
|
-
import { Buff, BuffConstructor, BuffParameters, BuffTypeIdSelectionPolicy } from "../../buff";
|
|
4
|
+
import { Buff, BuffConstructor, BuffParameters, BuffPolarityParameterType, BuffResistanceTypeParameterType, BuffTypeIdSelectionPolicy } from "../../buff";
|
|
5
5
|
import { Unit } from "../../internal/unit";
|
|
6
6
|
import { ApplicableBuffTypeId } from "../../object-data/entry/buff-type/applicable";
|
|
7
|
-
import { BuffResistanceType } from "../../object-data/auxiliary/buff-resistance-type";
|
|
8
|
-
import { BuffPolarity } from "../../object-data/auxiliary/buff-polarity";
|
|
9
7
|
import { Widget } from "../../../core/types/widget";
|
|
10
8
|
type BuffParametersType<T extends BuffConstructor> = BuffParameters & Omit<BuffAdditionalParametersType<T>, keyof BuffParameters>;
|
|
11
9
|
type BuffAdditionalParametersType<T extends BuffConstructor> = T extends BuffConstructor<Buff<infer AdditionalParameters>> ? AdditionalParameters : never;
|
|
@@ -17,8 +15,8 @@ export declare abstract class ApplyBuffAbilityBehavior<T extends BuffConstructor
|
|
|
17
15
|
typeIds: [ApplicableBuffTypeId, ...ApplicableBuffTypeId[]],
|
|
18
16
|
typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
|
|
19
17
|
],
|
|
20
|
-
polarity:
|
|
21
|
-
resistanceType:
|
|
18
|
+
polarity: BuffPolarityParameterType,
|
|
19
|
+
resistanceType: BuffResistanceTypeParameterType,
|
|
22
20
|
parameters?: BuffParametersType<T>
|
|
23
21
|
]);
|
|
24
22
|
}
|
|
@@ -4,22 +4,44 @@ import { Ability } from "../../internal/ability";
|
|
|
4
4
|
import { Unit } from "../../internal/unit";
|
|
5
5
|
import { AbilityDependentValue } from "../../object-field/ability";
|
|
6
6
|
import { Widget } from "../../../core/types/widget";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
import { AttackType, DamageType, WeaponType } from "../../internal/unit+damage";
|
|
8
|
+
export type DamageAbilityBehaviorParameters = {
|
|
9
|
+
damagePerStrength?: AbilityDependentValue<number>;
|
|
10
|
+
damagePerAgility?: AbilityDependentValue<number>;
|
|
11
|
+
damagePerIntelligence?: AbilityDependentValue<number>;
|
|
12
|
+
attackType?: AttackType;
|
|
13
|
+
damageType?: DamageType;
|
|
14
|
+
weaponType?: WeaponType;
|
|
15
|
+
};
|
|
16
|
+
export type DamageAreaAbilityBehaviorParameters = DamageAbilityBehaviorParameters & {
|
|
17
|
+
maximumDamage?: AbilityDependentValue<number>;
|
|
18
|
+
};
|
|
19
|
+
declare abstract class DamageAbilityBehavior<T extends DamageAbilityBehaviorParameters = DamageAbilityBehaviorParameters> extends AbilityBehavior {
|
|
20
|
+
protected readonly damage: AbilityDependentValue<number>;
|
|
21
|
+
protected readonly parameters?: T | undefined;
|
|
22
|
+
protected constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: T | undefined);
|
|
23
|
+
protected calculateDamage(caster: Unit): number;
|
|
24
|
+
}
|
|
25
|
+
export declare class DamageSelfAbilityBehavior extends DamageAbilityBehavior {
|
|
26
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAbilityBehaviorParameters);
|
|
10
27
|
onImpact(caster: Unit): void;
|
|
11
28
|
}
|
|
12
|
-
export declare class DamageTargetAbilityBehavior extends
|
|
13
|
-
|
|
14
|
-
constructor(ability: Ability, damage: AbilityDependentValue<number>);
|
|
29
|
+
export declare class DamageTargetAbilityBehavior extends DamageAbilityBehavior {
|
|
30
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAbilityBehaviorParameters);
|
|
15
31
|
onWidgetTargetImpact(caster: Unit, target: Widget): void;
|
|
16
32
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
33
|
+
declare abstract class DamageAreaAbilityBehavior extends DamageAbilityBehavior<DamageAreaAbilityBehaviorParameters> {
|
|
34
|
+
protected constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAreaAbilityBehaviorParameters);
|
|
35
|
+
protected damageArea(caster: Unit, x: number, y: number): void;
|
|
36
|
+
}
|
|
37
|
+
export declare class DamageSelfAreaAbilityBehavior extends DamageAreaAbilityBehavior {
|
|
38
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAreaAbilityBehaviorParameters);
|
|
39
|
+
onImpact(caster: Unit): void;
|
|
40
|
+
}
|
|
41
|
+
export declare class DamageTargetAreaAbilityBehavior extends DamageAreaAbilityBehavior {
|
|
42
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAreaAbilityBehaviorParameters);
|
|
21
43
|
onNoTargetImpact(caster: Unit): void;
|
|
22
44
|
onWidgetTargetImpact(caster: Unit, target: Widget): void;
|
|
23
45
|
onPointTargetImpact(caster: Unit, x: number, y: number): void;
|
|
24
|
-
private damageArea;
|
|
25
46
|
}
|
|
47
|
+
export {};
|
|
@@ -9,53 +9,77 @@ local Unit = ____unit.Unit
|
|
|
9
9
|
local ____ability = require("engine.standard.fields.ability")
|
|
10
10
|
local ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD = ____ability.ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD
|
|
11
11
|
local AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD = ____ability.AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD
|
|
12
|
+
local DamageAbilityBehavior = __TS__Class()
|
|
13
|
+
DamageAbilityBehavior.name = "DamageAbilityBehavior"
|
|
14
|
+
__TS__ClassExtends(DamageAbilityBehavior, AbilityBehavior)
|
|
15
|
+
function DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
16
|
+
AbilityBehavior.prototype.____constructor(self, ability)
|
|
17
|
+
self.damage = damage
|
|
18
|
+
self.parameters = parameters
|
|
19
|
+
end
|
|
20
|
+
function DamageAbilityBehavior.prototype.calculateDamage(self, caster)
|
|
21
|
+
local parameters = self.parameters
|
|
22
|
+
local damage = self:resolveCurrentAbilityDependentValue(self.damage)
|
|
23
|
+
local damagePerStrength = self:resolveCurrentAbilityDependentValue(parameters and parameters.damagePerStrength or 0)
|
|
24
|
+
if damagePerStrength ~= 0 then
|
|
25
|
+
damage = damage + damagePerStrength * caster.strength
|
|
26
|
+
end
|
|
27
|
+
local damagePerAgility = self:resolveCurrentAbilityDependentValue(parameters and parameters.damagePerAgility or 0)
|
|
28
|
+
if damagePerAgility ~= 0 then
|
|
29
|
+
damage = damage + damagePerAgility * caster.agility
|
|
30
|
+
end
|
|
31
|
+
local damagePerIntelligence = self:resolveCurrentAbilityDependentValue(parameters and parameters.damagePerIntelligence or 0)
|
|
32
|
+
if damagePerIntelligence ~= 0 then
|
|
33
|
+
damage = damage + damagePerIntelligence * caster.intelligence
|
|
34
|
+
end
|
|
35
|
+
return damage
|
|
36
|
+
end
|
|
12
37
|
____exports.DamageSelfAbilityBehavior = __TS__Class()
|
|
13
38
|
local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
|
|
14
39
|
DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
|
|
15
|
-
__TS__ClassExtends(DamageSelfAbilityBehavior,
|
|
16
|
-
function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage)
|
|
17
|
-
|
|
18
|
-
self.damage = damage
|
|
40
|
+
__TS__ClassExtends(DamageSelfAbilityBehavior, DamageAbilityBehavior)
|
|
41
|
+
function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
42
|
+
DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
19
43
|
end
|
|
20
44
|
function DamageSelfAbilityBehavior.prototype.onImpact(self, caster)
|
|
45
|
+
local parameters = self.parameters
|
|
21
46
|
caster:damageTarget(
|
|
22
47
|
caster,
|
|
23
|
-
self:
|
|
48
|
+
self:calculateDamage(caster),
|
|
49
|
+
nil,
|
|
50
|
+
nil,
|
|
51
|
+
parameters and parameters.attackType,
|
|
52
|
+
parameters and parameters.damageType,
|
|
53
|
+
parameters and parameters.weaponType
|
|
24
54
|
)
|
|
25
55
|
end
|
|
26
56
|
____exports.DamageTargetAbilityBehavior = __TS__Class()
|
|
27
57
|
local DamageTargetAbilityBehavior = ____exports.DamageTargetAbilityBehavior
|
|
28
58
|
DamageTargetAbilityBehavior.name = "DamageTargetAbilityBehavior"
|
|
29
|
-
__TS__ClassExtends(DamageTargetAbilityBehavior,
|
|
30
|
-
function DamageTargetAbilityBehavior.prototype.____constructor(self, ability, damage)
|
|
31
|
-
|
|
32
|
-
self.damage = damage
|
|
59
|
+
__TS__ClassExtends(DamageTargetAbilityBehavior, DamageAbilityBehavior)
|
|
60
|
+
function DamageTargetAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
61
|
+
DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
33
62
|
end
|
|
34
63
|
function DamageTargetAbilityBehavior.prototype.onWidgetTargetImpact(self, caster, target)
|
|
64
|
+
local parameters = self.parameters
|
|
35
65
|
caster:damageTarget(
|
|
36
66
|
target,
|
|
37
|
-
self:
|
|
67
|
+
self:calculateDamage(caster),
|
|
68
|
+
nil,
|
|
69
|
+
nil,
|
|
70
|
+
parameters and parameters.attackType,
|
|
71
|
+
parameters and parameters.damageType,
|
|
72
|
+
parameters and parameters.weaponType
|
|
38
73
|
)
|
|
39
74
|
end
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
AbilityBehavior.prototype.____constructor(self, ability)
|
|
46
|
-
self.damage = damage
|
|
47
|
-
self.maximumDamage = maximumDamage
|
|
75
|
+
local DamageAreaAbilityBehavior = __TS__Class()
|
|
76
|
+
DamageAreaAbilityBehavior.name = "DamageAreaAbilityBehavior"
|
|
77
|
+
__TS__ClassExtends(DamageAreaAbilityBehavior, DamageAbilityBehavior)
|
|
78
|
+
function DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
79
|
+
DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
48
80
|
end
|
|
49
|
-
function
|
|
50
|
-
|
|
51
|
-
end
|
|
52
|
-
function DamageTargetAreaAbilityBehavior.prototype.onWidgetTargetImpact(self, caster, target)
|
|
53
|
-
self:damageArea(caster, target.x, target.y)
|
|
54
|
-
end
|
|
55
|
-
function DamageTargetAreaAbilityBehavior.prototype.onPointTargetImpact(self, caster, x, y)
|
|
56
|
-
self:damageArea(caster, x, y)
|
|
57
|
-
end
|
|
58
|
-
function DamageTargetAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
|
|
81
|
+
function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
|
|
82
|
+
local parameters = self.parameters
|
|
59
83
|
local targets = Unit.getAllowedTargetsInCollisionRange(
|
|
60
84
|
caster,
|
|
61
85
|
self:resolveCurrentAbilityDependentValue(ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
|
|
@@ -63,13 +87,47 @@ function DamageTargetAreaAbilityBehavior.prototype.damageArea(self, caster, x, y
|
|
|
63
87
|
y,
|
|
64
88
|
self:resolveCurrentAbilityDependentValue(AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
|
|
65
89
|
)
|
|
66
|
-
local damage = self:
|
|
67
|
-
local maximumDamage = self:resolveCurrentAbilityDependentValue(
|
|
90
|
+
local damage = self:calculateDamage(caster)
|
|
91
|
+
local maximumDamage = self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0)
|
|
68
92
|
if maximumDamage ~= 0 and damage > maximumDamage then
|
|
69
93
|
damage = maximumDamage / #targets
|
|
70
94
|
end
|
|
71
95
|
for ____, target in ipairs(targets) do
|
|
72
|
-
caster:damageTarget(
|
|
96
|
+
caster:damageTarget(
|
|
97
|
+
target,
|
|
98
|
+
damage,
|
|
99
|
+
nil,
|
|
100
|
+
nil,
|
|
101
|
+
parameters and parameters.attackType,
|
|
102
|
+
parameters and parameters.damageType,
|
|
103
|
+
parameters and parameters.weaponType
|
|
104
|
+
)
|
|
73
105
|
end
|
|
74
106
|
end
|
|
107
|
+
____exports.DamageSelfAreaAbilityBehavior = __TS__Class()
|
|
108
|
+
local DamageSelfAreaAbilityBehavior = ____exports.DamageSelfAreaAbilityBehavior
|
|
109
|
+
DamageSelfAreaAbilityBehavior.name = "DamageSelfAreaAbilityBehavior"
|
|
110
|
+
__TS__ClassExtends(DamageSelfAreaAbilityBehavior, DamageAreaAbilityBehavior)
|
|
111
|
+
function DamageSelfAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
112
|
+
DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
113
|
+
end
|
|
114
|
+
function DamageSelfAreaAbilityBehavior.prototype.onImpact(self, caster)
|
|
115
|
+
self:damageArea(caster, caster.x, caster.y)
|
|
116
|
+
end
|
|
117
|
+
____exports.DamageTargetAreaAbilityBehavior = __TS__Class()
|
|
118
|
+
local DamageTargetAreaAbilityBehavior = ____exports.DamageTargetAreaAbilityBehavior
|
|
119
|
+
DamageTargetAreaAbilityBehavior.name = "DamageTargetAreaAbilityBehavior"
|
|
120
|
+
__TS__ClassExtends(DamageTargetAreaAbilityBehavior, DamageAreaAbilityBehavior)
|
|
121
|
+
function DamageTargetAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
122
|
+
DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
123
|
+
end
|
|
124
|
+
function DamageTargetAreaAbilityBehavior.prototype.onNoTargetImpact(self, caster)
|
|
125
|
+
self:damageArea(caster, caster.x, caster.y)
|
|
126
|
+
end
|
|
127
|
+
function DamageTargetAreaAbilityBehavior.prototype.onWidgetTargetImpact(self, caster, target)
|
|
128
|
+
self:damageArea(caster, target.x, target.y)
|
|
129
|
+
end
|
|
130
|
+
function DamageTargetAreaAbilityBehavior.prototype.onPointTargetImpact(self, caster, x, y)
|
|
131
|
+
self:damageArea(caster, x, y)
|
|
132
|
+
end
|
|
75
133
|
return ____exports
|