warscript 0.0.1-dev.f5421e8 → 0.0.1-dev.f594e71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +136 -58
- 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 +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +19 -9
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/core/types/unit.d.ts +4 -0
- package/core/types/unit.lua +4 -0
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +40 -49
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +23 -7
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +12 -6
- package/engine/behaviour/ability.lua +49 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -3
- package/engine/behaviour/unit.lua +270 -6
- package/engine/buff.d.ts +75 -28
- package/engine/buff.lua +433 -196
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +11 -1
- package/engine/internal/ability.lua +100 -41
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.d.ts +1 -0
- package/engine/internal/item+owner.lua +19 -6
- package/engine/internal/item.d.ts +28 -16
- package/engine/internal/item.lua +241 -82
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -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/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +113 -12
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bag.d.ts +18 -0
- package/engine/internal/unit/bag.lua +63 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment.d.ts +36 -0
- package/engine/internal/unit/equipment.lua +169 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
- package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +11 -11
- package/engine/internal/unit+damage.lua +43 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +39 -27
- package/engine/internal/unit.lua +382 -269
- package/engine/local-client.d.ts +27 -0
- package/engine/local-client.lua +370 -54
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/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 +13 -0
- package/engine/object-data/auxiliary/equipment-type.lua +2 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/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/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/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -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/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/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/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/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -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/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -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/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/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/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 +12 -3
- package/engine/object-data/entry/ability-type.lua +148 -7
- package/engine/object-data/entry/buff-type/applicable.lua +113 -104
- package/engine/object-data/entry/buff-type.d.ts +10 -12
- package/engine/object-data/entry/buff-type.lua +37 -27
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +12 -3
- package/engine/object-data/entry/item-type.lua +52 -0
- package/engine/object-data/entry/lightning-type.d.ts +2 -2
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +64 -6
- package/engine/object-data/entry/unit-type.lua +531 -85
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +4 -1
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -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 +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- 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/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +10 -1
- package/engine/unit.lua +10 -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/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +11 -10
- 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/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.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
|
@@ -21,6 +21,16 @@ local ____preconditions = require("utility.preconditions")
|
|
|
21
21
|
local checkNotNull = ____preconditions.checkNotNull
|
|
22
22
|
local ____lazy = require("utility.lazy")
|
|
23
23
|
local lazyRecord = ____lazy.lazyRecord
|
|
24
|
+
local ____timer = require("core.types.timer")
|
|
25
|
+
local consumeZeroTimerCallback = ____timer.consumeZeroTimerCallback
|
|
26
|
+
local Timer = ____timer.Timer
|
|
27
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
28
|
+
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
29
|
+
local ____attributes = require("attributes")
|
|
30
|
+
local attribute = ____attributes.attribute
|
|
31
|
+
local ____pseudo_2Dpassive_2Dabilities = require("engine.internal.unit.pseudo-passive-abilities")
|
|
32
|
+
local pseudoPassiveAbilityOrderTypeStringId = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityOrderTypeStringId
|
|
33
|
+
local pseudoPassiveAbilityTypeIds = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityTypeIds
|
|
24
34
|
local eventInvoke = Event.invoke
|
|
25
35
|
local condition = Condition
|
|
26
36
|
local createTrigger = CreateTrigger
|
|
@@ -83,7 +93,7 @@ local function createCommonEvent(underlyingEvent)
|
|
|
83
93
|
underlyingEvent,
|
|
84
94
|
3,
|
|
85
95
|
function(caster, ability)
|
|
86
|
-
return
|
|
96
|
+
return not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil), caster, ability
|
|
87
97
|
end
|
|
88
98
|
)
|
|
89
99
|
end
|
|
@@ -163,7 +173,7 @@ local function createNoTargetEvent(underlyingEvent)
|
|
|
163
173
|
underlyingEvent,
|
|
164
174
|
1,
|
|
165
175
|
function(caster, ability, targetUnit, targetItem, targetDestructible, x, y)
|
|
166
|
-
if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil then
|
|
176
|
+
if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil and not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil) then
|
|
167
177
|
return true, caster, ability
|
|
168
178
|
else
|
|
169
179
|
return false
|
|
@@ -345,21 +355,17 @@ rawset(
|
|
|
345
355
|
extractAbilityTypeId
|
|
346
356
|
)
|
|
347
357
|
)
|
|
358
|
+
local internalAbilityChannelingFinishEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters)
|
|
348
359
|
rawset(
|
|
349
360
|
Unit,
|
|
350
361
|
"abilityChannelingFinishEvent",
|
|
351
|
-
createDispatchingEvent(
|
|
352
|
-
__TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters),
|
|
353
|
-
extractAbilityTypeId
|
|
354
|
-
)
|
|
362
|
+
createDispatchingEvent(internalAbilityChannelingFinishEvent, extractAbilityTypeId)
|
|
355
363
|
)
|
|
364
|
+
local internalAbilityStopEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters)
|
|
356
365
|
rawset(
|
|
357
366
|
Unit,
|
|
358
367
|
"abilityStopEvent",
|
|
359
|
-
createDispatchingEvent(
|
|
360
|
-
__TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters),
|
|
361
|
-
extractAbilityTypeId
|
|
362
|
-
)
|
|
368
|
+
createDispatchingEvent(internalAbilityStopEvent, extractAbilityTypeId)
|
|
363
369
|
)
|
|
364
370
|
rawset(
|
|
365
371
|
Unit,
|
|
@@ -376,9 +382,13 @@ rawset(
|
|
|
376
382
|
condition(function()
|
|
377
383
|
local unit = Unit:of(getTriggerUnit())
|
|
378
384
|
if unit ~= nil then
|
|
379
|
-
local ability = unit:
|
|
385
|
+
local ability = unit:getAbility(abilityTypeId)
|
|
380
386
|
if ability ~= nil then
|
|
381
|
-
|
|
387
|
+
if pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil then
|
|
388
|
+
ability:interruptCast()
|
|
389
|
+
else
|
|
390
|
+
eventInvoke(event, unit, ability, orderTypeStringId)
|
|
391
|
+
end
|
|
382
392
|
end
|
|
383
393
|
end
|
|
384
394
|
end)
|
|
@@ -388,4 +398,95 @@ rawset(
|
|
|
388
398
|
end)
|
|
389
399
|
end)
|
|
390
400
|
)
|
|
401
|
+
local internalAbilityImpactEvent = __TS__New(Event)
|
|
402
|
+
local impactCallbackIdAttribute = attribute()
|
|
403
|
+
local function invokeImpactEvent(unit, ability, ...)
|
|
404
|
+
ability[impactCallbackIdAttribute] = nil
|
|
405
|
+
eventInvoke(internalAbilityImpactEvent, unit, ability, ...)
|
|
406
|
+
end
|
|
407
|
+
internalAbilityChannelingStartEvent:addListener(
|
|
408
|
+
999999,
|
|
409
|
+
function(unit, ability, ...)
|
|
410
|
+
ability[impactCallbackIdAttribute] = Timer:run(invokeImpactEvent, unit, ability, ...)
|
|
411
|
+
end
|
|
412
|
+
)
|
|
413
|
+
local function consumeImpactCallback(_, ability)
|
|
414
|
+
local impactCallbackId = ability[impactCallbackIdAttribute]
|
|
415
|
+
if impactCallbackId ~= nil then
|
|
416
|
+
consumeZeroTimerCallback(impactCallbackId)
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
internalAbilityChannelingFinishEvent:addListener(999999, consumeImpactCallback)
|
|
420
|
+
internalAbilityStopEvent:addListener(999999, consumeImpactCallback)
|
|
421
|
+
rawset(
|
|
422
|
+
Unit,
|
|
423
|
+
"abilityImpactEvent",
|
|
424
|
+
createDispatchingEvent(
|
|
425
|
+
createCommonEvent(internalAbilityImpactEvent),
|
|
426
|
+
extractAbilityTypeId
|
|
427
|
+
)
|
|
428
|
+
)
|
|
429
|
+
rawset(
|
|
430
|
+
Unit,
|
|
431
|
+
"abilityWidgetTargetImpactEvent",
|
|
432
|
+
createDispatchingEvent(
|
|
433
|
+
createWidgetTargetEvent(internalAbilityImpactEvent),
|
|
434
|
+
extractAbilityTypeId
|
|
435
|
+
)
|
|
436
|
+
)
|
|
437
|
+
rawset(
|
|
438
|
+
Unit,
|
|
439
|
+
"abilityUnitTargetImpactEvent",
|
|
440
|
+
createDispatchingEvent(
|
|
441
|
+
createUnitTargetEvent(internalAbilityImpactEvent),
|
|
442
|
+
extractAbilityTypeId
|
|
443
|
+
)
|
|
444
|
+
)
|
|
445
|
+
rawset(
|
|
446
|
+
Unit,
|
|
447
|
+
"abilityItemTargetImpactEvent",
|
|
448
|
+
createDispatchingEvent(
|
|
449
|
+
createItemTargetEvent(internalAbilityImpactEvent),
|
|
450
|
+
extractAbilityTypeId
|
|
451
|
+
)
|
|
452
|
+
)
|
|
453
|
+
rawset(
|
|
454
|
+
Unit,
|
|
455
|
+
"abilityDestructibleTargetImpactEvent",
|
|
456
|
+
createDispatchingEvent(
|
|
457
|
+
createDestructibleTargetEvent(internalAbilityImpactEvent),
|
|
458
|
+
extractAbilityTypeId
|
|
459
|
+
)
|
|
460
|
+
)
|
|
461
|
+
rawset(
|
|
462
|
+
Unit,
|
|
463
|
+
"abilityPointTargetImpactEvent",
|
|
464
|
+
createDispatchingEvent(
|
|
465
|
+
createPointTargetEvent(internalAbilityImpactEvent),
|
|
466
|
+
extractAbilityTypeId
|
|
467
|
+
)
|
|
468
|
+
)
|
|
469
|
+
rawset(
|
|
470
|
+
Unit,
|
|
471
|
+
"abilityNoTargetImpactEvent",
|
|
472
|
+
createDispatchingEvent(
|
|
473
|
+
createNoTargetEvent(internalAbilityImpactEvent),
|
|
474
|
+
extractAbilityTypeId
|
|
475
|
+
)
|
|
476
|
+
)
|
|
477
|
+
local spellEffectOnlyAbilityTypeIds = luaSetOf(fourCC("AAns"))
|
|
478
|
+
internalAbilityChannelingStartEvent:addListener(
|
|
479
|
+
-999999,
|
|
480
|
+
function(unit, ability)
|
|
481
|
+
if spellEffectOnlyAbilityTypeIds[ability.parentTypeId] ~= nil then
|
|
482
|
+
eventInvoke(internalAbilityChannelingFinishEvent, unit, ability)
|
|
483
|
+
eventInvoke(internalAbilityStopEvent, unit, ability)
|
|
484
|
+
end
|
|
485
|
+
end
|
|
486
|
+
)
|
|
487
|
+
local function doNothing()
|
|
488
|
+
end
|
|
489
|
+
for pseudoPassiveAbilityTypeId in pairs(pseudoPassiveAbilityTypeIds) do
|
|
490
|
+
Unit.abilityCommandEvent[pseudoPassiveAbilityTypeId][pseudoPassiveAbilityOrderTypeStringId]:addListener(999999, doNothing)
|
|
491
|
+
end
|
|
391
492
|
return ____exports
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { CombatClassifications } from "../../object-data/auxiliary/combat-classification";
|
|
3
3
|
declare module "../unit" {
|
|
4
4
|
interface Unit {
|
|
5
|
-
isAllowedTarget(this: Unit, source: Unit, allowedTargetCombatClassifications
|
|
5
|
+
isAllowedTarget(this: Unit, source: Unit, allowedTargetCombatClassifications?: CombatClassifications): boolean;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
declare module "../unit" {
|
|
@@ -5,7 +5,15 @@ local initializeFilterTargetState = ____combat_2Dclassification.initializeFilter
|
|
|
5
5
|
local ____unit = require("engine.internal.unit")
|
|
6
6
|
local Unit = ____unit.Unit
|
|
7
7
|
Unit.prototype.isAllowedTarget = function(self, source, allowedTargetCombatClassifications)
|
|
8
|
-
|
|
8
|
+
if allowedTargetCombatClassifications ~= nil then
|
|
9
|
+
initializeFilterTargetState(source, allowedTargetCombatClassifications)
|
|
10
|
+
return filterTarget(self)
|
|
11
|
+
end
|
|
12
|
+
initializeFilterTargetState(source, source.firstWeapon.allowedTargetCombatClassifications)
|
|
13
|
+
if filterTarget(self) then
|
|
14
|
+
return true
|
|
15
|
+
end
|
|
16
|
+
initializeFilterTargetState(source, source.secondWeapon.allowedTargetCombatClassifications)
|
|
9
17
|
return filterTarget(self)
|
|
10
18
|
end
|
|
11
19
|
Unit.getAllowedTargetsInRange = function(source, allowedTargetCombatClassifications, x, y, range)
|
|
@@ -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
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
declare module "../unit" {
|
|
3
|
+
interface Unit {
|
|
4
|
+
strengthBase: number;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
declare module "../unit" {
|
|
8
|
+
interface Unit {
|
|
9
|
+
agilityBase: number;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
declare module "../unit" {
|
|
13
|
+
interface Unit {
|
|
14
|
+
intelligenceBase: number;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
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 ____unit = require("engine.standard.fields.unit")
|
|
7
|
+
local AGILITY_UNIT_FIELD = ____unit.AGILITY_UNIT_FIELD
|
|
8
|
+
local INTELLIGENCE_UNIT_FIELD = ____unit.INTELLIGENCE_UNIT_FIELD
|
|
9
|
+
local STRENGTH_UNIT_FIELD = ____unit.STRENGTH_UNIT_FIELD
|
|
10
|
+
__TS__ObjectDefineProperty(
|
|
11
|
+
Unit.prototype,
|
|
12
|
+
"strengthBase",
|
|
13
|
+
{
|
|
14
|
+
get = function(self)
|
|
15
|
+
return STRENGTH_UNIT_FIELD:getValue(self)
|
|
16
|
+
end,
|
|
17
|
+
set = function(self, value)
|
|
18
|
+
STRENGTH_UNIT_FIELD:setValue(self, value)
|
|
19
|
+
end
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
__TS__ObjectDefineProperty(
|
|
23
|
+
Unit.prototype,
|
|
24
|
+
"agilityBase",
|
|
25
|
+
{
|
|
26
|
+
get = function(self)
|
|
27
|
+
return AGILITY_UNIT_FIELD:getValue(self)
|
|
28
|
+
end,
|
|
29
|
+
set = function(self, value)
|
|
30
|
+
AGILITY_UNIT_FIELD:setValue(self, value)
|
|
31
|
+
end
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
__TS__ObjectDefineProperty(
|
|
35
|
+
Unit.prototype,
|
|
36
|
+
"intelligenceBase",
|
|
37
|
+
{
|
|
38
|
+
get = function(self)
|
|
39
|
+
return INTELLIGENCE_UNIT_FIELD:getValue(self)
|
|
40
|
+
end,
|
|
41
|
+
set = function(self, value)
|
|
42
|
+
INTELLIGENCE_UNIT_FIELD:setValue(self, value)
|
|
43
|
+
end
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
return ____exports
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { Item } from "../item";
|
|
3
|
+
export interface UnitBag extends ReadonlyArray<Item | undefined> {
|
|
4
|
+
}
|
|
5
|
+
/** A live, zero-based view of a unit's bag. The engine does not expose bag-slot assignment. */
|
|
6
|
+
export declare class UnitBag {
|
|
7
|
+
constructor(handle: junit);
|
|
8
|
+
has(item: Item): boolean;
|
|
9
|
+
findSlot(item: Item): number | undefined;
|
|
10
|
+
protected __index(key: string | number): unknown;
|
|
11
|
+
protected __len(): number;
|
|
12
|
+
protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
|
|
13
|
+
}
|
|
14
|
+
declare module "../unit" {
|
|
15
|
+
interface Unit {
|
|
16
|
+
readonly bag: UnitBag;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__New = ____lualib.__TS__New
|
|
4
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____item = require("engine.internal.item")
|
|
7
|
+
local Item = ____item.Item
|
|
8
|
+
local ____unit = require("engine.internal.unit")
|
|
9
|
+
local Unit = ____unit.Unit
|
|
10
|
+
local unitExtendedInventorySize = UnitExtendedInventorySize
|
|
11
|
+
local unitHasItemBagged = UnitHasItemBagged
|
|
12
|
+
local unitItemInBagSlot = UnitItemInBagSlot
|
|
13
|
+
local ____rawget = _G.rawget
|
|
14
|
+
local rawset = _G.rawset
|
|
15
|
+
local ____type = _G.type
|
|
16
|
+
local handleByUnitBag = setmetatable({}, {__mode = "k"})
|
|
17
|
+
local function unitBagNext(handle, slot)
|
|
18
|
+
if slot >= unitExtendedInventorySize(handle) then
|
|
19
|
+
return nil, nil
|
|
20
|
+
end
|
|
21
|
+
return slot + 1, Item:of(unitItemInBagSlot(handle, slot))
|
|
22
|
+
end
|
|
23
|
+
--- A live, zero-based view of a unit's bag. The engine does not expose bag-slot assignment.
|
|
24
|
+
____exports.UnitBag = __TS__Class()
|
|
25
|
+
local UnitBag = ____exports.UnitBag
|
|
26
|
+
UnitBag.name = "UnitBag"
|
|
27
|
+
function UnitBag.prototype.____constructor(self, handle)
|
|
28
|
+
handleByUnitBag[self] = handle
|
|
29
|
+
end
|
|
30
|
+
function UnitBag.prototype.has(self, item)
|
|
31
|
+
return unitHasItemBagged(handleByUnitBag[self], item.handle)
|
|
32
|
+
end
|
|
33
|
+
function UnitBag.prototype.findSlot(self, item)
|
|
34
|
+
local handle = handleByUnitBag[self]
|
|
35
|
+
for slot = 0, unitExtendedInventorySize(handle) - 1 do
|
|
36
|
+
if unitItemInBagSlot(handle, slot) == item.handle then
|
|
37
|
+
return slot
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
return nil
|
|
41
|
+
end
|
|
42
|
+
function UnitBag.prototype.__index(self, key)
|
|
43
|
+
if ____type(key) == "number" then
|
|
44
|
+
return Item:of(unitItemInBagSlot(handleByUnitBag[self], key - 1))
|
|
45
|
+
end
|
|
46
|
+
return ____rawget(____exports.UnitBag.prototype, key)
|
|
47
|
+
end
|
|
48
|
+
function UnitBag.prototype.__len(self)
|
|
49
|
+
return unitExtendedInventorySize(handleByUnitBag[self])
|
|
50
|
+
end
|
|
51
|
+
function UnitBag.prototype.__ipairs(self)
|
|
52
|
+
return unitBagNext, handleByUnitBag[self], 0
|
|
53
|
+
end
|
|
54
|
+
__TS__ObjectDefineProperty(
|
|
55
|
+
Unit.prototype,
|
|
56
|
+
"bag",
|
|
57
|
+
{get = function(self)
|
|
58
|
+
local bag = __TS__New(____exports.UnitBag, self.handle)
|
|
59
|
+
rawset(self, "bag", bag)
|
|
60
|
+
return bag
|
|
61
|
+
end}
|
|
62
|
+
)
|
|
63
|
+
return ____exports
|
|
@@ -5,6 +5,8 @@ export type UnitBonusId<Brand extends string = any> = number & {
|
|
|
5
5
|
readonly __unitBonusId: unique symbol;
|
|
6
6
|
readonly __unitBonusIdBrand: Brand;
|
|
7
7
|
};
|
|
8
|
+
export type UnitMaxHealthBonusId = UnitBonusId<"maxHealth">;
|
|
9
|
+
export type UnitMaxManaBonusId = UnitBonusId<"maxMana">;
|
|
8
10
|
export type UnitArmorBonusId = UnitBonusId<"armor">;
|
|
9
11
|
export type UnitAttackSpeedFactorBonusId = UnitBonusId<"attackSpeedFactor">;
|
|
10
12
|
export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
|
|
@@ -12,6 +14,7 @@ export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
|
|
|
12
14
|
export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
|
|
13
15
|
export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
|
|
14
16
|
export type UnitEvasionProbabilityBonusId = UnitBonusId<"evasionProbability">;
|
|
17
|
+
export type UnitManaRegenerationRateFactorBonusId = UnitBonusId<"manaRegenerationRateFactor">;
|
|
15
18
|
export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
16
19
|
abilityTypeId: AbilityTypeId;
|
|
17
20
|
field: jabilityintegerlevelfield;
|
|
@@ -29,6 +32,8 @@ export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
|
29
32
|
readonly __unitBonusTypeId?: Id;
|
|
30
33
|
};
|
|
31
34
|
export declare namespace UnitBonusType {
|
|
35
|
+
const HEALTH: UnitBonusType<UnitMaxHealthBonusId>;
|
|
36
|
+
const MANA: UnitBonusType<UnitMaxManaBonusId>;
|
|
32
37
|
const ARMOR: UnitBonusType<UnitArmorBonusId>;
|
|
33
38
|
const ATTACK_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
34
39
|
const MOVEMENT_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
@@ -36,6 +41,7 @@ export declare namespace UnitBonusType {
|
|
|
36
41
|
const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
37
42
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
38
43
|
const EVASION_PROBABILITY: UnitBonusType<UnitEvasionProbabilityBonusId>;
|
|
44
|
+
const MANA_REGENERATION_RATE_FACTOR: UnitBonusType<UnitManaRegenerationRateFactorBonusId>;
|
|
39
45
|
}
|
|
40
46
|
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
41
47
|
export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
2
|
local ____unit = require("engine.internal.unit")
|
|
3
3
|
local Unit = ____unit.Unit
|
|
4
|
-
local
|
|
5
|
-
local ARMOR_BONUS_DUMMY_ABILITY_FIELD =
|
|
6
|
-
local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID =
|
|
4
|
+
local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
|
|
5
|
+
local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_FIELD
|
|
6
|
+
local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
7
7
|
local ____utility = require("engine.internal.utility")
|
|
8
8
|
local addInternalAbility = ____utility.addInternalAbility
|
|
9
9
|
local ____arrays = require("utility.arrays")
|
|
@@ -24,6 +24,15 @@ local MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____movement_2Dspee
|
|
|
24
24
|
local ____evasion_2Dprobability = require("engine.internal.object-data.evasion-probability")
|
|
25
25
|
local EVASION_PROBABILITY_ABILITY_FIELD = ____evasion_2Dprobability.EVASION_PROBABILITY_ABILITY_FIELD
|
|
26
26
|
local EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID = ____evasion_2Dprobability.EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID
|
|
27
|
+
local ____health_2Dbonus = require("engine.internal.object-data.health-bonus")
|
|
28
|
+
local HEALTH_BONUS_DUMMY_ABILITY_FIELD = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_FIELD
|
|
29
|
+
local HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
30
|
+
local ____mana_2Dbonus = require("engine.internal.object-data.mana-bonus")
|
|
31
|
+
local MANA_BONUS_DUMMY_ABILITY_FIELD = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_FIELD
|
|
32
|
+
local MANA_BONUS_DUMMY_ABILITY_TYPE_ID = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
33
|
+
local ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor = require("engine.internal.object-data.mana-regeneration-rate-increase-factor")
|
|
34
|
+
local MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD
|
|
35
|
+
local MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
|
|
27
36
|
local damageFactorByUnit = {}
|
|
28
37
|
local receivedDamageFactorByUnit = {}
|
|
29
38
|
local function atLeastOnceProbability(array)
|
|
@@ -36,6 +45,20 @@ end
|
|
|
36
45
|
____exports.UnitBonusType = {}
|
|
37
46
|
local UnitBonusType = ____exports.UnitBonusType
|
|
38
47
|
do
|
|
48
|
+
UnitBonusType.HEALTH = {
|
|
49
|
+
abilityTypeId = HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
50
|
+
field = HEALTH_BONUS_DUMMY_ABILITY_FIELD,
|
|
51
|
+
integer = true,
|
|
52
|
+
reduce = sum,
|
|
53
|
+
initialValue = 0
|
|
54
|
+
}
|
|
55
|
+
UnitBonusType.MANA = {
|
|
56
|
+
abilityTypeId = MANA_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
57
|
+
field = MANA_BONUS_DUMMY_ABILITY_FIELD,
|
|
58
|
+
integer = true,
|
|
59
|
+
reduce = sum,
|
|
60
|
+
initialValue = 0
|
|
61
|
+
}
|
|
39
62
|
UnitBonusType.ARMOR = {
|
|
40
63
|
abilityTypeId = ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
41
64
|
field = ARMOR_BONUS_DUMMY_ABILITY_FIELD,
|
|
@@ -73,6 +96,13 @@ do
|
|
|
73
96
|
reduce = atLeastOnceProbability,
|
|
74
97
|
initialValue = 0
|
|
75
98
|
}
|
|
99
|
+
UnitBonusType.MANA_REGENERATION_RATE_FACTOR = {
|
|
100
|
+
abilityTypeId = MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID,
|
|
101
|
+
field = MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD,
|
|
102
|
+
integer = false,
|
|
103
|
+
reduce = sum,
|
|
104
|
+
initialValue = 0
|
|
105
|
+
}
|
|
76
106
|
end
|
|
77
107
|
local bonusesByUnitByBonusType = {}
|
|
78
108
|
local nextId = 1
|
|
@@ -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,36 @@
|
|
|
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
|
+
export interface UnitEquipment extends ReadonlyArray<Item | undefined> {
|
|
6
|
+
}
|
|
7
|
+
/** A live view indexed by EquipmentSlot. Equip operations let the engine choose the slot. */
|
|
8
|
+
export declare class UnitEquipment {
|
|
9
|
+
constructor(handle: junit);
|
|
10
|
+
equip(item: Item): boolean;
|
|
11
|
+
unequip(item: Item): void;
|
|
12
|
+
unequipSlot(slot: EquipmentSlot): Item | undefined;
|
|
13
|
+
has(item: Item): boolean;
|
|
14
|
+
hasAny(): boolean;
|
|
15
|
+
isSlotEmpty(slot: EquipmentSlot): boolean;
|
|
16
|
+
hasType(type: EquipmentType): boolean;
|
|
17
|
+
canEquipType(type: EquipmentType): boolean;
|
|
18
|
+
findSlot(item: Item): EquipmentSlot | undefined;
|
|
19
|
+
protected __index(key: string | number): unknown;
|
|
20
|
+
protected __len(): number;
|
|
21
|
+
protected __ipairs(): LuaIterator<LuaMultiReturn<[number, Item | undefined]>, junit>;
|
|
22
|
+
}
|
|
23
|
+
declare module "../unit" {
|
|
24
|
+
interface Unit {
|
|
25
|
+
readonly equipment: UnitEquipment;
|
|
26
|
+
}
|
|
27
|
+
namespace Unit {
|
|
28
|
+
const itemEquippedEvent: UnitTriggerEvent<[item: Item]>;
|
|
29
|
+
const itemUnequippedEvent: UnitTriggerEvent<[item: Item]>;
|
|
30
|
+
let itemStackedEvent: UnitTriggerEvent<[
|
|
31
|
+
target: Item,
|
|
32
|
+
source: Item,
|
|
33
|
+
previousTargetCharges: number
|
|
34
|
+
]>;
|
|
35
|
+
}
|
|
36
|
+
}
|