warscript 0.0.1-dev.24ac045 → 0.0.1-dev.24da7f2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +1 -0
- package/attributes.lua +9 -0
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +11 -1
- package/core/types/effect.lua +43 -77
- package/core/types/frame.d.ts +21 -2
- package/core/types/frame.lua +165 -87
- package/core/types/handle.lua +9 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/missile.lua +8 -7
- 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 +1 -1
- package/core/types/sound.lua +14 -9
- package/core/types/tileCell.d.ts +18 -3
- package/core/types/tileCell.lua +108 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +712 -11
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +4 -0
- package/engine/behaviour/ability/damage.lua +19 -15
- package/engine/behaviour/ability/emulate-impact.d.ts +15 -1
- package/engine/behaviour/ability/emulate-impact.lua +81 -6
- package/engine/behaviour/ability/instant-impact.d.ts +12 -1
- package/engine/behaviour/ability/instant-impact.lua +17 -2
- package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
- package/engine/behaviour/ability/on-command-impact.lua +1 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +19 -6
- package/engine/behaviour/ability.lua +120 -9
- package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
- package/engine/behaviour/unit/stun-immunity.lua +17 -7
- package/engine/behaviour/unit.d.ts +16 -5
- package/engine/behaviour/unit.lua +127 -22
- package/engine/buff.d.ts +124 -57
- package/engine/buff.lua +608 -296
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +10 -1
- package/engine/internal/ability.lua +99 -47
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item/owner-cache.d.ts +5 -0
- package/engine/internal/item/owner-cache.lua +4 -0
- package/engine/internal/item+owner.d.ts +2 -0
- package/engine/internal/item+owner.lua +37 -8
- package/engine/internal/item.d.ts +27 -14
- package/engine/internal/item.lua +185 -82
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/object-data/returned-melee-damage-factor.d.ts +2 -0
- package/engine/internal/object-data/returned-melee-damage-factor.lua +21 -0
- package/engine/internal/unit/ability.d.ts +14 -14
- package/engine/internal/unit/ability.lua +88 -45
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +53 -12
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +17 -0
- package/engine/internal/unit/bonus.lua +113 -8
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment-inventory.d.ts +44 -0
- package/engine/internal/unit/equipment-inventory.lua +233 -0
- package/engine/internal/unit/expiration-timer.lua +1 -1
- package/engine/internal/unit/extended-inventory.d.ts +25 -0
- package/engine/internal/unit/extended-inventory.lua +99 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.lua +10 -1
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
- package/engine/internal/unit/inventory.lua +87 -0
- package/engine/internal/unit/item-container.d.ts +25 -0
- package/engine/internal/unit/item-container.lua +11 -0
- package/engine/internal/unit/item-order-events.d.ts +17 -0
- package/engine/internal/unit/item-order-events.lua +67 -0
- package/engine/internal/unit/item-slot.d.ts +27 -0
- package/engine/internal/unit/item-slot.lua +92 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +3 -3
- package/engine/internal/unit/order.lua +10 -10
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit/shared-vision-counter.d.ts +18 -0
- package/engine/internal/unit/shared-vision-counter.lua +31 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +83 -3
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +96 -68
- package/engine/internal/unit-missile-launch.lua +65 -27
- package/engine/internal/unit.d.ts +20 -33
- package/engine/internal/unit.lua +227 -295
- package/engine/lightning.lua +4 -4
- package/engine/local-client.d.ts +28 -0
- package/engine/local-client.lua +324 -54
- 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 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -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 +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/barrage.d.ts +12 -0
- package/engine/object-data/entry/ability-type/barrage.lua +52 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +2 -2
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.d.ts +23 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
- package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +2 -2
- package/engine/object-data/entry/ability-type/channel.lua +3 -3
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +35 -8
- package/engine/object-data/entry/ability-type.lua +304 -15
- package/engine/object-data/entry/buff-type/applicable.lua +122 -111
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +18 -3
- package/engine/object-data/entry/item-type.lua +84 -0
- package/engine/object-data/entry/lightning-type.d.ts +6 -8
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +72 -4
- package/engine/object-data/entry/unit-type.lua +503 -53
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +6 -1
- package/engine/object-data/entry.lua +8 -0
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +12 -4
- package/engine/object-field.lua +273 -126
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +45 -0
- package/engine/standard/entries/buff-type.lua +43 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +4 -4
- package/engine/standard/fields/ability.lua +4 -4
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +14 -2
- package/engine/text-tag.lua +135 -23
- package/engine/unit.d.ts +11 -1
- package/engine/unit.lua +11 -1
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +11 -9
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +25 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +4 -0
- package/utility/functions.lua +9 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +11 -2
- package/utility/lua-maps.lua +33 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.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/attributes.d.ts
CHANGED
|
@@ -13,5 +13,6 @@ export declare namespace Attribute {
|
|
|
13
13
|
export declare class AttributesHolder {
|
|
14
14
|
readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
|
|
15
15
|
readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
|
|
16
|
+
getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
|
|
16
17
|
}
|
|
17
18
|
export {};
|
package/attributes.lua
CHANGED
|
@@ -20,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
|
|
|
20
20
|
AttributesHolder.name = "AttributesHolder"
|
|
21
21
|
function AttributesHolder.prototype.____constructor(self)
|
|
22
22
|
end
|
|
23
|
+
function AttributesHolder.prototype.getOrPut(self, attribute, defaultValue)
|
|
24
|
+
local value = self[attribute]
|
|
25
|
+
if value ~= nil then
|
|
26
|
+
return value
|
|
27
|
+
end
|
|
28
|
+
value = defaultValue()
|
|
29
|
+
self[attribute] = value
|
|
30
|
+
return value
|
|
31
|
+
end
|
|
23
32
|
return ____exports
|
package/core/dummy.lua
CHANGED
|
@@ -15,6 +15,8 @@ local ____preconditions = require("utility.preconditions")
|
|
|
15
15
|
local checkNotNull = ____preconditions.checkNotNull
|
|
16
16
|
local ____ability = require("engine.internal.ability")
|
|
17
17
|
local getOrderIdByAbilityTypeId = ____ability.getOrderIdByAbilityTypeId
|
|
18
|
+
local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
|
|
19
|
+
local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
|
|
18
20
|
local neutralVictim = Player.neutralVictim.handle
|
|
19
21
|
____exports.InstantDummyCaster = __TS__Class()
|
|
20
22
|
local InstantDummyCaster = ____exports.InstantDummyCaster
|
|
@@ -42,7 +44,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
|
|
|
42
44
|
if type(abilityId) == "number" then
|
|
43
45
|
UnitAddAbility(dummy, abilityId)
|
|
44
46
|
if type(level) == "number" then
|
|
45
|
-
|
|
47
|
+
rawSetUnitAbilityLevel(dummy, abilityId, level + 1)
|
|
46
48
|
else
|
|
47
49
|
level(UnitAbility:of(
|
|
48
50
|
checkNotNull(BlzGetUnitAbility(dummy, abilityId)),
|
|
@@ -56,7 +58,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
|
|
|
56
58
|
end
|
|
57
59
|
if __TS__ArrayIsArray(level) then
|
|
58
60
|
for i = 1, #abilityId do
|
|
59
|
-
|
|
61
|
+
rawSetUnitAbilityLevel(dummy, abilityId[i], level[i] + 1)
|
|
60
62
|
end
|
|
61
63
|
else
|
|
62
64
|
local abilities = {}
|
package/core/types/effect.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { PlayerColor } from "./playerColor";
|
|
|
5
5
|
declare const enum EffectPropertyKey {
|
|
6
6
|
COLOR = 100,
|
|
7
7
|
PITCH = 101,
|
|
8
|
-
ROLL = 102
|
|
8
|
+
ROLL = 102,
|
|
9
|
+
BLEND_TIME = 103,
|
|
10
|
+
TIME_SCALE = 104
|
|
9
11
|
}
|
|
10
12
|
export type EffectParameters = {
|
|
11
13
|
readonly delay?: number;
|
|
@@ -21,7 +23,15 @@ export declare class Effect extends Handle<jeffect> {
|
|
|
21
23
|
private [EffectPropertyKey.COLOR]?;
|
|
22
24
|
private [EffectPropertyKey.PITCH]?;
|
|
23
25
|
private [EffectPropertyKey.ROLL]?;
|
|
26
|
+
private [EffectPropertyKey.BLEND_TIME]?;
|
|
27
|
+
private [EffectPropertyKey.TIME_SCALE]?;
|
|
24
28
|
protected onDestroy(): HandleDestructor;
|
|
29
|
+
setAnimation(animation: string): void;
|
|
30
|
+
queueAnimation(animation: string): void;
|
|
31
|
+
get blendTime(): number;
|
|
32
|
+
set blendTime(blendTime: number);
|
|
33
|
+
get timeScale(): number;
|
|
34
|
+
set timeScale(timeScale: number);
|
|
25
35
|
get color(): PlayerColor;
|
|
26
36
|
set color(color: PlayerColor);
|
|
27
37
|
get scale(): number;
|
package/core/types/effect.lua
CHANGED
|
@@ -15,25 +15,22 @@ local ____timer = require("core.types.timer")
|
|
|
15
15
|
local Timer = ____timer.Timer
|
|
16
16
|
local ____unit = require("engine.internal.unit")
|
|
17
17
|
local Unit = ____unit.Unit
|
|
18
|
-
local ____pairs = _G.pairs
|
|
19
|
-
local select = _G.select
|
|
20
|
-
local mathRad = math.rad
|
|
21
18
|
local addSpecialEffect = AddSpecialEffect
|
|
22
19
|
local addSpecialEffectTarget = AddSpecialEffectTarget
|
|
23
20
|
local destroyEffect = DestroyEffect
|
|
21
|
+
local getLocationZ = GetLocationZ
|
|
24
22
|
local getSpecialEffectScale = BlzGetSpecialEffectScale
|
|
25
|
-
local
|
|
26
|
-
local
|
|
23
|
+
local moveLocation = MoveLocation
|
|
24
|
+
local queueSpecialEffectAnimation = BlzQueueSpecialEffectAnimation
|
|
25
|
+
local setSpecialEffectAnimation = BlzSetSpecialEffectAnimation
|
|
26
|
+
local setSpecialEffectAnimationBlendTime = BlzSetSpecialEffectAnimationBlendTime
|
|
27
|
+
local setSpecialEffectTimeScale = BlzSetSpecialEffectTimeScale
|
|
28
|
+
local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
|
|
27
29
|
local setSpecialEffectPitch = BlzSetSpecialEffectPitch
|
|
28
30
|
local setSpecialEffectRoll = BlzSetSpecialEffectRoll
|
|
29
|
-
local
|
|
30
|
-
local specialEffectAddSubAnimation = BlzSpecialEffectAddSubAnimation
|
|
31
|
-
local specialEffectClearSubAnimations = BlzSpecialEffectClearSubAnimations
|
|
32
|
-
local specialEffectRemoveSubAnimation = BlzSpecialEffectRemoveSubAnimation
|
|
31
|
+
local setSpecialEffectScale = BlzSetSpecialEffectScale
|
|
33
32
|
local setSpecialEffectZ = BlzSetSpecialEffectZ
|
|
34
|
-
local
|
|
35
|
-
local getUnitZ = BlzGetUnitZ
|
|
36
|
-
local moveLocation = MoveLocation
|
|
33
|
+
local mathRad = math.rad
|
|
37
34
|
local location = Location(0, 0)
|
|
38
35
|
local function setSpecialEffectPitchDegrees(effect, pitch)
|
|
39
36
|
setSpecialEffectPitch(
|
|
@@ -47,71 +44,6 @@ local function setSpecialEffectRollDegrees(effect, roll)
|
|
|
47
44
|
-mathRad(roll)
|
|
48
45
|
)
|
|
49
46
|
end
|
|
50
|
-
local animTypeByAnimationName = {
|
|
51
|
-
attack = ANIM_TYPE_ATTACK,
|
|
52
|
-
birth = ANIM_TYPE_BIRTH,
|
|
53
|
-
death = ANIM_TYPE_DEATH,
|
|
54
|
-
decay = ANIM_TYPE_DECAY,
|
|
55
|
-
dissipate = ANIM_TYPE_DISSIPATE,
|
|
56
|
-
morph = ANIM_TYPE_MORPH,
|
|
57
|
-
portrait = ANIM_TYPE_PORTRAIT,
|
|
58
|
-
sleep = ANIM_TYPE_SLEEP,
|
|
59
|
-
spell = ANIM_TYPE_SPELL,
|
|
60
|
-
stand = ANIM_TYPE_STAND,
|
|
61
|
-
walk = ANIM_TYPE_WALK
|
|
62
|
-
}
|
|
63
|
-
local subAnimTypeByAnimationQualifier = {
|
|
64
|
-
alternate = SUBANIM_TYPE_ROOTED,
|
|
65
|
-
alternateex = SUBANIM_TYPE_ALTERNATE_EX,
|
|
66
|
-
chain = SUBANIM_TYPE_CHAINLIGHTNING,
|
|
67
|
-
channel = SUBANIM_TYPE_CHANNEL,
|
|
68
|
-
complete = SUBANIM_TYPE_COMPLETE,
|
|
69
|
-
critical = SUBANIM_TYPE_CRITICAL,
|
|
70
|
-
defend = SUBANIM_TYPE_DEFEND,
|
|
71
|
-
drain = SUBANIM_TYPE_DRAIN,
|
|
72
|
-
eattree = SUBANIM_TYPE_EATTREE,
|
|
73
|
-
fast = SUBANIM_TYPE_FAST,
|
|
74
|
-
fill = SUBANIM_TYPE_FILL,
|
|
75
|
-
flail = SUBANIM_TYPE_FLAIL,
|
|
76
|
-
flesh = SUBANIM_TYPE_FLESH,
|
|
77
|
-
fifth = SUBANIM_TYPE_FIFTH,
|
|
78
|
-
fire = SUBANIM_TYPE_FIRE,
|
|
79
|
-
first = SUBANIM_TYPE_FIRST,
|
|
80
|
-
five = SUBANIM_TYPE_FIVE,
|
|
81
|
-
four = SUBANIM_TYPE_FOUR,
|
|
82
|
-
fourth = SUBANIM_TYPE_FOURTH,
|
|
83
|
-
gold = SUBANIM_TYPE_GOLD,
|
|
84
|
-
hit = SUBANIM_TYPE_HIT,
|
|
85
|
-
large = SUBANIM_TYPE_LARGE,
|
|
86
|
-
left = SUBANIM_TYPE_LEFT,
|
|
87
|
-
light = SUBANIM_TYPE_LIGHT,
|
|
88
|
-
looping = SUBANIM_TYPE_LOOPING,
|
|
89
|
-
lumber = SUBANIM_TYPE_LUMBER,
|
|
90
|
-
medium = SUBANIM_TYPE_MEDIUM,
|
|
91
|
-
moderate = SUBANIM_TYPE_MODERATE,
|
|
92
|
-
off = SUBANIM_TYPE_OFF,
|
|
93
|
-
one = SUBANIM_TYPE_ONE,
|
|
94
|
-
puke = SUBANIM_TYPE_PUKE,
|
|
95
|
-
ready = SUBANIM_TYPE_READY,
|
|
96
|
-
right = SUBANIM_TYPE_RIGHT,
|
|
97
|
-
second = SUBANIM_TYPE_SECOND,
|
|
98
|
-
severe = SUBANIM_TYPE_SEVERE,
|
|
99
|
-
slam = SUBANIM_TYPE_SLAM,
|
|
100
|
-
small = SUBANIM_TYPE_SMALL,
|
|
101
|
-
spiked = SUBANIM_TYPE_SPIKED,
|
|
102
|
-
spin = SUBANIM_TYPE_SPIN,
|
|
103
|
-
swim = SUBANIM_TYPE_SWIM,
|
|
104
|
-
talk = SUBANIM_TYPE_TALK,
|
|
105
|
-
third = SUBANIM_TYPE_THIRD,
|
|
106
|
-
three = SUBANIM_TYPE_THREE,
|
|
107
|
-
throw = SUBANIM_TYPE_THROW,
|
|
108
|
-
two = SUBANIM_TYPE_TWO,
|
|
109
|
-
turn = SUBANIM_TYPE_TURN,
|
|
110
|
-
victory = SUBANIM_TYPE_VICTORY,
|
|
111
|
-
work = SUBANIM_TYPE_WORK,
|
|
112
|
-
wounded = SUBANIM_TYPE_WOUNDED,
|
|
113
|
-
upgrade = SUBANIM_TYPE_UPGRADE
|
|
114
|
-
}
|
|
115
47
|
local function setSpecialEffectColor(effect, color)
|
|
116
48
|
local dummyColor = dummyPlayer.color
|
|
117
49
|
dummyPlayer.color = color
|
|
@@ -178,6 +110,12 @@ function Effect.prototype.onDestroy(self)
|
|
|
178
110
|
destroyEffect(self.handle)
|
|
179
111
|
return Handle.prototype.onDestroy(self)
|
|
180
112
|
end
|
|
113
|
+
function Effect.prototype.setAnimation(self, animation)
|
|
114
|
+
setSpecialEffectAnimation(self.handle, animation)
|
|
115
|
+
end
|
|
116
|
+
function Effect.prototype.queueAnimation(self, animation)
|
|
117
|
+
queueSpecialEffectAnimation(self.handle, animation)
|
|
118
|
+
end
|
|
181
119
|
function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
182
120
|
local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
|
|
183
121
|
if parameters ~= nil then
|
|
@@ -210,6 +148,34 @@ function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, paramete
|
|
|
210
148
|
parameters
|
|
211
149
|
)
|
|
212
150
|
end
|
|
151
|
+
__TS__SetDescriptor(
|
|
152
|
+
Effect.prototype,
|
|
153
|
+
"blendTime",
|
|
154
|
+
{
|
|
155
|
+
get = function(self)
|
|
156
|
+
return self[103] or 0
|
|
157
|
+
end,
|
|
158
|
+
set = function(self, blendTime)
|
|
159
|
+
setSpecialEffectAnimationBlendTime(self.handle, blendTime)
|
|
160
|
+
self[103] = blendTime
|
|
161
|
+
end
|
|
162
|
+
},
|
|
163
|
+
true
|
|
164
|
+
)
|
|
165
|
+
__TS__SetDescriptor(
|
|
166
|
+
Effect.prototype,
|
|
167
|
+
"timeScale",
|
|
168
|
+
{
|
|
169
|
+
get = function(self)
|
|
170
|
+
return self[104] or 1
|
|
171
|
+
end,
|
|
172
|
+
set = function(self, timeScale)
|
|
173
|
+
setSpecialEffectTimeScale(self.handle, timeScale)
|
|
174
|
+
self[104] = timeScale
|
|
175
|
+
end
|
|
176
|
+
},
|
|
177
|
+
true
|
|
178
|
+
)
|
|
213
179
|
__TS__SetDescriptor(
|
|
214
180
|
Effect.prototype,
|
|
215
181
|
"color",
|
package/core/types/frame.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
80
80
|
get onMouseLeave(): FrameEvent;
|
|
81
81
|
get onMouseUp(): FrameEvent;
|
|
82
82
|
get onMouseWheel(): FrameEvent<[number]>;
|
|
83
|
+
private trackMouseLocally;
|
|
83
84
|
get mouseEnterLocalEvent(): Event;
|
|
84
85
|
get mouseLeaveLocalEvent(): Event;
|
|
85
86
|
get popupMenuItemChangeEvent(): FrameEvent<[
|
|
@@ -136,8 +137,26 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
136
137
|
static get onMouseUp(): Event<[Player, jmousebuttontype, number, number]>;
|
|
137
138
|
private static onMouseDownEvent?;
|
|
138
139
|
static get onMouseDown(): Event<[Player, jmousebuttontype, number, number]>;
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Synchronized native mouse movement of every player. Each movement of every player's
|
|
142
|
+
* cursor is sent over the network, so with several players moving their mice this floods
|
|
143
|
+
* the network and raises the latency for everyone. Prefer {@link mouseMoveLocalEvent} and
|
|
144
|
+
* synchronize the needed coordinates explicitly, only when they matter (e.g. on a click).
|
|
145
|
+
*/
|
|
146
|
+
static get mouseMoveEvent(): Event<[player: Player, x: number, y: number]>;
|
|
147
|
+
/**
|
|
148
|
+
* Fires on the local client when the world point under the cursor changes, whether the
|
|
149
|
+
* cursor or the camera moved. Polls the local cursor position every 1/64 second and sends
|
|
150
|
+
* nothing over the network. The point is the camera ray's intersection with the terrain,
|
|
151
|
+
* so it ignores units and doodads under the cursor. It is also computed while the cursor
|
|
152
|
+
* is over the UI; check {@link isMouseOnWorld} where that matters.
|
|
153
|
+
*
|
|
154
|
+
* The poll runs only while the event has listeners, and the first listener receives the
|
|
155
|
+
* current point on the next poll. Adding and removing listeners is async-safe, so local
|
|
156
|
+
* code may subscribe only while it needs the cursor (e.g. while a tool is open for
|
|
157
|
+
* {@link Player.local}) and leave the poll idle otherwise.
|
|
158
|
+
*/
|
|
159
|
+
static get mouseMoveLocalEvent(): Event<[x: number, y: number]>;
|
|
141
160
|
static createSimple<T extends Frame>(this: FrameSubclass<T>, name: string, parent?: Frame, createContext?: number): T;
|
|
142
161
|
static create<T extends Frame>(this: FrameSubclass<T>, name: string, parent: Frame, priority?: number, createContext?: number): T;
|
|
143
162
|
static createByType<T extends Frame>(this: FrameSubclass<T>, typeName: "BACKDROP" | "BUTTON" | "CHATDISPLAY" | "CHECKBOX" | "CONTROL" | "DIALOG" | "EDITBOX" | "FRAME" | "GLUEBUTTON" | "GLUECHECKBOX" | "GLUETEXTBUTTON" | "HIGHLIGHT" | "LISTBOX" | "MENU" | "POPUPMENU" | "SCROLLBAR" | "SLIDER" | "TEXT" | "TEXTAREA" | "TEXTBUTTON", name: string, parent: Frame, inherits?: string, createContext?: number): T;
|
package/core/types/frame.lua
CHANGED
|
@@ -12,16 +12,38 @@ local ____player = require("core.types.player")
|
|
|
12
12
|
local Player = ____player.Player
|
|
13
13
|
local ____event = require("event")
|
|
14
14
|
local Event = ____event.Event
|
|
15
|
+
local InitializingEvent = ____event.InitializingEvent
|
|
15
16
|
local TriggerEvent = ____event.TriggerEvent
|
|
16
17
|
local ____timer = require("core.types.timer")
|
|
17
18
|
local Timer = ____timer.Timer
|
|
19
|
+
local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
|
|
20
|
+
local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
|
|
21
|
+
local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
|
|
22
|
+
local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
|
|
23
|
+
local ____playerCamera = require("core.types.playerCamera")
|
|
24
|
+
local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
|
|
25
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
26
|
+
local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
|
|
27
|
+
local ____socket = require("net.socket")
|
|
28
|
+
local Socket = ____socket.Socket
|
|
29
|
+
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
30
|
+
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
31
|
+
local luaMapInvert = ____lua_2Dmaps.luaMapInvert
|
|
32
|
+
local luaMapOf = ____lua_2Dmaps.luaMapOf
|
|
33
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
18
34
|
local frameClick = BlzFrameClick
|
|
19
35
|
local frameGetEnable = BlzFrameGetEnable
|
|
20
36
|
local frameIsVisible = BlzFrameIsVisible
|
|
21
37
|
local frameSetEnable = BlzFrameSetEnable
|
|
22
38
|
local frameSetScale = BlzFrameSetScale
|
|
23
|
-
local
|
|
24
|
-
local
|
|
39
|
+
local getHandleId = GetHandleId
|
|
40
|
+
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
41
|
+
local getMouseScreenPosX = BlzGetMouseScreenPosX
|
|
42
|
+
local getMouseScreenPosY = BlzGetMouseScreenPosY
|
|
43
|
+
local getOriginFrame = BlzGetOriginFrame
|
|
44
|
+
local location = Location
|
|
45
|
+
local pixelToFrameX = BlzPixelToFrameX
|
|
46
|
+
local pixelToFrameY = BlzPixelToFrameY
|
|
25
47
|
local ____rawget = _G.rawget
|
|
26
48
|
local rawset = _G.rawset
|
|
27
49
|
local invoke = Event.invoke
|
|
@@ -109,6 +131,37 @@ Timer.onPeriod[1 / 64]:addListener(function()
|
|
|
109
131
|
frameClick(isMouseOnWorld and dummyButtonOn or dummyButtonOff)
|
|
110
132
|
end
|
|
111
133
|
end)
|
|
134
|
+
--- The poll is registered synchronously at module load and runs only while the event has
|
|
135
|
+
-- listeners. Initializing and deinitializing the event only toggle this flag — they create no
|
|
136
|
+
-- handles and add no timer listeners — so subscribing and unsubscribing are async-safe.
|
|
137
|
+
local isMouseMoveLocalPollActive = false
|
|
138
|
+
local lastMouseMoveLocalX = 0
|
|
139
|
+
local lastMouseMoveLocalY = 0
|
|
140
|
+
local mouseMoveLocalEvent = __TS__New(
|
|
141
|
+
InitializingEvent,
|
|
142
|
+
function()
|
|
143
|
+
isMouseMoveLocalPollActive = true
|
|
144
|
+
lastMouseMoveLocalX = 0 / 0
|
|
145
|
+
lastMouseMoveLocalY = 0 / 0
|
|
146
|
+
end,
|
|
147
|
+
function()
|
|
148
|
+
isMouseMoveLocalPollActive = false
|
|
149
|
+
end
|
|
150
|
+
)
|
|
151
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
152
|
+
if not isMouseMoveLocalPollActive or getLocalClientHeight() == 0 then
|
|
153
|
+
return
|
|
154
|
+
end
|
|
155
|
+
local x, y, ____, isDefinite = frameCoordinatesToWorld(
|
|
156
|
+
pixelToFrameX(getMouseScreenPosX()),
|
|
157
|
+
pixelToFrameY(getMouseScreenPosY())
|
|
158
|
+
)
|
|
159
|
+
if isDefinite and (x ~= lastMouseMoveLocalX or y ~= lastMouseMoveLocalY) then
|
|
160
|
+
lastMouseMoveLocalX = x
|
|
161
|
+
lastMouseMoveLocalY = y
|
|
162
|
+
invoke(mouseMoveLocalEvent, x, y)
|
|
163
|
+
end
|
|
164
|
+
end)
|
|
112
165
|
____exports.FramePoint = {}
|
|
113
166
|
local FramePoint = ____exports.FramePoint
|
|
114
167
|
do
|
|
@@ -123,6 +176,79 @@ do
|
|
|
123
176
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
124
177
|
end
|
|
125
178
|
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
179
|
+
local isMouseInsideLocallyByFrame = mutableLuaMap()
|
|
180
|
+
local mouseEnterLocalEventByFrame = mutableLuaMap()
|
|
181
|
+
local mouseLeaveLocalEventByFrame = mutableLuaMap()
|
|
182
|
+
local isLocalMouseTrackingStarted = false
|
|
183
|
+
--- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
|
|
184
|
+
-- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
|
|
185
|
+
-- kept collectable by the weak values mode.
|
|
186
|
+
local leftFrames = setmetatable({}, {__mode = "v"})
|
|
187
|
+
local enteredFrames = setmetatable({}, {__mode = "v"})
|
|
188
|
+
--- All frames share a single poll which invokes every mouse leave event before any mouse enter
|
|
189
|
+
-- event within the same tick. With a poll per event, the invocation order would depend on the
|
|
190
|
+
-- event creation order instead, breaking listeners relying on the natural "leave the old frame,
|
|
191
|
+
-- then enter the new frame" order.
|
|
192
|
+
local function startLocalMouseTracking()
|
|
193
|
+
if isLocalMouseTrackingStarted then
|
|
194
|
+
return
|
|
195
|
+
end
|
|
196
|
+
isLocalMouseTrackingStarted = true
|
|
197
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
198
|
+
local leftFrameCount = 0
|
|
199
|
+
local enteredFrameCount = 0
|
|
200
|
+
for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
|
|
201
|
+
local tooltip = tooltipByFrame[frame]
|
|
202
|
+
local isMouseInside = tooltip ~= nil and tooltip.visible
|
|
203
|
+
if isMouseInside ~= wasMouseInside then
|
|
204
|
+
isMouseInsideLocallyByFrame[frame] = isMouseInside
|
|
205
|
+
if isMouseInside then
|
|
206
|
+
enteredFrames[enteredFrameCount + 1] = frame
|
|
207
|
+
enteredFrameCount = enteredFrameCount + 1
|
|
208
|
+
else
|
|
209
|
+
leftFrames[leftFrameCount + 1] = frame
|
|
210
|
+
leftFrameCount = leftFrameCount + 1
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
for i = 1, leftFrameCount do
|
|
215
|
+
local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
|
|
216
|
+
if event ~= nil then
|
|
217
|
+
Event.invoke(event)
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
for i = 1, enteredFrameCount do
|
|
221
|
+
local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
|
|
222
|
+
if event ~= nil then
|
|
223
|
+
Event.invoke(event)
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
end)
|
|
227
|
+
end
|
|
228
|
+
local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
|
|
229
|
+
local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
|
|
230
|
+
local seenAsyncInitOriginFrameTypes = mutableLuaSet()
|
|
231
|
+
local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
|
|
232
|
+
local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
|
|
233
|
+
seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
|
|
234
|
+
local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
|
|
235
|
+
if asyncInitOriginFrameType ~= nil then
|
|
236
|
+
getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
|
|
237
|
+
end
|
|
238
|
+
end)
|
|
239
|
+
local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
|
|
240
|
+
local players = seenPlayersByAsyncInitOriginFrameType[frame]
|
|
241
|
+
if players == nil then
|
|
242
|
+
return false
|
|
243
|
+
end
|
|
244
|
+
for ____, player in ipairs(Player.all) do
|
|
245
|
+
if player.isUser and player.isPlaying and not (players[player] ~= nil) then
|
|
246
|
+
return false
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
keyByAsyncInitOriginFrameType[frame] = nil
|
|
250
|
+
return true
|
|
251
|
+
end
|
|
126
252
|
____exports.Frame = __TS__Class()
|
|
127
253
|
local Frame = ____exports.Frame
|
|
128
254
|
Frame.name = "Frame"
|
|
@@ -155,6 +281,18 @@ function Frame.prototype.getEvent(self, eventType, c)
|
|
|
155
281
|
end
|
|
156
282
|
return self.events[eventId]
|
|
157
283
|
end
|
|
284
|
+
function Frame.prototype.trackMouseLocally(self)
|
|
285
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
286
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
287
|
+
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
288
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
289
|
+
self:setTooltip(tooltip)
|
|
290
|
+
end
|
|
291
|
+
if not (isMouseInsideLocallyByFrame[self] ~= nil) then
|
|
292
|
+
isMouseInsideLocallyByFrame[self] = false
|
|
293
|
+
startLocalMouseTracking()
|
|
294
|
+
end
|
|
295
|
+
end
|
|
158
296
|
function Frame.prototype.hide(self)
|
|
159
297
|
self.hideCounter = self.hideCounter + 1
|
|
160
298
|
if self.hideCounter > 0 then
|
|
@@ -301,7 +439,17 @@ function Frame.byOrigin(self, frameType, index)
|
|
|
301
439
|
if index == nil then
|
|
302
440
|
index = 0
|
|
303
441
|
end
|
|
304
|
-
|
|
442
|
+
local frame = getOriginFrame(frameType, index)
|
|
443
|
+
local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
|
|
444
|
+
if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
|
|
445
|
+
if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
|
|
446
|
+
location(0, 0)
|
|
447
|
+
else
|
|
448
|
+
seenAsyncInitOriginFrameTypes[frameType] = true
|
|
449
|
+
seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
|
|
450
|
+
end
|
|
451
|
+
end
|
|
452
|
+
return self:of(frame)
|
|
305
453
|
end
|
|
306
454
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
307
455
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
|
@@ -344,27 +492,21 @@ __TS__ObjectDefineProperty(
|
|
|
344
492
|
Frame,
|
|
345
493
|
"minX",
|
|
346
494
|
{get = function(self)
|
|
347
|
-
local
|
|
348
|
-
|
|
349
|
-
local width4by3 = (w - h / 600 * 800) / 2
|
|
350
|
-
local pxtodpi = 0.6 / h
|
|
351
|
-
return -width4by3 * pxtodpi
|
|
495
|
+
local minX = getFrameMinXMaxX()
|
|
496
|
+
return minX
|
|
352
497
|
end}
|
|
353
498
|
)
|
|
354
499
|
__TS__ObjectDefineProperty(
|
|
355
500
|
Frame,
|
|
356
501
|
"maxX",
|
|
357
502
|
{get = function(self)
|
|
358
|
-
local
|
|
359
|
-
|
|
360
|
-
local width4by3 = (w - h / 600 * 800) / 2
|
|
361
|
-
local pxtodpi = 0.6 / h
|
|
362
|
-
return (-width4by3 + w) * pxtodpi
|
|
503
|
+
local ____, maxX = getFrameMinXMaxX()
|
|
504
|
+
return maxX
|
|
363
505
|
end}
|
|
364
506
|
)
|
|
365
507
|
Frame.centerX = 0.4
|
|
366
|
-
Frame.minY =
|
|
367
|
-
Frame.maxY =
|
|
508
|
+
Frame.minY = FRAME_MIN_Y
|
|
509
|
+
Frame.maxY = FRAME_MAX_Y
|
|
368
510
|
Frame.centerY = 0.3
|
|
369
511
|
__TS__SetDescriptor(
|
|
370
512
|
Frame.prototype,
|
|
@@ -626,24 +768,8 @@ __TS__SetDescriptor(
|
|
|
626
768
|
"mouseEnterLocalEvent",
|
|
627
769
|
{get = function(self)
|
|
628
770
|
local event = __TS__New(Event)
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
632
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
633
|
-
self:setTooltip(tooltip)
|
|
634
|
-
end
|
|
635
|
-
local isMouseInside = false
|
|
636
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
637
|
-
local tooltip = tooltipByFrame[self]
|
|
638
|
-
if tooltip and tooltip.visible then
|
|
639
|
-
if not isMouseInside then
|
|
640
|
-
isMouseInside = true
|
|
641
|
-
Event.invoke(event)
|
|
642
|
-
end
|
|
643
|
-
else
|
|
644
|
-
isMouseInside = false
|
|
645
|
-
end
|
|
646
|
-
end)
|
|
771
|
+
self:trackMouseLocally()
|
|
772
|
+
mouseEnterLocalEventByFrame[self] = event
|
|
647
773
|
rawset(self, "mouseEnterLocalEvent", event)
|
|
648
774
|
return event
|
|
649
775
|
end},
|
|
@@ -654,24 +780,8 @@ __TS__SetDescriptor(
|
|
|
654
780
|
"mouseLeaveLocalEvent",
|
|
655
781
|
{get = function(self)
|
|
656
782
|
local event = __TS__New(Event)
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
660
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
661
|
-
self:setTooltip(tooltip)
|
|
662
|
-
end
|
|
663
|
-
local isMouseInside = false
|
|
664
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
665
|
-
local tooltip = tooltipByFrame[self]
|
|
666
|
-
if tooltip and tooltip.visible then
|
|
667
|
-
isMouseInside = true
|
|
668
|
-
else
|
|
669
|
-
if isMouseInside then
|
|
670
|
-
isMouseInside = false
|
|
671
|
-
Event.invoke(event)
|
|
672
|
-
end
|
|
673
|
-
end
|
|
674
|
-
end)
|
|
783
|
+
self:trackMouseLocally()
|
|
784
|
+
mouseLeaveLocalEventByFrame[self] = event
|
|
675
785
|
rawset(self, "mouseLeaveLocalEvent", event)
|
|
676
786
|
return event
|
|
677
787
|
end},
|
|
@@ -912,7 +1022,7 @@ __TS__ObjectDefineProperty(
|
|
|
912
1022
|
)
|
|
913
1023
|
__TS__ObjectDefineProperty(
|
|
914
1024
|
Frame,
|
|
915
|
-
"
|
|
1025
|
+
"mouseMoveEvent",
|
|
916
1026
|
{get = function(self)
|
|
917
1027
|
local event = __TS__New(
|
|
918
1028
|
TriggerEvent,
|
|
@@ -926,47 +1036,15 @@ __TS__ObjectDefineProperty(
|
|
|
926
1036
|
) end,
|
|
927
1037
|
function() return Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseX(), BlzGetTriggerPlayerMouseY() end
|
|
928
1038
|
)
|
|
929
|
-
rawset(____exports.Frame, "
|
|
1039
|
+
rawset(____exports.Frame, "mouseMoveEvent", event)
|
|
930
1040
|
return event
|
|
931
1041
|
end}
|
|
932
1042
|
)
|
|
933
1043
|
__TS__ObjectDefineProperty(
|
|
934
1044
|
Frame,
|
|
935
|
-
"
|
|
1045
|
+
"mouseMoveLocalEvent",
|
|
936
1046
|
{get = function(self)
|
|
937
|
-
|
|
938
|
-
local event = __TS__New(Event)
|
|
939
|
-
local syncX = 0
|
|
940
|
-
local syncY = 0
|
|
941
|
-
local syncCamX = getCameraTargetPositionX()
|
|
942
|
-
local syncCamY = getCameraTargetPositionY()
|
|
943
|
-
local lastX = syncX
|
|
944
|
-
local lastY = syncY
|
|
945
|
-
self.onMouseMove:addListener(function(player, x, y)
|
|
946
|
-
if player.isLocal then
|
|
947
|
-
syncX = x
|
|
948
|
-
syncY = y
|
|
949
|
-
syncCamX = getCameraTargetPositionX()
|
|
950
|
-
syncCamY = getCameraTargetPositionY()
|
|
951
|
-
lastX = x
|
|
952
|
-
lastY = y
|
|
953
|
-
invoke(event, x, y)
|
|
954
|
-
end
|
|
955
|
-
end)
|
|
956
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
957
|
-
if syncX == 0 and syncY == 0 then
|
|
958
|
-
return
|
|
959
|
-
end
|
|
960
|
-
local x = syncX + (getCameraTargetPositionX() - syncCamX)
|
|
961
|
-
local y = syncY + (getCameraTargetPositionY() - syncCamY)
|
|
962
|
-
if x ~= lastX or y ~= lastY then
|
|
963
|
-
lastX = x
|
|
964
|
-
lastY = y
|
|
965
|
-
invoke(event, x, y)
|
|
966
|
-
end
|
|
967
|
-
end)
|
|
968
|
-
rawset(____exports.Frame, "onMouseMoveLocal", event)
|
|
969
|
-
return event
|
|
1047
|
+
return mouseMoveLocalEvent
|
|
970
1048
|
end}
|
|
971
1049
|
)
|
|
972
1050
|
leftBorderFrame = ____exports.Frame:of(leftBorder)
|
package/core/types/handle.lua
CHANGED
|
@@ -15,6 +15,8 @@ local ____exception = require("exception")
|
|
|
15
15
|
local IllegalStateException = ____exception.IllegalStateException
|
|
16
16
|
local ____attributes = require("attributes")
|
|
17
17
|
local AttributesHolder = ____attributes.AttributesHolder
|
|
18
|
+
local ____preconditions = require("utility.preconditions")
|
|
19
|
+
local checkNotNull = ____preconditions.checkNotNull
|
|
18
20
|
local getHandleId = GetHandleId
|
|
19
21
|
local onCreateEventByHandleConstructor = {}
|
|
20
22
|
local onDestroyEventByHandleConstructor = {}
|
|
@@ -58,6 +60,9 @@ function Handle.invokeOnCreateEvent(self, clazz, handle)
|
|
|
58
60
|
Event.invoke(onCreateEvent, handle)
|
|
59
61
|
end
|
|
60
62
|
end
|
|
63
|
+
function Handle.isWrapped(self, handle)
|
|
64
|
+
return self.memoized[getHandleId(handle)] ~= nil
|
|
65
|
+
end
|
|
61
66
|
function Handle.prototype.__tostring(self)
|
|
62
67
|
return (self.constructor.name .. "@") .. tostring(getHandleId(self.handle))
|
|
63
68
|
end
|
|
@@ -66,17 +71,12 @@ function Handle.prototype.onDestroy(self, ...)
|
|
|
66
71
|
return nil
|
|
67
72
|
end
|
|
68
73
|
function Handle.prototype.destroy(self, ...)
|
|
74
|
+
if self[0] == 2 or self[0] == 3 then
|
|
75
|
+
return nil
|
|
76
|
+
end
|
|
69
77
|
local clazz = self.constructor
|
|
70
78
|
local id = getHandleId(self.handle)
|
|
71
|
-
|
|
72
|
-
error(
|
|
73
|
-
__TS__New(
|
|
74
|
-
IllegalStateException,
|
|
75
|
-
"Double-destroy run for handle " .. tostring(id)
|
|
76
|
-
),
|
|
77
|
-
0
|
|
78
|
-
)
|
|
79
|
-
end
|
|
79
|
+
checkNotNull(clazz.memoized[id])
|
|
80
80
|
self[0] = 2
|
|
81
81
|
if self.onDestroyEvent then
|
|
82
82
|
Event.invoke(self.onDestroyEvent)
|
package/core/types/item.d.ts
CHANGED