warscript 0.0.1-dev.b026cc2 → 0.0.1-dev.b34a02b
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/frame.d.ts +3 -0
- package/core/types/frame.lua +30 -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/unit.d.ts +5 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +32 -11
- package/engine/buff.lua +142 -61
- package/engine/internal/ability.d.ts +1 -11
- package/engine/internal/ability.lua +2 -78
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/unit/bonus.d.ts +4 -2
- package/engine/internal/unit/bonus.lua +6 -1
- package/engine/internal/unit/item.d.ts +23 -0
- package/engine/internal/unit/item.lua +74 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +15 -10
- package/engine/internal/unit.lua +105 -60
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +81 -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 +1 -0
- package/engine/unit.lua +1 -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 +1 -1
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/utility/linked-set.d.ts +11 -2
- package/utility/linked-set.lua +5 -2
- package/utility/types.d.ts +1 -0
package/core/types/frame.d.ts
CHANGED
|
@@ -25,11 +25,13 @@ 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
|
+
static get uiScale(): number;
|
|
33
35
|
static get leftBorder(): Frame;
|
|
34
36
|
static get rightBorder(): Frame;
|
|
35
37
|
static get minX(): number;
|
|
@@ -106,6 +108,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
106
108
|
enable(): void;
|
|
107
109
|
addText(text: string): void;
|
|
108
110
|
clearAllPoints(): void;
|
|
111
|
+
get children(): Frame[];
|
|
109
112
|
getChild(index: number): Frame;
|
|
110
113
|
getChildrenCount(): number;
|
|
111
114
|
setSize(width: number, height: number): void;
|
package/core/types/frame.lua
CHANGED
|
@@ -269,7 +269,16 @@ function Frame.createSimple(self, name, parent, createContext)
|
|
|
269
269
|
))
|
|
270
270
|
end
|
|
271
271
|
function Frame.create(self, name, parent, priority, createContext)
|
|
272
|
-
|
|
272
|
+
if parent == ____exports.Frame.CONSOLE_UI_BACKDROP then
|
|
273
|
+
local helper = ____exports.Frame.CONSOLE_UI_BACKDROP_UI_SCALE_HELPER_CHILD.handle
|
|
274
|
+
BlzFrameSetScale(helper, 1)
|
|
275
|
+
local frame = BlzCreateFrame(name, helper, priority or 0, createContext or 0)
|
|
276
|
+
BlzFrameSetScale(helper, ____exports.Frame.uiScale)
|
|
277
|
+
BlzFrameSetParent(frame, ____exports.Frame.CONSOLE_UI_BACKDROP.handle)
|
|
278
|
+
return self:of(frame)
|
|
279
|
+
else
|
|
280
|
+
return self:of(BlzCreateFrame(name, parent.handle, priority or 0, createContext or 0))
|
|
281
|
+
end
|
|
273
282
|
end
|
|
274
283
|
function Frame.createByType(self, typeName, name, parent, inherits, createContext)
|
|
275
284
|
return self:of(BlzCreateFrameByType(
|
|
@@ -295,11 +304,19 @@ end
|
|
|
295
304
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
296
305
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
|
297
306
|
Frame.CONSOLE_UI_BACKDROP = ____exports.Frame:byName("ConsoleUIBackdrop")
|
|
307
|
+
Frame.CONSOLE_UI_BACKDROP_UI_SCALE_HELPER_CHILD = ____exports.Frame:createByType("FRAME", "ConsoleUIBackdropUIScaleHelperChild", ____exports.Frame.CONSOLE_UI_BACKDROP)
|
|
298
308
|
Frame.CONSOLE_TOP_BAR = ____exports.Frame:byName("ConsoleTopBar")
|
|
299
309
|
Frame.CONSOLE_BOTTOM_BAR = ____exports.Frame:byName("ConsoleBottomBar")
|
|
300
310
|
Frame.WORLD = ____exports.Frame:byOrigin(ORIGIN_FRAME_WORLD_FRAME)
|
|
301
311
|
Frame.CHAT = ____exports.Frame:byOrigin(ORIGIN_FRAME_CHAT_MSG)
|
|
302
312
|
Frame.TIME_OF_DAY_CLOCK = ____exports.Frame.GAME_UI:getChild(5):getChild(0)
|
|
313
|
+
__TS__ObjectDefineProperty(
|
|
314
|
+
Frame,
|
|
315
|
+
"uiScale",
|
|
316
|
+
{get = function(self)
|
|
317
|
+
return ____exports.Frame.CONSOLE_BOTTOM_BAR.width / 0.8
|
|
318
|
+
end}
|
|
319
|
+
)
|
|
303
320
|
__TS__ObjectDefineProperty(
|
|
304
321
|
Frame,
|
|
305
322
|
"leftBorder",
|
|
@@ -703,6 +720,18 @@ __TS__SetDescriptor(
|
|
|
703
720
|
end},
|
|
704
721
|
true
|
|
705
722
|
)
|
|
723
|
+
__TS__SetDescriptor(
|
|
724
|
+
Frame.prototype,
|
|
725
|
+
"children",
|
|
726
|
+
{get = function(self)
|
|
727
|
+
local children = {}
|
|
728
|
+
for i = 0, self:getChildrenCount() - 1 do
|
|
729
|
+
children[i + 1] = self:getChild(i)
|
|
730
|
+
end
|
|
731
|
+
return children
|
|
732
|
+
end},
|
|
733
|
+
true
|
|
734
|
+
)
|
|
706
735
|
__TS__ObjectDefineProperty(
|
|
707
736
|
Frame,
|
|
708
737
|
"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,6 +4,7 @@ import { Ability } from "../internal/ability";
|
|
|
4
4
|
import { DamageEvent, DamagingEvent, Unit } from "../internal/unit";
|
|
5
5
|
import "../internal/unit+ability";
|
|
6
6
|
import "../internal/unit-missile-launch";
|
|
7
|
+
import { Item } from "../internal/item";
|
|
7
8
|
export type UnitBehaviorConstructor<Args extends any[]> = new (unit: Unit, ...args: Args) => UnitBehavior;
|
|
8
9
|
export declare abstract class UnitBehavior<PeriodicActionParameters extends any[] = any[]> extends Behavior<Unit, PeriodicActionParameters> {
|
|
9
10
|
constructor(unit: Unit);
|
|
@@ -16,6 +17,10 @@ export declare abstract class UnitBehavior<PeriodicActionParameters extends any[
|
|
|
16
17
|
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
17
18
|
onAbilityGained(ability: Ability): void;
|
|
18
19
|
onAbilityLost(ability: Ability): void;
|
|
20
|
+
onItemDropped(item: Item): void;
|
|
21
|
+
onItemPickedUp(item: Item): void;
|
|
22
|
+
onItemUsed(item: Item): void;
|
|
23
|
+
onItemStacked(item: Item): void;
|
|
19
24
|
onKill(target: Unit): void;
|
|
20
25
|
onDeath(source: Unit | undefined): void;
|
|
21
26
|
}
|
|
@@ -32,6 +32,14 @@ function UnitBehavior.prototype.onAbilityGained(self, ability)
|
|
|
32
32
|
end
|
|
33
33
|
function UnitBehavior.prototype.onAbilityLost(self, ability)
|
|
34
34
|
end
|
|
35
|
+
function UnitBehavior.prototype.onItemDropped(self, item)
|
|
36
|
+
end
|
|
37
|
+
function UnitBehavior.prototype.onItemPickedUp(self, item)
|
|
38
|
+
end
|
|
39
|
+
function UnitBehavior.prototype.onItemUsed(self, item)
|
|
40
|
+
end
|
|
41
|
+
function UnitBehavior.prototype.onItemStacked(self, item)
|
|
42
|
+
end
|
|
35
43
|
function UnitBehavior.prototype.onKill(self, target)
|
|
36
44
|
end
|
|
37
45
|
function UnitBehavior.prototype.onDeath(self, source)
|
|
@@ -75,6 +83,18 @@ __TS__SetDescriptor(
|
|
|
75
83
|
end
|
|
76
84
|
____exports.UnitBehavior:forAll(target, "onDeath", source)
|
|
77
85
|
end)
|
|
86
|
+
Unit.itemDroppedEvent:addListener(function(unit, item)
|
|
87
|
+
____exports.UnitBehavior:forAll(unit, "onItemDropped", item)
|
|
88
|
+
end)
|
|
89
|
+
Unit.itemPickedUpEvent:addListener(function(unit, item)
|
|
90
|
+
____exports.UnitBehavior:forAll(unit, "onItemPickedUp", item)
|
|
91
|
+
end)
|
|
92
|
+
Unit.itemUsedEvent:addListener(function(unit, item)
|
|
93
|
+
____exports.UnitBehavior:forAll(unit, "onItemUsed", item)
|
|
94
|
+
end)
|
|
95
|
+
Unit.itemStackedEvent:addListener(function(unit, item)
|
|
96
|
+
____exports.UnitBehavior:forAll(unit, "onItemStacked", item)
|
|
97
|
+
end)
|
|
78
98
|
end)(UnitBehavior)
|
|
79
99
|
Unit.destroyEvent:addListener(function(unit)
|
|
80
100
|
____exports.UnitBehavior:forAll(unit, "destroy")
|
package/engine/buff.d.ts
CHANGED
|
@@ -5,16 +5,19 @@ import { Ability } from "./internal/ability";
|
|
|
5
5
|
import { AbilityTypeId } from "./object-data/entry/ability-type";
|
|
6
6
|
import { BuffPolarity } from "./object-data/auxiliary/buff-polarity";
|
|
7
7
|
import { BuffResistanceType } from "./object-data/auxiliary/buff-resistance-type";
|
|
8
|
-
import { AbilityBooleanField, AbilityBooleanLevelField, AbilityCombatClassificationsLevelField, AbilityDependentValue, AbilityIntegerField, AbilityIntegerLevelField, AbilityNumberField, AbilityNumberLevelField } from "./object-field/ability";
|
|
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
|
-
import { IsExactlyAny,
|
|
10
|
+
import { IsExactlyAny, Prohibit, ReadonlyNonEmptyArray } from "../utility/types";
|
|
11
11
|
import { UnitBehavior } from "./behaviour/unit";
|
|
12
12
|
import type { Widget } from "../core/types/widget";
|
|
13
13
|
import { Destructor } from "../destroyable";
|
|
14
14
|
export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
|
|
15
|
+
type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
|
|
15
16
|
type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
|
|
16
17
|
type IntegerParameterValueType = number | AbilityIntegerField | AbilityIntegerLevelField;
|
|
17
18
|
type BooleanParameterValueType = boolean | AbilityBooleanField | AbilityBooleanLevelField;
|
|
19
|
+
export type BuffPolarityParameterType = EnumParameterValueType<BuffPolarity>;
|
|
20
|
+
export type BuffResistanceTypeParameterType = EnumParameterValueType<BuffResistanceType>;
|
|
18
21
|
export declare class BuffUniqueGroup {
|
|
19
22
|
}
|
|
20
23
|
export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
@@ -51,6 +54,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
51
54
|
armorIncreaseFactor?: NumberParameterValueType;
|
|
52
55
|
attackSpeedIncreaseFactor?: NumberParameterValueType;
|
|
53
56
|
movementSpeedIncreaseFactor?: NumberParameterValueType;
|
|
57
|
+
damageFactor?: NumberParameterValueType;
|
|
54
58
|
receivedDamageFactor?: NumberParameterValueType;
|
|
55
59
|
receivedMagicDamageFactor?: NumberParameterValueType;
|
|
56
60
|
durationIncreaseOnAutoAttack?: NumberParameterValueType;
|
|
@@ -64,6 +68,8 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
64
68
|
disablesAutoAttack?: BooleanParameterValueType;
|
|
65
69
|
destroysOnDamage?: BooleanParameterValueType;
|
|
66
70
|
maximumAutoAttackCount?: IntegerParameterValueType;
|
|
71
|
+
maximumDamageDealtEventCount?: IntegerParameterValueType;
|
|
72
|
+
maximumDamageReceivedEventCount?: IntegerParameterValueType;
|
|
67
73
|
damageOnExpiration?: NumberParameterValueType;
|
|
68
74
|
healingOnExpiration?: NumberParameterValueType;
|
|
69
75
|
killsOnExpiration?: BooleanParameterValueType;
|
|
@@ -101,12 +107,16 @@ declare const enum BuffPropertyKey {
|
|
|
101
107
|
SMALL_DAMAGE_UPON_DEATH_RANGE = 127,
|
|
102
108
|
AUTO_ATTACK_COUNT = 128,
|
|
103
109
|
MAXIMUM_AUTO_ATTACK_COUNT = 129,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
+
DAMAGE_DEALT_EVENT_COUNT = 130,
|
|
111
|
+
MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 131,
|
|
112
|
+
DAMAGE_RECEIVED_EVENT_COUNT = 132,
|
|
113
|
+
MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 133,
|
|
114
|
+
STUNS = 134,
|
|
115
|
+
IGNORES_STUN_IMMUNITY = 135,
|
|
116
|
+
DISABLES_AUTO_ATTACK = 136,
|
|
117
|
+
PROVIDES_INVULNERABILITY = 137,
|
|
118
|
+
KILLS_ON_EXPIRATION = 138,
|
|
119
|
+
EXPLODES_ON_EXPIRATION = 139
|
|
110
120
|
}
|
|
111
121
|
export declare const enum BuffTypeIdSelectionPolicy {
|
|
112
122
|
LEAST_DURATION = 0
|
|
@@ -114,11 +124,11 @@ export declare const enum BuffTypeIdSelectionPolicy {
|
|
|
114
124
|
export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
|
|
115
125
|
export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
|
|
116
126
|
...typeId: [ApplicableBuffTypeId] | [
|
|
117
|
-
typeIds:
|
|
127
|
+
typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
|
|
118
128
|
typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
|
|
119
129
|
],
|
|
120
|
-
polarity:
|
|
121
|
-
resistanceType:
|
|
130
|
+
polarity: BuffPolarityParameterType,
|
|
131
|
+
resistanceType: BuffResistanceTypeParameterType,
|
|
122
132
|
...abilityOrParameters: [
|
|
123
133
|
ability: Ability,
|
|
124
134
|
parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
|
|
@@ -157,6 +167,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
157
167
|
private [BuffPropertyKey.SMALL_DAMAGE_UPON_DEATH_RANGE]?;
|
|
158
168
|
private [BuffPropertyKey.MAXIMUM_AUTO_ATTACK_COUNT]?;
|
|
159
169
|
private [BuffPropertyKey.AUTO_ATTACK_COUNT]?;
|
|
170
|
+
private [BuffPropertyKey.MAXIMUM_DAMAGE_DEALT_EVENT_COUNT]?;
|
|
171
|
+
private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
|
|
172
|
+
private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
|
|
173
|
+
private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
|
|
160
174
|
private [BuffPropertyKey.STUNS]?;
|
|
161
175
|
private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
|
|
162
176
|
private [BuffPropertyKey.DISABLES_AUTO_ATTACK]?;
|
|
@@ -203,6 +217,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
203
217
|
set damageOnExpiration(damageOnExpiration: number);
|
|
204
218
|
get healingOnExpiration(): number;
|
|
205
219
|
set healingOnExpiration(healingOnExpiration: number);
|
|
220
|
+
get damageFactor(): number;
|
|
221
|
+
set damageFactor(damageFactor: number);
|
|
206
222
|
get receivedDamageFactor(): number;
|
|
207
223
|
set receivedDamageFactor(receivedDamageFactor: number);
|
|
208
224
|
get armorIncrease(): number;
|
|
@@ -219,6 +235,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
219
235
|
set killsOnExpiration(killsOnExpiration: boolean);
|
|
220
236
|
get explodesOnExpiration(): boolean;
|
|
221
237
|
set explodesOnExpiration(killsOnExpiration: boolean);
|
|
238
|
+
get maximumDamageDealtEventCount(): number;
|
|
239
|
+
set maximumDamageDealtEventCount(maximumDamageDealtEventCount: number);
|
|
240
|
+
get maximumDamageReceivedEventCount(): number;
|
|
241
|
+
set maximumDamageReceivedEventCount(maximumDamageReceivedEventCount: number);
|
|
222
242
|
get maximumAutoAttackCount(): number;
|
|
223
243
|
set maximumAutoAttackCount(maximumAutoAttackCount: number);
|
|
224
244
|
get durationIncreaseOnAutoAttack(): number;
|
|
@@ -238,5 +258,6 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
238
258
|
onExpiration(): void;
|
|
239
259
|
onDeath(source: Unit | undefined): void;
|
|
240
260
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|
|
261
|
+
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
241
262
|
}
|
|
242
263
|
export {};
|