warscript 0.0.1-dev.404878c
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/LICENSE +23 -0
- package/binaryreader.d.ts +20 -0
- package/binaryreader.lua +50 -0
- package/binarywriter.d.ts +21 -0
- package/binarywriter.lua +90 -0
- package/core/dummy.d.ts +22 -0
- package/core/dummy.lua +133 -0
- package/core/game.d.ts +3 -0
- package/core/game.lua +24 -0
- package/core/mapbounds.d.ts +8 -0
- package/core/mapbounds.lua +12 -0
- package/core/thread.d.ts +8 -0
- package/core/thread.lua +40 -0
- package/core/types/ability.d.ts +4 -0
- package/core/types/ability.lua +10 -0
- package/core/types/async.d.ts +3 -0
- package/core/types/async.lua +2 -0
- package/core/types/camera.d.ts +4 -0
- package/core/types/camera.lua +21 -0
- package/core/types/cameraField.d.ts +15 -0
- package/core/types/cameraField.lua +38 -0
- package/core/types/color.d.ts +16 -0
- package/core/types/color.lua +93 -0
- package/core/types/destructable.d.ts +31 -0
- package/core/types/destructable.lua +245 -0
- package/core/types/effect.d.ts +31 -0
- package/core/types/effect.lua +209 -0
- package/core/types/frame.d.ts +140 -0
- package/core/types/frame.lua +882 -0
- package/core/types/game.d.ts +8 -0
- package/core/types/game.lua +41 -0
- package/core/types/group.d.ts +22 -0
- package/core/types/group.lua +94 -0
- package/core/types/handle.d.ts +48 -0
- package/core/types/handle.lua +169 -0
- package/core/types/image.d.ts +30 -0
- package/core/types/image.lua +121 -0
- package/core/types/internal/ability+cooldownRemaining.d.ts +1 -0
- package/core/types/internal/ability+cooldownRemaining.lua +0 -0
- package/core/types/item.d.ts +4 -0
- package/core/types/item.lua +6 -0
- package/core/types/missile.d.ts +22 -0
- package/core/types/missile.lua +233 -0
- package/core/types/order.d.ts +25 -0
- package/core/types/order.lua +55 -0
- package/core/types/player.d.ts +71 -0
- package/core/types/player.lua +448 -0
- package/core/types/playerCamera.d.ts +32 -0
- package/core/types/playerCamera.lua +162 -0
- package/core/types/playerColor.d.ts +40 -0
- package/core/types/playerColor.lua +203 -0
- package/core/types/rect.d.ts +39 -0
- package/core/types/rect.lua +152 -0
- package/core/types/region.d.ts +14 -0
- package/core/types/region.lua +84 -0
- package/core/types/sound.d.ts +69 -0
- package/core/types/sound.lua +247 -0
- package/core/types/tileCell.d.ts +13 -0
- package/core/types/tileCell.lua +100 -0
- package/core/types/timer.d.ts +36 -0
- package/core/types/timer.lua +230 -0
- package/core/types/timerDialog.d.ts +19 -0
- package/core/types/timerDialog.lua +95 -0
- package/core/types/unit.d.ts +10 -0
- package/core/types/unit.lua +24 -0
- package/core/types/widget.d.ts +5 -0
- package/core/types/widget.lua +2 -0
- package/core/util.d.ts +62 -0
- package/core/util.lua +464 -0
- package/core/vecmath/common.d.ts +18 -0
- package/core/vecmath/common.lua +29 -0
- package/core/vecmath/mat2.d.ts +73 -0
- package/core/vecmath/mat2.lua +261 -0
- package/core/vecmath/vec3.d.ts +47 -0
- package/core/vecmath/vec3.lua +350 -0
- package/core/vecmath/vec4.d.ts +54 -0
- package/core/vecmath/vec4.lua +400 -0
- package/crypto/ecc.d.ts +6 -0
- package/crypto/ecc.lua +1734 -0
- package/decl/index.d.ts +116 -0
- package/decl/native.d.ts +8198 -0
- package/destroyable.d.ts +20 -0
- package/destroyable.lua +31 -0
- package/engine/ability.d.ts +5 -0
- package/engine/ability.lua +7 -0
- package/engine/behavior.d.ts +28 -0
- package/engine/behavior.lua +181 -0
- package/engine/behaviour/ability/apply-buff.d.ts +38 -0
- package/engine/behaviour/ability/apply-buff.lua +126 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +12 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +36 -0
- package/engine/behaviour/ability/damage.d.ts +25 -0
- package/engine/behaviour/ability/damage.lua +75 -0
- package/engine/behaviour/ability/heal.d.ts +16 -0
- package/engine/behaviour/ability/heal.lua +35 -0
- package/engine/behaviour/ability/instant-impact.d.ts +6 -0
- package/engine/behaviour/ability/instant-impact.lua +25 -0
- package/engine/behaviour/ability.d.ts +40 -0
- package/engine/behaviour/ability.lua +175 -0
- package/engine/behaviour/unit/stun-immunity.d.ts +19 -0
- package/engine/behaviour/unit/stun-immunity.lua +67 -0
- package/engine/behaviour/unit.d.ts +20 -0
- package/engine/behaviour/unit.lua +75 -0
- package/engine/buff.d.ts +221 -0
- package/engine/buff.lua +1093 -0
- package/engine/constants.d.ts +7 -0
- package/engine/constants.lua +8 -0
- package/engine/index.d.ts +5 -0
- package/engine/index.lua +2 -0
- package/engine/internal/ability.d.ts +91 -0
- package/engine/internal/ability.lua +531 -0
- package/engine/internal/item/ability.d.ts +2 -0
- package/engine/internal/item/ability.lua +48 -0
- package/engine/internal/item+owner.d.ts +7 -0
- package/engine/internal/item+owner.lua +22 -0
- package/engine/internal/item.d.ts +86 -0
- package/engine/internal/item.lua +580 -0
- package/engine/internal/mechanics/ability-duration.d.ts +4 -0
- package/engine/internal/mechanics/ability-duration.lua +11 -0
- package/engine/internal/mechanics/area-damage.d.ts +2 -0
- package/engine/internal/mechanics/area-damage.lua +33 -0
- package/engine/internal/misc/dummy-units.d.ts +2 -0
- package/engine/internal/misc/dummy-units.lua +14 -0
- package/engine/internal/object-data/armor-increase.d.ts +2 -0
- package/engine/internal/object-data/armor-increase.lua +19 -0
- package/engine/internal/object-data/attribute-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +15 -0
- package/engine/internal/object-data/auto-attack-damage-increase.d.ts +2 -0
- package/engine/internal/object-data/auto-attack-damage-increase.lua +17 -0
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +2 -0
- package/engine/internal/object-data/auto-attack-speed-increase.lua +14 -0
- package/engine/internal/object-data/dummy-inventory.d.ts +2 -0
- package/engine/internal/object-data/dummy-inventory.lua +16 -0
- package/engine/internal/object-data/dummy-item.d.ts +2 -0
- package/engine/internal/object-data/dummy-item.lua +10 -0
- package/engine/internal/object-data/ghost-visible.d.ts +2 -0
- package/engine/internal/object-data/ghost-visible.lua +15 -0
- package/engine/internal/object-data/invulnerable.d.ts +2 -0
- package/engine/internal/object-data/invulnerable.lua +11 -0
- package/engine/internal/object-data/movement-speed-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/movement-speed-increase-factor.lua +18 -0
- package/engine/internal/unit/ability.d.ts +143 -0
- package/engine/internal/unit/ability.lua +369 -0
- package/engine/internal/unit/allowed-targets.d.ts +17 -0
- package/engine/internal/unit/allowed-targets.lua +19 -0
- package/engine/internal/unit/band-aids/ancestral-spirit-cannibalize.d.ts +2 -0
- package/engine/internal/unit/band-aids/ancestral-spirit-cannibalize.lua +21 -0
- package/engine/internal/unit/bonus.d.ts +41 -0
- package/engine/internal/unit/bonus.lua +188 -0
- package/engine/internal/unit/buff.d.ts +38 -0
- package/engine/internal/unit/buff.lua +81 -0
- package/engine/internal/unit/expiration-timer.d.ts +22 -0
- package/engine/internal/unit/expiration-timer.lua +44 -0
- package/engine/internal/unit/ghost-counter.d.ts +12 -0
- package/engine/internal/unit/ghost-counter.lua +26 -0
- package/engine/internal/unit/invulnerability-counter.d.ts +12 -0
- package/engine/internal/unit/invulnerability-counter.lua +26 -0
- package/engine/internal/unit/missile.d.ts +42 -0
- package/engine/internal/unit/missile.lua +70 -0
- package/engine/internal/unit/movement-speed.d.ts +18 -0
- package/engine/internal/unit/movement-speed.lua +42 -0
- package/engine/internal/unit/summon-event.d.ts +12 -0
- package/engine/internal/unit/summon-event.lua +50 -0
- package/engine/internal/unit+ability.d.ts +9 -0
- package/engine/internal/unit+ability.lua +59 -0
- package/engine/internal/unit+bonus.d.ts +8 -0
- package/engine/internal/unit+bonus.lua +40 -0
- package/engine/internal/unit+damage.d.ts +69 -0
- package/engine/internal/unit+damage.lua +123 -0
- package/engine/internal/unit+rally.d.ts +10 -0
- package/engine/internal/unit+rally.lua +159 -0
- package/engine/internal/unit+spellSteal.d.ts +7 -0
- package/engine/internal/unit+spellSteal.lua +64 -0
- package/engine/internal/unit+transport.d.ts +12 -0
- package/engine/internal/unit+transport.lua +102 -0
- package/engine/internal/unit-missile-data.d.ts +2 -0
- package/engine/internal/unit-missile-data.lua +107 -0
- package/engine/internal/unit-missile-launch.d.ts +7 -0
- package/engine/internal/unit-missile-launch.lua +32 -0
- package/engine/internal/unit.d.ts +312 -0
- package/engine/internal/unit.lua +2430 -0
- package/engine/internal/utility.d.ts +2 -0
- package/engine/internal/utility.lua +13 -0
- package/engine/lightning.d.ts +51 -0
- package/engine/lightning.lua +303 -0
- package/engine/local-client.d.ts +16 -0
- package/engine/local-client.lua +86 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +14 -0
- package/engine/object-data/auxiliary/animation-name.lua +2 -0
- package/engine/object-data/auxiliary/animation-qualifier.d.ts +53 -0
- package/engine/object-data/auxiliary/animation-qualifier.lua +2 -0
- package/engine/object-data/auxiliary/armor-sound-type.d.ts +8 -0
- package/engine/object-data/auxiliary/armor-sound-type.lua +2 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +15 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +29 -0
- package/engine/object-data/auxiliary/attack-type.d.ts +11 -0
- package/engine/object-data/auxiliary/attack-type.lua +2 -0
- package/engine/object-data/auxiliary/buff-polarity.d.ts +6 -0
- package/engine/object-data/auxiliary/buff-polarity.lua +2 -0
- package/engine/object-data/auxiliary/buff-resistance-type.d.ts +6 -0
- package/engine/object-data/auxiliary/buff-resistance-type.lua +2 -0
- package/engine/object-data/auxiliary/combat-classification.d.ts +46 -0
- package/engine/object-data/auxiliary/combat-classification.lua +206 -0
- package/engine/object-data/auxiliary/detection-type.d.ts +7 -0
- package/engine/object-data/auxiliary/detection-type.lua +2 -0
- package/engine/object-data/auxiliary/model-node-name.d.ts +12 -0
- package/engine/object-data/auxiliary/model-node-name.lua +2 -0
- package/engine/object-data/auxiliary/model-node-qualifier.d.ts +21 -0
- package/engine/object-data/auxiliary/model-node-qualifier.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +10 -0
- package/engine/object-data/auxiliary/movement-type.lua +2 -0
- package/engine/object-data/auxiliary/race.d.ts +14 -0
- package/engine/object-data/auxiliary/race.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +8 -0
- package/engine/object-data/auxiliary/sound-preset-name.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +35 -0
- package/engine/object-data/auxiliary/sound-set-name.lua +2 -0
- package/engine/object-data/auxiliary/targeting-type.d.ts +8 -0
- package/engine/object-data/auxiliary/targeting-type.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +16 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.lua +8 -0
- package/engine/object-data/auxiliary/unit-classification.d.ts +19 -0
- package/engine/object-data/auxiliary/unit-classification.lua +50 -0
- package/engine/object-data/auxiliary/weapon-sound-type.d.ts +17 -0
- package/engine/object-data/auxiliary/weapon-sound-type.lua +2 -0
- package/engine/object-data/entry/ability-type/armor-increase.d.ts +8 -0
- package/engine/object-data/entry/ability-type/armor-increase.lua +26 -0
- package/engine/object-data/entry/ability-type/attribute-increase.d.ts +12 -0
- package/engine/object-data/entry/ability-type/attribute-increase.lua +52 -0
- package/engine/object-data/entry/ability-type/auto-attack-damage-increase.d.ts +8 -0
- package/engine/object-data/entry/ability-type/auto-attack-damage-increase.lua +26 -0
- package/engine/object-data/entry/ability-type/auto-attack-heal-reduction-effect.d.ts +12 -0
- package/engine/object-data/entry/ability-type/auto-attack-heal-reduction-effect.lua +52 -0
- package/engine/object-data/entry/ability-type/auto-attack-speed-increase.d.ts +8 -0
- package/engine/object-data/entry/ability-type/auto-attack-speed-increase.lua +26 -0
- package/engine/object-data/entry/ability-type/bash.d.ts +16 -0
- package/engine/object-data/entry/ability-type/bash.lua +78 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +10 -0
- package/engine/object-data/entry/ability-type/berserk.lua +39 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +21 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +249 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +7 -0
- package/engine/object-data/entry/ability-type/blank-passive.lua +28 -0
- package/engine/object-data/entry/ability-type/blizzard.d.ts +16 -0
- package/engine/object-data/entry/ability-type/blizzard.lua +78 -0
- package/engine/object-data/entry/ability-type/blood-lust.d.ts +12 -0
- package/engine/object-data/entry/ability-type/blood-lust.lua +52 -0
- package/engine/object-data/entry/ability-type/chain-lightning.d.ts +12 -0
- package/engine/object-data/entry/ability-type/chain-lightning.lua +52 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +48 -0
- package/engine/object-data/entry/ability-type/channel.lua +140 -0
- package/engine/object-data/entry/ability-type/charge-gold-and-lumber.d.ts +14 -0
- package/engine/object-data/entry/ability-type/charge-gold-and-lumber.lua +65 -0
- package/engine/object-data/entry/ability-type/cleaving-attack.d.ts +8 -0
- package/engine/object-data/entry/ability-type/cleaving-attack.lua +26 -0
- package/engine/object-data/entry/ability-type/cluster-rockets.d.ts +18 -0
- package/engine/object-data/entry/ability-type/cluster-rockets.lua +91 -0
- package/engine/object-data/entry/ability-type/cripple.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cripple.lua +52 -0
- package/engine/object-data/entry/ability-type/critical-strike.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike.lua +91 -0
- package/engine/object-data/entry/ability-type/curse.d.ts +8 -0
- package/engine/object-data/entry/ability-type/curse.lua +26 -0
- package/engine/object-data/entry/ability-type/dark-summoning.d.ts +10 -0
- package/engine/object-data/entry/ability-type/dark-summoning.lua +39 -0
- package/engine/object-data/entry/ability-type/death-coil.d.ts +8 -0
- package/engine/object-data/entry/ability-type/death-coil.lua +26 -0
- package/engine/object-data/entry/ability-type/disease-cloud.d.ts +15 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +65 -0
- package/engine/object-data/entry/ability-type/divine-shield.d.ts +5 -0
- package/engine/object-data/entry/ability-type/divine-shield.lua +12 -0
- package/engine/object-data/entry/ability-type/endurance-aura.d.ts +10 -0
- package/engine/object-data/entry/ability-type/endurance-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/engineering-upgrade.d.ts +13 -0
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +88 -0
- package/engine/object-data/entry/ability-type/evasion.d.ts +8 -0
- package/engine/object-data/entry/ability-type/evasion.lua +26 -0
- package/engine/object-data/entry/ability-type/faerie-fire.d.ts +10 -0
- package/engine/object-data/entry/ability-type/faerie-fire.lua +39 -0
- package/engine/object-data/entry/ability-type/far-sight.d.ts +9 -0
- package/engine/object-data/entry/ability-type/far-sight.lua +26 -0
- package/engine/object-data/entry/ability-type/feral-spirit.d.ts +11 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +39 -0
- package/engine/object-data/entry/ability-type/frenzy.d.ts +12 -0
- package/engine/object-data/entry/ability-type/frenzy.lua +52 -0
- package/engine/object-data/entry/ability-type/frost-nova.d.ts +12 -0
- package/engine/object-data/entry/ability-type/frost-nova.lua +52 -0
- package/engine/object-data/entry/ability-type/ghost-visible.d.ts +10 -0
- package/engine/object-data/entry/ability-type/ghost-visible.lua +39 -0
- package/engine/object-data/entry/ability-type/gold-mine.d.ts +12 -0
- package/engine/object-data/entry/ability-type/gold-mine.lua +52 -0
- package/engine/object-data/entry/ability-type/heal.d.ts +8 -0
- package/engine/object-data/entry/ability-type/heal.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-salve.d.ts +22 -0
- package/engine/object-data/entry/ability-type/healing-salve.lua +78 -0
- package/engine/object-data/entry/ability-type/healing-spray.d.ts +18 -0
- package/engine/object-data/entry/ability-type/healing-spray.lua +91 -0
- package/engine/object-data/entry/ability-type/healing-wave.d.ts +12 -0
- package/engine/object-data/entry/ability-type/healing-wave.lua +52 -0
- package/engine/object-data/entry/ability-type/holy-light.d.ts +8 -0
- package/engine/object-data/entry/ability-type/holy-light.lua +26 -0
- package/engine/object-data/entry/ability-type/incinerate.d.ts +18 -0
- package/engine/object-data/entry/ability-type/incinerate.lua +91 -0
- package/engine/object-data/entry/ability-type/inner-fire.d.ts +14 -0
- package/engine/object-data/entry/ability-type/inner-fire.lua +65 -0
- package/engine/object-data/entry/ability-type/inventory.d.ts +16 -0
- package/engine/object-data/entry/ability-type/inventory.lua +78 -0
- package/engine/object-data/entry/ability-type/invulnerable.d.ts +5 -0
- package/engine/object-data/entry/ability-type/invulnerable.lua +12 -0
- package/engine/object-data/entry/ability-type/lightning-shield.d.ts +8 -0
- package/engine/object-data/entry/ability-type/lightning-shield.lua +26 -0
- package/engine/object-data/entry/ability-type/movement-speed-increase.d.ts +8 -0
- package/engine/object-data/entry/ability-type/movement-speed-increase.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-immolation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-immolation.lua +26 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.d.ts +25 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +130 -0
- package/engine/object-data/entry/ability-type/recall.d.ts +10 -0
- package/engine/object-data/entry/ability-type/recall.lua +39 -0
- package/engine/object-data/entry/ability-type/rejuvenation.d.ts +20 -0
- package/engine/object-data/entry/ability-type/rejuvenation.lua +65 -0
- package/engine/object-data/entry/ability-type/searing-arrows.d.ts +8 -0
- package/engine/object-data/entry/ability-type/searing-arrows.lua +26 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +10 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +39 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +12 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +52 -0
- package/engine/object-data/entry/ability-type/slow.d.ts +12 -0
- package/engine/object-data/entry/ability-type/slow.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-damage-reduction.d.ts +10 -0
- package/engine/object-data/entry/ability-type/spell-damage-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/spiked-carapace.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spiked-carapace.lua +52 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +14 -0
- package/engine/object-data/entry/ability-type/spirit-touch.lua +65 -0
- package/engine/object-data/entry/ability-type/storm-bolt.d.ts +8 -0
- package/engine/object-data/entry/ability-type/storm-bolt.lua +26 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.d.ts +11 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +39 -0
- package/engine/object-data/entry/ability-type/summon-water-elemental.d.ts +11 -0
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +39 -0
- package/engine/object-data/entry/ability-type.d.ts +148 -0
- package/engine/object-data/entry/ability-type.lua +1058 -0
- package/engine/object-data/entry/buff-type/applicable.d.ts +16 -0
- package/engine/object-data/entry/buff-type/applicable.lua +377 -0
- package/engine/object-data/entry/buff-type/blank.d.ts +8 -0
- package/engine/object-data/entry/buff-type/blank.lua +17 -0
- package/engine/object-data/entry/buff-type.d.ts +64 -0
- package/engine/object-data/entry/buff-type.lua +316 -0
- package/engine/object-data/entry/destructible-type.d.ts +21 -0
- package/engine/object-data/entry/destructible-type.lua +83 -0
- package/engine/object-data/entry/item-type/blank.d.ts +8 -0
- package/engine/object-data/entry/item-type/blank.lua +21 -0
- package/engine/object-data/entry/item-type.d.ts +49 -0
- package/engine/object-data/entry/item-type.lua +259 -0
- package/engine/object-data/entry/lightning-type.d.ts +37 -0
- package/engine/object-data/entry/lightning-type.lua +191 -0
- package/engine/object-data/entry/unit-type/blank.d.ts +6 -0
- package/engine/object-data/entry/unit-type/blank.lua +13 -0
- package/engine/object-data/entry/unit-type.d.ts +218 -0
- package/engine/object-data/entry/unit-type.lua +1306 -0
- package/engine/object-data/entry/upgrade/blank.d.ts +8 -0
- package/engine/object-data/entry/upgrade/blank.lua +22 -0
- package/engine/object-data/entry/upgrade.d.ts +59 -0
- package/engine/object-data/entry/upgrade.lua +238 -0
- package/engine/object-data/entry.d.ts +80 -0
- package/engine/object-data/entry.lua +634 -0
- package/engine/object-data/utility/object-data-entry-id-generator.d.ts +6 -0
- package/engine/object-data/utility/object-data-entry-id-generator.lua +63 -0
- package/engine/object-data/utility/order-type-string-id-factory.d.ts +9 -0
- package/engine/object-data/utility/order-type-string-id-factory.lua +368 -0
- package/engine/object-field/ability.d.ts +115 -0
- package/engine/object-field/ability.lua +471 -0
- package/engine/object-field/unit.d.ts +15 -0
- package/engine/object-field/unit.lua +49 -0
- package/engine/object-field.d.ts +84 -0
- package/engine/object-field.lua +444 -0
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/ability-type.d.ts +8 -0
- package/engine/standard/entries/ability-type.lua +8 -0
- package/engine/standard/entries/lightning-type.d.ts +16 -0
- package/engine/standard/entries/lightning-type.lua +16 -0
- package/engine/standard/entries/unit-type.d.ts +63 -0
- package/engine/standard/entries/unit-type.lua +63 -0
- package/engine/standard/entries/upgrade.d.ts +92 -0
- package/engine/standard/entries/upgrade.lua +92 -0
- package/engine/standard/fields/ability.d.ts +737 -0
- package/engine/standard/fields/ability.lua +749 -0
- package/engine/standard/pathing-textures.d.ts +6 -0
- package/engine/standard/pathing-textures.lua +7 -0
- package/engine/text-tag.d.ts +25 -0
- package/engine/text-tag.lua +109 -0
- package/engine/unit.d.ts +20 -0
- package/engine/unit.lua +31 -0
- package/event.d.ts +53 -0
- package/event.lua +269 -0
- package/exception.d.ts +17 -0
- package/exception.lua +53 -0
- package/file.d.ts +4 -0
- package/file.lua +42 -0
- package/global/math.d.ts +21 -0
- package/global/math.lua +72 -0
- package/global/vec2.d.ts +66 -0
- package/global/vec2.lua +159 -0
- package/index.d.ts +8 -0
- package/index.lua +9 -0
- package/lualib_bundle.lua +2629 -0
- package/math/vec2.d.ts +18 -0
- package/math/vec2.lua +42 -0
- package/math.d.ts +39 -0
- package/math.lua +91 -0
- package/net/signal.d.ts +11 -0
- package/net/signal.lua +56 -0
- package/net/socket.d.ts +9 -0
- package/net/socket.lua +26 -0
- package/network.d.ts +31 -0
- package/network.lua +194 -0
- package/objutil/ability.d.ts +710 -0
- package/objutil/ability.lua +3781 -0
- package/objutil/buff.d.ts +110 -0
- package/objutil/buff.lua +769 -0
- package/objutil/dummy.d.ts +2 -0
- package/objutil/dummy.lua +49 -0
- package/objutil/idgen.d.ts +9 -0
- package/objutil/idgen.lua +92 -0
- package/objutil/item.d.ts +38 -0
- package/objutil/item.lua +254 -0
- package/objutil/object.d.ts +43 -0
- package/objutil/object.lua +213 -0
- package/objutil/unit.d.ts +134 -0
- package/objutil/unit.lua +913 -0
- package/objutil/upgrade.d.ts +22 -0
- package/objutil/upgrade.lua +127 -0
- package/operation.d.ts +35 -0
- package/operation.lua +179 -0
- package/package.json +47 -0
- package/patch-lualib.d.ts +2 -0
- package/patch-lualib.lua +67 -0
- package/patch-natives.d.ts +11 -0
- package/patch-natives.lua +14 -0
- package/string.d.ts +106 -0
- package/string.lua +34 -0
- package/time/dayOfWeek.d.ts +97 -0
- package/time/dayOfWeek.lua +53 -0
- package/time/localDate.d.ts +145 -0
- package/time/localDate.lua +236 -0
- package/time/localDateTime.d.ts +133 -0
- package/time/localDateTime.lua +154 -0
- package/time/localTime.d.ts +87 -0
- package/time/localTime.lua +91 -0
- package/time/month.d.ts +146 -0
- package/time/month.lua +129 -0
- package/time/year.d.ts +117 -0
- package/time/year.lua +81 -0
- package/types.d.ts +13 -0
- package/types.lua +0 -0
- package/util/objectPool.d.ts +6 -0
- package/util/objectPool.lua +28 -0
- package/util/stream.d.ts +29 -0
- package/util/stream.lua +453 -0
- package/util/stringBuilder.d.ts +8 -0
- package/util/stringBuilder.lua +25 -0
- package/utility/arrays.d.ts +57 -0
- package/utility/arrays.lua +369 -0
- package/utility/base64.d.ts +23 -0
- package/utility/base64.lua +177 -0
- package/utility/bit-set.d.ts +18 -0
- package/utility/bit-set.lua +12 -0
- package/utility/functions.d.ts +5 -0
- package/utility/functions.lua +90 -0
- package/utility/json.d.ts +2 -0
- package/utility/json.lua +400 -0
- package/utility/linked-set.d.ts +49 -0
- package/utility/linked-set.lua +181 -0
- package/utility/lua-maps.d.ts +6 -0
- package/utility/lua-maps.lua +25 -0
- package/utility/lua-sets.d.ts +6 -0
- package/utility/lua-sets.lua +37 -0
- package/utility/lzw.d.ts +2 -0
- package/utility/lzw.lua +161 -0
- package/utility/observable-array.d.ts +17 -0
- package/utility/observable-array.lua +30 -0
- package/utility/preconditions.d.ts +23 -0
- package/utility/preconditions.lua +58 -0
- package/utility/records.d.ts +3 -0
- package/utility/records.lua +9 -0
- package/utility/reflection.d.ts +4 -0
- package/utility/reflection.lua +31 -0
- package/utility/strings.d.ts +2 -0
- package/utility/strings.lua +44 -0
- package/utility/types.d.ts +39 -0
- package/utility/types.lua +2 -0
|
@@ -0,0 +1,2430 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__StringSplit = ____lualib.__TS__StringSplit
|
|
3
|
+
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
4
|
+
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
5
|
+
local __TS__New = ____lualib.__TS__New
|
|
6
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
7
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
|
+
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
9
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
10
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
11
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
|
+
local Set = ____lualib.Set
|
|
13
|
+
local __TS__Spread = ____lualib.__TS__Spread
|
|
14
|
+
local ____exports = {}
|
|
15
|
+
local ____handle = require("core.types.handle")
|
|
16
|
+
local Handle = ____handle.Handle
|
|
17
|
+
local ____player = require("core.types.player")
|
|
18
|
+
local Player = ____player.Player
|
|
19
|
+
local ____event = require("event")
|
|
20
|
+
local Event = ____event.Event
|
|
21
|
+
local IgnoreEvent = ____event.IgnoreEvent
|
|
22
|
+
local InitializingEvent = ____event.InitializingEvent
|
|
23
|
+
local TriggerEvent = ____event.TriggerEvent
|
|
24
|
+
local ____color = require("core.types.color")
|
|
25
|
+
local Color = ____color.Color
|
|
26
|
+
local ____item = require("engine.internal.item")
|
|
27
|
+
local Item = ____item.Item
|
|
28
|
+
local ____destructable = require("core.types.destructable")
|
|
29
|
+
local Destructable = ____destructable.Destructable
|
|
30
|
+
local ____ability = require("objutil.ability")
|
|
31
|
+
local AbilityDefinition = ____ability.AbilityDefinition
|
|
32
|
+
local AbilityDefinitionLightningAttack = ____ability.AbilityDefinitionLightningAttack
|
|
33
|
+
local AbilityDefinitionSpikedCarapace = ____ability.AbilityDefinitionSpikedCarapace
|
|
34
|
+
local ____ability = require("engine.internal.ability")
|
|
35
|
+
local ItemAbility = ____ability.ItemAbility
|
|
36
|
+
local UnitAbility = ____ability.UnitAbility
|
|
37
|
+
local UnrecognizedAbility = ____ability.UnrecognizedAbility
|
|
38
|
+
local ____timer = require("core.types.timer")
|
|
39
|
+
local Timer = ____timer.Timer
|
|
40
|
+
local ____dummy = require("objutil.dummy")
|
|
41
|
+
local dummyUnitId = ____dummy.dummyUnitId
|
|
42
|
+
local ____preconditions = require("utility.preconditions")
|
|
43
|
+
local checkNotNull = ____preconditions.checkNotNull
|
|
44
|
+
local ____constants = require("engine.constants")
|
|
45
|
+
local HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT = ____constants.HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
|
|
46
|
+
local MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT = ____constants.MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
|
|
47
|
+
local ____arrays = require("utility.arrays")
|
|
48
|
+
local forEach = ____arrays.forEach
|
|
49
|
+
local ____math = require("math")
|
|
50
|
+
local min = ____math.min
|
|
51
|
+
local match = string.match
|
|
52
|
+
local ____tostring = _G.tostring
|
|
53
|
+
local setUnitAnimation = SetUnitAnimation
|
|
54
|
+
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
55
|
+
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
56
|
+
local queueUnitAnimation = QueueUnitAnimation
|
|
57
|
+
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
58
|
+
local getUnitRealField = BlzGetUnitRealField
|
|
59
|
+
local getHeroStr = GetHeroStr
|
|
60
|
+
local getHeroAgi = GetHeroAgi
|
|
61
|
+
local getHeroInt = GetHeroInt
|
|
62
|
+
local setHeroStr = SetHeroStr
|
|
63
|
+
local setHeroAgi = SetHeroAgi
|
|
64
|
+
local setHeroInt = SetHeroInt
|
|
65
|
+
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
66
|
+
local getUnitStringField = BlzGetUnitStringField
|
|
67
|
+
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
68
|
+
local setUnitRealField = BlzSetUnitRealField
|
|
69
|
+
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
70
|
+
local setUnitStringField = BlzSetUnitStringField
|
|
71
|
+
local setUnitScale = SetUnitScale
|
|
72
|
+
local setUnitPosition = SetUnitPosition
|
|
73
|
+
local setUnitTimeScale = SetUnitTimeScale
|
|
74
|
+
local getHandleId = GetHandleId
|
|
75
|
+
local createUnit = CreateUnit
|
|
76
|
+
local killUnit = KillUnit
|
|
77
|
+
local setUnitExploded = SetUnitExploded
|
|
78
|
+
local removeUnit = RemoveUnit
|
|
79
|
+
local getUnitTypeId = GetUnitTypeId
|
|
80
|
+
local isHeroUnitId = IsHeroUnitId
|
|
81
|
+
local getTriggerUnit = GetTriggerUnit
|
|
82
|
+
local getManipulatedItem = GetManipulatedItem
|
|
83
|
+
local getTriggerPlayer = GetTriggerPlayer
|
|
84
|
+
local getSpellAbility = GetSpellAbility
|
|
85
|
+
local getSpellAbilityId = GetSpellAbilityId
|
|
86
|
+
local getSpellTargetUnit = GetSpellTargetUnit
|
|
87
|
+
local getSpellTargetX = GetSpellTargetX
|
|
88
|
+
local getSpellTargetY = GetSpellTargetY
|
|
89
|
+
local getSpellTargetItem = GetSpellTargetItem
|
|
90
|
+
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
91
|
+
local isUnitInRangeXY = IsUnitInRangeXY
|
|
92
|
+
local isUnitInRange = IsUnitInRange
|
|
93
|
+
local setResourceAmount = SetResourceAmount
|
|
94
|
+
local getResourceAmount = GetResourceAmount
|
|
95
|
+
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
|
+
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
|
+
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
98
|
+
local isUnitInvisible = IsUnitInvisible
|
|
99
|
+
local isUnitVisible = IsUnitVisible
|
|
100
|
+
local getUnitX = GetUnitX
|
|
101
|
+
local getUnitY = GetUnitY
|
|
102
|
+
local getUnitFlyHeight = GetUnitFlyHeight
|
|
103
|
+
local moveLocation = MoveLocation
|
|
104
|
+
local getLocationZ = GetLocationZ
|
|
105
|
+
local groupEnumUnitsInRange = GroupEnumUnitsInRange
|
|
106
|
+
local groupEnumUnitsInRect = GroupEnumUnitsInRect
|
|
107
|
+
local groupEnumUnitsOfPlayer = GroupEnumUnitsOfPlayer
|
|
108
|
+
local getFilterUnit = GetFilterUnit
|
|
109
|
+
local getUnitCollisionSize = BlzGetUnitCollisionSize
|
|
110
|
+
local getOrderedUnit = GetOrderedUnit
|
|
111
|
+
local getIssuedOrderId = GetIssuedOrderId
|
|
112
|
+
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
113
|
+
local unitAlive = UnitAlive
|
|
114
|
+
local unitAddType = UnitAddType
|
|
115
|
+
local unitRemoveType = UnitRemoveType
|
|
116
|
+
local isUnitIllusion = IsUnitIllusion
|
|
117
|
+
local isUnitType = IsUnitType
|
|
118
|
+
local isUnitAlly = IsUnitAlly
|
|
119
|
+
local isUnitEnemy = IsUnitEnemy
|
|
120
|
+
local getOwningPlayer = GetOwningPlayer
|
|
121
|
+
local setUnitColor = SetUnitColor
|
|
122
|
+
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
123
|
+
____exports.UnitClassification = {}
|
|
124
|
+
local UnitClassification = ____exports.UnitClassification
|
|
125
|
+
do
|
|
126
|
+
UnitClassification.STRUCTURE = UNIT_TYPE_STRUCTURE
|
|
127
|
+
UnitClassification.UNDEAD = UNIT_TYPE_UNDEAD
|
|
128
|
+
UnitClassification.AIR = UNIT_TYPE_FLYING
|
|
129
|
+
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
130
|
+
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
131
|
+
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
132
|
+
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
133
|
+
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
134
|
+
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
135
|
+
UnitClassification.RESISTANT = UNIT_TYPE_RESISTANT
|
|
136
|
+
end
|
|
137
|
+
local tremove = table.remove
|
|
138
|
+
local loc = Location(0, 0)
|
|
139
|
+
local invoke = Event.invoke
|
|
140
|
+
local stockAbilities = postcompile(function()
|
|
141
|
+
local abilityData = {}
|
|
142
|
+
if currentMap then
|
|
143
|
+
for id, unit in pairs(currentMap.objects.unit.all) do
|
|
144
|
+
local ids = __TS__ArrayMap(
|
|
145
|
+
__TS__ArrayFilter(
|
|
146
|
+
__TS__StringSplit(
|
|
147
|
+
tostring(unit:getField("uabi") or ""),
|
|
148
|
+
","
|
|
149
|
+
),
|
|
150
|
+
function(____, id) return id ~= "_" and id ~= "" end
|
|
151
|
+
),
|
|
152
|
+
function(____, id) return fourCC(id) end
|
|
153
|
+
)
|
|
154
|
+
if #ids ~= 0 then
|
|
155
|
+
abilityData[fourCC(id)] = ids
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
return abilityData
|
|
160
|
+
end)
|
|
161
|
+
local attackHandlerAbilityId = compiletime(function()
|
|
162
|
+
local ability = __TS__New(AbilityDefinitionLightningAttack)
|
|
163
|
+
ability.graphicDelay = 0
|
|
164
|
+
ability.graphicDuration = 0
|
|
165
|
+
ability.lightningEffects = {}
|
|
166
|
+
ability.missileArt = ""
|
|
167
|
+
ability.missileSpeed = 0
|
|
168
|
+
ability.targetArt = ""
|
|
169
|
+
return fourCC(ability.id)
|
|
170
|
+
end)
|
|
171
|
+
local leaveDetectAbilityId = compiletime(fourCC(__TS__New(AbilityDefinition, "Adef").id))
|
|
172
|
+
for ____, player in ipairs(Player.all) do
|
|
173
|
+
SetPlayerAbilityAvailable(player.handle, leaveDetectAbilityId, false)
|
|
174
|
+
end
|
|
175
|
+
local morphDetectAbilityId = compiletime(fourCC(__TS__New(AbilityDefinition, "Adef").id))
|
|
176
|
+
for ____, player in ipairs(Player.all) do
|
|
177
|
+
SetPlayerAbilityAvailable(player.handle, morphDetectAbilityId, false)
|
|
178
|
+
end
|
|
179
|
+
local armorBonusAbilityId = compiletime(function()
|
|
180
|
+
local ability = __TS__New(AbilityDefinitionSpikedCarapace)
|
|
181
|
+
ability.levels = 1
|
|
182
|
+
ability.returnedDamageFactor = 0
|
|
183
|
+
ability.receivedDamageFactor = 1
|
|
184
|
+
ability.armorBonus = 0
|
|
185
|
+
return fourCC(ability.id)
|
|
186
|
+
end)
|
|
187
|
+
local armorBonusField = ABILITY_RLF_DEFENSE_BONUS_UTS3
|
|
188
|
+
local atan = math.atan
|
|
189
|
+
local fmod = math.fmod
|
|
190
|
+
local sqrt = math.sqrt
|
|
191
|
+
local max = math.max
|
|
192
|
+
local rad = math.rad
|
|
193
|
+
local pi2 = 2 * math.pi
|
|
194
|
+
local dummyGroup = CreateGroup()
|
|
195
|
+
local targetCollection
|
|
196
|
+
local targetCollectionNextIndex
|
|
197
|
+
local centerX
|
|
198
|
+
local centerY
|
|
199
|
+
local enumRange
|
|
200
|
+
local enumPredicate
|
|
201
|
+
local collectIntoTarget = Filter(function()
|
|
202
|
+
local unit = getFilterUnit()
|
|
203
|
+
if getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
|
|
204
|
+
targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
|
|
205
|
+
targetCollectionNextIndex = targetCollectionNextIndex + 1
|
|
206
|
+
end
|
|
207
|
+
end)
|
|
208
|
+
local collectIntoTargetWithPredicate = Filter(function()
|
|
209
|
+
local unit = getFilterUnit()
|
|
210
|
+
if getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 and enumPredicate(____exports.Unit:of(unit)) then
|
|
211
|
+
targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
|
|
212
|
+
targetCollectionNextIndex = targetCollectionNextIndex + 1
|
|
213
|
+
end
|
|
214
|
+
end)
|
|
215
|
+
local gConsumer
|
|
216
|
+
local message
|
|
217
|
+
local invokeConsumer = Filter(function()
|
|
218
|
+
local unit = getFilterUnit()
|
|
219
|
+
if message == nil and getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
|
|
220
|
+
local success, msg = pcall(
|
|
221
|
+
gConsumer,
|
|
222
|
+
____exports.Unit:of(unit)
|
|
223
|
+
)
|
|
224
|
+
if not success then
|
|
225
|
+
message = msg
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
end)
|
|
229
|
+
local collectIntoTargetCollision = Filter(function()
|
|
230
|
+
local unit = getFilterUnit()
|
|
231
|
+
if isUnitInRangeXY(unit, centerX, centerY, enumRange) and getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
|
|
232
|
+
targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
|
|
233
|
+
targetCollectionNextIndex = targetCollectionNextIndex + 1
|
|
234
|
+
end
|
|
235
|
+
end)
|
|
236
|
+
local collectIntoTargetCollisionWithPredicate = Filter(function()
|
|
237
|
+
local unit = getFilterUnit()
|
|
238
|
+
if isUnitInRangeXY(unit, centerX, centerY, enumRange) and getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 and enumPredicate(____exports.Unit:of(unit)) then
|
|
239
|
+
targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
|
|
240
|
+
targetCollectionNextIndex = targetCollectionNextIndex + 1
|
|
241
|
+
end
|
|
242
|
+
end)
|
|
243
|
+
local posX
|
|
244
|
+
local posY
|
|
245
|
+
local startAngle
|
|
246
|
+
local centerAngle
|
|
247
|
+
local collectSectorIntoTarget = Filter(function()
|
|
248
|
+
local unit = getFilterUnit()
|
|
249
|
+
if getUnitTypeId(unit) ~= dummyUnitId and getUnitAbilityLevel(unit, leaveDetectAbilityId) > 0 then
|
|
250
|
+
local angle = atan(
|
|
251
|
+
getUnitY(unit) - posY,
|
|
252
|
+
getUnitX(unit) - posX
|
|
253
|
+
)
|
|
254
|
+
angle = fmod(angle - startAngle, pi2)
|
|
255
|
+
if (angle < 0 and angle + pi2 or angle) <= centerAngle then
|
|
256
|
+
targetCollection[targetCollectionNextIndex] = ____exports.Unit:of(unit)
|
|
257
|
+
targetCollectionNextIndex = targetCollectionNextIndex + 1
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
end)
|
|
261
|
+
local function deg2rad(angle)
|
|
262
|
+
angle = fmod(angle, 360)
|
|
263
|
+
return rad(angle < 0 and angle + 360 or angle)
|
|
264
|
+
end
|
|
265
|
+
____exports.UnitTriggerEvent = __TS__Class()
|
|
266
|
+
local UnitTriggerEvent = ____exports.UnitTriggerEvent
|
|
267
|
+
UnitTriggerEvent.name = "UnitTriggerEvent"
|
|
268
|
+
__TS__ClassExtends(UnitTriggerEvent, TriggerEvent)
|
|
269
|
+
function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
270
|
+
TriggerEvent.prototype.____constructor(
|
|
271
|
+
self,
|
|
272
|
+
function(trigger) return TriggerRegisterAnyUnitEventBJ(trigger, eventType) end,
|
|
273
|
+
c
|
|
274
|
+
)
|
|
275
|
+
end
|
|
276
|
+
local function dispatch(event, idGetter, argsGetter)
|
|
277
|
+
local initialized = false
|
|
278
|
+
local x = {}
|
|
279
|
+
return setmetatable(
|
|
280
|
+
x,
|
|
281
|
+
{
|
|
282
|
+
__index = function(self, id)
|
|
283
|
+
if type(id) ~= "number" then
|
|
284
|
+
return event[id]
|
|
285
|
+
end
|
|
286
|
+
if not initialized then
|
|
287
|
+
local invoke = Event.invoke
|
|
288
|
+
event:addListener(function(...)
|
|
289
|
+
local id = idGetter(...)
|
|
290
|
+
local dispatched = rawget(self, id)
|
|
291
|
+
if dispatched ~= nil then
|
|
292
|
+
invoke(
|
|
293
|
+
dispatched,
|
|
294
|
+
argsGetter(...)
|
|
295
|
+
)
|
|
296
|
+
end
|
|
297
|
+
end)
|
|
298
|
+
initialized = true
|
|
299
|
+
end
|
|
300
|
+
local dispatched = __TS__New(Event)
|
|
301
|
+
rawset(self, id, dispatched)
|
|
302
|
+
return dispatched
|
|
303
|
+
end,
|
|
304
|
+
__newindex = event
|
|
305
|
+
}
|
|
306
|
+
)
|
|
307
|
+
end
|
|
308
|
+
local function dispatchId(event)
|
|
309
|
+
return dispatch(
|
|
310
|
+
event,
|
|
311
|
+
function(unit, id, ...) return id end,
|
|
312
|
+
function(unit, id, ...) return unit, ... end
|
|
313
|
+
)
|
|
314
|
+
end
|
|
315
|
+
local function dispatchAbility(event)
|
|
316
|
+
local initialized = false
|
|
317
|
+
return setmetatable(
|
|
318
|
+
{},
|
|
319
|
+
{
|
|
320
|
+
__index = function(self, id)
|
|
321
|
+
if type(id) ~= "number" then
|
|
322
|
+
return event[id]
|
|
323
|
+
end
|
|
324
|
+
if not initialized then
|
|
325
|
+
local invoke = Event.invoke
|
|
326
|
+
event:addListener(function(unit, ability, ...)
|
|
327
|
+
local dispatched = rawget(self, ability.typeId)
|
|
328
|
+
if dispatched ~= nil then
|
|
329
|
+
invoke(dispatched, unit, ability, ...)
|
|
330
|
+
end
|
|
331
|
+
end)
|
|
332
|
+
initialized = true
|
|
333
|
+
end
|
|
334
|
+
local dispatched = __TS__New(Event)
|
|
335
|
+
rawset(self, id, dispatched)
|
|
336
|
+
return dispatched
|
|
337
|
+
end,
|
|
338
|
+
__newindex = event
|
|
339
|
+
}
|
|
340
|
+
)
|
|
341
|
+
end
|
|
342
|
+
local function damageEventPreventDeath(self, callback, ...)
|
|
343
|
+
if self[0] ~= nil then
|
|
344
|
+
return
|
|
345
|
+
end
|
|
346
|
+
rawset(self, 0, callback)
|
|
347
|
+
local parametersLength = select("#", ...)
|
|
348
|
+
rawset(self, 1, parametersLength)
|
|
349
|
+
for i = 1, parametersLength do
|
|
350
|
+
rawset(self, 1 + i, (select(i, ...)))
|
|
351
|
+
end
|
|
352
|
+
end
|
|
353
|
+
local damageSetters = {amount = BlzSetEventDamage, attackType = BlzSetEventAttackType, damageType = BlzSetEventDamageType, weaponType = BlzSetEventWeaponType}
|
|
354
|
+
local jlimitopByOperator = {
|
|
355
|
+
[0] = LESS_THAN_OR_EQUAL,
|
|
356
|
+
[1] = LESS_THAN_OR_EQUAL,
|
|
357
|
+
[2] = EQUAL,
|
|
358
|
+
[3] = GREATER_THAN_OR_EQUAL,
|
|
359
|
+
[4] = GREATER_THAN_OR_EQUAL,
|
|
360
|
+
[5] = NOT_EQUAL
|
|
361
|
+
}
|
|
362
|
+
local modifiers = {
|
|
363
|
+
speed = function(unit, value)
|
|
364
|
+
SetUnitMoveSpeed(
|
|
365
|
+
unit,
|
|
366
|
+
GetUnitMoveSpeed(unit) + value
|
|
367
|
+
)
|
|
368
|
+
end,
|
|
369
|
+
armor = function(unit, value)
|
|
370
|
+
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
371
|
+
assert(UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId))
|
|
372
|
+
end
|
|
373
|
+
local ability = assert(BlzGetUnitAbility(unit, armorBonusAbilityId))
|
|
374
|
+
assert(BlzSetAbilityRealLevelField(
|
|
375
|
+
ability,
|
|
376
|
+
armorBonusField,
|
|
377
|
+
0,
|
|
378
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
379
|
+
))
|
|
380
|
+
end
|
|
381
|
+
}
|
|
382
|
+
local getters = {
|
|
383
|
+
speed = function(unit, delta)
|
|
384
|
+
return GetUnitMoveSpeed(unit) + delta
|
|
385
|
+
end,
|
|
386
|
+
armor = function(unit)
|
|
387
|
+
return BlzGetUnitArmor(unit)
|
|
388
|
+
end
|
|
389
|
+
}
|
|
390
|
+
local weaponGetters = {
|
|
391
|
+
index = function(self, handle, index)
|
|
392
|
+
return index
|
|
393
|
+
end,
|
|
394
|
+
cooldown = function(self, handle, index)
|
|
395
|
+
return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, index)
|
|
396
|
+
end,
|
|
397
|
+
projectileArc = function(self, handle, index)
|
|
398
|
+
return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, index)
|
|
399
|
+
end,
|
|
400
|
+
projectileArt = function(self, handle, index)
|
|
401
|
+
return BlzGetUnitWeaponStringField(handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, index)
|
|
402
|
+
end,
|
|
403
|
+
projectileSpeed = function(self, handle, index)
|
|
404
|
+
return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, index)
|
|
405
|
+
end,
|
|
406
|
+
attackPoint = function(self, handle, index)
|
|
407
|
+
return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, index)
|
|
408
|
+
end
|
|
409
|
+
}
|
|
410
|
+
local weaponSetters = {
|
|
411
|
+
cooldown = function(self, handle, index, value)
|
|
412
|
+
assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, index, value))
|
|
413
|
+
end,
|
|
414
|
+
projectileArc = function(self, handle, index, value)
|
|
415
|
+
assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, index, value))
|
|
416
|
+
end,
|
|
417
|
+
projectileArt = function(self, handle, index, value)
|
|
418
|
+
assert(BlzSetUnitWeaponStringField(handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, index, value))
|
|
419
|
+
end,
|
|
420
|
+
projectileSpeed = function(self, handle, index, value)
|
|
421
|
+
assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, index, value))
|
|
422
|
+
end,
|
|
423
|
+
attackPoint = function(self, handle, index, value)
|
|
424
|
+
assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, index, value))
|
|
425
|
+
end
|
|
426
|
+
}
|
|
427
|
+
local weaponMetatable = {
|
|
428
|
+
__index = function(self, key)
|
|
429
|
+
return weaponGetters[key](weaponGetters, self.h, self.i)
|
|
430
|
+
end,
|
|
431
|
+
__newindex = function(self, key, value)
|
|
432
|
+
weaponSetters[key](weaponSetters, self.h, self.i, value)
|
|
433
|
+
end
|
|
434
|
+
}
|
|
435
|
+
local unitInventorySize = UnitInventorySize
|
|
436
|
+
local unitItemInSlot = UnitItemInSlot
|
|
437
|
+
local getItemAbility = BlzGetItemAbility
|
|
438
|
+
local getUnitAbility = BlzGetUnitAbility
|
|
439
|
+
local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
|
|
440
|
+
local getAbilityId = BlzGetAbilityId
|
|
441
|
+
local getAbilityName = GetAbilityName
|
|
442
|
+
local unitAddAbility = UnitAddAbility
|
|
443
|
+
local getUnitGoldCost = GetUnitGoldCost
|
|
444
|
+
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
+
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
+
local unitAddItem = UnitAddItem
|
|
447
|
+
local unitRemoveAbility = UnitRemoveAbility
|
|
448
|
+
local function retrieveAbility(unit, ability, abilityId)
|
|
449
|
+
if ability == nil then
|
|
450
|
+
return __TS__New(
|
|
451
|
+
UnrecognizedAbility,
|
|
452
|
+
abilityId,
|
|
453
|
+
____exports.Unit:of(unit)
|
|
454
|
+
)
|
|
455
|
+
end
|
|
456
|
+
if not unitAddAbility(unit, abilityId) then
|
|
457
|
+
if getUnitAbility(unit, abilityId) == ability then
|
|
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)
|
|
469
|
+
if getItemAbility(item, abilityId) == ability then
|
|
470
|
+
return ItemAbility:of(
|
|
471
|
+
ability,
|
|
472
|
+
abilityId,
|
|
473
|
+
Item:of(item)
|
|
474
|
+
)
|
|
475
|
+
end
|
|
476
|
+
end
|
|
477
|
+
return UnitAbility:of(
|
|
478
|
+
ability,
|
|
479
|
+
abilityId,
|
|
480
|
+
____exports.Unit:of(unit)
|
|
481
|
+
)
|
|
482
|
+
end
|
|
483
|
+
local fieldGetters = {
|
|
484
|
+
unitintegerfield = function(unit, field)
|
|
485
|
+
return getUnitIntegerField(unit.handle, field)
|
|
486
|
+
end,
|
|
487
|
+
unitrealfield = function(unit, field)
|
|
488
|
+
return getUnitRealField(unit.handle, field)
|
|
489
|
+
end,
|
|
490
|
+
unitbooleanfield = function(unit, field)
|
|
491
|
+
return getUnitBooleanField(unit.handle, field)
|
|
492
|
+
end,
|
|
493
|
+
unitstringfield = function(unit, field)
|
|
494
|
+
return getUnitStringField(unit.handle, field)
|
|
495
|
+
end
|
|
496
|
+
}
|
|
497
|
+
local fieldSetters = {
|
|
498
|
+
unitintegerfield = function(unit, field, value)
|
|
499
|
+
return setUnitIntegerField(unit.handle, field, value)
|
|
500
|
+
end,
|
|
501
|
+
unitrealfield = function(unit, field, value)
|
|
502
|
+
return setUnitRealField(unit.handle, field, value)
|
|
503
|
+
end,
|
|
504
|
+
unitbooleanfield = function(unit, field, value)
|
|
505
|
+
return setUnitBooleanField(unit.handle, field, value)
|
|
506
|
+
end,
|
|
507
|
+
unitstringfield = function(unit, field, value)
|
|
508
|
+
return setUnitStringField(unit.handle, field, value)
|
|
509
|
+
end
|
|
510
|
+
}
|
|
511
|
+
local dummies = {}
|
|
512
|
+
for ____, player in ipairs(Player.all) do
|
|
513
|
+
local dummy = assert(createUnit(
|
|
514
|
+
player.handle,
|
|
515
|
+
dummyUnitId,
|
|
516
|
+
0,
|
|
517
|
+
0,
|
|
518
|
+
270
|
|
519
|
+
))
|
|
520
|
+
ShowUnit(dummy, false)
|
|
521
|
+
dummies[player] = dummy
|
|
522
|
+
end
|
|
523
|
+
____exports.Unit = __TS__Class()
|
|
524
|
+
local Unit = ____exports.Unit
|
|
525
|
+
Unit.name = "Unit"
|
|
526
|
+
__TS__ClassExtends(Unit, Handle)
|
|
527
|
+
function Unit.prototype.____constructor(self, handle)
|
|
528
|
+
Handle.prototype.____constructor(self, handle)
|
|
529
|
+
self._owner = Player:of(getOwningPlayer(handle))
|
|
530
|
+
assert(unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId))
|
|
531
|
+
assert(unitAddAbility(handle, morphDetectAbilityId))
|
|
532
|
+
if unitAddAbility(
|
|
533
|
+
handle,
|
|
534
|
+
fourCC("Amrf")
|
|
535
|
+
) then
|
|
536
|
+
assert(unitRemoveAbility(
|
|
537
|
+
handle,
|
|
538
|
+
fourCC("Amrf")
|
|
539
|
+
))
|
|
540
|
+
end
|
|
541
|
+
local ____ = self.abilities
|
|
542
|
+
end
|
|
543
|
+
function Unit.prototype.getEvent(self, event, collector)
|
|
544
|
+
self.events = self.events or ({})
|
|
545
|
+
local eventId = GetHandleId(event)
|
|
546
|
+
if not self.events[eventId] then
|
|
547
|
+
self.events[eventId] = __TS__New(
|
|
548
|
+
TriggerEvent,
|
|
549
|
+
function(trigger)
|
|
550
|
+
TriggerRegisterUnitEvent(trigger, self.handle, event)
|
|
551
|
+
end,
|
|
552
|
+
collector or (function() return {} end)
|
|
553
|
+
)
|
|
554
|
+
end
|
|
555
|
+
return self.events[eventId]
|
|
556
|
+
end
|
|
557
|
+
function Unit.prototype.onDestroy(self)
|
|
558
|
+
local handle = self.handle
|
|
559
|
+
if not self._owner then
|
|
560
|
+
self._owner = Player:of(getOwningPlayer(handle))
|
|
561
|
+
end
|
|
562
|
+
local abilities = self.abilities
|
|
563
|
+
for ____, ability in ipairs(abilities) do
|
|
564
|
+
ability:destroy()
|
|
565
|
+
end
|
|
566
|
+
__TS__ArraySetLength(abilities, 0)
|
|
567
|
+
for ____, player in ipairs(Player.all) do
|
|
568
|
+
if self:isSelected(player) then
|
|
569
|
+
Event.invoke(____exports.Unit.onDeselect, self, player)
|
|
570
|
+
end
|
|
571
|
+
end
|
|
572
|
+
if self.events then
|
|
573
|
+
for ____, event in pairs(self.events) do
|
|
574
|
+
event:destroy()
|
|
575
|
+
end
|
|
576
|
+
end
|
|
577
|
+
local eventsToDestroy = self._eventsToDestroy
|
|
578
|
+
if eventsToDestroy ~= nil then
|
|
579
|
+
forEach(eventsToDestroy, "destroy")
|
|
580
|
+
end
|
|
581
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
|
|
582
|
+
unitRemoveAbility(handle, leaveDetectAbilityId)
|
|
583
|
+
removeUnit(handle)
|
|
584
|
+
end
|
|
585
|
+
return Handle.prototype.onDestroy(self)
|
|
586
|
+
end
|
|
587
|
+
function Unit.prototype.addAttackHandler(self, condition, action)
|
|
588
|
+
local handler = {
|
|
589
|
+
condition,
|
|
590
|
+
warpack.wrapThread(action)
|
|
591
|
+
}
|
|
592
|
+
local handlers = self._attackHandlers or ({})
|
|
593
|
+
handlers[#handlers + 1] = handler
|
|
594
|
+
self._attackHandlers = handlers
|
|
595
|
+
if #handlers == 1 then
|
|
596
|
+
local handle = self.handle
|
|
597
|
+
assert(unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId))
|
|
598
|
+
end
|
|
599
|
+
return handler
|
|
600
|
+
end
|
|
601
|
+
function Unit.prototype.removeAttackHandler(self, handler)
|
|
602
|
+
local handlers = self._attackHandlers
|
|
603
|
+
if handlers then
|
|
604
|
+
for i = 1, #handlers do
|
|
605
|
+
if handlers[i] == handler then
|
|
606
|
+
tremove(handlers, i)
|
|
607
|
+
return true
|
|
608
|
+
end
|
|
609
|
+
end
|
|
610
|
+
end
|
|
611
|
+
return false
|
|
612
|
+
end
|
|
613
|
+
function Unit.prototype.addModifier(self, property, modifier)
|
|
614
|
+
local handle = self.handle
|
|
615
|
+
local deltas = self._deltas
|
|
616
|
+
local delta = deltas[property] or 0
|
|
617
|
+
local addition = modifier(getters[property](handle, delta))
|
|
618
|
+
modifiers[property](handle, addition)
|
|
619
|
+
deltas[property] = delta + addition
|
|
620
|
+
return {destroy = function()
|
|
621
|
+
modifiers[property](handle, -addition)
|
|
622
|
+
deltas[property] = (deltas[property] or 0) - addition
|
|
623
|
+
end}
|
|
624
|
+
end
|
|
625
|
+
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
626
|
+
local ____combatClassification_0 = combatClassification
|
|
627
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_0 == ____combatClassification_0
|
|
628
|
+
end
|
|
629
|
+
function Unit.prototype.addClassification(self, classification)
|
|
630
|
+
return unitAddType(self.handle, classification)
|
|
631
|
+
end
|
|
632
|
+
function Unit.prototype.removeClassification(self, classification)
|
|
633
|
+
return unitRemoveType(self.handle, classification)
|
|
634
|
+
end
|
|
635
|
+
function Unit.prototype.hasClassification(self, classification)
|
|
636
|
+
return isUnitType(self.handle, classification)
|
|
637
|
+
end
|
|
638
|
+
function Unit.prototype.isVisibleTo(self, player)
|
|
639
|
+
return isUnitVisible(self.handle, player.handle)
|
|
640
|
+
end
|
|
641
|
+
function Unit.prototype.isInvisibleTo(self, player)
|
|
642
|
+
return isUnitInvisible(self.handle, player.handle)
|
|
643
|
+
end
|
|
644
|
+
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
645
|
+
local ____temp_1
|
|
646
|
+
if type(x) == "number" then
|
|
647
|
+
____temp_1 = isUnitInRangeXY(self.handle, x, y, range)
|
|
648
|
+
else
|
|
649
|
+
____temp_1 = isUnitInRange(self.handle, x.handle, y)
|
|
650
|
+
end
|
|
651
|
+
return ____temp_1
|
|
652
|
+
end
|
|
653
|
+
function Unit.prototype.isAllyOf(self, unit)
|
|
654
|
+
return isUnitAlly(
|
|
655
|
+
self.handle,
|
|
656
|
+
getOwningPlayer(unit.handle)
|
|
657
|
+
)
|
|
658
|
+
end
|
|
659
|
+
function Unit.prototype.isEnemyOf(self, unit)
|
|
660
|
+
return isUnitEnemy(
|
|
661
|
+
self.handle,
|
|
662
|
+
getOwningPlayer(unit.handle)
|
|
663
|
+
)
|
|
664
|
+
end
|
|
665
|
+
function Unit.prototype.playAnimation(self, animation, rarity)
|
|
666
|
+
if type(animation) == "number" then
|
|
667
|
+
setUnitAnimationByIndex(self.handle, animation)
|
|
668
|
+
elseif rarity then
|
|
669
|
+
setUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
670
|
+
else
|
|
671
|
+
setUnitAnimation(self.handle, animation)
|
|
672
|
+
end
|
|
673
|
+
end
|
|
674
|
+
function Unit.prototype.queueAnimation(self, animation)
|
|
675
|
+
queueUnitAnimation(self.handle, animation)
|
|
676
|
+
end
|
|
677
|
+
function Unit.prototype.setPosition(self, x, y)
|
|
678
|
+
setUnitPosition(self.handle, x, y)
|
|
679
|
+
end
|
|
680
|
+
function Unit.prototype.isSelected(self, player)
|
|
681
|
+
return IsUnitSelected(self.handle, player.handle)
|
|
682
|
+
end
|
|
683
|
+
function Unit.prototype.explode(self)
|
|
684
|
+
setUnitExploded(self.handle, true)
|
|
685
|
+
killUnit(self.handle)
|
|
686
|
+
end
|
|
687
|
+
function Unit.prototype.kill(self)
|
|
688
|
+
killUnit(self.handle)
|
|
689
|
+
end
|
|
690
|
+
function Unit.prototype.revive(self, pos, doEffect)
|
|
691
|
+
ReviveHero(self.handle, pos.x, pos.y, doEffect)
|
|
692
|
+
end
|
|
693
|
+
function Unit.prototype.healTarget(self, target, amount)
|
|
694
|
+
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
695
|
+
target.health = target.health + 0.65 * amount
|
|
696
|
+
else
|
|
697
|
+
target.health = target.health + amount
|
|
698
|
+
end
|
|
699
|
+
end
|
|
700
|
+
function Unit.prototype.useItem(self, item)
|
|
701
|
+
return UnitUseItem(self.handle, item.handle)
|
|
702
|
+
end
|
|
703
|
+
function Unit.prototype.issueImmediateOrder(self, order)
|
|
704
|
+
return IssueImmediateOrderById(self.handle, order)
|
|
705
|
+
end
|
|
706
|
+
function Unit.prototype.issuePointOrder(self, order, x, y)
|
|
707
|
+
return IssuePointOrderById(self.handle, order, x, y)
|
|
708
|
+
end
|
|
709
|
+
function Unit.prototype.issueTargetOrder(self, order, target)
|
|
710
|
+
return IssueTargetOrderById(self.handle, order, target.handle)
|
|
711
|
+
end
|
|
712
|
+
function Unit.prototype.queueImmediateOrder(self, order)
|
|
713
|
+
return BlzQueueImmediateOrderById(self.handle, order)
|
|
714
|
+
end
|
|
715
|
+
function Unit.prototype.queuePointOrder(self, order, x, y)
|
|
716
|
+
return BlzQueuePointOrderById(self.handle, order, x, y)
|
|
717
|
+
end
|
|
718
|
+
function Unit.prototype.queueTargetOrder(self, order, target)
|
|
719
|
+
return BlzQueueTargetOrderById(self.handle, order, target.handle)
|
|
720
|
+
end
|
|
721
|
+
function Unit.prototype.addItem(self, item)
|
|
722
|
+
return UnitAddItem(self.handle, item.handle)
|
|
723
|
+
end
|
|
724
|
+
function Unit.prototype.dropItemTarget(self, item, target)
|
|
725
|
+
return UnitDropItemTarget(self.handle, item.handle, target.handle)
|
|
726
|
+
end
|
|
727
|
+
function Unit.prototype.dropItemSlot(self, item, slot)
|
|
728
|
+
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
729
|
+
end
|
|
730
|
+
function Unit.prototype.itemInSlot(self, slot)
|
|
731
|
+
return Item:of(UnitItemInSlot(self.handle, slot))
|
|
732
|
+
end
|
|
733
|
+
function Unit.prototype.addAbility(self, abilityId)
|
|
734
|
+
if unitAddAbility(self.handle, abilityId) then
|
|
735
|
+
local ability = UnitAbility:of(
|
|
736
|
+
checkNotNull(getUnitAbility(self.handle, abilityId)),
|
|
737
|
+
abilityId,
|
|
738
|
+
self
|
|
739
|
+
)
|
|
740
|
+
local abilities = self.abilities
|
|
741
|
+
abilities[#abilities + 1] = ability
|
|
742
|
+
return ability
|
|
743
|
+
end
|
|
744
|
+
return nil
|
|
745
|
+
end
|
|
746
|
+
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
747
|
+
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
748
|
+
end
|
|
749
|
+
function Unit.prototype.setAbilityLevel(self, abilityId, level)
|
|
750
|
+
return SetUnitAbilityLevel(self.handle, abilityId, level)
|
|
751
|
+
end
|
|
752
|
+
function Unit.prototype.getAbilityLevel(self, abilityId)
|
|
753
|
+
return getUnitAbilityLevel(self.handle, abilityId)
|
|
754
|
+
end
|
|
755
|
+
function Unit.prototype.hasAbility(self, abilityId)
|
|
756
|
+
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
757
|
+
end
|
|
758
|
+
function Unit.prototype.getAbilityById(self, abilityId)
|
|
759
|
+
local handle = self.handle
|
|
760
|
+
if unitAddAbility(handle, abilityId) then
|
|
761
|
+
assert(unitRemoveAbility(handle, abilityId))
|
|
762
|
+
return nil
|
|
763
|
+
end
|
|
764
|
+
return UnitAbility:of(
|
|
765
|
+
getUnitAbility(self.handle, abilityId),
|
|
766
|
+
abilityId,
|
|
767
|
+
self
|
|
768
|
+
)
|
|
769
|
+
end
|
|
770
|
+
function Unit.prototype.removeAbility(self, abilityId)
|
|
771
|
+
if unitRemoveAbility(self.handle, abilityId) then
|
|
772
|
+
local abilities = self.abilities
|
|
773
|
+
for i = 1, #abilities do
|
|
774
|
+
if abilities[i].typeId == abilityId then
|
|
775
|
+
abilities[i]:destroy()
|
|
776
|
+
tremove(abilities, i)
|
|
777
|
+
return true
|
|
778
|
+
end
|
|
779
|
+
end
|
|
780
|
+
return true
|
|
781
|
+
end
|
|
782
|
+
return false
|
|
783
|
+
end
|
|
784
|
+
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
|
+
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
|
+
end
|
|
787
|
+
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
|
+
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
|
+
end
|
|
790
|
+
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
791
|
+
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
792
|
+
end
|
|
793
|
+
function Unit.prototype.interruptAttack(self)
|
|
794
|
+
unitInterruptAttack(self.handle)
|
|
795
|
+
end
|
|
796
|
+
function Unit.prototype.interruptCast(self, abilityId)
|
|
797
|
+
unitDisableAbility(self.handle, abilityId, true, false)
|
|
798
|
+
unitDisableAbility(self.handle, abilityId, false, false)
|
|
799
|
+
end
|
|
800
|
+
function Unit.prototype.getDistanceTo(self, target)
|
|
801
|
+
local handle = self.handle
|
|
802
|
+
local targetHandle = target.handle
|
|
803
|
+
if targetHandle then
|
|
804
|
+
local dx = getUnitX(targetHandle) - getUnitX(handle)
|
|
805
|
+
local dy = getUnitY(targetHandle) - getUnitY(handle)
|
|
806
|
+
return sqrt(dx * dx + dy * dy)
|
|
807
|
+
else
|
|
808
|
+
local dx = target.x - getUnitX(handle)
|
|
809
|
+
local dy = target.y - getUnitY(handle)
|
|
810
|
+
return sqrt(dx * dx + dy * dy)
|
|
811
|
+
end
|
|
812
|
+
end
|
|
813
|
+
function Unit.prototype.getCollisionDistanceTo(self, targetUnitOrX, targetY)
|
|
814
|
+
local handle = self.handle
|
|
815
|
+
if targetY == nil then
|
|
816
|
+
local targetHandle = targetUnitOrX.handle
|
|
817
|
+
local dx = getUnitX(targetHandle) - getUnitX(handle)
|
|
818
|
+
local dy = getUnitY(targetHandle) - getUnitY(handle)
|
|
819
|
+
return max(
|
|
820
|
+
0,
|
|
821
|
+
sqrt(dx * dx + dy * dy) - getUnitCollisionSize(targetHandle) - getUnitCollisionSize(handle)
|
|
822
|
+
)
|
|
823
|
+
else
|
|
824
|
+
local dx = targetUnitOrX - getUnitX(handle)
|
|
825
|
+
local dy = targetY - getUnitY(handle)
|
|
826
|
+
return max(
|
|
827
|
+
0,
|
|
828
|
+
sqrt(dx * dx + dy * dy) - getUnitCollisionSize(handle)
|
|
829
|
+
)
|
|
830
|
+
end
|
|
831
|
+
end
|
|
832
|
+
function Unit.prototype.resetCooldown(self)
|
|
833
|
+
UnitResetCooldown(self.handle)
|
|
834
|
+
end
|
|
835
|
+
function Unit.prototype.incrementDisableAutoAttackCounter(self)
|
|
836
|
+
unitDisableAbility(
|
|
837
|
+
self.handle,
|
|
838
|
+
fourCC("Aatk"),
|
|
839
|
+
true,
|
|
840
|
+
false
|
|
841
|
+
)
|
|
842
|
+
end
|
|
843
|
+
function Unit.prototype.decrementDisableAutoAttackCounter(self)
|
|
844
|
+
unitDisableAbility(
|
|
845
|
+
self.handle,
|
|
846
|
+
fourCC("Aatk"),
|
|
847
|
+
false,
|
|
848
|
+
false
|
|
849
|
+
)
|
|
850
|
+
end
|
|
851
|
+
function Unit.prototype.pauseEx(self)
|
|
852
|
+
self:incrementStunCounter()
|
|
853
|
+
end
|
|
854
|
+
function Unit.prototype.unpauseEx(self)
|
|
855
|
+
self:decrementStunCounter()
|
|
856
|
+
end
|
|
857
|
+
function Unit.prototype.incrementStunCounter(self)
|
|
858
|
+
local stunCounter = self[101] or 0
|
|
859
|
+
if not self[100] or stunCounter >= 0 then
|
|
860
|
+
BlzPauseUnitEx(self.handle, true)
|
|
861
|
+
end
|
|
862
|
+
self[101] = stunCounter + 1
|
|
863
|
+
end
|
|
864
|
+
function Unit.prototype.decrementStunCounter(self)
|
|
865
|
+
local stunCounter = self[101] or 0
|
|
866
|
+
if not self[100] or stunCounter >= 1 then
|
|
867
|
+
BlzPauseUnitEx(self.handle, false)
|
|
868
|
+
end
|
|
869
|
+
self[101] = stunCounter - 1
|
|
870
|
+
end
|
|
871
|
+
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
872
|
+
local handle = skinId and BlzCreateUnitWithSkin(
|
|
873
|
+
owner.handle,
|
|
874
|
+
id,
|
|
875
|
+
x,
|
|
876
|
+
y,
|
|
877
|
+
facing,
|
|
878
|
+
skinId
|
|
879
|
+
) or CreateUnit(
|
|
880
|
+
owner.handle,
|
|
881
|
+
id,
|
|
882
|
+
x,
|
|
883
|
+
y,
|
|
884
|
+
facing
|
|
885
|
+
)
|
|
886
|
+
return handle and self:of(handle)
|
|
887
|
+
end
|
|
888
|
+
function Unit.forAll(self, consumer)
|
|
889
|
+
message = nil
|
|
890
|
+
gConsumer = consumer
|
|
891
|
+
groupEnumUnitsInRange(
|
|
892
|
+
dummyGroup,
|
|
893
|
+
0,
|
|
894
|
+
0,
|
|
895
|
+
999999,
|
|
896
|
+
invokeConsumer
|
|
897
|
+
)
|
|
898
|
+
if message then
|
|
899
|
+
error(message)
|
|
900
|
+
end
|
|
901
|
+
end
|
|
902
|
+
function Unit.getAll(self, predicate)
|
|
903
|
+
targetCollection = {}
|
|
904
|
+
targetCollectionNextIndex = 1
|
|
905
|
+
enumPredicate = predicate
|
|
906
|
+
local collect = predicate and collectIntoTargetWithPredicate or collectIntoTarget
|
|
907
|
+
for ____, player in ipairs(Player.all) do
|
|
908
|
+
groupEnumUnitsOfPlayer(dummyGroup, player.handle, collect)
|
|
909
|
+
end
|
|
910
|
+
return targetCollection
|
|
911
|
+
end
|
|
912
|
+
function Unit.getOwnedBy(self, player, predicate)
|
|
913
|
+
targetCollection = {}
|
|
914
|
+
targetCollectionNextIndex = 1
|
|
915
|
+
enumPredicate = predicate
|
|
916
|
+
groupEnumUnitsOfPlayer(dummyGroup, player.handle, predicate and collectIntoTargetWithPredicate or collectIntoTarget)
|
|
917
|
+
return targetCollection
|
|
918
|
+
end
|
|
919
|
+
function Unit.getInRect(self, rect, predicate)
|
|
920
|
+
targetCollection = {}
|
|
921
|
+
targetCollectionNextIndex = 1
|
|
922
|
+
enumPredicate = predicate
|
|
923
|
+
groupEnumUnitsInRect(dummyGroup, rect.handle, predicate and collectIntoTargetWithPredicate or collectIntoTarget)
|
|
924
|
+
return targetCollection
|
|
925
|
+
end
|
|
926
|
+
function Unit.getInRange(self, x, y, range, predicate)
|
|
927
|
+
targetCollection = {}
|
|
928
|
+
targetCollectionNextIndex = 1
|
|
929
|
+
enumPredicate = predicate
|
|
930
|
+
groupEnumUnitsInRange(
|
|
931
|
+
dummyGroup,
|
|
932
|
+
x,
|
|
933
|
+
y,
|
|
934
|
+
range,
|
|
935
|
+
predicate and collectIntoTargetWithPredicate or collectIntoTarget
|
|
936
|
+
)
|
|
937
|
+
return targetCollection
|
|
938
|
+
end
|
|
939
|
+
function Unit.getInCollisionRange(self, x, y, range, predicate)
|
|
940
|
+
targetCollection = {}
|
|
941
|
+
targetCollectionNextIndex = 1
|
|
942
|
+
centerX = x
|
|
943
|
+
centerY = y
|
|
944
|
+
enumRange = range
|
|
945
|
+
enumPredicate = predicate
|
|
946
|
+
groupEnumUnitsInRange(
|
|
947
|
+
dummyGroup,
|
|
948
|
+
centerX,
|
|
949
|
+
centerY,
|
|
950
|
+
range + 256,
|
|
951
|
+
predicate and collectIntoTargetCollisionWithPredicate or collectIntoTargetCollision
|
|
952
|
+
)
|
|
953
|
+
return targetCollection
|
|
954
|
+
end
|
|
955
|
+
function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
956
|
+
posX = pos.x
|
|
957
|
+
posY = pos.y
|
|
958
|
+
startAngle = deg2rad(offsetAngle)
|
|
959
|
+
centerAngle = deg2rad(centralAngle)
|
|
960
|
+
targetCollection = {}
|
|
961
|
+
targetCollectionNextIndex = 1
|
|
962
|
+
groupEnumUnitsInRange(
|
|
963
|
+
dummyGroup,
|
|
964
|
+
pos.x,
|
|
965
|
+
pos.y,
|
|
966
|
+
range,
|
|
967
|
+
collectSectorIntoTarget
|
|
968
|
+
)
|
|
969
|
+
return targetCollection
|
|
970
|
+
end
|
|
971
|
+
function Unit.getSelectionOf(self, player)
|
|
972
|
+
targetCollection = {}
|
|
973
|
+
targetCollectionNextIndex = 1
|
|
974
|
+
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
975
|
+
return targetCollection
|
|
976
|
+
end
|
|
977
|
+
function Unit.prototype.getField(self, field)
|
|
978
|
+
local fieldType = match(
|
|
979
|
+
____tostring(field),
|
|
980
|
+
"^(.-):"
|
|
981
|
+
)
|
|
982
|
+
return fieldGetters[fieldType](self, field)
|
|
983
|
+
end
|
|
984
|
+
function Unit.prototype.setField(self, field, value)
|
|
985
|
+
local fieldType = match(
|
|
986
|
+
____tostring(field),
|
|
987
|
+
"^(.-):"
|
|
988
|
+
)
|
|
989
|
+
return fieldSetters[fieldType](self, field, value)
|
|
990
|
+
end
|
|
991
|
+
function Unit.prototype.__tostring(self)
|
|
992
|
+
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
993
|
+
end
|
|
994
|
+
__TS__SetDescriptor(
|
|
995
|
+
Unit.prototype,
|
|
996
|
+
"_deltas",
|
|
997
|
+
{get = function(self)
|
|
998
|
+
local deltas = {}
|
|
999
|
+
rawset(self, "_deltas", deltas)
|
|
1000
|
+
return deltas
|
|
1001
|
+
end},
|
|
1002
|
+
true
|
|
1003
|
+
)
|
|
1004
|
+
__TS__SetDescriptor(
|
|
1005
|
+
Unit.prototype,
|
|
1006
|
+
"skinId",
|
|
1007
|
+
{
|
|
1008
|
+
get = function(self)
|
|
1009
|
+
return BlzGetUnitSkin(self.handle)
|
|
1010
|
+
end,
|
|
1011
|
+
set = function(self, v)
|
|
1012
|
+
BlzSetUnitSkin(self.handle, v)
|
|
1013
|
+
end
|
|
1014
|
+
},
|
|
1015
|
+
true
|
|
1016
|
+
)
|
|
1017
|
+
__TS__SetDescriptor(
|
|
1018
|
+
Unit.prototype,
|
|
1019
|
+
"typeId",
|
|
1020
|
+
{get = function(self)
|
|
1021
|
+
return getUnitTypeId(self.handle)
|
|
1022
|
+
end},
|
|
1023
|
+
true
|
|
1024
|
+
)
|
|
1025
|
+
__TS__SetDescriptor(
|
|
1026
|
+
Unit.prototype,
|
|
1027
|
+
"isHero",
|
|
1028
|
+
{get = function(self)
|
|
1029
|
+
return isHeroUnitId(getUnitTypeId(self.handle))
|
|
1030
|
+
end},
|
|
1031
|
+
true
|
|
1032
|
+
)
|
|
1033
|
+
__TS__SetDescriptor(
|
|
1034
|
+
Unit.prototype,
|
|
1035
|
+
"isAlive",
|
|
1036
|
+
{get = function(self)
|
|
1037
|
+
return unitAlive(self.handle)
|
|
1038
|
+
end},
|
|
1039
|
+
true
|
|
1040
|
+
)
|
|
1041
|
+
__TS__SetDescriptor(
|
|
1042
|
+
Unit.prototype,
|
|
1043
|
+
"isDead",
|
|
1044
|
+
{get = function(self)
|
|
1045
|
+
return not unitAlive(self.handle)
|
|
1046
|
+
end},
|
|
1047
|
+
true
|
|
1048
|
+
)
|
|
1049
|
+
__TS__SetDescriptor(
|
|
1050
|
+
Unit.prototype,
|
|
1051
|
+
"isIllusion",
|
|
1052
|
+
{get = function(self)
|
|
1053
|
+
return isUnitIllusion(self.handle)
|
|
1054
|
+
end},
|
|
1055
|
+
true
|
|
1056
|
+
)
|
|
1057
|
+
__TS__SetDescriptor(
|
|
1058
|
+
Unit.prototype,
|
|
1059
|
+
"combatClassifications",
|
|
1060
|
+
{
|
|
1061
|
+
get = function(self)
|
|
1062
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS)
|
|
1063
|
+
end,
|
|
1064
|
+
set = function(self, combatClassifications)
|
|
1065
|
+
setUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS, combatClassifications)
|
|
1066
|
+
end
|
|
1067
|
+
},
|
|
1068
|
+
true
|
|
1069
|
+
)
|
|
1070
|
+
__TS__SetDescriptor(
|
|
1071
|
+
Unit.prototype,
|
|
1072
|
+
"weapons",
|
|
1073
|
+
{get = function(self)
|
|
1074
|
+
local weapons = {
|
|
1075
|
+
setmetatable({h = self.handle, i = 0}, weaponMetatable),
|
|
1076
|
+
setmetatable({h = self.handle, i = 1}, weaponMetatable)
|
|
1077
|
+
}
|
|
1078
|
+
rawset(self, "weapons", weapons)
|
|
1079
|
+
return weapons
|
|
1080
|
+
end},
|
|
1081
|
+
true
|
|
1082
|
+
)
|
|
1083
|
+
__TS__SetDescriptor(
|
|
1084
|
+
Unit.prototype,
|
|
1085
|
+
"level",
|
|
1086
|
+
{
|
|
1087
|
+
get = function(self)
|
|
1088
|
+
return GetHeroLevel(self.handle)
|
|
1089
|
+
end,
|
|
1090
|
+
set = function(self, v)
|
|
1091
|
+
local handle = self.handle
|
|
1092
|
+
local level = GetHeroLevel(handle)
|
|
1093
|
+
if v > level then
|
|
1094
|
+
SetHeroLevel(handle, v, false)
|
|
1095
|
+
else
|
|
1096
|
+
UnitStripHeroLevel(handle, level - v)
|
|
1097
|
+
end
|
|
1098
|
+
end
|
|
1099
|
+
},
|
|
1100
|
+
true
|
|
1101
|
+
)
|
|
1102
|
+
__TS__SetDescriptor(
|
|
1103
|
+
Unit.prototype,
|
|
1104
|
+
"xp",
|
|
1105
|
+
{
|
|
1106
|
+
get = function(self)
|
|
1107
|
+
return GetHeroXP(self.handle)
|
|
1108
|
+
end,
|
|
1109
|
+
set = function(self, v)
|
|
1110
|
+
SetHeroXP(self.handle, v, false)
|
|
1111
|
+
end
|
|
1112
|
+
},
|
|
1113
|
+
true
|
|
1114
|
+
)
|
|
1115
|
+
__TS__SetDescriptor(
|
|
1116
|
+
Unit.prototype,
|
|
1117
|
+
"strengthBase",
|
|
1118
|
+
{
|
|
1119
|
+
get = function(self)
|
|
1120
|
+
return getHeroStr(self.handle, false)
|
|
1121
|
+
end,
|
|
1122
|
+
set = function(self, strengthBase)
|
|
1123
|
+
setHeroStr(self.handle, strengthBase, true)
|
|
1124
|
+
end
|
|
1125
|
+
},
|
|
1126
|
+
true
|
|
1127
|
+
)
|
|
1128
|
+
__TS__SetDescriptor(
|
|
1129
|
+
Unit.prototype,
|
|
1130
|
+
"strengthBonus",
|
|
1131
|
+
{get = function(self)
|
|
1132
|
+
local handle = self.handle
|
|
1133
|
+
return getHeroStr(handle, true) - getHeroStr(handle, false)
|
|
1134
|
+
end},
|
|
1135
|
+
true
|
|
1136
|
+
)
|
|
1137
|
+
__TS__SetDescriptor(
|
|
1138
|
+
Unit.prototype,
|
|
1139
|
+
"strength",
|
|
1140
|
+
{get = function(self)
|
|
1141
|
+
return getHeroStr(self.handle, true)
|
|
1142
|
+
end},
|
|
1143
|
+
true
|
|
1144
|
+
)
|
|
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
|
+
__TS__SetDescriptor(
|
|
1159
|
+
Unit.prototype,
|
|
1160
|
+
"agilityBonus",
|
|
1161
|
+
{get = function(self)
|
|
1162
|
+
local handle = self.handle
|
|
1163
|
+
return getHeroAgi(handle, true) - getHeroAgi(handle, false)
|
|
1164
|
+
end},
|
|
1165
|
+
true
|
|
1166
|
+
)
|
|
1167
|
+
__TS__SetDescriptor(
|
|
1168
|
+
Unit.prototype,
|
|
1169
|
+
"agility",
|
|
1170
|
+
{get = function(self)
|
|
1171
|
+
return getHeroAgi(self.handle, true)
|
|
1172
|
+
end},
|
|
1173
|
+
true
|
|
1174
|
+
)
|
|
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
|
+
__TS__SetDescriptor(
|
|
1189
|
+
Unit.prototype,
|
|
1190
|
+
"intelligenceBonus",
|
|
1191
|
+
{get = function(self)
|
|
1192
|
+
local handle = self.handle
|
|
1193
|
+
return getHeroInt(handle, true) - getHeroInt(handle, false)
|
|
1194
|
+
end},
|
|
1195
|
+
true
|
|
1196
|
+
)
|
|
1197
|
+
__TS__SetDescriptor(
|
|
1198
|
+
Unit.prototype,
|
|
1199
|
+
"intelligence",
|
|
1200
|
+
{get = function(self)
|
|
1201
|
+
return getHeroInt(self.handle, true)
|
|
1202
|
+
end},
|
|
1203
|
+
true
|
|
1204
|
+
)
|
|
1205
|
+
__TS__SetDescriptor(
|
|
1206
|
+
Unit.prototype,
|
|
1207
|
+
"name",
|
|
1208
|
+
{
|
|
1209
|
+
get = function(self)
|
|
1210
|
+
return GetUnitName(self.handle)
|
|
1211
|
+
end,
|
|
1212
|
+
set = function(self, v)
|
|
1213
|
+
BlzSetUnitName(self.handle, v)
|
|
1214
|
+
end
|
|
1215
|
+
},
|
|
1216
|
+
true
|
|
1217
|
+
)
|
|
1218
|
+
__TS__SetDescriptor(
|
|
1219
|
+
Unit.prototype,
|
|
1220
|
+
"properName",
|
|
1221
|
+
{
|
|
1222
|
+
get = function(self)
|
|
1223
|
+
return GetHeroProperName(self.handle)
|
|
1224
|
+
end,
|
|
1225
|
+
set = function(self, v)
|
|
1226
|
+
BlzSetHeroProperName(self.handle, v)
|
|
1227
|
+
end
|
|
1228
|
+
},
|
|
1229
|
+
true
|
|
1230
|
+
)
|
|
1231
|
+
__TS__SetDescriptor(
|
|
1232
|
+
Unit.prototype,
|
|
1233
|
+
"isTeamGlowVisible",
|
|
1234
|
+
{
|
|
1235
|
+
get = function(self)
|
|
1236
|
+
return not self[103]
|
|
1237
|
+
end,
|
|
1238
|
+
set = function(self, isTeamGlowVisible)
|
|
1239
|
+
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1240
|
+
local ____temp_2
|
|
1241
|
+
if not isTeamGlowVisible then
|
|
1242
|
+
____temp_2 = true
|
|
1243
|
+
else
|
|
1244
|
+
____temp_2 = nil
|
|
1245
|
+
end
|
|
1246
|
+
self[103] = ____temp_2
|
|
1247
|
+
end
|
|
1248
|
+
},
|
|
1249
|
+
true
|
|
1250
|
+
)
|
|
1251
|
+
__TS__SetDescriptor(
|
|
1252
|
+
Unit.prototype,
|
|
1253
|
+
"color",
|
|
1254
|
+
{set = function(self, color)
|
|
1255
|
+
setUnitColor(self.handle, color.handle)
|
|
1256
|
+
if self[103] then
|
|
1257
|
+
showUnitTeamGlow(self.handle, false)
|
|
1258
|
+
end
|
|
1259
|
+
end},
|
|
1260
|
+
true
|
|
1261
|
+
)
|
|
1262
|
+
__TS__SetDescriptor(
|
|
1263
|
+
Unit.prototype,
|
|
1264
|
+
"acquisitionRange",
|
|
1265
|
+
{
|
|
1266
|
+
get = function(self)
|
|
1267
|
+
return GetUnitAcquireRange(self.handle)
|
|
1268
|
+
end,
|
|
1269
|
+
set = function(self, v)
|
|
1270
|
+
SetUnitAcquireRange(self.handle, v)
|
|
1271
|
+
end
|
|
1272
|
+
},
|
|
1273
|
+
true
|
|
1274
|
+
)
|
|
1275
|
+
__TS__SetDescriptor(
|
|
1276
|
+
Unit.prototype,
|
|
1277
|
+
"maxHealth",
|
|
1278
|
+
{
|
|
1279
|
+
get = function(self)
|
|
1280
|
+
return BlzGetUnitMaxHP(self.handle) - (self[102] or 0)
|
|
1281
|
+
end,
|
|
1282
|
+
set = function(self, maxHealth)
|
|
1283
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[102] or 0))
|
|
1284
|
+
end
|
|
1285
|
+
},
|
|
1286
|
+
true
|
|
1287
|
+
)
|
|
1288
|
+
__TS__SetDescriptor(
|
|
1289
|
+
Unit.prototype,
|
|
1290
|
+
"healthRegenerationRate",
|
|
1291
|
+
{
|
|
1292
|
+
get = function(self)
|
|
1293
|
+
local handle = self.handle
|
|
1294
|
+
return getUnitRealField(handle, UNIT_RF_HIT_POINTS_REGENERATION_RATE) + getHeroStr(handle, true) * HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
|
|
1295
|
+
end,
|
|
1296
|
+
set = function(self, healthRegenerationRate)
|
|
1297
|
+
local handle = self.handle
|
|
1298
|
+
setUnitRealField(
|
|
1299
|
+
handle,
|
|
1300
|
+
UNIT_RF_HIT_POINTS_REGENERATION_RATE,
|
|
1301
|
+
healthRegenerationRate - getHeroStr(handle, true) * HEALTH_REGENERATION_RATE_BONUS_PER_STRENGTH_POINT
|
|
1302
|
+
)
|
|
1303
|
+
end
|
|
1304
|
+
},
|
|
1305
|
+
true
|
|
1306
|
+
)
|
|
1307
|
+
__TS__SetDescriptor(
|
|
1308
|
+
Unit.prototype,
|
|
1309
|
+
"maxMana",
|
|
1310
|
+
{
|
|
1311
|
+
get = function(self)
|
|
1312
|
+
return BlzGetUnitMaxMana(self.handle)
|
|
1313
|
+
end,
|
|
1314
|
+
set = function(self, maxMana)
|
|
1315
|
+
BlzSetUnitMaxMana(self.handle, maxMana)
|
|
1316
|
+
end
|
|
1317
|
+
},
|
|
1318
|
+
true
|
|
1319
|
+
)
|
|
1320
|
+
__TS__SetDescriptor(
|
|
1321
|
+
Unit.prototype,
|
|
1322
|
+
"health",
|
|
1323
|
+
{
|
|
1324
|
+
get = function(self)
|
|
1325
|
+
return GetWidgetLife(self.handle) - (self[102] or 0)
|
|
1326
|
+
end,
|
|
1327
|
+
set = function(self, health)
|
|
1328
|
+
SetWidgetLife(self.handle, health + (self[102] or 0))
|
|
1329
|
+
end
|
|
1330
|
+
},
|
|
1331
|
+
true
|
|
1332
|
+
)
|
|
1333
|
+
__TS__SetDescriptor(
|
|
1334
|
+
Unit.prototype,
|
|
1335
|
+
"mana",
|
|
1336
|
+
{
|
|
1337
|
+
get = function(self)
|
|
1338
|
+
return GetUnitState(self.handle, UNIT_STATE_MANA)
|
|
1339
|
+
end,
|
|
1340
|
+
set = function(self, mana)
|
|
1341
|
+
SetUnitState(self.handle, UNIT_STATE_MANA, mana)
|
|
1342
|
+
end
|
|
1343
|
+
},
|
|
1344
|
+
true
|
|
1345
|
+
)
|
|
1346
|
+
__TS__SetDescriptor(
|
|
1347
|
+
Unit.prototype,
|
|
1348
|
+
"manaRegenerationRate",
|
|
1349
|
+
{
|
|
1350
|
+
get = function(self)
|
|
1351
|
+
local handle = self.handle
|
|
1352
|
+
return getUnitRealField(handle, UNIT_RF_MANA_REGENERATION) + getHeroInt(handle, true) * MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
|
|
1353
|
+
end,
|
|
1354
|
+
set = function(self, manaRegenerationRate)
|
|
1355
|
+
local handle = self.handle
|
|
1356
|
+
setUnitRealField(
|
|
1357
|
+
handle,
|
|
1358
|
+
UNIT_RF_MANA_REGENERATION,
|
|
1359
|
+
manaRegenerationRate - getHeroInt(handle, true) * MANA_REGENERATION_RATE_BONUS_PER_INTELLIGENCE_POINT
|
|
1360
|
+
)
|
|
1361
|
+
end
|
|
1362
|
+
},
|
|
1363
|
+
true
|
|
1364
|
+
)
|
|
1365
|
+
__TS__SetDescriptor(
|
|
1366
|
+
Unit.prototype,
|
|
1367
|
+
"armor",
|
|
1368
|
+
{
|
|
1369
|
+
get = function(self)
|
|
1370
|
+
return BlzGetUnitArmor(self.handle)
|
|
1371
|
+
end,
|
|
1372
|
+
set = function(self, armor)
|
|
1373
|
+
BlzSetUnitArmor(self.handle, armor)
|
|
1374
|
+
end
|
|
1375
|
+
},
|
|
1376
|
+
true
|
|
1377
|
+
)
|
|
1378
|
+
__TS__SetDescriptor(
|
|
1379
|
+
Unit.prototype,
|
|
1380
|
+
"facing",
|
|
1381
|
+
{
|
|
1382
|
+
get = function(self)
|
|
1383
|
+
return GetUnitFacing(self.handle)
|
|
1384
|
+
end,
|
|
1385
|
+
set = function(self, v)
|
|
1386
|
+
BlzSetUnitFacingEx(self.handle, v)
|
|
1387
|
+
end
|
|
1388
|
+
},
|
|
1389
|
+
true
|
|
1390
|
+
)
|
|
1391
|
+
__TS__SetDescriptor(
|
|
1392
|
+
Unit.prototype,
|
|
1393
|
+
"speed",
|
|
1394
|
+
{
|
|
1395
|
+
get = function(self)
|
|
1396
|
+
return GetUnitMoveSpeed(self.handle)
|
|
1397
|
+
end,
|
|
1398
|
+
set = function(self, v)
|
|
1399
|
+
SetUnitMoveSpeed(self.handle, v)
|
|
1400
|
+
end
|
|
1401
|
+
},
|
|
1402
|
+
true
|
|
1403
|
+
)
|
|
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
|
+
__TS__SetDescriptor(
|
|
1418
|
+
Unit.prototype,
|
|
1419
|
+
"x",
|
|
1420
|
+
{
|
|
1421
|
+
get = function(self)
|
|
1422
|
+
return getUnitX(self.handle)
|
|
1423
|
+
end,
|
|
1424
|
+
set = function(self, v)
|
|
1425
|
+
SetUnitX(self.handle, v)
|
|
1426
|
+
end
|
|
1427
|
+
},
|
|
1428
|
+
true
|
|
1429
|
+
)
|
|
1430
|
+
__TS__SetDescriptor(
|
|
1431
|
+
Unit.prototype,
|
|
1432
|
+
"y",
|
|
1433
|
+
{
|
|
1434
|
+
get = function(self)
|
|
1435
|
+
return getUnitY(self.handle)
|
|
1436
|
+
end,
|
|
1437
|
+
set = function(self, v)
|
|
1438
|
+
SetUnitY(self.handle, v)
|
|
1439
|
+
end
|
|
1440
|
+
},
|
|
1441
|
+
true
|
|
1442
|
+
)
|
|
1443
|
+
__TS__SetDescriptor(
|
|
1444
|
+
Unit.prototype,
|
|
1445
|
+
"z",
|
|
1446
|
+
{get = function(self)
|
|
1447
|
+
local handle = self.handle
|
|
1448
|
+
moveLocation(
|
|
1449
|
+
loc,
|
|
1450
|
+
getUnitX(handle),
|
|
1451
|
+
getUnitY(handle)
|
|
1452
|
+
)
|
|
1453
|
+
return getUnitFlyHeight(handle) + getLocationZ(loc)
|
|
1454
|
+
end},
|
|
1455
|
+
true
|
|
1456
|
+
)
|
|
1457
|
+
__TS__SetDescriptor(
|
|
1458
|
+
Unit.prototype,
|
|
1459
|
+
"xy",
|
|
1460
|
+
{set = function(self, v)
|
|
1461
|
+
SetUnitX(self.handle, v.x)
|
|
1462
|
+
SetUnitY(self.handle, v.y)
|
|
1463
|
+
end},
|
|
1464
|
+
true
|
|
1465
|
+
)
|
|
1466
|
+
__TS__SetDescriptor(
|
|
1467
|
+
Unit.prototype,
|
|
1468
|
+
"position",
|
|
1469
|
+
{
|
|
1470
|
+
get = function(self)
|
|
1471
|
+
return vec2(
|
|
1472
|
+
getUnitX(self.handle),
|
|
1473
|
+
getUnitY(self.handle)
|
|
1474
|
+
)
|
|
1475
|
+
end,
|
|
1476
|
+
set = function(self, v)
|
|
1477
|
+
SetUnitPosition(self.handle, v.x, v.y)
|
|
1478
|
+
end
|
|
1479
|
+
},
|
|
1480
|
+
true
|
|
1481
|
+
)
|
|
1482
|
+
__TS__SetDescriptor(
|
|
1483
|
+
Unit.prototype,
|
|
1484
|
+
"owner",
|
|
1485
|
+
{
|
|
1486
|
+
get = function(self)
|
|
1487
|
+
return Player:of(getOwningPlayer(self.handle)) or self._owner or Player.neutralExtra
|
|
1488
|
+
end,
|
|
1489
|
+
set = function(self, v)
|
|
1490
|
+
SetUnitOwner(self.handle, v.handle, false)
|
|
1491
|
+
if self._owner then
|
|
1492
|
+
self._owner = v
|
|
1493
|
+
end
|
|
1494
|
+
end
|
|
1495
|
+
},
|
|
1496
|
+
true
|
|
1497
|
+
)
|
|
1498
|
+
__TS__SetDescriptor(
|
|
1499
|
+
Unit.prototype,
|
|
1500
|
+
"goldCost",
|
|
1501
|
+
{get = function(self)
|
|
1502
|
+
local typeId = getUnitTypeId(self.handle)
|
|
1503
|
+
return isHeroUnitId(typeId) and 0 or getUnitGoldCost(typeId)
|
|
1504
|
+
end},
|
|
1505
|
+
true
|
|
1506
|
+
)
|
|
1507
|
+
__TS__SetDescriptor(
|
|
1508
|
+
Unit.prototype,
|
|
1509
|
+
"lumberCost",
|
|
1510
|
+
{get = function(self)
|
|
1511
|
+
local typeId = getUnitTypeId(self.handle)
|
|
1512
|
+
return isHeroUnitId(typeId) and 0 or getUnitLumberCost(typeId)
|
|
1513
|
+
end},
|
|
1514
|
+
true
|
|
1515
|
+
)
|
|
1516
|
+
__TS__SetDescriptor(
|
|
1517
|
+
Unit.prototype,
|
|
1518
|
+
"gold",
|
|
1519
|
+
{
|
|
1520
|
+
get = function(self)
|
|
1521
|
+
return getResourceAmount(self.handle)
|
|
1522
|
+
end,
|
|
1523
|
+
set = function(self, gold)
|
|
1524
|
+
setResourceAmount(self.handle, gold)
|
|
1525
|
+
end
|
|
1526
|
+
},
|
|
1527
|
+
true
|
|
1528
|
+
)
|
|
1529
|
+
__TS__SetDescriptor(
|
|
1530
|
+
Unit.prototype,
|
|
1531
|
+
"isPaused",
|
|
1532
|
+
{
|
|
1533
|
+
get = function(self)
|
|
1534
|
+
return IsUnitPaused(self.handle)
|
|
1535
|
+
end,
|
|
1536
|
+
set = function(self, isPaused)
|
|
1537
|
+
local handle = self.handle
|
|
1538
|
+
if isPaused and not IsUnitPaused(handle) then
|
|
1539
|
+
self[100] = true
|
|
1540
|
+
for _ = self[101] or 0, -1 do
|
|
1541
|
+
BlzPauseUnitEx(handle, true)
|
|
1542
|
+
end
|
|
1543
|
+
PauseUnit(handle, true)
|
|
1544
|
+
elseif not isPaused and IsUnitPaused(handle) then
|
|
1545
|
+
PauseUnit(handle, false)
|
|
1546
|
+
for _ = self[101] or 0, -1 do
|
|
1547
|
+
BlzPauseUnitEx(handle, false)
|
|
1548
|
+
end
|
|
1549
|
+
self[100] = nil
|
|
1550
|
+
end
|
|
1551
|
+
end
|
|
1552
|
+
},
|
|
1553
|
+
true
|
|
1554
|
+
)
|
|
1555
|
+
__TS__SetDescriptor(
|
|
1556
|
+
Unit.prototype,
|
|
1557
|
+
"hidden",
|
|
1558
|
+
{
|
|
1559
|
+
get = function(self)
|
|
1560
|
+
return IsUnitHidden(self.handle)
|
|
1561
|
+
end,
|
|
1562
|
+
set = function(self, v)
|
|
1563
|
+
if v then
|
|
1564
|
+
ShowUnitHide(self.handle)
|
|
1565
|
+
else
|
|
1566
|
+
ShowUnitShow(self.handle)
|
|
1567
|
+
end
|
|
1568
|
+
end
|
|
1569
|
+
},
|
|
1570
|
+
true
|
|
1571
|
+
)
|
|
1572
|
+
__TS__SetDescriptor(
|
|
1573
|
+
Unit.prototype,
|
|
1574
|
+
"isInvulnerable",
|
|
1575
|
+
{get = function(self)
|
|
1576
|
+
return isUnitInvulnerable(self.handle)
|
|
1577
|
+
end},
|
|
1578
|
+
true
|
|
1579
|
+
)
|
|
1580
|
+
__TS__SetDescriptor(
|
|
1581
|
+
Unit.prototype,
|
|
1582
|
+
"vertexColor",
|
|
1583
|
+
{
|
|
1584
|
+
get = function(self)
|
|
1585
|
+
local handle = self.handle
|
|
1586
|
+
return Color:of(
|
|
1587
|
+
getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_RED),
|
|
1588
|
+
getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_GREEN),
|
|
1589
|
+
getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_BLUE),
|
|
1590
|
+
getUnitIntegerField(handle, UNIT_IF_TINTING_COLOR_ALPHA)
|
|
1591
|
+
)
|
|
1592
|
+
end,
|
|
1593
|
+
set = function(self, v)
|
|
1594
|
+
SetUnitVertexColor(
|
|
1595
|
+
self.handle,
|
|
1596
|
+
v.r,
|
|
1597
|
+
v.g,
|
|
1598
|
+
v.b,
|
|
1599
|
+
v.a
|
|
1600
|
+
)
|
|
1601
|
+
end
|
|
1602
|
+
},
|
|
1603
|
+
true
|
|
1604
|
+
)
|
|
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
|
+
__TS__SetDescriptor(
|
|
1620
|
+
Unit.prototype,
|
|
1621
|
+
"timeScale",
|
|
1622
|
+
{
|
|
1623
|
+
get = function(self)
|
|
1624
|
+
return self._timeScale or 1
|
|
1625
|
+
end,
|
|
1626
|
+
set = function(self, v)
|
|
1627
|
+
setUnitTimeScale(self.handle, v)
|
|
1628
|
+
self._timeScale = v ~= 1 and v or nil
|
|
1629
|
+
end
|
|
1630
|
+
},
|
|
1631
|
+
true
|
|
1632
|
+
)
|
|
1633
|
+
__TS__SetDescriptor(
|
|
1634
|
+
Unit.prototype,
|
|
1635
|
+
"collisionSize",
|
|
1636
|
+
{get = function(self)
|
|
1637
|
+
return getUnitCollisionSize(self.handle)
|
|
1638
|
+
end},
|
|
1639
|
+
true
|
|
1640
|
+
)
|
|
1641
|
+
__TS__SetDescriptor(
|
|
1642
|
+
Unit.prototype,
|
|
1643
|
+
"pathingCollisionRange",
|
|
1644
|
+
{get = function(self)
|
|
1645
|
+
return 16 * (min(
|
|
1646
|
+
getUnitCollisionSize(self.handle) // 16,
|
|
1647
|
+
3
|
|
1648
|
+
) + 1)
|
|
1649
|
+
end},
|
|
1650
|
+
true
|
|
1651
|
+
)
|
|
1652
|
+
__TS__SetDescriptor(
|
|
1653
|
+
Unit.prototype,
|
|
1654
|
+
"pathing",
|
|
1655
|
+
{set = function(self, v)
|
|
1656
|
+
SetUnitPathing(self.handle, v)
|
|
1657
|
+
end},
|
|
1658
|
+
true
|
|
1659
|
+
)
|
|
1660
|
+
__TS__SetDescriptor(
|
|
1661
|
+
Unit.prototype,
|
|
1662
|
+
"buffIds",
|
|
1663
|
+
{get = function(self)
|
|
1664
|
+
local buffIds = {}
|
|
1665
|
+
local buffIdsCount = 0
|
|
1666
|
+
local handle = self.handle
|
|
1667
|
+
do
|
|
1668
|
+
local i = 0
|
|
1669
|
+
local ability = getUnitAbilityByIndex(handle, i)
|
|
1670
|
+
while ability ~= nil do
|
|
1671
|
+
local abilityId = getAbilityId(ability)
|
|
1672
|
+
if getAbilityName(abilityId) == "Default string" and abilityId ~= fourCC("Atrg") then
|
|
1673
|
+
buffIdsCount = buffIdsCount + 1
|
|
1674
|
+
buffIds[buffIdsCount] = abilityId
|
|
1675
|
+
end
|
|
1676
|
+
do
|
|
1677
|
+
i = i + 1
|
|
1678
|
+
ability = getUnitAbilityByIndex(handle, i)
|
|
1679
|
+
end
|
|
1680
|
+
end
|
|
1681
|
+
end
|
|
1682
|
+
return buffIds
|
|
1683
|
+
end},
|
|
1684
|
+
true
|
|
1685
|
+
)
|
|
1686
|
+
__TS__SetDescriptor(
|
|
1687
|
+
Unit.prototype,
|
|
1688
|
+
"waygateActive",
|
|
1689
|
+
{
|
|
1690
|
+
get = function(self)
|
|
1691
|
+
return WaygateIsActive(self.handle)
|
|
1692
|
+
end,
|
|
1693
|
+
set = function(self, v)
|
|
1694
|
+
WaygateActivate(self.handle, v)
|
|
1695
|
+
end
|
|
1696
|
+
},
|
|
1697
|
+
true
|
|
1698
|
+
)
|
|
1699
|
+
__TS__SetDescriptor(
|
|
1700
|
+
Unit.prototype,
|
|
1701
|
+
"waygateDestination",
|
|
1702
|
+
{
|
|
1703
|
+
get = function(self)
|
|
1704
|
+
return vec2(
|
|
1705
|
+
WaygateGetDestinationX(self.handle),
|
|
1706
|
+
WaygateGetDestinationY(self.handle)
|
|
1707
|
+
)
|
|
1708
|
+
end,
|
|
1709
|
+
set = function(self, v)
|
|
1710
|
+
WaygateSetDestination(self.handle, v.x, v.y)
|
|
1711
|
+
end
|
|
1712
|
+
},
|
|
1713
|
+
true
|
|
1714
|
+
)
|
|
1715
|
+
__TS__SetDescriptor(
|
|
1716
|
+
Unit.prototype,
|
|
1717
|
+
"abilities",
|
|
1718
|
+
{get = function(self)
|
|
1719
|
+
local abilities = {}
|
|
1720
|
+
local stock = stockAbilities[self.typeId]
|
|
1721
|
+
if stock then
|
|
1722
|
+
local handle = self.handle
|
|
1723
|
+
local j = 1
|
|
1724
|
+
for i = 1, #stock do
|
|
1725
|
+
local abilityId = stock[i]
|
|
1726
|
+
local ability = UnitAbility:of(
|
|
1727
|
+
getUnitAbility(handle, abilityId),
|
|
1728
|
+
abilityId,
|
|
1729
|
+
self
|
|
1730
|
+
)
|
|
1731
|
+
if ability then
|
|
1732
|
+
abilities[j] = ability
|
|
1733
|
+
j = j + 1
|
|
1734
|
+
end
|
|
1735
|
+
end
|
|
1736
|
+
end
|
|
1737
|
+
rawset(self, "abilities", abilities)
|
|
1738
|
+
return abilities
|
|
1739
|
+
end},
|
|
1740
|
+
true
|
|
1741
|
+
)
|
|
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
|
+
__TS__SetDescriptor(
|
|
1767
|
+
Unit.prototype,
|
|
1768
|
+
"onManaEqual",
|
|
1769
|
+
{get = function(self)
|
|
1770
|
+
local handle = self.handle
|
|
1771
|
+
local onManaEqual = setmetatable(
|
|
1772
|
+
{},
|
|
1773
|
+
{__index = function(self, value)
|
|
1774
|
+
local event = __TS__New(
|
|
1775
|
+
TriggerEvent,
|
|
1776
|
+
function(trigger)
|
|
1777
|
+
TriggerRegisterUnitManaEvent(trigger, handle, EQUAL, value)
|
|
1778
|
+
end,
|
|
1779
|
+
function() return ____exports.Unit:of(handle), value end
|
|
1780
|
+
)
|
|
1781
|
+
rawset(self, value, event)
|
|
1782
|
+
return event
|
|
1783
|
+
end}
|
|
1784
|
+
)
|
|
1785
|
+
rawset(self, "onManaEqual", onManaEqual)
|
|
1786
|
+
return onManaEqual
|
|
1787
|
+
end},
|
|
1788
|
+
true
|
|
1789
|
+
)
|
|
1790
|
+
__TS__SetDescriptor(
|
|
1791
|
+
Unit.prototype,
|
|
1792
|
+
"manaEvent",
|
|
1793
|
+
{get = function(self)
|
|
1794
|
+
local unit = self
|
|
1795
|
+
local eventByValueByOperator = setmetatable(
|
|
1796
|
+
{},
|
|
1797
|
+
{__index = function(self, operator)
|
|
1798
|
+
local eventByValue = setmetatable(
|
|
1799
|
+
{},
|
|
1800
|
+
{__index = function(self, value)
|
|
1801
|
+
local actualValue = value
|
|
1802
|
+
if operator == 4 then
|
|
1803
|
+
actualValue = value + 0.01
|
|
1804
|
+
elseif operator == 0 then
|
|
1805
|
+
actualValue = value - 0.01
|
|
1806
|
+
end
|
|
1807
|
+
local event = __TS__New(
|
|
1808
|
+
TriggerEvent,
|
|
1809
|
+
function(trigger)
|
|
1810
|
+
TriggerRegisterUnitManaEvent(trigger, unit.handle, jlimitopByOperator[operator], actualValue)
|
|
1811
|
+
end,
|
|
1812
|
+
function() return unit end
|
|
1813
|
+
)
|
|
1814
|
+
local eventsToDestroy = unit._eventsToDestroy
|
|
1815
|
+
if eventsToDestroy == nil then
|
|
1816
|
+
eventsToDestroy = {}
|
|
1817
|
+
unit._eventsToDestroy = eventsToDestroy
|
|
1818
|
+
end
|
|
1819
|
+
eventsToDestroy[#eventsToDestroy + 1] = event
|
|
1820
|
+
rawset(self, value, event)
|
|
1821
|
+
return event
|
|
1822
|
+
end}
|
|
1823
|
+
)
|
|
1824
|
+
rawset(self, operator, eventByValue)
|
|
1825
|
+
return eventByValue
|
|
1826
|
+
end}
|
|
1827
|
+
)
|
|
1828
|
+
rawset(self, "manaEvent", eventByValueByOperator)
|
|
1829
|
+
return eventByValueByOperator
|
|
1830
|
+
end},
|
|
1831
|
+
true
|
|
1832
|
+
)
|
|
1833
|
+
__TS__SetDescriptor(
|
|
1834
|
+
Unit.prototype,
|
|
1835
|
+
"onSelect",
|
|
1836
|
+
{get = function(self)
|
|
1837
|
+
return self:getEvent(EVENT_UNIT_SELECTED)
|
|
1838
|
+
end},
|
|
1839
|
+
true
|
|
1840
|
+
)
|
|
1841
|
+
__TS__SetDescriptor(
|
|
1842
|
+
Unit.prototype,
|
|
1843
|
+
"onDeselect",
|
|
1844
|
+
{get = function(self)
|
|
1845
|
+
return self:getEvent(EVENT_UNIT_DESELECTED)
|
|
1846
|
+
end},
|
|
1847
|
+
true
|
|
1848
|
+
)
|
|
1849
|
+
__TS__SetDescriptor(
|
|
1850
|
+
Unit.prototype,
|
|
1851
|
+
"onImmediateOrder",
|
|
1852
|
+
{get = function(self)
|
|
1853
|
+
return self:getEvent(
|
|
1854
|
+
EVENT_UNIT_ISSUED_ORDER,
|
|
1855
|
+
function() return GetIssuedOrderId() end
|
|
1856
|
+
)
|
|
1857
|
+
end},
|
|
1858
|
+
true
|
|
1859
|
+
)
|
|
1860
|
+
__TS__SetDescriptor(
|
|
1861
|
+
Unit.prototype,
|
|
1862
|
+
"onPointOrder",
|
|
1863
|
+
{get = function(self)
|
|
1864
|
+
return self:getEvent(
|
|
1865
|
+
EVENT_UNIT_ISSUED_POINT_ORDER,
|
|
1866
|
+
function() return GetIssuedOrderId() end
|
|
1867
|
+
)
|
|
1868
|
+
end},
|
|
1869
|
+
true
|
|
1870
|
+
)
|
|
1871
|
+
__TS__SetDescriptor(
|
|
1872
|
+
Unit.prototype,
|
|
1873
|
+
"onTargetOrder",
|
|
1874
|
+
{get = function(self)
|
|
1875
|
+
return self:getEvent(
|
|
1876
|
+
EVENT_UNIT_ISSUED_TARGET_ORDER,
|
|
1877
|
+
function() return GetIssuedOrderId(), ____exports.Unit:of(GetOrderTargetUnit()) or Item:of(GetOrderTargetItem()) or checkNotNull(Destructable:of(GetOrderTargetDestructable())) end
|
|
1878
|
+
)
|
|
1879
|
+
end},
|
|
1880
|
+
true
|
|
1881
|
+
)
|
|
1882
|
+
__TS__SetDescriptor(
|
|
1883
|
+
Unit.prototype,
|
|
1884
|
+
"onSpellEffect",
|
|
1885
|
+
{get = function(self)
|
|
1886
|
+
return self:getEvent(
|
|
1887
|
+
EVENT_UNIT_SPELL_EFFECT,
|
|
1888
|
+
function() return GetSpellAbilityId() end
|
|
1889
|
+
)
|
|
1890
|
+
end},
|
|
1891
|
+
true
|
|
1892
|
+
)
|
|
1893
|
+
Unit.deathEvent = __TS__New(
|
|
1894
|
+
____exports.UnitTriggerEvent,
|
|
1895
|
+
EVENT_PLAYER_UNIT_DEATH,
|
|
1896
|
+
function() return ____exports.Unit:of(GetDyingUnit()), ____exports.Unit:of(GetKillingUnit()) end
|
|
1897
|
+
)
|
|
1898
|
+
Unit.onDecay = __TS__New(
|
|
1899
|
+
____exports.UnitTriggerEvent,
|
|
1900
|
+
EVENT_PLAYER_UNIT_DECAY,
|
|
1901
|
+
function() return ____exports.Unit:of(GetDecayingUnit()) end
|
|
1902
|
+
)
|
|
1903
|
+
Unit.onResurrect = __TS__New(
|
|
1904
|
+
InitializingEvent,
|
|
1905
|
+
function(event)
|
|
1906
|
+
local invoke = Event.invoke
|
|
1907
|
+
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
|
+
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
|
+
dead[unit] = true
|
|
1910
|
+
end)
|
|
1911
|
+
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1912
|
+
if dead[unit] and not IsUnitType(unit.handle, UNIT_TYPE_DEAD) then
|
|
1913
|
+
dead[unit] = false
|
|
1914
|
+
invoke(event, unit)
|
|
1915
|
+
end
|
|
1916
|
+
end)
|
|
1917
|
+
end
|
|
1918
|
+
)
|
|
1919
|
+
Unit.morphEvent = __TS__New(
|
|
1920
|
+
InitializingEvent,
|
|
1921
|
+
function(event)
|
|
1922
|
+
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1923
|
+
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
+
assert(unitAddAbility(unit.handle, morphDetectAbilityId))
|
|
1925
|
+
Timer:run(Event.invoke, event, unit)
|
|
1926
|
+
end
|
|
1927
|
+
end)
|
|
1928
|
+
end
|
|
1929
|
+
)
|
|
1930
|
+
Unit.onOwnerChange = __TS__New(
|
|
1931
|
+
____exports.UnitTriggerEvent,
|
|
1932
|
+
EVENT_PLAYER_UNIT_CHANGE_OWNER,
|
|
1933
|
+
function() return ____exports.Unit:of(GetChangingUnit()), Player:of(GetChangingUnitPrevOwner()) end
|
|
1934
|
+
)
|
|
1935
|
+
Unit.onSelect = __TS__New(
|
|
1936
|
+
____exports.UnitTriggerEvent,
|
|
1937
|
+
EVENT_PLAYER_UNIT_SELECTED,
|
|
1938
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Player:of(getTriggerPlayer()) end
|
|
1939
|
+
)
|
|
1940
|
+
Unit.onDeselect = __TS__New(
|
|
1941
|
+
____exports.UnitTriggerEvent,
|
|
1942
|
+
EVENT_PLAYER_UNIT_DESELECTED,
|
|
1943
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Player:of(getTriggerPlayer()) end
|
|
1944
|
+
)
|
|
1945
|
+
Unit.constructionStartEvent = __TS__New(
|
|
1946
|
+
____exports.UnitTriggerEvent,
|
|
1947
|
+
EVENT_PLAYER_UNIT_CONSTRUCT_START,
|
|
1948
|
+
function() return ____exports.Unit:of(GetConstructingStructure()) end
|
|
1949
|
+
)
|
|
1950
|
+
Unit.onUpgradeFinish = __TS__New(
|
|
1951
|
+
____exports.UnitTriggerEvent,
|
|
1952
|
+
EVENT_PLAYER_UNIT_UPGRADE_FINISH,
|
|
1953
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
1954
|
+
)
|
|
1955
|
+
Unit.onSpellEffect = dispatchId(__TS__New(
|
|
1956
|
+
____exports.UnitTriggerEvent,
|
|
1957
|
+
EVENT_PLAYER_UNIT_SPELL_EFFECT,
|
|
1958
|
+
function() return ____exports.Unit:of(GetTriggerUnit()), GetSpellAbilityId() end
|
|
1959
|
+
))
|
|
1960
|
+
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
|
+
InitializingEvent,
|
|
1962
|
+
function(event)
|
|
1963
|
+
local invoke = Event.invoke
|
|
1964
|
+
local function listener(unit, id)
|
|
1965
|
+
local ____GetSpellTargetUnit_result_5
|
|
1966
|
+
if GetSpellTargetUnit() then
|
|
1967
|
+
____GetSpellTargetUnit_result_5 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
|
+
else
|
|
1969
|
+
local ____GetSpellTargetItem_result_4
|
|
1970
|
+
if GetSpellTargetItem() then
|
|
1971
|
+
____GetSpellTargetItem_result_4 = Item:of(GetSpellTargetItem())
|
|
1972
|
+
else
|
|
1973
|
+
local ____GetSpellTargetDestructable_result_3
|
|
1974
|
+
if GetSpellTargetDestructable() then
|
|
1975
|
+
____GetSpellTargetDestructable_result_3 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
|
+
else
|
|
1977
|
+
____GetSpellTargetDestructable_result_3 = nil
|
|
1978
|
+
end
|
|
1979
|
+
____GetSpellTargetItem_result_4 = ____GetSpellTargetDestructable_result_3
|
|
1980
|
+
end
|
|
1981
|
+
____GetSpellTargetUnit_result_5 = ____GetSpellTargetItem_result_4
|
|
1982
|
+
end
|
|
1983
|
+
local target = ____GetSpellTargetUnit_result_5
|
|
1984
|
+
if target then
|
|
1985
|
+
invoke(event, unit, id, target)
|
|
1986
|
+
end
|
|
1987
|
+
end
|
|
1988
|
+
____exports.Unit.onSpellEffect:addListener(listener)
|
|
1989
|
+
return listener
|
|
1990
|
+
end,
|
|
1991
|
+
function(listener)
|
|
1992
|
+
____exports.Unit.onSpellEffect:removeListener(listener)
|
|
1993
|
+
end
|
|
1994
|
+
))
|
|
1995
|
+
Unit.onCastPrepare = dispatchAbility(__TS__New(
|
|
1996
|
+
____exports.UnitTriggerEvent,
|
|
1997
|
+
EVENT_PLAYER_UNIT_SPELL_CHANNEL,
|
|
1998
|
+
function()
|
|
1999
|
+
local unit = getTriggerUnit()
|
|
2000
|
+
return ____exports.Unit:of(unit), retrieveAbility(
|
|
2001
|
+
unit,
|
|
2002
|
+
getSpellAbility(),
|
|
2003
|
+
getSpellAbilityId()
|
|
2004
|
+
)
|
|
2005
|
+
end
|
|
2006
|
+
))
|
|
2007
|
+
Unit.onCast = dispatchAbility(__TS__New(
|
|
2008
|
+
____exports.UnitTriggerEvent,
|
|
2009
|
+
EVENT_PLAYER_UNIT_SPELL_EFFECT,
|
|
2010
|
+
function()
|
|
2011
|
+
local unit = getTriggerUnit()
|
|
2012
|
+
return ____exports.Unit:of(unit), retrieveAbility(
|
|
2013
|
+
unit,
|
|
2014
|
+
getSpellAbility(),
|
|
2015
|
+
getSpellAbilityId()
|
|
2016
|
+
)
|
|
2017
|
+
end
|
|
2018
|
+
))
|
|
2019
|
+
Unit.onPointCastPrepare = dispatchAbility(__TS__New(
|
|
2020
|
+
InitializingEvent,
|
|
2021
|
+
function(event)
|
|
2022
|
+
local function listener(unit, ability)
|
|
2023
|
+
local x = getSpellTargetX()
|
|
2024
|
+
local y = getSpellTargetY()
|
|
2025
|
+
if x ~= 0 or y ~= 0 then
|
|
2026
|
+
invoke(
|
|
2027
|
+
event,
|
|
2028
|
+
unit,
|
|
2029
|
+
ability,
|
|
2030
|
+
x,
|
|
2031
|
+
y
|
|
2032
|
+
)
|
|
2033
|
+
end
|
|
2034
|
+
end
|
|
2035
|
+
____exports.Unit.onCastPrepare:addListener(listener)
|
|
2036
|
+
return listener
|
|
2037
|
+
end,
|
|
2038
|
+
function(listener)
|
|
2039
|
+
____exports.Unit.onCastPrepare:removeListener(listener)
|
|
2040
|
+
end
|
|
2041
|
+
))
|
|
2042
|
+
Unit.onUnitTargetCastPrepare = dispatchAbility(__TS__New(
|
|
2043
|
+
InitializingEvent,
|
|
2044
|
+
function(event)
|
|
2045
|
+
local function listener(unit, ability)
|
|
2046
|
+
local target = ____exports.Unit:of(getSpellTargetUnit())
|
|
2047
|
+
if target then
|
|
2048
|
+
invoke(event, unit, ability, target)
|
|
2049
|
+
end
|
|
2050
|
+
end
|
|
2051
|
+
____exports.Unit.onCastPrepare:addListener(listener)
|
|
2052
|
+
return listener
|
|
2053
|
+
end,
|
|
2054
|
+
function(listener)
|
|
2055
|
+
____exports.Unit.onCastPrepare:removeListener(listener)
|
|
2056
|
+
end
|
|
2057
|
+
))
|
|
2058
|
+
Unit.onUnitTargetCast = dispatchAbility(__TS__New(
|
|
2059
|
+
InitializingEvent,
|
|
2060
|
+
function(event)
|
|
2061
|
+
local function listener(unit, ability)
|
|
2062
|
+
local target = ____exports.Unit:of(getSpellTargetUnit())
|
|
2063
|
+
if target then
|
|
2064
|
+
invoke(event, unit, ability, target)
|
|
2065
|
+
end
|
|
2066
|
+
end
|
|
2067
|
+
____exports.Unit.onCast:addListener(listener)
|
|
2068
|
+
return listener
|
|
2069
|
+
end,
|
|
2070
|
+
function(listener)
|
|
2071
|
+
____exports.Unit.onCast:removeListener(listener)
|
|
2072
|
+
end
|
|
2073
|
+
))
|
|
2074
|
+
Unit.onPointCast = dispatchAbility(__TS__New(
|
|
2075
|
+
InitializingEvent,
|
|
2076
|
+
function(event)
|
|
2077
|
+
local function listener(unit, ability)
|
|
2078
|
+
if not (getSpellTargetUnit() or getSpellTargetItem() or getSpellTargetDestructable()) then
|
|
2079
|
+
local x = getSpellTargetX()
|
|
2080
|
+
local y = getSpellTargetY()
|
|
2081
|
+
if x ~= 0 or y ~= 0 then
|
|
2082
|
+
invoke(
|
|
2083
|
+
event,
|
|
2084
|
+
unit,
|
|
2085
|
+
ability,
|
|
2086
|
+
x,
|
|
2087
|
+
y
|
|
2088
|
+
)
|
|
2089
|
+
end
|
|
2090
|
+
end
|
|
2091
|
+
end
|
|
2092
|
+
____exports.Unit.onCast:addListener(listener)
|
|
2093
|
+
return listener
|
|
2094
|
+
end,
|
|
2095
|
+
function(listener)
|
|
2096
|
+
____exports.Unit.onCast:removeListener(listener)
|
|
2097
|
+
end
|
|
2098
|
+
))
|
|
2099
|
+
Unit.onCastStart = dispatchAbility(__TS__New(
|
|
2100
|
+
____exports.UnitTriggerEvent,
|
|
2101
|
+
EVENT_PLAYER_UNIT_SPELL_CAST,
|
|
2102
|
+
function()
|
|
2103
|
+
local unit = getTriggerUnit()
|
|
2104
|
+
return ____exports.Unit:of(unit), retrieveAbility(
|
|
2105
|
+
unit,
|
|
2106
|
+
getSpellAbility(),
|
|
2107
|
+
getSpellAbilityId()
|
|
2108
|
+
)
|
|
2109
|
+
end
|
|
2110
|
+
))
|
|
2111
|
+
Unit.onUnitTargetCastStart = dispatchAbility(__TS__New(
|
|
2112
|
+
InitializingEvent,
|
|
2113
|
+
function(event)
|
|
2114
|
+
local function listener(unit, ability)
|
|
2115
|
+
local target = ____exports.Unit:of(getSpellTargetUnit())
|
|
2116
|
+
if target then
|
|
2117
|
+
invoke(event, unit, ability, target)
|
|
2118
|
+
end
|
|
2119
|
+
end
|
|
2120
|
+
____exports.Unit.onCastStart:addListener(listener)
|
|
2121
|
+
return listener
|
|
2122
|
+
end,
|
|
2123
|
+
function(listener)
|
|
2124
|
+
____exports.Unit.onCastStart:removeListener(listener)
|
|
2125
|
+
end
|
|
2126
|
+
))
|
|
2127
|
+
Unit.onCastFinish = dispatchAbility(__TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_UNIT_SPELL_FINISH,
|
|
2130
|
+
function()
|
|
2131
|
+
local unit = getTriggerUnit()
|
|
2132
|
+
return ____exports.Unit:of(unit), retrieveAbility(
|
|
2133
|
+
unit,
|
|
2134
|
+
getSpellAbility(),
|
|
2135
|
+
getSpellAbilityId()
|
|
2136
|
+
)
|
|
2137
|
+
end
|
|
2138
|
+
))
|
|
2139
|
+
Unit.onCastStop = dispatchAbility(__TS__New(
|
|
2140
|
+
____exports.UnitTriggerEvent,
|
|
2141
|
+
EVENT_PLAYER_UNIT_SPELL_ENDCAST,
|
|
2142
|
+
function()
|
|
2143
|
+
local unit = getTriggerUnit()
|
|
2144
|
+
return ____exports.Unit:of(unit), retrieveAbility(
|
|
2145
|
+
unit,
|
|
2146
|
+
getSpellAbility(),
|
|
2147
|
+
getSpellAbilityId()
|
|
2148
|
+
)
|
|
2149
|
+
end
|
|
2150
|
+
))
|
|
2151
|
+
Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
2152
|
+
____exports.UnitTriggerEvent,
|
|
2153
|
+
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2154
|
+
function()
|
|
2155
|
+
local unit = ____exports.Unit:of(getOrderedUnit())
|
|
2156
|
+
local issuedOrderId = getIssuedOrderId()
|
|
2157
|
+
if unit ~= nil and unit.state == 1 then
|
|
2158
|
+
return unit, issuedOrderId
|
|
2159
|
+
end
|
|
2160
|
+
return IgnoreEvent
|
|
2161
|
+
end
|
|
2162
|
+
))
|
|
2163
|
+
Unit.onTargetOrder = dispatchId(__TS__New(
|
|
2164
|
+
____exports.UnitTriggerEvent,
|
|
2165
|
+
EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER,
|
|
2166
|
+
function() return ____exports.Unit:of(GetOrderedUnit()), GetIssuedOrderId(), ____exports.Unit:of(GetOrderTargetUnit()) or Item:of(GetOrderTargetItem()) or checkNotNull(Destructable:of(GetOrderTargetDestructable())) end
|
|
2167
|
+
))
|
|
2168
|
+
Unit.onPointOrder = dispatchId(__TS__New(
|
|
2169
|
+
____exports.UnitTriggerEvent,
|
|
2170
|
+
EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER,
|
|
2171
|
+
function() return ____exports.Unit:of(GetOrderedUnit()), GetIssuedOrderId(), GetOrderPointX(), GetOrderPointY() end
|
|
2172
|
+
))
|
|
2173
|
+
Unit.autoAttackStartEvent = __TS__New(
|
|
2174
|
+
____exports.UnitTriggerEvent,
|
|
2175
|
+
EVENT_PLAYER_UNIT_ATTACKED,
|
|
2176
|
+
function() return ____exports.Unit:of(GetAttacker()), ____exports.Unit:of(GetTriggerUnit()) end
|
|
2177
|
+
)
|
|
2178
|
+
Unit.onDamaging = (function()
|
|
2179
|
+
local event = __TS__New(Event)
|
|
2180
|
+
local invoke = Event.invoke
|
|
2181
|
+
local trigger = CreateTrigger()
|
|
2182
|
+
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
|
+
TriggerAddCondition(
|
|
2184
|
+
trigger,
|
|
2185
|
+
Condition(warpack.wrapSafeCall(function()
|
|
2186
|
+
local source = ____exports.Unit:of(GetEventDamageSource())
|
|
2187
|
+
if source and source.typeId == dummyUnitId then
|
|
2188
|
+
source = nil
|
|
2189
|
+
end
|
|
2190
|
+
local target = BlzGetEventDamageTarget()
|
|
2191
|
+
local data = {
|
|
2192
|
+
amount = GetEventDamage(),
|
|
2193
|
+
attackType = BlzGetEventAttackType(),
|
|
2194
|
+
damageType = BlzGetEventDamageType(),
|
|
2195
|
+
weaponType = BlzGetEventWeaponType(),
|
|
2196
|
+
isAttack = BlzGetEventIsAttack()
|
|
2197
|
+
}
|
|
2198
|
+
if data.isAttack and source then
|
|
2199
|
+
local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
|
|
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])
|
|
2205
|
+
end
|
|
2206
|
+
if not data.isAttack or not source or not source._attackHandlers then
|
|
2207
|
+
invoke(
|
|
2208
|
+
event,
|
|
2209
|
+
source,
|
|
2210
|
+
____exports.Unit:of(target),
|
|
2211
|
+
setmetatable(
|
|
2212
|
+
{},
|
|
2213
|
+
{
|
|
2214
|
+
__index = data,
|
|
2215
|
+
__newindex = function(self, key, value)
|
|
2216
|
+
damageSetters[key](value)
|
|
2217
|
+
data[key] = value
|
|
2218
|
+
end
|
|
2219
|
+
}
|
|
2220
|
+
)
|
|
2221
|
+
)
|
|
2222
|
+
return
|
|
2223
|
+
end
|
|
2224
|
+
BlzSetEventDamage(0)
|
|
2225
|
+
BlzSetEventAttackType(ATTACK_TYPE_NORMAL)
|
|
2226
|
+
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2227
|
+
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2228
|
+
local sourceOwner = source.owner.handle
|
|
2229
|
+
local targetOwner = GetOwningPlayer(target)
|
|
2230
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2231
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2232
|
+
Timer:run(function()
|
|
2233
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2234
|
+
end)
|
|
2235
|
+
end
|
|
2236
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2237
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2238
|
+
Timer:run(function()
|
|
2239
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2240
|
+
end)
|
|
2241
|
+
end
|
|
2242
|
+
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2243
|
+
local condition = ____value[1]
|
|
2244
|
+
local action = ____value[2]
|
|
2245
|
+
if condition(
|
|
2246
|
+
source,
|
|
2247
|
+
____exports.Unit:of(target),
|
|
2248
|
+
data
|
|
2249
|
+
) then
|
|
2250
|
+
action(
|
|
2251
|
+
source,
|
|
2252
|
+
____exports.Unit:of(target),
|
|
2253
|
+
setmetatable(
|
|
2254
|
+
{fire = function()
|
|
2255
|
+
UnitDamageTarget(
|
|
2256
|
+
source.handle,
|
|
2257
|
+
target,
|
|
2258
|
+
data.amount,
|
|
2259
|
+
true,
|
|
2260
|
+
true,
|
|
2261
|
+
data.attackType,
|
|
2262
|
+
data.damageType,
|
|
2263
|
+
data.weaponType
|
|
2264
|
+
)
|
|
2265
|
+
end},
|
|
2266
|
+
{__index = data, __newindex = data}
|
|
2267
|
+
)
|
|
2268
|
+
)
|
|
2269
|
+
return
|
|
2270
|
+
end
|
|
2271
|
+
end
|
|
2272
|
+
end))
|
|
2273
|
+
)
|
|
2274
|
+
return event
|
|
2275
|
+
end)()
|
|
2276
|
+
Unit.onDamage = __TS__New(
|
|
2277
|
+
InitializingEvent,
|
|
2278
|
+
function(event)
|
|
2279
|
+
local invoke = Event.invoke
|
|
2280
|
+
local trigger = CreateTrigger()
|
|
2281
|
+
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
|
+
TriggerAddCondition(
|
|
2283
|
+
trigger,
|
|
2284
|
+
Condition(warpack.wrapSafeCall(function()
|
|
2285
|
+
local source = ____exports.Unit:of(GetEventDamageSource())
|
|
2286
|
+
if source and source.typeId == dummyUnitId then
|
|
2287
|
+
source = nil
|
|
2288
|
+
end
|
|
2289
|
+
local data = {
|
|
2290
|
+
amount = GetEventDamage(),
|
|
2291
|
+
attackType = BlzGetEventAttackType(),
|
|
2292
|
+
damageType = BlzGetEventDamageType(),
|
|
2293
|
+
weaponType = BlzGetEventWeaponType(),
|
|
2294
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2295
|
+
preventDeath = damageEventPreventDeath
|
|
2296
|
+
}
|
|
2297
|
+
local evData = setmetatable(
|
|
2298
|
+
{},
|
|
2299
|
+
{
|
|
2300
|
+
__index = data,
|
|
2301
|
+
__newindex = function(self, key, value)
|
|
2302
|
+
damageSetters[key](value)
|
|
2303
|
+
data[key] = value
|
|
2304
|
+
end
|
|
2305
|
+
}
|
|
2306
|
+
)
|
|
2307
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2308
|
+
invoke(event, source, target, evData)
|
|
2309
|
+
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
|
+
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
+
target[102] = (target[102] or 0) + bonusHealth
|
|
2312
|
+
BlzSetUnitMaxHP(
|
|
2313
|
+
target.handle,
|
|
2314
|
+
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
2315
|
+
)
|
|
2316
|
+
SetWidgetLife(
|
|
2317
|
+
target.handle,
|
|
2318
|
+
GetWidgetLife(target.handle) + bonusHealth
|
|
2319
|
+
)
|
|
2320
|
+
Timer:run(function()
|
|
2321
|
+
warpack.safeCall(
|
|
2322
|
+
evData[0],
|
|
2323
|
+
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
|
+
)
|
|
2325
|
+
target[102] = (target[102] or 0) - bonusHealth
|
|
2326
|
+
SetWidgetLife(
|
|
2327
|
+
target.handle,
|
|
2328
|
+
GetWidgetLife(target.handle) - bonusHealth
|
|
2329
|
+
)
|
|
2330
|
+
BlzSetUnitMaxHP(
|
|
2331
|
+
target.handle,
|
|
2332
|
+
BlzGetUnitMaxHP(target.handle) - bonusHealth
|
|
2333
|
+
)
|
|
2334
|
+
end)
|
|
2335
|
+
end
|
|
2336
|
+
end))
|
|
2337
|
+
)
|
|
2338
|
+
return trigger
|
|
2339
|
+
end,
|
|
2340
|
+
function(trigger)
|
|
2341
|
+
TriggerClearConditions(trigger)
|
|
2342
|
+
DestroyTrigger(trigger)
|
|
2343
|
+
end
|
|
2344
|
+
)
|
|
2345
|
+
Unit.onItemDrop = __TS__New(
|
|
2346
|
+
____exports.UnitTriggerEvent,
|
|
2347
|
+
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
|
+
function()
|
|
2349
|
+
local unit = getTriggerUnit()
|
|
2350
|
+
if getUnitTypeId(unit) ~= dummyUnitId then
|
|
2351
|
+
return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
|
|
2352
|
+
end
|
|
2353
|
+
return IgnoreEvent
|
|
2354
|
+
end
|
|
2355
|
+
)
|
|
2356
|
+
Unit.onItemPickup = __TS__New(
|
|
2357
|
+
____exports.UnitTriggerEvent,
|
|
2358
|
+
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
|
+
function()
|
|
2360
|
+
local unit = getTriggerUnit()
|
|
2361
|
+
if getUnitTypeId(unit) ~= dummyUnitId then
|
|
2362
|
+
return ____exports.Unit:of(unit), Item:of(getManipulatedItem())
|
|
2363
|
+
end
|
|
2364
|
+
return IgnoreEvent
|
|
2365
|
+
end
|
|
2366
|
+
)
|
|
2367
|
+
Unit.onItemUse = __TS__New(
|
|
2368
|
+
____exports.UnitTriggerEvent,
|
|
2369
|
+
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
+
function() return ____exports.Unit:of(GetTriggerUnit()), Item:of(GetManipulatedItem()) end
|
|
2371
|
+
)
|
|
2372
|
+
__TS__ObjectDefineProperty(
|
|
2373
|
+
Unit,
|
|
2374
|
+
"onCreate",
|
|
2375
|
+
{get = function(self)
|
|
2376
|
+
local onCreate = dispatch(
|
|
2377
|
+
____exports.Unit.onCreateEvent,
|
|
2378
|
+
function(unit) return unit.typeId end,
|
|
2379
|
+
function(unit) return unit end
|
|
2380
|
+
)
|
|
2381
|
+
rawset(self, "onCreate", onCreate)
|
|
2382
|
+
return onCreate
|
|
2383
|
+
end}
|
|
2384
|
+
)
|
|
2385
|
+
__TS__ObjectDefineProperty(
|
|
2386
|
+
Unit,
|
|
2387
|
+
"destroyEvent",
|
|
2388
|
+
{get = function(self)
|
|
2389
|
+
local destroyEvent = dispatch(
|
|
2390
|
+
____exports.Unit.onDestroyEvent,
|
|
2391
|
+
function(unit) return unit.typeId end,
|
|
2392
|
+
function(unit) return unit end
|
|
2393
|
+
)
|
|
2394
|
+
rawset(self, "destroyEvent", destroyEvent)
|
|
2395
|
+
return destroyEvent
|
|
2396
|
+
end}
|
|
2397
|
+
);
|
|
2398
|
+
(function(self)
|
|
2399
|
+
local leaveAbilityIds = postcompile(function()
|
|
2400
|
+
local parentLeaveAbilityIds = __TS__New(Set, {"Adef", "Amdf", "AEim", "ACim"})
|
|
2401
|
+
local leaveAbilityIds = {__TS__Spread(parentLeaveAbilityIds:values())}
|
|
2402
|
+
if currentMap then
|
|
2403
|
+
for id, ability in pairs(currentMap.objects.ability.all) do
|
|
2404
|
+
if ability.parentId and parentLeaveAbilityIds:has(ability.parentId) then
|
|
2405
|
+
leaveAbilityIds[#leaveAbilityIds + 1] = id
|
|
2406
|
+
end
|
|
2407
|
+
end
|
|
2408
|
+
end
|
|
2409
|
+
return __TS__ArrayMap(
|
|
2410
|
+
leaveAbilityIds,
|
|
2411
|
+
function(____, id) return fourCC(id) end
|
|
2412
|
+
)
|
|
2413
|
+
end)
|
|
2414
|
+
for ____, leaveOrderId in ipairs({
|
|
2415
|
+
orderId("undefend"),
|
|
2416
|
+
orderId("magicundefense"),
|
|
2417
|
+
orderId("unimmolation")
|
|
2418
|
+
}) do
|
|
2419
|
+
____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
|
|
2420
|
+
local handle = unit.handle
|
|
2421
|
+
for i = 1, #leaveAbilityIds do
|
|
2422
|
+
if getUnitAbilityLevel(handle, leaveAbilityIds[i]) ~= 0 then
|
|
2423
|
+
return
|
|
2424
|
+
end
|
|
2425
|
+
end
|
|
2426
|
+
unit:destroy()
|
|
2427
|
+
end)
|
|
2428
|
+
end
|
|
2429
|
+
end)(Unit)
|
|
2430
|
+
return ____exports
|