warscript 0.0.1-dev.8895ff6 → 0.0.1-dev.89bc33b
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 +16 -2
- package/core/types/frame.lua +128 -67
- package/core/types/handle.lua +9 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +2 -1
- package/core/types/player.lua +18 -13
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +14 -9
- 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 +4 -0
- package/engine/behaviour/ability/damage.lua +19 -15
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- 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 +11 -5
- package/engine/behaviour/ability.lua +54 -0
- package/engine/behaviour/unit.d.ts +1 -0
- package/engine/behaviour/unit.lua +1 -0
- package/engine/buff.d.ts +61 -27
- package/engine/buff.lua +304 -133
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +7 -0
- package/engine/internal/ability.lua +65 -36
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- 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 +20 -5
- package/engine/internal/item.lua +146 -57
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -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/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -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 +12 -0
- package/engine/internal/unit/bonus.lua +92 -8
- 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/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +63 -2
- package/engine/internal/unit+bonus.lua +3 -3
- 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 +3 -11
- package/engine/internal/unit.lua +113 -152
- package/engine/local-client.d.ts +26 -0
- package/engine/local-client.lua +294 -54
- 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/auxiliary/unit-attribute.lua +1 -1
- 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/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- 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/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- 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/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -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-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.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 +25 -6
- package/engine/object-data/entry/ability-type.lua +244 -8
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- 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/object-field/ability.lua +2 -2
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field.d.ts +1 -1
- package/engine/object-field.lua +9 -7
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -0
- 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/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/unit.d.ts +6 -1
- package/engine/unit.lua +6 -1
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/network.lua +25 -1
- package/objutil/buff.lua +1 -1
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.lua +15 -0
- package/utility/arrays.d.ts +7 -1
- package/utility/arrays.lua +17 -0
- package/utility/linked-map.d.ts +11 -2
- package/utility/linked-map.lua +41 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +23 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
|
@@ -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 = {
|
|
@@ -25,8 +26,11 @@ export declare abstract class DamageAbilityBehavior<T extends DamageAbilityBehav
|
|
|
25
26
|
protected readonly damage: AbilityDependentValue<number>;
|
|
26
27
|
protected readonly parameters?: T | undefined;
|
|
27
28
|
protected constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: T | undefined);
|
|
29
|
+
protected precalculatedDamage?: number;
|
|
28
30
|
protected calculateDamage(caster: Unit): number;
|
|
29
31
|
protected damageTarget(caster: Unit, target: Widget, damage?: number): void;
|
|
32
|
+
onChannelingStart(caster: Unit): void;
|
|
33
|
+
onStop(): void;
|
|
30
34
|
}
|
|
31
35
|
export declare class DamageSelfAbilityBehavior extends DamageAbilityBehavior {
|
|
32
36
|
constructor(ability: Ability, damage: AbilityDependentValue<number>, parameters?: 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"
|
|
@@ -39,7 +38,7 @@ function DamageAbilityBehavior.prototype.damageTarget(self, caster, target, dama
|
|
|
39
38
|
local parameters = self.parameters
|
|
40
39
|
caster:damageTarget(
|
|
41
40
|
target,
|
|
42
|
-
damage or self:calculateDamage(caster),
|
|
41
|
+
damage or self.precalculatedDamage or self:calculateDamage(caster),
|
|
43
42
|
nil,
|
|
44
43
|
nil,
|
|
45
44
|
self:resolveCurrentAbilityDependentValue(parameters and parameters.attackType),
|
|
@@ -48,6 +47,12 @@ function DamageAbilityBehavior.prototype.damageTarget(self, caster, target, dama
|
|
|
48
47
|
self:resolveCurrentAbilityDependentValue(parameters and parameters.metadata)
|
|
49
48
|
)
|
|
50
49
|
end
|
|
50
|
+
function DamageAbilityBehavior.prototype.onChannelingStart(self, caster)
|
|
51
|
+
self.precalculatedDamage = self:calculateDamage(caster)
|
|
52
|
+
end
|
|
53
|
+
function DamageAbilityBehavior.prototype.onStop(self)
|
|
54
|
+
self.precalculatedDamage = nil
|
|
55
|
+
end
|
|
51
56
|
____exports.DamageSelfAbilityBehavior = __TS__Class()
|
|
52
57
|
local DamageSelfAbilityBehavior = ____exports.DamageSelfAbilityBehavior
|
|
53
58
|
DamageSelfAbilityBehavior.name = "DamageSelfAbilityBehavior"
|
|
@@ -76,21 +81,20 @@ function DamageAreaAbilityBehavior.prototype.____constructor(self, ability, dama
|
|
|
76
81
|
end
|
|
77
82
|
function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
|
|
78
83
|
local parameters = self.parameters
|
|
79
|
-
|
|
80
|
-
caster,
|
|
81
|
-
self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
|
|
84
|
+
caster:damageArea(
|
|
82
85
|
x,
|
|
83
86
|
y,
|
|
84
|
-
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)
|
|
85
97
|
)
|
|
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
98
|
end
|
|
95
99
|
____exports.DamageSelfAreaAbilityBehavior = __TS__Class()
|
|
96
100
|
local DamageSelfAreaAbilityBehavior = ____exports.DamageSelfAreaAbilityBehavior
|
|
@@ -10,9 +10,6 @@ local Unit = ____unit.Unit
|
|
|
10
10
|
local ____ability = require("engine.standard.fields.ability")
|
|
11
11
|
local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
|
|
12
12
|
local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
|
|
13
|
-
local ____math = require("math")
|
|
14
|
-
local max = ____math.max
|
|
15
|
-
local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
|
|
16
13
|
local ____sound = require("core.types.sound")
|
|
17
14
|
local Sound3D = ____sound.Sound3D
|
|
18
15
|
local SoundSettings = ____sound.SoundSettings
|
|
@@ -31,7 +28,11 @@ function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
|
|
|
31
28
|
return false
|
|
32
29
|
end
|
|
33
30
|
caster.mana = caster.mana - manaCost
|
|
34
|
-
|
|
31
|
+
if cooldown == 0 then
|
|
32
|
+
self.ability:interruptCast()
|
|
33
|
+
else
|
|
34
|
+
self.ability:startCooldown(cooldown)
|
|
35
|
+
end
|
|
35
36
|
self:flashCasterEffect(caster)
|
|
36
37
|
local soundPresetId = self.ability:getField(ABILITY_SF_EFFECT_SOUND)
|
|
37
38
|
if soundPresetId ~= "" then
|
|
@@ -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,16 +27,21 @@ 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;
|
|
29
|
-
protected
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
protected getDuration(widget: Widget): number;
|
|
31
|
+
flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
32
|
+
flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
33
|
+
flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
34
|
+
flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
|
|
35
|
+
flashSpecialEffect(...args: [
|
|
34
36
|
...pointOrWidget: [x: number, y: number] | [widget: Widget],
|
|
35
37
|
...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]
|
|
36
38
|
]): void;
|
|
37
39
|
private static MissileLaunchConfig;
|
|
38
40
|
private get missileLaunchConfig();
|
|
41
|
+
protected launchMissile(source: Unit, ...args: [
|
|
42
|
+
...pointOrWidget: [x: number, y: number] | [widget: Unit /** TODO: support Widget */],
|
|
43
|
+
...parameters: NonNullable<Parameters["missileParameters"]>
|
|
44
|
+
]): void;
|
|
39
45
|
protected onCreate(): void;
|
|
40
46
|
onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
|
|
41
47
|
onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): 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
|
|
@@ -30,7 +34,14 @@ local ____ability = require("engine.object-field.ability")
|
|
|
30
34
|
local AbilityField = ____ability.AbilityField
|
|
31
35
|
local AbilityLevelField = ____ability.AbilityLevelField
|
|
32
36
|
local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
|
|
37
|
+
local ____missile = require("core.types.missile")
|
|
38
|
+
local Missile = ____missile.Missile
|
|
33
39
|
local createBehaviorFunctionsByAbilityTypeId = {}
|
|
40
|
+
local function invokeOnMissileArrival(_missile, success, abilityBehavior, ...)
|
|
41
|
+
if success then
|
|
42
|
+
abilityBehavior:onMissileArrival(...)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
34
45
|
local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
|
|
35
46
|
local function createUnitEventListener(key)
|
|
36
47
|
return function(unit, ability, ...)
|
|
@@ -106,6 +117,14 @@ end
|
|
|
106
117
|
function AbilityBehavior.prototype.resolveCurrentAbilityDependentValue(self, value)
|
|
107
118
|
return resolveCurrentAbilityDependentValue(self.ability, value)
|
|
108
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
|
|
109
128
|
function AbilityBehavior.prototype.flashCasterEffect(self, widget, ...)
|
|
110
129
|
local attachmentPoint = CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD:getValue(self.ability)
|
|
111
130
|
Effect:flash(
|
|
@@ -160,6 +179,28 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrParame
|
|
|
160
179
|
)
|
|
161
180
|
end
|
|
162
181
|
end
|
|
182
|
+
function AbilityBehavior.prototype.launchMissile(self, source, xOrWidget, yOrParameter, ...)
|
|
183
|
+
if type(xOrWidget) ~= "number" then
|
|
184
|
+
Missile:launch(
|
|
185
|
+
self.missileLaunchConfig,
|
|
186
|
+
source,
|
|
187
|
+
xOrWidget,
|
|
188
|
+
invokeOnMissileArrival,
|
|
189
|
+
self,
|
|
190
|
+
yOrParameter,
|
|
191
|
+
...
|
|
192
|
+
)
|
|
193
|
+
else
|
|
194
|
+
Missile:launch(
|
|
195
|
+
self.missileLaunchConfig,
|
|
196
|
+
source,
|
|
197
|
+
vec2(xOrWidget, yOrParameter),
|
|
198
|
+
invokeOnMissileArrival,
|
|
199
|
+
self,
|
|
200
|
+
...
|
|
201
|
+
)
|
|
202
|
+
end
|
|
203
|
+
end
|
|
163
204
|
function AbilityBehavior.prototype.onCreate(self)
|
|
164
205
|
end
|
|
165
206
|
function AbilityBehavior.prototype.onValueChange(self, _value)
|
|
@@ -288,6 +329,19 @@ end)
|
|
|
288
329
|
AbilityLevelField.valueChangeEvent:addListener(function(ability, field)
|
|
289
330
|
____exports.AbilityBehavior:forAll(ability, checkBehaviorOnValueChange, field)
|
|
290
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)
|
|
291
345
|
Ability.onCreate:addListener(function(ability)
|
|
292
346
|
local createBehaviorFunctions = createBehaviorFunctionsByAbilityTypeId[ability.typeId]
|
|
293
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;
|
|
@@ -56,7 +54,8 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
56
54
|
damageIncrease?: NumberParameterValueType;
|
|
57
55
|
damageIncreaseFactor?: NumberParameterValueType;
|
|
58
56
|
armorIncrease?: NumberParameterValueType;
|
|
59
|
-
|
|
57
|
+
maxHealthIncrease?: NumberParameterValueType;
|
|
58
|
+
maxManaIncrease?: NumberParameterValueType;
|
|
60
59
|
attackSpeedIncreaseFactor?: NumberParameterValueType;
|
|
61
60
|
movementSpeedIncreaseFactor?: NumberParameterValueType;
|
|
62
61
|
manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
|
|
@@ -79,6 +78,9 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
79
78
|
maximumAutoAttackCount?: IntegerParameterValueType;
|
|
80
79
|
maximumDamageDealtEventCount?: IntegerParameterValueType;
|
|
81
80
|
maximumDamageReceivedEventCount?: IntegerParameterValueType;
|
|
81
|
+
absorbedDamageFactor?: NumberParameterValueType;
|
|
82
|
+
maximumDamageAbsorbed?: NumberParameterValueType;
|
|
83
|
+
destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
|
|
82
84
|
damageOnExpiration?: NumberParameterValueType;
|
|
83
85
|
healingOnExpiration?: NumberParameterValueType;
|
|
84
86
|
killsOnExpiration?: BooleanParameterValueType;
|
|
@@ -122,22 +124,26 @@ declare const enum BuffPropertyKey {
|
|
|
122
124
|
MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
|
|
123
125
|
DAMAGE_RECEIVED_EVENT_COUNT = 133,
|
|
124
126
|
MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
ABSORBED_DAMAGE_FACTOR = 135,
|
|
128
|
+
MAXIMUM_DAMAGE_ABSORBED = 136,
|
|
129
|
+
DAMAGE_ABSORBED = 137,
|
|
130
|
+
DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED = 138,
|
|
131
|
+
TURNS_INTO_GHOST = 139,
|
|
132
|
+
STUNS = 140,
|
|
133
|
+
IGNORES_STUN_IMMUNITY = 141,
|
|
134
|
+
DISABLES_AUTO_ATTACK = 142,
|
|
135
|
+
PROVIDES_INVULNERABILITY = 143,
|
|
136
|
+
KILLS_ON_EXPIRATION = 144,
|
|
137
|
+
EXPLODES_ON_EXPIRATION = 145,
|
|
138
|
+
MISS_PROBABILITY = 146,
|
|
139
|
+
ABILITY_COOLDOWN_FACTOR = 147,
|
|
140
|
+
ABILITY_COOLDOWN_MODIFIER = 148
|
|
135
141
|
}
|
|
136
142
|
export declare const enum BuffTypeIdSelectionPolicy {
|
|
137
143
|
LEAST_DURATION = 0
|
|
138
144
|
}
|
|
139
145
|
export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
|
|
140
|
-
export type BuffConstructorParameters<
|
|
146
|
+
export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
|
|
141
147
|
...typeId: [ApplicableBuffTypeId] | [
|
|
142
148
|
typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
|
|
143
149
|
typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
|
|
@@ -147,8 +153,10 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
|
|
|
147
153
|
...abilityOrParameters: [
|
|
148
154
|
ability?: Ability | AbilityBehavior,
|
|
149
155
|
parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
|
|
150
|
-
] | [
|
|
151
|
-
|
|
156
|
+
] | [
|
|
157
|
+
parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
|
|
158
|
+
]
|
|
159
|
+
] : never;
|
|
152
160
|
export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
|
|
153
161
|
private _unit;
|
|
154
162
|
protected readonly __additionalParametersBrand?: AdditionalParameters;
|
|
@@ -187,6 +195,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
187
195
|
private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
|
|
188
196
|
private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
|
|
189
197
|
private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
|
|
198
|
+
private [BuffPropertyKey.ABSORBED_DAMAGE_FACTOR]?;
|
|
199
|
+
private [BuffPropertyKey.MAXIMUM_DAMAGE_ABSORBED]?;
|
|
200
|
+
private [BuffPropertyKey.DAMAGE_ABSORBED]?;
|
|
201
|
+
private [BuffPropertyKey.DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED]?;
|
|
190
202
|
private [BuffPropertyKey.TURNS_INTO_GHOST]?;
|
|
191
203
|
private [BuffPropertyKey.STUNS]?;
|
|
192
204
|
private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
|
|
@@ -201,10 +213,11 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
201
213
|
readonly typeId: ApplicableBuffTypeId;
|
|
202
214
|
readonly polarity: BuffPolarity;
|
|
203
215
|
readonly resistanceType: BuffResistanceType;
|
|
204
|
-
readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any :
|
|
216
|
+
readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : AdditionalParameters extends Record<PropertyKey, never> ? undefined : {
|
|
205
217
|
[K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
|
|
206
218
|
};
|
|
207
219
|
private readonly handle;
|
|
220
|
+
readonly previousBuff?: Buff;
|
|
208
221
|
private _timer?;
|
|
209
222
|
private readonly _level?;
|
|
210
223
|
private readonly _spellStealPriority?;
|
|
@@ -212,7 +225,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
212
225
|
private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
|
|
213
226
|
private readonly _abilityTypeIds?;
|
|
214
227
|
private _behaviors?;
|
|
215
|
-
constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters
|
|
228
|
+
constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
|
|
216
229
|
get level(): number;
|
|
217
230
|
get remainingDamageOverDuration(): number;
|
|
218
231
|
set remainingDamageOverDuration(remainingDamageOverDuration: number);
|
|
@@ -240,6 +253,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
240
253
|
set receivedDamageFactor(receivedDamageFactor: number);
|
|
241
254
|
get armorIncrease(): number;
|
|
242
255
|
set armorIncrease(armorIncrease: number);
|
|
256
|
+
get maxHealthIncrease(): number;
|
|
257
|
+
set maxHealthIncrease(maxHealthIncrease: number);
|
|
258
|
+
get maxManaIncrease(): number;
|
|
259
|
+
set maxManaIncrease(maxManaIncrease: number);
|
|
243
260
|
get turnsIntoGhost(): boolean;
|
|
244
261
|
set turnsIntoGhost(turnsIntoGhost: boolean);
|
|
245
262
|
get stuns(): boolean;
|
|
@@ -271,8 +288,16 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
271
288
|
get manaRegenerationRateIncreaseFactor(): number;
|
|
272
289
|
set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
|
|
273
290
|
get duration(): number;
|
|
291
|
+
set duration(duration: number);
|
|
274
292
|
get remainingDuration(): number;
|
|
275
293
|
set remainingDuration(remainingDuration: number);
|
|
294
|
+
get absorbedDamageFactor(): number;
|
|
295
|
+
set absorbedDamageFactor(absorbedDamageFactor: number);
|
|
296
|
+
get maximumDamageAbsorbed(): number;
|
|
297
|
+
set maximumDamageAbsorbed(maximumDamageAbsorbed: number);
|
|
298
|
+
get damageAbsorbed(): number;
|
|
299
|
+
get destroysOnMaximumDamageAbsorbed(): boolean;
|
|
300
|
+
set destroysOnMaximumDamageAbsorbed(destroysOnMaximumDamageAbsorbed: boolean);
|
|
276
301
|
get abilityCooldownFactor(): number;
|
|
277
302
|
set abilityCooldownFactor(abilityCooldownFactor: number);
|
|
278
303
|
onAbilityGained(ability: Ability): void;
|
|
@@ -281,11 +306,20 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
281
306
|
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
282
307
|
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
283
308
|
]): void;
|
|
284
|
-
flashSpecialEffect(...parameters: [
|
|
309
|
+
flashSpecialEffect(...parameters: [
|
|
310
|
+
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
311
|
+
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
312
|
+
]): void;
|
|
313
|
+
private flash;
|
|
314
|
+
expire(): void;
|
|
315
|
+
/** Dispels this buff, invoking onDispel before removing it. */
|
|
316
|
+
dispel(source?: Unit): void;
|
|
285
317
|
protected onCreate(): void;
|
|
286
318
|
protected onDestroy(): Destructor;
|
|
287
319
|
static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
|
|
288
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;
|
|
289
323
|
onExpiration(): void;
|
|
290
324
|
onDeath(source: Unit | undefined): void;
|
|
291
325
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|