warscript 0.0.1-dev.0efff64 → 0.0.1-dev.10e558e
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 +16 -2
- package/core/types/frame.lua +81 -66
- package/core/types/handle.lua +9 -9
- 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 +13 -8
- package/core/types/tileCell.d.ts +7 -2
- package/core/types/tileCell.lua +11 -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/engine/ability-type-extended-tooltip.d.ts +8 -0
- package/engine/ability-type-extended-tooltip.lua +44 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
- package/engine/behaviour/ability/damage.d.ts +1 -0
- package/engine/behaviour/ability/damage.lua +12 -14
- package/engine/behaviour/ability/emulate-impact.lua +1 -1
- 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 +2 -0
- package/engine/behaviour/ability.lua +25 -0
- package/engine/behaviour/unit.d.ts +1 -0
- package/engine/behaviour/unit.lua +1 -0
- package/engine/buff.d.ts +12 -10
- package/engine/buff.lua +64 -16
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +7 -0
- package/engine/internal/ability.lua +63 -33
- 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 -1
- package/engine/internal/item.lua +146 -20
- 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/health-regeneration-rate-increase.d.ts +2 -0
- package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
- 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/bonus.d.ts +8 -0
- package/engine/internal/unit/bonus.lua +69 -5
- 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/ignore-events-items.lua +10 -1
- 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+ability.d.ts +2 -1
- package/engine/internal/unit+ability.lua +63 -2
- 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 +13 -13
- package/engine/internal/unit.d.ts +2 -10
- package/engine/internal/unit.lua +53 -100
- package/engine/local-client.d.ts +21 -0
- package/engine/local-client.lua +242 -57
- 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/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/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/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-passive-with-cooldown.d.ts +23 -0
- package/engine/object-data/entry/ability-type/blank-passive-with-cooldown.lua +112 -0
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -0
- package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
- package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
- package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.d.ts +14 -0
- package/engine/object-data/entry/ability-type/exhume-corpses.lua +40 -0
- package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
- package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
- package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
- package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/healing-modifier.d.ts +9 -0
- 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/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-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -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/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 +29 -6
- package/engine/object-data/entry/ability-type.lua +240 -45
- 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 +6 -2
- package/engine/object-data/entry/destructible-type.lua +26 -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 +57 -2
- package/engine/object-data/entry/unit-type.lua +412 -64
- 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/random.lua +1 -1
- 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/unit.d.ts +5 -1
- package/engine/unit.lua +5 -1
- package/event.d.ts +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +37 -14
- package/package.json +2 -22
- package/utility/arrays.d.ts +7 -1
- package/utility/arrays.lua +17 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/engine/internal/unit/item.lua +0 -78
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Unit } from "./unit";
|
|
3
|
+
import "./unit/equipment-inventory";
|
|
3
4
|
declare module "./item" {
|
|
4
5
|
interface Item {
|
|
6
|
+
/** The unit carrying the item in any of its inventories (regular, extended or equipment), if any. */
|
|
5
7
|
readonly owner?: Unit;
|
|
6
8
|
}
|
|
7
9
|
}
|
|
@@ -5,15 +5,33 @@ local ____item = require("engine.internal.item")
|
|
|
5
5
|
local Item = ____item.Item
|
|
6
6
|
local ____unit = require("engine.internal.unit")
|
|
7
7
|
local Unit = ____unit.Unit
|
|
8
|
-
|
|
8
|
+
require("engine.internal.unit.equipment-inventory")
|
|
9
|
+
local ____owner_2Dcache = require("engine.internal.item.owner-cache")
|
|
10
|
+
local ownerByItem = ____owner_2Dcache.ownerByItem
|
|
11
|
+
local ____item_2Dcontainer = require("engine.internal.unit.item-container")
|
|
12
|
+
local unitOwnsItem = ____item_2Dcontainer.unitOwnsItem
|
|
9
13
|
Unit.itemPickedUpEvent:addListener(
|
|
10
|
-
|
|
14
|
+
999999,
|
|
11
15
|
function(unit, item)
|
|
12
16
|
ownerByItem[item] = unit
|
|
13
17
|
end
|
|
14
18
|
)
|
|
19
|
+
Unit.itemEquippedEvent:addListener(
|
|
20
|
+
999999,
|
|
21
|
+
function(unit, item)
|
|
22
|
+
ownerByItem[item] = unit
|
|
23
|
+
end
|
|
24
|
+
)
|
|
25
|
+
Unit.itemUnequippedEvent:addListener(
|
|
26
|
+
999999,
|
|
27
|
+
function(unit, item)
|
|
28
|
+
if not unitOwnsItem(unit.handle, item.handle) then
|
|
29
|
+
ownerByItem[item] = nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
)
|
|
15
33
|
Unit.itemDroppedEvent:addListener(
|
|
16
|
-
|
|
34
|
+
999999,
|
|
17
35
|
function(unit, item)
|
|
18
36
|
ownerByItem[item] = nil
|
|
19
37
|
end
|
|
@@ -22,7 +40,12 @@ __TS__ObjectDefineProperty(
|
|
|
22
40
|
Item.prototype,
|
|
23
41
|
"owner",
|
|
24
42
|
{get = function(self)
|
|
25
|
-
|
|
43
|
+
local owner = ownerByItem[self]
|
|
44
|
+
if owner ~= nil and not unitOwnsItem(owner.handle, self.handle) then
|
|
45
|
+
ownerByItem[self] = nil
|
|
46
|
+
return nil
|
|
47
|
+
end
|
|
48
|
+
return owner
|
|
26
49
|
end}
|
|
27
50
|
)
|
|
28
51
|
return ____exports
|
|
@@ -2,19 +2,37 @@
|
|
|
2
2
|
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
3
3
|
import { Color } from "../../core/types/color";
|
|
4
4
|
import { Event } from "../../event";
|
|
5
|
+
import { PlayerColor } from "../../core/types/playerColor";
|
|
6
|
+
import { EquipmentType } from "../object-data/auxiliary/equipment-type";
|
|
7
|
+
import { ItemTag } from "../object-data/auxiliary/item-tag";
|
|
5
8
|
import { ReadonlyRect } from "../../core/types/rect";
|
|
6
9
|
import { ItemAbility } from "./ability";
|
|
7
10
|
import { AbilityTypeId } from "../object-data/entry/ability-type";
|
|
8
11
|
import type { ItemTypeId } from "../object-data/entry/item-type";
|
|
9
12
|
type DefenseType = 0 | 1 | 2 | 3 | 4 | 5;
|
|
10
13
|
declare const enum ItemPropertyKey {
|
|
11
|
-
ABILITIES = 100
|
|
14
|
+
ABILITIES = 100,
|
|
15
|
+
DEATH_TRIGGER = 101,
|
|
16
|
+
COLOR = 102
|
|
12
17
|
}
|
|
13
18
|
export declare class Item extends Handle<jitem> {
|
|
14
19
|
private readonly [ItemPropertyKey.ABILITIES];
|
|
20
|
+
private readonly [ItemPropertyKey.DEATH_TRIGGER];
|
|
21
|
+
private [ItemPropertyKey.COLOR]?;
|
|
15
22
|
constructor(handle: jitem);
|
|
16
23
|
protected onDestroy(): HandleDestructor;
|
|
17
24
|
static create<T extends Item>(this: typeof Item & (new (handle: jitem) => T), id: number, x: number, y: number, skinId?: number): T;
|
|
25
|
+
/** Whether the item is owned by a unit, i.e. carried in any of its inventories (regular, extended or equipment). */
|
|
26
|
+
get isOwned(): boolean;
|
|
27
|
+
/** Whether the item is carried in a unit's (regular) inventory, as opposed to its extended or equipment inventory. */
|
|
28
|
+
get isInInventory(): boolean;
|
|
29
|
+
get isInExtendedInventory(): boolean;
|
|
30
|
+
get isInEquipmentInventory(): boolean;
|
|
31
|
+
get equipmentType(): EquipmentType;
|
|
32
|
+
get tag(): ItemTag;
|
|
33
|
+
get color(): PlayerColor;
|
|
34
|
+
set color(color: PlayerColor);
|
|
35
|
+
static getRandomTypeId(level: number, equipmentType?: EquipmentType | undefined, tag?: ItemTag, itemType?: jitemtype): ItemTypeId | undefined;
|
|
18
36
|
get typeId(): ItemTypeId;
|
|
19
37
|
set skinId(v: number);
|
|
20
38
|
get skinId(): number;
|
|
@@ -78,6 +96,7 @@ export declare class Item extends Handle<jitem> {
|
|
|
78
96
|
static getInRect(rect: ReadonlyRect): Item[];
|
|
79
97
|
static get onCreate(): Event<[Item]>;
|
|
80
98
|
static get destroyEvent(): Event<[Item]>;
|
|
99
|
+
static readonly deathEvent: Event<[Item]>;
|
|
81
100
|
static readonly chargesChangedEvent: Event<[Item]>;
|
|
82
101
|
}
|
|
83
102
|
export {};
|
package/engine/internal/item.lua
CHANGED
|
@@ -13,6 +13,8 @@ local ____color = require("core.types.color")
|
|
|
13
13
|
local Color = ____color.Color
|
|
14
14
|
local ____event = require("event")
|
|
15
15
|
local Event = ____event.Event
|
|
16
|
+
local ____playerColor = require("core.types.playerColor")
|
|
17
|
+
local PlayerColor = ____playerColor.PlayerColor
|
|
16
18
|
local ____rect = require("core.types.rect")
|
|
17
19
|
local Rect = ____rect.Rect
|
|
18
20
|
local ____ability = require("engine.internal.ability")
|
|
@@ -27,37 +29,58 @@ local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slo
|
|
|
27
29
|
local SLOT_FILLER_ITEM_TYPE_ID = ____add_2Ditem_2Dto_2Dslot.SLOT_FILLER_ITEM_TYPE_ID
|
|
28
30
|
local ____vec2 = require("math.vec2")
|
|
29
31
|
local distance = ____vec2.distance
|
|
30
|
-
local
|
|
31
|
-
local
|
|
32
|
-
local
|
|
33
|
-
local
|
|
34
|
-
local
|
|
35
|
-
local
|
|
36
|
-
local
|
|
37
|
-
local
|
|
38
|
-
local removeItem = RemoveItem
|
|
39
|
-
local getHandleId = GetHandleId
|
|
40
|
-
local setRect = SetRect
|
|
32
|
+
local ____timer = require("core.types.timer")
|
|
33
|
+
local Timer = ____timer.Timer
|
|
34
|
+
local chooseRandomItemExWithFilter = ChooseRandomItemExWithFilter
|
|
35
|
+
local condition = Condition
|
|
36
|
+
local convertEquipmentType = ConvertEquipmentType
|
|
37
|
+
local convertItemTag = ConvertItemTag
|
|
38
|
+
local createTrigger = CreateTrigger
|
|
39
|
+
local destroyTrigger = DestroyTrigger
|
|
41
40
|
local enumItemsInRect = EnumItemsInRect
|
|
41
|
+
local getAbilityId = BlzGetAbilityId
|
|
42
42
|
local getEnumItem = GetEnumItem
|
|
43
|
+
local getHandleId = GetHandleId
|
|
44
|
+
local getItemAbility = BlzGetItemAbility
|
|
45
|
+
local getItemAbilityByIndex = BlzGetItemAbilityByIndex
|
|
46
|
+
local getItemBooleanField = BlzGetItemBooleanField
|
|
47
|
+
local getItemCharges = GetItemCharges
|
|
48
|
+
local getItemEquipmentType = GetItemEquipmentType
|
|
49
|
+
local getItemIntegerField = BlzGetItemIntegerField
|
|
50
|
+
local getItemTag = GetItemTag
|
|
43
51
|
local getItemTypeId = GetItemTypeId
|
|
44
52
|
local getItemX = GetItemX
|
|
45
53
|
local getItemY = GetItemY
|
|
46
|
-
local
|
|
54
|
+
local getManipulatedItem = GetManipulatedItem
|
|
55
|
+
local getTriggerWidget = GetTriggerWidget
|
|
56
|
+
local getWidgetLife = GetWidgetLife
|
|
57
|
+
local isItemEquipped = IsItemEquipped
|
|
58
|
+
local isItemInBag = IsItemInBag
|
|
59
|
+
local isItemOwned = IsItemOwned
|
|
60
|
+
local isItemPawnable = IsItemPawnable
|
|
61
|
+
local isItemPowerup = IsItemPowerup
|
|
62
|
+
local itemAddAbility = BlzItemAddAbility
|
|
63
|
+
local itemRemoveAbility = BlzItemRemoveAbility
|
|
64
|
+
local loadItemHandle = LoadItemHandle
|
|
65
|
+
local removeItem = RemoveItem
|
|
66
|
+
local saveWidgetHandle = SaveWidgetHandle
|
|
67
|
+
local setItemBooleanField = BlzSetItemBooleanField
|
|
47
68
|
local setItemCharges = SetItemCharges
|
|
69
|
+
local setItemColor = SetItemColor
|
|
70
|
+
local setItemDropOnDeath = SetItemDropOnDeath
|
|
71
|
+
local setItemDroppable = SetItemDroppable
|
|
72
|
+
local setItemPawnable = SetItemPawnable
|
|
73
|
+
local setRect = SetRect
|
|
74
|
+
local triggerAddCondition = TriggerAddCondition
|
|
75
|
+
local triggerRegisterDeathEvent = TriggerRegisterDeathEvent
|
|
48
76
|
local unitRemoveAbility = UnitRemoveAbility
|
|
49
77
|
local unitRemoveItem = UnitRemoveItem
|
|
50
78
|
local unitUseItem = UnitUseItem
|
|
51
79
|
local unitUseItemPoint = UnitUseItemPoint
|
|
52
80
|
local unitUseItemTarget = UnitUseItemTarget
|
|
53
|
-
local setItemDropOnDeath = SetItemDropOnDeath
|
|
54
|
-
local setItemDroppable = SetItemDroppable
|
|
55
|
-
local setItemPawnable = SetItemPawnable
|
|
56
|
-
local isItemPawnable = IsItemPawnable
|
|
57
|
-
local getItemIntegerField = BlzGetItemIntegerField
|
|
58
|
-
local setItemBooleanField = BlzSetItemBooleanField
|
|
59
|
-
local getItemBooleanField = BlzGetItemBooleanField
|
|
60
81
|
local tableRemove = table.remove
|
|
82
|
+
local itemChargesChangeEvent = __TS__New(Event)
|
|
83
|
+
local itemDeathEvent = __TS__New(Event)
|
|
61
84
|
_G.SetItemCharges = function(whichItem, charges)
|
|
62
85
|
setItemCharges(whichItem, charges)
|
|
63
86
|
invoke(
|
|
@@ -137,6 +160,25 @@ local function collectIntoTargetRange()
|
|
|
137
160
|
targetCollectionNextIndex = targetCollectionNextIndex + 1
|
|
138
161
|
end
|
|
139
162
|
end
|
|
163
|
+
local hashtable = InitHashtable()
|
|
164
|
+
local deathTriggerCondition = condition(function()
|
|
165
|
+
saveWidgetHandle(
|
|
166
|
+
hashtable,
|
|
167
|
+
1,
|
|
168
|
+
1,
|
|
169
|
+
getTriggerWidget()
|
|
170
|
+
)
|
|
171
|
+
local item = ____exports.Item:of(loadItemHandle(hashtable, 1, 1))
|
|
172
|
+
if item ~= nil then
|
|
173
|
+
invoke(itemDeathEvent, item)
|
|
174
|
+
end
|
|
175
|
+
end)
|
|
176
|
+
itemDeathEvent:addListener(
|
|
177
|
+
999999,
|
|
178
|
+
function(item)
|
|
179
|
+
Timer:run(item, "destroy")
|
|
180
|
+
end
|
|
181
|
+
)
|
|
140
182
|
____exports.Item = __TS__Class()
|
|
141
183
|
local Item = ____exports.Item
|
|
142
184
|
Item.name = "Item"
|
|
@@ -144,6 +186,10 @@ __TS__ClassExtends(Item, Handle)
|
|
|
144
186
|
function Item.prototype.____constructor(self, handle)
|
|
145
187
|
Handle.prototype.____constructor(self, handle)
|
|
146
188
|
self[100] = doAbilityAction(handle, getItemAbilities, self)
|
|
189
|
+
local deathTrigger = createTrigger()
|
|
190
|
+
triggerRegisterDeathEvent(deathTrigger, handle)
|
|
191
|
+
triggerAddCondition(deathTrigger, deathTriggerCondition)
|
|
192
|
+
self[101] = deathTrigger
|
|
147
193
|
end
|
|
148
194
|
function Item.prototype.onDestroy(self)
|
|
149
195
|
local owner = self.owner
|
|
@@ -155,11 +201,27 @@ function Item.prototype.onDestroy(self)
|
|
|
155
201
|
abilities[i]:destroy()
|
|
156
202
|
end
|
|
157
203
|
removeItem(self.handle)
|
|
204
|
+
destroyTrigger(self[101])
|
|
158
205
|
return Handle.prototype.onDestroy(self)
|
|
159
206
|
end
|
|
160
207
|
function Item.create(self, id, x, y, skinId)
|
|
161
208
|
return self:of(BlzCreateItemWithSkin(id, x, y, skinId or id))
|
|
162
209
|
end
|
|
210
|
+
function Item.getRandomTypeId(self, level, equipmentType, tag, itemType)
|
|
211
|
+
if tag == nil then
|
|
212
|
+
tag = 8
|
|
213
|
+
end
|
|
214
|
+
if itemType == nil then
|
|
215
|
+
itemType = ITEM_TYPE_ANY
|
|
216
|
+
end
|
|
217
|
+
local id = chooseRandomItemExWithFilter(
|
|
218
|
+
itemType,
|
|
219
|
+
level,
|
|
220
|
+
convertEquipmentType(equipmentType or 9),
|
|
221
|
+
convertItemTag(tag)
|
|
222
|
+
)
|
|
223
|
+
return id ~= 0 and id or nil
|
|
224
|
+
end
|
|
163
225
|
function Item.prototype.consumeCharge(self)
|
|
164
226
|
return self:consumeCharges(1)
|
|
165
227
|
end
|
|
@@ -244,6 +306,70 @@ function Item.getInRect(self, rect)
|
|
|
244
306
|
enumItemsInRect(rect.handle, nil, collectIntoTarget)
|
|
245
307
|
return targetCollection
|
|
246
308
|
end
|
|
309
|
+
__TS__SetDescriptor(
|
|
310
|
+
Item.prototype,
|
|
311
|
+
"isOwned",
|
|
312
|
+
{get = function(self)
|
|
313
|
+
local handle = self.handle
|
|
314
|
+
return isItemOwned(handle) or isItemInBag(handle) or isItemEquipped(handle)
|
|
315
|
+
end},
|
|
316
|
+
true
|
|
317
|
+
)
|
|
318
|
+
__TS__SetDescriptor(
|
|
319
|
+
Item.prototype,
|
|
320
|
+
"isInInventory",
|
|
321
|
+
{get = function(self)
|
|
322
|
+
local handle = self.handle
|
|
323
|
+
return isItemOwned(handle) and not isItemInBag(handle) and not isItemEquipped(handle)
|
|
324
|
+
end},
|
|
325
|
+
true
|
|
326
|
+
)
|
|
327
|
+
__TS__SetDescriptor(
|
|
328
|
+
Item.prototype,
|
|
329
|
+
"isInExtendedInventory",
|
|
330
|
+
{get = function(self)
|
|
331
|
+
return isItemInBag(self.handle)
|
|
332
|
+
end},
|
|
333
|
+
true
|
|
334
|
+
)
|
|
335
|
+
__TS__SetDescriptor(
|
|
336
|
+
Item.prototype,
|
|
337
|
+
"isInEquipmentInventory",
|
|
338
|
+
{get = function(self)
|
|
339
|
+
return isItemEquipped(self.handle)
|
|
340
|
+
end},
|
|
341
|
+
true
|
|
342
|
+
)
|
|
343
|
+
__TS__SetDescriptor(
|
|
344
|
+
Item.prototype,
|
|
345
|
+
"equipmentType",
|
|
346
|
+
{get = function(self)
|
|
347
|
+
return getHandleId(getItemEquipmentType(self.handle))
|
|
348
|
+
end},
|
|
349
|
+
true
|
|
350
|
+
)
|
|
351
|
+
__TS__SetDescriptor(
|
|
352
|
+
Item.prototype,
|
|
353
|
+
"tag",
|
|
354
|
+
{get = function(self)
|
|
355
|
+
return getHandleId(getItemTag(self.handle))
|
|
356
|
+
end},
|
|
357
|
+
true
|
|
358
|
+
)
|
|
359
|
+
__TS__SetDescriptor(
|
|
360
|
+
Item.prototype,
|
|
361
|
+
"color",
|
|
362
|
+
{
|
|
363
|
+
get = function(self)
|
|
364
|
+
return self[102] or PlayerColor.red
|
|
365
|
+
end,
|
|
366
|
+
set = function(self, color)
|
|
367
|
+
setItemColor(self.handle, color.handle)
|
|
368
|
+
self[102] = color
|
|
369
|
+
end
|
|
370
|
+
},
|
|
371
|
+
true
|
|
372
|
+
)
|
|
247
373
|
__TS__SetDescriptor(
|
|
248
374
|
Item.prototype,
|
|
249
375
|
"typeId",
|
|
@@ -635,8 +761,8 @@ __TS__ObjectDefineProperty(
|
|
|
635
761
|
return self.onDestroyEvent
|
|
636
762
|
end}
|
|
637
763
|
)
|
|
764
|
+
Item.deathEvent = itemDeathEvent
|
|
638
765
|
Item.chargesChangedEvent = itemChargesChangeEvent
|
|
639
|
-
local getManipulatedItem = GetManipulatedItem
|
|
640
766
|
local trigger = CreateTrigger()
|
|
641
767
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_PICKUP_ITEM)
|
|
642
768
|
TriggerAddAction(
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
---
|
|
3
|
+
-- @internal The original natives, captured before `unit+ability` wraps them to report
|
|
4
|
+
-- ability level changes. For internal level juggling that must not be reported.
|
|
5
|
+
____exports.rawSetUnitAbilityLevel = SetUnitAbilityLevel
|
|
6
|
+
---
|
|
7
|
+
-- @internal
|
|
8
|
+
____exports.rawIncUnitAbilityLevel = IncUnitAbilityLevel
|
|
9
|
+
---
|
|
10
|
+
-- @internal
|
|
11
|
+
____exports.rawDecUnitAbilityLevel = DecUnitAbilityLevel
|
|
12
|
+
return ____exports
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____healing_2Dward_2Daura = require("engine.object-data.entry.ability-type.healing-ward-aura")
|
|
3
|
+
local HealingWardAuraAbilityType = ____healing_2Dward_2Daura.HealingWardAuraAbilityType
|
|
4
|
+
local ____item_2Dlife_2Dregeneration = require("engine.object-data.entry.ability-type.item-life-regeneration")
|
|
5
|
+
local ItemLifeRegenerationAbilityType = ____item_2Dlife_2Dregeneration.ItemLifeRegenerationAbilityType
|
|
6
|
+
local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
|
|
7
|
+
local combatClassificationsOf = ____combat_2Dclassification.combatClassificationsOf
|
|
8
|
+
local function createHealthRegenerationDummyAbilityType(healthRegeneration)
|
|
9
|
+
local abilityType = ItemLifeRegenerationAbilityType:create()
|
|
10
|
+
abilityType.isInternal = true
|
|
11
|
+
abilityType.isButtonVisible = false
|
|
12
|
+
abilityType.healthRegeneration = healthRegeneration
|
|
13
|
+
return abilityType.id
|
|
14
|
+
end
|
|
15
|
+
---
|
|
16
|
+
-- @internal For use by internal systems. The ability at index `i` regenerates `2^i` hit
|
|
17
|
+
-- points per second; together they compose any value from 0 to 1023.
|
|
18
|
+
____exports.HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_IDS = compiletime(function()
|
|
19
|
+
local abilityTypeIds = {}
|
|
20
|
+
for i = 0, 9 do
|
|
21
|
+
abilityTypeIds[i + 1] = createHealthRegenerationDummyAbilityType(1 << i)
|
|
22
|
+
end
|
|
23
|
+
return abilityTypeIds
|
|
24
|
+
end)
|
|
25
|
+
---
|
|
26
|
+
-- @internal For use by internal systems.
|
|
27
|
+
____exports.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE = -1024
|
|
28
|
+
---
|
|
29
|
+
-- @internal For use by internal systems. Shifts negative values into the positive range.
|
|
30
|
+
____exports.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_ABILITY_TYPE_ID = compiletime(function() return createHealthRegenerationDummyAbilityType(____exports.HEALTH_REGENERATION_RATE_DECREASE_DUMMY_VALUE) end)
|
|
31
|
+
---
|
|
32
|
+
-- @internal For use by internal systems. Holds the fractional remainder; being an aura,
|
|
33
|
+
-- it accepts field writes but applies with the usual aura delay.
|
|
34
|
+
____exports.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
35
|
+
local abilityType = HealingWardAuraAbilityType:create()
|
|
36
|
+
abilityType.isInternal = true
|
|
37
|
+
abilityType.isButtonVisible = false
|
|
38
|
+
abilityType.healthRegeneration = 0
|
|
39
|
+
abilityType.isHealthRegenerationPercentage = false
|
|
40
|
+
abilityType.allowedTargetCombatClassifications = combatClassificationsOf(4096)
|
|
41
|
+
abilityType.buffTypeIds = {}
|
|
42
|
+
abilityType.targetEffectPresets = {}
|
|
43
|
+
return abilityType.id
|
|
44
|
+
end)
|
|
45
|
+
---
|
|
46
|
+
-- @internal For use by internal systems.
|
|
47
|
+
____exports.FRACTIONAL_HEALTH_REGENERATION_RATE_INCREASE_ABILITY_FIELD = ABILITY_RLF_AMOUNT_OF_HIT_POINTS_REGENERATED
|
|
48
|
+
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
|
|
@@ -15,6 +15,7 @@ export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
|
|
|
15
15
|
export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
|
|
16
16
|
export type UnitEvasionProbabilityBonusId = UnitBonusId<"evasionProbability">;
|
|
17
17
|
export type UnitManaRegenerationRateFactorBonusId = UnitBonusId<"manaRegenerationRateFactor">;
|
|
18
|
+
export type UnitHealthRegenerationRateBonusId = UnitBonusId<"healthRegenerationRate">;
|
|
18
19
|
export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
19
20
|
abilityTypeId: AbilityTypeId;
|
|
20
21
|
field: jabilityintegerlevelfield;
|
|
@@ -26,6 +27,11 @@ export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
|
26
27
|
} | {
|
|
27
28
|
abilityTypeId?: undefined;
|
|
28
29
|
valueByUnit: LuaMap<Unit, number>;
|
|
30
|
+
apply?: undefined;
|
|
31
|
+
} | {
|
|
32
|
+
abilityTypeId?: undefined;
|
|
33
|
+
valueByUnit?: undefined;
|
|
34
|
+
apply: (this: void, unitHandle: junit, value: number) => void;
|
|
29
35
|
}) & {
|
|
30
36
|
reduce: (this: void, array: number[]) => number;
|
|
31
37
|
initialValue: number;
|
|
@@ -42,6 +48,8 @@ export declare namespace UnitBonusType {
|
|
|
42
48
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
43
49
|
const EVASION_PROBABILITY: UnitBonusType<UnitEvasionProbabilityBonusId>;
|
|
44
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>;
|
|
45
53
|
}
|
|
46
54
|
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
47
55
|
export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
|