warscript 0.0.1-dev.83957b1 → 0.0.1-dev.8466737
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +1 -0
- package/attributes.lua +9 -0
- package/core/dummy.lua +4 -2
- package/core/types/effect.d.ts +11 -1
- package/core/types/effect.lua +43 -77
- package/core/types/frame.d.ts +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 +14 -9
- package/core/types/tileCell.d.ts +18 -3
- package/core/types/tileCell.lua +108 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/core/types/unit.d.ts +5 -0
- package/core/types/unit.lua +5 -0
- package/core/util.d.ts +3 -1
- package/core/util.lua +109 -3
- package/decl/native.d.ts +711 -11
- 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.lua +5 -5
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +4 -0
- package/engine/behaviour/ability/damage.lua +19 -15
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +7 -5
- 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 +13 -6
- package/engine/behaviour/ability.lua +62 -16
- 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 +27 -5
- package/engine/behaviour/unit.lua +181 -27
- package/engine/buff.d.ts +75 -28
- package/engine/buff.lua +433 -196
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +10 -1
- package/engine/internal/ability.lua +99 -47
- package/engine/internal/item/ability.lua +51 -1
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item/owner-cache.d.ts +5 -0
- package/engine/internal/item/owner-cache.lua +4 -0
- package/engine/internal/item+owner.d.ts +2 -0
- package/engine/internal/item+owner.lua +37 -8
- package/engine/internal/item.d.ts +27 -14
- package/engine/internal/item.lua +185 -82
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
- package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -5
- package/engine/internal/unit/ability.lua +111 -24
- package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
- package/engine/internal/unit/add-item-to-slot.lua +53 -12
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +14 -0
- package/engine/internal/unit/bonus.lua +102 -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 +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit+rally.lua +9 -31
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +65 -27
- package/engine/internal/unit.d.ts +21 -33
- package/engine/internal/unit.lua +254 -312
- package/engine/local-client.d.ts +28 -0
- package/engine/local-client.lua +324 -54
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
- package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-type.lua +26 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-class.d.ts +11 -0
- package/engine/object-data/auxiliary/item-class.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/order-type.d.ts +939 -0
- package/engine/object-data/auxiliary/order-type.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
- package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -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/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/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
- package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
- package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
- package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +25 -6
- package/engine/object-data/entry/ability-type.lua +249 -12
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +18 -3
- package/engine/object-data/entry/item-type.lua +84 -0
- package/engine/object-data/entry/lightning-type.d.ts +6 -8
- package/engine/object-data/entry/lightning-type.lua +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +62 -4
- package/engine/object-data/entry/unit-type.lua +474 -38
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +6 -1
- package/engine/object-data/entry.lua +8 -0
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +31 -5
- package/engine/object-field/unit.lua +95 -0
- package/engine/object-field.d.ts +14 -4
- package/engine/object-field.lua +286 -132
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/buff-type.d.ts +45 -0
- package/engine/standard/entries/buff-type.lua +43 -0
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/lightning-type.d.ts +42 -15
- package/engine/standard/entries/lightning-type.lua +0 -14
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +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 +11 -9
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +25 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -26
- package/core/types/order.lua +0 -65
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
|
@@ -22,7 +22,15 @@ local checkNotNull = ____preconditions.checkNotNull
|
|
|
22
22
|
local ____lazy = require("utility.lazy")
|
|
23
23
|
local lazyRecord = ____lazy.lazyRecord
|
|
24
24
|
local ____timer = require("core.types.timer")
|
|
25
|
+
local consumeZeroTimerCallback = ____timer.consumeZeroTimerCallback
|
|
25
26
|
local Timer = ____timer.Timer
|
|
27
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
28
|
+
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
29
|
+
local ____attributes = require("attributes")
|
|
30
|
+
local attribute = ____attributes.attribute
|
|
31
|
+
local ____pseudo_2Dpassive_2Dabilities = require("engine.internal.unit.pseudo-passive-abilities")
|
|
32
|
+
local pseudoPassiveAbilityOrderTypeStringId = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityOrderTypeStringId
|
|
33
|
+
local pseudoPassiveAbilityTypeIds = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityTypeIds
|
|
26
34
|
local eventInvoke = Event.invoke
|
|
27
35
|
local condition = Condition
|
|
28
36
|
local createTrigger = CreateTrigger
|
|
@@ -85,7 +93,7 @@ local function createCommonEvent(underlyingEvent)
|
|
|
85
93
|
underlyingEvent,
|
|
86
94
|
3,
|
|
87
95
|
function(caster, ability)
|
|
88
|
-
return
|
|
96
|
+
return not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil), caster, ability
|
|
89
97
|
end
|
|
90
98
|
)
|
|
91
99
|
end
|
|
@@ -165,7 +173,7 @@ local function createNoTargetEvent(underlyingEvent)
|
|
|
165
173
|
underlyingEvent,
|
|
166
174
|
1,
|
|
167
175
|
function(caster, ability, targetUnit, targetItem, targetDestructible, x, y)
|
|
168
|
-
if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil then
|
|
176
|
+
if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil and not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil) then
|
|
169
177
|
return true, caster, ability
|
|
170
178
|
else
|
|
171
179
|
return false
|
|
@@ -347,33 +355,17 @@ rawset(
|
|
|
347
355
|
extractAbilityTypeId
|
|
348
356
|
)
|
|
349
357
|
)
|
|
350
|
-
local
|
|
351
|
-
internalAbilityChannelingStartEvent:addListener(function(...)
|
|
352
|
-
Timer:run(eventInvoke, internalAbilityImpactEvent, ...)
|
|
353
|
-
end)
|
|
354
|
-
rawset(
|
|
355
|
-
Unit,
|
|
356
|
-
"abilityImpactEvent",
|
|
357
|
-
createDispatchingEvent(
|
|
358
|
-
createCommonEvent(internalAbilityImpactEvent),
|
|
359
|
-
extractAbilityTypeId
|
|
360
|
-
)
|
|
361
|
-
)
|
|
358
|
+
local internalAbilityChannelingFinishEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters)
|
|
362
359
|
rawset(
|
|
363
360
|
Unit,
|
|
364
361
|
"abilityChannelingFinishEvent",
|
|
365
|
-
createDispatchingEvent(
|
|
366
|
-
__TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters),
|
|
367
|
-
extractAbilityTypeId
|
|
368
|
-
)
|
|
362
|
+
createDispatchingEvent(internalAbilityChannelingFinishEvent, extractAbilityTypeId)
|
|
369
363
|
)
|
|
364
|
+
local internalAbilityStopEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters)
|
|
370
365
|
rawset(
|
|
371
366
|
Unit,
|
|
372
367
|
"abilityStopEvent",
|
|
373
|
-
createDispatchingEvent(
|
|
374
|
-
__TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters),
|
|
375
|
-
extractAbilityTypeId
|
|
376
|
-
)
|
|
368
|
+
createDispatchingEvent(internalAbilityStopEvent, extractAbilityTypeId)
|
|
377
369
|
)
|
|
378
370
|
rawset(
|
|
379
371
|
Unit,
|
|
@@ -390,9 +382,13 @@ rawset(
|
|
|
390
382
|
condition(function()
|
|
391
383
|
local unit = Unit:of(getTriggerUnit())
|
|
392
384
|
if unit ~= nil then
|
|
393
|
-
local ability = unit:
|
|
385
|
+
local ability = unit:getAbility(abilityTypeId)
|
|
394
386
|
if ability ~= nil then
|
|
395
|
-
|
|
387
|
+
if pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil then
|
|
388
|
+
ability:interruptCast()
|
|
389
|
+
else
|
|
390
|
+
eventInvoke(event, unit, ability, orderTypeStringId)
|
|
391
|
+
end
|
|
396
392
|
end
|
|
397
393
|
end
|
|
398
394
|
end)
|
|
@@ -402,4 +398,95 @@ rawset(
|
|
|
402
398
|
end)
|
|
403
399
|
end)
|
|
404
400
|
)
|
|
401
|
+
local internalAbilityImpactEvent = __TS__New(Event)
|
|
402
|
+
local impactCallbackIdAttribute = attribute()
|
|
403
|
+
local function invokeImpactEvent(unit, ability, ...)
|
|
404
|
+
ability[impactCallbackIdAttribute] = nil
|
|
405
|
+
eventInvoke(internalAbilityImpactEvent, unit, ability, ...)
|
|
406
|
+
end
|
|
407
|
+
internalAbilityChannelingStartEvent:addListener(
|
|
408
|
+
999999,
|
|
409
|
+
function(unit, ability, ...)
|
|
410
|
+
ability[impactCallbackIdAttribute] = Timer:run(invokeImpactEvent, unit, ability, ...)
|
|
411
|
+
end
|
|
412
|
+
)
|
|
413
|
+
local function consumeImpactCallback(_, ability)
|
|
414
|
+
local impactCallbackId = ability[impactCallbackIdAttribute]
|
|
415
|
+
if impactCallbackId ~= nil then
|
|
416
|
+
consumeZeroTimerCallback(impactCallbackId)
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
internalAbilityChannelingFinishEvent:addListener(999999, consumeImpactCallback)
|
|
420
|
+
internalAbilityStopEvent:addListener(999999, consumeImpactCallback)
|
|
421
|
+
rawset(
|
|
422
|
+
Unit,
|
|
423
|
+
"abilityImpactEvent",
|
|
424
|
+
createDispatchingEvent(
|
|
425
|
+
createCommonEvent(internalAbilityImpactEvent),
|
|
426
|
+
extractAbilityTypeId
|
|
427
|
+
)
|
|
428
|
+
)
|
|
429
|
+
rawset(
|
|
430
|
+
Unit,
|
|
431
|
+
"abilityWidgetTargetImpactEvent",
|
|
432
|
+
createDispatchingEvent(
|
|
433
|
+
createWidgetTargetEvent(internalAbilityImpactEvent),
|
|
434
|
+
extractAbilityTypeId
|
|
435
|
+
)
|
|
436
|
+
)
|
|
437
|
+
rawset(
|
|
438
|
+
Unit,
|
|
439
|
+
"abilityUnitTargetImpactEvent",
|
|
440
|
+
createDispatchingEvent(
|
|
441
|
+
createUnitTargetEvent(internalAbilityImpactEvent),
|
|
442
|
+
extractAbilityTypeId
|
|
443
|
+
)
|
|
444
|
+
)
|
|
445
|
+
rawset(
|
|
446
|
+
Unit,
|
|
447
|
+
"abilityItemTargetImpactEvent",
|
|
448
|
+
createDispatchingEvent(
|
|
449
|
+
createItemTargetEvent(internalAbilityImpactEvent),
|
|
450
|
+
extractAbilityTypeId
|
|
451
|
+
)
|
|
452
|
+
)
|
|
453
|
+
rawset(
|
|
454
|
+
Unit,
|
|
455
|
+
"abilityDestructibleTargetImpactEvent",
|
|
456
|
+
createDispatchingEvent(
|
|
457
|
+
createDestructibleTargetEvent(internalAbilityImpactEvent),
|
|
458
|
+
extractAbilityTypeId
|
|
459
|
+
)
|
|
460
|
+
)
|
|
461
|
+
rawset(
|
|
462
|
+
Unit,
|
|
463
|
+
"abilityPointTargetImpactEvent",
|
|
464
|
+
createDispatchingEvent(
|
|
465
|
+
createPointTargetEvent(internalAbilityImpactEvent),
|
|
466
|
+
extractAbilityTypeId
|
|
467
|
+
)
|
|
468
|
+
)
|
|
469
|
+
rawset(
|
|
470
|
+
Unit,
|
|
471
|
+
"abilityNoTargetImpactEvent",
|
|
472
|
+
createDispatchingEvent(
|
|
473
|
+
createNoTargetEvent(internalAbilityImpactEvent),
|
|
474
|
+
extractAbilityTypeId
|
|
475
|
+
)
|
|
476
|
+
)
|
|
477
|
+
local spellEffectOnlyAbilityTypeIds = luaSetOf(fourCC("AAns"))
|
|
478
|
+
internalAbilityChannelingStartEvent:addListener(
|
|
479
|
+
-999999,
|
|
480
|
+
function(unit, ability)
|
|
481
|
+
if spellEffectOnlyAbilityTypeIds[ability.parentTypeId] ~= nil then
|
|
482
|
+
eventInvoke(internalAbilityChannelingFinishEvent, unit, ability)
|
|
483
|
+
eventInvoke(internalAbilityStopEvent, unit, ability)
|
|
484
|
+
end
|
|
485
|
+
end
|
|
486
|
+
)
|
|
487
|
+
local function doNothing()
|
|
488
|
+
end
|
|
489
|
+
for pseudoPassiveAbilityTypeId in pairs(pseudoPassiveAbilityTypeIds) do
|
|
490
|
+
Unit.abilityCommandEvent[pseudoPassiveAbilityTypeId][pseudoPassiveAbilityOrderTypeStringId]:addListener(999999, doNothing)
|
|
491
|
+
end
|
|
405
492
|
return ____exports
|
|
@@ -2,22 +2,11 @@ local ____exports = {}
|
|
|
2
2
|
local ____unit = require("engine.internal.unit")
|
|
3
3
|
local Unit = ____unit.Unit
|
|
4
4
|
local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slot")
|
|
5
|
-
local
|
|
6
|
-
local unitsWithFillerItems = ____add_2Ditem_2Dto_2Dslot.unitsWithFillerItems
|
|
7
|
-
local setItemVisible = SetItemVisible
|
|
8
|
-
local unitRemoveItem = UnitRemoveItem
|
|
5
|
+
local unitRemoveFillerItems = ____add_2Ditem_2Dto_2Dslot.unitRemoveFillerItems
|
|
9
6
|
Unit.itemPickedUpEvent:addListener(
|
|
10
|
-
|
|
7
|
+
999999,
|
|
11
8
|
function(unit)
|
|
12
|
-
|
|
13
|
-
if unitsWithFillerItems[handle] ~= nil then
|
|
14
|
-
for previousSlot = 1, 6 do
|
|
15
|
-
local fillerItem = fillerItems[previousSlot]
|
|
16
|
-
unitRemoveItem(handle, fillerItem)
|
|
17
|
-
setItemVisible(fillerItem, false)
|
|
18
|
-
end
|
|
19
|
-
unitsWithFillerItems[handle] = nil
|
|
20
|
-
end
|
|
9
|
+
unitRemoveFillerItems(unit.handle)
|
|
21
10
|
end
|
|
22
11
|
)
|
|
23
12
|
return ____exports
|
|
@@ -4,9 +4,14 @@ local BlankItemType = ____blank.BlankItemType
|
|
|
4
4
|
local ____arrays = require("utility.arrays")
|
|
5
5
|
local array = ____arrays.array
|
|
6
6
|
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
7
|
-
local
|
|
7
|
+
local ignoreEventsItemTypeIds = ____ignore_2Devents_2Ditems.ignoreEventsItemTypeIds
|
|
8
|
+
local ____item_2Dcontainer = require("engine.internal.unit.item-container")
|
|
9
|
+
local UNIT_EXTENDED_INVENTORY_SLOT_COUNT = ____item_2Dcontainer.UNIT_EXTENDED_INVENTORY_SLOT_COUNT
|
|
10
|
+
local UNIT_INVENTORY_SLOT_COUNT = ____item_2Dcontainer.UNIT_INVENTORY_SLOT_COUNT
|
|
8
11
|
local setItemVisible = SetItemVisible
|
|
9
12
|
local unitAddItem = UnitAddItem
|
|
13
|
+
local unitInventorySize = UnitInventorySize
|
|
14
|
+
local unitItemInBagSlot = UnitItemInBagSlot
|
|
10
15
|
local unitItemInSlot = UnitItemInSlot
|
|
11
16
|
local unitRemoveItem = UnitRemoveItem
|
|
12
17
|
---
|
|
@@ -16,14 +21,15 @@ ____exports.SLOT_FILLER_ITEM_TYPE_ID = compiletime(function()
|
|
|
16
21
|
itemType.name = "[Warscript/Dummy] Slot Filler"
|
|
17
22
|
return itemType.id
|
|
18
23
|
end)
|
|
19
|
-
|
|
24
|
+
ignoreEventsItemTypeIds[____exports.SLOT_FILLER_ITEM_TYPE_ID] = true
|
|
25
|
+
--- Enough fillers to occupy every regular and extended inventory slot that precedes the last extended one.
|
|
26
|
+
--
|
|
20
27
|
-- @internal For use by internal systems only.
|
|
21
28
|
____exports.fillerItems = array(
|
|
22
|
-
|
|
29
|
+
UNIT_INVENTORY_SLOT_COUNT + UNIT_EXTENDED_INVENTORY_SLOT_COUNT,
|
|
23
30
|
function()
|
|
24
31
|
local item = CreateItem(____exports.SLOT_FILLER_ITEM_TYPE_ID, 0, 0)
|
|
25
32
|
setItemVisible(item, false)
|
|
26
|
-
ignoreEventsItems[item] = true
|
|
27
33
|
return item
|
|
28
34
|
end
|
|
29
35
|
)
|
|
@@ -32,21 +38,56 @@ ____exports.fillerItems = array(
|
|
|
32
38
|
____exports.unitsWithFillerItems = {}
|
|
33
39
|
---
|
|
34
40
|
-- @internal For use by internal systems only.
|
|
35
|
-
____exports.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
____exports.unitRemoveFillerItems = function(unit)
|
|
42
|
+
if ____exports.unitsWithFillerItems[unit] ~= nil then
|
|
43
|
+
for ____, fillerItem in ipairs(____exports.fillerItems) do
|
|
44
|
+
unitRemoveItem(unit, fillerItem)
|
|
45
|
+
setItemVisible(fillerItem, false)
|
|
46
|
+
end
|
|
47
|
+
____exports.unitsWithFillerItems[unit] = nil
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
--- Adds an item to a unit so that it lands in a specific slot of its regular or extended inventory.
|
|
51
|
+
--
|
|
52
|
+
-- The engine fills slots in order (the regular inventory first, then the extended one), so every empty slot
|
|
53
|
+
-- preceding the target is temporarily occupied by a filler item. Unlike `moveslot` orders, this works
|
|
54
|
+
-- regardless of whether the unit can currently act.
|
|
55
|
+
--
|
|
56
|
+
-- @internal For use by internal systems only.
|
|
57
|
+
____exports.unitAddItemToSlot = function(unit, item, slot, containerType)
|
|
58
|
+
if containerType == nil then
|
|
59
|
+
containerType = 0
|
|
60
|
+
end
|
|
61
|
+
local fillerCount = 0
|
|
62
|
+
local function fillEmptySlots(slotCount, itemInSlot)
|
|
63
|
+
for precedingSlot = 0, slotCount - 1 do
|
|
64
|
+
if itemInSlot(unit, precedingSlot) == nil then
|
|
65
|
+
unitAddItem(unit, ____exports.fillerItems[fillerCount + 1])
|
|
66
|
+
fillerCount = fillerCount + 1
|
|
67
|
+
end
|
|
40
68
|
end
|
|
41
69
|
end
|
|
42
|
-
|
|
70
|
+
if containerType == 0 then
|
|
71
|
+
fillEmptySlots(slot, unitItemInSlot)
|
|
72
|
+
else
|
|
73
|
+
fillEmptySlots(
|
|
74
|
+
unitInventorySize(unit),
|
|
75
|
+
unitItemInSlot
|
|
76
|
+
)
|
|
77
|
+
fillEmptySlots(slot, unitItemInBagSlot)
|
|
78
|
+
end
|
|
79
|
+
if fillerCount > 0 then
|
|
80
|
+
____exports.unitsWithFillerItems[unit] = true
|
|
81
|
+
end
|
|
82
|
+
local result = unitAddItem(unit, item)
|
|
43
83
|
if ____exports.unitsWithFillerItems[unit] ~= nil then
|
|
44
|
-
for
|
|
45
|
-
local fillerItem = ____exports.fillerItems[
|
|
84
|
+
for fillerIndex = 0, fillerCount - 1 do
|
|
85
|
+
local fillerItem = ____exports.fillerItems[fillerIndex + 1]
|
|
46
86
|
unitRemoveItem(unit, fillerItem)
|
|
47
87
|
setItemVisible(fillerItem, false)
|
|
48
88
|
end
|
|
49
89
|
____exports.unitsWithFillerItems[unit] = nil
|
|
50
90
|
end
|
|
91
|
+
return result
|
|
51
92
|
end
|
|
52
93
|
return ____exports
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
declare module "../unit" {
|
|
3
|
+
interface Unit {
|
|
4
|
+
getAnimationDuration(this: Unit, animation: string | number): number;
|
|
5
|
+
setAurasEnabled(this: Unit, enabled: boolean, affectsUI?: boolean): void;
|
|
6
|
+
isHeroGlowAllowed: boolean;
|
|
7
|
+
maximumFlyHeight: number;
|
|
8
|
+
showsAirToGroundIndicator: boolean;
|
|
9
|
+
alwaysDisplaysHealth: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface UnitWeapon {
|
|
12
|
+
resetAttack(this: UnitWeapon): void;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____unit = require("engine.internal.unit")
|
|
5
|
+
local Unit = ____unit.Unit
|
|
6
|
+
local UnitWeapon = ____unit.UnitWeapon
|
|
7
|
+
local allowHeroGlowOnUnit = AllowHeroGlowOnUnit
|
|
8
|
+
local disallowHeroGlowOnUnit = DisallowHeroGlowOnUnit
|
|
9
|
+
local getUnitAnimationDuration = BlzGetUnitAnimationDuration
|
|
10
|
+
local getUnitAnimationDurationByIndex = BlzGetUnitAnimationDurationByIndex
|
|
11
|
+
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
12
|
+
local getUnitRealField = BlzGetUnitRealField
|
|
13
|
+
local heroGlowIsAllowedOnUnit = HeroGlowIsAllowedOnUnit
|
|
14
|
+
local resetUnitAttack = BlzResetUnitAttack
|
|
15
|
+
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
16
|
+
local setUnitRealField = BlzSetUnitRealField
|
|
17
|
+
local unitEnableAuras = BlzUnitEnableAuras
|
|
18
|
+
Unit.prototype.getAnimationDuration = function(self, animation)
|
|
19
|
+
if type(animation) == "number" then
|
|
20
|
+
return getUnitAnimationDurationByIndex(self.handle, animation)
|
|
21
|
+
end
|
|
22
|
+
return getUnitAnimationDuration(self.handle, animation)
|
|
23
|
+
end
|
|
24
|
+
Unit.prototype.setAurasEnabled = function(self, enabled, affectsUI)
|
|
25
|
+
if affectsUI == nil then
|
|
26
|
+
affectsUI = true
|
|
27
|
+
end
|
|
28
|
+
unitEnableAuras(self.handle, enabled, affectsUI)
|
|
29
|
+
end
|
|
30
|
+
__TS__ObjectDefineProperty(
|
|
31
|
+
Unit.prototype,
|
|
32
|
+
"isHeroGlowAllowed",
|
|
33
|
+
{
|
|
34
|
+
get = function(self)
|
|
35
|
+
return heroGlowIsAllowedOnUnit(self.handle)
|
|
36
|
+
end,
|
|
37
|
+
set = function(self, allowed)
|
|
38
|
+
if allowed then
|
|
39
|
+
allowHeroGlowOnUnit(self.handle)
|
|
40
|
+
else
|
|
41
|
+
disallowHeroGlowOnUnit(self.handle)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
__TS__ObjectDefineProperty(
|
|
47
|
+
Unit.prototype,
|
|
48
|
+
"maximumFlyHeight",
|
|
49
|
+
{
|
|
50
|
+
get = function(self)
|
|
51
|
+
return getUnitRealField(self.handle, UNIT_RF_FLY_MAX_HEIGHT)
|
|
52
|
+
end,
|
|
53
|
+
set = function(self, height)
|
|
54
|
+
setUnitRealField(self.handle, UNIT_RF_FLY_MAX_HEIGHT, height)
|
|
55
|
+
end
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
__TS__ObjectDefineProperty(
|
|
59
|
+
Unit.prototype,
|
|
60
|
+
"showsAirToGroundIndicator",
|
|
61
|
+
{
|
|
62
|
+
get = function(self)
|
|
63
|
+
return getUnitBooleanField(self.handle, UNIT_BF_SHOW_AIR_TO_GROUND)
|
|
64
|
+
end,
|
|
65
|
+
set = function(self, show)
|
|
66
|
+
setUnitBooleanField(self.handle, UNIT_BF_SHOW_AIR_TO_GROUND, show)
|
|
67
|
+
end
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
__TS__ObjectDefineProperty(
|
|
71
|
+
Unit.prototype,
|
|
72
|
+
"alwaysDisplaysHealth",
|
|
73
|
+
{
|
|
74
|
+
get = function(self)
|
|
75
|
+
return getUnitBooleanField(self.handle, UNIT_BF_FORCE_DISPLAY_HP)
|
|
76
|
+
end,
|
|
77
|
+
set = function(self, show)
|
|
78
|
+
setUnitBooleanField(self.handle, UNIT_BF_FORCE_DISPLAY_HP, show)
|
|
79
|
+
end
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
UnitWeapon.prototype.resetAttack = function(self)
|
|
83
|
+
resetUnitAttack(self.unit.handle, self.index)
|
|
84
|
+
end
|
|
85
|
+
return ____exports
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
declare module "../unit" {
|
|
3
|
+
interface Unit {
|
|
4
|
+
strengthBase: number;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
declare module "../unit" {
|
|
8
|
+
interface Unit {
|
|
9
|
+
agilityBase: number;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
declare module "../unit" {
|
|
13
|
+
interface Unit {
|
|
14
|
+
intelligenceBase: number;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____unit = require("engine.internal.unit")
|
|
5
|
+
local Unit = ____unit.Unit
|
|
6
|
+
local ____unit = require("engine.standard.fields.unit")
|
|
7
|
+
local AGILITY_UNIT_FIELD = ____unit.AGILITY_UNIT_FIELD
|
|
8
|
+
local INTELLIGENCE_UNIT_FIELD = ____unit.INTELLIGENCE_UNIT_FIELD
|
|
9
|
+
local STRENGTH_UNIT_FIELD = ____unit.STRENGTH_UNIT_FIELD
|
|
10
|
+
__TS__ObjectDefineProperty(
|
|
11
|
+
Unit.prototype,
|
|
12
|
+
"strengthBase",
|
|
13
|
+
{
|
|
14
|
+
get = function(self)
|
|
15
|
+
return STRENGTH_UNIT_FIELD:getValue(self)
|
|
16
|
+
end,
|
|
17
|
+
set = function(self, value)
|
|
18
|
+
STRENGTH_UNIT_FIELD:setValue(self, value)
|
|
19
|
+
end
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
__TS__ObjectDefineProperty(
|
|
23
|
+
Unit.prototype,
|
|
24
|
+
"agilityBase",
|
|
25
|
+
{
|
|
26
|
+
get = function(self)
|
|
27
|
+
return AGILITY_UNIT_FIELD:getValue(self)
|
|
28
|
+
end,
|
|
29
|
+
set = function(self, value)
|
|
30
|
+
AGILITY_UNIT_FIELD:setValue(self, value)
|
|
31
|
+
end
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
__TS__ObjectDefineProperty(
|
|
35
|
+
Unit.prototype,
|
|
36
|
+
"intelligenceBase",
|
|
37
|
+
{
|
|
38
|
+
get = function(self)
|
|
39
|
+
return INTELLIGENCE_UNIT_FIELD:getValue(self)
|
|
40
|
+
end,
|
|
41
|
+
set = function(self, value)
|
|
42
|
+
INTELLIGENCE_UNIT_FIELD:setValue(self, value)
|
|
43
|
+
end
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
return ____exports
|
|
@@ -5,6 +5,8 @@ export type UnitBonusId<Brand extends string = any> = number & {
|
|
|
5
5
|
readonly __unitBonusId: unique symbol;
|
|
6
6
|
readonly __unitBonusIdBrand: Brand;
|
|
7
7
|
};
|
|
8
|
+
export type UnitMaxHealthBonusId = UnitBonusId<"maxHealth">;
|
|
9
|
+
export type UnitMaxManaBonusId = UnitBonusId<"maxMana">;
|
|
8
10
|
export type UnitArmorBonusId = UnitBonusId<"armor">;
|
|
9
11
|
export type UnitAttackSpeedFactorBonusId = UnitBonusId<"attackSpeedFactor">;
|
|
10
12
|
export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
|
|
@@ -12,6 +14,8 @@ export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
|
|
|
12
14
|
export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
|
|
13
15
|
export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
|
|
14
16
|
export type UnitEvasionProbabilityBonusId = UnitBonusId<"evasionProbability">;
|
|
17
|
+
export type UnitManaRegenerationRateFactorBonusId = UnitBonusId<"manaRegenerationRateFactor">;
|
|
18
|
+
export type UnitHealthRegenerationRateBonusId = UnitBonusId<"healthRegenerationRate">;
|
|
15
19
|
export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
16
20
|
abilityTypeId: AbilityTypeId;
|
|
17
21
|
field: jabilityintegerlevelfield;
|
|
@@ -23,12 +27,19 @@ export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
|
23
27
|
} | {
|
|
24
28
|
abilityTypeId?: undefined;
|
|
25
29
|
valueByUnit: LuaMap<Unit, number>;
|
|
30
|
+
apply?: undefined;
|
|
31
|
+
} | {
|
|
32
|
+
abilityTypeId?: undefined;
|
|
33
|
+
valueByUnit?: undefined;
|
|
34
|
+
apply: (this: void, unitHandle: junit, value: number) => void;
|
|
26
35
|
}) & {
|
|
27
36
|
reduce: (this: void, array: number[]) => number;
|
|
28
37
|
initialValue: number;
|
|
29
38
|
readonly __unitBonusTypeId?: Id;
|
|
30
39
|
};
|
|
31
40
|
export declare namespace UnitBonusType {
|
|
41
|
+
const HEALTH: UnitBonusType<UnitMaxHealthBonusId>;
|
|
42
|
+
const MANA: UnitBonusType<UnitMaxManaBonusId>;
|
|
32
43
|
const ARMOR: UnitBonusType<UnitArmorBonusId>;
|
|
33
44
|
const ATTACK_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
34
45
|
const MOVEMENT_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
@@ -36,6 +47,9 @@ export declare namespace UnitBonusType {
|
|
|
36
47
|
const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
37
48
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
38
49
|
const EVASION_PROBABILITY: UnitBonusType<UnitEvasionProbabilityBonusId>;
|
|
50
|
+
const MANA_REGENERATION_RATE_FACTOR: UnitBonusType<UnitManaRegenerationRateFactorBonusId>;
|
|
51
|
+
/** Supported range: -1000 to 1000; the total is clamped to it. */
|
|
52
|
+
const HEALTH_REGENERATION_RATE: UnitBonusType<UnitHealthRegenerationRateBonusId>;
|
|
39
53
|
}
|
|
40
54
|
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
41
55
|
export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
|
+
local applyAbilityBonus, applyHealthRegenerationRateBonus
|
|
2
3
|
local ____unit = require("engine.internal.unit")
|
|
3
4
|
local Unit = ____unit.Unit
|
|
4
|
-
local
|
|
5
|
-
local ARMOR_BONUS_DUMMY_ABILITY_FIELD =
|
|
6
|
-
local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID =
|
|
5
|
+
local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
|
|
6
|
+
local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_FIELD
|
|
7
|
+
local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
7
8
|
local ____utility = require("engine.internal.utility")
|
|
8
9
|
local addInternalAbility = ____utility.addInternalAbility
|
|
10
|
+
local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
|
|
11
|
+
local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
|
|
9
12
|
local ____arrays = require("utility.arrays")
|
|
10
13
|
local product = ____arrays.product
|
|
11
14
|
local sum = ____arrays.sum
|
|
@@ -24,6 +27,21 @@ local MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____movement_2Dspee
|
|
|
24
27
|
local ____evasion_2Dprobability = require("engine.internal.object-data.evasion-probability")
|
|
25
28
|
local EVASION_PROBABILITY_ABILITY_FIELD = ____evasion_2Dprobability.EVASION_PROBABILITY_ABILITY_FIELD
|
|
26
29
|
local EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID = ____evasion_2Dprobability.EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID
|
|
30
|
+
local ____health_2Dbonus = require("engine.internal.object-data.health-bonus")
|
|
31
|
+
local HEALTH_BONUS_DUMMY_ABILITY_FIELD = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_FIELD
|
|
32
|
+
local HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
33
|
+
local ____mana_2Dbonus = require("engine.internal.object-data.mana-bonus")
|
|
34
|
+
local MANA_BONUS_DUMMY_ABILITY_FIELD = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_FIELD
|
|
35
|
+
local MANA_BONUS_DUMMY_ABILITY_TYPE_ID = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
36
|
+
local ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor = require("engine.internal.object-data.mana-regeneration-rate-increase-factor")
|
|
37
|
+
local MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD
|
|
38
|
+
local MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
|
|
39
|
+
local ____health_2Dregeneration_2Drate_2Dincrease = require("engine.internal.object-data.health-regeneration-rate-increase")
|
|
40
|
+
local FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD = ____health_2Dregeneration_2Drate_2Dincrease.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD
|
|
41
|
+
local FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID = ____health_2Dregeneration_2Drate_2Dincrease.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID
|
|
42
|
+
local HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID = ____health_2Dregeneration_2Drate_2Dincrease.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID
|
|
43
|
+
local HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE = ____health_2Dregeneration_2Drate_2Dincrease.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE
|
|
44
|
+
local HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS = ____health_2Dregeneration_2Drate_2Dincrease.HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS
|
|
27
45
|
local damageFactorByUnit = {}
|
|
28
46
|
local receivedDamageFactorByUnit = {}
|
|
29
47
|
local function atLeastOnceProbability(array)
|
|
@@ -36,6 +54,20 @@ end
|
|
|
36
54
|
____exports.UnitBonusType = {}
|
|
37
55
|
local UnitBonusType = ____exports.UnitBonusType
|
|
38
56
|
do
|
|
57
|
+
UnitBonusType.HEALTH = {
|
|
58
|
+
abilityTypeId = HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
59
|
+
field = HEALTH_BONUS_DUMMY_ABILITY_FIELD,
|
|
60
|
+
integer = true,
|
|
61
|
+
reduce = sum,
|
|
62
|
+
initialValue = 0
|
|
63
|
+
}
|
|
64
|
+
UnitBonusType.MANA = {
|
|
65
|
+
abilityTypeId = MANA_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
66
|
+
field = MANA_BONUS_DUMMY_ABILITY_FIELD,
|
|
67
|
+
integer = true,
|
|
68
|
+
reduce = sum,
|
|
69
|
+
initialValue = 0
|
|
70
|
+
}
|
|
39
71
|
UnitBonusType.ARMOR = {
|
|
40
72
|
abilityTypeId = ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
41
73
|
field = ARMOR_BONUS_DUMMY_ABILITY_FIELD,
|
|
@@ -73,33 +105,95 @@ do
|
|
|
73
105
|
reduce = atLeastOnceProbability,
|
|
74
106
|
initialValue = 0
|
|
75
107
|
}
|
|
108
|
+
UnitBonusType.MANA_REGENERATION_RATE_FACTOR = {
|
|
109
|
+
abilityTypeId = MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID,
|
|
110
|
+
field = MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD,
|
|
111
|
+
integer = false,
|
|
112
|
+
reduce = sum,
|
|
113
|
+
initialValue = 0
|
|
114
|
+
}
|
|
115
|
+
--- Supported range: -1000 to 1000; the total is clamped to it.
|
|
116
|
+
UnitBonusType.HEALTH_REGENERATION_RATE = {
|
|
117
|
+
apply = function(unitHandle, value) return applyHealthRegenerationRateBonus(unitHandle, value) end,
|
|
118
|
+
reduce = sum,
|
|
119
|
+
initialValue = 0
|
|
120
|
+
}
|
|
76
121
|
end
|
|
77
122
|
local bonusesByUnitByBonusType = {}
|
|
78
123
|
local nextId = 1
|
|
124
|
+
local ceil = math.ceil
|
|
125
|
+
local floor = math.floor
|
|
126
|
+
local max = math.max
|
|
127
|
+
local min = math.min
|
|
79
128
|
local function processUnitBonus(unit, bonusType, bonusesArray)
|
|
80
129
|
local unitHandle = unit.handle
|
|
81
130
|
local totalValue = bonusType.reduce(bonusesArray)
|
|
82
131
|
local abilityTypeId = bonusType.abilityTypeId
|
|
83
132
|
if abilityTypeId == nil then
|
|
84
133
|
local valueByUnit = bonusType.valueByUnit
|
|
85
|
-
if
|
|
134
|
+
if valueByUnit == nil then
|
|
135
|
+
bonusType.apply(unitHandle, totalValue)
|
|
136
|
+
elseif totalValue == bonusType.initialValue then
|
|
86
137
|
valueByUnit[unit] = nil
|
|
87
138
|
else
|
|
88
139
|
valueByUnit[unit] = totalValue
|
|
89
140
|
end
|
|
90
141
|
return
|
|
91
142
|
end
|
|
92
|
-
|
|
143
|
+
applyAbilityBonus(
|
|
144
|
+
unitHandle,
|
|
145
|
+
abilityTypeId,
|
|
146
|
+
bonusType.field,
|
|
147
|
+
bonusType.integer,
|
|
148
|
+
totalValue,
|
|
149
|
+
bonusType.initialValue
|
|
150
|
+
)
|
|
151
|
+
end
|
|
152
|
+
applyAbilityBonus = function(unitHandle, abilityTypeId, field, integer, value, initialValue)
|
|
153
|
+
if value == initialValue then
|
|
93
154
|
UnitRemoveAbility(unitHandle, abilityTypeId)
|
|
94
155
|
return
|
|
95
156
|
end
|
|
96
157
|
local abilityHandle = checkNotNull(addInternalAbility(unitHandle, abilityTypeId))
|
|
97
|
-
check((
|
|
158
|
+
check((integer and BlzSetAbilityIntegerLevelField or BlzSetAbilityRealLevelField)(abilityHandle, field, 0, value))
|
|
98
159
|
BlzSetAbilityIntegerField(abilityHandle, ABILITY_IF_LEVELS, 2)
|
|
99
|
-
|
|
100
|
-
|
|
160
|
+
rawSetUnitAbilityLevel(unitHandle, abilityTypeId, 2)
|
|
161
|
+
rawSetUnitAbilityLevel(unitHandle, abilityTypeId, 1)
|
|
101
162
|
BlzSetAbilityIntegerField(abilityHandle, ABILITY_IF_LEVELS, 1)
|
|
102
163
|
end
|
|
164
|
+
local function setInternalAbilityPresence(unitHandle, abilityTypeId, present)
|
|
165
|
+
if present then
|
|
166
|
+
addInternalAbility(unitHandle, abilityTypeId)
|
|
167
|
+
else
|
|
168
|
+
UnitRemoveAbility(unitHandle, abilityTypeId)
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
local MINIMUM_HEALTH_REGENERATION_RATE_BONUS = -1000
|
|
172
|
+
local MAXIMUM_HEALTH_REGENERATION_RATE_BONUS = 1000
|
|
173
|
+
applyHealthRegenerationRateBonus = function(unitHandle, value)
|
|
174
|
+
value = max(
|
|
175
|
+
MINIMUM_HEALTH_REGENERATION_RATE_BONUS,
|
|
176
|
+
min(value, MAXIMUM_HEALTH_REGENERATION_RATE_BONUS)
|
|
177
|
+
)
|
|
178
|
+
local integerValue = value < 0 and ceil(value) or floor(value)
|
|
179
|
+
local remainder = integerValue
|
|
180
|
+
setInternalAbilityPresence(unitHandle, HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID, remainder < 0)
|
|
181
|
+
if remainder < 0 then
|
|
182
|
+
remainder = remainder - HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE
|
|
183
|
+
end
|
|
184
|
+
for ____, abilityTypeId in ipairs(HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS) do
|
|
185
|
+
setInternalAbilityPresence(unitHandle, abilityTypeId, remainder % 2 == 1)
|
|
186
|
+
remainder = floor(remainder / 2)
|
|
187
|
+
end
|
|
188
|
+
applyAbilityBonus(
|
|
189
|
+
unitHandle,
|
|
190
|
+
FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID,
|
|
191
|
+
FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD,
|
|
192
|
+
false,
|
|
193
|
+
value - integerValue,
|
|
194
|
+
0
|
|
195
|
+
)
|
|
196
|
+
end
|
|
103
197
|
____exports.addUnitBonus = function(unit, bonusType, value)
|
|
104
198
|
local bonusesByUnit = bonusesByUnitByBonusType[bonusType]
|
|
105
199
|
if bonusesByUnit == nil then
|