warscript 0.0.1-dev.ea69747 → 0.0.1-dev.eb24bc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +17 -0
- package/attributes.lua +23 -0
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +8 -1
- package/core/types/frame.lua +93 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +840 -786
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +32 -9
- package/engine/behaviour/ability/damage.d.ts +39 -11
- package/engine/behaviour/ability/damage.lua +83 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +35 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- 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/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +27 -4
- package/engine/behaviour/ability.lua +152 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
- package/engine/behaviour/unit.d.ts +10 -2
- package/engine/behaviour/unit.lua +27 -0
- package/engine/buff.d.ts +103 -41
- package/engine/buff.lua +465 -212
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +17 -14
- package/engine/internal/ability.lua +80 -76
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +4 -3
- package/engine/internal/item.lua +56 -25
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +3 -1
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -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/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/unit/ability.d.ts +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/bonus.d.ts +11 -8
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -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+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +25 -6
- package/engine/internal/unit.d.ts +76 -18
- package/engine/internal/unit.lua +466 -167
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +4 -4
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +20 -18
- package/engine/object-data/entry/ability-type.lua +90 -33
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +39 -102
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +6 -13
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -2
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +15 -2
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -2
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +50 -3
- package/engine/object-data/entry/unit-type.lua +452 -61
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +33 -8
- package/engine/object-field/ability.lua +60 -1
- package/engine/object-field/unit.d.ts +46 -2
- package/engine/object-field/unit.lua +173 -4
- package/engine/object-field.d.ts +15 -5
- package/engine/object-field.lua +196 -84
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +42 -1
- package/engine/standard/entries/unit-type.lua +42 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +13 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/exception.d.ts +2 -0
- package/exception.lua +4 -0
- package/global/vec2.lua +1 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- 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/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +2 -3
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/package.json +13 -14
- 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/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +13 -6
- package/utility/arrays.lua +41 -4
- package/utility/bit-set.d.ts +0 -2
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +32 -9
- package/utility/linked-set.lua +24 -2
- package/utility/lua-maps.d.ts +4 -2
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +2 -2
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -2
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
package/engine/ability.d.ts
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
import { AbilityTypeId } from "./object-data/entry/ability-type";
|
|
3
3
|
import { UnitAbility } from "./internal/ability";
|
|
4
4
|
import { Player } from "../core/types/player";
|
|
5
|
-
export declare const castAbility: (owner: Player, abilityTypeId: AbilityTypeId, ...args: [
|
|
5
|
+
export declare const castAbility: (owner: Player, abilityTypeId: AbilityTypeId, ...args: [...levelOrAbilityConsumer: [number] | [(ability: UnitAbility) => void] | [], x: number, y: number]) => void;
|
package/engine/behavior.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { AbstractDestroyable, Destructor } from "../destroyable";
|
|
3
|
-
export type BehaviorConstructor<T extends Behavior<
|
|
3
|
+
export type BehaviorConstructor<T extends Behavior<AnyNotNil>, Parameters extends any[] = any[]> = OmitConstructor<typeof Behavior<any>> & (abstract new (...parameters: Parameters) => T);
|
|
4
4
|
declare const enum BehaviorPropertyKey {
|
|
5
5
|
PREVIOUS_BEHAVIOR = 0,
|
|
6
6
|
NEXT_BEHAVIOR = 1,
|
|
7
7
|
TIMER = 2
|
|
8
8
|
}
|
|
9
|
-
export declare abstract class Behavior<T, PeriodicActionParameters extends any[] = any[]> extends AbstractDestroyable {
|
|
9
|
+
export declare abstract class Behavior<T extends AnyNotNil, PeriodicActionParameters extends any[] = any[]> extends AbstractDestroyable {
|
|
10
10
|
protected readonly object: T;
|
|
11
11
|
private [BehaviorPropertyKey.PREVIOUS_BEHAVIOR]?;
|
|
12
12
|
private [BehaviorPropertyKey.NEXT_BEHAVIOR]?;
|
|
@@ -16,13 +16,13 @@ export declare abstract class Behavior<T, PeriodicActionParameters extends any[]
|
|
|
16
16
|
protected onPeriod(...parameters: PeriodicActionParameters): void;
|
|
17
17
|
protected startPeriodicAction(interval: number, ...parameters: PeriodicActionParameters): void;
|
|
18
18
|
protected stopPeriodicAction(): void;
|
|
19
|
-
static count<T extends Behavior<
|
|
20
|
-
static getFirst<T extends Behavior<
|
|
21
|
-
static getLast<T extends Behavior<
|
|
22
|
-
static getAll<T extends Behavior<
|
|
23
|
-
static forFirst<T extends Behavior<
|
|
24
|
-
static forFirst<T extends Behavior<
|
|
25
|
-
static forAll<T extends Behavior<
|
|
26
|
-
static forAll<T extends Behavior<
|
|
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[], 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
|
+
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[], 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
|
+
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
|
+
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
|
+
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;
|
|
26
|
+
static forAll<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, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never): number;
|
|
27
27
|
}
|
|
28
28
|
export {};
|
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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityBehavior } from "../ability";
|
|
3
|
+
import { Destructor } from "../../../destroyable";
|
|
4
|
+
export declare class AlwaysEnabledAbilityBehavior extends AbilityBehavior {
|
|
5
|
+
protected onCreate(): void;
|
|
6
|
+
protected onDestroy(): Destructor;
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____ability = require("engine.behaviour.ability")
|
|
7
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
8
|
+
local ____ability = require("engine.internal.ability")
|
|
9
|
+
local UnitAbility = ____ability.UnitAbility
|
|
10
|
+
local ____ability_2Ddisable_2Dcounter = require("engine.internal.misc.ability-disable-counter")
|
|
11
|
+
local increaseAbilityDisableCounter = ____ability_2Ddisable_2Dcounter.increaseAbilityDisableCounter
|
|
12
|
+
____exports.AlwaysEnabledAbilityBehavior = __TS__Class()
|
|
13
|
+
local AlwaysEnabledAbilityBehavior = ____exports.AlwaysEnabledAbilityBehavior
|
|
14
|
+
AlwaysEnabledAbilityBehavior.name = "AlwaysEnabledAbilityBehavior"
|
|
15
|
+
__TS__ClassExtends(AlwaysEnabledAbilityBehavior, AbilityBehavior)
|
|
16
|
+
function AlwaysEnabledAbilityBehavior.prototype.onCreate(self)
|
|
17
|
+
local ability = self.ability
|
|
18
|
+
if not __TS__InstanceOf(ability, UnitAbility) then
|
|
19
|
+
return
|
|
20
|
+
end
|
|
21
|
+
increaseAbilityDisableCounter(ability.owner.handle, ability.typeId, -10)
|
|
22
|
+
end
|
|
23
|
+
function AlwaysEnabledAbilityBehavior.prototype.onDestroy(self)
|
|
24
|
+
local ability = self.ability
|
|
25
|
+
if not __TS__InstanceOf(ability, UnitAbility) then
|
|
26
|
+
return AbilityBehavior.prototype.onDestroy(self)
|
|
27
|
+
end
|
|
28
|
+
increaseAbilityDisableCounter(ability.owner.handle, ability.typeId, 10)
|
|
29
|
+
return AbilityBehavior.prototype.onDestroy(self)
|
|
30
|
+
end
|
|
31
|
+
return ____exports
|
|
@@ -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
|
}
|
|
@@ -35,4 +33,9 @@ export declare class ApplyBuffTargetAreaAbilityBehavior<T extends BuffConstructo
|
|
|
35
33
|
onPointTargetImpact(caster: Unit, x: number, y: number): void;
|
|
36
34
|
onWidgetTargetImpact(caster: Unit, target: Widget): void;
|
|
37
35
|
}
|
|
36
|
+
export declare class ApplyBuffChannelingTargetAbilityBehavior<T extends BuffConstructor = typeof Buff> extends ApplyBuffAbilityBehavior<T> {
|
|
37
|
+
private buff?;
|
|
38
|
+
onUnitTargetChannelingStart(caster: Unit, target: Unit): void;
|
|
39
|
+
onStop(): void;
|
|
40
|
+
}
|
|
38
41
|
export {};
|
|
@@ -123,4 +123,36 @@ function ApplyBuffTargetAreaAbilityBehavior.prototype.onWidgetTargetImpact(self,
|
|
|
123
123
|
self.applyBuff(unit)
|
|
124
124
|
end
|
|
125
125
|
end
|
|
126
|
+
local behaviorByBuff = {}
|
|
127
|
+
____exports.ApplyBuffChannelingTargetAbilityBehavior = __TS__Class()
|
|
128
|
+
local ApplyBuffChannelingTargetAbilityBehavior = ____exports.ApplyBuffChannelingTargetAbilityBehavior
|
|
129
|
+
ApplyBuffChannelingTargetAbilityBehavior.name = "ApplyBuffChannelingTargetAbilityBehavior"
|
|
130
|
+
__TS__ClassExtends(ApplyBuffChannelingTargetAbilityBehavior, ____exports.ApplyBuffAbilityBehavior)
|
|
131
|
+
function ApplyBuffChannelingTargetAbilityBehavior.prototype.onUnitTargetChannelingStart(self, caster, target)
|
|
132
|
+
local previousBuff = self.buff
|
|
133
|
+
if previousBuff ~= nil then
|
|
134
|
+
behaviorByBuff[previousBuff] = nil
|
|
135
|
+
previousBuff:destroy()
|
|
136
|
+
end
|
|
137
|
+
local buff = self.applyBuff(target)
|
|
138
|
+
if buff ~= nil then
|
|
139
|
+
behaviorByBuff[buff] = self
|
|
140
|
+
end
|
|
141
|
+
self.buff = buff
|
|
142
|
+
end
|
|
143
|
+
function ApplyBuffChannelingTargetAbilityBehavior.prototype.onStop(self)
|
|
144
|
+
local buff = self.buff
|
|
145
|
+
if buff ~= nil then
|
|
146
|
+
behaviorByBuff[buff] = nil
|
|
147
|
+
buff:destroy()
|
|
148
|
+
self.buff = nil
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
Buff.destroyEvent:addListener(function(buff)
|
|
152
|
+
local behavior = behaviorByBuff[buff]
|
|
153
|
+
if behavior ~= nil then
|
|
154
|
+
behaviorByBuff[buff] = nil
|
|
155
|
+
behavior.ability:interruptCast()
|
|
156
|
+
end
|
|
157
|
+
end)
|
|
126
158
|
return ____exports
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { AbilityBehavior } from "../ability";
|
|
3
3
|
import { Ability } from "../../internal/ability";
|
|
4
|
-
import {
|
|
4
|
+
import { UnitBehavior } from "../unit";
|
|
5
5
|
import { Unit } from "../../internal/unit";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import { MutableKeys } from "../../../utility/types";
|
|
7
|
+
import { AbilityDependentValue } from "../../object-field/ability";
|
|
8
|
+
type UnitBehaviorParameters<T extends UnitBehavior> = Partial<{
|
|
9
|
+
[K in MutableKeys<T> & KeysOfType<T, boolean | number | string>]: T[K] extends boolean | number | string ? AbilityDependentValue<T[K]> : never;
|
|
10
|
+
}>;
|
|
11
|
+
export declare class ApplyUnitBehaviorAbilityBehavior<T extends UnitBehavior> extends AbilityBehavior {
|
|
12
|
+
private readonly unitBehaviorConstructor;
|
|
13
|
+
private readonly parameters?;
|
|
14
|
+
private readonly keys?;
|
|
8
15
|
private unitBehavior?;
|
|
9
|
-
constructor(ability: Ability, unitBehaviorConstructor:
|
|
16
|
+
constructor(ability: Ability, unitBehaviorConstructor: new (unit: Unit) => T, parameters?: UnitBehaviorParameters<T> | undefined);
|
|
17
|
+
update(): void;
|
|
10
18
|
onUnitGainAbility(unit: Unit): void;
|
|
11
19
|
onUnitLoseAbility(): void;
|
|
12
20
|
}
|
|
21
|
+
export {};
|
|
@@ -1,23 +1,38 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
|
|
5
|
+
local __TS__ArraySort = ____lualib.__TS__ArraySort
|
|
4
6
|
local __TS__New = ____lualib.__TS__New
|
|
5
7
|
local ____exports = {}
|
|
6
8
|
local ____ability = require("engine.behaviour.ability")
|
|
7
9
|
local AbilityBehavior = ____ability.AbilityBehavior
|
|
10
|
+
local ____ability = require("engine.object-field.ability")
|
|
11
|
+
local AbilityField = ____ability.AbilityField
|
|
12
|
+
local AbilityLevelField = ____ability.AbilityLevelField
|
|
8
13
|
____exports.ApplyUnitBehaviorAbilityBehavior = __TS__Class()
|
|
9
14
|
local ApplyUnitBehaviorAbilityBehavior = ____exports.ApplyUnitBehaviorAbilityBehavior
|
|
10
15
|
ApplyUnitBehaviorAbilityBehavior.name = "ApplyUnitBehaviorAbilityBehavior"
|
|
11
16
|
__TS__ClassExtends(ApplyUnitBehaviorAbilityBehavior, AbilityBehavior)
|
|
12
|
-
function ApplyUnitBehaviorAbilityBehavior.prototype.____constructor(self, ability, unitBehaviorConstructor,
|
|
13
|
-
local args = {...}
|
|
17
|
+
function ApplyUnitBehaviorAbilityBehavior.prototype.____constructor(self, ability, unitBehaviorConstructor, parameters)
|
|
14
18
|
AbilityBehavior.prototype.____constructor(self, ability)
|
|
15
|
-
self.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
self.unitBehaviorConstructor = unitBehaviorConstructor
|
|
20
|
+
self.parameters = parameters
|
|
21
|
+
if parameters ~= nil then
|
|
22
|
+
self.keys = __TS__ArraySort(__TS__ObjectKeys(parameters))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
function ApplyUnitBehaviorAbilityBehavior.prototype.update(self)
|
|
26
|
+
local unitBehavior = self.unitBehavior
|
|
27
|
+
local parameters = self.parameters
|
|
28
|
+
local keys = self.keys
|
|
29
|
+
if unitBehavior ~= nil and parameters ~= nil and keys ~= nil then
|
|
30
|
+
for ____, key in ipairs(keys) do
|
|
31
|
+
local value = parameters[key]
|
|
32
|
+
if value ~= nil then
|
|
33
|
+
unitBehavior[key] = self:resolveCurrentAbilityDependentValue(value)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
21
36
|
end
|
|
22
37
|
end
|
|
23
38
|
function ApplyUnitBehaviorAbilityBehavior.prototype.onUnitGainAbility(self, unit)
|
|
@@ -25,7 +40,9 @@ function ApplyUnitBehaviorAbilityBehavior.prototype.onUnitGainAbility(self, unit
|
|
|
25
40
|
if ____opt_0 ~= nil then
|
|
26
41
|
____opt_0:destroy()
|
|
27
42
|
end
|
|
28
|
-
self.unitBehavior = self
|
|
43
|
+
self.unitBehavior = __TS__New(self.unitBehaviorConstructor, unit)
|
|
44
|
+
self.unitBehavior.sourceAbilityBehavior = self
|
|
45
|
+
self:update()
|
|
29
46
|
end
|
|
30
47
|
function ApplyUnitBehaviorAbilityBehavior.prototype.onUnitLoseAbility(self)
|
|
31
48
|
local ____opt_2 = self.unitBehavior
|
|
@@ -33,4 +50,10 @@ function ApplyUnitBehaviorAbilityBehavior.prototype.onUnitLoseAbility(self)
|
|
|
33
50
|
____opt_2:destroy()
|
|
34
51
|
end
|
|
35
52
|
end
|
|
53
|
+
AbilityField.valueChangeEvent:addListener(function(ability)
|
|
54
|
+
____exports.ApplyUnitBehaviorAbilityBehavior:forAll(ability, "update")
|
|
55
|
+
end)
|
|
56
|
+
AbilityLevelField.valueChangeEvent:addListener(function(ability)
|
|
57
|
+
____exports.ApplyUnitBehaviorAbilityBehavior:forAll(ability, "update")
|
|
58
|
+
end)
|
|
36
59
|
return ____exports
|
|
@@ -4,22 +4,50 @@ 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 { DamageType, WeaponType } from "../../internal/unit+damage";
|
|
8
|
+
import { CombatClassifications } from "../../object-data/auxiliary/combat-classification";
|
|
9
|
+
import { AttackType } from "../../object-data/auxiliary/attack-type";
|
|
10
|
+
export type DamageAbilityBehaviorParameters = {
|
|
11
|
+
damagePerStrength?: AbilityDependentValue<number>;
|
|
12
|
+
damagePerAgility?: AbilityDependentValue<number>;
|
|
13
|
+
damagePerIntelligence?: AbilityDependentValue<number>;
|
|
14
|
+
attackType?: AbilityDependentValue<AttackType>;
|
|
15
|
+
damageType?: DamageType;
|
|
16
|
+
weaponType?: WeaponType;
|
|
17
|
+
metadata?: AbilityDependentValue<string | number | boolean>;
|
|
18
|
+
};
|
|
19
|
+
export type DamageAreaAbilityBehaviorParameters = DamageAbilityBehaviorParameters & {
|
|
20
|
+
maximumDamage?: AbilityDependentValue<number>;
|
|
21
|
+
areaOfEffect?: AbilityDependentValue<number>;
|
|
22
|
+
allowedTargetCombatClassifications?: AbilityDependentValue<CombatClassifications>;
|
|
23
|
+
};
|
|
24
|
+
export declare abstract class DamageAbilityBehavior<T extends DamageAbilityBehaviorParameters = DamageAbilityBehaviorParameters> extends AbilityBehavior {
|
|
25
|
+
protected readonly damage: AbilityDependentValue<number>;
|
|
26
|
+
protected readonly parameters?: T | undefined;
|
|
27
|
+
protected constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: T | undefined);
|
|
28
|
+
protected calculateDamage(caster: Unit): number;
|
|
29
|
+
protected damageTarget(caster: Unit, target: Widget, damage?: number): void;
|
|
30
|
+
}
|
|
31
|
+
export declare class DamageSelfAbilityBehavior extends DamageAbilityBehavior {
|
|
32
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAbilityBehaviorParameters);
|
|
10
33
|
onImpact(caster: Unit): void;
|
|
11
34
|
}
|
|
12
|
-
export declare class DamageTargetAbilityBehavior extends
|
|
13
|
-
|
|
14
|
-
constructor(ability: Ability, damage: AbilityDependentValue<number>);
|
|
35
|
+
export declare class DamageTargetAbilityBehavior extends DamageAbilityBehavior {
|
|
36
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAbilityBehaviorParameters);
|
|
15
37
|
onWidgetTargetImpact(caster: Unit, target: Widget): void;
|
|
16
38
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
39
|
+
declare abstract class DamageAreaAbilityBehavior extends DamageAbilityBehavior<DamageAreaAbilityBehaviorParameters> {
|
|
40
|
+
protected constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAreaAbilityBehaviorParameters);
|
|
41
|
+
protected damageArea(caster: Unit, x: number, y: number): void;
|
|
42
|
+
}
|
|
43
|
+
export declare class DamageSelfAreaAbilityBehavior extends DamageAreaAbilityBehavior {
|
|
44
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAreaAbilityBehaviorParameters);
|
|
45
|
+
onImpact(caster: Unit): void;
|
|
46
|
+
}
|
|
47
|
+
export declare class DamageTargetAreaAbilityBehavior extends DamageAreaAbilityBehavior {
|
|
48
|
+
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: DamageAreaAbilityBehaviorParameters);
|
|
21
49
|
onNoTargetImpact(caster: Unit): void;
|
|
22
50
|
onWidgetTargetImpact(caster: Unit, target: Widget): void;
|
|
23
51
|
onPointTargetImpact(caster: Unit, x: number, y: number): void;
|
|
24
|
-
private damageArea;
|
|
25
52
|
}
|
|
53
|
+
export {};
|
|
@@ -9,42 +9,105 @@ 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
|
-
____exports.
|
|
13
|
-
local
|
|
14
|
-
|
|
15
|
-
__TS__ClassExtends(
|
|
16
|
-
function
|
|
12
|
+
____exports.DamageAbilityBehavior = __TS__Class()
|
|
13
|
+
local DamageAbilityBehavior = ____exports.DamageAbilityBehavior
|
|
14
|
+
DamageAbilityBehavior.name = "DamageAbilityBehavior"
|
|
15
|
+
__TS__ClassExtends(DamageAbilityBehavior, AbilityBehavior)
|
|
16
|
+
function DamageAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
17
17
|
AbilityBehavior.prototype.____constructor(self, ability)
|
|
18
18
|
self.damage = damage
|
|
19
|
+
self.parameters = parameters
|
|
19
20
|
end
|
|
20
|
-
function
|
|
21
|
+
function DamageAbilityBehavior.prototype.calculateDamage(self, caster)
|
|
22
|
+
local parameters = self.parameters
|
|
23
|
+
local damage = self:resolveCurrentAbilityDependentValue(self.damage)
|
|
24
|
+
local damagePerStrength = self:resolveCurrentAbilityDependentValue(parameters and parameters.damagePerStrength or 0)
|
|
25
|
+
if damagePerStrength ~= 0 then
|
|
26
|
+
damage = damage + damagePerStrength * caster.strength
|
|
27
|
+
end
|
|
28
|
+
local damagePerAgility = self:resolveCurrentAbilityDependentValue(parameters and parameters.damagePerAgility or 0)
|
|
29
|
+
if damagePerAgility ~= 0 then
|
|
30
|
+
damage = damage + damagePerAgility * caster.agility
|
|
31
|
+
end
|
|
32
|
+
local damagePerIntelligence = self:resolveCurrentAbilityDependentValue(parameters and parameters.damagePerIntelligence or 0)
|
|
33
|
+
if damagePerIntelligence ~= 0 then
|
|
34
|
+
damage = damage + damagePerIntelligence * caster.intelligence
|
|
35
|
+
end
|
|
36
|
+
return damage
|
|
37
|
+
end
|
|
38
|
+
function DamageAbilityBehavior.prototype.damageTarget(self, caster, target, damage)
|
|
39
|
+
local parameters = self.parameters
|
|
21
40
|
caster:damageTarget(
|
|
22
|
-
|
|
23
|
-
self:
|
|
41
|
+
target,
|
|
42
|
+
damage or self:calculateDamage(caster),
|
|
43
|
+
nil,
|
|
44
|
+
nil,
|
|
45
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
|
|
46
|
+
parameters and parameters.damageType,
|
|
47
|
+
parameters and parameters.weaponType,
|
|
48
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
|
|
24
49
|
)
|
|
25
50
|
end
|
|
51
|
+
____exports.DamageSelfAbilityBehavior = __TS__Class()
|
|
52
|
+
local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
|
|
53
|
+
DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
|
|
54
|
+
__TS__ClassExtends(DamageSelfAbilityBehavior, ____exports.DamageAbilityBehavior)
|
|
55
|
+
function DamageSelfAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
56
|
+
DamageSelfAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
|
|
57
|
+
end
|
|
58
|
+
function DamageSelfAbilityBehavior.prototype.onImpact(self, caster)
|
|
59
|
+
self:damageTarget(caster, caster)
|
|
60
|
+
end
|
|
26
61
|
____exports.DamageTargetAbilityBehavior = __TS__Class()
|
|
27
62
|
local DamageTargetAbilityBehavior = ____exports.DamageTargetAbilityBehavior
|
|
28
63
|
DamageTargetAbilityBehavior.name = "DamageTargetAbilityBehavior"
|
|
29
|
-
__TS__ClassExtends(DamageTargetAbilityBehavior,
|
|
30
|
-
function DamageTargetAbilityBehavior.prototype.____constructor(self, ability, damage)
|
|
31
|
-
|
|
32
|
-
self.damage = damage
|
|
64
|
+
__TS__ClassExtends(DamageTargetAbilityBehavior, ____exports.DamageAbilityBehavior)
|
|
65
|
+
function DamageTargetAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
66
|
+
DamageTargetAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
|
|
33
67
|
end
|
|
34
68
|
function DamageTargetAbilityBehavior.prototype.onWidgetTargetImpact(self, caster, target)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
69
|
+
self:damageTarget(caster, target)
|
|
70
|
+
end
|
|
71
|
+
local DamageAreaAbilityBehavior = __TS__Class()
|
|
72
|
+
DamageAreaAbilityBehavior.name = "DamageAreaAbilityBehavior"
|
|
73
|
+
__TS__ClassExtends(DamageAreaAbilityBehavior, ____exports.DamageAbilityBehavior)
|
|
74
|
+
function DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
75
|
+
DamageAreaAbilityBehavior.____super.prototype.____constructor(self, ability, damage, parameters)
|
|
76
|
+
end
|
|
77
|
+
function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
|
|
78
|
+
local parameters = self.parameters
|
|
79
|
+
local targets = Unit.getAllowedTargetsInCollisionRange(
|
|
80
|
+
caster,
|
|
81
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
|
|
82
|
+
x,
|
|
83
|
+
y,
|
|
84
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
|
|
38
85
|
)
|
|
86
|
+
local damage = self:calculateDamage(caster)
|
|
87
|
+
local maximumDamage = self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0)
|
|
88
|
+
if maximumDamage ~= 0 and damage > maximumDamage then
|
|
89
|
+
damage = maximumDamage / #targets
|
|
90
|
+
end
|
|
91
|
+
for ____, target in ipairs(targets) do
|
|
92
|
+
self:damageTarget(caster, target, damage)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
____exports.DamageSelfAreaAbilityBehavior = __TS__Class()
|
|
96
|
+
local DamageSelfAreaAbilityBehavior = ____exports.DamageSelfAreaAbilityBehavior
|
|
97
|
+
DamageSelfAreaAbilityBehavior.name = "DamageSelfAreaAbilityBehavior"
|
|
98
|
+
__TS__ClassExtends(DamageSelfAreaAbilityBehavior, DamageAreaAbilityBehavior)
|
|
99
|
+
function DamageSelfAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
100
|
+
DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
101
|
+
end
|
|
102
|
+
function DamageSelfAreaAbilityBehavior.prototype.onImpact(self, caster)
|
|
103
|
+
self:damageArea(caster, caster.x, caster.y)
|
|
39
104
|
end
|
|
40
105
|
____exports.DamageTargetAreaAbilityBehavior = __TS__Class()
|
|
41
106
|
local DamageTargetAreaAbilityBehavior = ____exports.DamageTargetAreaAbilityBehavior
|
|
42
107
|
DamageTargetAreaAbilityBehavior.name = "DamageTargetAreaAbilityBehavior"
|
|
43
|
-
__TS__ClassExtends(DamageTargetAreaAbilityBehavior,
|
|
44
|
-
function DamageTargetAreaAbilityBehavior.prototype.____constructor(self, ability, damage,
|
|
45
|
-
|
|
46
|
-
self.damage = damage
|
|
47
|
-
self.maximumDamage = maximumDamage
|
|
108
|
+
__TS__ClassExtends(DamageTargetAreaAbilityBehavior, DamageAreaAbilityBehavior)
|
|
109
|
+
function DamageTargetAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
110
|
+
DamageAreaAbilityBehavior.prototype.____constructor(self, ability, damage, parameters)
|
|
48
111
|
end
|
|
49
112
|
function DamageTargetAreaAbilityBehavior.prototype.onNoTargetImpact(self, caster)
|
|
50
113
|
self:damageArea(caster, caster.x, caster.y)
|
|
@@ -55,21 +118,4 @@ end
|
|
|
55
118
|
function DamageTargetAreaAbilityBehavior.prototype.onPointTargetImpact(self, caster, x, y)
|
|
56
119
|
self:damageArea(caster, x, y)
|
|
57
120
|
end
|
|
58
|
-
function DamageTargetAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
|
|
59
|
-
local targets = Unit.getAllowedTargetsInCollisionRange(
|
|
60
|
-
caster,
|
|
61
|
-
self:resolveCurrentAbilityDependentValue(ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
|
|
62
|
-
x,
|
|
63
|
-
y,
|
|
64
|
-
self:resolveCurrentAbilityDependentValue(AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
|
|
65
|
-
)
|
|
66
|
-
local damage = self:resolveCurrentAbilityDependentValue(self.damage)
|
|
67
|
-
local maximumDamage = self:resolveCurrentAbilityDependentValue(self.maximumDamage or 0)
|
|
68
|
-
if maximumDamage ~= 0 and damage > maximumDamage then
|
|
69
|
-
damage = maximumDamage / #targets
|
|
70
|
-
end
|
|
71
|
-
for ____, target in ipairs(targets) do
|
|
72
|
-
caster:damageTarget(target, damage)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
121
|
return ____exports
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
local ____ability = require("engine.behaviour.ability")
|
|
6
|
+
local AbilityBehavior = ____ability.AbilityBehavior
|
|
7
|
+
local ____ability = require("engine.standard.fields.ability")
|
|
8
|
+
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
9
|
+
local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
|
|
10
|
+
local ____math = require("math")
|
|
11
|
+
local max = ____math.max
|
|
12
|
+
local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
13
|
+
local ____sound = require("core.types.sound")
|
|
14
|
+
local Sound3D = ____sound.Sound3D
|
|
15
|
+
local SoundSettings = ____sound.SoundSettings
|
|
16
|
+
____exports.EmulateImpactAbilityBehavior = __TS__Class()
|
|
17
|
+
local EmulateImpactAbilityBehavior = ____exports.EmulateImpactAbilityBehavior
|
|
18
|
+
EmulateImpactAbilityBehavior.name = "EmulateImpactAbilityBehavior"
|
|
19
|
+
__TS__ClassExtends(EmulateImpactAbilityBehavior, AbilityBehavior)
|
|
20
|
+
function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
|
|
21
|
+
local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
|
|
22
|
+
local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
|
|
23
|
+
if self.ability.cooldownRemaining ~= 0 or caster.mana < manaCost then
|
|
24
|
+
return
|
|
25
|
+
end
|
|
26
|
+
caster.mana = caster.mana - manaCost
|
|
27
|
+
self.ability.cooldownRemaining = max(cooldown, MINIMUM_POSITIVE_NORMALIZED_FLOAT)
|
|
28
|
+
self:flashCasterEffect(caster)
|
|
29
|
+
local soundPresetId = self.ability:getField(ABILITY_SF_EFFECT_SOUND)
|
|
30
|
+
if soundPresetId ~= "" then
|
|
31
|
+
Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
|
|
32
|
+
end
|
|
33
|
+
AbilityBehavior:forAll(self.ability, "onImpact", caster)
|
|
34
|
+
end
|
|
35
|
+
return ____exports
|
|
@@ -4,13 +4,40 @@ import { Ability } from "../../internal/ability";
|
|
|
4
4
|
import { Unit } from "../../internal/unit";
|
|
5
5
|
import { AbilityDependentValue } from "../../object-field/ability";
|
|
6
6
|
import { AbilityBehavior } from "../ability";
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export type HealAbilityBehaviorParameters = {
|
|
8
|
+
healingPerStrength?: AbilityDependentValue<number>;
|
|
9
|
+
healingPerAgility?: AbilityDependentValue<number>;
|
|
10
|
+
healingPerIntelligence?: AbilityDependentValue<number>;
|
|
11
|
+
};
|
|
12
|
+
export type HealAreaAbilityBehaviorParameters = HealAbilityBehaviorParameters & {
|
|
13
|
+
maximumHealing?: AbilityDependentValue<number>;
|
|
14
|
+
};
|
|
15
|
+
declare abstract class HealAbilityBehavior<T extends HealAbilityBehaviorParameters = HealAbilityBehaviorParameters> extends AbilityBehavior {
|
|
16
|
+
protected readonly healing: AbilityDependentValue<number>;
|
|
17
|
+
protected readonly parameters?: T | undefined;
|
|
18
|
+
protected constructor(ability: Ability, healing: AbilityDependentValue<number>, parameters?: T | undefined);
|
|
19
|
+
protected calculateHealing(caster: Unit): number;
|
|
20
|
+
}
|
|
21
|
+
export declare class HealSelfAbilityBehavior extends HealAbilityBehavior {
|
|
22
|
+
constructor(ability: Ability, healing: AbilityDependentValue<number>, parameters?: HealAbilityBehaviorParameters);
|
|
23
|
+
onImpact(caster: Unit): void;
|
|
24
|
+
}
|
|
25
|
+
export declare class HealTargetAbilityBehavior extends HealAbilityBehavior {
|
|
26
|
+
constructor(ability: Ability, healing: AbilityDependentValue<number>, parameters?: HealAbilityBehaviorParameters);
|
|
27
|
+
onWidgetTargetImpact(caster: Unit, target: Widget): void;
|
|
28
|
+
}
|
|
29
|
+
declare abstract class HealAreaAbilityBehavior extends HealAbilityBehavior<HealAreaAbilityBehaviorParameters> {
|
|
30
|
+
protected constructor(ability: Ability, healing: AbilityDependentValue<number>, parameters?: HealAreaAbilityBehaviorParameters);
|
|
31
|
+
protected healArea(caster: Unit, x: number, y: number): void;
|
|
32
|
+
}
|
|
33
|
+
export declare class HealSelfAreaAbilityBehavior extends HealAreaAbilityBehavior {
|
|
34
|
+
constructor(ability: Ability, healing: AbilityDependentValue<number>, parameters?: HealAreaAbilityBehaviorParameters);
|
|
10
35
|
onImpact(caster: Unit): void;
|
|
11
36
|
}
|
|
12
|
-
export declare class
|
|
13
|
-
|
|
14
|
-
|
|
37
|
+
export declare class HealTargetAreaAbilityBehavior extends HealAreaAbilityBehavior {
|
|
38
|
+
constructor(ability: Ability, healing: AbilityDependentValue<number>, parameters?: HealAreaAbilityBehaviorParameters);
|
|
39
|
+
onNoTargetImpact(caster: Unit): void;
|
|
15
40
|
onWidgetTargetImpact(caster: Unit, target: Widget): void;
|
|
41
|
+
onPointTargetImpact(caster: Unit, x: number, y: number): void;
|
|
16
42
|
}
|
|
43
|
+
export {};
|