warscript 0.0.1-dev.2af030d → 0.0.1-dev.2b3f95e
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 +29 -3
- package/core/types/frame.lua +222 -52
- 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 +14 -13
- 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 +1719 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -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 +44 -11
- package/engine/behaviour/ability/damage.lua +89 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +20 -0
- package/engine/behaviour/ability/emulate-impact.lua +117 -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 +14 -3
- package/engine/behaviour/ability/instant-impact.lua +20 -16
- 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 +43 -7
- package/engine/behaviour/ability.lua +264 -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 +189 -59
- package/engine/buff.lua +852 -281
- 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/object-data/returned-melee-damage-factor.d.ts +2 -0
- package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +144 -17
- 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 +28 -8
- package/engine/internal/unit/bonus.lua +136 -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/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/shared-vision-counter.d.ts +18 -0
- package/engine/internal/unit/shared-vision-counter.lua +31 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +85 -5
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +12 -38
- package/engine/internal/unit+damage.lua +48 -45
- 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 +96 -68
- package/engine/internal/unit-missile-launch.lua +74 -13
- package/engine/internal/unit.d.ts +67 -35
- package/engine/internal/unit.lua +508 -308
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +52 -18
- 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/auxiliary/weapon-sound-type.d.ts +20 -14
- package/engine/object-data/auxiliary/weapon-sound-type.lua +58 -0
- package/engine/object-data/auxiliary/weapon-type.d.ts +25 -0
- package/engine/object-data/auxiliary/weapon-type.lua +2 -0
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/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/barrage.d.ts +12 -0
- package/engine/object-data/entry/ability-type/barrage.lua +52 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/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 +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +14 -3
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -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 +2 -3
- package/engine/object-data/entry/ability-type/channel.lua +3 -3
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/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/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/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 +50 -22
- package/engine/object-data/entry/ability-type.lua +392 -47
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +131 -139
- 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 +81 -7
- package/engine/object-data/entry/unit-type.lua +619 -99
- 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 +23 -0
- package/engine/standard/entries/unit-type.lua +23 -0
- package/engine/standard/fields/ability.d.ts +7 -5
- package/engine/standard/fields/ability.lua +7 -5
- 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 +48 -2
- package/engine/text-tag.lua +287 -10
- package/engine/unit.d.ts +14 -0
- package/engine/unit.lua +23 -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/patch-natives.lua +3 -0
- 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 +20 -6
- package/utility/arrays.lua +62 -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
|
@@ -8,6 +8,9 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
|
8
8
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
9
9
|
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
10
10
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
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,47 @@ 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 ____weapon_2Dsound_2Dtype = require("engine.object-data.auxiliary.weapon-sound-type")
|
|
55
|
+
local nativeToWeaponSoundType = ____weapon_2Dsound_2Dtype.nativeToWeaponSoundType
|
|
56
|
+
local weaponSoundTypeToNative = ____weapon_2Dsound_2Dtype.weaponSoundTypeToNative
|
|
57
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
58
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
59
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
60
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
61
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
62
|
+
local ____attributes = require("attributes")
|
|
63
|
+
local isAttribute = ____attributes.isAttribute
|
|
64
|
+
local ____ability = require("engine.internal.item.ability")
|
|
65
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
66
|
+
local ____synchronization = require("engine.synchronization")
|
|
67
|
+
local synchronizer = ____synchronization.synchronizer
|
|
68
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
69
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
51
70
|
local match = string.match
|
|
52
71
|
local ____tostring = _G.tostring
|
|
53
72
|
local setUnitAnimation = SetUnitAnimation
|
|
54
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
73
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
57
74
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
75
|
local getUnitRealField = BlzGetUnitRealField
|
|
59
76
|
local getHeroStr = GetHeroStr
|
|
60
77
|
local getHeroAgi = GetHeroAgi
|
|
61
78
|
local getHeroInt = GetHeroInt
|
|
62
|
-
local setHeroStr = SetHeroStr
|
|
63
|
-
local setHeroAgi = SetHeroAgi
|
|
64
|
-
local setHeroInt = SetHeroInt
|
|
65
79
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
66
80
|
local getUnitStringField = BlzGetUnitStringField
|
|
67
81
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
68
82
|
local setUnitRealField = BlzSetUnitRealField
|
|
69
83
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
70
84
|
local setUnitStringField = BlzSetUnitStringField
|
|
71
|
-
local setUnitScale = SetUnitScale
|
|
72
85
|
local setUnitPosition = SetUnitPosition
|
|
73
86
|
local setUnitTimeScale = SetUnitTimeScale
|
|
74
87
|
local getHandleId = GetHandleId
|
|
88
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
75
89
|
local createUnit = CreateUnit
|
|
76
90
|
local killUnit = KillUnit
|
|
77
|
-
local setUnitExploded = SetUnitExploded
|
|
78
91
|
local removeUnit = RemoveUnit
|
|
79
92
|
local getUnitTypeId = GetUnitTypeId
|
|
80
93
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -90,15 +103,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
90
103
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
104
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
105
|
local isUnitInRange = IsUnitInRange
|
|
93
|
-
local setResourceAmount = SetResourceAmount
|
|
94
|
-
local getResourceAmount = GetResourceAmount
|
|
95
106
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
96
107
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
97
108
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
98
109
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
99
110
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
100
111
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
101
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
102
112
|
local isUnitInvisible = IsUnitInvisible
|
|
103
113
|
local isUnitVisible = IsUnitVisible
|
|
104
114
|
local getUnitX = GetUnitX
|
|
@@ -115,15 +125,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
115
125
|
local getIssuedOrderId = GetIssuedOrderId
|
|
116
126
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
117
127
|
local unitAlive = UnitAlive
|
|
118
|
-
local unitAddType = UnitAddType
|
|
119
|
-
local unitRemoveType = UnitRemoveType
|
|
120
|
-
local isUnitIllusion = IsUnitIllusion
|
|
121
|
-
local isUnitType = IsUnitType
|
|
122
128
|
local isUnitAlly = IsUnitAlly
|
|
123
129
|
local isUnitEnemy = IsUnitEnemy
|
|
124
130
|
local getOwningPlayer = GetOwningPlayer
|
|
125
|
-
local setUnitColor = SetUnitColor
|
|
126
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
127
131
|
____exports.UnitClassification = {}
|
|
128
132
|
local UnitClassification = ____exports.UnitClassification
|
|
129
133
|
do
|
|
@@ -133,6 +137,7 @@ do
|
|
|
133
137
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
134
138
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
135
139
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
140
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
136
141
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
137
142
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
138
143
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -279,16 +284,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
279
284
|
end
|
|
280
285
|
local function dispatch(event, idGetter, argsGetter)
|
|
281
286
|
local initialized = false
|
|
282
|
-
local x = {}
|
|
283
287
|
return setmetatable(
|
|
284
|
-
|
|
288
|
+
{},
|
|
285
289
|
{
|
|
286
290
|
__index = function(self, id)
|
|
287
291
|
if type(id) ~= "number" then
|
|
288
292
|
return event[id]
|
|
289
293
|
end
|
|
290
294
|
if not initialized then
|
|
291
|
-
local invoke = Event.invoke
|
|
292
295
|
event:addListener(function(...)
|
|
293
296
|
local id = idGetter(...)
|
|
294
297
|
local dispatched = rawget(self, id)
|
|
@@ -326,7 +329,6 @@ local function dispatchAbility(event)
|
|
|
326
329
|
return event[id]
|
|
327
330
|
end
|
|
328
331
|
if not initialized then
|
|
329
|
-
local invoke = Event.invoke
|
|
330
332
|
event:addListener(function(unit, ability, ...)
|
|
331
333
|
local dispatched = rawget(self, ability.typeId)
|
|
332
334
|
if dispatched ~= nil then
|
|
@@ -343,6 +345,9 @@ local function dispatchAbility(event)
|
|
|
343
345
|
}
|
|
344
346
|
)
|
|
345
347
|
end
|
|
348
|
+
local function damagingEventPreventRetaliation(self)
|
|
349
|
+
self[0] = true
|
|
350
|
+
end
|
|
346
351
|
local function damageEventPreventDeath(self, callback, ...)
|
|
347
352
|
if self[0] ~= nil then
|
|
348
353
|
return
|
|
@@ -354,7 +359,16 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
354
359
|
rawset(self, 1 + i, (select(i, ...)))
|
|
355
360
|
end
|
|
356
361
|
end
|
|
357
|
-
local damageSetters = {
|
|
362
|
+
local damageSetters = {
|
|
363
|
+
amount = BlzSetEventDamage,
|
|
364
|
+
attackType = function(attackType)
|
|
365
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
366
|
+
end,
|
|
367
|
+
damageType = BlzSetEventDamageType,
|
|
368
|
+
weaponSoundType = function(weaponSoundType)
|
|
369
|
+
return BlzSetEventWeaponType(weaponSoundTypeToNative(weaponSoundType))
|
|
370
|
+
end
|
|
371
|
+
}
|
|
358
372
|
local jlimitopByOperator = {
|
|
359
373
|
[0] = LESS_THAN_OR_EQUAL,
|
|
360
374
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -372,15 +386,27 @@ local modifiers = {
|
|
|
372
386
|
end,
|
|
373
387
|
armor = function(unit, value)
|
|
374
388
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
375
|
-
assert(
|
|
389
|
+
assert(
|
|
390
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
391
|
+
"armor bonus ability must be made permanent",
|
|
392
|
+
unit
|
|
393
|
+
)
|
|
376
394
|
end
|
|
377
|
-
local ability = assert(
|
|
378
|
-
|
|
379
|
-
ability,
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
395
|
+
local ability = assert(
|
|
396
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
397
|
+
"armor bonus ability must be existing",
|
|
398
|
+
unit
|
|
399
|
+
)
|
|
400
|
+
assert(
|
|
401
|
+
BlzSetAbilityRealLevelField(
|
|
402
|
+
ability,
|
|
403
|
+
armorBonusField,
|
|
404
|
+
0,
|
|
405
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
406
|
+
),
|
|
407
|
+
"armor bonus ability field must be set",
|
|
408
|
+
unit
|
|
409
|
+
)
|
|
384
410
|
end
|
|
385
411
|
}
|
|
386
412
|
local getters = {
|
|
@@ -398,6 +424,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
398
424
|
self.unit = unit
|
|
399
425
|
self.index = index
|
|
400
426
|
end
|
|
427
|
+
__TS__SetDescriptor(
|
|
428
|
+
UnitWeapon.prototype,
|
|
429
|
+
"isEnabled",
|
|
430
|
+
{
|
|
431
|
+
get = function(self)
|
|
432
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
433
|
+
end,
|
|
434
|
+
set = function(self, isEnabled)
|
|
435
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
436
|
+
end
|
|
437
|
+
},
|
|
438
|
+
true
|
|
439
|
+
)
|
|
401
440
|
__TS__SetDescriptor(
|
|
402
441
|
UnitWeapon.prototype,
|
|
403
442
|
"cooldown",
|
|
@@ -432,6 +471,45 @@ __TS__SetDescriptor(
|
|
|
432
471
|
},
|
|
433
472
|
true
|
|
434
473
|
)
|
|
474
|
+
__TS__SetDescriptor(
|
|
475
|
+
UnitWeapon.prototype,
|
|
476
|
+
"allowedTargetCombatClassifications",
|
|
477
|
+
{
|
|
478
|
+
get = function(self)
|
|
479
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
480
|
+
end,
|
|
481
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
482
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
483
|
+
end
|
|
484
|
+
},
|
|
485
|
+
true
|
|
486
|
+
)
|
|
487
|
+
__TS__SetDescriptor(
|
|
488
|
+
UnitWeapon.prototype,
|
|
489
|
+
"type",
|
|
490
|
+
{
|
|
491
|
+
get = function(self)
|
|
492
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_WEAPON_TYPE, self.index)
|
|
493
|
+
end,
|
|
494
|
+
set = function(self, ____type)
|
|
495
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_WEAPON_TYPE, self.index, ____type)
|
|
496
|
+
end
|
|
497
|
+
},
|
|
498
|
+
true
|
|
499
|
+
)
|
|
500
|
+
__TS__SetDescriptor(
|
|
501
|
+
UnitWeapon.prototype,
|
|
502
|
+
"soundType",
|
|
503
|
+
{
|
|
504
|
+
get = function(self)
|
|
505
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_WEAPON_SOUND, self.index)
|
|
506
|
+
end,
|
|
507
|
+
set = function(self, soundType)
|
|
508
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_WEAPON_SOUND, self.index, soundType)
|
|
509
|
+
end
|
|
510
|
+
},
|
|
511
|
+
true
|
|
512
|
+
)
|
|
435
513
|
__TS__SetDescriptor(
|
|
436
514
|
UnitWeapon.prototype,
|
|
437
515
|
"damageBase",
|
|
@@ -543,8 +621,6 @@ __TS__SetDescriptor(
|
|
|
543
621
|
},
|
|
544
622
|
true
|
|
545
623
|
)
|
|
546
|
-
local unitInventorySize = UnitInventorySize
|
|
547
|
-
local unitItemInSlot = UnitItemInSlot
|
|
548
624
|
local getItemAbility = BlzGetItemAbility
|
|
549
625
|
local getUnitAbility = BlzGetUnitAbility
|
|
550
626
|
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
@@ -562,19 +638,8 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
562
638
|
____exports.Unit:of(unit)
|
|
563
639
|
)
|
|
564
640
|
end
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
return UnitAbility:of(
|
|
568
|
-
ability,
|
|
569
|
-
abilityId,
|
|
570
|
-
____exports.Unit:of(unit)
|
|
571
|
-
)
|
|
572
|
-
end
|
|
573
|
-
else
|
|
574
|
-
unitRemoveAbility(unit, abilityId)
|
|
575
|
-
end
|
|
576
|
-
for i = 0, unitInventorySize(unit) - 1 do
|
|
577
|
-
local item = unitItemInSlot(unit, i)
|
|
641
|
+
for i = 0, UnitInventorySize(unit) - 1 do
|
|
642
|
+
local item = UnitItemInSlot(unit, i)
|
|
578
643
|
if getItemAbility(item, abilityId) == ability then
|
|
579
644
|
return ItemAbility:of(
|
|
580
645
|
ability,
|
|
@@ -619,26 +684,30 @@ local fieldSetters = {
|
|
|
619
684
|
}
|
|
620
685
|
local dummies = {}
|
|
621
686
|
for ____, player in ipairs(Player.all) do
|
|
622
|
-
local dummy = assert(
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
687
|
+
local dummy = assert(
|
|
688
|
+
createUnit(
|
|
689
|
+
player.handle,
|
|
690
|
+
dummyUnitId,
|
|
691
|
+
0,
|
|
692
|
+
0,
|
|
693
|
+
270
|
|
694
|
+
),
|
|
695
|
+
"dummy must be created",
|
|
696
|
+
player
|
|
697
|
+
)
|
|
629
698
|
ShowUnit(dummy, false)
|
|
630
699
|
dummies[player] = dummy
|
|
631
700
|
end
|
|
632
701
|
local function delayHealthChecksCallback(unit)
|
|
633
|
-
local counter = (unit[
|
|
702
|
+
local counter = (unit[104] or 0) - 1
|
|
634
703
|
if counter ~= 0 then
|
|
635
|
-
unit[
|
|
704
|
+
unit[104] = counter
|
|
636
705
|
return
|
|
637
706
|
end
|
|
638
|
-
unit[
|
|
639
|
-
local healthBonus = unit[
|
|
707
|
+
unit[104] = nil
|
|
708
|
+
local healthBonus = unit[105]
|
|
640
709
|
if healthBonus ~= nil then
|
|
641
|
-
unit[
|
|
710
|
+
unit[105] = nil
|
|
642
711
|
local handle = unit.handle
|
|
643
712
|
BlzSetUnitMaxHP(
|
|
644
713
|
handle,
|
|
@@ -646,45 +715,79 @@ local function delayHealthChecksCallback(unit)
|
|
|
646
715
|
)
|
|
647
716
|
end
|
|
648
717
|
end
|
|
718
|
+
local nextSyncId = 1
|
|
719
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
720
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
721
|
+
local function addAbility(unit, abilityTypeId)
|
|
722
|
+
local ____unitAddAbility_result_0
|
|
723
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
724
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
725
|
+
else
|
|
726
|
+
____unitAddAbility_result_0 = nil
|
|
727
|
+
end
|
|
728
|
+
return ____unitAddAbility_result_0
|
|
729
|
+
end
|
|
649
730
|
____exports.Unit = __TS__Class()
|
|
650
731
|
local Unit = ____exports.Unit
|
|
651
732
|
Unit.name = "Unit"
|
|
652
733
|
__TS__ClassExtends(Unit, Handle)
|
|
653
734
|
function Unit.prototype.____constructor(self, handle)
|
|
654
735
|
Handle.prototype.____constructor(self, handle)
|
|
736
|
+
local ____nextSyncId_1 = nextSyncId
|
|
737
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
738
|
+
self.syncId = ____nextSyncId_1
|
|
655
739
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
656
|
-
assert(
|
|
657
|
-
|
|
740
|
+
assert(
|
|
741
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
742
|
+
"leave detection ability must be added",
|
|
743
|
+
self
|
|
744
|
+
)
|
|
745
|
+
assert(
|
|
746
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
747
|
+
"morph detection ability must be added",
|
|
748
|
+
self
|
|
749
|
+
)
|
|
658
750
|
if unitAddAbility(
|
|
659
751
|
handle,
|
|
660
752
|
fourCC("Amrf")
|
|
661
753
|
) then
|
|
662
|
-
assert(
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
754
|
+
assert(
|
|
755
|
+
unitRemoveAbility(
|
|
756
|
+
handle,
|
|
757
|
+
fourCC("Amrf")
|
|
758
|
+
),
|
|
759
|
+
"fly ability must be removed after addition",
|
|
760
|
+
self
|
|
761
|
+
)
|
|
666
762
|
end
|
|
763
|
+
unitBySyncId[self.syncId] = self
|
|
667
764
|
local ____ = self.abilities
|
|
668
765
|
end
|
|
669
|
-
function Unit.prototype.getEvent(self,
|
|
670
|
-
self.events = self.events or (
|
|
671
|
-
local eventId = GetHandleId(
|
|
672
|
-
|
|
673
|
-
|
|
766
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
767
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
768
|
+
local eventId = GetHandleId(jevent)
|
|
769
|
+
local event = self.events:get(eventId)
|
|
770
|
+
if event == nil then
|
|
771
|
+
event = __TS__New(
|
|
674
772
|
TriggerEvent,
|
|
675
773
|
function(trigger)
|
|
676
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
774
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
677
775
|
end,
|
|
678
776
|
collector or (function() return {} end)
|
|
679
777
|
)
|
|
778
|
+
self.events:put(eventId, event)
|
|
680
779
|
end
|
|
681
|
-
return
|
|
780
|
+
return event
|
|
781
|
+
end
|
|
782
|
+
function Unit.prototype.saveData(self)
|
|
783
|
+
local handle = self.handle
|
|
784
|
+
self[108] = self[108] or getUnitX(handle)
|
|
785
|
+
self[109] = self[109] or getUnitY(handle)
|
|
786
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
682
787
|
end
|
|
683
788
|
function Unit.prototype.onDestroy(self)
|
|
684
789
|
local handle = self.handle
|
|
685
|
-
|
|
686
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
687
|
-
end
|
|
790
|
+
self:saveData()
|
|
688
791
|
local abilities = self.abilities
|
|
689
792
|
for ____, ability in ipairs(abilities) do
|
|
690
793
|
ability:destroy()
|
|
@@ -702,7 +805,9 @@ function Unit.prototype.onDestroy(self)
|
|
|
702
805
|
end
|
|
703
806
|
local eventsToDestroy = self._eventsToDestroy
|
|
704
807
|
if eventsToDestroy ~= nil then
|
|
705
|
-
|
|
808
|
+
for ____, event in ipairs(eventsToDestroy) do
|
|
809
|
+
event:destroy()
|
|
810
|
+
end
|
|
706
811
|
end
|
|
707
812
|
if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
|
|
708
813
|
unitRemoveAbility(handle, leaveDetectAbilityId)
|
|
@@ -720,7 +825,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
720
825
|
self._attackHandlers = handlers
|
|
721
826
|
if #handlers == 1 then
|
|
722
827
|
local handle = self.handle
|
|
723
|
-
assert(
|
|
828
|
+
assert(
|
|
829
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
830
|
+
"attack handler ability must be added",
|
|
831
|
+
self
|
|
832
|
+
)
|
|
724
833
|
end
|
|
725
834
|
return handler
|
|
726
835
|
end
|
|
@@ -749,17 +858,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
749
858
|
end}
|
|
750
859
|
end
|
|
751
860
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
752
|
-
local
|
|
753
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
861
|
+
local ____combatClassification_2 = combatClassification
|
|
862
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
754
863
|
end
|
|
755
864
|
function Unit.prototype.addClassification(self, classification)
|
|
756
|
-
return
|
|
865
|
+
return UnitAddType(self.handle, classification)
|
|
757
866
|
end
|
|
758
867
|
function Unit.prototype.removeClassification(self, classification)
|
|
759
|
-
return
|
|
868
|
+
return UnitRemoveType(self.handle, classification)
|
|
760
869
|
end
|
|
761
870
|
function Unit.prototype.hasClassification(self, classification)
|
|
762
|
-
return
|
|
871
|
+
return IsUnitType(self.handle, classification)
|
|
763
872
|
end
|
|
764
873
|
function Unit.prototype.isVisibleTo(self, player)
|
|
765
874
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -768,13 +877,19 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
768
877
|
return isUnitInvisible(self.handle, player.handle)
|
|
769
878
|
end
|
|
770
879
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
771
|
-
local
|
|
880
|
+
local ____temp_4
|
|
772
881
|
if type(x) == "number" then
|
|
773
|
-
|
|
882
|
+
____temp_4 = isUnitInRangeXY(self.handle, x, y, range)
|
|
774
883
|
else
|
|
775
|
-
|
|
884
|
+
local ____temp_3
|
|
885
|
+
if __TS__InstanceOf(x, ____exports.Unit) then
|
|
886
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
887
|
+
else
|
|
888
|
+
____temp_3 = isUnitInRangeXY(self.handle, x.x, x.y, range)
|
|
889
|
+
end
|
|
890
|
+
____temp_4 = ____temp_3
|
|
776
891
|
end
|
|
777
|
-
return
|
|
892
|
+
return ____temp_4
|
|
778
893
|
end
|
|
779
894
|
function Unit.prototype.isAllyOf(self, unit)
|
|
780
895
|
return isUnitAlly(
|
|
@@ -792,16 +907,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
792
907
|
if type(animation) == "number" then
|
|
793
908
|
setUnitAnimationByIndex(self.handle, animation)
|
|
794
909
|
elseif rarity then
|
|
795
|
-
|
|
910
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
796
911
|
else
|
|
797
912
|
setUnitAnimation(self.handle, animation)
|
|
798
913
|
end
|
|
799
914
|
end
|
|
915
|
+
function Unit.prototype.resetAnimation(self)
|
|
916
|
+
ResetUnitAnimation(self.handle)
|
|
917
|
+
end
|
|
800
918
|
function Unit.prototype.queueAnimation(self, animation)
|
|
801
|
-
|
|
919
|
+
QueueUnitAnimation(self.handle, animation)
|
|
920
|
+
end
|
|
921
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
922
|
+
local firstWeapon = self.firstWeapon
|
|
923
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
924
|
+
return firstWeapon
|
|
925
|
+
end
|
|
926
|
+
local secondWeapon = self.secondWeapon
|
|
927
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(self, secondWeapon.allowedTargetCombatClassifications) then
|
|
928
|
+
return secondWeapon
|
|
929
|
+
end
|
|
930
|
+
return nil
|
|
802
931
|
end
|
|
803
932
|
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
-
self[
|
|
933
|
+
self[104] = (self[104] or 0) + 1
|
|
805
934
|
Timer:run(delayHealthChecksCallback, self)
|
|
806
935
|
end
|
|
807
936
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -811,14 +940,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
811
940
|
return IsUnitSelected(self.handle, player.handle)
|
|
812
941
|
end
|
|
813
942
|
function Unit.prototype.explode(self)
|
|
814
|
-
|
|
943
|
+
SetUnitExploded(self.handle, true)
|
|
815
944
|
killUnit(self.handle)
|
|
816
945
|
end
|
|
817
946
|
function Unit.prototype.kill(self)
|
|
818
947
|
killUnit(self.handle)
|
|
819
948
|
end
|
|
820
|
-
function Unit.prototype.revive(self,
|
|
821
|
-
|
|
949
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
950
|
+
local ____ReviveHero_7 = ReviveHero
|
|
951
|
+
local ____array_6 = __TS__SparseArrayNew(self.handle, x, y)
|
|
952
|
+
local ____doEffect_5 = doEffect
|
|
953
|
+
if ____doEffect_5 == nil then
|
|
954
|
+
____doEffect_5 = false
|
|
955
|
+
end
|
|
956
|
+
__TS__SparseArrayPush(____array_6, ____doEffect_5)
|
|
957
|
+
____ReviveHero_7(__TS__SparseArraySpread(____array_6))
|
|
822
958
|
end
|
|
823
959
|
function Unit.prototype.healTarget(self, target, amount)
|
|
824
960
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -861,17 +997,16 @@ function Unit.prototype.itemInSlot(self, slot)
|
|
|
861
997
|
return Item:of(UnitItemInSlot(self.handle, slot))
|
|
862
998
|
end
|
|
863
999
|
function Unit.prototype.addAbility(self, abilityId)
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
1000
|
+
local ability = UnitAbility:of(
|
|
1001
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
1002
|
+
abilityId,
|
|
1003
|
+
self
|
|
1004
|
+
)
|
|
1005
|
+
if ability ~= nil then
|
|
870
1006
|
local abilities = self.abilities
|
|
871
1007
|
abilities[#abilities + 1] = ability
|
|
872
|
-
return ability
|
|
873
1008
|
end
|
|
874
|
-
return
|
|
1009
|
+
return ability
|
|
875
1010
|
end
|
|
876
1011
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
877
1012
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -885,47 +1020,47 @@ end
|
|
|
885
1020
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
886
1021
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
887
1022
|
end
|
|
888
|
-
function Unit.prototype.
|
|
889
|
-
local
|
|
890
|
-
|
|
891
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
892
|
-
return nil
|
|
893
|
-
end
|
|
894
|
-
return UnitAbility:of(
|
|
895
|
-
getUnitAbility(self.handle, abilityId),
|
|
896
|
-
abilityId,
|
|
897
|
-
self
|
|
898
|
-
)
|
|
1023
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
1024
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
1025
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
899
1026
|
end
|
|
900
|
-
function Unit.prototype.removeAbility(self,
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
1027
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
1028
|
+
local abilities = self.abilities
|
|
1029
|
+
for i = 1, #abilities do
|
|
1030
|
+
if abilities[i].typeId == abilityTypeId then
|
|
1031
|
+
local ability = abilities[i]
|
|
1032
|
+
tremove(abilities, i)
|
|
1033
|
+
if ability.state == 2 then
|
|
1034
|
+
break
|
|
908
1035
|
end
|
|
1036
|
+
ability:destroy()
|
|
1037
|
+
return true
|
|
909
1038
|
end
|
|
910
|
-
return true
|
|
911
1039
|
end
|
|
912
|
-
return
|
|
1040
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
913
1041
|
end
|
|
914
1042
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
915
1043
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
916
1044
|
end
|
|
1045
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
1046
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
1047
|
+
end
|
|
917
1048
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
918
1049
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
919
1050
|
end
|
|
920
1051
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
921
1052
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
922
1053
|
end
|
|
923
|
-
function Unit.prototype.interruptAttack(self)
|
|
924
|
-
unitInterruptAttack(self.handle)
|
|
925
|
-
end
|
|
926
1054
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
927
|
-
|
|
928
|
-
unitDisableAbility(
|
|
1055
|
+
local handle = self.handle
|
|
1056
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1057
|
+
Timer:run(
|
|
1058
|
+
unitDisableAbility,
|
|
1059
|
+
handle,
|
|
1060
|
+
abilityId,
|
|
1061
|
+
false,
|
|
1062
|
+
false
|
|
1063
|
+
)
|
|
929
1064
|
end
|
|
930
1065
|
function Unit.prototype.getDistanceTo(self, target)
|
|
931
1066
|
local handle = self.handle
|
|
@@ -985,18 +1120,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
985
1120
|
self:decrementStunCounter()
|
|
986
1121
|
end
|
|
987
1122
|
function Unit.prototype.incrementStunCounter(self)
|
|
988
|
-
local stunCounter = self[
|
|
989
|
-
if not self[
|
|
1123
|
+
local stunCounter = self[102] or 0
|
|
1124
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
990
1125
|
BlzPauseUnitEx(self.handle, true)
|
|
991
1126
|
end
|
|
992
|
-
self[
|
|
1127
|
+
self[102] = stunCounter + 1
|
|
993
1128
|
end
|
|
994
1129
|
function Unit.prototype.decrementStunCounter(self)
|
|
995
|
-
local stunCounter = self[
|
|
996
|
-
if not self[
|
|
1130
|
+
local stunCounter = self[102] or 0
|
|
1131
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
997
1132
|
BlzPauseUnitEx(self.handle, false)
|
|
998
1133
|
end
|
|
999
|
-
self[
|
|
1134
|
+
self[102] = stunCounter - 1
|
|
1135
|
+
end
|
|
1136
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1137
|
+
local forceStunCounter = self[103] or 0
|
|
1138
|
+
if forceStunCounter == 0 then
|
|
1139
|
+
local handle = self.handle
|
|
1140
|
+
if not self[101] then
|
|
1141
|
+
for _ = self[102] or 0, -1 do
|
|
1142
|
+
BlzPauseUnitEx(handle, true)
|
|
1143
|
+
end
|
|
1144
|
+
end
|
|
1145
|
+
BlzPauseUnitEx(handle, true)
|
|
1146
|
+
end
|
|
1147
|
+
self[103] = forceStunCounter + 1
|
|
1148
|
+
end
|
|
1149
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1150
|
+
local forceStunCounter = self[103] or 0
|
|
1151
|
+
if forceStunCounter == 1 then
|
|
1152
|
+
local handle = self.handle
|
|
1153
|
+
if not self[101] then
|
|
1154
|
+
for _ = self[102] or 0, -1 do
|
|
1155
|
+
BlzPauseUnitEx(handle, false)
|
|
1156
|
+
end
|
|
1157
|
+
end
|
|
1158
|
+
BlzPauseUnitEx(handle, false)
|
|
1159
|
+
end
|
|
1160
|
+
self[103] = forceStunCounter - 1
|
|
1000
1161
|
end
|
|
1001
1162
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1002
1163
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1098,8 +1259,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1098
1259
|
)
|
|
1099
1260
|
return targetCollection
|
|
1100
1261
|
end
|
|
1101
|
-
function Unit.getSelectionOf(self, player)
|
|
1102
|
-
|
|
1262
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1263
|
+
if target == nil then
|
|
1264
|
+
target = {}
|
|
1265
|
+
end
|
|
1266
|
+
targetCollection = target
|
|
1103
1267
|
targetCollectionNextIndex = 1
|
|
1104
1268
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1105
1269
|
return targetCollection
|
|
@@ -1121,6 +1285,9 @@ end
|
|
|
1121
1285
|
function Unit.prototype.__tostring(self)
|
|
1122
1286
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1123
1287
|
end
|
|
1288
|
+
function Unit.getBySyncId(self, syncId)
|
|
1289
|
+
return unitBySyncId[syncId]
|
|
1290
|
+
end
|
|
1124
1291
|
__TS__SetDescriptor(
|
|
1125
1292
|
Unit.prototype,
|
|
1126
1293
|
"_deltas",
|
|
@@ -1180,7 +1347,15 @@ __TS__SetDescriptor(
|
|
|
1180
1347
|
Unit.prototype,
|
|
1181
1348
|
"isIllusion",
|
|
1182
1349
|
{get = function(self)
|
|
1183
|
-
return
|
|
1350
|
+
return IsUnitIllusion(self.handle)
|
|
1351
|
+
end},
|
|
1352
|
+
true
|
|
1353
|
+
)
|
|
1354
|
+
__TS__SetDescriptor(
|
|
1355
|
+
Unit.prototype,
|
|
1356
|
+
"isStunned",
|
|
1357
|
+
{get = function(self)
|
|
1358
|
+
return getUnitCurrentOrder(self.handle) == 851973
|
|
1184
1359
|
end},
|
|
1185
1360
|
true
|
|
1186
1361
|
)
|
|
@@ -1259,13 +1434,13 @@ __TS__SetDescriptor(
|
|
|
1259
1434
|
)
|
|
1260
1435
|
__TS__SetDescriptor(
|
|
1261
1436
|
Unit.prototype,
|
|
1262
|
-
"
|
|
1437
|
+
"primaryAttribute",
|
|
1263
1438
|
{
|
|
1264
1439
|
get = function(self)
|
|
1265
|
-
return
|
|
1440
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1266
1441
|
end,
|
|
1267
|
-
set = function(self,
|
|
1268
|
-
|
|
1442
|
+
set = function(self, primaryAttribute)
|
|
1443
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1269
1444
|
end
|
|
1270
1445
|
},
|
|
1271
1446
|
true
|
|
@@ -1287,19 +1462,6 @@ __TS__SetDescriptor(
|
|
|
1287
1462
|
end},
|
|
1288
1463
|
true
|
|
1289
1464
|
)
|
|
1290
|
-
__TS__SetDescriptor(
|
|
1291
|
-
Unit.prototype,
|
|
1292
|
-
"agilityBase",
|
|
1293
|
-
{
|
|
1294
|
-
get = function(self)
|
|
1295
|
-
return getHeroAgi(self.handle, false)
|
|
1296
|
-
end,
|
|
1297
|
-
set = function(self, agilityBase)
|
|
1298
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1299
|
-
end
|
|
1300
|
-
},
|
|
1301
|
-
true
|
|
1302
|
-
)
|
|
1303
1465
|
__TS__SetDescriptor(
|
|
1304
1466
|
Unit.prototype,
|
|
1305
1467
|
"agilityBonus",
|
|
@@ -1317,19 +1479,6 @@ __TS__SetDescriptor(
|
|
|
1317
1479
|
end},
|
|
1318
1480
|
true
|
|
1319
1481
|
)
|
|
1320
|
-
__TS__SetDescriptor(
|
|
1321
|
-
Unit.prototype,
|
|
1322
|
-
"intelligenceBase",
|
|
1323
|
-
{
|
|
1324
|
-
get = function(self)
|
|
1325
|
-
return getHeroInt(self.handle, false)
|
|
1326
|
-
end,
|
|
1327
|
-
set = function(self, intelligenceBase)
|
|
1328
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1329
|
-
end
|
|
1330
|
-
},
|
|
1331
|
-
true
|
|
1332
|
-
)
|
|
1333
1482
|
__TS__SetDescriptor(
|
|
1334
1483
|
Unit.prototype,
|
|
1335
1484
|
"intelligenceBonus",
|
|
@@ -1378,17 +1527,17 @@ __TS__SetDescriptor(
|
|
|
1378
1527
|
"isTeamGlowVisible",
|
|
1379
1528
|
{
|
|
1380
1529
|
get = function(self)
|
|
1381
|
-
return not self[
|
|
1530
|
+
return not self[107]
|
|
1382
1531
|
end,
|
|
1383
1532
|
set = function(self, isTeamGlowVisible)
|
|
1384
|
-
|
|
1385
|
-
local
|
|
1533
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1534
|
+
local ____temp_8
|
|
1386
1535
|
if not isTeamGlowVisible then
|
|
1387
|
-
|
|
1536
|
+
____temp_8 = true
|
|
1388
1537
|
else
|
|
1389
|
-
|
|
1538
|
+
____temp_8 = nil
|
|
1390
1539
|
end
|
|
1391
|
-
self[
|
|
1540
|
+
self[107] = ____temp_8
|
|
1392
1541
|
end
|
|
1393
1542
|
},
|
|
1394
1543
|
true
|
|
@@ -1397,9 +1546,9 @@ __TS__SetDescriptor(
|
|
|
1397
1546
|
Unit.prototype,
|
|
1398
1547
|
"color",
|
|
1399
1548
|
{set = function(self, color)
|
|
1400
|
-
|
|
1401
|
-
if self[
|
|
1402
|
-
|
|
1549
|
+
SetUnitColor(self.handle, color.handle)
|
|
1550
|
+
if self[107] then
|
|
1551
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1403
1552
|
end
|
|
1404
1553
|
end},
|
|
1405
1554
|
true
|
|
@@ -1422,14 +1571,14 @@ __TS__SetDescriptor(
|
|
|
1422
1571
|
"maxHealth",
|
|
1423
1572
|
{
|
|
1424
1573
|
get = function(self)
|
|
1425
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1574
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1426
1575
|
end,
|
|
1427
1576
|
set = function(self, maxHealth)
|
|
1428
|
-
if maxHealth < 1 and self[
|
|
1429
|
-
self[
|
|
1577
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1578
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1430
1579
|
maxHealth = 1
|
|
1431
1580
|
end
|
|
1432
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1581
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1433
1582
|
end
|
|
1434
1583
|
},
|
|
1435
1584
|
true
|
|
@@ -1471,10 +1620,10 @@ __TS__SetDescriptor(
|
|
|
1471
1620
|
"health",
|
|
1472
1621
|
{
|
|
1473
1622
|
get = function(self)
|
|
1474
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1623
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1475
1624
|
end,
|
|
1476
1625
|
set = function(self, health)
|
|
1477
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1626
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1478
1627
|
end
|
|
1479
1628
|
},
|
|
1480
1629
|
true
|
|
@@ -1550,25 +1699,12 @@ __TS__SetDescriptor(
|
|
|
1550
1699
|
},
|
|
1551
1700
|
true
|
|
1552
1701
|
)
|
|
1553
|
-
__TS__SetDescriptor(
|
|
1554
|
-
Unit.prototype,
|
|
1555
|
-
"flyHeight",
|
|
1556
|
-
{
|
|
1557
|
-
get = function(self)
|
|
1558
|
-
return getUnitFlyHeight(self.handle)
|
|
1559
|
-
end,
|
|
1560
|
-
set = function(self, v)
|
|
1561
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1562
|
-
end
|
|
1563
|
-
},
|
|
1564
|
-
true
|
|
1565
|
-
)
|
|
1566
1702
|
__TS__SetDescriptor(
|
|
1567
1703
|
Unit.prototype,
|
|
1568
1704
|
"x",
|
|
1569
1705
|
{
|
|
1570
1706
|
get = function(self)
|
|
1571
|
-
return getUnitX(self.handle)
|
|
1707
|
+
return self[108] or getUnitX(self.handle)
|
|
1572
1708
|
end,
|
|
1573
1709
|
set = function(self, v)
|
|
1574
1710
|
SetUnitX(self.handle, v)
|
|
@@ -1581,7 +1717,7 @@ __TS__SetDescriptor(
|
|
|
1581
1717
|
"y",
|
|
1582
1718
|
{
|
|
1583
1719
|
get = function(self)
|
|
1584
|
-
return getUnitY(self.handle)
|
|
1720
|
+
return self[109] or getUnitY(self.handle)
|
|
1585
1721
|
end,
|
|
1586
1722
|
set = function(self, v)
|
|
1587
1723
|
SetUnitY(self.handle, v)
|
|
@@ -1667,10 +1803,10 @@ __TS__SetDescriptor(
|
|
|
1667
1803
|
"gold",
|
|
1668
1804
|
{
|
|
1669
1805
|
get = function(self)
|
|
1670
|
-
return
|
|
1806
|
+
return GetResourceAmount(self.handle)
|
|
1671
1807
|
end,
|
|
1672
1808
|
set = function(self, gold)
|
|
1673
|
-
|
|
1809
|
+
SetResourceAmount(self.handle, gold)
|
|
1674
1810
|
end
|
|
1675
1811
|
},
|
|
1676
1812
|
true
|
|
@@ -1685,17 +1821,21 @@ __TS__SetDescriptor(
|
|
|
1685
1821
|
set = function(self, isPaused)
|
|
1686
1822
|
local handle = self.handle
|
|
1687
1823
|
if isPaused and not IsUnitPaused(handle) then
|
|
1688
|
-
self[
|
|
1689
|
-
|
|
1690
|
-
|
|
1824
|
+
self[101] = true
|
|
1825
|
+
if (self[103] or 0) <= 0 then
|
|
1826
|
+
for _ = self[102] or 0, -1 do
|
|
1827
|
+
BlzPauseUnitEx(handle, true)
|
|
1828
|
+
end
|
|
1691
1829
|
end
|
|
1692
1830
|
PauseUnit(handle, true)
|
|
1693
1831
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1694
1832
|
PauseUnit(handle, false)
|
|
1695
|
-
|
|
1696
|
-
|
|
1833
|
+
if (self[103] or 0) <= 0 then
|
|
1834
|
+
for _ = self[102] or 0, -1 do
|
|
1835
|
+
BlzPauseUnitEx(handle, false)
|
|
1836
|
+
end
|
|
1697
1837
|
end
|
|
1698
|
-
self[
|
|
1838
|
+
self[101] = nil
|
|
1699
1839
|
end
|
|
1700
1840
|
end
|
|
1701
1841
|
},
|
|
@@ -1751,20 +1891,6 @@ __TS__SetDescriptor(
|
|
|
1751
1891
|
},
|
|
1752
1892
|
true
|
|
1753
1893
|
)
|
|
1754
|
-
__TS__SetDescriptor(
|
|
1755
|
-
Unit.prototype,
|
|
1756
|
-
"scale",
|
|
1757
|
-
{
|
|
1758
|
-
get = function(self)
|
|
1759
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1760
|
-
end,
|
|
1761
|
-
set = function(self, v)
|
|
1762
|
-
setUnitScale(self.handle, v, v, v)
|
|
1763
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1764
|
-
end
|
|
1765
|
-
},
|
|
1766
|
-
true
|
|
1767
|
-
)
|
|
1768
1894
|
__TS__SetDescriptor(
|
|
1769
1895
|
Unit.prototype,
|
|
1770
1896
|
"timeScale",
|
|
@@ -1791,13 +1917,26 @@ __TS__SetDescriptor(
|
|
|
1791
1917
|
Unit.prototype,
|
|
1792
1918
|
"pathingCollisionRange",
|
|
1793
1919
|
{get = function(self)
|
|
1794
|
-
return 16 * (min(
|
|
1920
|
+
return 16 * (math.min(
|
|
1795
1921
|
getUnitCollisionSize(self.handle) // 16,
|
|
1796
1922
|
3
|
|
1797
1923
|
) + 1)
|
|
1798
1924
|
end},
|
|
1799
1925
|
true
|
|
1800
1926
|
)
|
|
1927
|
+
__TS__SetDescriptor(
|
|
1928
|
+
Unit.prototype,
|
|
1929
|
+
"movementType",
|
|
1930
|
+
{
|
|
1931
|
+
get = function(self)
|
|
1932
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1933
|
+
end,
|
|
1934
|
+
set = function(self, movementType)
|
|
1935
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1936
|
+
end
|
|
1937
|
+
},
|
|
1938
|
+
true
|
|
1939
|
+
)
|
|
1801
1940
|
__TS__SetDescriptor(
|
|
1802
1941
|
Unit.prototype,
|
|
1803
1942
|
"pathing",
|
|
@@ -1888,30 +2027,6 @@ __TS__SetDescriptor(
|
|
|
1888
2027
|
end},
|
|
1889
2028
|
true
|
|
1890
2029
|
)
|
|
1891
|
-
__TS__SetDescriptor(
|
|
1892
|
-
Unit.prototype,
|
|
1893
|
-
"onUnitInRange",
|
|
1894
|
-
{get = function(self)
|
|
1895
|
-
local handle = self.handle
|
|
1896
|
-
local onUnitInRange = setmetatable(
|
|
1897
|
-
{},
|
|
1898
|
-
{__index = function(self, value)
|
|
1899
|
-
local event = __TS__New(
|
|
1900
|
-
TriggerEvent,
|
|
1901
|
-
function(trigger)
|
|
1902
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1903
|
-
end,
|
|
1904
|
-
function() return ____exports.Unit:of(handle) end
|
|
1905
|
-
)
|
|
1906
|
-
rawset(self, value, event)
|
|
1907
|
-
return event
|
|
1908
|
-
end}
|
|
1909
|
-
)
|
|
1910
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1911
|
-
return onUnitInRange
|
|
1912
|
-
end},
|
|
1913
|
-
true
|
|
1914
|
-
)
|
|
1915
2030
|
__TS__SetDescriptor(
|
|
1916
2031
|
Unit.prototype,
|
|
1917
2032
|
"onManaEqual",
|
|
@@ -1979,6 +2094,14 @@ __TS__SetDescriptor(
|
|
|
1979
2094
|
end},
|
|
1980
2095
|
true
|
|
1981
2096
|
)
|
|
2097
|
+
__TS__SetDescriptor(
|
|
2098
|
+
Unit.prototype,
|
|
2099
|
+
"targetAcquiredEvent",
|
|
2100
|
+
{get = function(self)
|
|
2101
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2102
|
+
end},
|
|
2103
|
+
true
|
|
2104
|
+
)
|
|
1982
2105
|
__TS__SetDescriptor(
|
|
1983
2106
|
Unit.prototype,
|
|
1984
2107
|
"onSelect",
|
|
@@ -2039,6 +2162,11 @@ __TS__SetDescriptor(
|
|
|
2039
2162
|
end},
|
|
2040
2163
|
true
|
|
2041
2164
|
)
|
|
2165
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2166
|
+
____exports.UnitTriggerEvent,
|
|
2167
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2168
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2169
|
+
)
|
|
2042
2170
|
Unit.deathEvent = __TS__New(
|
|
2043
2171
|
____exports.UnitTriggerEvent,
|
|
2044
2172
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2052,12 +2180,11 @@ Unit.onDecay = __TS__New(
|
|
|
2052
2180
|
Unit.onResurrect = __TS__New(
|
|
2053
2181
|
InitializingEvent,
|
|
2054
2182
|
function(event)
|
|
2055
|
-
local invoke = Event.invoke
|
|
2056
2183
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2057
2184
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2058
2185
|
dead[unit] = true
|
|
2059
2186
|
end)
|
|
2060
|
-
____exports.Unit.onImmediateOrder[
|
|
2187
|
+
____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
|
|
2061
2188
|
if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
|
|
2062
2189
|
dead[unit] = false
|
|
2063
2190
|
invoke(event, unit)
|
|
@@ -2068,10 +2195,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2068
2195
|
Unit.morphEvent = __TS__New(
|
|
2069
2196
|
InitializingEvent,
|
|
2070
2197
|
function(event)
|
|
2071
|
-
|
|
2198
|
+
local function ifNotLeft(unit)
|
|
2199
|
+
local handle = unit.handle
|
|
2200
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2201
|
+
invoke(event, unit)
|
|
2202
|
+
end
|
|
2203
|
+
end
|
|
2204
|
+
____exports.Unit.onImmediateOrder[852056]:addListener(function(unit)
|
|
2072
2205
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2073
|
-
|
|
2074
|
-
Timer:run(Event.invoke, event, unit)
|
|
2206
|
+
Timer:run(ifNotLeft, unit)
|
|
2075
2207
|
end
|
|
2076
2208
|
end)
|
|
2077
2209
|
end
|
|
@@ -2109,27 +2241,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2109
2241
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2110
2242
|
InitializingEvent,
|
|
2111
2243
|
function(event)
|
|
2112
|
-
local invoke = Event.invoke
|
|
2113
2244
|
local function listener(unit, id)
|
|
2114
|
-
local
|
|
2245
|
+
local ____GetSpellTargetUnit_result_11
|
|
2115
2246
|
if GetSpellTargetUnit() then
|
|
2116
|
-
|
|
2247
|
+
____GetSpellTargetUnit_result_11 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2117
2248
|
else
|
|
2118
|
-
local
|
|
2249
|
+
local ____GetSpellTargetItem_result_10
|
|
2119
2250
|
if GetSpellTargetItem() then
|
|
2120
|
-
|
|
2251
|
+
____GetSpellTargetItem_result_10 = Item:of(GetSpellTargetItem())
|
|
2121
2252
|
else
|
|
2122
|
-
local
|
|
2253
|
+
local ____GetSpellTargetDestructable_result_9
|
|
2123
2254
|
if GetSpellTargetDestructable() then
|
|
2124
|
-
|
|
2255
|
+
____GetSpellTargetDestructable_result_9 = Destructable:of(GetSpellTargetDestructable())
|
|
2125
2256
|
else
|
|
2126
|
-
|
|
2257
|
+
____GetSpellTargetDestructable_result_9 = nil
|
|
2127
2258
|
end
|
|
2128
|
-
|
|
2259
|
+
____GetSpellTargetItem_result_10 = ____GetSpellTargetDestructable_result_9
|
|
2129
2260
|
end
|
|
2130
|
-
|
|
2261
|
+
____GetSpellTargetUnit_result_11 = ____GetSpellTargetItem_result_10
|
|
2131
2262
|
end
|
|
2132
|
-
local target =
|
|
2263
|
+
local target = ____GetSpellTargetUnit_result_11
|
|
2133
2264
|
if target then
|
|
2134
2265
|
invoke(event, unit, id, target)
|
|
2135
2266
|
end
|
|
@@ -2301,10 +2432,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2301
2432
|
____exports.UnitTriggerEvent,
|
|
2302
2433
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2303
2434
|
function()
|
|
2304
|
-
local
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2435
|
+
local handle = getOrderedUnit()
|
|
2436
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2437
|
+
local unit = ____exports.Unit:of(handle)
|
|
2438
|
+
if unit.state == 1 then
|
|
2439
|
+
return unit, getIssuedOrderId()
|
|
2440
|
+
end
|
|
2308
2441
|
end
|
|
2309
2442
|
return IgnoreEvent
|
|
2310
2443
|
end
|
|
@@ -2326,7 +2459,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2326
2459
|
)
|
|
2327
2460
|
Unit.onDamaging = (function()
|
|
2328
2461
|
local event = __TS__New(Event)
|
|
2329
|
-
local invoke = Event.invoke
|
|
2330
2462
|
local trigger = CreateTrigger()
|
|
2331
2463
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2332
2464
|
TriggerAddCondition(
|
|
@@ -2336,38 +2468,57 @@ Unit.onDamaging = (function()
|
|
|
2336
2468
|
if source and source.typeId == dummyUnitId then
|
|
2337
2469
|
source = nil
|
|
2338
2470
|
end
|
|
2339
|
-
local target = BlzGetEventDamageTarget()
|
|
2471
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2472
|
+
local metadata = damageMetadataByTarget[target]
|
|
2473
|
+
damageMetadataByTarget[target] = nil
|
|
2340
2474
|
local data = {
|
|
2341
2475
|
amount = GetEventDamage(),
|
|
2342
|
-
attackType = BlzGetEventAttackType(),
|
|
2476
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2343
2477
|
damageType = BlzGetEventDamageType(),
|
|
2344
|
-
|
|
2345
|
-
|
|
2478
|
+
weaponSoundType = nativeToWeaponSoundType(BlzGetEventWeaponType()),
|
|
2479
|
+
metadata = metadata,
|
|
2480
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2481
|
+
originalAmount = GetEventDamage(),
|
|
2482
|
+
originalMetadata = metadata,
|
|
2483
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2346
2484
|
}
|
|
2347
2485
|
if data.isAttack and source then
|
|
2348
|
-
|
|
2349
|
-
if weapon == -1 then
|
|
2350
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2351
|
-
weapon = 0
|
|
2352
|
-
end
|
|
2353
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2486
|
+
data.weapon = source:chooseWeapon(target)
|
|
2354
2487
|
end
|
|
2355
2488
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2356
2489
|
invoke(
|
|
2357
2490
|
event,
|
|
2358
2491
|
source,
|
|
2359
|
-
|
|
2492
|
+
target,
|
|
2360
2493
|
setmetatable(
|
|
2361
2494
|
{},
|
|
2362
2495
|
{
|
|
2363
2496
|
__index = data,
|
|
2364
2497
|
__newindex = function(self, key, value)
|
|
2365
|
-
damageSetters[key]
|
|
2498
|
+
local damageSetter = damageSetters[key]
|
|
2499
|
+
if damageSetter ~= nil then
|
|
2500
|
+
damageSetter(value)
|
|
2501
|
+
end
|
|
2366
2502
|
data[key] = value
|
|
2367
2503
|
end
|
|
2368
2504
|
}
|
|
2369
2505
|
)
|
|
2370
2506
|
)
|
|
2507
|
+
if data[0] and source then
|
|
2508
|
+
local sourceOwner = source.owner.handle
|
|
2509
|
+
data[1] = sourceOwner
|
|
2510
|
+
local targetOwner = target.owner.handle
|
|
2511
|
+
data[2] = targetOwner
|
|
2512
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2513
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2514
|
+
data[3] = true
|
|
2515
|
+
end
|
|
2516
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2517
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2518
|
+
data[4] = true
|
|
2519
|
+
end
|
|
2520
|
+
end
|
|
2521
|
+
damagingEventByTarget[target] = data
|
|
2371
2522
|
return
|
|
2372
2523
|
end
|
|
2373
2524
|
BlzSetEventDamage(0)
|
|
@@ -2375,7 +2526,7 @@ Unit.onDamaging = (function()
|
|
|
2375
2526
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2376
2527
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2377
2528
|
local sourceOwner = source.owner.handle
|
|
2378
|
-
local targetOwner =
|
|
2529
|
+
local targetOwner = target.owner.handle
|
|
2379
2530
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2380
2531
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2381
2532
|
Timer:run(function()
|
|
@@ -2391,25 +2542,21 @@ Unit.onDamaging = (function()
|
|
|
2391
2542
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2392
2543
|
local condition = ____value[1]
|
|
2393
2544
|
local action = ____value[2]
|
|
2394
|
-
if condition(
|
|
2395
|
-
source,
|
|
2396
|
-
____exports.Unit:of(target),
|
|
2397
|
-
data
|
|
2398
|
-
) then
|
|
2545
|
+
if condition(source, target, data) then
|
|
2399
2546
|
action(
|
|
2400
2547
|
source,
|
|
2401
|
-
|
|
2548
|
+
target,
|
|
2402
2549
|
setmetatable(
|
|
2403
2550
|
{fire = function()
|
|
2404
2551
|
UnitDamageTarget(
|
|
2405
2552
|
source.handle,
|
|
2406
|
-
target,
|
|
2553
|
+
target.handle,
|
|
2407
2554
|
data.amount,
|
|
2408
2555
|
true,
|
|
2409
2556
|
true,
|
|
2410
|
-
data.attackType,
|
|
2557
|
+
attackTypeToNative(data.attackType),
|
|
2411
2558
|
data.damageType,
|
|
2412
|
-
data.
|
|
2559
|
+
weaponSoundTypeToNative(data.weaponSoundType)
|
|
2413
2560
|
)
|
|
2414
2561
|
end},
|
|
2415
2562
|
{__index = data, __newindex = data}
|
|
@@ -2425,7 +2572,6 @@ end)()
|
|
|
2425
2572
|
Unit.onDamage = __TS__New(
|
|
2426
2573
|
InitializingEvent,
|
|
2427
2574
|
function(event)
|
|
2428
|
-
local invoke = Event.invoke
|
|
2429
2575
|
local trigger = CreateTrigger()
|
|
2430
2576
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2431
2577
|
TriggerAddCondition(
|
|
@@ -2435,29 +2581,54 @@ Unit.onDamage = __TS__New(
|
|
|
2435
2581
|
if source and source.typeId == dummyUnitId then
|
|
2436
2582
|
source = nil
|
|
2437
2583
|
end
|
|
2584
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2585
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2586
|
+
damagingEventByTarget[target] = nil
|
|
2438
2587
|
local data = {
|
|
2439
2588
|
amount = GetEventDamage(),
|
|
2440
|
-
attackType = BlzGetEventAttackType(),
|
|
2589
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2441
2590
|
damageType = BlzGetEventDamageType(),
|
|
2442
|
-
|
|
2591
|
+
weaponSoundType = nativeToWeaponSoundType(BlzGetEventWeaponType()),
|
|
2592
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2443
2593
|
isAttack = BlzGetEventIsAttack(),
|
|
2594
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2595
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2444
2596
|
preventDeath = damageEventPreventDeath
|
|
2445
2597
|
}
|
|
2598
|
+
if damagingEvent then
|
|
2599
|
+
for key, value in pairs(damagingEvent) do
|
|
2600
|
+
if isAttribute(key) then
|
|
2601
|
+
data[key] = value
|
|
2602
|
+
end
|
|
2603
|
+
end
|
|
2604
|
+
local sourceOwner = damagingEvent[1]
|
|
2605
|
+
if sourceOwner then
|
|
2606
|
+
local targetOwner = damagingEvent[2]
|
|
2607
|
+
if damagingEvent[3] then
|
|
2608
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2609
|
+
end
|
|
2610
|
+
if damagingEvent[4] then
|
|
2611
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2612
|
+
end
|
|
2613
|
+
end
|
|
2614
|
+
end
|
|
2446
2615
|
local evData = setmetatable(
|
|
2447
2616
|
{},
|
|
2448
2617
|
{
|
|
2449
2618
|
__index = data,
|
|
2450
2619
|
__newindex = function(self, key, value)
|
|
2451
|
-
damageSetters[key]
|
|
2620
|
+
local damageSetter = damageSetters[key]
|
|
2621
|
+
if damageSetter ~= nil then
|
|
2622
|
+
damageSetter(value)
|
|
2623
|
+
end
|
|
2452
2624
|
data[key] = value
|
|
2453
2625
|
end
|
|
2454
2626
|
}
|
|
2455
2627
|
)
|
|
2456
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2457
2628
|
invoke(event, source, target, evData)
|
|
2458
2629
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2459
2630
|
local bonusHealth = math.ceil(evData.amount)
|
|
2460
|
-
target[
|
|
2631
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2461
2632
|
BlzSetUnitMaxHP(
|
|
2462
2633
|
target.handle,
|
|
2463
2634
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2471,7 +2642,7 @@ Unit.onDamage = __TS__New(
|
|
|
2471
2642
|
evData[0],
|
|
2472
2643
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2473
2644
|
)
|
|
2474
|
-
target[
|
|
2645
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2475
2646
|
SetWidgetLife(
|
|
2476
2647
|
target.handle,
|
|
2477
2648
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2491,32 +2662,60 @@ Unit.onDamage = __TS__New(
|
|
|
2491
2662
|
DestroyTrigger(trigger)
|
|
2492
2663
|
end
|
|
2493
2664
|
)
|
|
2494
|
-
Unit.
|
|
2665
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2495
2666
|
____exports.UnitTriggerEvent,
|
|
2496
2667
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2497
2668
|
function()
|
|
2498
2669
|
local unit = getTriggerUnit()
|
|
2499
|
-
|
|
2500
|
-
|
|
2670
|
+
local item = getManipulatedItem()
|
|
2671
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
|
|
2672
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2501
2673
|
end
|
|
2502
2674
|
return IgnoreEvent
|
|
2503
2675
|
end
|
|
2504
2676
|
)
|
|
2505
|
-
Unit.
|
|
2677
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2506
2678
|
____exports.UnitTriggerEvent,
|
|
2507
2679
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2508
2680
|
function()
|
|
2509
|
-
local
|
|
2510
|
-
|
|
2511
|
-
|
|
2681
|
+
local unitHandle = getTriggerUnit()
|
|
2682
|
+
local itemHandle = getManipulatedItem()
|
|
2683
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not isItemIgnoredInEvents(itemHandle) then
|
|
2684
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2685
|
+
local item = Item:of(itemHandle)
|
|
2686
|
+
if ownerByItem[item] ~= unit then
|
|
2687
|
+
return unit, item
|
|
2688
|
+
end
|
|
2512
2689
|
end
|
|
2513
2690
|
return IgnoreEvent
|
|
2514
2691
|
end
|
|
2515
2692
|
)
|
|
2516
|
-
Unit.
|
|
2693
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2517
2694
|
____exports.UnitTriggerEvent,
|
|
2518
2695
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2519
|
-
function()
|
|
2696
|
+
function()
|
|
2697
|
+
local unit = getTriggerUnit()
|
|
2698
|
+
local item = getManipulatedItem()
|
|
2699
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not isItemIgnoredInEvents(item) then
|
|
2700
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2701
|
+
end
|
|
2702
|
+
return IgnoreEvent
|
|
2703
|
+
end
|
|
2704
|
+
)
|
|
2705
|
+
__TS__ObjectDefineProperty(
|
|
2706
|
+
Unit,
|
|
2707
|
+
"itemChargesChangedEvent",
|
|
2708
|
+
{get = function(self)
|
|
2709
|
+
local event = __TS__New(Event)
|
|
2710
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2711
|
+
local unit = item.owner
|
|
2712
|
+
if unit ~= nil then
|
|
2713
|
+
invoke(event, unit, item)
|
|
2714
|
+
end
|
|
2715
|
+
end)
|
|
2716
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2717
|
+
return event
|
|
2718
|
+
end}
|
|
2520
2719
|
)
|
|
2521
2720
|
__TS__ObjectDefineProperty(
|
|
2522
2721
|
Unit,
|
|
@@ -2543,6 +2742,10 @@ __TS__ObjectDefineProperty(
|
|
|
2543
2742
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2544
2743
|
return destroyEvent
|
|
2545
2744
|
end}
|
|
2745
|
+
)
|
|
2746
|
+
Unit.synchronize = synchronizer(
|
|
2747
|
+
function(unit) return unit.syncId end,
|
|
2748
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2546
2749
|
);
|
|
2547
2750
|
(function(self)
|
|
2548
2751
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2560,11 +2763,7 @@ __TS__ObjectDefineProperty(
|
|
|
2560
2763
|
function(____, id) return fourCC(id) end
|
|
2561
2764
|
)
|
|
2562
2765
|
end)
|
|
2563
|
-
for ____, leaveOrderId in ipairs({
|
|
2564
|
-
orderId("undefend"),
|
|
2565
|
-
orderId("magicundefense"),
|
|
2566
|
-
orderId("unimmolation")
|
|
2567
|
-
}) do
|
|
2766
|
+
for ____, leaveOrderId in ipairs({852056, 852479, 852178}) do
|
|
2568
2767
|
____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
|
|
2569
2768
|
local handle = unit.handle
|
|
2570
2769
|
for i = 1, #leaveAbilityIds do
|
|
@@ -2572,7 +2771,8 @@ __TS__ObjectDefineProperty(
|
|
|
2572
2771
|
return
|
|
2573
2772
|
end
|
|
2574
2773
|
end
|
|
2575
|
-
unit:
|
|
2774
|
+
unit:saveData()
|
|
2775
|
+
Timer:run(unit, "destroy")
|
|
2576
2776
|
end)
|
|
2577
2777
|
end
|
|
2578
2778
|
end)(Unit)
|