warscript 0.0.1-dev.ab8c392 → 0.0.1-dev.ac2149a
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 -1
- package/attributes.lua +17 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +24 -6
- package/core/types/effect.lua +169 -107
- package/core/types/frame.d.ts +24 -3
- package/core/types/frame.lua +198 -42
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.lua +9 -9
- package/core/types/image.d.ts +0 -1
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- 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 +18 -25
- package/core/types/sound.lua +113 -33
- package/core/types/tileCell.d.ts +18 -3
- package/core/types/tileCell.lua +108 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +13 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +127 -4
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +24 -11
- package/engine/behavior.lua +233 -73
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
- package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
- package/engine/behaviour/ability/damage.d.ts +43 -11
- package/engine/behaviour/ability/damage.lua +89 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +44 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
- package/engine/behaviour/ability/on-command-impact.lua +26 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +37 -7
- package/engine/behaviour/ability.lua +208 -27
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -7
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +49 -4
- package/engine/behaviour/unit.lua +293 -2
- package/engine/buff.d.ts +168 -59
- package/engine/buff.lua +767 -277
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +30 -14
- package/engine/internal/ability.lua +177 -104
- package/engine/internal/item/ability.lua +162 -4
- 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 +37 -8
- package/engine/internal/item.d.ts +34 -18
- package/engine/internal/item.lua +308 -102
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- 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/misc/unit-ability-level-natives.d.ts +2 -0
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- 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 +45 -1
- package/engine/internal/unit/ability.lua +142 -19
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +93 -0
- 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/bonus.d.ts +25 -8
- package/engine/internal/unit/bonus.lua +125 -9
- 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.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +14 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/inventory.d.ts +28 -0
- 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.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- 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.d.ts +2 -1
- package/engine/internal/unit+ability.lua +75 -5
- 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+rally.lua +9 -31
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +70 -13
- package/engine/internal/unit.d.ts +91 -38
- package/engine/internal/unit.lua +667 -352
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +35 -2
- package/engine/local-client.lua +367 -15
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- 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/attachment-preset.d.ts +14 -3
- package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
- 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/combat-classification.d.ts +0 -2
- 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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -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-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- 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/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/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 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -1
- package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- 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/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -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/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/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/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -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/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -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-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- 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/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- 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/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -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 +41 -21
- package/engine/object-data/entry/ability-type.lua +337 -44
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +10 -13
- package/engine/object-data/entry/buff-type.lua +39 -29
- package/engine/object-data/entry/destructible-type.d.ts +32 -3
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +32 -4
- package/engine/object-data/entry/item-type.lua +177 -2
- package/engine/object-data/entry/lightning-type.d.ts +6 -9
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +92 -8
- package/engine/object-data/entry/unit-type.lua +748 -75
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +2 -3
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +23 -17
- package/engine/object-data/entry.lua +68 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +61 -7
- 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 -8
- package/engine/object-field.lua +362 -117
- package/engine/random.d.ts +11 -0
- package/engine/random.lua +30 -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 +48 -0
- package/engine/standard/entries/buff-type.lua +46 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +44 -1
- package/engine/standard/entries/unit-type.lua +44 -1
- package/engine/standard/fields/ability.d.ts +5 -3
- package/engine/standard/fields/ability.lua +5 -3
- 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 +13 -0
- package/engine/unit.lua +22 -2
- package/event.d.ts +3 -4
- package/event.lua +9 -5
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +147 -43
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +2 -2
- package/math.lua +14 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +28 -3
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +13 -12
- package/objutil/object.d.ts +0 -1
- package/objutil/object.lua +1 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +16 -0
- package/string.lua +5 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +19 -6
- package/utility/arrays.lua +60 -3
- package/utility/bit-set.d.ts +0 -2
- 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/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +16 -4
- package/utility/linked-set.lua +54 -3
- package/utility/lua-maps.d.ts +16 -4
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +3 -2
- 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/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- 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/ability-disable-counter.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
|
@@ -5,9 +5,12 @@ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
|
5
5
|
local __TS__New = ____lualib.__TS__New
|
|
6
6
|
local __TS__Class = ____lualib.__TS__Class
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
8
9
|
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
9
10
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
10
|
-
local
|
|
11
|
+
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
12
|
+
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
13
|
+
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
11
14
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
15
|
local Set = ____lualib.Set
|
|
13
16
|
local __TS__Spread = ____lualib.__TS__Spread
|
|
@@ -44,37 +47,44 @@ local checkNotNull = ____preconditions.checkNotNull
|
|
|
44
47
|
local ____constants = require("engine.constants")
|
|
45
48
|
local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
|
|
46
49
|
local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
|
|
47
|
-
local
|
|
48
|
-
local
|
|
49
|
-
local
|
|
50
|
-
local
|
|
50
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
51
|
+
local isItemIgnoredInEvents = ____ignore_2Devents_2Ditems.isItemIgnoredInEvents
|
|
52
|
+
local ____owner_2Dcache = require("engine.internal.item.owner-cache")
|
|
53
|
+
local ownerByItem = ____owner_2Dcache.ownerByItem
|
|
54
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
55
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
56
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
57
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
58
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
59
|
+
local ____attributes = require("attributes")
|
|
60
|
+
local isAttribute = ____attributes.isAttribute
|
|
61
|
+
local ____ability = require("engine.internal.item.ability")
|
|
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
|
|
51
67
|
local match = string.match
|
|
52
68
|
local ____tostring = _G.tostring
|
|
53
69
|
local setUnitAnimation = SetUnitAnimation
|
|
54
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
70
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
57
71
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
72
|
local getUnitRealField = BlzGetUnitRealField
|
|
59
73
|
local getHeroStr = GetHeroStr
|
|
60
74
|
local getHeroAgi = GetHeroAgi
|
|
61
75
|
local getHeroInt = GetHeroInt
|
|
62
|
-
local setHeroStr = SetHeroStr
|
|
63
|
-
local setHeroAgi = SetHeroAgi
|
|
64
|
-
local setHeroInt = SetHeroInt
|
|
65
76
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
66
77
|
local getUnitStringField = BlzGetUnitStringField
|
|
67
78
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
68
79
|
local setUnitRealField = BlzSetUnitRealField
|
|
69
80
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
70
81
|
local setUnitStringField = BlzSetUnitStringField
|
|
71
|
-
local setUnitScale = SetUnitScale
|
|
72
82
|
local setUnitPosition = SetUnitPosition
|
|
73
83
|
local setUnitTimeScale = SetUnitTimeScale
|
|
74
84
|
local getHandleId = GetHandleId
|
|
85
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
75
86
|
local createUnit = CreateUnit
|
|
76
87
|
local killUnit = KillUnit
|
|
77
|
-
local setUnitExploded = SetUnitExploded
|
|
78
88
|
local removeUnit = RemoveUnit
|
|
79
89
|
local getUnitTypeId = GetUnitTypeId
|
|
80
90
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -90,11 +100,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
100
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
101
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
102
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local
|
|
94
|
-
local
|
|
103
|
+
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
104
|
+
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
105
|
+
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
106
|
+
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
95
107
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
108
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
98
109
|
local isUnitInvisible = IsUnitInvisible
|
|
99
110
|
local isUnitVisible = IsUnitVisible
|
|
100
111
|
local getUnitX = GetUnitX
|
|
@@ -111,15 +122,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
111
122
|
local getIssuedOrderId = GetIssuedOrderId
|
|
112
123
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
113
124
|
local unitAlive = UnitAlive
|
|
114
|
-
local unitAddType = UnitAddType
|
|
115
|
-
local unitRemoveType = UnitRemoveType
|
|
116
|
-
local isUnitIllusion = IsUnitIllusion
|
|
117
|
-
local isUnitType = IsUnitType
|
|
118
125
|
local isUnitAlly = IsUnitAlly
|
|
119
126
|
local isUnitEnemy = IsUnitEnemy
|
|
120
127
|
local getOwningPlayer = GetOwningPlayer
|
|
121
|
-
local setUnitColor = SetUnitColor
|
|
122
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
123
128
|
____exports.UnitClassification = {}
|
|
124
129
|
local UnitClassification = ____exports.UnitClassification
|
|
125
130
|
do
|
|
@@ -129,6 +134,7 @@ do
|
|
|
129
134
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
130
135
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
131
136
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
137
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
132
138
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
133
139
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
134
140
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -275,16 +281,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
275
281
|
end
|
|
276
282
|
local function dispatch(event, idGetter, argsGetter)
|
|
277
283
|
local initialized = false
|
|
278
|
-
local x = {}
|
|
279
284
|
return setmetatable(
|
|
280
|
-
|
|
285
|
+
{},
|
|
281
286
|
{
|
|
282
287
|
__index = function(self, id)
|
|
283
288
|
if type(id) ~= "number" then
|
|
284
289
|
return event[id]
|
|
285
290
|
end
|
|
286
291
|
if not initialized then
|
|
287
|
-
local invoke = Event.invoke
|
|
288
292
|
event:addListener(function(...)
|
|
289
293
|
local id = idGetter(...)
|
|
290
294
|
local dispatched = rawget(self, id)
|
|
@@ -322,7 +326,6 @@ local function dispatchAbility(event)
|
|
|
322
326
|
return event[id]
|
|
323
327
|
end
|
|
324
328
|
if not initialized then
|
|
325
|
-
local invoke = Event.invoke
|
|
326
329
|
event:addListener(function(unit, ability, ...)
|
|
327
330
|
local dispatched = rawget(self, ability.typeId)
|
|
328
331
|
if dispatched ~= nil then
|
|
@@ -339,6 +342,9 @@ local function dispatchAbility(event)
|
|
|
339
342
|
}
|
|
340
343
|
)
|
|
341
344
|
end
|
|
345
|
+
local function damagingEventPreventRetaliation(self)
|
|
346
|
+
self[0] = true
|
|
347
|
+
end
|
|
342
348
|
local function damageEventPreventDeath(self, callback, ...)
|
|
343
349
|
if self[0] ~= nil then
|
|
344
350
|
return
|
|
@@ -350,7 +356,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
350
356
|
rawset(self, 1 + i, (select(i, ...)))
|
|
351
357
|
end
|
|
352
358
|
end
|
|
353
|
-
local damageSetters = {
|
|
359
|
+
local damageSetters = {
|
|
360
|
+
amount = BlzSetEventDamage,
|
|
361
|
+
attackType = function(attackType)
|
|
362
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
363
|
+
end,
|
|
364
|
+
damageType = BlzSetEventDamageType,
|
|
365
|
+
weaponType = BlzSetEventWeaponType
|
|
366
|
+
}
|
|
354
367
|
local jlimitopByOperator = {
|
|
355
368
|
[0] = LESS_THAN_OR_EQUAL,
|
|
356
369
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -368,15 +381,27 @@ local modifiers = {
|
|
|
368
381
|
end,
|
|
369
382
|
armor = function(unit, value)
|
|
370
383
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
371
|
-
assert(
|
|
384
|
+
assert(
|
|
385
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
386
|
+
"armor bonus ability must be made permanent",
|
|
387
|
+
unit
|
|
388
|
+
)
|
|
372
389
|
end
|
|
373
|
-
local ability = assert(
|
|
374
|
-
|
|
375
|
-
ability,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
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
|
+
)
|
|
380
405
|
end
|
|
381
406
|
}
|
|
382
407
|
local getters = {
|
|
@@ -387,53 +412,184 @@ local getters = {
|
|
|
387
412
|
return BlzGetUnitArmor(unit)
|
|
388
413
|
end
|
|
389
414
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
415
|
+
____exports.UnitWeapon = __TS__Class()
|
|
416
|
+
local UnitWeapon = ____exports.UnitWeapon
|
|
417
|
+
UnitWeapon.name = "UnitWeapon"
|
|
418
|
+
function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
419
|
+
self.unit = unit
|
|
420
|
+
self.index = index
|
|
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
|
+
)
|
|
435
|
+
__TS__SetDescriptor(
|
|
436
|
+
UnitWeapon.prototype,
|
|
437
|
+
"cooldown",
|
|
438
|
+
{
|
|
439
|
+
get = function(self)
|
|
440
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
|
|
441
|
+
end,
|
|
442
|
+
set = function(self, cooldown)
|
|
443
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
|
|
444
|
+
end
|
|
445
|
+
},
|
|
446
|
+
true
|
|
447
|
+
)
|
|
448
|
+
__TS__SetDescriptor(
|
|
449
|
+
UnitWeapon.prototype,
|
|
450
|
+
"damage",
|
|
451
|
+
{
|
|
452
|
+
get = function(self)
|
|
453
|
+
local minimumDamage = self.damageBase + self.damageDiceCount
|
|
454
|
+
local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
|
|
455
|
+
return {minimumDamage, maximumDamage}
|
|
456
|
+
end,
|
|
457
|
+
set = function(self, ____bindingPattern0)
|
|
458
|
+
local maximumDamage
|
|
459
|
+
local minimumDamage
|
|
460
|
+
minimumDamage = ____bindingPattern0[1]
|
|
461
|
+
maximumDamage = ____bindingPattern0[2]
|
|
462
|
+
self.damageBase = minimumDamage - 1
|
|
463
|
+
self.damageDiceCount = 1
|
|
464
|
+
self.damageDiceSideCount = maximumDamage - minimumDamage + 1
|
|
465
|
+
end
|
|
466
|
+
},
|
|
467
|
+
true
|
|
468
|
+
)
|
|
469
|
+
__TS__SetDescriptor(
|
|
470
|
+
UnitWeapon.prototype,
|
|
471
|
+
"allowedTargetCombatClassifications",
|
|
472
|
+
{
|
|
473
|
+
get = function(self)
|
|
474
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
475
|
+
end,
|
|
476
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
477
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
478
|
+
end
|
|
479
|
+
},
|
|
480
|
+
true
|
|
481
|
+
)
|
|
482
|
+
__TS__SetDescriptor(
|
|
483
|
+
UnitWeapon.prototype,
|
|
484
|
+
"damageBase",
|
|
485
|
+
{
|
|
486
|
+
get = function(self)
|
|
487
|
+
return BlzGetUnitBaseDamage(self.unit.handle, self.index)
|
|
488
|
+
end,
|
|
489
|
+
set = function(self, damageBase)
|
|
490
|
+
BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
|
|
491
|
+
end
|
|
492
|
+
},
|
|
493
|
+
true
|
|
494
|
+
)
|
|
495
|
+
__TS__SetDescriptor(
|
|
496
|
+
UnitWeapon.prototype,
|
|
497
|
+
"damageDiceCount",
|
|
498
|
+
{
|
|
499
|
+
get = function(self)
|
|
500
|
+
return BlzGetUnitDiceNumber(self.unit.handle, self.index)
|
|
501
|
+
end,
|
|
502
|
+
set = function(self, damageDiceCount)
|
|
503
|
+
BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
|
|
504
|
+
end
|
|
505
|
+
},
|
|
506
|
+
true
|
|
507
|
+
)
|
|
508
|
+
__TS__SetDescriptor(
|
|
509
|
+
UnitWeapon.prototype,
|
|
510
|
+
"damageDiceSideCount",
|
|
511
|
+
{
|
|
512
|
+
get = function(self)
|
|
513
|
+
return BlzGetUnitDiceSides(self.unit.handle, self.index)
|
|
514
|
+
end,
|
|
515
|
+
set = function(self, damageDiceSideCount)
|
|
516
|
+
BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
|
|
517
|
+
end
|
|
518
|
+
},
|
|
519
|
+
true
|
|
520
|
+
)
|
|
521
|
+
__TS__SetDescriptor(
|
|
522
|
+
UnitWeapon.prototype,
|
|
523
|
+
"range",
|
|
524
|
+
{
|
|
525
|
+
get = function(self)
|
|
526
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
|
|
527
|
+
end,
|
|
528
|
+
set = function(self, range)
|
|
529
|
+
local handle = self.unit.handle
|
|
530
|
+
local index = self.index
|
|
531
|
+
setUnitWeaponRealField(
|
|
532
|
+
handle,
|
|
533
|
+
UNIT_WEAPON_RF_ATTACK_RANGE,
|
|
534
|
+
index + 1,
|
|
535
|
+
getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
|
|
536
|
+
)
|
|
537
|
+
end
|
|
538
|
+
},
|
|
539
|
+
true
|
|
540
|
+
)
|
|
541
|
+
__TS__SetDescriptor(
|
|
542
|
+
UnitWeapon.prototype,
|
|
543
|
+
"impactDelay",
|
|
544
|
+
{
|
|
545
|
+
get = function(self)
|
|
546
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
|
|
547
|
+
end,
|
|
548
|
+
set = function(self, impactDelay)
|
|
549
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
|
|
550
|
+
end
|
|
551
|
+
},
|
|
552
|
+
true
|
|
553
|
+
)
|
|
554
|
+
__TS__SetDescriptor(
|
|
555
|
+
UnitWeapon.prototype,
|
|
556
|
+
"missileArc",
|
|
557
|
+
{
|
|
558
|
+
get = function(self)
|
|
559
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
|
|
560
|
+
end,
|
|
561
|
+
set = function(self, missileArc)
|
|
562
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
|
|
563
|
+
end
|
|
564
|
+
},
|
|
565
|
+
true
|
|
566
|
+
)
|
|
567
|
+
__TS__SetDescriptor(
|
|
568
|
+
UnitWeapon.prototype,
|
|
569
|
+
"missileModelPath",
|
|
570
|
+
{
|
|
571
|
+
get = function(self)
|
|
572
|
+
return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
|
|
573
|
+
end,
|
|
574
|
+
set = function(self, missileModelPath)
|
|
575
|
+
setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
|
|
576
|
+
end
|
|
577
|
+
},
|
|
578
|
+
true
|
|
579
|
+
)
|
|
580
|
+
__TS__SetDescriptor(
|
|
581
|
+
UnitWeapon.prototype,
|
|
582
|
+
"missileSpeed",
|
|
583
|
+
{
|
|
584
|
+
get = function(self)
|
|
585
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
|
|
586
|
+
end,
|
|
587
|
+
set = function(self, missileSpeed)
|
|
588
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
|
|
589
|
+
end
|
|
590
|
+
},
|
|
591
|
+
true
|
|
592
|
+
)
|
|
437
593
|
local getItemAbility = BlzGetItemAbility
|
|
438
594
|
local getUnitAbility = BlzGetUnitAbility
|
|
439
595
|
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
@@ -442,8 +598,6 @@ local getAbilityName = GetAbilityName
|
|
|
442
598
|
local unitAddAbility = UnitAddAbility
|
|
443
599
|
local getUnitGoldCost = GetUnitGoldCost
|
|
444
600
|
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
-
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
-
local unitAddItem = UnitAddItem
|
|
447
601
|
local unitRemoveAbility = UnitRemoveAbility
|
|
448
602
|
local function retrieveAbility(unit, ability, abilityId)
|
|
449
603
|
if ability == nil then
|
|
@@ -453,19 +607,8 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
453
607
|
____exports.Unit:of(unit)
|
|
454
608
|
)
|
|
455
609
|
end
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
return UnitAbility:of(
|
|
459
|
-
ability,
|
|
460
|
-
abilityId,
|
|
461
|
-
____exports.Unit:of(unit)
|
|
462
|
-
)
|
|
463
|
-
end
|
|
464
|
-
else
|
|
465
|
-
unitRemoveAbility(unit, abilityId)
|
|
466
|
-
end
|
|
467
|
-
for i = 0, unitInventorySize(unit) - 1 do
|
|
468
|
-
local item = unitItemInSlot(unit, i)
|
|
610
|
+
for i = 0, UnitInventorySize(unit) - 1 do
|
|
611
|
+
local item = UnitItemInSlot(unit, i)
|
|
469
612
|
if getItemAbility(item, abilityId) == ability then
|
|
470
613
|
return ItemAbility:of(
|
|
471
614
|
ability,
|
|
@@ -510,55 +653,110 @@ local fieldSetters = {
|
|
|
510
653
|
}
|
|
511
654
|
local dummies = {}
|
|
512
655
|
for ____, player in ipairs(Player.all) do
|
|
513
|
-
local dummy = assert(
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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
|
+
)
|
|
520
667
|
ShowUnit(dummy, false)
|
|
521
668
|
dummies[player] = dummy
|
|
522
669
|
end
|
|
670
|
+
local function delayHealthChecksCallback(unit)
|
|
671
|
+
local counter = (unit[104] or 0) - 1
|
|
672
|
+
if counter ~= 0 then
|
|
673
|
+
unit[104] = counter
|
|
674
|
+
return
|
|
675
|
+
end
|
|
676
|
+
unit[104] = nil
|
|
677
|
+
local healthBonus = unit[105]
|
|
678
|
+
if healthBonus ~= nil then
|
|
679
|
+
unit[105] = nil
|
|
680
|
+
local handle = unit.handle
|
|
681
|
+
BlzSetUnitMaxHP(
|
|
682
|
+
handle,
|
|
683
|
+
BlzGetUnitMaxHP(handle) - healthBonus
|
|
684
|
+
)
|
|
685
|
+
end
|
|
686
|
+
end
|
|
687
|
+
local nextSyncId = 1
|
|
688
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
689
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
690
|
+
local function addAbility(unit, abilityTypeId)
|
|
691
|
+
local ____unitAddAbility_result_0
|
|
692
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
693
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
694
|
+
else
|
|
695
|
+
____unitAddAbility_result_0 = nil
|
|
696
|
+
end
|
|
697
|
+
return ____unitAddAbility_result_0
|
|
698
|
+
end
|
|
523
699
|
____exports.Unit = __TS__Class()
|
|
524
700
|
local Unit = ____exports.Unit
|
|
525
701
|
Unit.name = "Unit"
|
|
526
702
|
__TS__ClassExtends(Unit, Handle)
|
|
527
703
|
function Unit.prototype.____constructor(self, handle)
|
|
528
704
|
Handle.prototype.____constructor(self, handle)
|
|
705
|
+
local ____nextSyncId_1 = nextSyncId
|
|
706
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
707
|
+
self.syncId = ____nextSyncId_1
|
|
529
708
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
530
|
-
assert(
|
|
531
|
-
|
|
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
|
+
)
|
|
532
719
|
if unitAddAbility(
|
|
533
720
|
handle,
|
|
534
721
|
fourCC("Amrf")
|
|
535
722
|
) then
|
|
536
|
-
assert(
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
723
|
+
assert(
|
|
724
|
+
unitRemoveAbility(
|
|
725
|
+
handle,
|
|
726
|
+
fourCC("Amrf")
|
|
727
|
+
),
|
|
728
|
+
"fly ability must be removed after addition",
|
|
729
|
+
self
|
|
730
|
+
)
|
|
540
731
|
end
|
|
732
|
+
unitBySyncId[self.syncId] = self
|
|
541
733
|
local ____ = self.abilities
|
|
542
734
|
end
|
|
543
|
-
function Unit.prototype.getEvent(self,
|
|
544
|
-
self.events = self.events or (
|
|
545
|
-
local eventId = GetHandleId(
|
|
546
|
-
|
|
547
|
-
|
|
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(
|
|
548
741
|
TriggerEvent,
|
|
549
742
|
function(trigger)
|
|
550
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
743
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
551
744
|
end,
|
|
552
745
|
collector or (function() return {} end)
|
|
553
746
|
)
|
|
747
|
+
self.events:put(eventId, event)
|
|
554
748
|
end
|
|
555
|
-
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))
|
|
556
756
|
end
|
|
557
757
|
function Unit.prototype.onDestroy(self)
|
|
558
758
|
local handle = self.handle
|
|
559
|
-
|
|
560
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
561
|
-
end
|
|
759
|
+
self:saveData()
|
|
562
760
|
local abilities = self.abilities
|
|
563
761
|
for ____, ability in ipairs(abilities) do
|
|
564
762
|
ability:destroy()
|
|
@@ -576,7 +774,9 @@ function Unit.prototype.onDestroy(self)
|
|
|
576
774
|
end
|
|
577
775
|
local eventsToDestroy = self._eventsToDestroy
|
|
578
776
|
if eventsToDestroy ~= nil then
|
|
579
|
-
|
|
777
|
+
for ____, event in ipairs(eventsToDestroy) do
|
|
778
|
+
event:destroy()
|
|
779
|
+
end
|
|
580
780
|
end
|
|
581
781
|
if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
|
|
582
782
|
unitRemoveAbility(handle, leaveDetectAbilityId)
|
|
@@ -594,7 +794,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
594
794
|
self._attackHandlers = handlers
|
|
595
795
|
if #handlers == 1 then
|
|
596
796
|
local handle = self.handle
|
|
597
|
-
assert(
|
|
797
|
+
assert(
|
|
798
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
799
|
+
"attack handler ability must be added",
|
|
800
|
+
self
|
|
801
|
+
)
|
|
598
802
|
end
|
|
599
803
|
return handler
|
|
600
804
|
end
|
|
@@ -623,17 +827,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
623
827
|
end}
|
|
624
828
|
end
|
|
625
829
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
626
|
-
local
|
|
627
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
830
|
+
local ____combatClassification_2 = combatClassification
|
|
831
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
628
832
|
end
|
|
629
833
|
function Unit.prototype.addClassification(self, classification)
|
|
630
|
-
return
|
|
834
|
+
return UnitAddType(self.handle, classification)
|
|
631
835
|
end
|
|
632
836
|
function Unit.prototype.removeClassification(self, classification)
|
|
633
|
-
return
|
|
837
|
+
return UnitRemoveType(self.handle, classification)
|
|
634
838
|
end
|
|
635
839
|
function Unit.prototype.hasClassification(self, classification)
|
|
636
|
-
return
|
|
840
|
+
return IsUnitType(self.handle, classification)
|
|
637
841
|
end
|
|
638
842
|
function Unit.prototype.isVisibleTo(self, player)
|
|
639
843
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -642,13 +846,19 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
642
846
|
return isUnitInvisible(self.handle, player.handle)
|
|
643
847
|
end
|
|
644
848
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
645
|
-
local
|
|
849
|
+
local ____temp_4
|
|
646
850
|
if type(x) == "number" then
|
|
647
|
-
|
|
851
|
+
____temp_4 = isUnitInRangeXY(self.handle, x, y, range)
|
|
648
852
|
else
|
|
649
|
-
|
|
853
|
+
local ____temp_3
|
|
854
|
+
if __TS__InstanceOf(x, ____exports.Unit) then
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
856
|
+
else
|
|
857
|
+
____temp_3 = isUnitInRangeXY(self.handle, x.x, x.y, range)
|
|
858
|
+
end
|
|
859
|
+
____temp_4 = ____temp_3
|
|
650
860
|
end
|
|
651
|
-
return
|
|
861
|
+
return ____temp_4
|
|
652
862
|
end
|
|
653
863
|
function Unit.prototype.isAllyOf(self, unit)
|
|
654
864
|
return isUnitAlly(
|
|
@@ -666,13 +876,31 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
666
876
|
if type(animation) == "number" then
|
|
667
877
|
setUnitAnimationByIndex(self.handle, animation)
|
|
668
878
|
elseif rarity then
|
|
669
|
-
|
|
879
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
670
880
|
else
|
|
671
881
|
setUnitAnimation(self.handle, animation)
|
|
672
882
|
end
|
|
673
883
|
end
|
|
884
|
+
function Unit.prototype.resetAnimation(self)
|
|
885
|
+
ResetUnitAnimation(self.handle)
|
|
886
|
+
end
|
|
674
887
|
function Unit.prototype.queueAnimation(self, animation)
|
|
675
|
-
|
|
888
|
+
QueueUnitAnimation(self.handle, animation)
|
|
889
|
+
end
|
|
890
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
891
|
+
local firstWeapon = self.firstWeapon
|
|
892
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
893
|
+
return firstWeapon
|
|
894
|
+
end
|
|
895
|
+
local secondWeapon = self.secondWeapon
|
|
896
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
897
|
+
return secondWeapon
|
|
898
|
+
end
|
|
899
|
+
return nil
|
|
900
|
+
end
|
|
901
|
+
function Unit.prototype.delayHealthChecks(self)
|
|
902
|
+
self[104] = (self[104] or 0) + 1
|
|
903
|
+
Timer:run(delayHealthChecksCallback, self)
|
|
676
904
|
end
|
|
677
905
|
function Unit.prototype.setPosition(self, x, y)
|
|
678
906
|
setUnitPosition(self.handle, x, y)
|
|
@@ -681,14 +909,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
681
909
|
return IsUnitSelected(self.handle, player.handle)
|
|
682
910
|
end
|
|
683
911
|
function Unit.prototype.explode(self)
|
|
684
|
-
|
|
912
|
+
SetUnitExploded(self.handle, true)
|
|
685
913
|
killUnit(self.handle)
|
|
686
914
|
end
|
|
687
915
|
function Unit.prototype.kill(self)
|
|
688
916
|
killUnit(self.handle)
|
|
689
917
|
end
|
|
690
|
-
function Unit.prototype.revive(self,
|
|
691
|
-
|
|
918
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
919
|
+
local ____ReviveHero_7 = ReviveHero
|
|
920
|
+
local ____array_6 = __TS__SparseArrayNew(self.handle, x, y)
|
|
921
|
+
local ____doEffect_5 = doEffect
|
|
922
|
+
if ____doEffect_5 == nil then
|
|
923
|
+
____doEffect_5 = false
|
|
924
|
+
end
|
|
925
|
+
__TS__SparseArrayPush(____array_6, ____doEffect_5)
|
|
926
|
+
____ReviveHero_7(__TS__SparseArraySpread(____array_6))
|
|
692
927
|
end
|
|
693
928
|
function Unit.prototype.healTarget(self, target, amount)
|
|
694
929
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -731,17 +966,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
731
966
|
return Item:of(UnitItemInSlot(self.handle, slot))
|
|
732
967
|
end
|
|
733
968
|
function Unit.prototype.addAbility(self, abilityId)
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
969
|
+
local ability = UnitAbility:of(
|
|
970
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
971
|
+
abilityId,
|
|
972
|
+
self
|
|
973
|
+
)
|
|
974
|
+
if ability ~= nil then
|
|
740
975
|
local abilities = self.abilities
|
|
741
976
|
abilities[#abilities + 1] = ability
|
|
742
|
-
return ability
|
|
743
977
|
end
|
|
744
|
-
return
|
|
978
|
+
return ability
|
|
745
979
|
end
|
|
746
980
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
747
981
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -755,47 +989,44 @@ end
|
|
|
755
989
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
756
990
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
757
991
|
end
|
|
758
|
-
function Unit.prototype.
|
|
759
|
-
local
|
|
760
|
-
|
|
761
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
762
|
-
return nil
|
|
763
|
-
end
|
|
764
|
-
return UnitAbility:of(
|
|
765
|
-
getUnitAbility(self.handle, abilityId),
|
|
766
|
-
abilityId,
|
|
767
|
-
self
|
|
768
|
-
)
|
|
992
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
993
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
994
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
769
995
|
end
|
|
770
|
-
function Unit.prototype.removeAbility(self,
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
end
|
|
996
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
997
|
+
local abilities = self.abilities
|
|
998
|
+
for i = 1, #abilities do
|
|
999
|
+
if abilities[i].typeId == abilityTypeId then
|
|
1000
|
+
local ability = abilities[i]
|
|
1001
|
+
tremove(abilities, i)
|
|
1002
|
+
ability:destroy()
|
|
1003
|
+
return true
|
|
779
1004
|
end
|
|
780
|
-
return true
|
|
781
1005
|
end
|
|
782
|
-
return
|
|
1006
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
783
1007
|
end
|
|
784
1008
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
1009
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
1010
|
end
|
|
1011
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
1012
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
1013
|
+
end
|
|
787
1014
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
1015
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
1016
|
end
|
|
790
1017
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
791
1018
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
792
1019
|
end
|
|
793
|
-
function Unit.prototype.interruptAttack(self)
|
|
794
|
-
unitInterruptAttack(self.handle)
|
|
795
|
-
end
|
|
796
1020
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
797
|
-
|
|
798
|
-
unitDisableAbility(
|
|
1021
|
+
local handle = self.handle
|
|
1022
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1023
|
+
Timer:run(
|
|
1024
|
+
unitDisableAbility,
|
|
1025
|
+
handle,
|
|
1026
|
+
abilityId,
|
|
1027
|
+
false,
|
|
1028
|
+
false
|
|
1029
|
+
)
|
|
799
1030
|
end
|
|
800
1031
|
function Unit.prototype.getDistanceTo(self, target)
|
|
801
1032
|
local handle = self.handle
|
|
@@ -855,18 +1086,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
855
1086
|
self:decrementStunCounter()
|
|
856
1087
|
end
|
|
857
1088
|
function Unit.prototype.incrementStunCounter(self)
|
|
858
|
-
local stunCounter = self[
|
|
859
|
-
if not self[
|
|
1089
|
+
local stunCounter = self[102] or 0
|
|
1090
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
860
1091
|
BlzPauseUnitEx(self.handle, true)
|
|
861
1092
|
end
|
|
862
|
-
self[
|
|
1093
|
+
self[102] = stunCounter + 1
|
|
863
1094
|
end
|
|
864
1095
|
function Unit.prototype.decrementStunCounter(self)
|
|
865
|
-
local stunCounter = self[
|
|
866
|
-
if not self[
|
|
1096
|
+
local stunCounter = self[102] or 0
|
|
1097
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
867
1098
|
BlzPauseUnitEx(self.handle, false)
|
|
868
1099
|
end
|
|
869
|
-
self[
|
|
1100
|
+
self[102] = stunCounter - 1
|
|
1101
|
+
end
|
|
1102
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1103
|
+
local forceStunCounter = self[103] or 0
|
|
1104
|
+
if forceStunCounter == 0 then
|
|
1105
|
+
local handle = self.handle
|
|
1106
|
+
if not self[101] then
|
|
1107
|
+
for _ = self[102] or 0, -1 do
|
|
1108
|
+
BlzPauseUnitEx(handle, true)
|
|
1109
|
+
end
|
|
1110
|
+
end
|
|
1111
|
+
BlzPauseUnitEx(handle, true)
|
|
1112
|
+
end
|
|
1113
|
+
self[103] = forceStunCounter + 1
|
|
1114
|
+
end
|
|
1115
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1116
|
+
local forceStunCounter = self[103] or 0
|
|
1117
|
+
if forceStunCounter == 1 then
|
|
1118
|
+
local handle = self.handle
|
|
1119
|
+
if not self[101] then
|
|
1120
|
+
for _ = self[102] or 0, -1 do
|
|
1121
|
+
BlzPauseUnitEx(handle, false)
|
|
1122
|
+
end
|
|
1123
|
+
end
|
|
1124
|
+
BlzPauseUnitEx(handle, false)
|
|
1125
|
+
end
|
|
1126
|
+
self[103] = forceStunCounter - 1
|
|
870
1127
|
end
|
|
871
1128
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
872
1129
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -968,8 +1225,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
968
1225
|
)
|
|
969
1226
|
return targetCollection
|
|
970
1227
|
end
|
|
971
|
-
function Unit.getSelectionOf(self, player)
|
|
972
|
-
|
|
1228
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1229
|
+
if target == nil then
|
|
1230
|
+
target = {}
|
|
1231
|
+
end
|
|
1232
|
+
targetCollection = target
|
|
973
1233
|
targetCollectionNextIndex = 1
|
|
974
1234
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
975
1235
|
return targetCollection
|
|
@@ -991,6 +1251,9 @@ end
|
|
|
991
1251
|
function Unit.prototype.__tostring(self)
|
|
992
1252
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
993
1253
|
end
|
|
1254
|
+
function Unit.getBySyncId(self, syncId)
|
|
1255
|
+
return unitBySyncId[syncId]
|
|
1256
|
+
end
|
|
994
1257
|
__TS__SetDescriptor(
|
|
995
1258
|
Unit.prototype,
|
|
996
1259
|
"_deltas",
|
|
@@ -1050,7 +1313,15 @@ __TS__SetDescriptor(
|
|
|
1050
1313
|
Unit.prototype,
|
|
1051
1314
|
"isIllusion",
|
|
1052
1315
|
{get = function(self)
|
|
1053
|
-
return
|
|
1316
|
+
return IsUnitIllusion(self.handle)
|
|
1317
|
+
end},
|
|
1318
|
+
true
|
|
1319
|
+
)
|
|
1320
|
+
__TS__SetDescriptor(
|
|
1321
|
+
Unit.prototype,
|
|
1322
|
+
"isStunned",
|
|
1323
|
+
{get = function(self)
|
|
1324
|
+
return getUnitCurrentOrder(self.handle) == 851973
|
|
1054
1325
|
end},
|
|
1055
1326
|
true
|
|
1056
1327
|
)
|
|
@@ -1071,12 +1342,27 @@ __TS__SetDescriptor(
|
|
|
1071
1342
|
Unit.prototype,
|
|
1072
1343
|
"weapons",
|
|
1073
1344
|
{get = function(self)
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1345
|
+
return {self.firstWeapon, self.secondWeapon}
|
|
1346
|
+
end},
|
|
1347
|
+
true
|
|
1348
|
+
)
|
|
1349
|
+
__TS__SetDescriptor(
|
|
1350
|
+
Unit.prototype,
|
|
1351
|
+
"firstWeapon",
|
|
1352
|
+
{get = function(self)
|
|
1353
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 0)
|
|
1354
|
+
rawset(self, "firstWeapon", weapon)
|
|
1355
|
+
return weapon
|
|
1356
|
+
end},
|
|
1357
|
+
true
|
|
1358
|
+
)
|
|
1359
|
+
__TS__SetDescriptor(
|
|
1360
|
+
Unit.prototype,
|
|
1361
|
+
"secondWeapon",
|
|
1362
|
+
{get = function(self)
|
|
1363
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 1)
|
|
1364
|
+
rawset(self, "secondWeapon", weapon)
|
|
1365
|
+
return weapon
|
|
1080
1366
|
end},
|
|
1081
1367
|
true
|
|
1082
1368
|
)
|
|
@@ -1114,13 +1400,13 @@ __TS__SetDescriptor(
|
|
|
1114
1400
|
)
|
|
1115
1401
|
__TS__SetDescriptor(
|
|
1116
1402
|
Unit.prototype,
|
|
1117
|
-
"
|
|
1403
|
+
"primaryAttribute",
|
|
1118
1404
|
{
|
|
1119
1405
|
get = function(self)
|
|
1120
|
-
return
|
|
1406
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1121
1407
|
end,
|
|
1122
|
-
set = function(self,
|
|
1123
|
-
|
|
1408
|
+
set = function(self, primaryAttribute)
|
|
1409
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1124
1410
|
end
|
|
1125
1411
|
},
|
|
1126
1412
|
true
|
|
@@ -1142,19 +1428,6 @@ __TS__SetDescriptor(
|
|
|
1142
1428
|
end},
|
|
1143
1429
|
true
|
|
1144
1430
|
)
|
|
1145
|
-
__TS__SetDescriptor(
|
|
1146
|
-
Unit.prototype,
|
|
1147
|
-
"agilityBase",
|
|
1148
|
-
{
|
|
1149
|
-
get = function(self)
|
|
1150
|
-
return getHeroAgi(self.handle, false)
|
|
1151
|
-
end,
|
|
1152
|
-
set = function(self, agilityBase)
|
|
1153
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1154
|
-
end
|
|
1155
|
-
},
|
|
1156
|
-
true
|
|
1157
|
-
)
|
|
1158
1431
|
__TS__SetDescriptor(
|
|
1159
1432
|
Unit.prototype,
|
|
1160
1433
|
"agilityBonus",
|
|
@@ -1172,19 +1445,6 @@ __TS__SetDescriptor(
|
|
|
1172
1445
|
end},
|
|
1173
1446
|
true
|
|
1174
1447
|
)
|
|
1175
|
-
__TS__SetDescriptor(
|
|
1176
|
-
Unit.prototype,
|
|
1177
|
-
"intelligenceBase",
|
|
1178
|
-
{
|
|
1179
|
-
get = function(self)
|
|
1180
|
-
return getHeroInt(self.handle, false)
|
|
1181
|
-
end,
|
|
1182
|
-
set = function(self, intelligenceBase)
|
|
1183
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1184
|
-
end
|
|
1185
|
-
},
|
|
1186
|
-
true
|
|
1187
|
-
)
|
|
1188
1448
|
__TS__SetDescriptor(
|
|
1189
1449
|
Unit.prototype,
|
|
1190
1450
|
"intelligenceBonus",
|
|
@@ -1233,17 +1493,17 @@ __TS__SetDescriptor(
|
|
|
1233
1493
|
"isTeamGlowVisible",
|
|
1234
1494
|
{
|
|
1235
1495
|
get = function(self)
|
|
1236
|
-
return not self[
|
|
1496
|
+
return not self[107]
|
|
1237
1497
|
end,
|
|
1238
1498
|
set = function(self, isTeamGlowVisible)
|
|
1239
|
-
|
|
1240
|
-
local
|
|
1499
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1500
|
+
local ____temp_8
|
|
1241
1501
|
if not isTeamGlowVisible then
|
|
1242
|
-
|
|
1502
|
+
____temp_8 = true
|
|
1243
1503
|
else
|
|
1244
|
-
|
|
1504
|
+
____temp_8 = nil
|
|
1245
1505
|
end
|
|
1246
|
-
self[
|
|
1506
|
+
self[107] = ____temp_8
|
|
1247
1507
|
end
|
|
1248
1508
|
},
|
|
1249
1509
|
true
|
|
@@ -1252,9 +1512,9 @@ __TS__SetDescriptor(
|
|
|
1252
1512
|
Unit.prototype,
|
|
1253
1513
|
"color",
|
|
1254
1514
|
{set = function(self, color)
|
|
1255
|
-
|
|
1256
|
-
if self[
|
|
1257
|
-
|
|
1515
|
+
SetUnitColor(self.handle, color.handle)
|
|
1516
|
+
if self[107] then
|
|
1517
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1258
1518
|
end
|
|
1259
1519
|
end},
|
|
1260
1520
|
true
|
|
@@ -1277,10 +1537,14 @@ __TS__SetDescriptor(
|
|
|
1277
1537
|
"maxHealth",
|
|
1278
1538
|
{
|
|
1279
1539
|
get = function(self)
|
|
1280
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1540
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1281
1541
|
end,
|
|
1282
1542
|
set = function(self, maxHealth)
|
|
1283
|
-
|
|
1543
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1544
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1545
|
+
maxHealth = 1
|
|
1546
|
+
end
|
|
1547
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1284
1548
|
end
|
|
1285
1549
|
},
|
|
1286
1550
|
true
|
|
@@ -1322,10 +1586,10 @@ __TS__SetDescriptor(
|
|
|
1322
1586
|
"health",
|
|
1323
1587
|
{
|
|
1324
1588
|
get = function(self)
|
|
1325
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1589
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1326
1590
|
end,
|
|
1327
1591
|
set = function(self, health)
|
|
1328
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1592
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1329
1593
|
end
|
|
1330
1594
|
},
|
|
1331
1595
|
true
|
|
@@ -1401,25 +1665,12 @@ __TS__SetDescriptor(
|
|
|
1401
1665
|
},
|
|
1402
1666
|
true
|
|
1403
1667
|
)
|
|
1404
|
-
__TS__SetDescriptor(
|
|
1405
|
-
Unit.prototype,
|
|
1406
|
-
"flyHeight",
|
|
1407
|
-
{
|
|
1408
|
-
get = function(self)
|
|
1409
|
-
return getUnitFlyHeight(self.handle)
|
|
1410
|
-
end,
|
|
1411
|
-
set = function(self, v)
|
|
1412
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1413
|
-
end
|
|
1414
|
-
},
|
|
1415
|
-
true
|
|
1416
|
-
)
|
|
1417
1668
|
__TS__SetDescriptor(
|
|
1418
1669
|
Unit.prototype,
|
|
1419
1670
|
"x",
|
|
1420
1671
|
{
|
|
1421
1672
|
get = function(self)
|
|
1422
|
-
return getUnitX(self.handle)
|
|
1673
|
+
return self[108] or getUnitX(self.handle)
|
|
1423
1674
|
end,
|
|
1424
1675
|
set = function(self, v)
|
|
1425
1676
|
SetUnitX(self.handle, v)
|
|
@@ -1432,7 +1683,7 @@ __TS__SetDescriptor(
|
|
|
1432
1683
|
"y",
|
|
1433
1684
|
{
|
|
1434
1685
|
get = function(self)
|
|
1435
|
-
return getUnitY(self.handle)
|
|
1686
|
+
return self[109] or getUnitY(self.handle)
|
|
1436
1687
|
end,
|
|
1437
1688
|
set = function(self, v)
|
|
1438
1689
|
SetUnitY(self.handle, v)
|
|
@@ -1518,10 +1769,10 @@ __TS__SetDescriptor(
|
|
|
1518
1769
|
"gold",
|
|
1519
1770
|
{
|
|
1520
1771
|
get = function(self)
|
|
1521
|
-
return
|
|
1772
|
+
return GetResourceAmount(self.handle)
|
|
1522
1773
|
end,
|
|
1523
1774
|
set = function(self, gold)
|
|
1524
|
-
|
|
1775
|
+
SetResourceAmount(self.handle, gold)
|
|
1525
1776
|
end
|
|
1526
1777
|
},
|
|
1527
1778
|
true
|
|
@@ -1536,17 +1787,21 @@ __TS__SetDescriptor(
|
|
|
1536
1787
|
set = function(self, isPaused)
|
|
1537
1788
|
local handle = self.handle
|
|
1538
1789
|
if isPaused and not IsUnitPaused(handle) then
|
|
1539
|
-
self[
|
|
1540
|
-
|
|
1541
|
-
|
|
1790
|
+
self[101] = true
|
|
1791
|
+
if (self[103] or 0) <= 0 then
|
|
1792
|
+
for _ = self[102] or 0, -1 do
|
|
1793
|
+
BlzPauseUnitEx(handle, true)
|
|
1794
|
+
end
|
|
1542
1795
|
end
|
|
1543
1796
|
PauseUnit(handle, true)
|
|
1544
1797
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1545
1798
|
PauseUnit(handle, false)
|
|
1546
|
-
|
|
1547
|
-
|
|
1799
|
+
if (self[103] or 0) <= 0 then
|
|
1800
|
+
for _ = self[102] or 0, -1 do
|
|
1801
|
+
BlzPauseUnitEx(handle, false)
|
|
1802
|
+
end
|
|
1548
1803
|
end
|
|
1549
|
-
self[
|
|
1804
|
+
self[101] = nil
|
|
1550
1805
|
end
|
|
1551
1806
|
end
|
|
1552
1807
|
},
|
|
@@ -1602,20 +1857,6 @@ __TS__SetDescriptor(
|
|
|
1602
1857
|
},
|
|
1603
1858
|
true
|
|
1604
1859
|
)
|
|
1605
|
-
__TS__SetDescriptor(
|
|
1606
|
-
Unit.prototype,
|
|
1607
|
-
"scale",
|
|
1608
|
-
{
|
|
1609
|
-
get = function(self)
|
|
1610
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1611
|
-
end,
|
|
1612
|
-
set = function(self, v)
|
|
1613
|
-
setUnitScale(self.handle, v, v, v)
|
|
1614
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1615
|
-
end
|
|
1616
|
-
},
|
|
1617
|
-
true
|
|
1618
|
-
)
|
|
1619
1860
|
__TS__SetDescriptor(
|
|
1620
1861
|
Unit.prototype,
|
|
1621
1862
|
"timeScale",
|
|
@@ -1642,13 +1883,26 @@ __TS__SetDescriptor(
|
|
|
1642
1883
|
Unit.prototype,
|
|
1643
1884
|
"pathingCollisionRange",
|
|
1644
1885
|
{get = function(self)
|
|
1645
|
-
return 16 * (min(
|
|
1886
|
+
return 16 * (math.min(
|
|
1646
1887
|
getUnitCollisionSize(self.handle) // 16,
|
|
1647
1888
|
3
|
|
1648
1889
|
) + 1)
|
|
1649
1890
|
end},
|
|
1650
1891
|
true
|
|
1651
1892
|
)
|
|
1893
|
+
__TS__SetDescriptor(
|
|
1894
|
+
Unit.prototype,
|
|
1895
|
+
"movementType",
|
|
1896
|
+
{
|
|
1897
|
+
get = function(self)
|
|
1898
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1899
|
+
end,
|
|
1900
|
+
set = function(self, movementType)
|
|
1901
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1902
|
+
end
|
|
1903
|
+
},
|
|
1904
|
+
true
|
|
1905
|
+
)
|
|
1652
1906
|
__TS__SetDescriptor(
|
|
1653
1907
|
Unit.prototype,
|
|
1654
1908
|
"pathing",
|
|
@@ -1739,30 +1993,6 @@ __TS__SetDescriptor(
|
|
|
1739
1993
|
end},
|
|
1740
1994
|
true
|
|
1741
1995
|
)
|
|
1742
|
-
__TS__SetDescriptor(
|
|
1743
|
-
Unit.prototype,
|
|
1744
|
-
"onUnitInRange",
|
|
1745
|
-
{get = function(self)
|
|
1746
|
-
local handle = self.handle
|
|
1747
|
-
local onUnitInRange = setmetatable(
|
|
1748
|
-
{},
|
|
1749
|
-
{__index = function(self, value)
|
|
1750
|
-
local event = __TS__New(
|
|
1751
|
-
TriggerEvent,
|
|
1752
|
-
function(trigger)
|
|
1753
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1754
|
-
end,
|
|
1755
|
-
function() return ____exports.Unit:of(handle) end
|
|
1756
|
-
)
|
|
1757
|
-
rawset(self, value, event)
|
|
1758
|
-
return event
|
|
1759
|
-
end}
|
|
1760
|
-
)
|
|
1761
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1762
|
-
return onUnitInRange
|
|
1763
|
-
end},
|
|
1764
|
-
true
|
|
1765
|
-
)
|
|
1766
1996
|
__TS__SetDescriptor(
|
|
1767
1997
|
Unit.prototype,
|
|
1768
1998
|
"onManaEqual",
|
|
@@ -1830,6 +2060,14 @@ __TS__SetDescriptor(
|
|
|
1830
2060
|
end},
|
|
1831
2061
|
true
|
|
1832
2062
|
)
|
|
2063
|
+
__TS__SetDescriptor(
|
|
2064
|
+
Unit.prototype,
|
|
2065
|
+
"targetAcquiredEvent",
|
|
2066
|
+
{get = function(self)
|
|
2067
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2068
|
+
end},
|
|
2069
|
+
true
|
|
2070
|
+
)
|
|
1833
2071
|
__TS__SetDescriptor(
|
|
1834
2072
|
Unit.prototype,
|
|
1835
2073
|
"onSelect",
|
|
@@ -1890,6 +2128,11 @@ __TS__SetDescriptor(
|
|
|
1890
2128
|
end},
|
|
1891
2129
|
true
|
|
1892
2130
|
)
|
|
2131
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2132
|
+
____exports.UnitTriggerEvent,
|
|
2133
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2134
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2135
|
+
)
|
|
1893
2136
|
Unit.deathEvent = __TS__New(
|
|
1894
2137
|
____exports.UnitTriggerEvent,
|
|
1895
2138
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -1903,12 +2146,11 @@ Unit.onDecay = __TS__New(
|
|
|
1903
2146
|
Unit.onResurrect = __TS__New(
|
|
1904
2147
|
InitializingEvent,
|
|
1905
2148
|
function(event)
|
|
1906
|
-
local invoke = Event.invoke
|
|
1907
2149
|
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
2150
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
2151
|
dead[unit] = true
|
|
1910
2152
|
end)
|
|
1911
|
-
____exports.Unit.onImmediateOrder[
|
|
2153
|
+
____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
|
|
1912
2154
|
if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
|
|
1913
2155
|
dead[unit] = false
|
|
1914
2156
|
invoke(event, unit)
|
|
@@ -1919,10 +2161,15 @@ Unit.onResurrect = __TS__New(
|
|
|
1919
2161
|
Unit.morphEvent = __TS__New(
|
|
1920
2162
|
InitializingEvent,
|
|
1921
2163
|
function(event)
|
|
1922
|
-
|
|
2164
|
+
local function ifNotLeft(unit)
|
|
2165
|
+
local handle = unit.handle
|
|
2166
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2167
|
+
invoke(event, unit)
|
|
2168
|
+
end
|
|
2169
|
+
end
|
|
2170
|
+
____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
|
|
1923
2171
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
-
|
|
1925
|
-
Timer:run(Event.invoke, event, unit)
|
|
2172
|
+
Timer:run(ifNotLeft, unit)
|
|
1926
2173
|
end
|
|
1927
2174
|
end)
|
|
1928
2175
|
end
|
|
@@ -1960,27 +2207,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
1960
2207
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
2208
|
InitializingEvent,
|
|
1962
2209
|
function(event)
|
|
1963
|
-
local invoke = Event.invoke
|
|
1964
2210
|
local function listener(unit, id)
|
|
1965
|
-
local
|
|
2211
|
+
local ____GetSpellTargetUnit_result_11
|
|
1966
2212
|
if GetSpellTargetUnit() then
|
|
1967
|
-
|
|
2213
|
+
____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
2214
|
else
|
|
1969
|
-
local
|
|
2215
|
+
local ____GetSpellTargetItem_result_10
|
|
1970
2216
|
if GetSpellTargetItem() then
|
|
1971
|
-
|
|
2217
|
+
____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
|
|
1972
2218
|
else
|
|
1973
|
-
local
|
|
2219
|
+
local ____GetSpellTargetDestructable_result_9
|
|
1974
2220
|
if GetSpellTargetDestructable() then
|
|
1975
|
-
|
|
2221
|
+
____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
2222
|
else
|
|
1977
|
-
|
|
2223
|
+
____GetSpellTargetDestructable_result_9 = nil
|
|
1978
2224
|
end
|
|
1979
|
-
|
|
2225
|
+
____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
|
|
1980
2226
|
end
|
|
1981
|
-
|
|
2227
|
+
____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
|
|
1982
2228
|
end
|
|
1983
|
-
local target =
|
|
2229
|
+
local target = ____GetSpellTargetUnit_result_11
|
|
1984
2230
|
if target then
|
|
1985
2231
|
invoke(event, unit, id, target)
|
|
1986
2232
|
end
|
|
@@ -2152,10 +2398,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2152
2398
|
____exports.UnitTriggerEvent,
|
|
2153
2399
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2154
2400
|
function()
|
|
2155
|
-
local
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2401
|
+
local handle = getOrderedUnit()
|
|
2402
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2403
|
+
local unit = ____exports.Unit:of(handle)
|
|
2404
|
+
if unit.state == 1 then
|
|
2405
|
+
return unit, getIssuedOrderId()
|
|
2406
|
+
end
|
|
2159
2407
|
end
|
|
2160
2408
|
return IgnoreEvent
|
|
2161
2409
|
end
|
|
@@ -2177,7 +2425,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2177
2425
|
)
|
|
2178
2426
|
Unit.onDamaging = (function()
|
|
2179
2427
|
local event = __TS__New(Event)
|
|
2180
|
-
local invoke = Event.invoke
|
|
2181
2428
|
local trigger = CreateTrigger()
|
|
2182
2429
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
2430
|
TriggerAddCondition(
|
|
@@ -2187,38 +2434,57 @@ Unit.onDamaging = (function()
|
|
|
2187
2434
|
if source and source.typeId == dummyUnitId then
|
|
2188
2435
|
source = nil
|
|
2189
2436
|
end
|
|
2190
|
-
local target = BlzGetEventDamageTarget()
|
|
2437
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2438
|
+
local metadata = damageMetadataByTarget[target]
|
|
2439
|
+
damageMetadataByTarget[target] = nil
|
|
2191
2440
|
local data = {
|
|
2192
2441
|
amount = GetEventDamage(),
|
|
2193
|
-
attackType = BlzGetEventAttackType(),
|
|
2442
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2194
2443
|
damageType = BlzGetEventDamageType(),
|
|
2195
2444
|
weaponType = BlzGetEventWeaponType(),
|
|
2196
|
-
|
|
2445
|
+
metadata = metadata,
|
|
2446
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2447
|
+
originalAmount = GetEventDamage(),
|
|
2448
|
+
originalMetadata = metadata,
|
|
2449
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2197
2450
|
}
|
|
2198
2451
|
if data.isAttack and source then
|
|
2199
|
-
|
|
2200
|
-
if weapon == -1 then
|
|
2201
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2202
|
-
weapon = 0
|
|
2203
|
-
end
|
|
2204
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2452
|
+
data.weapon = source:chooseWeapon(target)
|
|
2205
2453
|
end
|
|
2206
2454
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2207
2455
|
invoke(
|
|
2208
2456
|
event,
|
|
2209
2457
|
source,
|
|
2210
|
-
|
|
2458
|
+
target,
|
|
2211
2459
|
setmetatable(
|
|
2212
2460
|
{},
|
|
2213
2461
|
{
|
|
2214
2462
|
__index = data,
|
|
2215
2463
|
__newindex = function(self, key, value)
|
|
2216
|
-
damageSetters[key]
|
|
2464
|
+
local damageSetter = damageSetters[key]
|
|
2465
|
+
if damageSetter ~= nil then
|
|
2466
|
+
damageSetter(value)
|
|
2467
|
+
end
|
|
2217
2468
|
data[key] = value
|
|
2218
2469
|
end
|
|
2219
2470
|
}
|
|
2220
2471
|
)
|
|
2221
2472
|
)
|
|
2473
|
+
if data[0] and source then
|
|
2474
|
+
local sourceOwner = source.owner.handle
|
|
2475
|
+
data[1] = sourceOwner
|
|
2476
|
+
local targetOwner = target.owner.handle
|
|
2477
|
+
data[2] = targetOwner
|
|
2478
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2479
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2480
|
+
data[3] = true
|
|
2481
|
+
end
|
|
2482
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2483
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2484
|
+
data[4] = true
|
|
2485
|
+
end
|
|
2486
|
+
end
|
|
2487
|
+
damagingEventByTarget[target] = data
|
|
2222
2488
|
return
|
|
2223
2489
|
end
|
|
2224
2490
|
BlzSetEventDamage(0)
|
|
@@ -2226,7 +2492,7 @@ Unit.onDamaging = (function()
|
|
|
2226
2492
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2227
2493
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2228
2494
|
local sourceOwner = source.owner.handle
|
|
2229
|
-
local targetOwner =
|
|
2495
|
+
local targetOwner = target.owner.handle
|
|
2230
2496
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2231
2497
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2232
2498
|
Timer:run(function()
|
|
@@ -2242,23 +2508,19 @@ Unit.onDamaging = (function()
|
|
|
2242
2508
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2243
2509
|
local condition = ____value[1]
|
|
2244
2510
|
local action = ____value[2]
|
|
2245
|
-
if condition(
|
|
2246
|
-
source,
|
|
2247
|
-
____exports.Unit:of(target),
|
|
2248
|
-
data
|
|
2249
|
-
) then
|
|
2511
|
+
if condition(source, target, data) then
|
|
2250
2512
|
action(
|
|
2251
2513
|
source,
|
|
2252
|
-
|
|
2514
|
+
target,
|
|
2253
2515
|
setmetatable(
|
|
2254
2516
|
{fire = function()
|
|
2255
2517
|
UnitDamageTarget(
|
|
2256
2518
|
source.handle,
|
|
2257
|
-
target,
|
|
2519
|
+
target.handle,
|
|
2258
2520
|
data.amount,
|
|
2259
2521
|
true,
|
|
2260
2522
|
true,
|
|
2261
|
-
data.attackType,
|
|
2523
|
+
attackTypeToNative(data.attackType),
|
|
2262
2524
|
data.damageType,
|
|
2263
2525
|
data.weaponType
|
|
2264
2526
|
)
|
|
@@ -2276,7 +2538,6 @@ end)()
|
|
|
2276
2538
|
Unit.onDamage = __TS__New(
|
|
2277
2539
|
InitializingEvent,
|
|
2278
2540
|
function(event)
|
|
2279
|
-
local invoke = Event.invoke
|
|
2280
2541
|
local trigger = CreateTrigger()
|
|
2281
2542
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
2543
|
TriggerAddCondition(
|
|
@@ -2286,29 +2547,54 @@ Unit.onDamage = __TS__New(
|
|
|
2286
2547
|
if source and source.typeId == dummyUnitId then
|
|
2287
2548
|
source = nil
|
|
2288
2549
|
end
|
|
2550
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2551
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2552
|
+
damagingEventByTarget[target] = nil
|
|
2289
2553
|
local data = {
|
|
2290
2554
|
amount = GetEventDamage(),
|
|
2291
|
-
attackType = BlzGetEventAttackType(),
|
|
2555
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2292
2556
|
damageType = BlzGetEventDamageType(),
|
|
2293
2557
|
weaponType = BlzGetEventWeaponType(),
|
|
2558
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2294
2559
|
isAttack = BlzGetEventIsAttack(),
|
|
2560
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2561
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2295
2562
|
preventDeath = damageEventPreventDeath
|
|
2296
2563
|
}
|
|
2564
|
+
if damagingEvent then
|
|
2565
|
+
for key, value in pairs(damagingEvent) do
|
|
2566
|
+
if isAttribute(key) then
|
|
2567
|
+
data[key] = value
|
|
2568
|
+
end
|
|
2569
|
+
end
|
|
2570
|
+
local sourceOwner = damagingEvent[1]
|
|
2571
|
+
if sourceOwner then
|
|
2572
|
+
local targetOwner = damagingEvent[2]
|
|
2573
|
+
if damagingEvent[3] then
|
|
2574
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2575
|
+
end
|
|
2576
|
+
if damagingEvent[4] then
|
|
2577
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2578
|
+
end
|
|
2579
|
+
end
|
|
2580
|
+
end
|
|
2297
2581
|
local evData = setmetatable(
|
|
2298
2582
|
{},
|
|
2299
2583
|
{
|
|
2300
2584
|
__index = data,
|
|
2301
2585
|
__newindex = function(self, key, value)
|
|
2302
|
-
damageSetters[key]
|
|
2586
|
+
local damageSetter = damageSetters[key]
|
|
2587
|
+
if damageSetter ~= nil then
|
|
2588
|
+
damageSetter(value)
|
|
2589
|
+
end
|
|
2303
2590
|
data[key] = value
|
|
2304
2591
|
end
|
|
2305
2592
|
}
|
|
2306
2593
|
)
|
|
2307
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2308
2594
|
invoke(event, source, target, evData)
|
|
2309
2595
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
2596
|
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
-
target[
|
|
2597
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2312
2598
|
BlzSetUnitMaxHP(
|
|
2313
2599
|
target.handle,
|
|
2314
2600
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2322,7 +2608,7 @@ Unit.onDamage = __TS__New(
|
|
|
2322
2608
|
evData[0],
|
|
2323
2609
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
2610
|
)
|
|
2325
|
-
target[
|
|
2611
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2326
2612
|
SetWidgetLife(
|
|
2327
2613
|
target.handle,
|
|
2328
2614
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2342,32 +2628,60 @@ Unit.onDamage = __TS__New(
|
|
|
2342
2628
|
DestroyTrigger(trigger)
|
|
2343
2629
|
end
|
|
2344
2630
|
)
|
|
2345
|
-
Unit.
|
|
2631
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2346
2632
|
____exports.UnitTriggerEvent,
|
|
2347
2633
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
2634
|
function()
|
|
2349
2635
|
local unit = getTriggerUnit()
|
|
2350
|
-
|
|
2351
|
-
|
|
2636
|
+
local item = getManipulatedItem()
|
|
2637
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
|
|
2638
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2352
2639
|
end
|
|
2353
2640
|
return IgnoreEvent
|
|
2354
2641
|
end
|
|
2355
2642
|
)
|
|
2356
|
-
Unit.
|
|
2643
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2357
2644
|
____exports.UnitTriggerEvent,
|
|
2358
2645
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
2646
|
function()
|
|
2360
|
-
local
|
|
2361
|
-
|
|
2362
|
-
|
|
2647
|
+
local unitHandle = getTriggerUnit()
|
|
2648
|
+
local itemHandle = getManipulatedItem()
|
|
2649
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
|
|
2650
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2651
|
+
local item = Item:of(itemHandle)
|
|
2652
|
+
if ownerByItem[item] ~= unit then
|
|
2653
|
+
return unit, item
|
|
2654
|
+
end
|
|
2363
2655
|
end
|
|
2364
2656
|
return IgnoreEvent
|
|
2365
2657
|
end
|
|
2366
2658
|
)
|
|
2367
|
-
Unit.
|
|
2659
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2368
2660
|
____exports.UnitTriggerEvent,
|
|
2369
2661
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
-
function()
|
|
2662
|
+
function()
|
|
2663
|
+
local unit = getTriggerUnit()
|
|
2664
|
+
local item = getManipulatedItem()
|
|
2665
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
|
|
2666
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2667
|
+
end
|
|
2668
|
+
return IgnoreEvent
|
|
2669
|
+
end
|
|
2670
|
+
)
|
|
2671
|
+
__TS__ObjectDefineProperty(
|
|
2672
|
+
Unit,
|
|
2673
|
+
"itemChargesChangedEvent",
|
|
2674
|
+
{get = function(self)
|
|
2675
|
+
local event = __TS__New(Event)
|
|
2676
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2677
|
+
local unit = item.owner
|
|
2678
|
+
if unit ~= nil then
|
|
2679
|
+
invoke(event, unit, item)
|
|
2680
|
+
end
|
|
2681
|
+
end)
|
|
2682
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2683
|
+
return event
|
|
2684
|
+
end}
|
|
2371
2685
|
)
|
|
2372
2686
|
__TS__ObjectDefineProperty(
|
|
2373
2687
|
Unit,
|
|
@@ -2394,6 +2708,10 @@ __TS__ObjectDefineProperty(
|
|
|
2394
2708
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2395
2709
|
return destroyEvent
|
|
2396
2710
|
end}
|
|
2711
|
+
)
|
|
2712
|
+
Unit.synchronize = synchronizer(
|
|
2713
|
+
function(unit) return unit.syncId end,
|
|
2714
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2397
2715
|
);
|
|
2398
2716
|
(function(self)
|
|
2399
2717
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2411,11 +2729,7 @@ __TS__ObjectDefineProperty(
|
|
|
2411
2729
|
function(____, id) return fourCC(id) end
|
|
2412
2730
|
)
|
|
2413
2731
|
end)
|
|
2414
|
-
for ____, leaveOrderId in ipairs({
|
|
2415
|
-
orderId("undefend"),
|
|
2416
|
-
orderId("magicundefense"),
|
|
2417
|
-
orderId("unimmolation")
|
|
2418
|
-
}) do
|
|
2732
|
+
for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
|
|
2419
2733
|
____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
|
|
2420
2734
|
local handle = unit.handle
|
|
2421
2735
|
for i = 1, #leaveAbilityIds do
|
|
@@ -2423,7 +2737,8 @@ __TS__ObjectDefineProperty(
|
|
|
2423
2737
|
return
|
|
2424
2738
|
end
|
|
2425
2739
|
end
|
|
2426
|
-
unit:
|
|
2740
|
+
unit:saveData()
|
|
2741
|
+
Timer:run(unit, "destroy")
|
|
2427
2742
|
end)
|
|
2428
2743
|
end
|
|
2429
2744
|
end)(Unit)
|