warscript 0.0.1-dev.d750e38 → 0.0.1-dev.d77b529
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/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +12 -4
- package/core/types/effect.lua +67 -104
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +136 -58
- 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/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 +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +115 -4
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
- package/engine/behaviour/ability/damage.d.ts +13 -3
- package/engine/behaviour/ability/damage.lua +41 -49
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +23 -7
- 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 +17 -5
- package/engine/behaviour/ability.lua +97 -24
- 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 +41 -2
- package/engine/behaviour/unit.lua +270 -6
- package/engine/buff.d.ts +121 -59
- package/engine/buff.lua +605 -301
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +11 -1
- package/engine/internal/ability.lua +104 -44
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item/owner-cache.d.ts +5 -0
- package/engine/internal/item/owner-cache.lua +4 -0
- package/engine/internal/item+owner.d.ts +2 -0
- package/engine/internal/item+owner.lua +37 -8
- package/engine/internal/item.d.ts +34 -18
- package/engine/internal/item.lua +308 -102
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +113 -12
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +57 -14
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +16 -0
- package/engine/internal/unit/bonus.lua +119 -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 +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +73 -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+rally.lua +9 -31
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +65 -27
- package/engine/internal/unit.d.ts +43 -33
- package/engine/internal/unit.lua +391 -323
- package/engine/lightning.d.ts +4 -3
- package/engine/lightning.lua +22 -15
- package/engine/local-client.d.ts +28 -0
- package/engine/local-client.lua +324 -54
- 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 +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -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/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/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 +36 -19
- package/engine/object-data/entry/ability-type.lua +307 -29
- 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 +18 -3
- package/engine/object-data/entry/item-type.lua +88 -4
- 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 +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 +21 -14
- package/engine/object-data/entry.lua +68 -32
- package/engine/object-field/ability.d.ts +4 -4
- 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 +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- 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/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -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 +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 +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.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- 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/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -1
- 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 +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.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/lightning.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { LightningTypeId } from "./object-data/entry/lightning-type";
|
|
3
|
-
import { Handle, HandleDestructor } from "../core/types/handle";
|
|
4
3
|
import { Unit } from "../core/types/unit";
|
|
4
|
+
import { AbstractDestroyable, Destructor } from "../destroyable";
|
|
5
5
|
declare const enum LightningPropertyKey {
|
|
6
6
|
CHECK_VISIBILITY = 100,
|
|
7
7
|
SOURCE_UNIT = 101,
|
|
@@ -16,7 +16,8 @@ declare const enum LightningPropertyKey {
|
|
|
16
16
|
FADING = 110
|
|
17
17
|
}
|
|
18
18
|
export type LightningConstructor<T extends Lightning> = typeof Lightning & (new (handle: jlightning, typeId: LightningTypeId) => T);
|
|
19
|
-
export declare class Lightning extends
|
|
19
|
+
export declare class Lightning extends AbstractDestroyable {
|
|
20
|
+
readonly handle: jlightning;
|
|
20
21
|
readonly typeId: LightningTypeId;
|
|
21
22
|
private [LightningPropertyKey.CHECK_VISIBILITY]?;
|
|
22
23
|
private [LightningPropertyKey.SOURCE_UNIT]?;
|
|
@@ -30,7 +31,7 @@ export declare class Lightning extends Handle<jlightning> {
|
|
|
30
31
|
private [LightningPropertyKey.DURATION]?;
|
|
31
32
|
private [LightningPropertyKey.FADING]?;
|
|
32
33
|
constructor(handle: jlightning, typeId: LightningTypeId);
|
|
33
|
-
protected onDestroy():
|
|
34
|
+
protected onDestroy(): Destructor;
|
|
34
35
|
static create<T extends Lightning>(this: LightningConstructor<T>, typeId: LightningTypeId, ...parameters: [
|
|
35
36
|
...checkVisibility: [boolean] | [],
|
|
36
37
|
...sourceAndTarget: [sourceX: number, sourceY: number, targetX: number, targetY: number] | [
|
package/engine/lightning.lua
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__New = ____lualib.__TS__New
|
|
4
5
|
local ____exports = {}
|
|
5
|
-
local ____handle = require("core.types.handle")
|
|
6
|
-
local Handle = ____handle.Handle
|
|
7
6
|
local ____timer = require("core.types.timer")
|
|
8
7
|
local Timer = ____timer.Timer
|
|
9
8
|
local ____functions = require("utility.functions")
|
|
10
9
|
local forwardByN = ____functions.forwardByN
|
|
11
10
|
local ____unit_2Dmissile_2Ddata = require("engine.internal.unit-missile-data")
|
|
12
11
|
local MISSILE_DATA_BY_UNIT_TYPE_ID = ____unit_2Dmissile_2Ddata.MISSILE_DATA_BY_UNIT_TYPE_ID
|
|
13
|
-
local
|
|
14
|
-
local
|
|
12
|
+
local ____destroyable = require("destroyable")
|
|
13
|
+
local AbstractDestroyable = ____destroyable.AbstractDestroyable
|
|
15
14
|
local ____type = _G.type
|
|
16
15
|
local select = _G.select
|
|
17
16
|
local cos = math.cos
|
|
@@ -43,9 +42,10 @@ local temporaryLightningsCount = 0
|
|
|
43
42
|
____exports.Lightning = __TS__Class()
|
|
44
43
|
local Lightning = ____exports.Lightning
|
|
45
44
|
Lightning.name = "Lightning"
|
|
46
|
-
__TS__ClassExtends(Lightning,
|
|
45
|
+
__TS__ClassExtends(Lightning, AbstractDestroyable)
|
|
47
46
|
function Lightning.prototype.____constructor(self, handle, typeId)
|
|
48
|
-
|
|
47
|
+
AbstractDestroyable.prototype.____constructor(self)
|
|
48
|
+
self.handle = handle
|
|
49
49
|
self.typeId = typeId
|
|
50
50
|
end
|
|
51
51
|
function Lightning.prototype.onDestroy(self)
|
|
@@ -53,7 +53,7 @@ function Lightning.prototype.onDestroy(self)
|
|
|
53
53
|
unitToPointLightnings[self] = nil
|
|
54
54
|
pointToUnitLightnings[self] = nil
|
|
55
55
|
destroyLightning(self.handle)
|
|
56
|
-
return
|
|
56
|
+
return AbstractDestroyable.prototype.onDestroy(self)
|
|
57
57
|
end
|
|
58
58
|
function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY, targetXOrTargetUnitOrTargetYOrTargetZ, targetY, targetZ)
|
|
59
59
|
if type(checkVisibility) ~= "boolean" then
|
|
@@ -69,7 +69,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
69
69
|
)
|
|
70
70
|
end
|
|
71
71
|
if targetZ ~= nil then
|
|
72
|
-
return
|
|
72
|
+
return __TS__New(
|
|
73
|
+
self,
|
|
73
74
|
addLightningEx(
|
|
74
75
|
util.id2s(typeId),
|
|
75
76
|
checkVisibility,
|
|
@@ -86,7 +87,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
86
87
|
if targetXOrTargetUnitOrTargetYOrTargetZ ~= nil then
|
|
87
88
|
if ____type(targetXOrTargetUnitOrTargetYOrTargetZ) == "number" then
|
|
88
89
|
if ____type(sourceXOrSourceUnit) == "number" then
|
|
89
|
-
return
|
|
90
|
+
return __TS__New(
|
|
91
|
+
self,
|
|
90
92
|
addLightning(
|
|
91
93
|
util.id2s(typeId),
|
|
92
94
|
checkVisibility,
|
|
@@ -99,7 +101,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
99
101
|
)
|
|
100
102
|
end
|
|
101
103
|
local unit = sourceXOrSourceUnit.handle
|
|
102
|
-
local lightning =
|
|
104
|
+
local lightning = __TS__New(
|
|
105
|
+
self,
|
|
103
106
|
addLightningEx(
|
|
104
107
|
util.id2s(typeId),
|
|
105
108
|
checkVisibility,
|
|
@@ -124,7 +127,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
124
127
|
return lightning
|
|
125
128
|
end
|
|
126
129
|
local unit = targetXOrTargetUnitOrTargetYOrTargetZ.handle
|
|
127
|
-
local lightning =
|
|
130
|
+
local lightning = __TS__New(
|
|
131
|
+
self,
|
|
128
132
|
addLightningEx(
|
|
129
133
|
util.id2s(typeId),
|
|
130
134
|
checkVisibility,
|
|
@@ -153,7 +157,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
153
157
|
local unit = sourceXOrSourceUnit.handle
|
|
154
158
|
moveLocation(location, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY)
|
|
155
159
|
local z = getLocationZ(location)
|
|
156
|
-
local lightning =
|
|
160
|
+
local lightning = __TS__New(
|
|
161
|
+
self,
|
|
157
162
|
addLightningEx(
|
|
158
163
|
util.id2s(typeId),
|
|
159
164
|
checkVisibility,
|
|
@@ -180,7 +185,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
180
185
|
local unit = sourceZOrTargetXOrTargetUnitOrTargetY.handle
|
|
181
186
|
moveLocation(location, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit)
|
|
182
187
|
local z = getLocationZ(location)
|
|
183
|
-
local lightning =
|
|
188
|
+
local lightning = __TS__New(
|
|
189
|
+
self,
|
|
184
190
|
addLightningEx(
|
|
185
191
|
util.id2s(typeId),
|
|
186
192
|
checkVisibility,
|
|
@@ -206,7 +212,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
|
|
|
206
212
|
end
|
|
207
213
|
local sourceUnit = sourceXOrSourceUnit.handle
|
|
208
214
|
local targetUnit = sourceYOrTargetXOrTargetUnit.handle
|
|
209
|
-
local lightning =
|
|
215
|
+
local lightning = __TS__New(
|
|
216
|
+
self,
|
|
210
217
|
addLightningEx(
|
|
211
218
|
util.id2s(typeId),
|
|
212
219
|
checkVisibility,
|
|
@@ -319,7 +326,7 @@ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
|
|
|
319
326
|
getLightningColorR(handle),
|
|
320
327
|
getLightningColorG(handle),
|
|
321
328
|
getLightningColorB(handle),
|
|
322
|
-
|
|
329
|
+
getLightningColorA(handle) * (1 - UPDATE_PERIOD / duration)
|
|
323
330
|
)
|
|
324
331
|
end
|
|
325
332
|
lightning[109] = duration - UPDATE_PERIOD
|
package/engine/local-client.d.ts
CHANGED
|
@@ -3,19 +3,47 @@ import { Unit } from "../core/types/unit";
|
|
|
3
3
|
import { Async } from "../core/types/async";
|
|
4
4
|
import { Event, TriggerEvent } from "../event";
|
|
5
5
|
import { GraphicsMode } from "./index";
|
|
6
|
+
import { Color } from "../core/types/color";
|
|
6
7
|
export declare class LocalClient {
|
|
7
8
|
private constructor();
|
|
8
9
|
static readonly locale: string;
|
|
9
10
|
static get width(): number;
|
|
10
11
|
static get height(): number;
|
|
12
|
+
static get isSD(): boolean;
|
|
11
13
|
static get isHD(): boolean;
|
|
14
|
+
static get isDE(): boolean;
|
|
12
15
|
static get graphicsMode(): GraphicsMode;
|
|
13
16
|
static get isActive(): boolean;
|
|
17
|
+
static get isMinimized(): boolean;
|
|
18
|
+
static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
|
|
19
|
+
/** Local input state; do not use to branch synchronized game logic. */
|
|
20
|
+
static isKeyPressed(key: joskeytype): boolean;
|
|
21
|
+
/** Local input state. Uses the same modifier mask as Player key events. */
|
|
22
|
+
static isMetaKeyPressed(key: oskeymeta): boolean;
|
|
23
|
+
/** Local input state. */
|
|
24
|
+
static isMouseButtonPressed(button: jmousebuttontype): boolean;
|
|
25
|
+
static get mouseScreenX(): number;
|
|
26
|
+
static get mouseScreenY(): number;
|
|
27
|
+
static screenToFrameX(x: number): number;
|
|
28
|
+
static screenToFrameY(y: number): number;
|
|
29
|
+
static frameToScreenX(x: number): number;
|
|
30
|
+
static frameToScreenY(y: number): number;
|
|
31
|
+
static get mouseFrameX(): number;
|
|
32
|
+
static get mouseFrameY(): number;
|
|
14
33
|
static get mouseFocusUnit(): Async<Unit> | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Local selection sampled every 1/64 second; undefined before the first tick. Among
|
|
36
|
+
* several selected units, the one the portrait shows, identified by its health and
|
|
37
|
+
* mana; units with identical values cannot be told apart.
|
|
38
|
+
*/
|
|
15
39
|
static get mainSelectedUnit(): Async<Unit> | undefined;
|
|
16
40
|
static get mainSelectedUnitChangeEvent(): Event<[
|
|
17
41
|
previousMainSelectedUnit: Unit | undefined,
|
|
18
42
|
newMainSelectedUnit: Unit | undefined
|
|
19
43
|
]>;
|
|
44
|
+
static get isInTargetingMode(): boolean;
|
|
45
|
+
static readonly targetingModeEnterEvent: Event<[]>;
|
|
46
|
+
static readonly targetingModeLeaveEvent: Event<[]>;
|
|
47
|
+
static readonly targetingModeStateChangeEvent: Event<[]>;
|
|
20
48
|
static readonly onDisconnect: TriggerEvent<[]>;
|
|
21
49
|
}
|
package/engine/local-client.lua
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
-
local
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
4
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
4
5
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
5
|
-
local __TS__New = ____lualib.__TS__New
|
|
6
6
|
local ____exports = {}
|
|
7
|
+
local actualizeTargetingModeState
|
|
7
8
|
local ____unit = require("core.types.unit")
|
|
8
9
|
local Unit = ____unit.Unit
|
|
9
10
|
local ____event = require("event")
|
|
@@ -15,32 +16,99 @@ local ____player = require("core.types.player")
|
|
|
15
16
|
local Player = ____player.Player
|
|
16
17
|
local ____timer = require("core.types.timer")
|
|
17
18
|
local Timer = ____timer.Timer
|
|
18
|
-
local
|
|
19
|
-
local
|
|
20
|
-
local
|
|
21
|
-
local
|
|
22
|
-
local
|
|
19
|
+
local ____color = require("core.types.color")
|
|
20
|
+
local Color = ____color.Color
|
|
21
|
+
local ____arrays = require("utility.arrays")
|
|
22
|
+
local array = ____arrays.array
|
|
23
|
+
local frameToPixelX = BlzFrameToPixelX
|
|
24
|
+
local frameToPixelY = BlzFrameToPixelY
|
|
23
25
|
local getHandleId = GetHandleId
|
|
26
|
+
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
27
|
+
local getLocalClientWidth = BlzGetLocalClientWidth
|
|
28
|
+
local getLocale = BlzGetLocale
|
|
24
29
|
local getMouseFocusUnit = BlzGetMouseFocusUnit
|
|
30
|
+
local getMouseScreenPosX = BlzGetMouseScreenPosX
|
|
31
|
+
local getMouseScreenPosY = BlzGetMouseScreenPosY
|
|
32
|
+
local frameGetText = BlzFrameGetText
|
|
25
33
|
local getUnitRealField = BlzGetUnitRealField
|
|
34
|
+
local getUnitState = GetUnitState
|
|
26
35
|
local getUnitTypeId = GetUnitTypeId
|
|
27
|
-
local
|
|
36
|
+
local isHeroUnitId = IsHeroUnitId
|
|
37
|
+
local isKeyPressed = BlzIsKeyPressed
|
|
38
|
+
local isLocalClientActive = BlzIsLocalClientActive
|
|
39
|
+
local isMetaKeyPressed = BlzIsMetaKeyPressed
|
|
40
|
+
local isMouseButtonPressed = BlzIsMouseButtonPressed
|
|
41
|
+
local loadTOCFile = BlzLoadTOCFile
|
|
42
|
+
local pingMinimap = PingMinimap
|
|
43
|
+
local pingMinimapEx = PingMinimapEx
|
|
44
|
+
local pixelToFrameX = BlzPixelToFrameX
|
|
45
|
+
local pixelToFrameY = BlzPixelToFrameY
|
|
46
|
+
local setFrameVisible = BlzFrameSetVisible
|
|
28
47
|
local tableSort = table.sort
|
|
29
|
-
local
|
|
48
|
+
local hdTocPath = "_warscript\\IsHD.toc"
|
|
49
|
+
local deTocPath = "_warscript\\IsDE.toc"
|
|
30
50
|
compiletime(function()
|
|
31
51
|
if currentMap then
|
|
32
|
-
local
|
|
33
|
-
currentMap:addFileString("_HD.w3mod\\" ..
|
|
34
|
-
currentMap:addFileString("_HD.w3mod\\" ..
|
|
52
|
+
local hdFdfPath = "_warscript\\IsHD.fdf"
|
|
53
|
+
currentMap:addFileString("_HD.w3mod\\" .. hdFdfPath, "\r\n")
|
|
54
|
+
currentMap:addFileString("_HD.w3mod\\" .. hdTocPath, hdFdfPath .. "\r\n")
|
|
55
|
+
local deFdfPath = "_warscript\\IsDE.fdf"
|
|
56
|
+
currentMap:addFileString("_DE.w3mod\\" .. deFdfPath, "\r\n")
|
|
57
|
+
currentMap:addFileString("_DE.w3mod\\" .. deTocPath, deFdfPath .. "\r\n")
|
|
35
58
|
end
|
|
36
59
|
end)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
60
|
+
--- The portrait's health and mana texts show the focused unit's current and maximum values
|
|
61
|
+
-- as "current / maximum". Once they exist, these origin frames live for the whole game, so
|
|
62
|
+
-- the polling may read them every tick; the group panel's buttons, by contrast, are rebuilt
|
|
63
|
+
-- at any selection change and a retained button handle crashes the game on the first native
|
|
64
|
+
-- called with it. The frames are not there at map load, though, and appear at different
|
|
65
|
+
-- times on different clients: `Frame.byOrigin` returns undefined until then and balances
|
|
66
|
+
-- the handle allocation across clients, so it is asked again once a second.
|
|
67
|
+
local portraitHpText
|
|
68
|
+
local portraitManaText
|
|
69
|
+
local function actualizePortraitFrames()
|
|
70
|
+
portraitHpText = Frame:byOrigin(ORIGIN_FRAME_PORTRAIT_HP_TEXT)
|
|
71
|
+
portraitManaText = Frame:byOrigin(ORIGIN_FRAME_PORTRAIT_MANA_TEXT)
|
|
72
|
+
end
|
|
73
|
+
--- Finds "current / maximum" in the text, which may also carry color codes and other
|
|
74
|
+
-- decoration; returns -1 for both when there is no such pair.
|
|
75
|
+
local function parsePortraitValues(frame)
|
|
76
|
+
if frame == nil then
|
|
77
|
+
return -1, -1
|
|
78
|
+
end
|
|
79
|
+
local text = frameGetText(frame.handle)
|
|
80
|
+
local current, maximum = string.match(text, "(%d+)%s*/%s*(%d+)")
|
|
81
|
+
if current == nil or maximum == nil then
|
|
82
|
+
return -1, -1
|
|
83
|
+
end
|
|
84
|
+
return tonumber(current), tonumber(maximum)
|
|
85
|
+
end
|
|
86
|
+
--- Whether a unit value can be what the portrait shows as `shown`; the rounding rule is unknown.
|
|
87
|
+
local function matchesPortraitValue(value, shown)
|
|
88
|
+
return math.abs(value - shown) < 1
|
|
89
|
+
end
|
|
90
|
+
--- Whether the unit's health matches what the portrait shows; the health text is required.
|
|
91
|
+
local function matchesPortraitHealth(unit, hp, maxHp)
|
|
92
|
+
local handle = unit.handle
|
|
93
|
+
return maxHp >= 0 and matchesPortraitValue(
|
|
94
|
+
getUnitState(handle, UNIT_STATE_LIFE),
|
|
95
|
+
hp
|
|
96
|
+
) and matchesPortraitValue(
|
|
97
|
+
getUnitState(handle, UNIT_STATE_MAX_LIFE),
|
|
98
|
+
maxHp
|
|
42
99
|
)
|
|
43
|
-
end
|
|
100
|
+
end
|
|
101
|
+
--- Whether the unit has mana and it matches what the portrait shows. The mana text is not
|
|
102
|
+
-- redrawn for a unit without mana (it keeps the previously focused unit's values), so a
|
|
103
|
+
-- mana match is evidence for a unit, but a mismatch is no evidence against one without mana.
|
|
104
|
+
local function matchesPortraitMana(unit, mana, maxMana)
|
|
105
|
+
local handle = unit.handle
|
|
106
|
+
local unitMaxMana = getUnitState(handle, UNIT_STATE_MAX_MANA)
|
|
107
|
+
return maxMana >= 0 and unitMaxMana > 0 and matchesPortraitValue(
|
|
108
|
+
getUnitState(handle, UNIT_STATE_MANA),
|
|
109
|
+
mana
|
|
110
|
+
) and matchesPortraitValue(unitMaxMana, maxMana)
|
|
111
|
+
end
|
|
44
112
|
local localSelectedUnits = {}
|
|
45
113
|
local indexByLocalSelectedUnit = {}
|
|
46
114
|
local function compareUnitsSelectionPriority(a, b)
|
|
@@ -57,11 +125,62 @@ local function compareUnitsSelectionPriority(a, b)
|
|
|
57
125
|
end
|
|
58
126
|
local mainSelectedUnitChangeEvent
|
|
59
127
|
local previousMainSelectedUnit
|
|
128
|
+
local currentMainSelectedUnit
|
|
129
|
+
local lastTargetingModeState = false
|
|
130
|
+
local targetingModeEnterEvent = __TS__New(Event)
|
|
131
|
+
local targetingModeLeaveEvent = __TS__New(Event)
|
|
132
|
+
local targetingModeStateChangeEvent = __TS__New(Event)
|
|
60
133
|
____exports.LocalClient = __TS__Class()
|
|
61
134
|
local LocalClient = ____exports.LocalClient
|
|
62
135
|
LocalClient.name = "LocalClient"
|
|
63
136
|
function LocalClient.prototype.____constructor(self)
|
|
64
137
|
end
|
|
138
|
+
function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
|
|
139
|
+
if redOrColor == nil then
|
|
140
|
+
pingMinimap(x, y, duration)
|
|
141
|
+
elseif __TS__InstanceOf(redOrColor, Color) then
|
|
142
|
+
pingMinimapEx(
|
|
143
|
+
x,
|
|
144
|
+
y,
|
|
145
|
+
duration,
|
|
146
|
+
redOrColor.r,
|
|
147
|
+
redOrColor.g,
|
|
148
|
+
redOrColor.b,
|
|
149
|
+
greenOrFlashy or false
|
|
150
|
+
)
|
|
151
|
+
else
|
|
152
|
+
pingMinimapEx(
|
|
153
|
+
x,
|
|
154
|
+
y,
|
|
155
|
+
duration,
|
|
156
|
+
redOrColor,
|
|
157
|
+
greenOrFlashy,
|
|
158
|
+
blue,
|
|
159
|
+
flashy or false
|
|
160
|
+
)
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
function LocalClient.isKeyPressed(self, key)
|
|
164
|
+
return isKeyPressed(key)
|
|
165
|
+
end
|
|
166
|
+
function LocalClient.isMetaKeyPressed(self, key)
|
|
167
|
+
return isMetaKeyPressed(key)
|
|
168
|
+
end
|
|
169
|
+
function LocalClient.isMouseButtonPressed(self, button)
|
|
170
|
+
return isMouseButtonPressed(button)
|
|
171
|
+
end
|
|
172
|
+
function LocalClient.screenToFrameX(self, x)
|
|
173
|
+
return pixelToFrameX(x)
|
|
174
|
+
end
|
|
175
|
+
function LocalClient.screenToFrameY(self, y)
|
|
176
|
+
return pixelToFrameY(y)
|
|
177
|
+
end
|
|
178
|
+
function LocalClient.frameToScreenX(self, x)
|
|
179
|
+
return frameToPixelX(x)
|
|
180
|
+
end
|
|
181
|
+
function LocalClient.frameToScreenY(self, y)
|
|
182
|
+
return frameToPixelY(y)
|
|
183
|
+
end
|
|
65
184
|
LocalClient.locale = getLocale()
|
|
66
185
|
__TS__ObjectDefineProperty(
|
|
67
186
|
LocalClient,
|
|
@@ -77,6 +196,13 @@ __TS__ObjectDefineProperty(
|
|
|
77
196
|
return getLocalClientHeight()
|
|
78
197
|
end}
|
|
79
198
|
)
|
|
199
|
+
__TS__ObjectDefineProperty(
|
|
200
|
+
LocalClient,
|
|
201
|
+
"isSD",
|
|
202
|
+
{get = function(self)
|
|
203
|
+
return true
|
|
204
|
+
end}
|
|
205
|
+
)
|
|
80
206
|
__TS__ObjectDefineProperty(
|
|
81
207
|
LocalClient,
|
|
82
208
|
"isHD",
|
|
@@ -84,11 +210,18 @@ __TS__ObjectDefineProperty(
|
|
|
84
210
|
return false
|
|
85
211
|
end}
|
|
86
212
|
)
|
|
213
|
+
__TS__ObjectDefineProperty(
|
|
214
|
+
LocalClient,
|
|
215
|
+
"isDE",
|
|
216
|
+
{get = function(self)
|
|
217
|
+
return false
|
|
218
|
+
end}
|
|
219
|
+
)
|
|
87
220
|
__TS__ObjectDefineProperty(
|
|
88
221
|
LocalClient,
|
|
89
222
|
"graphicsMode",
|
|
90
223
|
{get = function(self)
|
|
91
|
-
return
|
|
224
|
+
return 0
|
|
92
225
|
end}
|
|
93
226
|
)
|
|
94
227
|
__TS__ObjectDefineProperty(
|
|
@@ -98,6 +231,41 @@ __TS__ObjectDefineProperty(
|
|
|
98
231
|
return isLocalClientActive()
|
|
99
232
|
end}
|
|
100
233
|
)
|
|
234
|
+
__TS__ObjectDefineProperty(
|
|
235
|
+
LocalClient,
|
|
236
|
+
"isMinimized",
|
|
237
|
+
{get = function(self)
|
|
238
|
+
return getLocalClientHeight() == 0
|
|
239
|
+
end}
|
|
240
|
+
)
|
|
241
|
+
__TS__ObjectDefineProperty(
|
|
242
|
+
LocalClient,
|
|
243
|
+
"mouseScreenX",
|
|
244
|
+
{get = function(self)
|
|
245
|
+
return getMouseScreenPosX()
|
|
246
|
+
end}
|
|
247
|
+
)
|
|
248
|
+
__TS__ObjectDefineProperty(
|
|
249
|
+
LocalClient,
|
|
250
|
+
"mouseScreenY",
|
|
251
|
+
{get = function(self)
|
|
252
|
+
return getMouseScreenPosY()
|
|
253
|
+
end}
|
|
254
|
+
)
|
|
255
|
+
__TS__ObjectDefineProperty(
|
|
256
|
+
LocalClient,
|
|
257
|
+
"mouseFrameX",
|
|
258
|
+
{get = function(self)
|
|
259
|
+
return pixelToFrameX(getMouseScreenPosX())
|
|
260
|
+
end}
|
|
261
|
+
)
|
|
262
|
+
__TS__ObjectDefineProperty(
|
|
263
|
+
LocalClient,
|
|
264
|
+
"mouseFrameY",
|
|
265
|
+
{get = function(self)
|
|
266
|
+
return pixelToFrameY(getMouseScreenPosY())
|
|
267
|
+
end}
|
|
268
|
+
)
|
|
101
269
|
__TS__ObjectDefineProperty(
|
|
102
270
|
LocalClient,
|
|
103
271
|
"mouseFocusUnit",
|
|
@@ -109,33 +277,7 @@ __TS__ObjectDefineProperty(
|
|
|
109
277
|
LocalClient,
|
|
110
278
|
"mainSelectedUnit",
|
|
111
279
|
{get = function(self)
|
|
112
|
-
|
|
113
|
-
for i = 1, #localSelectedUnits do
|
|
114
|
-
indexByLocalSelectedUnit[localSelectedUnits[i]] = i
|
|
115
|
-
end
|
|
116
|
-
tableSort(localSelectedUnits, compareUnitsSelectionPriority)
|
|
117
|
-
local mainSelectedUnitIndex
|
|
118
|
-
if selectionButtons and #localSelectedUnits > 1 then
|
|
119
|
-
local maxButtonWidth = 0
|
|
120
|
-
for i = 0, #selectionButtons - 1 do
|
|
121
|
-
local width = selectionButtons[i + 1].width
|
|
122
|
-
if width > maxButtonWidth then
|
|
123
|
-
maxButtonWidth = width
|
|
124
|
-
mainSelectedUnitIndex = i
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
local mainSelectedUnit = localSelectedUnits[(mainSelectedUnitIndex or 0) + 1]
|
|
129
|
-
for i = 1, #localSelectedUnits do
|
|
130
|
-
indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
|
|
131
|
-
localSelectedUnits[i] = nil
|
|
132
|
-
end
|
|
133
|
-
if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
|
|
134
|
-
local previousPreviousMainSelectedUnit = previousMainSelectedUnit
|
|
135
|
-
previousMainSelectedUnit = mainSelectedUnit
|
|
136
|
-
Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
|
|
137
|
-
end
|
|
138
|
-
return mainSelectedUnit
|
|
280
|
+
return currentMainSelectedUnit
|
|
139
281
|
end}
|
|
140
282
|
)
|
|
141
283
|
__TS__ObjectDefineProperty(
|
|
@@ -144,13 +286,20 @@ __TS__ObjectDefineProperty(
|
|
|
144
286
|
{get = function(self)
|
|
145
287
|
if mainSelectedUnitChangeEvent == nil then
|
|
146
288
|
mainSelectedUnitChangeEvent = __TS__New(Event)
|
|
147
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
148
|
-
local _ = ____exports.LocalClient.mainSelectedUnit
|
|
149
|
-
end)
|
|
150
289
|
end
|
|
151
290
|
return mainSelectedUnitChangeEvent
|
|
152
291
|
end}
|
|
153
292
|
)
|
|
293
|
+
__TS__ObjectDefineProperty(
|
|
294
|
+
LocalClient,
|
|
295
|
+
"isInTargetingMode",
|
|
296
|
+
{get = function(self)
|
|
297
|
+
return actualizeTargetingModeState()
|
|
298
|
+
end}
|
|
299
|
+
)
|
|
300
|
+
LocalClient.targetingModeEnterEvent = targetingModeEnterEvent
|
|
301
|
+
LocalClient.targetingModeLeaveEvent = targetingModeLeaveEvent
|
|
302
|
+
LocalClient.targetingModeStateChangeEvent = targetingModeStateChangeEvent
|
|
154
303
|
LocalClient.onDisconnect = __TS__New(
|
|
155
304
|
TriggerEvent,
|
|
156
305
|
function(trigger)
|
|
@@ -158,11 +307,132 @@ LocalClient.onDisconnect = __TS__New(
|
|
|
158
307
|
end,
|
|
159
308
|
function() return end
|
|
160
309
|
)
|
|
310
|
+
local function actualizeMainSelectedUnit()
|
|
311
|
+
Unit:getSelectionOf(Player["local"], localSelectedUnits)
|
|
312
|
+
local selectionCount = #localSelectedUnits
|
|
313
|
+
for i = 1, selectionCount do
|
|
314
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = i
|
|
315
|
+
end
|
|
316
|
+
tableSort(localSelectedUnits, compareUnitsSelectionPriority)
|
|
317
|
+
local mainSelectedUnit
|
|
318
|
+
if selectionCount <= 1 then
|
|
319
|
+
mainSelectedUnit = localSelectedUnits[1]
|
|
320
|
+
else
|
|
321
|
+
local hp, maxHp = parsePortraitValues(portraitHpText)
|
|
322
|
+
local mana, maxMana = parsePortraitValues(portraitManaText)
|
|
323
|
+
if maxHp >= 0 then
|
|
324
|
+
local healthMatch
|
|
325
|
+
for i = 1, selectionCount do
|
|
326
|
+
local unit = localSelectedUnits[i]
|
|
327
|
+
if matchesPortraitHealth(unit, hp, maxHp) then
|
|
328
|
+
if matchesPortraitMana(unit, mana, maxMana) then
|
|
329
|
+
mainSelectedUnit = unit
|
|
330
|
+
break
|
|
331
|
+
end
|
|
332
|
+
if healthMatch == nil then
|
|
333
|
+
healthMatch = unit
|
|
334
|
+
end
|
|
335
|
+
end
|
|
336
|
+
end
|
|
337
|
+
if mainSelectedUnit == nil then
|
|
338
|
+
mainSelectedUnit = healthMatch
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
if mainSelectedUnit == nil and previousMainSelectedUnit ~= nil then
|
|
342
|
+
for i = 1, selectionCount do
|
|
343
|
+
if localSelectedUnits[i] == previousMainSelectedUnit then
|
|
344
|
+
mainSelectedUnit = previousMainSelectedUnit
|
|
345
|
+
break
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
if mainSelectedUnit == nil then
|
|
350
|
+
mainSelectedUnit = localSelectedUnits[1]
|
|
351
|
+
end
|
|
352
|
+
end
|
|
353
|
+
for i = 1, selectionCount do
|
|
354
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
|
|
355
|
+
localSelectedUnits[i] = nil
|
|
356
|
+
end
|
|
357
|
+
currentMainSelectedUnit = mainSelectedUnit
|
|
358
|
+
if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
|
|
359
|
+
local previousPreviousMainSelectedUnit = previousMainSelectedUnit
|
|
360
|
+
previousMainSelectedUnit = mainSelectedUnit
|
|
361
|
+
Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
local commandButtons = array(
|
|
365
|
+
12,
|
|
366
|
+
function(i) return Frame:byOrigin(ORIGIN_FRAME_COMMAND_BUTTON, i) end
|
|
367
|
+
)
|
|
368
|
+
local commandButtonContainers = array(
|
|
369
|
+
12,
|
|
370
|
+
function(i) return Frame:byName("CommandButton_" .. tostring(i)) end
|
|
371
|
+
)
|
|
372
|
+
local function getTargetingModeState()
|
|
373
|
+
for ____, container in ipairs(commandButtonContainers) do
|
|
374
|
+
if container.hideCounter > 0 then
|
|
375
|
+
setFrameVisible(container.handle, true)
|
|
376
|
+
end
|
|
377
|
+
end
|
|
378
|
+
local targeting = false
|
|
379
|
+
local failed = false
|
|
380
|
+
local failure
|
|
381
|
+
do
|
|
382
|
+
local function ____catch(____error)
|
|
383
|
+
failed = true
|
|
384
|
+
failure = ____error
|
|
385
|
+
end
|
|
386
|
+
local ____try, ____hasReturned = pcall(function()
|
|
387
|
+
targeting = commandButtons[12].visible
|
|
388
|
+
for i = 0, 10 do
|
|
389
|
+
if commandButtons[i + 1].visible then
|
|
390
|
+
targeting = false
|
|
391
|
+
break
|
|
392
|
+
end
|
|
393
|
+
end
|
|
394
|
+
end)
|
|
395
|
+
if not ____try then
|
|
396
|
+
____catch(____hasReturned)
|
|
397
|
+
end
|
|
398
|
+
end
|
|
399
|
+
for ____, container in ipairs(commandButtonContainers) do
|
|
400
|
+
if container.hideCounter > 0 then
|
|
401
|
+
setFrameVisible(container.handle, false)
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
if failed then
|
|
405
|
+
error(failure, 0)
|
|
406
|
+
end
|
|
407
|
+
return targeting
|
|
408
|
+
end
|
|
409
|
+
actualizeTargetingModeState = function()
|
|
410
|
+
if getTargetingModeState() then
|
|
411
|
+
if not lastTargetingModeState then
|
|
412
|
+
lastTargetingModeState = true
|
|
413
|
+
Event.invoke(targetingModeEnterEvent)
|
|
414
|
+
Event.invoke(targetingModeStateChangeEvent)
|
|
415
|
+
end
|
|
416
|
+
return true
|
|
417
|
+
end
|
|
418
|
+
if lastTargetingModeState then
|
|
419
|
+
lastTargetingModeState = false
|
|
420
|
+
Event.invoke(targetingModeLeaveEvent)
|
|
421
|
+
Event.invoke(targetingModeStateChangeEvent)
|
|
422
|
+
end
|
|
423
|
+
return false
|
|
424
|
+
end
|
|
425
|
+
Timer.onPeriod[1]:addListener(actualizePortraitFrames)
|
|
426
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
427
|
+
actualizeMainSelectedUnit()
|
|
428
|
+
actualizeTargetingModeState()
|
|
429
|
+
end)
|
|
161
430
|
warpack.afterMapInit(function()
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
)
|
|
431
|
+
local isDE = loadTOCFile(deTocPath)
|
|
432
|
+
local isHD = not isDE and loadTOCFile(hdTocPath)
|
|
433
|
+
rawset(____exports.LocalClient, "isDE", isDE)
|
|
434
|
+
rawset(____exports.LocalClient, "isHD", isHD)
|
|
435
|
+
rawset(____exports.LocalClient, "isSD", not isDE and not isHD)
|
|
436
|
+
rawset(____exports.LocalClient, "graphicsMode", isDE and 2 or (isHD and 1 or 0))
|
|
167
437
|
end)
|
|
168
438
|
return ____exports
|
|
@@ -1,2 +1,18 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
|
+
local animationNames = {
|
|
3
|
+
attack = true,
|
|
4
|
+
birth = true,
|
|
5
|
+
death = true,
|
|
6
|
+
decay = true,
|
|
7
|
+
dissipate = true,
|
|
8
|
+
morph = true,
|
|
9
|
+
portrait = true,
|
|
10
|
+
sleep = true,
|
|
11
|
+
spell = true,
|
|
12
|
+
stand = true,
|
|
13
|
+
walk = true
|
|
14
|
+
}
|
|
15
|
+
____exports.isAnimationName = function(value)
|
|
16
|
+
return animationNames[value] ~= nil
|
|
17
|
+
end
|
|
2
18
|
return ____exports
|