warscript 0.0.1-dev.c362181 → 0.0.1-dev.c47d565
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/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 +16 -2
- package/core/types/frame.lua +141 -77
- 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 +1 -1
- package/core/types/sound.lua +19 -9
- package/core/types/tileCell.d.ts +18 -3
- package/core/types/tileCell.lua +108 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +1718 -964
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +10 -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 +16 -6
- package/engine/behaviour/ability.lua +69 -21
- 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 +40 -3
- package/engine/behaviour/unit.lua +270 -6
- package/engine/buff.d.ts +114 -58
- package/engine/buff.lua +564 -303
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +14 -1
- package/engine/internal/ability.lua +113 -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 +32 -16
- package/engine/internal/item.lua +257 -82
- 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/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 +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- 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/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 +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 +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+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 +41 -36
- package/engine/internal/unit.lua +398 -327
- 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 +14 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/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-set-name.d.ts +14 -3
- 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-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/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/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/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/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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/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/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 +40 -15
- package/engine/object-data/entry/ability-type.lua +314 -17
- package/engine/object-data/entry/buff-type/applicable.lua +113 -104
- package/engine/object-data/entry/buff-type.d.ts +10 -12
- package/engine/object-data/entry/buff-type.lua +37 -27
- 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 +74 -6
- package/engine/object-data/entry/unit-type.lua +560 -100
- 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 +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 +48 -0
- package/engine/standard/entries/buff-type.lua +46 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/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/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 +9 -1
- package/utility/arrays.lua +28 -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/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/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
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____records = require("utility.records")
|
|
3
|
+
local invertRecord = ____records.invertRecord
|
|
4
|
+
local stringByArmorType = {
|
|
5
|
+
[0] = "small",
|
|
6
|
+
[1] = "medium",
|
|
7
|
+
[2] = "large",
|
|
8
|
+
[3] = "fort",
|
|
9
|
+
[4] = "normal",
|
|
10
|
+
[5] = "hero",
|
|
11
|
+
[6] = "divine",
|
|
12
|
+
[7] = "none"
|
|
13
|
+
}
|
|
14
|
+
local armorTypeByString = invertRecord(stringByArmorType)
|
|
15
|
+
local nativeByArmorType = {
|
|
16
|
+
[0] = DEFENSE_TYPE_LIGHT,
|
|
17
|
+
[1] = DEFENSE_TYPE_MEDIUM,
|
|
18
|
+
[2] = DEFENSE_TYPE_LARGE,
|
|
19
|
+
[3] = DEFENSE_TYPE_FORT,
|
|
20
|
+
[4] = DEFENSE_TYPE_NORMAL,
|
|
21
|
+
[5] = DEFENSE_TYPE_HERO,
|
|
22
|
+
[6] = DEFENSE_TYPE_DIVINE,
|
|
23
|
+
[7] = DEFENSE_TYPE_NONE
|
|
24
|
+
}
|
|
25
|
+
local armorTypeByNative = invertRecord(nativeByArmorType)
|
|
26
|
+
---
|
|
27
|
+
-- @internal For use by internal systems only.
|
|
28
|
+
____exports.armorTypeToString = function(armorType)
|
|
29
|
+
return stringByArmorType[armorType]
|
|
30
|
+
end
|
|
31
|
+
---
|
|
32
|
+
-- @internal For use by internal systems only.
|
|
33
|
+
____exports.stringToArmorType = function(____string)
|
|
34
|
+
return armorTypeByString[____string] or 7
|
|
35
|
+
end
|
|
36
|
+
---
|
|
37
|
+
-- @internal For use by internal systems only.
|
|
38
|
+
____exports.armorTypeToNative = function(armorType)
|
|
39
|
+
return nativeByArmorType[armorType]
|
|
40
|
+
end
|
|
41
|
+
---
|
|
42
|
+
-- @internal For use by internal systems only.
|
|
43
|
+
____exports.nativeToArmorType = function(armorType)
|
|
44
|
+
return armorTypeByNative[armorType]
|
|
45
|
+
end
|
|
46
|
+
return ____exports
|
|
@@ -2,13 +2,25 @@
|
|
|
2
2
|
import { ModelNodeName } from "./model-node-name";
|
|
3
3
|
import { ModelNodeQualifier } from "./model-node-qualifier";
|
|
4
4
|
import { Optional } from "../../../utility/types";
|
|
5
|
+
import { EffectParameters } from "../../../core/types/effect";
|
|
5
6
|
export type AttachmentPreset = {
|
|
6
7
|
modelPath: string;
|
|
7
8
|
nodeName: ModelNodeName;
|
|
8
9
|
nodeQualifiers: ModelNodeQualifier[];
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
-
export
|
|
11
|
+
/** Where an effect attaches: a model node, e.g. the chest or the left hand. */
|
|
12
|
+
export type AttachmentPoint = {
|
|
13
|
+
nodeName: ModelNodeName;
|
|
14
|
+
nodeQualifiers: ModelNodeQualifier[];
|
|
15
|
+
};
|
|
16
|
+
export type AttachmentPointInput = Optional<AttachmentPoint, "nodeQualifiers">;
|
|
17
|
+
export declare const attachmentPointToNodeFQN: (attachmentPoint: AttachmentPointInput) => string;
|
|
18
|
+
export type EffectPresetWithParameters = AttachmentPreset & {
|
|
19
|
+
parameters?: EffectParameters;
|
|
20
|
+
};
|
|
21
|
+
export type AttachmentPresetInput<T extends AttachmentPreset = AttachmentPreset> = Optional<T, "nodeName" | "nodeQualifiers"> | string;
|
|
22
|
+
export type EffectPresetWithParametersInput = AttachmentPresetInput<EffectPresetWithParameters>;
|
|
23
|
+
export declare const toEffectPreset: (effectPresetInput: EffectPresetWithParametersInput) => EffectPresetWithParameters;
|
|
12
24
|
export declare const extractAttachmentPresetInputModelPath: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
|
|
13
25
|
export declare const extractAttachmentPresetInputNodeFQN: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
|
|
14
26
|
export declare const splitAttachmentNodeFQN: (attachmentNodeFQN: string) => LuaMultiReturn<[attachmentNodeName: ModelNodeName, attachmentNodeQualifiers: ModelNodeQualifier[]]>;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ArrayJoin = ____lualib.__TS__ArrayJoin
|
|
2
3
|
local __TS__StringSplit = ____lualib.__TS__StringSplit
|
|
3
4
|
local __TS__ArraySlice = ____lualib.__TS__ArraySlice
|
|
4
5
|
local ____exports = {}
|
|
5
|
-
____exports.
|
|
6
|
-
|
|
6
|
+
____exports.attachmentPointToNodeFQN = function(attachmentPoint) return table.concat(
|
|
7
|
+
{
|
|
8
|
+
attachmentPoint.nodeName,
|
|
9
|
+
table.unpack(attachmentPoint.nodeQualifiers or ({}))
|
|
10
|
+
},
|
|
11
|
+
","
|
|
12
|
+
) end
|
|
13
|
+
____exports.toEffectPreset = function(effectPresetInput)
|
|
14
|
+
return type(effectPresetInput) == "string" and ({modelPath = effectPresetInput, nodeName = "origin", nodeQualifiers = {}}) or ({modelPath = effectPresetInput.modelPath, nodeName = effectPresetInput.nodeName or "origin", nodeQualifiers = effectPresetInput.nodeQualifiers or ({}), parameters = effectPresetInput.parameters})
|
|
7
15
|
end
|
|
8
16
|
____exports.extractAttachmentPresetInputModelPath = function(attachmentPresetInput)
|
|
9
17
|
return type(attachmentPresetInput) == "string" and attachmentPresetInput or (attachmentPresetInput and attachmentPresetInput.modelPath or "")
|
|
@@ -12,7 +20,7 @@ ____exports.extractAttachmentPresetInputNodeFQN = function(attachmentPresetInput
|
|
|
12
20
|
if type(attachmentPresetInput) == "string" or attachmentPresetInput == nil then
|
|
13
21
|
return ""
|
|
14
22
|
end
|
|
15
|
-
return
|
|
23
|
+
return __TS__ArrayJoin(
|
|
16
24
|
{
|
|
17
25
|
attachmentPresetInput.nodeName,
|
|
18
26
|
table.unpack(attachmentPresetInput.nodeQualifiers or ({}))
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
export declare const enum AttackType {
|
|
3
|
-
|
|
4
|
-
NORMAL =
|
|
5
|
-
PIERCE =
|
|
6
|
-
SIEGE =
|
|
7
|
-
|
|
8
|
-
CHAOS =
|
|
9
|
-
|
|
10
|
-
HERO = "hero"
|
|
3
|
+
SPELL = 0,
|
|
4
|
+
NORMAL = 1,
|
|
5
|
+
PIERCE = 2,
|
|
6
|
+
SIEGE = 3,
|
|
7
|
+
MAGIC = 4,
|
|
8
|
+
CHAOS = 5,
|
|
9
|
+
HERO = 6
|
|
11
10
|
}
|
|
@@ -1,2 +1,44 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
|
+
local ____records = require("utility.records")
|
|
3
|
+
local invertRecord = ____records.invertRecord
|
|
4
|
+
local stringByAttackType = {
|
|
5
|
+
[1] = "normal",
|
|
6
|
+
[2] = "pierce",
|
|
7
|
+
[3] = "siege",
|
|
8
|
+
[0] = "spells",
|
|
9
|
+
[5] = "chaos",
|
|
10
|
+
[4] = "magic",
|
|
11
|
+
[6] = "hero"
|
|
12
|
+
}
|
|
13
|
+
local attackTypeByString = invertRecord(stringByAttackType)
|
|
14
|
+
local nativeByAttackType = {
|
|
15
|
+
[1] = ATTACK_TYPE_MELEE,
|
|
16
|
+
[2] = ATTACK_TYPE_PIERCE,
|
|
17
|
+
[3] = ATTACK_TYPE_SIEGE,
|
|
18
|
+
[0] = ATTACK_TYPE_NORMAL,
|
|
19
|
+
[5] = ATTACK_TYPE_CHAOS,
|
|
20
|
+
[4] = ATTACK_TYPE_MAGIC,
|
|
21
|
+
[6] = ATTACK_TYPE_HERO
|
|
22
|
+
}
|
|
23
|
+
local attackTypeByNative = invertRecord(nativeByAttackType)
|
|
24
|
+
---
|
|
25
|
+
-- @internal For use by internal systems only.
|
|
26
|
+
____exports.attackTypeToString = function(attackType)
|
|
27
|
+
return attackType ~= nil and stringByAttackType[attackType] or "unknown"
|
|
28
|
+
end
|
|
29
|
+
---
|
|
30
|
+
-- @internal For use by internal systems only.
|
|
31
|
+
____exports.stringToAttackType = function(____string)
|
|
32
|
+
return attackTypeByString[____string]
|
|
33
|
+
end
|
|
34
|
+
---
|
|
35
|
+
-- @internal For use by internal systems only.
|
|
36
|
+
____exports.attackTypeToNative = function(attackType)
|
|
37
|
+
return nativeByAttackType[attackType]
|
|
38
|
+
end
|
|
39
|
+
---
|
|
40
|
+
-- @internal For use by internal systems only.
|
|
41
|
+
____exports.nativeToAttackType = function(attackType)
|
|
42
|
+
return attackTypeByNative[attackType]
|
|
43
|
+
end
|
|
2
44
|
return ____exports
|