warscript 0.0.1-dev.91a4dce → 0.0.1-dev.9381e62
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/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 +1 -0
- package/core/types/frame.lua +112 -37
- 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 +4 -2
- package/core/types/player.lua +42 -25
- 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 +2 -1
- package/core/types/tileCell.lua +5 -0
- 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 +705 -7
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +10 -2
- package/engine/behavior.lua +157 -76
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +4 -0
- package/engine/behaviour/ability/damage.lua +19 -15
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- 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.d.ts +13 -6
- package/engine/behaviour/ability.lua +56 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
- package/engine/behaviour/unit/stun-immunity.lua +6 -5
- package/engine/behaviour/unit.d.ts +8 -3
- package/engine/behaviour/unit.lua +102 -24
- package/engine/buff.d.ts +73 -24
- package/engine/buff.lua +418 -166
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +4 -0
- package/engine/internal/ability.lua +56 -36
- 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 +27 -4
- package/engine/internal/item.d.ts +20 -5
- package/engine/internal/item.lua +146 -57
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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.lua +15 -3
- 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/order.d.ts +3 -3
- package/engine/internal/unit/order.lua +10 -10
- 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 +63 -2
- 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 +29 -19
- package/engine/internal/unit.d.ts +14 -28
- package/engine/internal/unit.lua +158 -247
- package/engine/local-client.d.ts +28 -0
- package/engine/local-client.lua +324 -54
- 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/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 +244 -8
- 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 +51 -2
- package/engine/object-data/entry/unit-type.lua +415 -37
- 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.lua +2 -2
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +10 -2
- package/engine/object-field.lua +268 -123
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -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 +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/text-tag.lua +2 -1
- package/engine/unit.d.ts +10 -1
- package/engine/unit.lua +10 -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/network.lua +25 -1
- package/objutil/buff.lua +10 -8
- 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/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +27 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/engine/internal/unit/item.lua +0 -78
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.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/core/dummy.lua
CHANGED
|
@@ -15,6 +15,8 @@ local ____preconditions = require("utility.preconditions")
|
|
|
15
15
|
local checkNotNull = ____preconditions.checkNotNull
|
|
16
16
|
local ____ability = require("engine.internal.ability")
|
|
17
17
|
local getOrderIdByAbilityTypeId = ____ability.getOrderIdByAbilityTypeId
|
|
18
|
+
local ____unit_2Dability_2Dlevel_2Dnatives = require("engine.internal.misc.unit-ability-level-natives")
|
|
19
|
+
local rawSetUnitAbilityLevel = ____unit_2Dability_2Dlevel_2Dnatives.rawSetUnitAbilityLevel
|
|
18
20
|
local neutralVictim = Player.neutralVictim.handle
|
|
19
21
|
____exports.InstantDummyCaster = __TS__Class()
|
|
20
22
|
local InstantDummyCaster = ____exports.InstantDummyCaster
|
|
@@ -42,7 +44,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
|
|
|
42
44
|
if type(abilityId) == "number" then
|
|
43
45
|
UnitAddAbility(dummy, abilityId)
|
|
44
46
|
if type(level) == "number" then
|
|
45
|
-
|
|
47
|
+
rawSetUnitAbilityLevel(dummy, abilityId, level + 1)
|
|
46
48
|
else
|
|
47
49
|
level(UnitAbility:of(
|
|
48
50
|
checkNotNull(BlzGetUnitAbility(dummy, abilityId)),
|
|
@@ -56,7 +58,7 @@ function InstantDummyCaster.prototype.prepare(self, owner, abilityId, level)
|
|
|
56
58
|
end
|
|
57
59
|
if __TS__ArrayIsArray(level) then
|
|
58
60
|
for i = 1, #abilityId do
|
|
59
|
-
|
|
61
|
+
rawSetUnitAbilityLevel(dummy, abilityId[i], level[i] + 1)
|
|
60
62
|
end
|
|
61
63
|
else
|
|
62
64
|
local abilities = {}
|
package/core/types/effect.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { PlayerColor } from "./playerColor";
|
|
|
5
5
|
declare const enum EffectPropertyKey {
|
|
6
6
|
COLOR = 100,
|
|
7
7
|
PITCH = 101,
|
|
8
|
-
ROLL = 102
|
|
8
|
+
ROLL = 102,
|
|
9
|
+
BLEND_TIME = 103,
|
|
10
|
+
TIME_SCALE = 104
|
|
9
11
|
}
|
|
10
12
|
export type EffectParameters = {
|
|
11
13
|
readonly delay?: number;
|
|
@@ -21,7 +23,15 @@ export declare class Effect extends Handle<jeffect> {
|
|
|
21
23
|
private [EffectPropertyKey.COLOR]?;
|
|
22
24
|
private [EffectPropertyKey.PITCH]?;
|
|
23
25
|
private [EffectPropertyKey.ROLL]?;
|
|
26
|
+
private [EffectPropertyKey.BLEND_TIME]?;
|
|
27
|
+
private [EffectPropertyKey.TIME_SCALE]?;
|
|
24
28
|
protected onDestroy(): HandleDestructor;
|
|
29
|
+
setAnimation(animation: string): void;
|
|
30
|
+
queueAnimation(animation: string): void;
|
|
31
|
+
get blendTime(): number;
|
|
32
|
+
set blendTime(blendTime: number);
|
|
33
|
+
get timeScale(): number;
|
|
34
|
+
set timeScale(timeScale: number);
|
|
25
35
|
get color(): PlayerColor;
|
|
26
36
|
set color(color: PlayerColor);
|
|
27
37
|
get scale(): number;
|
package/core/types/effect.lua
CHANGED
|
@@ -15,25 +15,22 @@ local ____timer = require("core.types.timer")
|
|
|
15
15
|
local Timer = ____timer.Timer
|
|
16
16
|
local ____unit = require("engine.internal.unit")
|
|
17
17
|
local Unit = ____unit.Unit
|
|
18
|
-
local ____pairs = _G.pairs
|
|
19
|
-
local select = _G.select
|
|
20
|
-
local mathRad = math.rad
|
|
21
18
|
local addSpecialEffect = AddSpecialEffect
|
|
22
19
|
local addSpecialEffectTarget = AddSpecialEffectTarget
|
|
23
20
|
local destroyEffect = DestroyEffect
|
|
21
|
+
local getLocationZ = GetLocationZ
|
|
24
22
|
local getSpecialEffectScale = BlzGetSpecialEffectScale
|
|
25
|
-
local
|
|
26
|
-
local
|
|
23
|
+
local moveLocation = MoveLocation
|
|
24
|
+
local queueSpecialEffectAnimation = BlzQueueSpecialEffectAnimation
|
|
25
|
+
local setSpecialEffectAnimation = BlzSetSpecialEffectAnimation
|
|
26
|
+
local setSpecialEffectAnimationBlendTime = BlzSetSpecialEffectAnimationBlendTime
|
|
27
|
+
local setSpecialEffectTimeScale = BlzSetSpecialEffectTimeScale
|
|
28
|
+
local setSpecialEffectColorByPlayer = BlzSetSpecialEffectColorByPlayer
|
|
27
29
|
local setSpecialEffectPitch = BlzSetSpecialEffectPitch
|
|
28
30
|
local setSpecialEffectRoll = BlzSetSpecialEffectRoll
|
|
29
|
-
local
|
|
30
|
-
local specialEffectAddSubAnimation = BlzSpecialEffectAddSubAnimation
|
|
31
|
-
local specialEffectClearSubAnimations = BlzSpecialEffectClearSubAnimations
|
|
32
|
-
local specialEffectRemoveSubAnimation = BlzSpecialEffectRemoveSubAnimation
|
|
31
|
+
local setSpecialEffectScale = BlzSetSpecialEffectScale
|
|
33
32
|
local setSpecialEffectZ = BlzSetSpecialEffectZ
|
|
34
|
-
local
|
|
35
|
-
local getUnitZ = BlzGetUnitZ
|
|
36
|
-
local moveLocation = MoveLocation
|
|
33
|
+
local mathRad = math.rad
|
|
37
34
|
local location = Location(0, 0)
|
|
38
35
|
local function setSpecialEffectPitchDegrees(effect, pitch)
|
|
39
36
|
setSpecialEffectPitch(
|
|
@@ -47,71 +44,6 @@ local function setSpecialEffectRollDegrees(effect, roll)
|
|
|
47
44
|
-mathRad(roll)
|
|
48
45
|
)
|
|
49
46
|
end
|
|
50
|
-
local animTypeByAnimationName = {
|
|
51
|
-
attack = ANIM_TYPE_ATTACK,
|
|
52
|
-
birth = ANIM_TYPE_BIRTH,
|
|
53
|
-
death = ANIM_TYPE_DEATH,
|
|
54
|
-
decay = ANIM_TYPE_DECAY,
|
|
55
|
-
dissipate = ANIM_TYPE_DISSIPATE,
|
|
56
|
-
morph = ANIM_TYPE_MORPH,
|
|
57
|
-
portrait = ANIM_TYPE_PORTRAIT,
|
|
58
|
-
sleep = ANIM_TYPE_SLEEP,
|
|
59
|
-
spell = ANIM_TYPE_SPELL,
|
|
60
|
-
stand = ANIM_TYPE_STAND,
|
|
61
|
-
walk = ANIM_TYPE_WALK
|
|
62
|
-
}
|
|
63
|
-
local subAnimTypeByAnimationQualifier = {
|
|
64
|
-
alternate = SUBANIM_TYPE_ROOTED,
|
|
65
|
-
alternateex = SUBANIM_TYPE_ALTERNATE_EX,
|
|
66
|
-
chain = SUBANIM_TYPE_CHAINLIGHTNING,
|
|
67
|
-
channel = SUBANIM_TYPE_CHANNEL,
|
|
68
|
-
complete = SUBANIM_TYPE_COMPLETE,
|
|
69
|
-
critical = SUBANIM_TYPE_CRITICAL,
|
|
70
|
-
defend = SUBANIM_TYPE_DEFEND,
|
|
71
|
-
drain = SUBANIM_TYPE_DRAIN,
|
|
72
|
-
eattree = SUBANIM_TYPE_EATTREE,
|
|
73
|
-
fast = SUBANIM_TYPE_FAST,
|
|
74
|
-
fill = SUBANIM_TYPE_FILL,
|
|
75
|
-
flail = SUBANIM_TYPE_FLAIL,
|
|
76
|
-
flesh = SUBANIM_TYPE_FLESH,
|
|
77
|
-
fifth = SUBANIM_TYPE_FIFTH,
|
|
78
|
-
fire = SUBANIM_TYPE_FIRE,
|
|
79
|
-
first = SUBANIM_TYPE_FIRST,
|
|
80
|
-
five = SUBANIM_TYPE_FIVE,
|
|
81
|
-
four = SUBANIM_TYPE_FOUR,
|
|
82
|
-
fourth = SUBANIM_TYPE_FOURTH,
|
|
83
|
-
gold = SUBANIM_TYPE_GOLD,
|
|
84
|
-
hit = SUBANIM_TYPE_HIT,
|
|
85
|
-
large = SUBANIM_TYPE_LARGE,
|
|
86
|
-
left = SUBANIM_TYPE_LEFT,
|
|
87
|
-
light = SUBANIM_TYPE_LIGHT,
|
|
88
|
-
looping = SUBANIM_TYPE_LOOPING,
|
|
89
|
-
lumber = SUBANIM_TYPE_LUMBER,
|
|
90
|
-
medium = SUBANIM_TYPE_MEDIUM,
|
|
91
|
-
moderate = SUBANIM_TYPE_MODERATE,
|
|
92
|
-
off = SUBANIM_TYPE_OFF,
|
|
93
|
-
one = SUBANIM_TYPE_ONE,
|
|
94
|
-
puke = SUBANIM_TYPE_PUKE,
|
|
95
|
-
ready = SUBANIM_TYPE_READY,
|
|
96
|
-
right = SUBANIM_TYPE_RIGHT,
|
|
97
|
-
second = SUBANIM_TYPE_SECOND,
|
|
98
|
-
severe = SUBANIM_TYPE_SEVERE,
|
|
99
|
-
slam = SUBANIM_TYPE_SLAM,
|
|
100
|
-
small = SUBANIM_TYPE_SMALL,
|
|
101
|
-
spiked = SUBANIM_TYPE_SPIKED,
|
|
102
|
-
spin = SUBANIM_TYPE_SPIN,
|
|
103
|
-
swim = SUBANIM_TYPE_SWIM,
|
|
104
|
-
talk = SUBANIM_TYPE_TALK,
|
|
105
|
-
third = SUBANIM_TYPE_THIRD,
|
|
106
|
-
three = SUBANIM_TYPE_THREE,
|
|
107
|
-
throw = SUBANIM_TYPE_THROW,
|
|
108
|
-
two = SUBANIM_TYPE_TWO,
|
|
109
|
-
turn = SUBANIM_TYPE_TURN,
|
|
110
|
-
victory = SUBANIM_TYPE_VICTORY,
|
|
111
|
-
work = SUBANIM_TYPE_WORK,
|
|
112
|
-
wounded = SUBANIM_TYPE_WOUNDED,
|
|
113
|
-
upgrade = SUBANIM_TYPE_UPGRADE
|
|
114
|
-
}
|
|
115
47
|
local function setSpecialEffectColor(effect, color)
|
|
116
48
|
local dummyColor = dummyPlayer.color
|
|
117
49
|
dummyPlayer.color = color
|
|
@@ -178,6 +110,12 @@ function Effect.prototype.onDestroy(self)
|
|
|
178
110
|
destroyEffect(self.handle)
|
|
179
111
|
return Handle.prototype.onDestroy(self)
|
|
180
112
|
end
|
|
113
|
+
function Effect.prototype.setAnimation(self, animation)
|
|
114
|
+
setSpecialEffectAnimation(self.handle, animation)
|
|
115
|
+
end
|
|
116
|
+
function Effect.prototype.queueAnimation(self, animation)
|
|
117
|
+
queueSpecialEffectAnimation(self.handle, animation)
|
|
118
|
+
end
|
|
181
119
|
function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
|
|
182
120
|
local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
|
|
183
121
|
if parameters ~= nil then
|
|
@@ -210,6 +148,34 @@ function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, paramete
|
|
|
210
148
|
parameters
|
|
211
149
|
)
|
|
212
150
|
end
|
|
151
|
+
__TS__SetDescriptor(
|
|
152
|
+
Effect.prototype,
|
|
153
|
+
"blendTime",
|
|
154
|
+
{
|
|
155
|
+
get = function(self)
|
|
156
|
+
return self[103] or 0
|
|
157
|
+
end,
|
|
158
|
+
set = function(self, blendTime)
|
|
159
|
+
setSpecialEffectAnimationBlendTime(self.handle, blendTime)
|
|
160
|
+
self[103] = blendTime
|
|
161
|
+
end
|
|
162
|
+
},
|
|
163
|
+
true
|
|
164
|
+
)
|
|
165
|
+
__TS__SetDescriptor(
|
|
166
|
+
Effect.prototype,
|
|
167
|
+
"timeScale",
|
|
168
|
+
{
|
|
169
|
+
get = function(self)
|
|
170
|
+
return self[104] or 1
|
|
171
|
+
end,
|
|
172
|
+
set = function(self, timeScale)
|
|
173
|
+
setSpecialEffectTimeScale(self.handle, timeScale)
|
|
174
|
+
self[104] = timeScale
|
|
175
|
+
end
|
|
176
|
+
},
|
|
177
|
+
true
|
|
178
|
+
)
|
|
213
179
|
__TS__SetDescriptor(
|
|
214
180
|
Effect.prototype,
|
|
215
181
|
"color",
|
package/core/types/frame.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export declare class Frame extends Handle<jframehandle> {
|
|
|
80
80
|
get onMouseLeave(): FrameEvent;
|
|
81
81
|
get onMouseUp(): FrameEvent;
|
|
82
82
|
get onMouseWheel(): FrameEvent<[number]>;
|
|
83
|
+
private trackMouseLocally;
|
|
83
84
|
get mouseEnterLocalEvent(): Event;
|
|
84
85
|
get mouseLeaveLocalEvent(): Event;
|
|
85
86
|
get popupMenuItemChangeEvent(): FrameEvent<[
|
package/core/types/frame.lua
CHANGED
|
@@ -24,11 +24,23 @@ local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
|
|
|
24
24
|
local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
|
|
25
25
|
local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
|
|
26
26
|
local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
|
|
27
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
28
|
+
local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
|
|
29
|
+
local ____socket = require("net.socket")
|
|
30
|
+
local Socket = ____socket.Socket
|
|
31
|
+
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
32
|
+
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
33
|
+
local luaMapInvert = ____lua_2Dmaps.luaMapInvert
|
|
34
|
+
local luaMapOf = ____lua_2Dmaps.luaMapOf
|
|
35
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
27
36
|
local frameClick = BlzFrameClick
|
|
28
37
|
local frameGetEnable = BlzFrameGetEnable
|
|
29
38
|
local frameIsVisible = BlzFrameIsVisible
|
|
30
39
|
local frameSetEnable = BlzFrameSetEnable
|
|
31
40
|
local frameSetScale = BlzFrameSetScale
|
|
41
|
+
local getHandleId = GetHandleId
|
|
42
|
+
local getOriginFrame = BlzGetOriginFrame
|
|
43
|
+
local location = Location
|
|
32
44
|
local ____rawget = _G.rawget
|
|
33
45
|
local rawset = _G.rawset
|
|
34
46
|
local invoke = Event.invoke
|
|
@@ -130,6 +142,79 @@ do
|
|
|
130
142
|
FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
|
|
131
143
|
end
|
|
132
144
|
local tooltipByFrame = setmetatable({}, {__mode = "k"})
|
|
145
|
+
local isMouseInsideLocallyByFrame = mutableLuaMap()
|
|
146
|
+
local mouseEnterLocalEventByFrame = mutableLuaMap()
|
|
147
|
+
local mouseLeaveLocalEventByFrame = mutableLuaMap()
|
|
148
|
+
local isLocalMouseTrackingStarted = false
|
|
149
|
+
--- Reused across ticks to avoid per-tick allocations: only the first `leftFrameCount` /
|
|
150
|
+
-- `enteredFrameCount` entries are meaningful, stale entries beyond them are never read and are
|
|
151
|
+
-- kept collectable by the weak values mode.
|
|
152
|
+
local leftFrames = setmetatable({}, {__mode = "v"})
|
|
153
|
+
local enteredFrames = setmetatable({}, {__mode = "v"})
|
|
154
|
+
--- All frames share a single poll which invokes every mouse leave event before any mouse enter
|
|
155
|
+
-- event within the same tick. With a poll per event, the invocation order would depend on the
|
|
156
|
+
-- event creation order instead, breaking listeners relying on the natural "leave the old frame,
|
|
157
|
+
-- then enter the new frame" order.
|
|
158
|
+
local function startLocalMouseTracking()
|
|
159
|
+
if isLocalMouseTrackingStarted then
|
|
160
|
+
return
|
|
161
|
+
end
|
|
162
|
+
isLocalMouseTrackingStarted = true
|
|
163
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
164
|
+
local leftFrameCount = 0
|
|
165
|
+
local enteredFrameCount = 0
|
|
166
|
+
for frame, wasMouseInside in pairs(isMouseInsideLocallyByFrame) do
|
|
167
|
+
local tooltip = tooltipByFrame[frame]
|
|
168
|
+
local isMouseInside = tooltip ~= nil and tooltip.visible
|
|
169
|
+
if isMouseInside ~= wasMouseInside then
|
|
170
|
+
isMouseInsideLocallyByFrame[frame] = isMouseInside
|
|
171
|
+
if isMouseInside then
|
|
172
|
+
enteredFrames[enteredFrameCount + 1] = frame
|
|
173
|
+
enteredFrameCount = enteredFrameCount + 1
|
|
174
|
+
else
|
|
175
|
+
leftFrames[leftFrameCount + 1] = frame
|
|
176
|
+
leftFrameCount = leftFrameCount + 1
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
for i = 1, leftFrameCount do
|
|
181
|
+
local event = mouseLeaveLocalEventByFrame[leftFrames[i]]
|
|
182
|
+
if event ~= nil then
|
|
183
|
+
Event.invoke(event)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
for i = 1, enteredFrameCount do
|
|
187
|
+
local event = mouseEnterLocalEventByFrame[enteredFrames[i]]
|
|
188
|
+
if event ~= nil then
|
|
189
|
+
Event.invoke(event)
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end)
|
|
193
|
+
end
|
|
194
|
+
local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
|
|
195
|
+
local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
|
|
196
|
+
local seenAsyncInitOriginFrameTypes = mutableLuaSet()
|
|
197
|
+
local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
|
|
198
|
+
local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
|
|
199
|
+
seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
|
|
200
|
+
local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
|
|
201
|
+
if asyncInitOriginFrameType ~= nil then
|
|
202
|
+
getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
|
|
203
|
+
end
|
|
204
|
+
end)
|
|
205
|
+
local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
|
|
206
|
+
local players = seenPlayersByAsyncInitOriginFrameType[frame]
|
|
207
|
+
if players == nil then
|
|
208
|
+
return false
|
|
209
|
+
end
|
|
210
|
+
for ____, player in ipairs(Player.all) do
|
|
211
|
+
if player.isUser and player.isPlaying and not (players[player] ~= nil) then
|
|
212
|
+
return false
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
keyByAsyncInitOriginFrameType[frame] = nil
|
|
216
|
+
return true
|
|
217
|
+
end
|
|
133
218
|
____exports.Frame = __TS__Class()
|
|
134
219
|
local Frame = ____exports.Frame
|
|
135
220
|
Frame.name = "Frame"
|
|
@@ -162,6 +247,18 @@ function Frame.prototype.getEvent(self, eventType, c)
|
|
|
162
247
|
end
|
|
163
248
|
return self.events[eventId]
|
|
164
249
|
end
|
|
250
|
+
function Frame.prototype.trackMouseLocally(self)
|
|
251
|
+
if not (tooltipByFrame[self] ~= nil) then
|
|
252
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = self
|
|
253
|
+
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
254
|
+
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
255
|
+
self:setTooltip(tooltip)
|
|
256
|
+
end
|
|
257
|
+
if not (isMouseInsideLocallyByFrame[self] ~= nil) then
|
|
258
|
+
isMouseInsideLocallyByFrame[self] = false
|
|
259
|
+
startLocalMouseTracking()
|
|
260
|
+
end
|
|
261
|
+
end
|
|
165
262
|
function Frame.prototype.hide(self)
|
|
166
263
|
self.hideCounter = self.hideCounter + 1
|
|
167
264
|
if self.hideCounter > 0 then
|
|
@@ -308,7 +405,17 @@ function Frame.byOrigin(self, frameType, index)
|
|
|
308
405
|
if index == nil then
|
|
309
406
|
index = 0
|
|
310
407
|
end
|
|
311
|
-
|
|
408
|
+
local frame = getOriginFrame(frameType, index)
|
|
409
|
+
local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
|
|
410
|
+
if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
|
|
411
|
+
if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
|
|
412
|
+
location(0, 0)
|
|
413
|
+
else
|
|
414
|
+
seenAsyncInitOriginFrameTypes[frameType] = true
|
|
415
|
+
seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
return self:of(frame)
|
|
312
419
|
end
|
|
313
420
|
Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
|
|
314
421
|
Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
|
|
@@ -627,24 +734,8 @@ __TS__SetDescriptor(
|
|
|
627
734
|
"mouseEnterLocalEvent",
|
|
628
735
|
{get = function(self)
|
|
629
736
|
local event = __TS__New(Event)
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
633
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
634
|
-
self:setTooltip(tooltip)
|
|
635
|
-
end
|
|
636
|
-
local isMouseInside = false
|
|
637
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
638
|
-
local tooltip = tooltipByFrame[self]
|
|
639
|
-
if tooltip and tooltip.visible then
|
|
640
|
-
if not isMouseInside then
|
|
641
|
-
isMouseInside = true
|
|
642
|
-
Event.invoke(event)
|
|
643
|
-
end
|
|
644
|
-
else
|
|
645
|
-
isMouseInside = false
|
|
646
|
-
end
|
|
647
|
-
end)
|
|
737
|
+
self:trackMouseLocally()
|
|
738
|
+
mouseEnterLocalEventByFrame[self] = event
|
|
648
739
|
rawset(self, "mouseEnterLocalEvent", event)
|
|
649
740
|
return event
|
|
650
741
|
end},
|
|
@@ -655,24 +746,8 @@ __TS__SetDescriptor(
|
|
|
655
746
|
"mouseLeaveLocalEvent",
|
|
656
747
|
{get = function(self)
|
|
657
748
|
local event = __TS__New(Event)
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
local tooltip = ____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent == self and ____exports.Frame:createByType("SIMPLEFRAME", "", ____exports.Frame.CONSOLE_UI) or ____exports.Frame:createByType("FRAME", "", ____exports.Frame.GAME_UI)
|
|
661
|
-
____exports.Frame.SIMPLE_FRAME_TEST_CHILD.parent = ____exports.Frame.CONSOLE_UI
|
|
662
|
-
self:setTooltip(tooltip)
|
|
663
|
-
end
|
|
664
|
-
local isMouseInside = false
|
|
665
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
666
|
-
local tooltip = tooltipByFrame[self]
|
|
667
|
-
if tooltip and tooltip.visible then
|
|
668
|
-
isMouseInside = true
|
|
669
|
-
else
|
|
670
|
-
if isMouseInside then
|
|
671
|
-
isMouseInside = false
|
|
672
|
-
Event.invoke(event)
|
|
673
|
-
end
|
|
674
|
-
end
|
|
675
|
-
end)
|
|
749
|
+
self:trackMouseLocally()
|
|
750
|
+
mouseLeaveLocalEventByFrame[self] = event
|
|
676
751
|
rawset(self, "mouseLeaveLocalEvent", event)
|
|
677
752
|
return event
|
|
678
753
|
end},
|
package/core/types/handle.lua
CHANGED
|
@@ -15,6 +15,8 @@ local ____exception = require("exception")
|
|
|
15
15
|
local IllegalStateException = ____exception.IllegalStateException
|
|
16
16
|
local ____attributes = require("attributes")
|
|
17
17
|
local AttributesHolder = ____attributes.AttributesHolder
|
|
18
|
+
local ____preconditions = require("utility.preconditions")
|
|
19
|
+
local checkNotNull = ____preconditions.checkNotNull
|
|
18
20
|
local getHandleId = GetHandleId
|
|
19
21
|
local onCreateEventByHandleConstructor = {}
|
|
20
22
|
local onDestroyEventByHandleConstructor = {}
|
|
@@ -58,6 +60,9 @@ function Handle.invokeOnCreateEvent(self, clazz, handle)
|
|
|
58
60
|
Event.invoke(onCreateEvent, handle)
|
|
59
61
|
end
|
|
60
62
|
end
|
|
63
|
+
function Handle.isWrapped(self, handle)
|
|
64
|
+
return self.memoized[getHandleId(handle)] ~= nil
|
|
65
|
+
end
|
|
61
66
|
function Handle.prototype.__tostring(self)
|
|
62
67
|
return (self.constructor.name .. "@") .. tostring(getHandleId(self.handle))
|
|
63
68
|
end
|
|
@@ -66,17 +71,12 @@ function Handle.prototype.onDestroy(self, ...)
|
|
|
66
71
|
return nil
|
|
67
72
|
end
|
|
68
73
|
function Handle.prototype.destroy(self, ...)
|
|
74
|
+
if self[0] == 2 or self[0] == 3 then
|
|
75
|
+
return nil
|
|
76
|
+
end
|
|
69
77
|
local clazz = self.constructor
|
|
70
78
|
local id = getHandleId(self.handle)
|
|
71
|
-
|
|
72
|
-
error(
|
|
73
|
-
__TS__New(
|
|
74
|
-
IllegalStateException,
|
|
75
|
-
"Double-destroy run for handle " .. tostring(id)
|
|
76
|
-
),
|
|
77
|
-
0
|
|
78
|
-
)
|
|
79
|
-
end
|
|
79
|
+
checkNotNull(clazz.memoized[id])
|
|
80
80
|
self[0] = 2
|
|
81
81
|
if self.onDestroyEvent then
|
|
82
82
|
Event.invoke(self.onDestroyEvent)
|
package/core/types/item.d.ts
CHANGED
package/core/types/item.lua
CHANGED
package/core/types/player.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
28
28
|
static readonly neutralExtra: Player;
|
|
29
29
|
private static events;
|
|
30
30
|
readonly id: number;
|
|
31
|
+
readonly slotState: jplayerslotstate;
|
|
31
32
|
constructor(handle: jplayer);
|
|
32
33
|
onDestroy(): HandleDestructor;
|
|
33
34
|
toString(): string;
|
|
@@ -45,11 +46,11 @@ export declare class Player extends Handle<jplayer> {
|
|
|
45
46
|
get isUser(): boolean;
|
|
46
47
|
get isPlaying(): boolean;
|
|
47
48
|
get controller(): jmapcontrol;
|
|
48
|
-
get slotState(): jplayerslotstate;
|
|
49
49
|
clearSelection(): void;
|
|
50
50
|
selectSingle(unit: Unit): void;
|
|
51
51
|
select(unit: Unit): void;
|
|
52
52
|
deselect(unit: Unit): void;
|
|
53
|
+
setRaceSkin(racePreference: jracepreference): void;
|
|
53
54
|
forceUIKey(key: string): void;
|
|
54
55
|
forceUICancel(): void;
|
|
55
56
|
isAllyOf(other: Player): boolean;
|
|
@@ -64,7 +65,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
64
65
|
setUpgradeLevel(upgradeId: UpgradeId, level: number): void;
|
|
65
66
|
private static getEvent;
|
|
66
67
|
private static getMouseEvent;
|
|
67
|
-
static get allianceChangedEvent(): Event<[Player]
|
|
68
|
+
static get allianceChangedEvent(): Readonly<Record<PlayerAllianceType, Event<[Player]>>>;
|
|
68
69
|
static get onLeave(): Event<[Player]>;
|
|
69
70
|
static get onMouseDown(): Event<[Player, jmousebuttontype]>;
|
|
70
71
|
static get onMouseUp(): Event<[Player, jmousebuttontype]>;
|
|
@@ -81,6 +82,7 @@ export declare class Player extends Handle<jplayer> {
|
|
|
81
82
|
};
|
|
82
83
|
};
|
|
83
84
|
static get onChat(): Event<[player: Player, message: string]>;
|
|
85
|
+
static readonly colorChangedEvent: Event<[Player]>;
|
|
84
86
|
static byId(id: number): Player | undefined;
|
|
85
87
|
}
|
|
86
88
|
export {};
|
package/core/types/player.lua
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
2
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
4
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
-
local __TS__New = ____lualib.__TS__New
|
|
5
5
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
6
6
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
7
7
|
local ____exports = {}
|
|
@@ -23,17 +23,21 @@ local ____math = require("math")
|
|
|
23
23
|
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
24
24
|
local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
|
|
25
25
|
local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
|
|
26
|
+
local ____lazy = require("utility.lazy")
|
|
27
|
+
local lazyRecord = ____lazy.lazyRecord
|
|
26
28
|
local getPlayerAlliance = GetPlayerAlliance
|
|
27
29
|
local getPlayerColor = GetPlayerColor
|
|
28
30
|
local getPlayerName = GetPlayerName
|
|
29
31
|
local getPlayerTechCount = GetPlayerTechCount
|
|
30
32
|
local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
|
|
31
33
|
local getTriggerPlayer = GetTriggerPlayer
|
|
34
|
+
local playerNative = _G.Player
|
|
35
|
+
local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
|
|
32
36
|
local setPlayerAlliance = SetPlayerAlliance
|
|
37
|
+
local setPlayerRaceSkin = SetPlayerRaceSkin
|
|
33
38
|
local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
|
|
34
39
|
local setPlayerTechResearched = SetPlayerTechResearched
|
|
35
|
-
local
|
|
36
|
-
local playerNative = _G.Player
|
|
40
|
+
local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
|
|
37
41
|
local nativeByPlayerAllianceType = {
|
|
38
42
|
[0] = ALLIANCE_PASSIVE,
|
|
39
43
|
[1] = ALLIANCE_RESCUABLE,
|
|
@@ -46,12 +50,14 @@ local nativeByPlayerAllianceType = {
|
|
|
46
50
|
[8] = ALLIANCE_SHARED_CONTROL,
|
|
47
51
|
[9] = ALLIANCE_SHARED_ADVANCED_CONTROL
|
|
48
52
|
}
|
|
53
|
+
local playerColorChangedEvent = __TS__New(Event)
|
|
49
54
|
____exports.Player = __TS__Class()
|
|
50
55
|
local Player = ____exports.Player
|
|
51
56
|
Player.name = "Player"
|
|
52
57
|
__TS__ClassExtends(Player, Handle)
|
|
53
58
|
function Player.prototype.____constructor(self, handle)
|
|
54
59
|
Handle.prototype.____constructor(self, handle)
|
|
60
|
+
self.slotState = GetPlayerSlotState(self.handle)
|
|
55
61
|
self.id = GetPlayerId(handle)
|
|
56
62
|
end
|
|
57
63
|
function Player.prototype.onDestroy(self)
|
|
@@ -84,6 +90,9 @@ function Player.prototype.deselect(self, unit)
|
|
|
84
90
|
SelectUnit(unit.handle, false)
|
|
85
91
|
end
|
|
86
92
|
end
|
|
93
|
+
function Player.prototype.setRaceSkin(self, racePreference)
|
|
94
|
+
setPlayerRaceSkin(self.handle, racePreference)
|
|
95
|
+
end
|
|
87
96
|
function Player.prototype.forceUIKey(self, key)
|
|
88
97
|
if self.isLocal then
|
|
89
98
|
ForceUIKey(key)
|
|
@@ -145,14 +154,11 @@ function Player.getMouseEvent(self, event, collector)
|
|
|
145
154
|
self.events[eventId] = __TS__New(
|
|
146
155
|
TriggerEvent,
|
|
147
156
|
function(trigger)
|
|
148
|
-
Timer:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
for ____, player in ipairs(____exports.Player.all) do
|
|
152
|
-
TriggerRegisterPlayerEvent(trigger, player.handle, event)
|
|
153
|
-
end
|
|
157
|
+
Timer:run(function()
|
|
158
|
+
for ____, player in ipairs(____exports.Player.all) do
|
|
159
|
+
TriggerRegisterPlayerEvent(trigger, player.handle, event)
|
|
154
160
|
end
|
|
155
|
-
)
|
|
161
|
+
end)
|
|
156
162
|
end,
|
|
157
163
|
collector or (function() return {} end)
|
|
158
164
|
)
|
|
@@ -300,6 +306,7 @@ __TS__SetDescriptor(
|
|
|
300
306
|
end,
|
|
301
307
|
set = function(self, color)
|
|
302
308
|
SetPlayerColor(self.handle, color.handle)
|
|
309
|
+
Event.invoke(playerColorChangedEvent, self)
|
|
303
310
|
end
|
|
304
311
|
},
|
|
305
312
|
true
|
|
@@ -362,7 +369,7 @@ __TS__SetDescriptor(
|
|
|
362
369
|
Player.prototype,
|
|
363
370
|
"isUser",
|
|
364
371
|
{get = function(self)
|
|
365
|
-
return
|
|
372
|
+
return self.controller == MAP_CONTROL_USER
|
|
366
373
|
end},
|
|
367
374
|
true
|
|
368
375
|
)
|
|
@@ -370,7 +377,7 @@ __TS__SetDescriptor(
|
|
|
370
377
|
Player.prototype,
|
|
371
378
|
"isPlaying",
|
|
372
379
|
{get = function(self)
|
|
373
|
-
return
|
|
380
|
+
return self.slotState == PLAYER_SLOT_STATE_PLAYING
|
|
374
381
|
end},
|
|
375
382
|
true
|
|
376
383
|
)
|
|
@@ -378,15 +385,9 @@ __TS__SetDescriptor(
|
|
|
378
385
|
Player.prototype,
|
|
379
386
|
"controller",
|
|
380
387
|
{get = function(self)
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
)
|
|
385
|
-
__TS__SetDescriptor(
|
|
386
|
-
Player.prototype,
|
|
387
|
-
"slotState",
|
|
388
|
-
{get = function(self)
|
|
389
|
-
return GetPlayerSlotState(self.handle)
|
|
388
|
+
local controller = GetPlayerController(self.handle)
|
|
389
|
+
rawset(self, "controller", controller)
|
|
390
|
+
return controller
|
|
390
391
|
end},
|
|
391
392
|
true
|
|
392
393
|
)
|
|
@@ -394,10 +395,19 @@ __TS__ObjectDefineProperty(
|
|
|
394
395
|
Player,
|
|
395
396
|
"allianceChangedEvent",
|
|
396
397
|
{get = function(self)
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
398
|
+
local event = lazyRecord(function(____type)
|
|
399
|
+
return __TS__New(
|
|
400
|
+
TriggerEvent,
|
|
401
|
+
function(trigger)
|
|
402
|
+
for ____, player in ipairs(____exports.Player.all) do
|
|
403
|
+
triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
|
|
404
|
+
end
|
|
405
|
+
end,
|
|
406
|
+
function() return ____exports.Player:of(getTriggerPlayer()) end
|
|
407
|
+
)
|
|
408
|
+
end)
|
|
409
|
+
rawset(self, "allianceChangedEvent", event)
|
|
410
|
+
return event
|
|
401
411
|
end}
|
|
402
412
|
)
|
|
403
413
|
__TS__ObjectDefineProperty(
|
|
@@ -478,4 +488,11 @@ __TS__ObjectDefineProperty(
|
|
|
478
488
|
return event
|
|
479
489
|
end}
|
|
480
490
|
)
|
|
491
|
+
Player.colorChangedEvent = playerColorChangedEvent
|
|
492
|
+
____exports.Player.onLeave:addListener(
|
|
493
|
+
999999,
|
|
494
|
+
function(player)
|
|
495
|
+
rawset(player, "slotState", PLAYER_SLOT_STATE_LEFT)
|
|
496
|
+
end
|
|
497
|
+
)
|
|
481
498
|
return ____exports
|