warscript 0.0.1-dev.459629d → 0.0.1-dev.45a73a4
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/dummy.lua +4 -2
- package/core/types/effect.d.ts +11 -1
- package/core/types/effect.lua +43 -77
- package/core/types/frame.d.ts +15 -2
- package/core/types/frame.lua +16 -30
- package/core/types/handle.lua +3 -0
- package/core/types/player.d.ts +1 -0
- package/core/types/player.lua +6 -2
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +13 -8
- package/core/types/tileCell.d.ts +7 -2
- package/core/types/tileCell.lua +11 -0
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +705 -7
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +1 -0
- package/engine/behaviour/ability/damage.lua +12 -14
- package/engine/behaviour/ability/emulate-impact.lua +1 -1
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability.d.ts +2 -0
- package/engine/behaviour/ability.lua +25 -0
- package/engine/behaviour/unit.d.ts +1 -0
- package/engine/behaviour/unit.lua +1 -0
- package/engine/buff.d.ts +12 -10
- package/engine/buff.lua +64 -16
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +7 -0
- package/engine/internal/ability.lua +60 -31
- package/engine/internal/item/owner-cache.d.ts +5 -0
- package/engine/internal/item/owner-cache.lua +4 -0
- package/engine/internal/item+owner.d.ts +2 -0
- package/engine/internal/item+owner.lua +27 -4
- package/engine/internal/item.d.ts +17 -1
- package/engine/internal/item.lua +115 -23
- package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +53 -12
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/bonus.d.ts +8 -0
- package/engine/internal/unit/bonus.lua +69 -5
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment-inventory.d.ts +44 -0
- package/engine/internal/unit/equipment-inventory.lua +233 -0
- package/engine/internal/unit/expiration-timer.lua +1 -1
- package/engine/internal/unit/extended-inventory.d.ts +25 -0
- package/engine/internal/unit/extended-inventory.lua +99 -0
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
- package/engine/internal/unit/inventory.lua +87 -0
- package/engine/internal/unit/item-container.d.ts +25 -0
- package/engine/internal/unit/item-container.lua +11 -0
- package/engine/internal/unit/item-order-events.d.ts +17 -0
- package/engine/internal/unit/item-order-events.lua +67 -0
- package/engine/internal/unit/item-slot.d.ts +27 -0
- package/engine/internal/unit/item-slot.lua +92 -0
- package/engine/internal/unit/order.d.ts +3 -3
- package/engine/internal/unit/order.lua +10 -10
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +63 -2
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +13 -13
- package/engine/internal/unit.d.ts +2 -10
- package/engine/internal/unit.lua +50 -100
- package/engine/local-client.d.ts +21 -0
- package/engine/local-client.lua +242 -57
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
- package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/healing-modifier.d.ts +9 -0
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +29 -6
- package/engine/object-data/entry/ability-type.lua +240 -45
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +6 -2
- package/engine/object-data/entry/destructible-type.lua +26 -0
- package/engine/object-data/entry/item-type.d.ts +18 -3
- package/engine/object-data/entry/item-type.lua +84 -0
- package/engine/object-data/entry/lightning-type.d.ts +6 -8
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +47 -2
- package/engine/object-data/entry/unit-type.lua +383 -49
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +6 -1
- package/engine/object-data/entry.lua +8 -0
- package/engine/random.lua +1 -1
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +45 -0
- package/engine/standard/entries/buff-type.lua +43 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/unit.d.ts +5 -1
- package/engine/unit.lua +5 -1
- package/event.d.ts +1 -1
- package/objutil/buff.lua +1 -1
- package/package.json +2 -22
- package/utility/arrays.d.ts +7 -1
- package/utility/arrays.lua +17 -0
- package/engine/internal/unit/item.lua +0 -78
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityTypeId } from "./object-data/entry/ability-type";
|
|
3
|
+
/**
|
|
4
|
+
* The ability type's own extended tooltip for the level, unaffected by local display
|
|
5
|
+
* overrides (see {@link overrideAbilityTypeExtendedTooltipLocally}). Use it instead of
|
|
6
|
+
* `BlzGetAbilityExtendedTooltip` wherever the type's tooltip serves as a template.
|
|
7
|
+
*/
|
|
8
|
+
export declare const getAbilityTypeExtendedTooltip: (abilityTypeId: AbilityTypeId, level: number) => string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local getAbilityExtendedTooltip = BlzGetAbilityExtendedTooltip
|
|
3
|
+
local setAbilityExtendedTooltip = BlzSetAbilityExtendedTooltip
|
|
4
|
+
local originalTooltipByLevelByAbilityTypeId = {}
|
|
5
|
+
local overriddenTooltipByLevelByAbilityTypeId = {}
|
|
6
|
+
--- The ability type's own extended tooltip for the level, unaffected by local display
|
|
7
|
+
-- overrides (see {@link overrideAbilityTypeExtendedTooltipLocally}). Use it instead of
|
|
8
|
+
-- `BlzGetAbilityExtendedTooltip` wherever the type's tooltip serves as a template.
|
|
9
|
+
____exports.getAbilityTypeExtendedTooltip = function(abilityTypeId, level)
|
|
10
|
+
local ____opt_0 = originalTooltipByLevelByAbilityTypeId[abilityTypeId]
|
|
11
|
+
return ____opt_0 and ____opt_0[level] or getAbilityExtendedTooltip(abilityTypeId, level)
|
|
12
|
+
end
|
|
13
|
+
--- Replaces the displayed extended tooltip of every ability of the type for the local
|
|
14
|
+
-- player only; `undefined` restores the type's own tooltip. The value is async: never
|
|
15
|
+
-- feed it back into synchronous logic.
|
|
16
|
+
--
|
|
17
|
+
-- @internal For use by internal systems only.
|
|
18
|
+
____exports.overrideAbilityTypeExtendedTooltipLocally = function(abilityTypeId, level, tooltip)
|
|
19
|
+
local overriddenTooltipByLevel = overriddenTooltipByLevelByAbilityTypeId[abilityTypeId]
|
|
20
|
+
if (overriddenTooltipByLevel and overriddenTooltipByLevel[level]) == tooltip then
|
|
21
|
+
return
|
|
22
|
+
end
|
|
23
|
+
local originalTooltipByLevel = originalTooltipByLevelByAbilityTypeId[abilityTypeId]
|
|
24
|
+
if originalTooltipByLevel == nil then
|
|
25
|
+
originalTooltipByLevel = {}
|
|
26
|
+
originalTooltipByLevelByAbilityTypeId[abilityTypeId] = originalTooltipByLevel
|
|
27
|
+
end
|
|
28
|
+
local originalTooltip = originalTooltipByLevel[level]
|
|
29
|
+
if originalTooltip == nil then
|
|
30
|
+
originalTooltip = getAbilityExtendedTooltip(abilityTypeId, level)
|
|
31
|
+
originalTooltipByLevel[level] = originalTooltip
|
|
32
|
+
end
|
|
33
|
+
if overriddenTooltipByLevel == nil then
|
|
34
|
+
overriddenTooltipByLevel = {}
|
|
35
|
+
overriddenTooltipByLevelByAbilityTypeId[abilityTypeId] = overriddenTooltipByLevel
|
|
36
|
+
end
|
|
37
|
+
if tooltip == nil then
|
|
38
|
+
overriddenTooltipByLevel[level] = nil
|
|
39
|
+
else
|
|
40
|
+
overriddenTooltipByLevel[level] = tooltip
|
|
41
|
+
end
|
|
42
|
+
setAbilityExtendedTooltip(abilityTypeId, tooltip or originalTooltip, level)
|
|
43
|
+
end
|
|
44
|
+
return ____exports
|
|
@@ -7,6 +7,8 @@ local __TS__New = ____lualib.__TS__New
|
|
|
7
7
|
local ____exports = {}
|
|
8
8
|
local ____ability = require("engine.behaviour.ability")
|
|
9
9
|
local AbilityBehavior = ____ability.AbilityBehavior
|
|
10
|
+
local ____unit = require("engine.internal.unit")
|
|
11
|
+
local Unit = ____unit.Unit
|
|
10
12
|
local ____ability = require("engine.object-field.ability")
|
|
11
13
|
local AbilityField = ____ability.AbilityField
|
|
12
14
|
local AbilityLevelField = ____ability.AbilityLevelField
|
|
@@ -56,4 +58,7 @@ end)
|
|
|
56
58
|
AbilityLevelField.valueChangeEvent:addListener(function(ability)
|
|
57
59
|
____exports.ApplyUnitBehaviorAbilityBehavior:forAll(ability, "update")
|
|
58
60
|
end)
|
|
61
|
+
Unit.abilityLevelChangedEvent:addListener(function(_, ability)
|
|
62
|
+
____exports.ApplyUnitBehaviorAbilityBehavior:forAll(ability, "update")
|
|
63
|
+
end)
|
|
59
64
|
return ____exports
|
|
@@ -5,6 +5,7 @@ import { Unit } from "../../internal/unit";
|
|
|
5
5
|
import { AbilityDependentValue } from "../../object-field/ability";
|
|
6
6
|
import { Widget } from "../../../core/types/widget";
|
|
7
7
|
import { DamageType, WeaponType } from "../../internal/unit+damage";
|
|
8
|
+
import "../../internal/unit+damage";
|
|
8
9
|
import { CombatClassifications } from "../../object-data/auxiliary/combat-classification";
|
|
9
10
|
import { AttackType } from "../../object-data/auxiliary/attack-type";
|
|
10
11
|
export type DamageAbilityBehaviorParameters = {
|
|
@@ -4,11 +4,10 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
|
4
4
|
local ____exports = {}
|
|
5
5
|
local ____ability = require("engine.behaviour.ability")
|
|
6
6
|
local AbilityBehavior = ____ability.AbilityBehavior
|
|
7
|
-
local ____unit = require("engine.internal.unit")
|
|
8
|
-
local Unit = ____unit.Unit
|
|
9
7
|
local ____ability = require("engine.standard.fields.ability")
|
|
10
8
|
local ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD = ____ability.ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD
|
|
11
9
|
local AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD = ____ability.AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD
|
|
10
|
+
require("engine.internal.unit+damage")
|
|
12
11
|
____exports.DamageAbilityBehavior = __TS__Class()
|
|
13
12
|
local DamageAbilityBehavior = ____exports.DamageAbilityBehavior
|
|
14
13
|
DamageAbilityBehavior.name = "DamageAbilityBehavior"
|
|
@@ -82,21 +81,20 @@ function DamageAreaAbilityBehavior.prototype.____constructor(self, ability, dama
|
|
|
82
81
|
end
|
|
83
82
|
function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
|
|
84
83
|
local parameters = self.parameters
|
|
85
|
-
|
|
86
|
-
caster,
|
|
87
|
-
self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
|
|
84
|
+
caster:damageArea(
|
|
88
85
|
x,
|
|
89
86
|
y,
|
|
90
|
-
self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
|
|
87
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD),
|
|
88
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
|
|
89
|
+
self.precalculatedDamage or self:calculateDamage(caster),
|
|
90
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0),
|
|
91
|
+
nil,
|
|
92
|
+
nil,
|
|
93
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
|
|
94
|
+
parameters and parameters.damageType,
|
|
95
|
+
parameters and parameters.weaponType,
|
|
96
|
+
self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
|
|
91
97
|
)
|
|
92
|
-
local damage = self.precalculatedDamage or self:calculateDamage(caster)
|
|
93
|
-
local maximumDamage = self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0)
|
|
94
|
-
if maximumDamage ~= 0 and damage > maximumDamage then
|
|
95
|
-
damage = maximumDamage / #targets
|
|
96
|
-
end
|
|
97
|
-
for ____, target in ipairs(targets) do
|
|
98
|
-
self:damageTarget(caster, target, damage)
|
|
99
|
-
end
|
|
100
98
|
end
|
|
101
99
|
____exports.DamageSelfAreaAbilityBehavior = __TS__Class()
|
|
102
100
|
local DamageSelfAreaAbilityBehavior = ____exports.DamageSelfAreaAbilityBehavior
|
|
@@ -31,7 +31,7 @@ function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
|
|
|
31
31
|
if cooldown == 0 then
|
|
32
32
|
self.ability:interruptCast()
|
|
33
33
|
else
|
|
34
|
-
self.ability
|
|
34
|
+
self.ability:startCooldown(cooldown)
|
|
35
35
|
end
|
|
36
36
|
self:flashCasterEffect(caster)
|
|
37
37
|
local soundPresetId = self.ability:getField(ABILITY_SF_EFFECT_SOUND)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Unit } from "../../internal/unit";
|
|
3
|
+
import "../../internal/unit/item-order-events";
|
|
3
4
|
import { EmulateImpactAbilityBehavior } from "./emulate-impact";
|
|
4
5
|
import { Ability } from "../../internal/ability";
|
|
5
6
|
export declare class OnCommandImpactAbilityBehavior extends EmulateImpactAbilityBehavior {
|
|
@@ -4,6 +4,7 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
|
4
4
|
local ____exports = {}
|
|
5
5
|
local ____unit = require("engine.internal.unit")
|
|
6
6
|
local Unit = ____unit.Unit
|
|
7
|
+
require("engine.internal.unit.item-order-events")
|
|
7
8
|
local ____emulate_2Dimpact = require("engine.behaviour.ability.emulate-impact")
|
|
8
9
|
local EmulateImpactAbilityBehavior = ____emulate_2Dimpact.EmulateImpactAbilityBehavior
|
|
9
10
|
____exports.OnCommandImpactAbilityBehavior = __TS__Class()
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Behavior } from "../behavior";
|
|
3
3
|
import { Unit } from "../internal/unit";
|
|
4
4
|
import "../internal/unit/ability";
|
|
5
|
+
import "../internal/unit+ability";
|
|
5
6
|
import { Ability } from "../internal/ability";
|
|
6
7
|
import { AbilityTypeId } from "../object-data/entry/ability-type";
|
|
7
8
|
import { Widget } from "../../core/types/widget";
|
|
@@ -26,6 +27,7 @@ export declare abstract class AbilityBehavior<Parameters extends {
|
|
|
26
27
|
get unit(): Unit | undefined;
|
|
27
28
|
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
|
|
28
29
|
protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
|
|
30
|
+
protected getDuration(widget: Widget): number;
|
|
29
31
|
flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
30
32
|
flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
31
33
|
flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
@@ -9,7 +9,9 @@ local ____behavior = require("engine.behavior")
|
|
|
9
9
|
local Behavior = ____behavior.Behavior
|
|
10
10
|
local ____unit = require("engine.internal.unit")
|
|
11
11
|
local Unit = ____unit.Unit
|
|
12
|
+
local UnitClassification = ____unit.UnitClassification
|
|
12
13
|
require("engine.internal.unit.ability")
|
|
14
|
+
require("engine.internal.unit+ability")
|
|
13
15
|
local ____ability = require("engine.internal.ability")
|
|
14
16
|
local Ability = ____ability.Ability
|
|
15
17
|
local ____effect = require("core.types.effect")
|
|
@@ -18,6 +20,8 @@ local ____ability = require("engine.standard.fields.ability")
|
|
|
18
20
|
local AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.AREA_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
19
21
|
local CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = ____ability.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD
|
|
20
22
|
local CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
23
|
+
local DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD
|
|
24
|
+
local DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD = ____ability.DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD
|
|
21
25
|
local EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
22
26
|
local MISSILE_ARC_ABILITY_FLOAT_FIELD = ____ability.MISSILE_ARC_ABILITY_FLOAT_FIELD
|
|
23
27
|
local MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = ____ability.MISSILE_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD
|
|
@@ -113,6 +117,14 @@ end
|
|
|
113
117
|
function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
|
|
114
118
|
return resolveCurrentAbilityDependentValue(self.ability, value)
|
|
115
119
|
end
|
|
120
|
+
function AbilityBehavior.prototype.getDuration(self, widget)
|
|
121
|
+
if __TS__InstanceOf(widget, Unit) then
|
|
122
|
+
if widget.isHero or widget:getField(UNIT_IF_LEVEL) >= 6 or widget:hasClassification(UnitClassification.RESISTANT) then
|
|
123
|
+
return self:resolveCurrentAbilityDependentValue(DURATION_HERO_ABILITY_FLOAT_LEVEL_FIELD)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
return self:resolveCurrentAbilityDependentValue(DURATION_NORMAL_ABILITY_FLOAT_LEVEL_FIELD)
|
|
127
|
+
end
|
|
116
128
|
function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
|
|
117
129
|
local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
118
130
|
Effect:flash(
|
|
@@ -317,6 +329,19 @@ end)
|
|
|
317
329
|
AbilityLevelField.valueChangeEvent:addListener(function(ability, field)
|
|
318
330
|
____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
|
|
319
331
|
end)
|
|
332
|
+
local function checkBehaviorOnLevelChange(behavior)
|
|
333
|
+
local subscribedValues = subscribedValuesByAbilityBehavior[behavior]
|
|
334
|
+
if subscribedValues ~= nil then
|
|
335
|
+
for value in pairs(subscribedValues) do
|
|
336
|
+
if __TS__InstanceOf(value, AbilityLevelField) then
|
|
337
|
+
behavior:onValueChange(value)
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
end
|
|
342
|
+
Unit.abilityLevelChangedEvent:addListener(function(_, ability)
|
|
343
|
+
____exports.AbilityBehavior:forAll(ability, checkBehaviorOnLevelChange)
|
|
344
|
+
end)
|
|
320
345
|
Ability.onCreate:addListener(function(ability)
|
|
321
346
|
local createBehaviorFunctions = createBehaviorFunctionsByAbilityTypeId[ability.typeId]
|
|
322
347
|
if createBehaviorFunctions ~= nil then
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Behavior, BehaviorPriority } from "../behavior";
|
|
3
3
|
import { Ability } from "../internal/ability";
|
|
4
4
|
import { DamageEvent, DamagingEvent, Unit } from "../internal/unit";
|
|
5
|
+
import "../internal/unit/equipment-inventory";
|
|
5
6
|
import "../internal/unit+ability";
|
|
6
7
|
import "../internal/unit-missile-launch";
|
|
7
8
|
import { Item } from "../internal/item";
|
|
@@ -8,6 +8,7 @@ local ____behavior = require("engine.behavior")
|
|
|
8
8
|
local Behavior = ____behavior.Behavior
|
|
9
9
|
local ____unit = require("engine.internal.unit")
|
|
10
10
|
local Unit = ____unit.Unit
|
|
11
|
+
require("engine.internal.unit.equipment-inventory")
|
|
11
12
|
require("engine.internal.unit+ability")
|
|
12
13
|
require("engine.internal.unit-missile-launch")
|
|
13
14
|
local ____linked_2Dset = require("utility.linked-set")
|
package/engine/buff.d.ts
CHANGED
|
@@ -23,6 +23,13 @@ export type BuffPolarityParameterType = EnumParameterValueType<BuffPolarity>;
|
|
|
23
23
|
export type BuffResistanceTypeParameterType = EnumParameterValueType<BuffResistanceType>;
|
|
24
24
|
export declare class BuffUniqueGroup {
|
|
25
25
|
}
|
|
26
|
+
export type BuffAbilityParameters = {
|
|
27
|
+
readonly fields?: [AbilityNumberField | AbilityNumberLevelField, NumberParameterValueType][];
|
|
28
|
+
/** Default `true`. */
|
|
29
|
+
readonly isButtonVisible?: boolean;
|
|
30
|
+
/** Default is the level of the source ability or 0 if it is absent. */
|
|
31
|
+
readonly level?: number;
|
|
32
|
+
};
|
|
26
33
|
export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
27
34
|
spellStealPriority?: number;
|
|
28
35
|
level?: number;
|
|
@@ -30,16 +37,7 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
30
37
|
learnLevelMinimum?: number;
|
|
31
38
|
source?: Unit;
|
|
32
39
|
behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
|
|
33
|
-
abilityTypeIds?: Record<AbilityTypeId,
|
|
34
|
-
readonly fields?: [
|
|
35
|
-
AbilityNumberField | AbilityNumberLevelField,
|
|
36
|
-
NumberParameterValueType
|
|
37
|
-
][];
|
|
38
|
-
/** Default `true`. */
|
|
39
|
-
readonly isButtonVisible?: boolean;
|
|
40
|
-
/** Default is the level of the source ability or 0 if it is absent. */
|
|
41
|
-
readonly level?: number;
|
|
42
|
-
}>;
|
|
40
|
+
abilityTypeIds?: Partial<Record<AbilityTypeId, BuffAbilityParameters>>;
|
|
43
41
|
damageUponDeathAllowedTargetCombatClassifications?: CombatClassifications | AbilityCombatClassificationsLevelField;
|
|
44
42
|
damageUponDeath?: NumberParameterValueType;
|
|
45
43
|
damageUponDeathRange?: NumberParameterValueType;
|
|
@@ -314,10 +312,14 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
314
312
|
]): void;
|
|
315
313
|
private flash;
|
|
316
314
|
expire(): void;
|
|
315
|
+
/** Dispels this buff, invoking onDispel before removing it. */
|
|
316
|
+
dispel(source?: Unit): void;
|
|
317
317
|
protected onCreate(): void;
|
|
318
318
|
protected onDestroy(): Destructor;
|
|
319
319
|
static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
|
|
320
320
|
static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
|
|
321
|
+
/** Called for dispelling, never for a direct destroy() or replacement. */
|
|
322
|
+
onDispel(source: Unit | undefined): void;
|
|
321
323
|
onExpiration(): void;
|
|
322
324
|
onDeath(source: Unit | undefined): void;
|
|
323
325
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|
package/engine/buff.lua
CHANGED
|
@@ -254,6 +254,10 @@ local function destroyBuff(buff)
|
|
|
254
254
|
buff:destroy()
|
|
255
255
|
end
|
|
256
256
|
local function expireBuff(buff)
|
|
257
|
+
if buff.isDestroyed or buff[100] ~= 1 then
|
|
258
|
+
return
|
|
259
|
+
end
|
|
260
|
+
buff[100] = 2
|
|
257
261
|
local remainingDamageOverDuration = buff[113] or 0
|
|
258
262
|
local remainingHealingOverDuration = buff[113] or 0
|
|
259
263
|
if remainingDamageOverDuration ~= 0 or remainingHealingOverDuration ~= 0 then
|
|
@@ -482,7 +486,7 @@ function Buff.prototype.____constructor(self, _unit, typeIdOrTypeIds, polarityOr
|
|
|
482
486
|
self._abilityTypeIds = abilityTypeIds
|
|
483
487
|
end
|
|
484
488
|
for ____, abilityTypeId in ipairs(sortedKeysUnnested(parametersAbilityTypeIds)) do
|
|
485
|
-
local abilityParameters = parametersAbilityTypeIds[abilityTypeId]
|
|
489
|
+
local abilityParameters = checkNotNull(parametersAbilityTypeIds[abilityTypeId])
|
|
486
490
|
local addedAbility = _unit:addAbility(abilityTypeId)
|
|
487
491
|
if addedAbility ~= nil then
|
|
488
492
|
_unit:makeAbilityPermanent(abilityTypeId, true)
|
|
@@ -591,6 +595,20 @@ end
|
|
|
591
595
|
function Buff.prototype.expire(self)
|
|
592
596
|
expireBuff(self)
|
|
593
597
|
end
|
|
598
|
+
function Buff.prototype.dispel(self, source)
|
|
599
|
+
if self.isDestroyed or self[100] ~= 1 then
|
|
600
|
+
return
|
|
601
|
+
end
|
|
602
|
+
self[100] = 2
|
|
603
|
+
do
|
|
604
|
+
pcall(function()
|
|
605
|
+
self:onDispel(source)
|
|
606
|
+
end)
|
|
607
|
+
do
|
|
608
|
+
self:destroy()
|
|
609
|
+
end
|
|
610
|
+
end
|
|
611
|
+
end
|
|
594
612
|
function Buff.prototype.onCreate(self)
|
|
595
613
|
end
|
|
596
614
|
function Buff.prototype.onDestroy(self)
|
|
@@ -681,6 +699,8 @@ function Buff.getByTypeId(self, unit, typeId)
|
|
|
681
699
|
end
|
|
682
700
|
return nil
|
|
683
701
|
end
|
|
702
|
+
function Buff.prototype.onDispel(self, source)
|
|
703
|
+
end
|
|
684
704
|
function Buff.prototype.onExpiration(self)
|
|
685
705
|
local unit = self.unit
|
|
686
706
|
if self[120] ~= nil then
|
|
@@ -1473,35 +1493,40 @@ __TS__SetDescriptor(
|
|
|
1473
1493
|
Buff.createdEvent = buffCreatedEvent
|
|
1474
1494
|
Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
1475
1495
|
(function(self)
|
|
1476
|
-
local function destroyBuffIfNeeded(buff)
|
|
1477
|
-
|
|
1478
|
-
|
|
1496
|
+
local function destroyBuffIfNeeded(buff, isDispel, source)
|
|
1497
|
+
local currentHandle = getUnitAbility(buff[101].handle, buff.typeId)
|
|
1498
|
+
if currentHandle ~= buff.handle and buff[100] == 1 then
|
|
1499
|
+
if isDispel and currentHandle == nil and buff.unit.isAlive and buff.resistanceType == 1 and (buff._timer == nil or buff.remainingDuration > 0) then
|
|
1500
|
+
buff:dispel(source)
|
|
1501
|
+
else
|
|
1502
|
+
buff:destroy()
|
|
1503
|
+
end
|
|
1479
1504
|
end
|
|
1480
1505
|
end
|
|
1481
|
-
____exports.checkBuff = function(unit, buffTypeId)
|
|
1506
|
+
____exports.checkBuff = function(unit, buffTypeId, isDispel, source)
|
|
1482
1507
|
local buffByTypeId = buffByTypeIdByUnit[unit]
|
|
1483
1508
|
if buffByTypeId ~= nil then
|
|
1484
1509
|
local buff = buffByTypeId[buffTypeId]
|
|
1485
1510
|
if buff ~= nil then
|
|
1486
|
-
destroyBuffIfNeeded(buff)
|
|
1511
|
+
destroyBuffIfNeeded(buff, isDispel, source)
|
|
1487
1512
|
end
|
|
1488
1513
|
end
|
|
1489
1514
|
end
|
|
1490
|
-
____exports.checkBuffs = function(unit)
|
|
1491
|
-
____exports.Buff:forAll(unit, destroyBuffIfNeeded)
|
|
1515
|
+
____exports.checkBuffs = function(unit, isDispel, source)
|
|
1516
|
+
____exports.Buff:forAll(unit, destroyBuffIfNeeded, isDispel, source)
|
|
1492
1517
|
end
|
|
1493
1518
|
Unit.abilityChannelingStartEvent:addListener(
|
|
1494
1519
|
0,
|
|
1495
1520
|
function(caster)
|
|
1496
|
-
____exports.checkBuffs(caster)
|
|
1497
|
-
Timer:run(____exports.checkBuffs, caster)
|
|
1521
|
+
____exports.checkBuffs(caster, true, caster)
|
|
1522
|
+
Timer:run(____exports.checkBuffs, caster, true, caster)
|
|
1498
1523
|
end
|
|
1499
1524
|
)
|
|
1500
1525
|
Unit.abilityUnitTargetChannelingStartEvent:addListener(
|
|
1501
1526
|
0,
|
|
1502
1527
|
function(caster, ability, target)
|
|
1503
|
-
____exports.checkBuffs(target)
|
|
1504
|
-
Timer:run(____exports.checkBuffs, target)
|
|
1528
|
+
____exports.checkBuffs(target, true, caster)
|
|
1529
|
+
Timer:run(____exports.checkBuffs, target, true, caster)
|
|
1505
1530
|
end
|
|
1506
1531
|
)
|
|
1507
1532
|
Unit.abilityPointTargetChannelingStartEvent:addListener(
|
|
@@ -1512,17 +1537,40 @@ Buff.beingDestroyedEvent = buffBeingDestroyedEvent;
|
|
|
1512
1537
|
y,
|
|
1513
1538
|
ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1514
1539
|
)
|
|
1515
|
-
forEach(units, ____exports.checkBuffs)
|
|
1516
|
-
Timer:run(
|
|
1540
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1541
|
+
Timer:run(
|
|
1542
|
+
forEach,
|
|
1543
|
+
units,
|
|
1544
|
+
____exports.checkBuffs,
|
|
1545
|
+
true,
|
|
1546
|
+
caster
|
|
1547
|
+
)
|
|
1548
|
+
end
|
|
1549
|
+
)
|
|
1550
|
+
Unit.abilityNoTargetChannelingStartEvent:addListener(
|
|
1551
|
+
0,
|
|
1552
|
+
function(caster, ability)
|
|
1553
|
+
local radius = ability:getField(ABILITY_RLF_AREA_OF_EFFECT)
|
|
1554
|
+
if radius > 0 then
|
|
1555
|
+
local units = Unit:getInCollisionRange(caster.x, caster.y, radius)
|
|
1556
|
+
forEach(units, ____exports.checkBuffs, true, caster)
|
|
1557
|
+
Timer:run(
|
|
1558
|
+
forEach,
|
|
1559
|
+
units,
|
|
1560
|
+
____exports.checkBuffs,
|
|
1561
|
+
true,
|
|
1562
|
+
caster
|
|
1563
|
+
)
|
|
1564
|
+
end
|
|
1517
1565
|
end
|
|
1518
1566
|
)
|
|
1519
1567
|
Unit.onDamage:addListener(
|
|
1520
1568
|
0,
|
|
1521
1569
|
function(source, target)
|
|
1522
1570
|
if source ~= nil then
|
|
1523
|
-
____exports.checkBuffs
|
|
1571
|
+
Timer:run(____exports.checkBuffs, source, false)
|
|
1524
1572
|
end
|
|
1525
|
-
____exports.checkBuffs
|
|
1573
|
+
Timer:run(____exports.checkBuffs, target, false)
|
|
1526
1574
|
end
|
|
1527
1575
|
)
|
|
1528
1576
|
buffCreatedEvent:addListener(function(buff)
|
package/engine/index.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare abstract class Ability extends Handle<jability> {
|
|
|
37
37
|
abstract get level(): number;
|
|
38
38
|
abstract get cooldownRemaining(): number;
|
|
39
39
|
abstract set cooldownRemaining(cooldownRemaining: number);
|
|
40
|
+
abstract startCooldown(cooldown: number): void;
|
|
40
41
|
abstract interruptCast(): void;
|
|
41
42
|
static get onCreate(): Event<[Ability]>;
|
|
42
43
|
static get destroyEvent(): Event<[Ability]>;
|
|
@@ -50,6 +51,7 @@ export declare class UnrecognizedAbility extends Ability {
|
|
|
50
51
|
get level(): number;
|
|
51
52
|
get cooldownRemaining(): number;
|
|
52
53
|
set cooldownRemaining(_: number);
|
|
54
|
+
startCooldown(_: number): void;
|
|
53
55
|
interruptCast(): void;
|
|
54
56
|
}
|
|
55
57
|
export declare class UnitAbility extends Ability {
|
|
@@ -64,8 +66,12 @@ export declare class UnitAbility extends Ability {
|
|
|
64
66
|
get isDisabled(): boolean;
|
|
65
67
|
get level(): number;
|
|
66
68
|
set level(v: number);
|
|
69
|
+
/** Uses the native percentage scale. */
|
|
70
|
+
get cooldownRemainingPercent(): number;
|
|
71
|
+
set cooldownRemainingPercent(percent: number);
|
|
67
72
|
get cooldownRemaining(): number;
|
|
68
73
|
set cooldownRemaining(cooldownRemaining: number);
|
|
74
|
+
startCooldown(cooldown: number): void;
|
|
69
75
|
interruptCast(): void;
|
|
70
76
|
protected onDestroy(): HandleDestructor;
|
|
71
77
|
static get onCreate(): Event<[UnitAbility]>;
|
|
@@ -93,6 +99,7 @@ export declare class ItemAbility extends Ability {
|
|
|
93
99
|
get level(): number;
|
|
94
100
|
get cooldownRemaining(): number;
|
|
95
101
|
set cooldownRemaining(cooldownRemaining: number);
|
|
102
|
+
startCooldown(cooldown: number): void;
|
|
96
103
|
interruptCast(): void;
|
|
97
104
|
protected onDestroy(): HandleDestructor;
|
|
98
105
|
static get onCreate(): Event<[ItemAbility]>;
|
|
@@ -14,29 +14,34 @@ local abilityActionDummy = ____ability.abilityActionDummy
|
|
|
14
14
|
local doAbilityAction = ____ability.doAbilityAction
|
|
15
15
|
local doAbilityActionForceDummy = ____ability.doAbilityActionForceDummy
|
|
16
16
|
local startItemCooldown = ____ability.startItemCooldown
|
|
17
|
-
local
|
|
18
|
-
local
|
|
19
|
-
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
20
|
-
local setAbilityRealField = BlzSetAbilityRealField
|
|
21
|
-
local setAbilityBooleanField = BlzSetAbilityBooleanField
|
|
22
|
-
local setAbilityStringField = BlzSetAbilityStringField
|
|
23
|
-
local setAbilityIntegerLevelField = BlzSetAbilityIntegerLevelField
|
|
24
|
-
local setAbilityRealLevelField = BlzSetAbilityRealLevelField
|
|
25
|
-
local setAbilityBooleanLevelField = BlzSetAbilityBooleanLevelField
|
|
26
|
-
local setAbilityStringLevelField = BlzSetAbilityStringLevelField
|
|
27
|
-
local getAbilityIntegerField = BlzGetAbilityIntegerField
|
|
28
|
-
local getAbilityRealField = BlzGetAbilityRealField
|
|
17
|
+
local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
|
|
18
|
+
local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
|
|
29
19
|
local getAbilityBooleanField = BlzGetAbilityBooleanField
|
|
30
|
-
local
|
|
20
|
+
local getAbilityBooleanLevelField = BlzGetAbilityBooleanLevelField
|
|
21
|
+
local getAbilityIntegerField = BlzGetAbilityIntegerField
|
|
31
22
|
local getAbilityIntegerLevelField = BlzGetAbilityIntegerLevelField
|
|
23
|
+
local getAbilityRealField = BlzGetAbilityRealField
|
|
32
24
|
local getAbilityRealLevelField = BlzGetAbilityRealLevelField
|
|
33
|
-
local
|
|
25
|
+
local getAbilityStringField = BlzGetAbilityStringField
|
|
34
26
|
local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
27
|
+
local getHandleId = GetHandleId
|
|
28
|
+
local getUnitAbilityCooldownPercent = BlzGetUnitAbilityCooldownPercent
|
|
35
29
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
30
|
+
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
31
|
+
local order2orderId = _G.OrderId
|
|
32
|
+
local setAbilityBooleanField = BlzSetAbilityBooleanField
|
|
33
|
+
local setAbilityBooleanLevelField = BlzSetAbilityBooleanLevelField
|
|
34
|
+
local setAbilityIntegerField = BlzSetAbilityIntegerField
|
|
35
|
+
local setAbilityIntegerLevelField = BlzSetAbilityIntegerLevelField
|
|
36
|
+
local setAbilityRealField = BlzSetAbilityRealField
|
|
37
|
+
local setAbilityRealLevelField = BlzSetAbilityRealLevelField
|
|
38
|
+
local setAbilityStringField = BlzSetAbilityStringField
|
|
39
|
+
local setAbilityStringLevelField = BlzSetAbilityStringLevelField
|
|
40
|
+
local setUnitAbilityCooldownPercent = BlzSetUnitAbilityCooldownPercent
|
|
41
|
+
local setUnitAbilityCooldownRemaining = BlzSetUnitAbilityCooldownRemaining
|
|
36
42
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
37
|
-
local getHandleId = GetHandleId
|
|
38
|
-
local unitHideAbility = BlzUnitHideAbility
|
|
39
43
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
44
|
+
local unitHideAbility = BlzUnitHideAbility
|
|
40
45
|
local match = string.match
|
|
41
46
|
local ____type = _G.type
|
|
42
47
|
local ____tostring = _G.tostring
|
|
@@ -213,7 +218,6 @@ local levelRefreshFields = {
|
|
|
213
218
|
[fourCC("Neg1")] = true
|
|
214
219
|
}
|
|
215
220
|
local levelsField = ABILITY_IF_LEVELS
|
|
216
|
-
local order2orderId = _G.OrderId
|
|
217
221
|
local orderIdFieldByParentTypeId = {
|
|
218
222
|
[fourCC("ANcl")] = ABILITY_SLF_BASE_ORDER_ID_NCL6,
|
|
219
223
|
[fourCC("Aspb")] = ABILITY_SLF_BASE_ORDER_ID_SPB5,
|
|
@@ -286,8 +290,8 @@ function Ability.prototype.setField(self, field, levelOrValue, value)
|
|
|
286
290
|
local levels = getAbilityIntegerField(ability, levelsField)
|
|
287
291
|
setAbilityIntegerField(ability, levelsField, levels + 1)
|
|
288
292
|
local level = getUnitAbilityLevel(unit, typeId)
|
|
289
|
-
|
|
290
|
-
|
|
293
|
+
rawSetUnitAbilityLevel(unit, typeId, levels + 1)
|
|
294
|
+
rawSetUnitAbilityLevel(unit, typeId, level)
|
|
291
295
|
setAbilityIntegerField(ability, levelsField, levels)
|
|
292
296
|
end
|
|
293
297
|
return success
|
|
@@ -369,6 +373,8 @@ function UnrecognizedAbility.prototype.____constructor(self, typeId, owner)
|
|
|
369
373
|
UnrecognizedAbility.____super.prototype.____constructor(self, nil, typeId)
|
|
370
374
|
self.owner = owner
|
|
371
375
|
end
|
|
376
|
+
function UnrecognizedAbility.prototype.startCooldown(self, _)
|
|
377
|
+
end
|
|
372
378
|
function UnrecognizedAbility.prototype.interruptCast(self)
|
|
373
379
|
end
|
|
374
380
|
__TS__SetDescriptor(
|
|
@@ -420,6 +426,9 @@ function UnitAbility.prototype.decrementDisableCounter(self)
|
|
|
420
426
|
unitHideAbility(unit, typeId, true)
|
|
421
427
|
self.d = (self.d or 0) - 1
|
|
422
428
|
end
|
|
429
|
+
function UnitAbility.prototype.startCooldown(self, cooldown)
|
|
430
|
+
startUnitAbilityCooldown(self.u, self.typeId, cooldown)
|
|
431
|
+
end
|
|
423
432
|
function UnitAbility.prototype.interruptCast(self)
|
|
424
433
|
self.owner:interruptCast(self.typeId)
|
|
425
434
|
end
|
|
@@ -445,7 +454,20 @@ __TS__SetDescriptor(
|
|
|
445
454
|
return getUnitAbilityLevel(self.u, self.typeId) - 1
|
|
446
455
|
end,
|
|
447
456
|
set = function(self, v)
|
|
448
|
-
|
|
457
|
+
SetUnitAbilityLevel(self.u, self.typeId, v + 1)
|
|
458
|
+
end
|
|
459
|
+
},
|
|
460
|
+
true
|
|
461
|
+
)
|
|
462
|
+
__TS__SetDescriptor(
|
|
463
|
+
UnitAbility.prototype,
|
|
464
|
+
"cooldownRemainingPercent",
|
|
465
|
+
{
|
|
466
|
+
get = function(self)
|
|
467
|
+
return getUnitAbilityCooldownPercent(self.u, self.typeId)
|
|
468
|
+
end,
|
|
469
|
+
set = function(self, percent)
|
|
470
|
+
setUnitAbilityCooldownPercent(self.u, self.typeId, percent)
|
|
449
471
|
end
|
|
450
472
|
},
|
|
451
473
|
true
|
|
@@ -458,7 +480,7 @@ __TS__SetDescriptor(
|
|
|
458
480
|
return getUnitAbilityCooldownRemaining(self.u, self.typeId)
|
|
459
481
|
end,
|
|
460
482
|
set = function(self, cooldownRemaining)
|
|
461
|
-
|
|
483
|
+
setUnitAbilityCooldownRemaining(self.u, self.typeId, cooldownRemaining)
|
|
462
484
|
end
|
|
463
485
|
},
|
|
464
486
|
true
|
|
@@ -513,11 +535,18 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
513
535
|
value
|
|
514
536
|
)
|
|
515
537
|
end
|
|
538
|
+
function ItemAbility.prototype.startCooldown(self, cooldown)
|
|
539
|
+
local item = self.owner
|
|
540
|
+
local ____startItemCooldown_4 = startItemCooldown
|
|
541
|
+
local ____item_handle_3 = item.handle
|
|
542
|
+
local ____opt_1 = item.owner
|
|
543
|
+
____startItemCooldown_4(____item_handle_3, ____opt_1 and ____opt_1.handle, cooldown)
|
|
544
|
+
end
|
|
516
545
|
function ItemAbility.prototype.interruptCast(self)
|
|
517
546
|
local item = self.owner
|
|
518
547
|
local itemHandle = item.handle
|
|
519
|
-
local
|
|
520
|
-
local itemOwnerHandle =
|
|
548
|
+
local ____opt_5 = item.owner
|
|
549
|
+
local itemOwnerHandle = ____opt_5 and ____opt_5.handle
|
|
521
550
|
local cooldownRemaining = doAbilityActionForceDummy(itemHandle, itemOwnerHandle, getAbilityCooldown, self.typeId)
|
|
522
551
|
if cooldownRemaining == 0 then
|
|
523
552
|
startItemCooldown(itemHandle, itemOwnerHandle, 0.015625)
|
|
@@ -543,17 +572,17 @@ __TS__SetDescriptor(
|
|
|
543
572
|
{
|
|
544
573
|
get = function(self)
|
|
545
574
|
local item = self.owner
|
|
546
|
-
local
|
|
547
|
-
local
|
|
548
|
-
local
|
|
549
|
-
return
|
|
575
|
+
local ____doAbilityActionForceDummy_10 = doAbilityActionForceDummy
|
|
576
|
+
local ____item_handle_9 = item.handle
|
|
577
|
+
local ____opt_7 = item.owner
|
|
578
|
+
return ____doAbilityActionForceDummy_10(____item_handle_9, ____opt_7 and ____opt_7.handle, getAbilityCooldown, self.typeId)
|
|
550
579
|
end,
|
|
551
580
|
set = function(self, cooldownRemaining)
|
|
552
581
|
local item = self.owner
|
|
553
|
-
local
|
|
554
|
-
local
|
|
555
|
-
local
|
|
556
|
-
|
|
582
|
+
local ____startItemCooldown_14 = startItemCooldown
|
|
583
|
+
local ____item_handle_13 = item.handle
|
|
584
|
+
local ____opt_11 = item.owner
|
|
585
|
+
____startItemCooldown_14(____item_handle_13, ____opt_11 and ____opt_11.handle, cooldownRemaining)
|
|
557
586
|
end
|
|
558
587
|
},
|
|
559
588
|
true
|