warscript 0.0.1-dev.8c7ee30 → 0.0.1-dev.8d8d605
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +9 -0
- package/core/types/frame.lua +193 -23
- package/core/types/handle.lua +11 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +18 -25
- package/core/types/sound.lua +113 -33
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/types/unit.d.ts +4 -0
- package/core/types/unit.lua +4 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +16 -3
- package/engine/behavior.lua +233 -73
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +42 -11
- package/engine/behaviour/ability/damage.lua +88 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +44 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +29 -7
- package/engine/behaviour/ability.lua +148 -43
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +46 -2
- package/engine/behaviour/unit.lua +290 -6
- package/engine/buff.d.ts +166 -57
- package/engine/buff.lua +766 -274
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +27 -14
- package/engine/internal/ability.lua +164 -101
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.d.ts +1 -0
- package/engine/internal/item+owner.lua +19 -6
- package/engine/internal/item.d.ts +30 -18
- package/engine/internal/item.lua +292 -102
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +45 -1
- package/engine/internal/unit/ability.lua +142 -19
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bag.d.ts +18 -0
- package/engine/internal/unit/bag.lua +63 -0
- package/engine/internal/unit/bonus.d.ts +12 -2
- package/engine/internal/unit/bonus.lua +56 -4
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment.d.ts +36 -0
- package/engine/internal/unit/equipment.lua +169 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/inventory.d.ts +24 -0
- package/engine/internal/unit/inventory.lua +77 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +12 -3
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +11 -11
- package/engine/internal/unit+damage.lua +43 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +70 -13
- package/engine/internal/unit.d.ts +63 -30
- package/engine/internal/unit.lua +509 -291
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +34 -2
- package/engine/local-client.lua +386 -15
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
- package/engine/object-data/auxiliary/equipment-type.lua +2 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +30 -19
- package/engine/object-data/entry/ability-type.lua +230 -40
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +10 -12
- package/engine/object-data/entry/buff-type.lua +39 -29
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +26 -3
- package/engine/object-data/entry/item-type.lua +145 -2
- package/engine/object-data/entry/lightning-type.d.ts +2 -2
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +71 -6
- package/engine/object-data/entry/unit-type.lua +592 -93
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +19 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +61 -7
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +362 -117
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +12 -0
- package/engine/unit.lua +12 -0
- package/event.d.ts +1 -1
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +8 -3
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +28 -3
- package/objutil/buff.lua +12 -11
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +16 -3
- package/utility/linked-set.lua +54 -3
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -6,6 +6,7 @@ local __TS__New = ____lualib.__TS__New
|
|
|
6
6
|
local __TS__Class = ____lualib.__TS__Class
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
8
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
9
|
+
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
9
10
|
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
10
11
|
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
11
12
|
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
@@ -50,33 +51,42 @@ local ____arrays = require("utility.arrays")
|
|
|
50
51
|
local forEach = ____arrays.forEach
|
|
51
52
|
local ____math = require("math")
|
|
52
53
|
local min = ____math.min
|
|
54
|
+
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
|
+
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
63
|
+
local ____ability = require("engine.internal.item.ability")
|
|
64
|
+
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
65
|
+
local ____synchronization = require("engine.synchronization")
|
|
66
|
+
local synchronizer = ____synchronization.synchronizer
|
|
67
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
68
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
53
69
|
local match = string.match
|
|
54
70
|
local ____tostring = _G.tostring
|
|
55
71
|
local setUnitAnimation = SetUnitAnimation
|
|
56
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
57
72
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
58
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
59
73
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
60
74
|
local getUnitRealField = BlzGetUnitRealField
|
|
61
75
|
local getHeroStr = GetHeroStr
|
|
62
76
|
local getHeroAgi = GetHeroAgi
|
|
63
77
|
local getHeroInt = GetHeroInt
|
|
64
|
-
local setHeroStr = SetHeroStr
|
|
65
|
-
local setHeroAgi = SetHeroAgi
|
|
66
|
-
local setHeroInt = SetHeroInt
|
|
67
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
68
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
69
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
70
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
71
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
72
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
73
|
-
local setUnitScale = SetUnitScale
|
|
74
84
|
local setUnitPosition = SetUnitPosition
|
|
75
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
76
86
|
local getHandleId = GetHandleId
|
|
87
|
+
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
77
88
|
local createUnit = CreateUnit
|
|
78
89
|
local killUnit = KillUnit
|
|
79
|
-
local setUnitExploded = SetUnitExploded
|
|
80
90
|
local removeUnit = RemoveUnit
|
|
81
91
|
local getUnitTypeId = GetUnitTypeId
|
|
82
92
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -92,15 +102,12 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
92
102
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
93
103
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
94
104
|
local isUnitInRange = IsUnitInRange
|
|
95
|
-
local setResourceAmount = SetResourceAmount
|
|
96
|
-
local getResourceAmount = GetResourceAmount
|
|
97
105
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
98
106
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
99
107
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
100
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
101
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
102
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
103
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
104
111
|
local isUnitInvisible = IsUnitInvisible
|
|
105
112
|
local isUnitVisible = IsUnitVisible
|
|
106
113
|
local getUnitX = GetUnitX
|
|
@@ -117,15 +124,9 @@ local getOrderedUnit = GetOrderedUnit
|
|
|
117
124
|
local getIssuedOrderId = GetIssuedOrderId
|
|
118
125
|
local isUnitInvulnerable = BlzIsUnitInvulnerable
|
|
119
126
|
local unitAlive = UnitAlive
|
|
120
|
-
local unitAddType = UnitAddType
|
|
121
|
-
local unitRemoveType = UnitRemoveType
|
|
122
|
-
local isUnitIllusion = IsUnitIllusion
|
|
123
|
-
local isUnitType = IsUnitType
|
|
124
127
|
local isUnitAlly = IsUnitAlly
|
|
125
128
|
local isUnitEnemy = IsUnitEnemy
|
|
126
129
|
local getOwningPlayer = GetOwningPlayer
|
|
127
|
-
local setUnitColor = SetUnitColor
|
|
128
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
129
130
|
____exports.UnitClassification = {}
|
|
130
131
|
local UnitClassification = ____exports.UnitClassification
|
|
131
132
|
do
|
|
@@ -135,6 +136,7 @@ do
|
|
|
135
136
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
136
137
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
137
138
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
139
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
138
140
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
139
141
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
140
142
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -289,7 +291,6 @@ local function dispatch(event, idGetter, argsGetter)
|
|
|
289
291
|
return event[id]
|
|
290
292
|
end
|
|
291
293
|
if not initialized then
|
|
292
|
-
local invoke = Event.invoke
|
|
293
294
|
event:addListener(function(...)
|
|
294
295
|
local id = idGetter(...)
|
|
295
296
|
local dispatched = rawget(self, id)
|
|
@@ -327,7 +328,6 @@ local function dispatchAbility(event)
|
|
|
327
328
|
return event[id]
|
|
328
329
|
end
|
|
329
330
|
if not initialized then
|
|
330
|
-
local invoke = Event.invoke
|
|
331
331
|
event:addListener(function(unit, ability, ...)
|
|
332
332
|
local dispatched = rawget(self, ability.typeId)
|
|
333
333
|
if dispatched ~= nil then
|
|
@@ -344,6 +344,9 @@ local function dispatchAbility(event)
|
|
|
344
344
|
}
|
|
345
345
|
)
|
|
346
346
|
end
|
|
347
|
+
local function damagingEventPreventRetaliation(self)
|
|
348
|
+
self[0] = true
|
|
349
|
+
end
|
|
347
350
|
local function damageEventPreventDeath(self, callback, ...)
|
|
348
351
|
if self[0] ~= nil then
|
|
349
352
|
return
|
|
@@ -355,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
355
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
356
359
|
end
|
|
357
360
|
end
|
|
358
|
-
local damageSetters = {
|
|
361
|
+
local damageSetters = {
|
|
362
|
+
amount = BlzSetEventDamage,
|
|
363
|
+
attackType = function(attackType)
|
|
364
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
365
|
+
end,
|
|
366
|
+
damageType = BlzSetEventDamageType,
|
|
367
|
+
weaponType = BlzSetEventWeaponType
|
|
368
|
+
}
|
|
359
369
|
local jlimitopByOperator = {
|
|
360
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
361
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -373,15 +383,27 @@ local modifiers = {
|
|
|
373
383
|
end,
|
|
374
384
|
armor = function(unit, value)
|
|
375
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
376
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
377
391
|
end
|
|
378
|
-
local ability = assert(
|
|
379
|
-
|
|
380
|
-
ability,
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
392
|
+
local ability = assert(
|
|
393
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
394
|
+
"armor bonus ability must be existing",
|
|
395
|
+
unit
|
|
396
|
+
)
|
|
397
|
+
assert(
|
|
398
|
+
BlzSetAbilityRealLevelField(
|
|
399
|
+
ability,
|
|
400
|
+
armorBonusField,
|
|
401
|
+
0,
|
|
402
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
403
|
+
),
|
|
404
|
+
"armor bonus ability field must be set",
|
|
405
|
+
unit
|
|
406
|
+
)
|
|
385
407
|
end
|
|
386
408
|
}
|
|
387
409
|
local getters = {
|
|
@@ -399,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
399
421
|
self.unit = unit
|
|
400
422
|
self.index = index
|
|
401
423
|
end
|
|
424
|
+
__TS__SetDescriptor(
|
|
425
|
+
UnitWeapon.prototype,
|
|
426
|
+
"isEnabled",
|
|
427
|
+
{
|
|
428
|
+
get = function(self)
|
|
429
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
430
|
+
end,
|
|
431
|
+
set = function(self, isEnabled)
|
|
432
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
433
|
+
end
|
|
434
|
+
},
|
|
435
|
+
true
|
|
436
|
+
)
|
|
402
437
|
__TS__SetDescriptor(
|
|
403
438
|
UnitWeapon.prototype,
|
|
404
439
|
"cooldown",
|
|
@@ -433,6 +468,19 @@ __TS__SetDescriptor(
|
|
|
433
468
|
},
|
|
434
469
|
true
|
|
435
470
|
)
|
|
471
|
+
__TS__SetDescriptor(
|
|
472
|
+
UnitWeapon.prototype,
|
|
473
|
+
"allowedTargetCombatClassifications",
|
|
474
|
+
{
|
|
475
|
+
get = function(self)
|
|
476
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
477
|
+
end,
|
|
478
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
479
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
480
|
+
end
|
|
481
|
+
},
|
|
482
|
+
true
|
|
483
|
+
)
|
|
436
484
|
__TS__SetDescriptor(
|
|
437
485
|
UnitWeapon.prototype,
|
|
438
486
|
"damageBase",
|
|
@@ -563,17 +611,6 @@ local function retrieveAbility(unit, ability, abilityId)
|
|
|
563
611
|
____exports.Unit:of(unit)
|
|
564
612
|
)
|
|
565
613
|
end
|
|
566
|
-
if not unitAddAbility(unit, abilityId) then
|
|
567
|
-
if getUnitAbility(unit, abilityId) == ability then
|
|
568
|
-
return UnitAbility:of(
|
|
569
|
-
ability,
|
|
570
|
-
abilityId,
|
|
571
|
-
____exports.Unit:of(unit)
|
|
572
|
-
)
|
|
573
|
-
end
|
|
574
|
-
else
|
|
575
|
-
unitRemoveAbility(unit, abilityId)
|
|
576
|
-
end
|
|
577
614
|
for i = 0, unitInventorySize(unit) - 1 do
|
|
578
615
|
local item = unitItemInSlot(unit, i)
|
|
579
616
|
if getItemAbility(item, abilityId) == ability then
|
|
@@ -620,26 +657,30 @@ local fieldSetters = {
|
|
|
620
657
|
}
|
|
621
658
|
local dummies = {}
|
|
622
659
|
for ____, player in ipairs(Player.all) do
|
|
623
|
-
local dummy = assert(
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
660
|
+
local dummy = assert(
|
|
661
|
+
createUnit(
|
|
662
|
+
player.handle,
|
|
663
|
+
dummyUnitId,
|
|
664
|
+
0,
|
|
665
|
+
0,
|
|
666
|
+
270
|
|
667
|
+
),
|
|
668
|
+
"dummy must be created",
|
|
669
|
+
player
|
|
670
|
+
)
|
|
630
671
|
ShowUnit(dummy, false)
|
|
631
672
|
dummies[player] = dummy
|
|
632
673
|
end
|
|
633
674
|
local function delayHealthChecksCallback(unit)
|
|
634
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
635
676
|
if counter ~= 0 then
|
|
636
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
637
678
|
return
|
|
638
679
|
end
|
|
639
|
-
unit[
|
|
640
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
641
682
|
if healthBonus ~= nil then
|
|
642
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
643
684
|
local handle = unit.handle
|
|
644
685
|
BlzSetUnitMaxHP(
|
|
645
686
|
handle,
|
|
@@ -647,45 +688,84 @@ local function delayHealthChecksCallback(unit)
|
|
|
647
688
|
)
|
|
648
689
|
end
|
|
649
690
|
end
|
|
691
|
+
local nextSyncId = 1
|
|
692
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
693
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
694
|
+
local function addAbility(unit, abilityTypeId)
|
|
695
|
+
local ____unitAddAbility_result_0
|
|
696
|
+
if unitAddAbility(unit, abilityTypeId) then
|
|
697
|
+
____unitAddAbility_result_0 = getUnitAbility(unit, abilityTypeId)
|
|
698
|
+
else
|
|
699
|
+
____unitAddAbility_result_0 = nil
|
|
700
|
+
end
|
|
701
|
+
return ____unitAddAbility_result_0
|
|
702
|
+
end
|
|
650
703
|
____exports.Unit = __TS__Class()
|
|
651
704
|
local Unit = ____exports.Unit
|
|
652
705
|
Unit.name = "Unit"
|
|
653
706
|
__TS__ClassExtends(Unit, Handle)
|
|
654
707
|
function Unit.prototype.____constructor(self, handle)
|
|
655
708
|
Handle.prototype.____constructor(self, handle)
|
|
709
|
+
local ____nextSyncId_1 = nextSyncId
|
|
710
|
+
nextSyncId = ____nextSyncId_1 + 1
|
|
711
|
+
self.syncId = ____nextSyncId_1
|
|
656
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
657
|
-
assert(
|
|
658
|
-
|
|
713
|
+
assert(
|
|
714
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
715
|
+
"leave detection ability must be added",
|
|
716
|
+
self
|
|
717
|
+
)
|
|
718
|
+
assert(
|
|
719
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
720
|
+
"morph detection ability must be added",
|
|
721
|
+
self
|
|
722
|
+
)
|
|
659
723
|
if unitAddAbility(
|
|
660
724
|
handle,
|
|
661
725
|
fourCC("Amrf")
|
|
662
726
|
) then
|
|
663
|
-
assert(
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
667
735
|
end
|
|
736
|
+
unitBySyncId[self.syncId] = self
|
|
668
737
|
local ____ = self.abilities
|
|
669
738
|
end
|
|
670
|
-
function Unit.prototype.getEvent(self,
|
|
671
|
-
self.events = self.events or (
|
|
672
|
-
local eventId = GetHandleId(
|
|
673
|
-
|
|
674
|
-
|
|
739
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
740
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
741
|
+
local eventId = GetHandleId(jevent)
|
|
742
|
+
local event = self.events:get(eventId)
|
|
743
|
+
if event == nil then
|
|
744
|
+
event = __TS__New(
|
|
675
745
|
TriggerEvent,
|
|
676
746
|
function(trigger)
|
|
677
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
678
748
|
end,
|
|
679
749
|
collector or (function() return {} end)
|
|
680
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
681
752
|
end
|
|
682
|
-
return
|
|
753
|
+
return event
|
|
754
|
+
end
|
|
755
|
+
function Unit.prototype.saveData(self)
|
|
756
|
+
local handle = self.handle
|
|
757
|
+
self[108] = self[108] or getUnitX(handle)
|
|
758
|
+
self[109] = self[109] or getUnitY(handle)
|
|
759
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
683
760
|
end
|
|
684
761
|
function Unit.prototype.onDestroy(self)
|
|
685
762
|
local handle = self.handle
|
|
686
|
-
|
|
687
|
-
|
|
763
|
+
self:saveData()
|
|
764
|
+
local abilities = self.abilities
|
|
765
|
+
for ____, ability in ipairs(abilities) do
|
|
766
|
+
ability:destroy()
|
|
688
767
|
end
|
|
768
|
+
__TS__ArraySetLength(abilities, 0)
|
|
689
769
|
for ____, player in ipairs(Player.all) do
|
|
690
770
|
if self:isSelected(player) then
|
|
691
771
|
Event.invoke(____exports.Unit.onDeselect, self, player)
|
|
@@ -700,6 +780,10 @@ function Unit.prototype.onDestroy(self)
|
|
|
700
780
|
if eventsToDestroy ~= nil then
|
|
701
781
|
forEach(eventsToDestroy, "destroy")
|
|
702
782
|
end
|
|
783
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
|
|
784
|
+
unitRemoveAbility(handle, leaveDetectAbilityId)
|
|
785
|
+
removeUnit(handle)
|
|
786
|
+
end
|
|
703
787
|
return Handle.prototype.onDestroy(self)
|
|
704
788
|
end
|
|
705
789
|
function Unit.prototype.addAttackHandler(self, condition, action)
|
|
@@ -712,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
712
796
|
self._attackHandlers = handlers
|
|
713
797
|
if #handlers == 1 then
|
|
714
798
|
local handle = self.handle
|
|
715
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
716
804
|
end
|
|
717
805
|
return handler
|
|
718
806
|
end
|
|
@@ -741,17 +829,17 @@ function Unit.prototype.addModifier(self, property, modifier)
|
|
|
741
829
|
end}
|
|
742
830
|
end
|
|
743
831
|
function Unit.prototype.hasCombatClassification(self, combatClassification)
|
|
744
|
-
local
|
|
745
|
-
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) &
|
|
832
|
+
local ____combatClassification_2 = combatClassification
|
|
833
|
+
return getUnitIntegerField(self.handle, UNIT_IF_TARGETED_AS) & ____combatClassification_2 == ____combatClassification_2
|
|
746
834
|
end
|
|
747
835
|
function Unit.prototype.addClassification(self, classification)
|
|
748
|
-
return
|
|
836
|
+
return UnitAddType(self.handle, classification)
|
|
749
837
|
end
|
|
750
838
|
function Unit.prototype.removeClassification(self, classification)
|
|
751
|
-
return
|
|
839
|
+
return UnitRemoveType(self.handle, classification)
|
|
752
840
|
end
|
|
753
841
|
function Unit.prototype.hasClassification(self, classification)
|
|
754
|
-
return
|
|
842
|
+
return IsUnitType(self.handle, classification)
|
|
755
843
|
end
|
|
756
844
|
function Unit.prototype.isVisibleTo(self, player)
|
|
757
845
|
return isUnitVisible(self.handle, player.handle)
|
|
@@ -760,13 +848,13 @@ function Unit.prototype.isInvisibleTo(self, player)
|
|
|
760
848
|
return isUnitInvisible(self.handle, player.handle)
|
|
761
849
|
end
|
|
762
850
|
function Unit.prototype.isInRangeOf(self, x, y, range)
|
|
763
|
-
local
|
|
851
|
+
local ____temp_3
|
|
764
852
|
if type(x) == "number" then
|
|
765
|
-
|
|
853
|
+
____temp_3 = isUnitInRangeXY(self.handle, x, y, range)
|
|
766
854
|
else
|
|
767
|
-
|
|
855
|
+
____temp_3 = isUnitInRange(self.handle, x.handle, y)
|
|
768
856
|
end
|
|
769
|
-
return
|
|
857
|
+
return ____temp_3
|
|
770
858
|
end
|
|
771
859
|
function Unit.prototype.isAllyOf(self, unit)
|
|
772
860
|
return isUnitAlly(
|
|
@@ -784,16 +872,30 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
784
872
|
if type(animation) == "number" then
|
|
785
873
|
setUnitAnimationByIndex(self.handle, animation)
|
|
786
874
|
elseif rarity then
|
|
787
|
-
|
|
875
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
788
876
|
else
|
|
789
877
|
setUnitAnimation(self.handle, animation)
|
|
790
878
|
end
|
|
791
879
|
end
|
|
880
|
+
function Unit.prototype.resetAnimation(self)
|
|
881
|
+
ResetUnitAnimation(self.handle)
|
|
882
|
+
end
|
|
792
883
|
function Unit.prototype.queueAnimation(self, animation)
|
|
793
|
-
|
|
884
|
+
QueueUnitAnimation(self.handle, animation)
|
|
885
|
+
end
|
|
886
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
887
|
+
local firstWeapon = self.firstWeapon
|
|
888
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
889
|
+
return firstWeapon
|
|
890
|
+
end
|
|
891
|
+
local secondWeapon = self.secondWeapon
|
|
892
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
893
|
+
return secondWeapon
|
|
894
|
+
end
|
|
895
|
+
return nil
|
|
794
896
|
end
|
|
795
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
796
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
797
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
798
900
|
end
|
|
799
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -803,21 +905,21 @@ function Unit.prototype.isSelected(self, player)
|
|
|
803
905
|
return IsUnitSelected(self.handle, player.handle)
|
|
804
906
|
end
|
|
805
907
|
function Unit.prototype.explode(self)
|
|
806
|
-
|
|
908
|
+
SetUnitExploded(self.handle, true)
|
|
807
909
|
killUnit(self.handle)
|
|
808
910
|
end
|
|
809
911
|
function Unit.prototype.kill(self)
|
|
810
912
|
killUnit(self.handle)
|
|
811
913
|
end
|
|
812
914
|
function Unit.prototype.revive(self, x, y, doEffect)
|
|
813
|
-
local
|
|
814
|
-
local
|
|
815
|
-
local
|
|
816
|
-
if
|
|
817
|
-
|
|
915
|
+
local ____ReviveHero_6 = ReviveHero
|
|
916
|
+
local ____array_5 = __TS__SparseArrayNew(self.handle, x, y)
|
|
917
|
+
local ____doEffect_4 = doEffect
|
|
918
|
+
if ____doEffect_4 == nil then
|
|
919
|
+
____doEffect_4 = false
|
|
818
920
|
end
|
|
819
|
-
__TS__SparseArrayPush(
|
|
820
|
-
|
|
921
|
+
__TS__SparseArrayPush(____array_5, ____doEffect_4)
|
|
922
|
+
____ReviveHero_6(__TS__SparseArraySpread(____array_5))
|
|
821
923
|
end
|
|
822
924
|
function Unit.prototype.healTarget(self, target, amount)
|
|
823
925
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -857,20 +959,19 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
857
959
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
858
960
|
end
|
|
859
961
|
function Unit.prototype.itemInSlot(self, slot)
|
|
860
|
-
return Item:of(
|
|
962
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
861
963
|
end
|
|
862
964
|
function Unit.prototype.addAbility(self, abilityId)
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
965
|
+
local ability = UnitAbility:of(
|
|
966
|
+
doUnitAbilityAction(self.handle, abilityId, addAbility, abilityId),
|
|
967
|
+
abilityId,
|
|
968
|
+
self
|
|
969
|
+
)
|
|
970
|
+
if ability ~= nil then
|
|
869
971
|
local abilities = self.abilities
|
|
870
972
|
abilities[#abilities + 1] = ability
|
|
871
|
-
return ability
|
|
872
973
|
end
|
|
873
|
-
return
|
|
974
|
+
return ability
|
|
874
975
|
end
|
|
875
976
|
function Unit.prototype.makeAbilityPermanent(self, abilityId, permanent)
|
|
876
977
|
return UnitMakeAbilityPermanent(self.handle, permanent, abilityId)
|
|
@@ -884,31 +985,21 @@ end
|
|
|
884
985
|
function Unit.prototype.hasAbility(self, abilityId)
|
|
885
986
|
return getUnitAbilityLevel(self.handle, abilityId) > 0
|
|
886
987
|
end
|
|
887
|
-
function Unit.prototype.
|
|
888
|
-
local
|
|
889
|
-
|
|
890
|
-
assert(unitRemoveAbility(handle, abilityId))
|
|
891
|
-
return nil
|
|
892
|
-
end
|
|
893
|
-
return UnitAbility:of(
|
|
894
|
-
getUnitAbility(self.handle, abilityId),
|
|
895
|
-
abilityId,
|
|
896
|
-
self
|
|
897
|
-
)
|
|
988
|
+
function Unit.prototype.getAbility(self, abilityId)
|
|
989
|
+
local ability = doUnitAbilityAction(self.handle, abilityId, getUnitAbility, abilityId)
|
|
990
|
+
return UnitAbility:of(ability, abilityId, self)
|
|
898
991
|
end
|
|
899
|
-
function Unit.prototype.removeAbility(self,
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
end
|
|
992
|
+
function Unit.prototype.removeAbility(self, abilityTypeId)
|
|
993
|
+
local abilities = self.abilities
|
|
994
|
+
for i = 1, #abilities do
|
|
995
|
+
if abilities[i].typeId == abilityTypeId then
|
|
996
|
+
local ability = abilities[i]
|
|
997
|
+
tremove(abilities, i)
|
|
998
|
+
ability:destroy()
|
|
999
|
+
return true
|
|
908
1000
|
end
|
|
909
|
-
return true
|
|
910
1001
|
end
|
|
911
|
-
return
|
|
1002
|
+
return doUnitAbilityAction(self.handle, abilityTypeId, unitRemoveAbility, abilityTypeId)
|
|
912
1003
|
end
|
|
913
1004
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
914
1005
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
@@ -922,12 +1013,16 @@ end
|
|
|
922
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
923
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
924
1015
|
end
|
|
925
|
-
function Unit.prototype.interruptAttack(self)
|
|
926
|
-
unitInterruptAttack(self.handle)
|
|
927
|
-
end
|
|
928
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
929
|
-
|
|
930
|
-
unitDisableAbility(
|
|
1017
|
+
local handle = self.handle
|
|
1018
|
+
unitDisableAbility(handle, abilityId, true, false)
|
|
1019
|
+
Timer:run(
|
|
1020
|
+
unitDisableAbility,
|
|
1021
|
+
handle,
|
|
1022
|
+
abilityId,
|
|
1023
|
+
false,
|
|
1024
|
+
false
|
|
1025
|
+
)
|
|
931
1026
|
end
|
|
932
1027
|
function Unit.prototype.getDistanceTo(self, target)
|
|
933
1028
|
local handle = self.handle
|
|
@@ -987,18 +1082,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
987
1082
|
self:decrementStunCounter()
|
|
988
1083
|
end
|
|
989
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
990
|
-
local stunCounter = self[
|
|
991
|
-
if not self[
|
|
1085
|
+
local stunCounter = self[102] or 0
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
992
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
993
1088
|
end
|
|
994
|
-
self[
|
|
1089
|
+
self[102] = stunCounter + 1
|
|
995
1090
|
end
|
|
996
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
997
|
-
local stunCounter = self[
|
|
998
|
-
if not self[
|
|
1092
|
+
local stunCounter = self[102] or 0
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
999
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1000
1095
|
end
|
|
1001
|
-
self[
|
|
1096
|
+
self[102] = stunCounter - 1
|
|
1097
|
+
end
|
|
1098
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1099
|
+
local forceStunCounter = self[103] or 0
|
|
1100
|
+
if forceStunCounter == 0 then
|
|
1101
|
+
local handle = self.handle
|
|
1102
|
+
if not self[101] then
|
|
1103
|
+
for _ = self[102] or 0, -1 do
|
|
1104
|
+
BlzPauseUnitEx(handle, true)
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
BlzPauseUnitEx(handle, true)
|
|
1108
|
+
end
|
|
1109
|
+
self[103] = forceStunCounter + 1
|
|
1110
|
+
end
|
|
1111
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1112
|
+
local forceStunCounter = self[103] or 0
|
|
1113
|
+
if forceStunCounter == 1 then
|
|
1114
|
+
local handle = self.handle
|
|
1115
|
+
if not self[101] then
|
|
1116
|
+
for _ = self[102] or 0, -1 do
|
|
1117
|
+
BlzPauseUnitEx(handle, false)
|
|
1118
|
+
end
|
|
1119
|
+
end
|
|
1120
|
+
BlzPauseUnitEx(handle, false)
|
|
1121
|
+
end
|
|
1122
|
+
self[103] = forceStunCounter - 1
|
|
1002
1123
|
end
|
|
1003
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1004
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
@@ -1100,8 +1221,11 @@ function Unit.getInSector(self, pos, range, offsetAngle, centralAngle)
|
|
|
1100
1221
|
)
|
|
1101
1222
|
return targetCollection
|
|
1102
1223
|
end
|
|
1103
|
-
function Unit.getSelectionOf(self, player)
|
|
1104
|
-
|
|
1224
|
+
function Unit.getSelectionOf(self, player, target)
|
|
1225
|
+
if target == nil then
|
|
1226
|
+
target = {}
|
|
1227
|
+
end
|
|
1228
|
+
targetCollection = target
|
|
1105
1229
|
targetCollectionNextIndex = 1
|
|
1106
1230
|
GroupEnumUnitsSelected(dummyGroup, player.handle, collectIntoTarget)
|
|
1107
1231
|
return targetCollection
|
|
@@ -1123,6 +1247,9 @@ end
|
|
|
1123
1247
|
function Unit.prototype.__tostring(self)
|
|
1124
1248
|
return (((self.constructor.name .. "$") .. util.id2s(self.typeId)) .. "@") .. tostring(getHandleId(self.handle))
|
|
1125
1249
|
end
|
|
1250
|
+
function Unit.getBySyncId(self, syncId)
|
|
1251
|
+
return unitBySyncId[syncId]
|
|
1252
|
+
end
|
|
1126
1253
|
__TS__SetDescriptor(
|
|
1127
1254
|
Unit.prototype,
|
|
1128
1255
|
"_deltas",
|
|
@@ -1182,7 +1309,15 @@ __TS__SetDescriptor(
|
|
|
1182
1309
|
Unit.prototype,
|
|
1183
1310
|
"isIllusion",
|
|
1184
1311
|
{get = function(self)
|
|
1185
|
-
return
|
|
1312
|
+
return IsUnitIllusion(self.handle)
|
|
1313
|
+
end},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1316
|
+
__TS__SetDescriptor(
|
|
1317
|
+
Unit.prototype,
|
|
1318
|
+
"isStunned",
|
|
1319
|
+
{get = function(self)
|
|
1320
|
+
return getUnitCurrentOrder(self.handle) == orderId("stunned")
|
|
1186
1321
|
end},
|
|
1187
1322
|
true
|
|
1188
1323
|
)
|
|
@@ -1261,13 +1396,13 @@ __TS__SetDescriptor(
|
|
|
1261
1396
|
)
|
|
1262
1397
|
__TS__SetDescriptor(
|
|
1263
1398
|
Unit.prototype,
|
|
1264
|
-
"
|
|
1399
|
+
"primaryAttribute",
|
|
1265
1400
|
{
|
|
1266
1401
|
get = function(self)
|
|
1267
|
-
return
|
|
1402
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1268
1403
|
end,
|
|
1269
|
-
set = function(self,
|
|
1270
|
-
|
|
1404
|
+
set = function(self, primaryAttribute)
|
|
1405
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1271
1406
|
end
|
|
1272
1407
|
},
|
|
1273
1408
|
true
|
|
@@ -1289,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1289
1424
|
end},
|
|
1290
1425
|
true
|
|
1291
1426
|
)
|
|
1292
|
-
__TS__SetDescriptor(
|
|
1293
|
-
Unit.prototype,
|
|
1294
|
-
"agilityBase",
|
|
1295
|
-
{
|
|
1296
|
-
get = function(self)
|
|
1297
|
-
return getHeroAgi(self.handle, false)
|
|
1298
|
-
end,
|
|
1299
|
-
set = function(self, agilityBase)
|
|
1300
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1301
|
-
end
|
|
1302
|
-
},
|
|
1303
|
-
true
|
|
1304
|
-
)
|
|
1305
1427
|
__TS__SetDescriptor(
|
|
1306
1428
|
Unit.prototype,
|
|
1307
1429
|
"agilityBonus",
|
|
@@ -1319,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1319
1441
|
end},
|
|
1320
1442
|
true
|
|
1321
1443
|
)
|
|
1322
|
-
__TS__SetDescriptor(
|
|
1323
|
-
Unit.prototype,
|
|
1324
|
-
"intelligenceBase",
|
|
1325
|
-
{
|
|
1326
|
-
get = function(self)
|
|
1327
|
-
return getHeroInt(self.handle, false)
|
|
1328
|
-
end,
|
|
1329
|
-
set = function(self, intelligenceBase)
|
|
1330
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1331
|
-
end
|
|
1332
|
-
},
|
|
1333
|
-
true
|
|
1334
|
-
)
|
|
1335
1444
|
__TS__SetDescriptor(
|
|
1336
1445
|
Unit.prototype,
|
|
1337
1446
|
"intelligenceBonus",
|
|
@@ -1380,17 +1489,17 @@ __TS__SetDescriptor(
|
|
|
1380
1489
|
"isTeamGlowVisible",
|
|
1381
1490
|
{
|
|
1382
1491
|
get = function(self)
|
|
1383
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1384
1493
|
end,
|
|
1385
1494
|
set = function(self, isTeamGlowVisible)
|
|
1386
|
-
|
|
1387
|
-
local
|
|
1495
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1496
|
+
local ____temp_7
|
|
1388
1497
|
if not isTeamGlowVisible then
|
|
1389
|
-
|
|
1498
|
+
____temp_7 = true
|
|
1390
1499
|
else
|
|
1391
|
-
|
|
1500
|
+
____temp_7 = nil
|
|
1392
1501
|
end
|
|
1393
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1394
1503
|
end
|
|
1395
1504
|
},
|
|
1396
1505
|
true
|
|
@@ -1399,9 +1508,9 @@ __TS__SetDescriptor(
|
|
|
1399
1508
|
Unit.prototype,
|
|
1400
1509
|
"color",
|
|
1401
1510
|
{set = function(self, color)
|
|
1402
|
-
|
|
1403
|
-
if self[
|
|
1404
|
-
|
|
1511
|
+
SetUnitColor(self.handle, color.handle)
|
|
1512
|
+
if self[107] then
|
|
1513
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1405
1514
|
end
|
|
1406
1515
|
end},
|
|
1407
1516
|
true
|
|
@@ -1424,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1424
1533
|
"maxHealth",
|
|
1425
1534
|
{
|
|
1426
1535
|
get = function(self)
|
|
1427
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1428
1537
|
end,
|
|
1429
1538
|
set = function(self, maxHealth)
|
|
1430
|
-
if maxHealth < 1 and self[
|
|
1431
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1432
1541
|
maxHealth = 1
|
|
1433
1542
|
end
|
|
1434
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1435
1544
|
end
|
|
1436
1545
|
},
|
|
1437
1546
|
true
|
|
@@ -1473,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1473
1582
|
"health",
|
|
1474
1583
|
{
|
|
1475
1584
|
get = function(self)
|
|
1476
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1477
1586
|
end,
|
|
1478
1587
|
set = function(self, health)
|
|
1479
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1480
1589
|
end
|
|
1481
1590
|
},
|
|
1482
1591
|
true
|
|
@@ -1552,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1552
1661
|
},
|
|
1553
1662
|
true
|
|
1554
1663
|
)
|
|
1555
|
-
__TS__SetDescriptor(
|
|
1556
|
-
Unit.prototype,
|
|
1557
|
-
"flyHeight",
|
|
1558
|
-
{
|
|
1559
|
-
get = function(self)
|
|
1560
|
-
return getUnitFlyHeight(self.handle)
|
|
1561
|
-
end,
|
|
1562
|
-
set = function(self, v)
|
|
1563
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1564
|
-
end
|
|
1565
|
-
},
|
|
1566
|
-
true
|
|
1567
|
-
)
|
|
1568
1664
|
__TS__SetDescriptor(
|
|
1569
1665
|
Unit.prototype,
|
|
1570
1666
|
"x",
|
|
1571
1667
|
{
|
|
1572
1668
|
get = function(self)
|
|
1573
|
-
return getUnitX(self.handle)
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1574
1670
|
end,
|
|
1575
1671
|
set = function(self, v)
|
|
1576
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1583,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1583
1679
|
"y",
|
|
1584
1680
|
{
|
|
1585
1681
|
get = function(self)
|
|
1586
|
-
return getUnitY(self.handle)
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1587
1683
|
end,
|
|
1588
1684
|
set = function(self, v)
|
|
1589
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1669,10 +1765,10 @@ __TS__SetDescriptor(
|
|
|
1669
1765
|
"gold",
|
|
1670
1766
|
{
|
|
1671
1767
|
get = function(self)
|
|
1672
|
-
return
|
|
1768
|
+
return GetResourceAmount(self.handle)
|
|
1673
1769
|
end,
|
|
1674
1770
|
set = function(self, gold)
|
|
1675
|
-
|
|
1771
|
+
SetResourceAmount(self.handle, gold)
|
|
1676
1772
|
end
|
|
1677
1773
|
},
|
|
1678
1774
|
true
|
|
@@ -1687,17 +1783,21 @@ __TS__SetDescriptor(
|
|
|
1687
1783
|
set = function(self, isPaused)
|
|
1688
1784
|
local handle = self.handle
|
|
1689
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1690
|
-
self[
|
|
1691
|
-
|
|
1692
|
-
|
|
1786
|
+
self[101] = true
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1693
1791
|
end
|
|
1694
1792
|
PauseUnit(handle, true)
|
|
1695
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1696
1794
|
PauseUnit(handle, false)
|
|
1697
|
-
|
|
1698
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1699
1799
|
end
|
|
1700
|
-
self[
|
|
1800
|
+
self[101] = nil
|
|
1701
1801
|
end
|
|
1702
1802
|
end
|
|
1703
1803
|
},
|
|
@@ -1753,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1753
1853
|
},
|
|
1754
1854
|
true
|
|
1755
1855
|
)
|
|
1756
|
-
__TS__SetDescriptor(
|
|
1757
|
-
Unit.prototype,
|
|
1758
|
-
"scale",
|
|
1759
|
-
{
|
|
1760
|
-
get = function(self)
|
|
1761
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1762
|
-
end,
|
|
1763
|
-
set = function(self, v)
|
|
1764
|
-
setUnitScale(self.handle, v, v, v)
|
|
1765
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1766
|
-
end
|
|
1767
|
-
},
|
|
1768
|
-
true
|
|
1769
|
-
)
|
|
1770
1856
|
__TS__SetDescriptor(
|
|
1771
1857
|
Unit.prototype,
|
|
1772
1858
|
"timeScale",
|
|
@@ -1800,6 +1886,19 @@ __TS__SetDescriptor(
|
|
|
1800
1886
|
end},
|
|
1801
1887
|
true
|
|
1802
1888
|
)
|
|
1889
|
+
__TS__SetDescriptor(
|
|
1890
|
+
Unit.prototype,
|
|
1891
|
+
"movementType",
|
|
1892
|
+
{
|
|
1893
|
+
get = function(self)
|
|
1894
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1895
|
+
end,
|
|
1896
|
+
set = function(self, movementType)
|
|
1897
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1898
|
+
end
|
|
1899
|
+
},
|
|
1900
|
+
true
|
|
1901
|
+
)
|
|
1803
1902
|
__TS__SetDescriptor(
|
|
1804
1903
|
Unit.prototype,
|
|
1805
1904
|
"pathing",
|
|
@@ -1890,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1890
1989
|
end},
|
|
1891
1990
|
true
|
|
1892
1991
|
)
|
|
1893
|
-
__TS__SetDescriptor(
|
|
1894
|
-
Unit.prototype,
|
|
1895
|
-
"onUnitInRange",
|
|
1896
|
-
{get = function(self)
|
|
1897
|
-
local handle = self.handle
|
|
1898
|
-
local onUnitInRange = setmetatable(
|
|
1899
|
-
{},
|
|
1900
|
-
{__index = function(self, value)
|
|
1901
|
-
local event = __TS__New(
|
|
1902
|
-
TriggerEvent,
|
|
1903
|
-
function(trigger)
|
|
1904
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
1905
|
-
end,
|
|
1906
|
-
function() return ____exports.Unit:of(handle) end
|
|
1907
|
-
)
|
|
1908
|
-
rawset(self, value, event)
|
|
1909
|
-
return event
|
|
1910
|
-
end}
|
|
1911
|
-
)
|
|
1912
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
1913
|
-
return onUnitInRange
|
|
1914
|
-
end},
|
|
1915
|
-
true
|
|
1916
|
-
)
|
|
1917
1992
|
__TS__SetDescriptor(
|
|
1918
1993
|
Unit.prototype,
|
|
1919
1994
|
"onManaEqual",
|
|
@@ -1981,6 +2056,14 @@ __TS__SetDescriptor(
|
|
|
1981
2056
|
end},
|
|
1982
2057
|
true
|
|
1983
2058
|
)
|
|
2059
|
+
__TS__SetDescriptor(
|
|
2060
|
+
Unit.prototype,
|
|
2061
|
+
"targetAcquiredEvent",
|
|
2062
|
+
{get = function(self)
|
|
2063
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2064
|
+
end},
|
|
2065
|
+
true
|
|
2066
|
+
)
|
|
1984
2067
|
__TS__SetDescriptor(
|
|
1985
2068
|
Unit.prototype,
|
|
1986
2069
|
"onSelect",
|
|
@@ -2041,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2041
2124
|
end},
|
|
2042
2125
|
true
|
|
2043
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2044
2132
|
Unit.deathEvent = __TS__New(
|
|
2045
2133
|
____exports.UnitTriggerEvent,
|
|
2046
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2054,7 +2142,6 @@ Unit.onDecay = __TS__New(
|
|
|
2054
2142
|
Unit.onResurrect = __TS__New(
|
|
2055
2143
|
InitializingEvent,
|
|
2056
2144
|
function(event)
|
|
2057
|
-
local invoke = Event.invoke
|
|
2058
2145
|
local dead = setmetatable({}, {__mode = "k"})
|
|
2059
2146
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
2060
2147
|
dead[unit] = true
|
|
@@ -2070,10 +2157,15 @@ Unit.onResurrect = __TS__New(
|
|
|
2070
2157
|
Unit.morphEvent = __TS__New(
|
|
2071
2158
|
InitializingEvent,
|
|
2072
2159
|
function(event)
|
|
2160
|
+
local function ifNotLeft(unit)
|
|
2161
|
+
local handle = unit.handle
|
|
2162
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2163
|
+
invoke(event, unit)
|
|
2164
|
+
end
|
|
2165
|
+
end
|
|
2073
2166
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
2074
2167
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
2075
|
-
|
|
2076
|
-
Timer:run(Event.invoke, event, unit)
|
|
2168
|
+
Timer:run(ifNotLeft, unit)
|
|
2077
2169
|
end
|
|
2078
2170
|
end)
|
|
2079
2171
|
end
|
|
@@ -2111,27 +2203,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
2111
2203
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
2112
2204
|
InitializingEvent,
|
|
2113
2205
|
function(event)
|
|
2114
|
-
local invoke = Event.invoke
|
|
2115
2206
|
local function listener(unit, id)
|
|
2116
|
-
local
|
|
2207
|
+
local ____GetSpellTargetUnit_result_10
|
|
2117
2208
|
if GetSpellTargetUnit() then
|
|
2118
|
-
|
|
2209
|
+
____GetSpellTargetUnit_result_10 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
2119
2210
|
else
|
|
2120
|
-
local
|
|
2211
|
+
local ____GetSpellTargetItem_result_9
|
|
2121
2212
|
if GetSpellTargetItem() then
|
|
2122
|
-
|
|
2213
|
+
____GetSpellTargetItem_result_9 = Item:of(GetSpellTargetItem())
|
|
2123
2214
|
else
|
|
2124
|
-
local
|
|
2215
|
+
local ____GetSpellTargetDestructable_result_8
|
|
2125
2216
|
if GetSpellTargetDestructable() then
|
|
2126
|
-
|
|
2217
|
+
____GetSpellTargetDestructable_result_8 = Destructable:of(GetSpellTargetDestructable())
|
|
2127
2218
|
else
|
|
2128
|
-
|
|
2219
|
+
____GetSpellTargetDestructable_result_8 = nil
|
|
2129
2220
|
end
|
|
2130
|
-
|
|
2221
|
+
____GetSpellTargetItem_result_9 = ____GetSpellTargetDestructable_result_8
|
|
2131
2222
|
end
|
|
2132
|
-
|
|
2223
|
+
____GetSpellTargetUnit_result_10 = ____GetSpellTargetItem_result_9
|
|
2133
2224
|
end
|
|
2134
|
-
local target =
|
|
2225
|
+
local target = ____GetSpellTargetUnit_result_10
|
|
2135
2226
|
if target then
|
|
2136
2227
|
invoke(event, unit, id, target)
|
|
2137
2228
|
end
|
|
@@ -2303,10 +2394,12 @@ Unit.onImmediateOrder = dispatchId(__TS__New(
|
|
|
2303
2394
|
____exports.UnitTriggerEvent,
|
|
2304
2395
|
EVENT_PLAYER_UNIT_ISSUED_ORDER,
|
|
2305
2396
|
function()
|
|
2306
|
-
local
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2397
|
+
local handle = getOrderedUnit()
|
|
2398
|
+
if handle ~= nil and getUnitTypeId(handle) ~= dummyUnitId then
|
|
2399
|
+
local unit = ____exports.Unit:of(handle)
|
|
2400
|
+
if unit.state == 1 then
|
|
2401
|
+
return unit, getIssuedOrderId()
|
|
2402
|
+
end
|
|
2310
2403
|
end
|
|
2311
2404
|
return IgnoreEvent
|
|
2312
2405
|
end
|
|
@@ -2328,7 +2421,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2328
2421
|
)
|
|
2329
2422
|
Unit.onDamaging = (function()
|
|
2330
2423
|
local event = __TS__New(Event)
|
|
2331
|
-
local invoke = Event.invoke
|
|
2332
2424
|
local trigger = CreateTrigger()
|
|
2333
2425
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2334
2426
|
TriggerAddCondition(
|
|
@@ -2338,38 +2430,57 @@ Unit.onDamaging = (function()
|
|
|
2338
2430
|
if source and source.typeId == dummyUnitId then
|
|
2339
2431
|
source = nil
|
|
2340
2432
|
end
|
|
2341
|
-
local target = BlzGetEventDamageTarget()
|
|
2433
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2434
|
+
local metadata = damageMetadataByTarget[target]
|
|
2435
|
+
damageMetadataByTarget[target] = nil
|
|
2342
2436
|
local data = {
|
|
2343
2437
|
amount = GetEventDamage(),
|
|
2344
|
-
attackType = BlzGetEventAttackType(),
|
|
2438
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2345
2439
|
damageType = BlzGetEventDamageType(),
|
|
2346
2440
|
weaponType = BlzGetEventWeaponType(),
|
|
2347
|
-
|
|
2441
|
+
metadata = metadata,
|
|
2442
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2443
|
+
originalAmount = GetEventDamage(),
|
|
2444
|
+
originalMetadata = metadata,
|
|
2445
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2348
2446
|
}
|
|
2349
2447
|
if data.isAttack and source then
|
|
2350
|
-
|
|
2351
|
-
if weapon == -1 then
|
|
2352
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2353
|
-
weapon = 0
|
|
2354
|
-
end
|
|
2355
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2356
2449
|
end
|
|
2357
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2358
2451
|
invoke(
|
|
2359
2452
|
event,
|
|
2360
2453
|
source,
|
|
2361
|
-
|
|
2454
|
+
target,
|
|
2362
2455
|
setmetatable(
|
|
2363
2456
|
{},
|
|
2364
2457
|
{
|
|
2365
2458
|
__index = data,
|
|
2366
2459
|
__newindex = function(self, key, value)
|
|
2367
|
-
damageSetters[key]
|
|
2460
|
+
local damageSetter = damageSetters[key]
|
|
2461
|
+
if damageSetter ~= nil then
|
|
2462
|
+
damageSetter(value)
|
|
2463
|
+
end
|
|
2368
2464
|
data[key] = value
|
|
2369
2465
|
end
|
|
2370
2466
|
}
|
|
2371
2467
|
)
|
|
2372
2468
|
)
|
|
2469
|
+
if data[0] and source then
|
|
2470
|
+
local sourceOwner = source.owner.handle
|
|
2471
|
+
data[1] = sourceOwner
|
|
2472
|
+
local targetOwner = target.owner.handle
|
|
2473
|
+
data[2] = targetOwner
|
|
2474
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2475
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2476
|
+
data[3] = true
|
|
2477
|
+
end
|
|
2478
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2479
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2480
|
+
data[4] = true
|
|
2481
|
+
end
|
|
2482
|
+
end
|
|
2483
|
+
damagingEventByTarget[target] = data
|
|
2373
2484
|
return
|
|
2374
2485
|
end
|
|
2375
2486
|
BlzSetEventDamage(0)
|
|
@@ -2377,7 +2488,7 @@ Unit.onDamaging = (function()
|
|
|
2377
2488
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2378
2489
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2379
2490
|
local sourceOwner = source.owner.handle
|
|
2380
|
-
local targetOwner =
|
|
2491
|
+
local targetOwner = target.owner.handle
|
|
2381
2492
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2382
2493
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2383
2494
|
Timer:run(function()
|
|
@@ -2393,23 +2504,19 @@ Unit.onDamaging = (function()
|
|
|
2393
2504
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2394
2505
|
local condition = ____value[1]
|
|
2395
2506
|
local action = ____value[2]
|
|
2396
|
-
if condition(
|
|
2397
|
-
source,
|
|
2398
|
-
____exports.Unit:of(target),
|
|
2399
|
-
data
|
|
2400
|
-
) then
|
|
2507
|
+
if condition(source, target, data) then
|
|
2401
2508
|
action(
|
|
2402
2509
|
source,
|
|
2403
|
-
|
|
2510
|
+
target,
|
|
2404
2511
|
setmetatable(
|
|
2405
2512
|
{fire = function()
|
|
2406
2513
|
UnitDamageTarget(
|
|
2407
2514
|
source.handle,
|
|
2408
|
-
target,
|
|
2515
|
+
target.handle,
|
|
2409
2516
|
data.amount,
|
|
2410
2517
|
true,
|
|
2411
2518
|
true,
|
|
2412
|
-
data.attackType,
|
|
2519
|
+
attackTypeToNative(data.attackType),
|
|
2413
2520
|
data.damageType,
|
|
2414
2521
|
data.weaponType
|
|
2415
2522
|
)
|
|
@@ -2427,7 +2534,6 @@ end)()
|
|
|
2427
2534
|
Unit.onDamage = __TS__New(
|
|
2428
2535
|
InitializingEvent,
|
|
2429
2536
|
function(event)
|
|
2430
|
-
local invoke = Event.invoke
|
|
2431
2537
|
local trigger = CreateTrigger()
|
|
2432
2538
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2433
2539
|
TriggerAddCondition(
|
|
@@ -2437,29 +2543,54 @@ Unit.onDamage = __TS__New(
|
|
|
2437
2543
|
if source and source.typeId == dummyUnitId then
|
|
2438
2544
|
source = nil
|
|
2439
2545
|
end
|
|
2546
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2547
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2548
|
+
damagingEventByTarget[target] = nil
|
|
2440
2549
|
local data = {
|
|
2441
2550
|
amount = GetEventDamage(),
|
|
2442
|
-
attackType = BlzGetEventAttackType(),
|
|
2551
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2443
2552
|
damageType = BlzGetEventDamageType(),
|
|
2444
2553
|
weaponType = BlzGetEventWeaponType(),
|
|
2554
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2445
2555
|
isAttack = BlzGetEventIsAttack(),
|
|
2556
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2557
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2446
2558
|
preventDeath = damageEventPreventDeath
|
|
2447
2559
|
}
|
|
2560
|
+
if damagingEvent then
|
|
2561
|
+
for key, value in pairs(damagingEvent) do
|
|
2562
|
+
if isAttribute(key) then
|
|
2563
|
+
data[key] = value
|
|
2564
|
+
end
|
|
2565
|
+
end
|
|
2566
|
+
local sourceOwner = damagingEvent[1]
|
|
2567
|
+
if sourceOwner then
|
|
2568
|
+
local targetOwner = damagingEvent[2]
|
|
2569
|
+
if damagingEvent[3] then
|
|
2570
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2571
|
+
end
|
|
2572
|
+
if damagingEvent[4] then
|
|
2573
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2574
|
+
end
|
|
2575
|
+
end
|
|
2576
|
+
end
|
|
2448
2577
|
local evData = setmetatable(
|
|
2449
2578
|
{},
|
|
2450
2579
|
{
|
|
2451
2580
|
__index = data,
|
|
2452
2581
|
__newindex = function(self, key, value)
|
|
2453
|
-
damageSetters[key]
|
|
2582
|
+
local damageSetter = damageSetters[key]
|
|
2583
|
+
if damageSetter ~= nil then
|
|
2584
|
+
damageSetter(value)
|
|
2585
|
+
end
|
|
2454
2586
|
data[key] = value
|
|
2455
2587
|
end
|
|
2456
2588
|
}
|
|
2457
2589
|
)
|
|
2458
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2459
2590
|
invoke(event, source, target, evData)
|
|
2460
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2461
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2462
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2463
2594
|
BlzSetUnitMaxHP(
|
|
2464
2595
|
target.handle,
|
|
2465
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2473,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2473
2604
|
evData[0],
|
|
2474
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2475
2606
|
)
|
|
2476
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2477
2608
|
SetWidgetLife(
|
|
2478
2609
|
target.handle,
|
|
2479
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2493,32 +2624,105 @@ Unit.onDamage = __TS__New(
|
|
|
2493
2624
|
DestroyTrigger(trigger)
|
|
2494
2625
|
end
|
|
2495
2626
|
)
|
|
2496
|
-
Unit.
|
|
2627
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2497
2628
|
____exports.UnitTriggerEvent,
|
|
2498
2629
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2499
2630
|
function()
|
|
2500
2631
|
local unit = getTriggerUnit()
|
|
2501
|
-
|
|
2502
|
-
|
|
2632
|
+
local item = getManipulatedItem()
|
|
2633
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2634
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2503
2635
|
end
|
|
2504
2636
|
return IgnoreEvent
|
|
2505
2637
|
end
|
|
2506
2638
|
)
|
|
2507
|
-
Unit.
|
|
2639
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2508
2640
|
____exports.UnitTriggerEvent,
|
|
2509
2641
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2510
2642
|
function()
|
|
2511
|
-
local
|
|
2512
|
-
|
|
2513
|
-
|
|
2643
|
+
local unitHandle = getTriggerUnit()
|
|
2644
|
+
local itemHandle = getManipulatedItem()
|
|
2645
|
+
if getUnitTypeId(unitHandle) ~= dummyUnitId and not (ignoreEventsItems[itemHandle] ~= nil) then
|
|
2646
|
+
local unit = ____exports.Unit:of(unitHandle)
|
|
2647
|
+
local item = Item:of(itemHandle)
|
|
2648
|
+
if item.owner ~= unit then
|
|
2649
|
+
return unit, item
|
|
2650
|
+
end
|
|
2514
2651
|
end
|
|
2515
2652
|
return IgnoreEvent
|
|
2516
2653
|
end
|
|
2517
2654
|
)
|
|
2518
|
-
Unit.
|
|
2655
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2519
2656
|
____exports.UnitTriggerEvent,
|
|
2520
2657
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2521
|
-
function()
|
|
2658
|
+
function()
|
|
2659
|
+
local unit = getTriggerUnit()
|
|
2660
|
+
local item = getManipulatedItem()
|
|
2661
|
+
if getUnitTypeId(unit) ~= dummyUnitId and not (ignoreEventsItems[item] ~= nil) then
|
|
2662
|
+
return ____exports.Unit:of(unit), Item:of(item)
|
|
2663
|
+
end
|
|
2664
|
+
return IgnoreEvent
|
|
2665
|
+
end
|
|
2666
|
+
)
|
|
2667
|
+
__TS__ObjectDefineProperty(
|
|
2668
|
+
Unit,
|
|
2669
|
+
"itemChargesChangedEvent",
|
|
2670
|
+
{get = function(self)
|
|
2671
|
+
local event = __TS__New(Event)
|
|
2672
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2673
|
+
local unit = item.owner
|
|
2674
|
+
if unit ~= nil then
|
|
2675
|
+
invoke(event, unit, item)
|
|
2676
|
+
end
|
|
2677
|
+
end)
|
|
2678
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2679
|
+
return event
|
|
2680
|
+
end}
|
|
2681
|
+
)
|
|
2682
|
+
__TS__ObjectDefineProperty(
|
|
2683
|
+
Unit,
|
|
2684
|
+
"itemUseOrderEvent",
|
|
2685
|
+
{get = function(self)
|
|
2686
|
+
local event = __TS__New(Event)
|
|
2687
|
+
for order = orderId("useslot0"), orderId("useslot5") do
|
|
2688
|
+
local slot = order - orderId("useslot0")
|
|
2689
|
+
local function listener(unit)
|
|
2690
|
+
local item = unit.inventory[slot + 1]
|
|
2691
|
+
if item ~= nil then
|
|
2692
|
+
invoke(event, unit, item)
|
|
2693
|
+
end
|
|
2694
|
+
end
|
|
2695
|
+
self.onImmediateOrder[order]:addListener(listener)
|
|
2696
|
+
self.onTargetOrder[order]:addListener(listener)
|
|
2697
|
+
self.onPointOrder[order]:addListener(listener)
|
|
2698
|
+
end
|
|
2699
|
+
rawset(self, "itemUseOrderEvent", event)
|
|
2700
|
+
return event
|
|
2701
|
+
end}
|
|
2702
|
+
)
|
|
2703
|
+
__TS__ObjectDefineProperty(
|
|
2704
|
+
Unit,
|
|
2705
|
+
"itemMoveOrderEvent",
|
|
2706
|
+
{get = function(self)
|
|
2707
|
+
local event = __TS__New(Event)
|
|
2708
|
+
for order = orderId("moveslot0"), orderId("moveslot5") do
|
|
2709
|
+
local slotTo = order - orderId("moveslot0")
|
|
2710
|
+
self.onTargetOrder[order]:addListener(function(unit, item)
|
|
2711
|
+
local slotFrom = unit.inventory:findSlot(item)
|
|
2712
|
+
if slotFrom ~= nil then
|
|
2713
|
+
invoke(
|
|
2714
|
+
event,
|
|
2715
|
+
unit,
|
|
2716
|
+
item,
|
|
2717
|
+
slotFrom,
|
|
2718
|
+
slotTo
|
|
2719
|
+
)
|
|
2720
|
+
end
|
|
2721
|
+
end)
|
|
2722
|
+
end
|
|
2723
|
+
rawset(self, "itemMoveOrderEvent", event)
|
|
2724
|
+
return event
|
|
2725
|
+
end}
|
|
2522
2726
|
)
|
|
2523
2727
|
__TS__ObjectDefineProperty(
|
|
2524
2728
|
Unit,
|
|
@@ -2545,6 +2749,10 @@ __TS__ObjectDefineProperty(
|
|
|
2545
2749
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2546
2750
|
return destroyEvent
|
|
2547
2751
|
end}
|
|
2752
|
+
)
|
|
2753
|
+
Unit.synchronize = synchronizer(
|
|
2754
|
+
function(unit) return unit.syncId end,
|
|
2755
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2548
2756
|
);
|
|
2549
2757
|
(function(self)
|
|
2550
2758
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2567,6 +2775,16 @@ __TS__ObjectDefineProperty(
|
|
|
2567
2775
|
orderId("magicundefense"),
|
|
2568
2776
|
orderId("unimmolation")
|
|
2569
2777
|
}) do
|
|
2778
|
+
____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
|
|
2779
|
+
local handle = unit.handle
|
|
2780
|
+
for i = 1, #leaveAbilityIds do
|
|
2781
|
+
if getUnitAbilityLevel(handle, leaveAbilityIds[i]) ~= 0 then
|
|
2782
|
+
return
|
|
2783
|
+
end
|
|
2784
|
+
end
|
|
2785
|
+
unit:saveData()
|
|
2786
|
+
Timer:run(unit, "destroy")
|
|
2787
|
+
end)
|
|
2570
2788
|
end
|
|
2571
2789
|
end)(Unit)
|
|
2572
2790
|
return ____exports
|