warscript 0.0.1-dev.6745db1 → 0.0.1-dev.6817452
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 +1 -0
- package/attributes.lua +9 -0
- 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 +1 -0
- package/core/types/frame.lua +126 -46
- 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 +73 -25
- package/core/types/playerCamera.lua +44 -0
- 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 +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -2
- package/core/types/timer.lua +22 -2
- 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 +707 -9
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +199 -65
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +4 -0
- package/engine/behaviour/ability/damage.lua +19 -15
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability.d.ts +13 -6
- package/engine/behaviour/ability.lua +56 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
- package/engine/behaviour/unit/stun-immunity.lua +17 -7
- package/engine/behaviour/unit.d.ts +16 -5
- package/engine/behaviour/unit.lua +127 -22
- package/engine/buff.d.ts +73 -27
- package/engine/buff.lua +424 -193
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +82 -45
- 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 +27 -14
- package/engine/internal/item.lua +180 -82
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/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 +14 -14
- package/engine/internal/unit/ability.lua +86 -47
- 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/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +14 -0
- package/engine/internal/unit/bonus.lua +102 -8
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment-inventory.d.ts +44 -0
- package/engine/internal/unit/equipment-inventory.lua +233 -0
- package/engine/internal/unit/expiration-timer.lua +1 -1
- package/engine/internal/unit/extended-inventory.d.ts +25 -0
- package/engine/internal/unit/extended-inventory.lua +99 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- 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} +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/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +3 -3
- package/engine/internal/unit/order.lua +10 -10
- 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.d.ts +2 -1
- package/engine/internal/unit+ability.lua +63 -2
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +64 -33
- package/engine/internal/unit.d.ts +18 -30
- package/engine/internal/unit.lua +188 -269
- package/engine/local-client.d.ts +28 -0
- package/engine/local-client.lua +324 -54
- 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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-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/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/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/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/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 +141 -5
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -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 +51 -2
- package/engine/object-data/entry/unit-type.lua +415 -37
- 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.d.ts +3 -3
- 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 +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +12 -4
- package/engine/object-field.lua +273 -126
- 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/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/standard/fields/unit.d.ts +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +3 -2
- 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 -9
- 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 +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +11 -2
- package/utility/lua-maps.lua +33 -2
- 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/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -47,12 +47,10 @@ local checkNotNull = ____preconditions.checkNotNull
|
|
|
47
47
|
local ____constants = require("engine.constants")
|
|
48
48
|
local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
|
|
49
49
|
local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
|
|
50
|
-
local ____arrays = require("utility.arrays")
|
|
51
|
-
local forEach = ____arrays.forEach
|
|
52
|
-
local ____math = require("math")
|
|
53
|
-
local min = ____math.min
|
|
54
50
|
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
-
local
|
|
51
|
+
local isItemIgnoredInEvents = ____ignore_2Devents_2Ditems.isItemIgnoredInEvents
|
|
52
|
+
local ____owner_2Dcache = require("engine.internal.item.owner-cache")
|
|
53
|
+
local ownerByItem = ____owner_2Dcache.ownerByItem
|
|
56
54
|
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
55
|
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
56
|
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
@@ -62,6 +60,10 @@ local ____attributes = require("attributes")
|
|
|
62
60
|
local isAttribute = ____attributes.isAttribute
|
|
63
61
|
local ____ability = require("engine.internal.item.ability")
|
|
64
62
|
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
63
|
+
local ____synchronization = require("engine.synchronization")
|
|
64
|
+
local synchronizer = ____synchronization.synchronizer
|
|
65
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
66
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
65
67
|
local match = string.match
|
|
66
68
|
local ____tostring = _G.tostring
|
|
67
69
|
local setUnitAnimation = SetUnitAnimation
|
|
@@ -71,16 +73,12 @@ local getUnitRealField = BlzGetUnitRealField
|
|
|
71
73
|
local getHeroStr = GetHeroStr
|
|
72
74
|
local getHeroAgi = GetHeroAgi
|
|
73
75
|
local getHeroInt = GetHeroInt
|
|
74
|
-
local setHeroStr = SetHeroStr
|
|
75
|
-
local setHeroAgi = SetHeroAgi
|
|
76
|
-
local setHeroInt = SetHeroInt
|
|
77
76
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
78
77
|
local getUnitStringField = BlzGetUnitStringField
|
|
79
78
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
80
79
|
local setUnitRealField = BlzSetUnitRealField
|
|
81
80
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
82
81
|
local setUnitStringField = BlzSetUnitStringField
|
|
83
|
-
local setUnitScale = SetUnitScale
|
|
84
82
|
local setUnitPosition = SetUnitPosition
|
|
85
83
|
local setUnitTimeScale = SetUnitTimeScale
|
|
86
84
|
local getHandleId = GetHandleId
|
|
@@ -108,7 +106,6 @@ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
|
108
106
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
109
107
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
110
108
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
111
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
112
109
|
local isUnitInvisible = IsUnitInvisible
|
|
113
110
|
local isUnitVisible = IsUnitVisible
|
|
114
111
|
local getUnitX = GetUnitX
|
|
@@ -384,15 +381,27 @@ local modifiers = {
|
|
|
384
381
|
end,
|
|
385
382
|
armor = function(unit, value)
|
|
386
383
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
387
|
-
assert(
|
|
384
|
+
assert(
|
|
385
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
386
|
+
"armor bonus ability must be made permanent",
|
|
387
|
+
unit
|
|
388
|
+
)
|
|
388
389
|
end
|
|
389
|
-
local ability = assert(
|
|
390
|
-
|
|
391
|
-
ability,
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
390
|
+
local ability = assert(
|
|
391
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
392
|
+
"armor bonus ability must be existing",
|
|
393
|
+
unit
|
|
394
|
+
)
|
|
395
|
+
assert(
|
|
396
|
+
BlzSetAbilityRealLevelField(
|
|
397
|
+
ability,
|
|
398
|
+
armorBonusField,
|
|
399
|
+
0,
|
|
400
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
401
|
+
),
|
|
402
|
+
"armor bonus ability field must be set",
|
|
403
|
+
unit
|
|
404
|
+
)
|
|
396
405
|
end
|
|
397
406
|
}
|
|
398
407
|
local getters = {
|
|
@@ -410,6 +419,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
410
419
|
self.unit = unit
|
|
411
420
|
self.index = index
|
|
412
421
|
end
|
|
422
|
+
__TS__SetDescriptor(
|
|
423
|
+
UnitWeapon.prototype,
|
|
424
|
+
"isEnabled",
|
|
425
|
+
{
|
|
426
|
+
get = function(self)
|
|
427
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
428
|
+
end,
|
|
429
|
+
set = function(self, isEnabled)
|
|
430
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
431
|
+
end
|
|
432
|
+
},
|
|
433
|
+
true
|
|
434
|
+
)
|
|
413
435
|
__TS__SetDescriptor(
|
|
414
436
|
UnitWeapon.prototype,
|
|
415
437
|
"cooldown",
|
|
@@ -568,8 +590,6 @@ __TS__SetDescriptor(
|
|
|
568
590
|
},
|
|
569
591
|
true
|
|
570
592
|
)
|
|
571
|
-
local unitInventorySize = UnitInventorySize
|
|
572
|
-
local unitItemInSlot = UnitItemInSlot
|
|
573
593
|
local getItemAbility = BlzGetItemAbility
|
|
574
594
|
local getUnitAbility = BlzGetUnitAbility
|
|
575
595
|
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
@@ -587,8 +607,8 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
587
607
|
____exports.Unit:of(unit)
|
|
588
608
|
)
|
|
589
609
|
end
|
|
590
|
-
for i = 0,
|
|
591
|
-
local item =
|
|
610
|
+
for i = 0, UnitInventorySize(unit) - 1 do
|
|
611
|
+
local item = UnitItemInSlot(unit, i)
|
|
592
612
|
if getItemAbility(item, abilityId) == ability then
|
|
593
613
|
return ItemAbility:of(
|
|
594
614
|
ability,
|
|
@@ -633,26 +653,30 @@ local fieldSetters = {
|
|
|
633
653
|
}
|
|
634
654
|
local dummies = {}
|
|
635
655
|
for ____, player in ipairs(Player.all) do
|
|
636
|
-
local dummy = assert(
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
656
|
+
local dummy = assert(
|
|
657
|
+
createUnit(
|
|
658
|
+
player.handle,
|
|
659
|
+
dummyUnitId,
|
|
660
|
+
0,
|
|
661
|
+
0,
|
|
662
|
+
270
|
|
663
|
+
),
|
|
664
|
+
"dummy must be created",
|
|
665
|
+
player
|
|
666
|
+
)
|
|
643
667
|
ShowUnit(dummy, false)
|
|
644
668
|
dummies[player] = dummy
|
|
645
669
|
end
|
|
646
670
|
local function delayHealthChecksCallback(unit)
|
|
647
|
-
local counter = (unit[
|
|
671
|
+
local counter = (unit[104] or 0) - 1
|
|
648
672
|
if counter ~= 0 then
|
|
649
|
-
unit[
|
|
673
|
+
unit[104] = counter
|
|
650
674
|
return
|
|
651
675
|
end
|
|
652
|
-
unit[
|
|
653
|
-
local healthBonus = unit[
|
|
676
|
+
unit[104] = nil
|
|
677
|
+
local healthBonus = unit[105]
|
|
654
678
|
if healthBonus ~= nil then
|
|
655
|
-
unit[
|
|
679
|
+
unit[105] = nil
|
|
656
680
|
local handle = unit.handle
|
|
657
681
|
BlzSetUnitMaxHP(
|
|
658
682
|
handle,
|
|
@@ -682,41 +706,57 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
682
706
|
nextSyncId = ____nextSyncId_1 + 1
|
|
683
707
|
self.syncId = ____nextSyncId_1
|
|
684
708
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
685
|
-
assert(
|
|
686
|
-
|
|
709
|
+
assert(
|
|
710
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
711
|
+
"leave detection ability must be added",
|
|
712
|
+
self
|
|
713
|
+
)
|
|
714
|
+
assert(
|
|
715
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
716
|
+
"morph detection ability must be added",
|
|
717
|
+
self
|
|
718
|
+
)
|
|
687
719
|
if unitAddAbility(
|
|
688
720
|
handle,
|
|
689
721
|
fourCC("Amrf")
|
|
690
722
|
) then
|
|
691
|
-
assert(
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
723
|
+
assert(
|
|
724
|
+
unitRemoveAbility(
|
|
725
|
+
handle,
|
|
726
|
+
fourCC("Amrf")
|
|
727
|
+
),
|
|
728
|
+
"fly ability must be removed after addition",
|
|
729
|
+
self
|
|
730
|
+
)
|
|
695
731
|
end
|
|
696
732
|
unitBySyncId[self.syncId] = self
|
|
697
733
|
local ____ = self.abilities
|
|
698
734
|
end
|
|
699
|
-
function Unit.prototype.getEvent(self,
|
|
700
|
-
self.events = self.events or (
|
|
701
|
-
local eventId = GetHandleId(
|
|
702
|
-
|
|
703
|
-
|
|
735
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
736
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
737
|
+
local eventId = GetHandleId(jevent)
|
|
738
|
+
local event = self.events:get(eventId)
|
|
739
|
+
if event == nil then
|
|
740
|
+
event = __TS__New(
|
|
704
741
|
TriggerEvent,
|
|
705
742
|
function(trigger)
|
|
706
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
743
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
707
744
|
end,
|
|
708
745
|
collector or (function() return {} end)
|
|
709
746
|
)
|
|
747
|
+
self.events:put(eventId, event)
|
|
710
748
|
end
|
|
711
|
-
return
|
|
749
|
+
return event
|
|
750
|
+
end
|
|
751
|
+
function Unit.prototype.saveData(self)
|
|
752
|
+
local handle = self.handle
|
|
753
|
+
self[108] = self[108] or getUnitX(handle)
|
|
754
|
+
self[109] = self[109] or getUnitY(handle)
|
|
755
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
712
756
|
end
|
|
713
757
|
function Unit.prototype.onDestroy(self)
|
|
714
758
|
local handle = self.handle
|
|
715
|
-
self
|
|
716
|
-
self[108] = getUnitY(handle)
|
|
717
|
-
if not self._owner then
|
|
718
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
719
|
-
end
|
|
759
|
+
self:saveData()
|
|
720
760
|
local abilities = self.abilities
|
|
721
761
|
for ____, ability in ipairs(abilities) do
|
|
722
762
|
ability:destroy()
|
|
@@ -734,7 +774,9 @@ function Unit.prototype.onDestroy(self)
|
|
|
734
774
|
end
|
|
735
775
|
local eventsToDestroy = self._eventsToDestroy
|
|
736
776
|
if eventsToDestroy ~= nil then
|
|
737
|
-
|
|
777
|
+
for ____, event in ipairs(eventsToDestroy) do
|
|
778
|
+
event:destroy()
|
|
779
|
+
end
|
|
738
780
|
end
|
|
739
781
|
if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
|
|
740
782
|
unitRemoveAbility(handle, leaveDetectAbilityId)
|
|
@@ -752,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
752
794
|
self._attackHandlers = handlers
|
|
753
795
|
if #handlers == 1 then
|
|
754
796
|
local handle = self.handle
|
|
755
|
-
assert(
|
|
797
|
+
assert(
|
|
798
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
799
|
+
"attack handler ability must be added",
|
|
800
|
+
self
|
|
801
|
+
)
|
|
756
802
|
end
|
|
757
803
|
return handler
|
|
758
804
|
end
|
|
@@ -836,16 +882,18 @@ function Unit.prototype.queueAnimation(self, animation)
|
|
|
836
882
|
QueueUnitAnimation(self.handle, animation)
|
|
837
883
|
end
|
|
838
884
|
function Unit.prototype.chooseWeapon(self, target)
|
|
839
|
-
|
|
840
|
-
|
|
885
|
+
local firstWeapon = self.firstWeapon
|
|
886
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
887
|
+
return firstWeapon
|
|
841
888
|
end
|
|
842
|
-
|
|
843
|
-
|
|
889
|
+
local secondWeapon = self.secondWeapon
|
|
890
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
891
|
+
return secondWeapon
|
|
844
892
|
end
|
|
845
893
|
return nil
|
|
846
894
|
end
|
|
847
895
|
function Unit.prototype.delayHealthChecks(self)
|
|
848
|
-
self[
|
|
896
|
+
self[104] = (self[104] or 0) + 1
|
|
849
897
|
Timer:run(delayHealthChecksCallback, self)
|
|
850
898
|
end
|
|
851
899
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -909,7 +957,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
909
957
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
910
958
|
end
|
|
911
959
|
function Unit.prototype.itemInSlot(self, slot)
|
|
912
|
-
return Item:of(
|
|
960
|
+
return Item:of(UnitItemInSlot(self.handle, slot))
|
|
913
961
|
end
|
|
914
962
|
function Unit.prototype.addAbility(self, abilityId)
|
|
915
963
|
local ability = UnitAbility:of(
|
|
@@ -935,23 +983,21 @@ end
|
|
|
935
983
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
936
984
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
937
985
|
end
|
|
938
|
-
function Unit.prototype.
|
|
986
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
939
987
|
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
940
988
|
return UnitAbility:of(ability, abilityId, self)
|
|
941
989
|
end
|
|
942
|
-
function Unit.prototype.removeAbility(self,
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
end
|
|
990
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
991
|
+
local abilities = self.abilities
|
|
992
|
+
for i = 1, #abilities do
|
|
993
|
+
if abilities[i].typeId == abilityTypeId then
|
|
994
|
+
local ability = abilities[i]
|
|
995
|
+
tremove(abilities, i)
|
|
996
|
+
ability:destroy()
|
|
997
|
+
return true
|
|
951
998
|
end
|
|
952
|
-
return true
|
|
953
999
|
end
|
|
954
|
-
return
|
|
1000
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
955
1001
|
end
|
|
956
1002
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
957
1003
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -965,24 +1011,6 @@ end
|
|
|
965
1011
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
966
1012
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
967
1013
|
end
|
|
968
|
-
function Unit.prototype.interruptMovement(self)
|
|
969
|
-
local handle = self.handle
|
|
970
|
-
unitDisableAbility(
|
|
971
|
-
handle,
|
|
972
|
-
fourCC("Amov"),
|
|
973
|
-
true,
|
|
974
|
-
false
|
|
975
|
-
)
|
|
976
|
-
unitDisableAbility(
|
|
977
|
-
handle,
|
|
978
|
-
fourCC("Amov"),
|
|
979
|
-
false,
|
|
980
|
-
false
|
|
981
|
-
)
|
|
982
|
-
end
|
|
983
|
-
function Unit.prototype.interruptAttack(self)
|
|
984
|
-
unitInterruptAttack(self.handle)
|
|
985
|
-
end
|
|
986
1014
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
987
1015
|
local handle = self.handle
|
|
988
1016
|
unitDisableAbility(handle, abilityId, true, false)
|
|
@@ -1053,18 +1081,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
1053
1081
|
end
|
|
1054
1082
|
function Unit.prototype.incrementStunCounter(self)
|
|
1055
1083
|
local stunCounter = self[102] or 0
|
|
1056
|
-
if not self[101] or stunCounter >= 0 then
|
|
1084
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1057
1085
|
BlzPauseUnitEx(self.handle, true)
|
|
1058
1086
|
end
|
|
1059
1087
|
self[102] = stunCounter + 1
|
|
1060
1088
|
end
|
|
1061
1089
|
function Unit.prototype.decrementStunCounter(self)
|
|
1062
1090
|
local stunCounter = self[102] or 0
|
|
1063
|
-
if not self[101] or stunCounter >= 1 then
|
|
1091
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1064
1092
|
BlzPauseUnitEx(self.handle, false)
|
|
1065
1093
|
end
|
|
1066
1094
|
self[102] = stunCounter - 1
|
|
1067
1095
|
end
|
|
1096
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1097
|
+
local forceStunCounter = self[103] or 0
|
|
1098
|
+
if forceStunCounter == 0 then
|
|
1099
|
+
local handle = self.handle
|
|
1100
|
+
if not self[101] then
|
|
1101
|
+
for _ = self[102] or 0, -1 do
|
|
1102
|
+
BlzPauseUnitEx(handle, true)
|
|
1103
|
+
end
|
|
1104
|
+
end
|
|
1105
|
+
BlzPauseUnitEx(handle, true)
|
|
1106
|
+
end
|
|
1107
|
+
self[103] = forceStunCounter + 1
|
|
1108
|
+
end
|
|
1109
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1110
|
+
local forceStunCounter = self[103] or 0
|
|
1111
|
+
if forceStunCounter == 1 then
|
|
1112
|
+
local handle = self.handle
|
|
1113
|
+
if not self[101] then
|
|
1114
|
+
for _ = self[102] or 0, -1 do
|
|
1115
|
+
BlzPauseUnitEx(handle, false)
|
|
1116
|
+
end
|
|
1117
|
+
end
|
|
1118
|
+
BlzPauseUnitEx(handle, false)
|
|
1119
|
+
end
|
|
1120
|
+
self[103] = forceStunCounter - 1
|
|
1121
|
+
end
|
|
1068
1122
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1069
1123
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1070
1124
|
owner.handle,
|
|
@@ -1261,7 +1315,7 @@ __TS__SetDescriptor(
|
|
|
1261
1315
|
Unit.prototype,
|
|
1262
1316
|
"isStunned",
|
|
1263
1317
|
{get = function(self)
|
|
1264
|
-
return getUnitCurrentOrder(self.handle) ==
|
|
1318
|
+
return getUnitCurrentOrder(self.handle) == 851973
|
|
1265
1319
|
end},
|
|
1266
1320
|
true
|
|
1267
1321
|
)
|
|
@@ -1351,19 +1405,6 @@ __TS__SetDescriptor(
|
|
|
1351
1405
|
},
|
|
1352
1406
|
true
|
|
1353
1407
|
)
|
|
1354
|
-
__TS__SetDescriptor(
|
|
1355
|
-
Unit.prototype,
|
|
1356
|
-
"strengthBase",
|
|
1357
|
-
{
|
|
1358
|
-
get = function(self)
|
|
1359
|
-
return getHeroStr(self.handle, false)
|
|
1360
|
-
end,
|
|
1361
|
-
set = function(self, strengthBase)
|
|
1362
|
-
setHeroStr(self.handle, strengthBase, true)
|
|
1363
|
-
end
|
|
1364
|
-
},
|
|
1365
|
-
true
|
|
1366
|
-
)
|
|
1367
1408
|
__TS__SetDescriptor(
|
|
1368
1409
|
Unit.prototype,
|
|
1369
1410
|
"strengthBonus",
|
|
@@ -1381,19 +1422,6 @@ __TS__SetDescriptor(
|
|
|
1381
1422
|
end},
|
|
1382
1423
|
true
|
|
1383
1424
|
)
|
|
1384
|
-
__TS__SetDescriptor(
|
|
1385
|
-
Unit.prototype,
|
|
1386
|
-
"agilityBase",
|
|
1387
|
-
{
|
|
1388
|
-
get = function(self)
|
|
1389
|
-
return getHeroAgi(self.handle, false)
|
|
1390
|
-
end,
|
|
1391
|
-
set = function(self, agilityBase)
|
|
1392
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1393
|
-
end
|
|
1394
|
-
},
|
|
1395
|
-
true
|
|
1396
|
-
)
|
|
1397
1425
|
__TS__SetDescriptor(
|
|
1398
1426
|
Unit.prototype,
|
|
1399
1427
|
"agilityBonus",
|
|
@@ -1411,19 +1439,6 @@ __TS__SetDescriptor(
|
|
|
1411
1439
|
end},
|
|
1412
1440
|
true
|
|
1413
1441
|
)
|
|
1414
|
-
__TS__SetDescriptor(
|
|
1415
|
-
Unit.prototype,
|
|
1416
|
-
"intelligenceBase",
|
|
1417
|
-
{
|
|
1418
|
-
get = function(self)
|
|
1419
|
-
return getHeroInt(self.handle, false)
|
|
1420
|
-
end,
|
|
1421
|
-
set = function(self, intelligenceBase)
|
|
1422
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1423
|
-
end
|
|
1424
|
-
},
|
|
1425
|
-
true
|
|
1426
|
-
)
|
|
1427
1442
|
__TS__SetDescriptor(
|
|
1428
1443
|
Unit.prototype,
|
|
1429
1444
|
"intelligenceBonus",
|
|
@@ -1472,7 +1487,7 @@ __TS__SetDescriptor(
|
|
|
1472
1487
|
"isTeamGlowVisible",
|
|
1473
1488
|
{
|
|
1474
1489
|
get = function(self)
|
|
1475
|
-
return not self[
|
|
1490
|
+
return not self[107]
|
|
1476
1491
|
end,
|
|
1477
1492
|
set = function(self, isTeamGlowVisible)
|
|
1478
1493
|
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
@@ -1482,7 +1497,7 @@ __TS__SetDescriptor(
|
|
|
1482
1497
|
else
|
|
1483
1498
|
____temp_7 = nil
|
|
1484
1499
|
end
|
|
1485
|
-
self[
|
|
1500
|
+
self[107] = ____temp_7
|
|
1486
1501
|
end
|
|
1487
1502
|
},
|
|
1488
1503
|
true
|
|
@@ -1492,7 +1507,7 @@ __TS__SetDescriptor(
|
|
|
1492
1507
|
"color",
|
|
1493
1508
|
{set = function(self, color)
|
|
1494
1509
|
SetUnitColor(self.handle, color.handle)
|
|
1495
|
-
if self[
|
|
1510
|
+
if self[107] then
|
|
1496
1511
|
BlzShowUnitTeamGlow(self.handle, false)
|
|
1497
1512
|
end
|
|
1498
1513
|
end},
|
|
@@ -1516,14 +1531,14 @@ __TS__SetDescriptor(
|
|
|
1516
1531
|
"maxHealth",
|
|
1517
1532
|
{
|
|
1518
1533
|
get = function(self)
|
|
1519
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1534
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1520
1535
|
end,
|
|
1521
1536
|
set = function(self, maxHealth)
|
|
1522
|
-
if maxHealth < 1 and self[
|
|
1523
|
-
self[
|
|
1537
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1538
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1524
1539
|
maxHealth = 1
|
|
1525
1540
|
end
|
|
1526
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1541
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1527
1542
|
end
|
|
1528
1543
|
},
|
|
1529
1544
|
true
|
|
@@ -1565,10 +1580,10 @@ __TS__SetDescriptor(
|
|
|
1565
1580
|
"health",
|
|
1566
1581
|
{
|
|
1567
1582
|
get = function(self)
|
|
1568
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1583
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1569
1584
|
end,
|
|
1570
1585
|
set = function(self, health)
|
|
1571
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1586
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1572
1587
|
end
|
|
1573
1588
|
},
|
|
1574
1589
|
true
|
|
@@ -1644,25 +1659,12 @@ __TS__SetDescriptor(
|
|
|
1644
1659
|
},
|
|
1645
1660
|
true
|
|
1646
1661
|
)
|
|
1647
|
-
__TS__SetDescriptor(
|
|
1648
|
-
Unit.prototype,
|
|
1649
|
-
"flyHeight",
|
|
1650
|
-
{
|
|
1651
|
-
get = function(self)
|
|
1652
|
-
return getUnitFlyHeight(self.handle)
|
|
1653
|
-
end,
|
|
1654
|
-
set = function(self, v)
|
|
1655
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1656
|
-
end
|
|
1657
|
-
},
|
|
1658
|
-
true
|
|
1659
|
-
)
|
|
1660
1662
|
__TS__SetDescriptor(
|
|
1661
1663
|
Unit.prototype,
|
|
1662
1664
|
"x",
|
|
1663
1665
|
{
|
|
1664
1666
|
get = function(self)
|
|
1665
|
-
return self[
|
|
1667
|
+
return self[108] or getUnitX(self.handle)
|
|
1666
1668
|
end,
|
|
1667
1669
|
set = function(self, v)
|
|
1668
1670
|
SetUnitX(self.handle, v)
|
|
@@ -1675,7 +1677,7 @@ __TS__SetDescriptor(
|
|
|
1675
1677
|
"y",
|
|
1676
1678
|
{
|
|
1677
1679
|
get = function(self)
|
|
1678
|
-
return self[
|
|
1680
|
+
return self[109] or getUnitY(self.handle)
|
|
1679
1681
|
end,
|
|
1680
1682
|
set = function(self, v)
|
|
1681
1683
|
SetUnitY(self.handle, v)
|
|
@@ -1780,14 +1782,18 @@ __TS__SetDescriptor(
|
|
|
1780
1782
|
local handle = self.handle
|
|
1781
1783
|
if isPaused and not IsUnitPaused(handle) then
|
|
1782
1784
|
self[101] = true
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
+
if (self[103] or 0) <= 0 then
|
|
1786
|
+
for _ = self[102] or 0, -1 do
|
|
1787
|
+
BlzPauseUnitEx(handle, true)
|
|
1788
|
+
end
|
|
1785
1789
|
end
|
|
1786
1790
|
PauseUnit(handle, true)
|
|
1787
1791
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1788
1792
|
PauseUnit(handle, false)
|
|
1789
|
-
|
|
1790
|
-
|
|
1793
|
+
if (self[103] or 0) <= 0 then
|
|
1794
|
+
for _ = self[102] or 0, -1 do
|
|
1795
|
+
BlzPauseUnitEx(handle, false)
|
|
1796
|
+
end
|
|
1791
1797
|
end
|
|
1792
1798
|
self[101] = nil
|
|
1793
1799
|
end
|
|
@@ -1845,20 +1851,6 @@ __TS__SetDescriptor(
|
|
|
1845
1851
|
},
|
|
1846
1852
|
true
|
|
1847
1853
|
)
|
|
1848
|
-
__TS__SetDescriptor(
|
|
1849
|
-
Unit.prototype,
|
|
1850
|
-
"scale",
|
|
1851
|
-
{
|
|
1852
|
-
get = function(self)
|
|
1853
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1854
|
-
end,
|
|
1855
|
-
set = function(self, v)
|
|
1856
|
-
setUnitScale(self.handle, v, v, v)
|
|
1857
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1858
|
-
end
|
|
1859
|
-
},
|
|
1860
|
-
true
|
|
1861
|
-
)
|
|
1862
1854
|
__TS__SetDescriptor(
|
|
1863
1855
|
Unit.prototype,
|
|
1864
1856
|
"timeScale",
|
|
@@ -1885,7 +1877,7 @@ __TS__SetDescriptor(
|
|
|
1885
1877
|
Unit.prototype,
|
|
1886
1878
|
"pathingCollisionRange",
|
|
1887
1879
|
{get = function(self)
|
|
1888
|
-
return 16 * (min(
|
|
1880
|
+
return 16 * (math.min(
|
|
1889
1881
|
getUnitCollisionSize(self.handle) // 16,
|
|
1890
1882
|
3
|
|
1891
1883
|
) + 1)
|
|
@@ -1995,30 +1987,6 @@ __TS__SetDescriptor(
|
|
|
1995
1987
|
end},
|
|
1996
1988
|
true
|
|
1997
1989
|
)
|
|
1998
|
-
__TS__SetDescriptor(
|
|
1999
|
-
Unit.prototype,
|
|
2000
|
-
"onUnitInRange",
|
|
2001
|
-
{get = function(self)
|
|
2002
|
-
local handle = self.handle
|
|
2003
|
-
local onUnitInRange = setmetatable(
|
|
2004
|
-
{},
|
|
2005
|
-
{__index = function(self, value)
|
|
2006
|
-
local event = __TS__New(
|
|
2007
|
-
TriggerEvent,
|
|
2008
|
-
function(trigger)
|
|
2009
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
2010
|
-
end,
|
|
2011
|
-
function() return ____exports.Unit:of(handle) end
|
|
2012
|
-
)
|
|
2013
|
-
rawset(self, value, event)
|
|
2014
|
-
return event
|
|
2015
|
-
end}
|
|
2016
|
-
)
|
|
2017
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
2018
|
-
return onUnitInRange
|
|
2019
|
-
end},
|
|
2020
|
-
true
|
|
2021
|
-
)
|
|
2022
1990
|
__TS__SetDescriptor(
|
|
2023
1991
|
Unit.prototype,
|
|
2024
1992
|
"onManaEqual",
|
|
@@ -2154,6 +2122,11 @@ __TS__SetDescriptor(
|
|
|
2154
2122
|
end},
|
|
2155
2123
|
true
|
|
2156
2124
|
)
|
|
2125
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2126
|
+
____exports.UnitTriggerEvent,
|
|
2127
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2128
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2129
|
+
)
|
|
2157
2130
|
Unit.deathEvent = __TS__New(
|
|
2158
2131
|
____exports.UnitTriggerEvent,
|
|
2159
2132
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2171,7 +2144,7 @@ Unit.onResurrect = __TS__New(
|
|
|
2171
2144
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2172
2145
|
dead[unit] = true
|
|
2173
2146
|
end)
|
|
2174
|
-
____exports.Unit.onImmediateOrder[
|
|
2147
|
+
____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
|
|
2175
2148
|
if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
|
|
2176
2149
|
dead[unit] = false
|
|
2177
2150
|
invoke(event, unit)
|
|
@@ -2188,7 +2161,7 @@ Unit.morphEvent = __TS__New(
|
|
|
2188
2161
|
invoke(event, unit)
|
|
2189
2162
|
end
|
|
2190
2163
|
end
|
|
2191
|
-
____exports.Unit.onImmediateOrder[
|
|
2164
|
+
____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
|
|
2192
2165
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2193
2166
|
Timer:run(ifNotLeft, unit)
|
|
2194
2167
|
end
|
|
@@ -2470,12 +2443,7 @@ Unit.onDamaging = (function()
|
|
|
2470
2443
|
preventRetaliation = damagingEventPreventRetaliation
|
|
2471
2444
|
}
|
|
2472
2445
|
if data.isAttack and source then
|
|
2473
|
-
|
|
2474
|
-
if weapon == -1 then
|
|
2475
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2476
|
-
weapon = 0
|
|
2477
|
-
end
|
|
2478
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2446
|
+
data.weapon = source:chooseWeapon(target)
|
|
2479
2447
|
end
|
|
2480
2448
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2481
2449
|
invoke(
|
|
@@ -2620,7 +2588,7 @@ Unit.onDamage = __TS__New(
|
|
|
2620
2588
|
invoke(event, source, target, evData)
|
|
2621
2589
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2622
2590
|
local bonusHealth = math.ceil(evData.amount)
|
|
2623
|
-
target[
|
|
2591
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2624
2592
|
BlzSetUnitMaxHP(
|
|
2625
2593
|
target.handle,
|
|
2626
2594
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2634,7 +2602,7 @@ Unit.onDamage = __TS__New(
|
|
|
2634
2602
|
evData[0],
|
|
2635
2603
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2636
2604
|
)
|
|
2637
|
-
target[
|
|
2605
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2638
2606
|
SetWidgetLife(
|
|
2639
2607
|
target.handle,
|
|
2640
2608
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2660,7 +2628,7 @@ Unit.itemDroppedEvent = __TS__New(
|
|
|
2660
2628
|
function()
|
|
2661
2629
|
local unit = getTriggerUnit()
|
|
2662
2630
|
local item = getManipulatedItem()
|
|
2663
|
-
if getUnitTypeId(unit) ~= dummyUnitId and not (
|
|
2631
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
|
|
2664
2632
|
return ____exports.Unit:of(unit), Item:of(item)
|
|
2665
2633
|
end
|
|
2666
2634
|
return IgnoreEvent
|
|
@@ -2672,10 +2640,10 @@ Unit.itemPickedUpEvent = __TS__New(
|
|
|
2672
2640
|
function()
|
|
2673
2641
|
local unitHandle = getTriggerUnit()
|
|
2674
2642
|
local itemHandle = getManipulatedItem()
|
|
2675
|
-
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (
|
|
2643
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
|
|
2676
2644
|
local unit = ____exports.Unit:of(unitHandle)
|
|
2677
2645
|
local item = Item:of(itemHandle)
|
|
2678
|
-
if item
|
|
2646
|
+
if ownerByItem[item] ~= unit then
|
|
2679
2647
|
return unit, item
|
|
2680
2648
|
end
|
|
2681
2649
|
end
|
|
@@ -2688,17 +2656,12 @@ Unit.itemUsedEvent = __TS__New(
|
|
|
2688
2656
|
function()
|
|
2689
2657
|
local unit = getTriggerUnit()
|
|
2690
2658
|
local item = getManipulatedItem()
|
|
2691
|
-
if getUnitTypeId(unit) ~= dummyUnitId and not (
|
|
2659
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
|
|
2692
2660
|
return ____exports.Unit:of(unit), Item:of(item)
|
|
2693
2661
|
end
|
|
2694
2662
|
return IgnoreEvent
|
|
2695
2663
|
end
|
|
2696
2664
|
)
|
|
2697
|
-
Unit.itemStackedEvent = __TS__New(
|
|
2698
|
-
____exports.UnitTriggerEvent,
|
|
2699
|
-
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2700
|
-
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(BlzGetStackingItemTarget()), Item:of(BlzGetStackingItemSource()) end
|
|
2701
|
-
)
|
|
2702
2665
|
__TS__ObjectDefineProperty(
|
|
2703
2666
|
Unit,
|
|
2704
2667
|
"itemChargesChangedEvent",
|
|
@@ -2714,51 +2677,6 @@ __TS__ObjectDefineProperty(
|
|
|
2714
2677
|
return event
|
|
2715
2678
|
end}
|
|
2716
2679
|
)
|
|
2717
|
-
__TS__ObjectDefineProperty(
|
|
2718
|
-
Unit,
|
|
2719
|
-
"itemUseOrderEvent",
|
|
2720
|
-
{get = function(self)
|
|
2721
|
-
local event = __TS__New(Event)
|
|
2722
|
-
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2723
|
-
local slot = order - orderId("useslot0")
|
|
2724
|
-
local function listener(unit)
|
|
2725
|
-
local item = unit.items[slot + 1]
|
|
2726
|
-
if item ~= nil then
|
|
2727
|
-
invoke(event, unit, item)
|
|
2728
|
-
end
|
|
2729
|
-
end
|
|
2730
|
-
self.onImmediateOrder[order]:addListener(listener)
|
|
2731
|
-
self.onTargetOrder[order]:addListener(listener)
|
|
2732
|
-
self.onPointOrder[order]:addListener(listener)
|
|
2733
|
-
end
|
|
2734
|
-
rawset(self, "itemUseOrderEvent", event)
|
|
2735
|
-
return event
|
|
2736
|
-
end}
|
|
2737
|
-
)
|
|
2738
|
-
__TS__ObjectDefineProperty(
|
|
2739
|
-
Unit,
|
|
2740
|
-
"itemMoveOrderEvent",
|
|
2741
|
-
{get = function(self)
|
|
2742
|
-
local event = __TS__New(Event)
|
|
2743
|
-
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2744
|
-
local slotTo = order - orderId("moveslot0")
|
|
2745
|
-
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2746
|
-
local slotFrom = unit.items:findSlot(item)
|
|
2747
|
-
if slotFrom ~= nil then
|
|
2748
|
-
invoke(
|
|
2749
|
-
event,
|
|
2750
|
-
unit,
|
|
2751
|
-
item,
|
|
2752
|
-
slotFrom,
|
|
2753
|
-
slotTo
|
|
2754
|
-
)
|
|
2755
|
-
end
|
|
2756
|
-
end)
|
|
2757
|
-
end
|
|
2758
|
-
rawset(self, "itemMoveOrderEvent", event)
|
|
2759
|
-
return event
|
|
2760
|
-
end}
|
|
2761
|
-
)
|
|
2762
2680
|
__TS__ObjectDefineProperty(
|
|
2763
2681
|
Unit,
|
|
2764
2682
|
"onCreate",
|
|
@@ -2784,6 +2702,10 @@ __TS__ObjectDefineProperty(
|
|
|
2784
2702
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2785
2703
|
return destroyEvent
|
|
2786
2704
|
end}
|
|
2705
|
+
)
|
|
2706
|
+
Unit.synchronize = synchronizer(
|
|
2707
|
+
function(unit) return unit.syncId end,
|
|
2708
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2787
2709
|
);
|
|
2788
2710
|
(function(self)
|
|
2789
2711
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2801,11 +2723,7 @@ __TS__ObjectDefineProperty(
|
|
|
2801
2723
|
function(____, id) return fourCC(id) end
|
|
2802
2724
|
)
|
|
2803
2725
|
end)
|
|
2804
|
-
for ____, leaveOrderId in ipairs({
|
|
2805
|
-
orderId("undefend"),
|
|
2806
|
-
orderId("magicundefense"),
|
|
2807
|
-
orderId("unimmolation")
|
|
2808
|
-
}) do
|
|
2726
|
+
for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
|
|
2809
2727
|
____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
|
|
2810
2728
|
local handle = unit.handle
|
|
2811
2729
|
for i = 1, #leaveAbilityIds do
|
|
@@ -2813,7 +2731,8 @@ __TS__ObjectDefineProperty(
|
|
|
2813
2731
|
return
|
|
2814
2732
|
end
|
|
2815
2733
|
end
|
|
2816
|
-
unit:
|
|
2734
|
+
unit:saveData()
|
|
2735
|
+
Timer:run(unit, "destroy")
|
|
2817
2736
|
end)
|
|
2818
2737
|
end
|
|
2819
2738
|
end)(Unit)
|