warscript 0.0.1-dev.d6e2c10 → 0.0.1-dev.d77b529
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +2 -1
- package/core/types/player.lua +18 -13
- 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/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/engine/behavior.d.ts +4 -2
- package/engine/behavior.lua +69 -11
- 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 +11 -5
- package/engine/behaviour/ability.lua +54 -0
- package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
- package/engine/behaviour/unit/stun-immunity.lua +5 -4
- package/engine/behaviour/unit.d.ts +1 -0
- package/engine/behaviour/unit.lua +14 -3
- package/engine/buff.d.ts +64 -25
- package/engine/buff.lua +345 -156
- 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.lua +3 -3
- 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.lua +3 -3
- 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 +25 -18
- package/engine/internal/unit.d.ts +3 -18
- package/engine/internal/unit.lua +97 -195
- package/engine/local-client.d.ts +27 -1
- package/engine/local-client.lua +298 -58
- 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/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/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
- package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
- package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -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-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 +18 -3
- package/engine/object-data/entry/ability-type.lua +222 -5
- 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 +16 -2
- package/engine/object-data/entry/destructible-type.lua +91 -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 +47 -2
- package/engine/object-data/entry/unit-type.lua +383 -49
- 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 +7 -4
- package/engine/object-field/unit.lua +4 -0
- package/engine/object-field.d.ts +3 -1
- package/engine/object-field.lua +177 -119
- 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/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/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +11 -5
- package/engine/standard/fields/unit.lua +13 -4
- package/engine/unit.d.ts +8 -1
- package/engine/unit.lua +8 -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/engine/local-client.lua
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
-
local
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
4
4
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
5
5
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
6
|
-
local __TS__New = ____lualib.__TS__New
|
|
7
6
|
local ____exports = {}
|
|
7
|
+
local actualizeTargetingModeState
|
|
8
8
|
local ____unit = require("core.types.unit")
|
|
9
9
|
local Unit = ____unit.Unit
|
|
10
10
|
local ____event = require("event")
|
|
@@ -18,34 +18,97 @@ local ____timer = require("core.types.timer")
|
|
|
18
18
|
local Timer = ____timer.Timer
|
|
19
19
|
local ____color = require("core.types.color")
|
|
20
20
|
local Color = ____color.Color
|
|
21
|
-
local
|
|
22
|
-
local
|
|
23
|
-
local
|
|
24
|
-
local
|
|
25
|
-
local isHeroUnitId = IsHeroUnitId
|
|
21
|
+
local ____arrays = require("utility.arrays")
|
|
22
|
+
local array = ____arrays.array
|
|
23
|
+
local frameToPixelX = BlzFrameToPixelX
|
|
24
|
+
local frameToPixelY = BlzFrameToPixelY
|
|
26
25
|
local getHandleId = GetHandleId
|
|
26
|
+
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
27
|
+
local getLocalClientWidth = BlzGetLocalClientWidth
|
|
28
|
+
local getLocale = BlzGetLocale
|
|
27
29
|
local getMouseFocusUnit = BlzGetMouseFocusUnit
|
|
30
|
+
local getMouseScreenPosX = BlzGetMouseScreenPosX
|
|
31
|
+
local getMouseScreenPosY = BlzGetMouseScreenPosY
|
|
32
|
+
local frameGetText = BlzFrameGetText
|
|
28
33
|
local getUnitRealField = BlzGetUnitRealField
|
|
34
|
+
local getUnitState = GetUnitState
|
|
29
35
|
local getUnitTypeId = GetUnitTypeId
|
|
30
|
-
local
|
|
36
|
+
local isHeroUnitId = IsHeroUnitId
|
|
37
|
+
local isKeyPressed = BlzIsKeyPressed
|
|
38
|
+
local isLocalClientActive = BlzIsLocalClientActive
|
|
39
|
+
local isMetaKeyPressed = BlzIsMetaKeyPressed
|
|
40
|
+
local isMouseButtonPressed = BlzIsMouseButtonPressed
|
|
41
|
+
local loadTOCFile = BlzLoadTOCFile
|
|
31
42
|
local pingMinimap = PingMinimap
|
|
32
43
|
local pingMinimapEx = PingMinimapEx
|
|
44
|
+
local pixelToFrameX = BlzPixelToFrameX
|
|
45
|
+
local pixelToFrameY = BlzPixelToFrameY
|
|
46
|
+
local setFrameVisible = BlzFrameSetVisible
|
|
33
47
|
local tableSort = table.sort
|
|
34
|
-
local
|
|
48
|
+
local hdTocPath = "_warscript\\IsHD.toc"
|
|
49
|
+
local deTocPath = "_warscript\\IsDE.toc"
|
|
35
50
|
compiletime(function()
|
|
36
51
|
if currentMap then
|
|
37
|
-
local
|
|
38
|
-
currentMap:addFileString("_HD.w3mod\\" ..
|
|
39
|
-
currentMap:addFileString("_HD.w3mod\\" ..
|
|
52
|
+
local hdFdfPath = "_warscript\\IsHD.fdf"
|
|
53
|
+
currentMap:addFileString("_HD.w3mod\\" .. hdFdfPath, "\r\n")
|
|
54
|
+
currentMap:addFileString("_HD.w3mod\\" .. hdTocPath, hdFdfPath .. "\r\n")
|
|
55
|
+
local deFdfPath = "_warscript\\IsDE.fdf"
|
|
56
|
+
currentMap:addFileString("_DE.w3mod\\" .. deFdfPath, "\r\n")
|
|
57
|
+
currentMap:addFileString("_DE.w3mod\\" .. deTocPath, deFdfPath .. "\r\n")
|
|
40
58
|
end
|
|
41
59
|
end)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
60
|
+
--- The portrait's health and mana texts show the focused unit's current and maximum values
|
|
61
|
+
-- as "current / maximum". Once they exist, these origin frames live for the whole game, so
|
|
62
|
+
-- the polling may read them every tick; the group panel's buttons, by contrast, are rebuilt
|
|
63
|
+
-- at any selection change and a retained button handle crashes the game on the first native
|
|
64
|
+
-- called with it. The frames are not there at map load, though, and appear at different
|
|
65
|
+
-- times on different clients: `Frame.byOrigin` returns undefined until then and balances
|
|
66
|
+
-- the handle allocation across clients, so it is asked again once a second.
|
|
67
|
+
local portraitHpText
|
|
68
|
+
local portraitManaText
|
|
69
|
+
local function actualizePortraitFrames()
|
|
70
|
+
portraitHpText = Frame:byOrigin(ORIGIN_FRAME_PORTRAIT_HP_TEXT)
|
|
71
|
+
portraitManaText = Frame:byOrigin(ORIGIN_FRAME_PORTRAIT_MANA_TEXT)
|
|
72
|
+
end
|
|
73
|
+
--- Finds "current / maximum" in the text, which may also carry color codes and other
|
|
74
|
+
-- decoration; returns -1 for both when there is no such pair.
|
|
75
|
+
local function parsePortraitValues(frame)
|
|
76
|
+
if frame == nil then
|
|
77
|
+
return -1, -1
|
|
78
|
+
end
|
|
79
|
+
local text = frameGetText(frame.handle)
|
|
80
|
+
local current, maximum = string.match(text, "(%d+)%s*/%s*(%d+)")
|
|
81
|
+
if current == nil or maximum == nil then
|
|
82
|
+
return -1, -1
|
|
83
|
+
end
|
|
84
|
+
return tonumber(current), tonumber(maximum)
|
|
85
|
+
end
|
|
86
|
+
--- Whether a unit value can be what the portrait shows as `shown`; the rounding rule is unknown.
|
|
87
|
+
local function matchesPortraitValue(value, shown)
|
|
88
|
+
return math.abs(value - shown) < 1
|
|
89
|
+
end
|
|
90
|
+
--- Whether the unit's health matches what the portrait shows; the health text is required.
|
|
91
|
+
local function matchesPortraitHealth(unit, hp, maxHp)
|
|
92
|
+
local handle = unit.handle
|
|
93
|
+
return maxHp >= 0 and matchesPortraitValue(
|
|
94
|
+
getUnitState(handle, UNIT_STATE_LIFE),
|
|
95
|
+
hp
|
|
96
|
+
) and matchesPortraitValue(
|
|
97
|
+
getUnitState(handle, UNIT_STATE_MAX_LIFE),
|
|
98
|
+
maxHp
|
|
47
99
|
)
|
|
48
|
-
end
|
|
100
|
+
end
|
|
101
|
+
--- Whether the unit has mana and it matches what the portrait shows. The mana text is not
|
|
102
|
+
-- redrawn for a unit without mana (it keeps the previously focused unit's values), so a
|
|
103
|
+
-- mana match is evidence for a unit, but a mismatch is no evidence against one without mana.
|
|
104
|
+
local function matchesPortraitMana(unit, mana, maxMana)
|
|
105
|
+
local handle = unit.handle
|
|
106
|
+
local unitMaxMana = getUnitState(handle, UNIT_STATE_MAX_MANA)
|
|
107
|
+
return maxMana >= 0 and unitMaxMana > 0 and matchesPortraitValue(
|
|
108
|
+
getUnitState(handle, UNIT_STATE_MANA),
|
|
109
|
+
mana
|
|
110
|
+
) and matchesPortraitValue(unitMaxMana, maxMana)
|
|
111
|
+
end
|
|
49
112
|
local localSelectedUnits = {}
|
|
50
113
|
local indexByLocalSelectedUnit = {}
|
|
51
114
|
local function compareUnitsSelectionPriority(a, b)
|
|
@@ -62,12 +125,17 @@ local function compareUnitsSelectionPriority(a, b)
|
|
|
62
125
|
end
|
|
63
126
|
local mainSelectedUnitChangeEvent
|
|
64
127
|
local previousMainSelectedUnit
|
|
128
|
+
local currentMainSelectedUnit
|
|
129
|
+
local lastTargetingModeState = false
|
|
130
|
+
local targetingModeEnterEvent = __TS__New(Event)
|
|
131
|
+
local targetingModeLeaveEvent = __TS__New(Event)
|
|
132
|
+
local targetingModeStateChangeEvent = __TS__New(Event)
|
|
65
133
|
____exports.LocalClient = __TS__Class()
|
|
66
134
|
local LocalClient = ____exports.LocalClient
|
|
67
135
|
LocalClient.name = "LocalClient"
|
|
68
136
|
function LocalClient.prototype.____constructor(self)
|
|
69
137
|
end
|
|
70
|
-
function LocalClient.pingMinimap(self, x, y, duration, redOrColor,
|
|
138
|
+
function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
|
|
71
139
|
if redOrColor == nil then
|
|
72
140
|
pingMinimap(x, y, duration)
|
|
73
141
|
elseif __TS__InstanceOf(redOrColor, Color) then
|
|
@@ -78,7 +146,7 @@ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrExtraE
|
|
|
78
146
|
redOrColor.r,
|
|
79
147
|
redOrColor.g,
|
|
80
148
|
redOrColor.b,
|
|
81
|
-
|
|
149
|
+
greenOrFlashy or false
|
|
82
150
|
)
|
|
83
151
|
else
|
|
84
152
|
pingMinimapEx(
|
|
@@ -86,12 +154,33 @@ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrExtraE
|
|
|
86
154
|
y,
|
|
87
155
|
duration,
|
|
88
156
|
redOrColor,
|
|
89
|
-
|
|
157
|
+
greenOrFlashy,
|
|
90
158
|
blue,
|
|
91
|
-
|
|
159
|
+
flashy or false
|
|
92
160
|
)
|
|
93
161
|
end
|
|
94
162
|
end
|
|
163
|
+
function LocalClient.isKeyPressed(self, key)
|
|
164
|
+
return isKeyPressed(key)
|
|
165
|
+
end
|
|
166
|
+
function LocalClient.isMetaKeyPressed(self, key)
|
|
167
|
+
return isMetaKeyPressed(key)
|
|
168
|
+
end
|
|
169
|
+
function LocalClient.isMouseButtonPressed(self, button)
|
|
170
|
+
return isMouseButtonPressed(button)
|
|
171
|
+
end
|
|
172
|
+
function LocalClient.screenToFrameX(self, x)
|
|
173
|
+
return pixelToFrameX(x)
|
|
174
|
+
end
|
|
175
|
+
function LocalClient.screenToFrameY(self, y)
|
|
176
|
+
return pixelToFrameY(y)
|
|
177
|
+
end
|
|
178
|
+
function LocalClient.frameToScreenX(self, x)
|
|
179
|
+
return frameToPixelX(x)
|
|
180
|
+
end
|
|
181
|
+
function LocalClient.frameToScreenY(self, y)
|
|
182
|
+
return frameToPixelY(y)
|
|
183
|
+
end
|
|
95
184
|
LocalClient.locale = getLocale()
|
|
96
185
|
__TS__ObjectDefineProperty(
|
|
97
186
|
LocalClient,
|
|
@@ -107,6 +196,13 @@ __TS__ObjectDefineProperty(
|
|
|
107
196
|
return getLocalClientHeight()
|
|
108
197
|
end}
|
|
109
198
|
)
|
|
199
|
+
__TS__ObjectDefineProperty(
|
|
200
|
+
LocalClient,
|
|
201
|
+
"isSD",
|
|
202
|
+
{get = function(self)
|
|
203
|
+
return true
|
|
204
|
+
end}
|
|
205
|
+
)
|
|
110
206
|
__TS__ObjectDefineProperty(
|
|
111
207
|
LocalClient,
|
|
112
208
|
"isHD",
|
|
@@ -114,11 +210,18 @@ __TS__ObjectDefineProperty(
|
|
|
114
210
|
return false
|
|
115
211
|
end}
|
|
116
212
|
)
|
|
213
|
+
__TS__ObjectDefineProperty(
|
|
214
|
+
LocalClient,
|
|
215
|
+
"isDE",
|
|
216
|
+
{get = function(self)
|
|
217
|
+
return false
|
|
218
|
+
end}
|
|
219
|
+
)
|
|
117
220
|
__TS__ObjectDefineProperty(
|
|
118
221
|
LocalClient,
|
|
119
222
|
"graphicsMode",
|
|
120
223
|
{get = function(self)
|
|
121
|
-
return
|
|
224
|
+
return 0
|
|
122
225
|
end}
|
|
123
226
|
)
|
|
124
227
|
__TS__ObjectDefineProperty(
|
|
@@ -128,6 +231,41 @@ __TS__ObjectDefineProperty(
|
|
|
128
231
|
return isLocalClientActive()
|
|
129
232
|
end}
|
|
130
233
|
)
|
|
234
|
+
__TS__ObjectDefineProperty(
|
|
235
|
+
LocalClient,
|
|
236
|
+
"isMinimized",
|
|
237
|
+
{get = function(self)
|
|
238
|
+
return getLocalClientHeight() == 0
|
|
239
|
+
end}
|
|
240
|
+
)
|
|
241
|
+
__TS__ObjectDefineProperty(
|
|
242
|
+
LocalClient,
|
|
243
|
+
"mouseScreenX",
|
|
244
|
+
{get = function(self)
|
|
245
|
+
return getMouseScreenPosX()
|
|
246
|
+
end}
|
|
247
|
+
)
|
|
248
|
+
__TS__ObjectDefineProperty(
|
|
249
|
+
LocalClient,
|
|
250
|
+
"mouseScreenY",
|
|
251
|
+
{get = function(self)
|
|
252
|
+
return getMouseScreenPosY()
|
|
253
|
+
end}
|
|
254
|
+
)
|
|
255
|
+
__TS__ObjectDefineProperty(
|
|
256
|
+
LocalClient,
|
|
257
|
+
"mouseFrameX",
|
|
258
|
+
{get = function(self)
|
|
259
|
+
return pixelToFrameX(getMouseScreenPosX())
|
|
260
|
+
end}
|
|
261
|
+
)
|
|
262
|
+
__TS__ObjectDefineProperty(
|
|
263
|
+
LocalClient,
|
|
264
|
+
"mouseFrameY",
|
|
265
|
+
{get = function(self)
|
|
266
|
+
return pixelToFrameY(getMouseScreenPosY())
|
|
267
|
+
end}
|
|
268
|
+
)
|
|
131
269
|
__TS__ObjectDefineProperty(
|
|
132
270
|
LocalClient,
|
|
133
271
|
"mouseFocusUnit",
|
|
@@ -139,33 +277,7 @@ __TS__ObjectDefineProperty(
|
|
|
139
277
|
LocalClient,
|
|
140
278
|
"mainSelectedUnit",
|
|
141
279
|
{get = function(self)
|
|
142
|
-
|
|
143
|
-
for i = 1, #localSelectedUnits do
|
|
144
|
-
indexByLocalSelectedUnit[localSelectedUnits[i]] = i
|
|
145
|
-
end
|
|
146
|
-
tableSort(localSelectedUnits, compareUnitsSelectionPriority)
|
|
147
|
-
local mainSelectedUnitIndex
|
|
148
|
-
if selectionButtons and #localSelectedUnits > 1 then
|
|
149
|
-
local maxButtonWidth = 0
|
|
150
|
-
for i = 0, #selectionButtons - 1 do
|
|
151
|
-
local width = selectionButtons[i + 1].width
|
|
152
|
-
if width > maxButtonWidth then
|
|
153
|
-
maxButtonWidth = width
|
|
154
|
-
mainSelectedUnitIndex = i
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
local mainSelectedUnit = localSelectedUnits[(mainSelectedUnitIndex or 0) + 1]
|
|
159
|
-
for i = 1, #localSelectedUnits do
|
|
160
|
-
indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
|
|
161
|
-
localSelectedUnits[i] = nil
|
|
162
|
-
end
|
|
163
|
-
if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
|
|
164
|
-
local previousPreviousMainSelectedUnit = previousMainSelectedUnit
|
|
165
|
-
previousMainSelectedUnit = mainSelectedUnit
|
|
166
|
-
Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
|
|
167
|
-
end
|
|
168
|
-
return mainSelectedUnit
|
|
280
|
+
return currentMainSelectedUnit
|
|
169
281
|
end}
|
|
170
282
|
)
|
|
171
283
|
__TS__ObjectDefineProperty(
|
|
@@ -174,13 +286,20 @@ __TS__ObjectDefineProperty(
|
|
|
174
286
|
{get = function(self)
|
|
175
287
|
if mainSelectedUnitChangeEvent == nil then
|
|
176
288
|
mainSelectedUnitChangeEvent = __TS__New(Event)
|
|
177
|
-
Timer.onPeriod[1 / 64]:addListener(function()
|
|
178
|
-
local _ = ____exports.LocalClient.mainSelectedUnit
|
|
179
|
-
end)
|
|
180
289
|
end
|
|
181
290
|
return mainSelectedUnitChangeEvent
|
|
182
291
|
end}
|
|
183
292
|
)
|
|
293
|
+
__TS__ObjectDefineProperty(
|
|
294
|
+
LocalClient,
|
|
295
|
+
"isInTargetingMode",
|
|
296
|
+
{get = function(self)
|
|
297
|
+
return actualizeTargetingModeState()
|
|
298
|
+
end}
|
|
299
|
+
)
|
|
300
|
+
LocalClient.targetingModeEnterEvent = targetingModeEnterEvent
|
|
301
|
+
LocalClient.targetingModeLeaveEvent = targetingModeLeaveEvent
|
|
302
|
+
LocalClient.targetingModeStateChangeEvent = targetingModeStateChangeEvent
|
|
184
303
|
LocalClient.onDisconnect = __TS__New(
|
|
185
304
|
TriggerEvent,
|
|
186
305
|
function(trigger)
|
|
@@ -188,11 +307,132 @@ LocalClient.onDisconnect = __TS__New(
|
|
|
188
307
|
end,
|
|
189
308
|
function() return end
|
|
190
309
|
)
|
|
310
|
+
local function actualizeMainSelectedUnit()
|
|
311
|
+
Unit:getSelectionOf(Player["local"], localSelectedUnits)
|
|
312
|
+
local selectionCount = #localSelectedUnits
|
|
313
|
+
for i = 1, selectionCount do
|
|
314
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = i
|
|
315
|
+
end
|
|
316
|
+
tableSort(localSelectedUnits, compareUnitsSelectionPriority)
|
|
317
|
+
local mainSelectedUnit
|
|
318
|
+
if selectionCount <= 1 then
|
|
319
|
+
mainSelectedUnit = localSelectedUnits[1]
|
|
320
|
+
else
|
|
321
|
+
local hp, maxHp = parsePortraitValues(portraitHpText)
|
|
322
|
+
local mana, maxMana = parsePortraitValues(portraitManaText)
|
|
323
|
+
if maxHp >= 0 then
|
|
324
|
+
local healthMatch
|
|
325
|
+
for i = 1, selectionCount do
|
|
326
|
+
local unit = localSelectedUnits[i]
|
|
327
|
+
if matchesPortraitHealth(unit, hp, maxHp) then
|
|
328
|
+
if matchesPortraitMana(unit, mana, maxMana) then
|
|
329
|
+
mainSelectedUnit = unit
|
|
330
|
+
break
|
|
331
|
+
end
|
|
332
|
+
if healthMatch == nil then
|
|
333
|
+
healthMatch = unit
|
|
334
|
+
end
|
|
335
|
+
end
|
|
336
|
+
end
|
|
337
|
+
if mainSelectedUnit == nil then
|
|
338
|
+
mainSelectedUnit = healthMatch
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
if mainSelectedUnit == nil and previousMainSelectedUnit ~= nil then
|
|
342
|
+
for i = 1, selectionCount do
|
|
343
|
+
if localSelectedUnits[i] == previousMainSelectedUnit then
|
|
344
|
+
mainSelectedUnit = previousMainSelectedUnit
|
|
345
|
+
break
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
if mainSelectedUnit == nil then
|
|
350
|
+
mainSelectedUnit = localSelectedUnits[1]
|
|
351
|
+
end
|
|
352
|
+
end
|
|
353
|
+
for i = 1, selectionCount do
|
|
354
|
+
indexByLocalSelectedUnit[localSelectedUnits[i]] = nil
|
|
355
|
+
localSelectedUnits[i] = nil
|
|
356
|
+
end
|
|
357
|
+
currentMainSelectedUnit = mainSelectedUnit
|
|
358
|
+
if mainSelectedUnitChangeEvent ~= nil and mainSelectedUnit ~= previousMainSelectedUnit then
|
|
359
|
+
local previousPreviousMainSelectedUnit = previousMainSelectedUnit
|
|
360
|
+
previousMainSelectedUnit = mainSelectedUnit
|
|
361
|
+
Event.invoke(mainSelectedUnitChangeEvent, previousPreviousMainSelectedUnit, previousMainSelectedUnit)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
local commandButtons = array(
|
|
365
|
+
12,
|
|
366
|
+
function(i) return Frame:byOrigin(ORIGIN_FRAME_COMMAND_BUTTON, i) end
|
|
367
|
+
)
|
|
368
|
+
local commandButtonContainers = array(
|
|
369
|
+
12,
|
|
370
|
+
function(i) return Frame:byName("CommandButton_" .. tostring(i)) end
|
|
371
|
+
)
|
|
372
|
+
local function getTargetingModeState()
|
|
373
|
+
for ____, container in ipairs(commandButtonContainers) do
|
|
374
|
+
if container.hideCounter > 0 then
|
|
375
|
+
setFrameVisible(container.handle, true)
|
|
376
|
+
end
|
|
377
|
+
end
|
|
378
|
+
local targeting = false
|
|
379
|
+
local failed = false
|
|
380
|
+
local failure
|
|
381
|
+
do
|
|
382
|
+
local function ____catch(____error)
|
|
383
|
+
failed = true
|
|
384
|
+
failure = ____error
|
|
385
|
+
end
|
|
386
|
+
local ____try, ____hasReturned = pcall(function()
|
|
387
|
+
targeting = commandButtons[12].visible
|
|
388
|
+
for i = 0, 10 do
|
|
389
|
+
if commandButtons[i + 1].visible then
|
|
390
|
+
targeting = false
|
|
391
|
+
break
|
|
392
|
+
end
|
|
393
|
+
end
|
|
394
|
+
end)
|
|
395
|
+
if not ____try then
|
|
396
|
+
____catch(____hasReturned)
|
|
397
|
+
end
|
|
398
|
+
end
|
|
399
|
+
for ____, container in ipairs(commandButtonContainers) do
|
|
400
|
+
if container.hideCounter > 0 then
|
|
401
|
+
setFrameVisible(container.handle, false)
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
if failed then
|
|
405
|
+
error(failure, 0)
|
|
406
|
+
end
|
|
407
|
+
return targeting
|
|
408
|
+
end
|
|
409
|
+
actualizeTargetingModeState = function()
|
|
410
|
+
if getTargetingModeState() then
|
|
411
|
+
if not lastTargetingModeState then
|
|
412
|
+
lastTargetingModeState = true
|
|
413
|
+
Event.invoke(targetingModeEnterEvent)
|
|
414
|
+
Event.invoke(targetingModeStateChangeEvent)
|
|
415
|
+
end
|
|
416
|
+
return true
|
|
417
|
+
end
|
|
418
|
+
if lastTargetingModeState then
|
|
419
|
+
lastTargetingModeState = false
|
|
420
|
+
Event.invoke(targetingModeLeaveEvent)
|
|
421
|
+
Event.invoke(targetingModeStateChangeEvent)
|
|
422
|
+
end
|
|
423
|
+
return false
|
|
424
|
+
end
|
|
425
|
+
Timer.onPeriod[1]:addListener(actualizePortraitFrames)
|
|
426
|
+
Timer.onPeriod[1 / 64]:addListener(function()
|
|
427
|
+
actualizeMainSelectedUnit()
|
|
428
|
+
actualizeTargetingModeState()
|
|
429
|
+
end)
|
|
191
430
|
warpack.afterMapInit(function()
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
)
|
|
431
|
+
local isDE = loadTOCFile(deTocPath)
|
|
432
|
+
local isHD = not isDE and loadTOCFile(hdTocPath)
|
|
433
|
+
rawset(____exports.LocalClient, "isDE", isDE)
|
|
434
|
+
rawset(____exports.LocalClient, "isHD", isHD)
|
|
435
|
+
rawset(____exports.LocalClient, "isSD", not isDE and not isHD)
|
|
436
|
+
rawset(____exports.LocalClient, "graphicsMode", isDE and 2 or (isHD and 1 or 0))
|
|
197
437
|
end)
|
|
198
438
|
return ____exports
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____records = require("utility.records")
|
|
3
|
+
local invertRecord = ____records.invertRecord
|
|
4
|
+
local stringByEquipmentType = {
|
|
5
|
+
[0] = "None",
|
|
6
|
+
[1] = "Head",
|
|
7
|
+
[2] = "Chest",
|
|
8
|
+
[3] = "Gloves",
|
|
9
|
+
[4] = "Boots",
|
|
10
|
+
[5] = "Ring",
|
|
11
|
+
[6] = "Primary",
|
|
12
|
+
[7] = "Offhand",
|
|
13
|
+
[8] = "Trinket"
|
|
14
|
+
}
|
|
15
|
+
local equipmentTypeByString = invertRecord(stringByEquipmentType)
|
|
16
|
+
---
|
|
17
|
+
-- @internal For use by internal systems only.
|
|
18
|
+
____exports.equipmentTypeToString = function(equipmentType)
|
|
19
|
+
return stringByEquipmentType[equipmentType]
|
|
20
|
+
end
|
|
21
|
+
---
|
|
22
|
+
-- @internal For use by internal systems only.
|
|
23
|
+
____exports.stringToEquipmentType = function(____string)
|
|
24
|
+
return equipmentTypeByString[____string] or 0
|
|
25
|
+
end
|
|
26
|
+
return ____exports
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
export declare const enum ItemClass {
|
|
3
|
+
PERMANENT = "Permanent",
|
|
4
|
+
CHARGED = "Charged",
|
|
5
|
+
POWER_UP = "PowerUp",
|
|
6
|
+
ARTIFACT = "Artifact",
|
|
7
|
+
PURCHASABLE = "Purchasable",
|
|
8
|
+
CAMPAIGN = "Campaign",
|
|
9
|
+
MISCELLANEOUS = "Miscellaneous",
|
|
10
|
+
EQUIPMENT = "Equipment"
|
|
11
|
+
}
|