warscript 0.0.1-dev.48e5280 → 0.0.1-dev.4b6e45a
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 +21 -2
- package/core/types/frame.lua +153 -78
- 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/missile.lua +8 -7
- package/core/types/player.d.ts +2 -1
- package/core/types/player.lua +18 -13
- package/core/types/playerCamera.lua +1 -1
- 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 +706 -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.d.ts +14 -0
- package/engine/behaviour/ability/emulate-impact.lua +79 -5
- package/engine/behaviour/ability/instant-impact.d.ts +12 -1
- package/engine/behaviour/ability/instant-impact.lua +17 -2
- 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 +8 -0
- package/engine/behaviour/ability.lua +89 -8
- package/engine/behaviour/unit.d.ts +1 -0
- package/engine/behaviour/unit.lua +1 -0
- package/engine/buff.d.ts +79 -55
- package/engine/buff.lua +376 -246
- 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.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/object-data/returned-melee-damage-factor.d.ts +2 -0
- package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
- package/engine/internal/unit/ability.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 +11 -0
- package/engine/internal/unit/bonus.lua +80 -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/shared-vision-counter.d.ts +18 -0
- package/engine/internal/unit/shared-vision-counter.lua +31 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +73 -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 +96 -68
- package/engine/internal/unit-missile-launch.lua +13 -13
- package/engine/internal/unit.d.ts +5 -10
- package/engine/internal/unit.lua +67 -101
- package/engine/lightning.lua +4 -4
- 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/auxiliary/unit-weapon-type.d.ts +21 -0
- package/engine/object-data/auxiliary/unit-weapon-type.lua +2 -0
- 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/barrage.d.ts +12 -0
- package/engine/object-data/entry/ability-type/barrage.lua +52 -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-configurable.lua +2 -2
- 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/channel.d.ts +2 -2
- package/engine/object-data/entry/ability-type/channel.lua +3 -3
- 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 +33 -8
- package/engine/object-data/entry/ability-type.lua +256 -48
- package/engine/object-data/entry/buff-type/applicable.lua +122 -111
- 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 +57 -2
- package/engine/object-data/entry/unit-type.lua +412 -64
- 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.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/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/text-tag.d.ts +13 -1
- package/engine/text-tag.lua +79 -42
- 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/utility/arrays.d.ts +7 -1
- package/utility/arrays.lua +17 -0
- package/utility/linked-map.d.ts +2 -1
- package/utility/linked-map.lua +6 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +6 -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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
---
|
|
3
|
+
-- @internal The original natives, captured before `unit+ability` wraps them to report
|
|
4
|
+
-- ability level changes. For internal level juggling that must not be reported.
|
|
5
|
+
____exports.rawSetUnitAbilityLevel = SetUnitAbilityLevel
|
|
6
|
+
---
|
|
7
|
+
-- @internal
|
|
8
|
+
____exports.rawIncUnitAbilityLevel = IncUnitAbilityLevel
|
|
9
|
+
---
|
|
10
|
+
-- @internal
|
|
11
|
+
____exports.rawDecUnitAbilityLevel = DecUnitAbilityLevel
|
|
12
|
+
return ____exports
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____healing_2Dward_2Daura = require("engine.object-data.entry.ability-type.healing-ward-aura")
|
|
3
|
+
local HealingWardAuraAbilityType = ____healing_2Dward_2Daura.HealingWardAuraAbilityType
|
|
4
|
+
local ____item_2Dlife_2Dregeneration = require("engine.object-data.entry.ability-type.item-life-regeneration")
|
|
5
|
+
local ItemLifeRegenerationAbilityType = ____item_2Dlife_2Dregeneration.ItemLifeRegenerationAbilityType
|
|
6
|
+
local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
|
|
7
|
+
local combatClassificationsOf = ____combat_2Dclassification.combatClassificationsOf
|
|
8
|
+
local function createHealthRegenerationDummyAbilityType(healthRegeneration)
|
|
9
|
+
local abilityType = ItemLifeRegenerationAbilityType:create()
|
|
10
|
+
abilityType.isInternal = true
|
|
11
|
+
abilityType.isButtonVisible = false
|
|
12
|
+
abilityType.healthRegeneration = healthRegeneration
|
|
13
|
+
return abilityType.id
|
|
14
|
+
end
|
|
15
|
+
---
|
|
16
|
+
-- @internal For use by internal systems. The ability at index `i` regenerates `2^i` hit
|
|
17
|
+
-- points per second; together they compose any value from 0 to 1023.
|
|
18
|
+
____exports.HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS = compiletime(function()
|
|
19
|
+
local abilityTypeIds = {}
|
|
20
|
+
for i = 0, 9 do
|
|
21
|
+
abilityTypeIds[i + 1] = createHealthRegenerationDummyAbilityType(1 << i)
|
|
22
|
+
end
|
|
23
|
+
return abilityTypeIds
|
|
24
|
+
end)
|
|
25
|
+
---
|
|
26
|
+
-- @internal For use by internal systems.
|
|
27
|
+
____exports.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE = -1024
|
|
28
|
+
---
|
|
29
|
+
-- @internal For use by internal systems. Shifts negative values into the positive range.
|
|
30
|
+
____exports.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID = compiletime(function() return createHealthRegenerationDummyAbilityType(____exports.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE) end)
|
|
31
|
+
---
|
|
32
|
+
-- @internal For use by internal systems. Holds the fractional remainder; being an aura,
|
|
33
|
+
-- it accepts field writes but applies with the usual aura delay.
|
|
34
|
+
____exports.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
35
|
+
local abilityType = HealingWardAuraAbilityType:create()
|
|
36
|
+
abilityType.isInternal = true
|
|
37
|
+
abilityType.isButtonVisible = false
|
|
38
|
+
abilityType.healthRegeneration = 0
|
|
39
|
+
abilityType.isHealthRegenerationPercentage = false
|
|
40
|
+
abilityType.allowedTargetCombatClassifications = combatClassificationsOf(4096)
|
|
41
|
+
abilityType.buffTypeIds = {}
|
|
42
|
+
abilityType.targetEffectPresets = {}
|
|
43
|
+
return abilityType.id
|
|
44
|
+
end)
|
|
45
|
+
---
|
|
46
|
+
-- @internal For use by internal systems.
|
|
47
|
+
____exports.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD = ABILITY_RLF_AMOUNT_OF_HIT_POINTS_REGENERATED
|
|
48
|
+
return ____exports
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____spiked_2Dcarapace = require("engine.object-data.entry.ability-type.spiked-carapace")
|
|
3
|
+
local SpikedCarapaceAbilityType = ____spiked_2Dcarapace.SpikedCarapaceAbilityType
|
|
4
|
+
---
|
|
5
|
+
-- @internal For use by internal systems.
|
|
6
|
+
--
|
|
7
|
+
-- Spiked Carapace returns the given factor of melee attack damage to the attacker; the engine
|
|
8
|
+
-- decides what counts as a melee attack.
|
|
9
|
+
____exports.RETURNED_MELEE_DAMAGE_FACTOR_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
10
|
+
local abilityType = SpikedCarapaceAbilityType:create()
|
|
11
|
+
abilityType.isInternal = true
|
|
12
|
+
abilityType.isButtonVisible = false
|
|
13
|
+
abilityType.returnedDamageFactor = 0
|
|
14
|
+
abilityType.receivedDamageFactor = 1
|
|
15
|
+
abilityType.armorIncrease = 0
|
|
16
|
+
return abilityType.id
|
|
17
|
+
end)
|
|
18
|
+
---
|
|
19
|
+
-- @internal For use by internal systems.
|
|
20
|
+
____exports.RETURNED_MELEE_DAMAGE_FACTOR_ABILITY_FIELD = ABILITY_RLF_RETURNED_DAMAGE_FACTOR
|
|
21
|
+
return ____exports
|
|
@@ -397,6 +397,22 @@ local function invokeImpactEvent(unit, ability, ...)
|
|
|
397
397
|
ability[impactCallbackIdAttribute] = nil
|
|
398
398
|
eventInvoke(internalAbilityImpactEvent, unit, ability, ...)
|
|
399
399
|
end
|
|
400
|
+
--- Invokes the impact events of a cast that never reaches its native impact, with the
|
|
401
|
+
-- cast's target: the common event and the one matching the target kind, as a real impact.
|
|
402
|
+
--
|
|
403
|
+
-- @internal For use by internal systems only.
|
|
404
|
+
____exports.emulateAbilityImpactEvent = function(caster, ability, targetUnit, targetItem, targetDestructible, x, y)
|
|
405
|
+
eventInvoke(
|
|
406
|
+
internalAbilityImpactEvent,
|
|
407
|
+
caster,
|
|
408
|
+
ability,
|
|
409
|
+
targetUnit and targetUnit.handle,
|
|
410
|
+
targetItem and targetItem.handle,
|
|
411
|
+
targetDestructible and targetDestructible.handle,
|
|
412
|
+
x,
|
|
413
|
+
y
|
|
414
|
+
)
|
|
415
|
+
end
|
|
400
416
|
internalAbilityChannelingStartEvent:addListener(
|
|
401
417
|
999999,
|
|
402
418
|
function(unit, ability, ...)
|
|
@@ -2,22 +2,11 @@ local ____exports = {}
|
|
|
2
2
|
local ____unit = require("engine.internal.unit")
|
|
3
3
|
local Unit = ____unit.Unit
|
|
4
4
|
local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slot")
|
|
5
|
-
local
|
|
6
|
-
local unitsWithFillerItems = ____add_2Ditem_2Dto_2Dslot.unitsWithFillerItems
|
|
7
|
-
local setItemVisible = SetItemVisible
|
|
8
|
-
local unitRemoveItem = UnitRemoveItem
|
|
5
|
+
local unitRemoveFillerItems = ____add_2Ditem_2Dto_2Dslot.unitRemoveFillerItems
|
|
9
6
|
Unit.itemPickedUpEvent:addListener(
|
|
10
|
-
|
|
7
|
+
999999,
|
|
11
8
|
function(unit)
|
|
12
|
-
|
|
13
|
-
if unitsWithFillerItems[handle] ~= nil then
|
|
14
|
-
for previousSlot = 1, 6 do
|
|
15
|
-
local fillerItem = fillerItems[previousSlot]
|
|
16
|
-
unitRemoveItem(handle, fillerItem)
|
|
17
|
-
setItemVisible(fillerItem, false)
|
|
18
|
-
end
|
|
19
|
-
unitsWithFillerItems[handle] = nil
|
|
20
|
-
end
|
|
9
|
+
unitRemoveFillerItems(unit.handle)
|
|
21
10
|
end
|
|
22
11
|
)
|
|
23
12
|
return ____exports
|
|
@@ -4,9 +4,14 @@ local BlankItemType = ____blank.BlankItemType
|
|
|
4
4
|
local ____arrays = require("utility.arrays")
|
|
5
5
|
local array = ____arrays.array
|
|
6
6
|
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
7
|
-
local
|
|
7
|
+
local ignoreEventsItemTypeIds = ____ignore_2Devents_2Ditems.ignoreEventsItemTypeIds
|
|
8
|
+
local ____item_2Dcontainer = require("engine.internal.unit.item-container")
|
|
9
|
+
local UNIT_EXTENDED_INVENTORY_SLOT_COUNT = ____item_2Dcontainer.UNIT_EXTENDED_INVENTORY_SLOT_COUNT
|
|
10
|
+
local UNIT_INVENTORY_SLOT_COUNT = ____item_2Dcontainer.UNIT_INVENTORY_SLOT_COUNT
|
|
8
11
|
local setItemVisible = SetItemVisible
|
|
9
12
|
local unitAddItem = UnitAddItem
|
|
13
|
+
local unitInventorySize = UnitInventorySize
|
|
14
|
+
local unitItemInBagSlot = UnitItemInBagSlot
|
|
10
15
|
local unitItemInSlot = UnitItemInSlot
|
|
11
16
|
local unitRemoveItem = UnitRemoveItem
|
|
12
17
|
---
|
|
@@ -16,14 +21,15 @@ ____exports.SLOT_FILLER_ITEM_TYPE_ID = compiletime(function()
|
|
|
16
21
|
itemType.name = "[Warscript/Dummy] Slot Filler"
|
|
17
22
|
return itemType.id
|
|
18
23
|
end)
|
|
19
|
-
|
|
24
|
+
ignoreEventsItemTypeIds[____exports.SLOT_FILLER_ITEM_TYPE_ID] = true
|
|
25
|
+
--- Enough fillers to occupy every regular and extended inventory slot that precedes the last extended one.
|
|
26
|
+
--
|
|
20
27
|
-- @internal For use by internal systems only.
|
|
21
28
|
____exports.fillerItems = array(
|
|
22
|
-
|
|
29
|
+
UNIT_INVENTORY_SLOT_COUNT + UNIT_EXTENDED_INVENTORY_SLOT_COUNT,
|
|
23
30
|
function()
|
|
24
31
|
local item = CreateItem(____exports.SLOT_FILLER_ITEM_TYPE_ID, 0, 0)
|
|
25
32
|
setItemVisible(item, false)
|
|
26
|
-
ignoreEventsItems[item] = true
|
|
27
33
|
return item
|
|
28
34
|
end
|
|
29
35
|
)
|
|
@@ -32,21 +38,56 @@ ____exports.fillerItems = array(
|
|
|
32
38
|
____exports.unitsWithFillerItems = {}
|
|
33
39
|
---
|
|
34
40
|
-- @internal For use by internal systems only.
|
|
35
|
-
____exports.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
____exports.unitRemoveFillerItems = function(unit)
|
|
42
|
+
if ____exports.unitsWithFillerItems[unit] ~= nil then
|
|
43
|
+
for ____, fillerItem in ipairs(____exports.fillerItems) do
|
|
44
|
+
unitRemoveItem(unit, fillerItem)
|
|
45
|
+
setItemVisible(fillerItem, false)
|
|
46
|
+
end
|
|
47
|
+
____exports.unitsWithFillerItems[unit] = nil
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
--- Adds an item to a unit so that it lands in a specific slot of its regular or extended inventory.
|
|
51
|
+
--
|
|
52
|
+
-- The engine fills slots in order (the regular inventory first, then the extended one), so every empty slot
|
|
53
|
+
-- preceding the target is temporarily occupied by a filler item. Unlike `moveslot` orders, this works
|
|
54
|
+
-- regardless of whether the unit can currently act.
|
|
55
|
+
--
|
|
56
|
+
-- @internal For use by internal systems only.
|
|
57
|
+
____exports.unitAddItemToSlot = function(unit, item, slot, containerType)
|
|
58
|
+
if containerType == nil then
|
|
59
|
+
containerType = 0
|
|
60
|
+
end
|
|
61
|
+
local fillerCount = 0
|
|
62
|
+
local function fillEmptySlots(slotCount, itemInSlot)
|
|
63
|
+
for precedingSlot = 0, slotCount - 1 do
|
|
64
|
+
if itemInSlot(unit, precedingSlot) == nil then
|
|
65
|
+
unitAddItem(unit, ____exports.fillerItems[fillerCount + 1])
|
|
66
|
+
fillerCount = fillerCount + 1
|
|
67
|
+
end
|
|
40
68
|
end
|
|
41
69
|
end
|
|
42
|
-
|
|
70
|
+
if containerType == 0 then
|
|
71
|
+
fillEmptySlots(slot, unitItemInSlot)
|
|
72
|
+
else
|
|
73
|
+
fillEmptySlots(
|
|
74
|
+
unitInventorySize(unit),
|
|
75
|
+
unitItemInSlot
|
|
76
|
+
)
|
|
77
|
+
fillEmptySlots(slot, unitItemInBagSlot)
|
|
78
|
+
end
|
|
79
|
+
if fillerCount > 0 then
|
|
80
|
+
____exports.unitsWithFillerItems[unit] = true
|
|
81
|
+
end
|
|
82
|
+
local result = unitAddItem(unit, item)
|
|
43
83
|
if ____exports.unitsWithFillerItems[unit] ~= nil then
|
|
44
|
-
for
|
|
45
|
-
local fillerItem = ____exports.fillerItems[
|
|
84
|
+
for fillerIndex = 0, fillerCount - 1 do
|
|
85
|
+
local fillerItem = ____exports.fillerItems[fillerIndex + 1]
|
|
46
86
|
unitRemoveItem(unit, fillerItem)
|
|
47
87
|
setItemVisible(fillerItem, false)
|
|
48
88
|
end
|
|
49
89
|
____exports.unitsWithFillerItems[unit] = nil
|
|
50
90
|
end
|
|
91
|
+
return result
|
|
51
92
|
end
|
|
52
93
|
return ____exports
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
declare module "../unit" {
|
|
3
|
+
interface Unit {
|
|
4
|
+
getAnimationDuration(this: Unit, animation: string | number): number;
|
|
5
|
+
setAurasEnabled(this: Unit, enabled: boolean, affectsUI?: boolean): void;
|
|
6
|
+
isHeroGlowAllowed: boolean;
|
|
7
|
+
maximumFlyHeight: number;
|
|
8
|
+
showsAirToGroundIndicator: boolean;
|
|
9
|
+
alwaysDisplaysHealth: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface UnitWeapon {
|
|
12
|
+
resetAttack(this: UnitWeapon): void;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____unit = require("engine.internal.unit")
|
|
5
|
+
local Unit = ____unit.Unit
|
|
6
|
+
local UnitWeapon = ____unit.UnitWeapon
|
|
7
|
+
local allowHeroGlowOnUnit = AllowHeroGlowOnUnit
|
|
8
|
+
local disallowHeroGlowOnUnit = DisallowHeroGlowOnUnit
|
|
9
|
+
local getUnitAnimationDuration = BlzGetUnitAnimationDuration
|
|
10
|
+
local getUnitAnimationDurationByIndex = BlzGetUnitAnimationDurationByIndex
|
|
11
|
+
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
12
|
+
local getUnitRealField = BlzGetUnitRealField
|
|
13
|
+
local heroGlowIsAllowedOnUnit = HeroGlowIsAllowedOnUnit
|
|
14
|
+
local resetUnitAttack = BlzResetUnitAttack
|
|
15
|
+
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
16
|
+
local setUnitRealField = BlzSetUnitRealField
|
|
17
|
+
local unitEnableAuras = BlzUnitEnableAuras
|
|
18
|
+
Unit.prototype.getAnimationDuration = function(self, animation)
|
|
19
|
+
if type(animation) == "number" then
|
|
20
|
+
return getUnitAnimationDurationByIndex(self.handle, animation)
|
|
21
|
+
end
|
|
22
|
+
return getUnitAnimationDuration(self.handle, animation)
|
|
23
|
+
end
|
|
24
|
+
Unit.prototype.setAurasEnabled = function(self, enabled, affectsUI)
|
|
25
|
+
if affectsUI == nil then
|
|
26
|
+
affectsUI = true
|
|
27
|
+
end
|
|
28
|
+
unitEnableAuras(self.handle, enabled, affectsUI)
|
|
29
|
+
end
|
|
30
|
+
__TS__ObjectDefineProperty(
|
|
31
|
+
Unit.prototype,
|
|
32
|
+
"isHeroGlowAllowed",
|
|
33
|
+
{
|
|
34
|
+
get = function(self)
|
|
35
|
+
return heroGlowIsAllowedOnUnit(self.handle)
|
|
36
|
+
end,
|
|
37
|
+
set = function(self, allowed)
|
|
38
|
+
if allowed then
|
|
39
|
+
allowHeroGlowOnUnit(self.handle)
|
|
40
|
+
else
|
|
41
|
+
disallowHeroGlowOnUnit(self.handle)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
__TS__ObjectDefineProperty(
|
|
47
|
+
Unit.prototype,
|
|
48
|
+
"maximumFlyHeight",
|
|
49
|
+
{
|
|
50
|
+
get = function(self)
|
|
51
|
+
return getUnitRealField(self.handle, UNIT_RF_FLY_MAX_HEIGHT)
|
|
52
|
+
end,
|
|
53
|
+
set = function(self, height)
|
|
54
|
+
setUnitRealField(self.handle, UNIT_RF_FLY_MAX_HEIGHT, height)
|
|
55
|
+
end
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
__TS__ObjectDefineProperty(
|
|
59
|
+
Unit.prototype,
|
|
60
|
+
"showsAirToGroundIndicator",
|
|
61
|
+
{
|
|
62
|
+
get = function(self)
|
|
63
|
+
return getUnitBooleanField(self.handle, UNIT_BF_SHOW_AIR_TO_GROUND)
|
|
64
|
+
end,
|
|
65
|
+
set = function(self, show)
|
|
66
|
+
setUnitBooleanField(self.handle, UNIT_BF_SHOW_AIR_TO_GROUND, show)
|
|
67
|
+
end
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
__TS__ObjectDefineProperty(
|
|
71
|
+
Unit.prototype,
|
|
72
|
+
"alwaysDisplaysHealth",
|
|
73
|
+
{
|
|
74
|
+
get = function(self)
|
|
75
|
+
return getUnitBooleanField(self.handle, UNIT_BF_FORCE_DISPLAY_HP)
|
|
76
|
+
end,
|
|
77
|
+
set = function(self, show)
|
|
78
|
+
setUnitBooleanField(self.handle, UNIT_BF_FORCE_DISPLAY_HP, show)
|
|
79
|
+
end
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
UnitWeapon.prototype.resetAttack = function(self)
|
|
83
|
+
resetUnitAttack(self.unit.handle, self.index)
|
|
84
|
+
end
|
|
85
|
+
return ____exports
|
|
@@ -13,8 +13,10 @@ export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
|
|
|
13
13
|
export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
|
|
14
14
|
export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
|
|
15
15
|
export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
|
|
16
|
+
export type UnitReturnedMeleeDamageFactorBonusId = UnitBonusId<"returnedMeleeDamageFactor">;
|
|
16
17
|
export type UnitEvasionProbabilityBonusId = UnitBonusId<"evasionProbability">;
|
|
17
18
|
export type UnitManaRegenerationRateFactorBonusId = UnitBonusId<"manaRegenerationRateFactor">;
|
|
19
|
+
export type UnitHealthRegenerationRateBonusId = UnitBonusId<"healthRegenerationRate">;
|
|
18
20
|
export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
19
21
|
abilityTypeId: AbilityTypeId;
|
|
20
22
|
field: jabilityintegerlevelfield;
|
|
@@ -26,6 +28,11 @@ export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
|
26
28
|
} | {
|
|
27
29
|
abilityTypeId?: undefined;
|
|
28
30
|
valueByUnit: LuaMap<Unit, number>;
|
|
31
|
+
apply?: undefined;
|
|
32
|
+
} | {
|
|
33
|
+
abilityTypeId?: undefined;
|
|
34
|
+
valueByUnit?: undefined;
|
|
35
|
+
apply: (this: void, unitHandle: junit, value: number) => void;
|
|
29
36
|
}) & {
|
|
30
37
|
reduce: (this: void, array: number[]) => number;
|
|
31
38
|
initialValue: number;
|
|
@@ -40,8 +47,12 @@ export declare namespace UnitBonusType {
|
|
|
40
47
|
const AUTO_ATTACK_DAMAGE: UnitBonusType<UnitAutoAttackDamageBonusId>;
|
|
41
48
|
const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
42
49
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
50
|
+
/** The factor of melee attack damage returned to the attacker, as Spiked Carapace. */
|
|
51
|
+
const RETURNED_MELEE_DAMAGE_FACTOR: UnitBonusType<UnitReturnedMeleeDamageFactorBonusId>;
|
|
43
52
|
const EVASION_PROBABILITY: UnitBonusType<UnitEvasionProbabilityBonusId>;
|
|
44
53
|
const MANA_REGENERATION_RATE_FACTOR: UnitBonusType<UnitManaRegenerationRateFactorBonusId>;
|
|
54
|
+
/** Supported range: -1000 to 1000; the total is clamped to it. */
|
|
55
|
+
const HEALTH_REGENERATION_RATE: UnitBonusType<UnitHealthRegenerationRateBonusId>;
|
|
45
56
|
}
|
|
46
57
|
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
47
58
|
export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
|
+
local applyAbilityBonus, applyHealthRegenerationRateBonus
|
|
2
3
|
local ____unit = require("engine.internal.unit")
|
|
3
4
|
local Unit = ____unit.Unit
|
|
4
5
|
local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
|
|
@@ -6,6 +7,8 @@ local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABIL
|
|
|
6
7
|
local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
7
8
|
local ____utility = require("engine.internal.utility")
|
|
8
9
|
local addInternalAbility = ____utility.addInternalAbility
|
|
10
|
+
local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
|
|
11
|
+
local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
|
|
9
12
|
local ____arrays = require("utility.arrays")
|
|
10
13
|
local product = ____arrays.product
|
|
11
14
|
local sum = ____arrays.sum
|
|
@@ -33,6 +36,15 @@ local MANA_BONUS_DUMMY_ABILITY_TYPE_ID = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILI
|
|
|
33
36
|
local ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor = require("engine.internal.object-data.mana-regeneration-rate-increase-factor")
|
|
34
37
|
local MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD
|
|
35
38
|
local MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
|
|
39
|
+
local ____health_2Dregeneration_2Drate_2Dincrease = require("engine.internal.object-data.health-regeneration-rate-increase")
|
|
40
|
+
local FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD = ____health_2Dregeneration_2Drate_2Dincrease.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD
|
|
41
|
+
local FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID = ____health_2Dregeneration_2Drate_2Dincrease.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID
|
|
42
|
+
local HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID = ____health_2Dregeneration_2Drate_2Dincrease.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID
|
|
43
|
+
local HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE = ____health_2Dregeneration_2Drate_2Dincrease.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE
|
|
44
|
+
local HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS = ____health_2Dregeneration_2Drate_2Dincrease.HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS
|
|
45
|
+
local ____returned_2Dmelee_2Ddamage_2Dfactor = require("engine.internal.object-data.returned-melee-damage-factor")
|
|
46
|
+
local RETURNED_MELEE_DAMAGE_FACTOR_ABILITY_FIELD = ____returned_2Dmelee_2Ddamage_2Dfactor.RETURNED_MELEE_DAMAGE_FACTOR_ABILITY_FIELD
|
|
47
|
+
local RETURNED_MELEE_DAMAGE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____returned_2Dmelee_2Ddamage_2Dfactor.RETURNED_MELEE_DAMAGE_FACTOR_DUMMY_ABILITY_TYPE_ID
|
|
36
48
|
local damageFactorByUnit = {}
|
|
37
49
|
local receivedDamageFactorByUnit = {}
|
|
38
50
|
local function atLeastOnceProbability(array)
|
|
@@ -89,6 +101,14 @@ do
|
|
|
89
101
|
}
|
|
90
102
|
UnitBonusType.DAMAGE_FACTOR = {reduce = product, valueByUnit = damageFactorByUnit, initialValue = 1}
|
|
91
103
|
UnitBonusType.RECEIVED_DAMAGE_FACTOR = {reduce = product, valueByUnit = receivedDamageFactorByUnit, initialValue = 1}
|
|
104
|
+
--- The factor of melee attack damage returned to the attacker, as Spiked Carapace.
|
|
105
|
+
UnitBonusType.RETURNED_MELEE_DAMAGE_FACTOR = {
|
|
106
|
+
abilityTypeId = RETURNED_MELEE_DAMAGE_FACTOR_DUMMY_ABILITY_TYPE_ID,
|
|
107
|
+
field = RETURNED_MELEE_DAMAGE_FACTOR_ABILITY_FIELD,
|
|
108
|
+
integer = false,
|
|
109
|
+
reduce = sum,
|
|
110
|
+
initialValue = 0
|
|
111
|
+
}
|
|
92
112
|
UnitBonusType.EVASION_PROBABILITY = {
|
|
93
113
|
abilityTypeId = EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID,
|
|
94
114
|
field = EVASION_PROBABILITY_ABILITY_FIELD,
|
|
@@ -103,33 +123,88 @@ do
|
|
|
103
123
|
reduce = sum,
|
|
104
124
|
initialValue = 0
|
|
105
125
|
}
|
|
126
|
+
--- Supported range: -1000 to 1000; the total is clamped to it.
|
|
127
|
+
UnitBonusType.HEALTH_REGENERATION_RATE = {
|
|
128
|
+
apply = function(unitHandle, value) return applyHealthRegenerationRateBonus(unitHandle, value) end,
|
|
129
|
+
reduce = sum,
|
|
130
|
+
initialValue = 0
|
|
131
|
+
}
|
|
106
132
|
end
|
|
107
133
|
local bonusesByUnitByBonusType = {}
|
|
108
134
|
local nextId = 1
|
|
135
|
+
local ceil = math.ceil
|
|
136
|
+
local floor = math.floor
|
|
137
|
+
local max = math.max
|
|
138
|
+
local min = math.min
|
|
109
139
|
local function processUnitBonus(unit, bonusType, bonusesArray)
|
|
110
140
|
local unitHandle = unit.handle
|
|
111
141
|
local totalValue = bonusType.reduce(bonusesArray)
|
|
112
142
|
local abilityTypeId = bonusType.abilityTypeId
|
|
113
143
|
if abilityTypeId == nil then
|
|
114
144
|
local valueByUnit = bonusType.valueByUnit
|
|
115
|
-
if
|
|
145
|
+
if valueByUnit == nil then
|
|
146
|
+
bonusType.apply(unitHandle, totalValue)
|
|
147
|
+
elseif totalValue == bonusType.initialValue then
|
|
116
148
|
valueByUnit[unit] = nil
|
|
117
149
|
else
|
|
118
150
|
valueByUnit[unit] = totalValue
|
|
119
151
|
end
|
|
120
152
|
return
|
|
121
153
|
end
|
|
122
|
-
|
|
154
|
+
applyAbilityBonus(
|
|
155
|
+
unitHandle,
|
|
156
|
+
abilityTypeId,
|
|
157
|
+
bonusType.field,
|
|
158
|
+
bonusType.integer,
|
|
159
|
+
totalValue,
|
|
160
|
+
bonusType.initialValue
|
|
161
|
+
)
|
|
162
|
+
end
|
|
163
|
+
applyAbilityBonus = function(unitHandle, abilityTypeId, field, integer, value, initialValue)
|
|
164
|
+
if value == initialValue then
|
|
123
165
|
UnitRemoveAbility(unitHandle, abilityTypeId)
|
|
124
166
|
return
|
|
125
167
|
end
|
|
126
168
|
local abilityHandle = checkNotNull(addInternalAbility(unitHandle, abilityTypeId))
|
|
127
|
-
check((
|
|
169
|
+
check((integer and BlzSetAbilityIntegerLevelField or BlzSetAbilityRealLevelField)(abilityHandle, field, 0, value))
|
|
128
170
|
BlzSetAbilityIntegerField(abilityHandle, ABILITY_IF_LEVELS, 2)
|
|
129
|
-
|
|
130
|
-
|
|
171
|
+
rawSetUnitAbilityLevel(unitHandle, abilityTypeId, 2)
|
|
172
|
+
rawSetUnitAbilityLevel(unitHandle, abilityTypeId, 1)
|
|
131
173
|
BlzSetAbilityIntegerField(abilityHandle, ABILITY_IF_LEVELS, 1)
|
|
132
174
|
end
|
|
175
|
+
local function setInternalAbilityPresence(unitHandle, abilityTypeId, present)
|
|
176
|
+
if present then
|
|
177
|
+
addInternalAbility(unitHandle, abilityTypeId)
|
|
178
|
+
else
|
|
179
|
+
UnitRemoveAbility(unitHandle, abilityTypeId)
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
local MINIMUM_HEALTH_REGENERATION_RATE_BONUS = -1000
|
|
183
|
+
local MAXIMUM_HEALTH_REGENERATION_RATE_BONUS = 1000
|
|
184
|
+
applyHealthRegenerationRateBonus = function(unitHandle, value)
|
|
185
|
+
value = max(
|
|
186
|
+
MINIMUM_HEALTH_REGENERATION_RATE_BONUS,
|
|
187
|
+
min(value, MAXIMUM_HEALTH_REGENERATION_RATE_BONUS)
|
|
188
|
+
)
|
|
189
|
+
local integerValue = value < 0 and ceil(value) or floor(value)
|
|
190
|
+
local remainder = integerValue
|
|
191
|
+
setInternalAbilityPresence(unitHandle, HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID, remainder < 0)
|
|
192
|
+
if remainder < 0 then
|
|
193
|
+
remainder = remainder - HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE
|
|
194
|
+
end
|
|
195
|
+
for ____, abilityTypeId in ipairs(HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS) do
|
|
196
|
+
setInternalAbilityPresence(unitHandle, abilityTypeId, remainder % 2 == 1)
|
|
197
|
+
remainder = floor(remainder / 2)
|
|
198
|
+
end
|
|
199
|
+
applyAbilityBonus(
|
|
200
|
+
unitHandle,
|
|
201
|
+
FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID,
|
|
202
|
+
FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD,
|
|
203
|
+
false,
|
|
204
|
+
value - integerValue,
|
|
205
|
+
0
|
|
206
|
+
)
|
|
207
|
+
end
|
|
133
208
|
____exports.addUnitBonus = function(unit, bonusType, value)
|
|
134
209
|
local bonusesByUnit = bonusesByUnitByBonusType[bonusType]
|
|
135
210
|
if bonusesByUnit == nil then
|
|
@@ -32,7 +32,7 @@ declare module "../unit" {
|
|
|
32
32
|
* @param includeAuras Whether to remove aura buffs. Default `true`.
|
|
33
33
|
* @param autoDispel Unknown. Default `false`.
|
|
34
34
|
*/
|
|
35
|
-
removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean):
|
|
36
|
-
removeBuffs(buffTypeIds: number[]):
|
|
35
|
+
removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean): number;
|
|
36
|
+
removeBuffs(buffTypeIds: number[]): number;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
local ____lualib = require("lualib_bundle")
|
|
2
|
-
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
3
|
-
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
4
|
-
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
5
1
|
local ____exports = {}
|
|
6
2
|
local ____buff = require("engine.buff")
|
|
7
3
|
local checkBuff = ____buff.checkBuff
|
|
@@ -19,7 +15,7 @@ Unit.prototype.hasBuff = function(self, buffTypeId)
|
|
|
19
15
|
end
|
|
20
16
|
Unit.prototype.removeBuff = function(self, buffTypeId)
|
|
21
17
|
if removeBuff(self.handle, buffTypeId) then
|
|
22
|
-
checkBuff(self, buffTypeId)
|
|
18
|
+
checkBuff(self, buffTypeId, false)
|
|
23
19
|
return true
|
|
24
20
|
end
|
|
25
21
|
return false
|
|
@@ -46,36 +42,55 @@ Unit.prototype.countBuffs = function(self, polarity, resistanceType, includeExpi
|
|
|
46
42
|
)
|
|
47
43
|
end
|
|
48
44
|
Unit.prototype.removeBuffs = function(self, polarityOrBuffTypeIds, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
|
|
45
|
+
local handle = self.handle
|
|
46
|
+
local cnt
|
|
49
47
|
if type(polarityOrBuffTypeIds) == "table" then
|
|
50
|
-
|
|
48
|
+
cnt = 0
|
|
51
49
|
for i = 1, #polarityOrBuffTypeIds do
|
|
52
|
-
unitRemoveAbility(handle, polarityOrBuffTypeIds[i])
|
|
50
|
+
cnt = cnt + (unitRemoveAbility(handle, polarityOrBuffTypeIds[i]) and 1 or 0)
|
|
53
51
|
end
|
|
54
52
|
else
|
|
55
|
-
local
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
(resistanceType or 0) & 1 ~= 0,
|
|
60
|
-
(resistanceType or 0) & 2 ~= 0
|
|
61
|
-
)
|
|
53
|
+
local positive = (polarityOrBuffTypeIds or 3) & 1 ~= 0
|
|
54
|
+
local negative = (polarityOrBuffTypeIds or 3) & 2 ~= 0
|
|
55
|
+
local magic = (resistanceType or 0) & 1 ~= 0
|
|
56
|
+
local physical = (resistanceType or 0) & 2 ~= 0
|
|
62
57
|
local ____includeExpirationTimers_0 = includeExpirationTimers
|
|
63
58
|
if ____includeExpirationTimers_0 == nil then
|
|
64
59
|
____includeExpirationTimers_0 = true
|
|
65
60
|
end
|
|
66
|
-
|
|
61
|
+
includeExpirationTimers = ____includeExpirationTimers_0
|
|
67
62
|
local ____includeAuras_1 = includeAuras
|
|
68
63
|
if ____includeAuras_1 == nil then
|
|
69
64
|
____includeAuras_1 = true
|
|
70
65
|
end
|
|
71
|
-
|
|
66
|
+
includeAuras = ____includeAuras_1
|
|
72
67
|
local ____autoDispel_2 = autoDispel
|
|
73
68
|
if ____autoDispel_2 == nil then
|
|
74
69
|
____autoDispel_2 = false
|
|
75
70
|
end
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
autoDispel = ____autoDispel_2
|
|
72
|
+
cnt = unitCountBuffsEx(
|
|
73
|
+
handle,
|
|
74
|
+
positive,
|
|
75
|
+
negative,
|
|
76
|
+
magic,
|
|
77
|
+
physical,
|
|
78
|
+
includeExpirationTimers,
|
|
79
|
+
includeAuras,
|
|
80
|
+
autoDispel
|
|
81
|
+
)
|
|
82
|
+
unitRemoveBuffsEx(
|
|
83
|
+
handle,
|
|
84
|
+
positive,
|
|
85
|
+
negative,
|
|
86
|
+
magic,
|
|
87
|
+
physical,
|
|
88
|
+
includeExpirationTimers,
|
|
89
|
+
includeAuras,
|
|
90
|
+
autoDispel
|
|
91
|
+
)
|
|
78
92
|
end
|
|
79
|
-
checkBuffs(self)
|
|
93
|
+
checkBuffs(self, false)
|
|
94
|
+
return cnt
|
|
80
95
|
end
|
|
81
96
|
return ____exports
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { Item } from "../item";
|
|
3
|
+
import { EquipmentSlot } from "../../object-data/auxiliary/equipment-slot";
|
|
4
|
+
import { EquipmentType } from "../../object-data/auxiliary/equipment-type";
|
|
5
|
+
import type { UnitItemContainer } from "./item-container";
|
|
6
|
+
export interface UnitEquipmentInventory extends UnitItemContainer {
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A live view of a unit's equipment inventory, indexed by {@link EquipmentSlot}.
|
|
10
|
+
*
|
|
11
|
+
* Equipment slots are typed, so the engine picks the slot itself when equipping: slot assignment frees
|
|
12
|
+
* the requested slot and then equips the item. The only type with two slots is the ring; equipping into
|
|
13
|
+
* ALTERNATE_RING temporarily occupies RING with a filler ring, mirroring the regular inventory's approach.
|
|
14
|
+
*/
|
|
15
|
+
export declare class UnitEquipmentInventory {
|
|
16
|
+
constructor(handle: junit);
|
|
17
|
+
equip(item: Item): boolean;
|
|
18
|
+
unequip(item: Item): void;
|
|
19
|
+
unequipSlot(slot: EquipmentSlot): Item | undefined;
|
|
20
|
+
has(item: Item): boolean;
|
|
21
|
+
hasAny(): boolean;
|
|
22
|
+
isSlotEmpty(slot: EquipmentSlot): boolean;
|
|
23
|
+
hasType(type: EquipmentType): boolean;
|
|
24
|
+
canEquipType(type: EquipmentType): boolean;
|
|
25
|
+
findSlot(item: Item): EquipmentSlot | undefined;
|
|
26
|
+
protected __newindex(slot: number, item: Item | undefined): void;
|
|
27
|
+
protected __index(key: string | number): unknown;
|
|
28
|
+
protected __len(): number;
|
|
29
|
+
protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
|
|
30
|
+
}
|
|
31
|
+
declare module "../unit" {
|
|
32
|
+
interface Unit {
|
|
33
|
+
readonly equipmentInventory: UnitEquipmentInventory;
|
|
34
|
+
}
|
|
35
|
+
namespace Unit {
|
|
36
|
+
const itemEquippedEvent: UnitTriggerEvent<[item: Item]>;
|
|
37
|
+
const itemUnequippedEvent: UnitTriggerEvent<[item: Item]>;
|
|
38
|
+
let itemStackedEvent: UnitTriggerEvent<[
|
|
39
|
+
target: Item,
|
|
40
|
+
source: Item,
|
|
41
|
+
previousTargetCharges: number
|
|
42
|
+
]>;
|
|
43
|
+
}
|
|
44
|
+
}
|