warscript 0.0.1-dev.6745db1 → 0.0.1-dev.685e1bc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attributes.d.ts +1 -0
- package/attributes.lua +9 -0
- package/core/types/frame.lua +61 -10
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +17 -1
- package/core/types/player.lua +67 -23
- package/core/types/playerCamera.lua +44 -0
- package/core/types/sound.lua +1 -1
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -2
- package/core/types/timer.lua +22 -2
- package/decl/native.d.ts +2 -2
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +199 -65
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +31 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
- package/engine/behaviour/unit/stun-immunity.lua +17 -7
- package/engine/behaviour/unit.d.ts +15 -5
- package/engine/behaviour/unit.lua +126 -22
- package/engine/buff.d.ts +65 -21
- package/engine/buff.lua +362 -179
- package/engine/internal/ability.d.ts +3 -1
- package/engine/internal/ability.lua +41 -24
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item.d.ts +11 -14
- package/engine/internal/item.lua +76 -70
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +14 -14
- package/engine/internal/unit/ability.lua +72 -45
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- 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+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +51 -20
- package/engine/internal/unit.d.ts +17 -21
- package/engine/internal/unit.lua +170 -195
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +86 -1
- 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/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- 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/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-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.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.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +88 -5
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +4 -0
- package/engine/object-data/entry/unit-type.lua +76 -32
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +12 -4
- package/engine/object-field.lua +273 -126
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -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/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +3 -2
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/objutil/object.lua +1 -1
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +11 -2
- package/utility/lua-maps.lua +33 -2
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
-
import { Handle } from "../../core/types/handle";
|
|
2
|
+
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
3
3
|
import { Event } from "../../event";
|
|
4
4
|
import type { Item } from "../../core/types/item";
|
|
5
5
|
import type { Unit } from "./unit";
|
|
@@ -67,6 +67,7 @@ export declare class UnitAbility extends Ability {
|
|
|
67
67
|
get cooldownRemaining(): number;
|
|
68
68
|
set cooldownRemaining(cooldownRemaining: number);
|
|
69
69
|
interruptCast(): void;
|
|
70
|
+
protected onDestroy(): HandleDestructor;
|
|
70
71
|
static get onCreate(): Event<[UnitAbility]>;
|
|
71
72
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
72
73
|
}
|
|
@@ -93,6 +94,7 @@ export declare class ItemAbility extends Ability {
|
|
|
93
94
|
get cooldownRemaining(): number;
|
|
94
95
|
set cooldownRemaining(cooldownRemaining: number);
|
|
95
96
|
interruptCast(): void;
|
|
97
|
+
protected onDestroy(): HandleDestructor;
|
|
96
98
|
static get onCreate(): Event<[ItemAbility]>;
|
|
97
99
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
98
100
|
}
|
|
@@ -35,8 +35,6 @@ local getAbilityStringLevelField = BlzGetAbilityStringLevelField
|
|
|
35
35
|
local getUnitAbilityCooldownRemaining = BlzGetUnitAbilityCooldownRemaining
|
|
36
36
|
local startUnitAbilityCooldown = BlzStartUnitAbilityCooldown
|
|
37
37
|
local getHandleId = GetHandleId
|
|
38
|
-
local getItemBooleanField = BlzGetItemBooleanField
|
|
39
|
-
local setItemBooleanField = BlzSetItemBooleanField
|
|
40
38
|
local unitHideAbility = BlzUnitHideAbility
|
|
41
39
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
42
40
|
local match = string.match
|
|
@@ -232,6 +230,19 @@ ____exports.getOrderIdByAbilityTypeId = function(abilityTypeId)
|
|
|
232
230
|
local parentTypeId = availableFields[abilityTypeId]
|
|
233
231
|
return order2orderId(orders[____type(parentTypeId) == "number" and parentTypeId or abilityTypeId] or "")
|
|
234
232
|
end
|
|
233
|
+
---
|
|
234
|
+
-- @internal For use by internal systems only.
|
|
235
|
+
____exports.abilityTypeHasField = function(abilityTypeId, field)
|
|
236
|
+
field = ____type(field) == "number" and field or getHandleId(field)
|
|
237
|
+
if commonFields[field] then
|
|
238
|
+
return true
|
|
239
|
+
end
|
|
240
|
+
local id = availableFields[abilityTypeId]
|
|
241
|
+
if ____type(id) == "number" then
|
|
242
|
+
id = availableFields[id]
|
|
243
|
+
end
|
|
244
|
+
return not not (id and id[field])
|
|
245
|
+
end
|
|
235
246
|
____exports.Ability = __TS__Class()
|
|
236
247
|
local Ability = ____exports.Ability
|
|
237
248
|
Ability.name = "Ability"
|
|
@@ -247,15 +258,7 @@ function Ability.prototype.getSnapshot(self)
|
|
|
247
258
|
return nil
|
|
248
259
|
end
|
|
249
260
|
function Ability.prototype.hasField(self, field)
|
|
250
|
-
|
|
251
|
-
if commonFields[field] then
|
|
252
|
-
return true
|
|
253
|
-
end
|
|
254
|
-
local id = availableFields[self.typeId]
|
|
255
|
-
if ____type(id) == "number" then
|
|
256
|
-
id = availableFields[id]
|
|
257
|
-
end
|
|
258
|
-
return not not (id and id[field])
|
|
261
|
+
return ____exports.abilityTypeHasField(self.typeId, field)
|
|
259
262
|
end
|
|
260
263
|
function Ability.prototype.getField(self, field, level)
|
|
261
264
|
local fieldType = match(
|
|
@@ -420,6 +423,12 @@ end
|
|
|
420
423
|
function UnitAbility.prototype.interruptCast(self)
|
|
421
424
|
self.owner:interruptCast(self.typeId)
|
|
422
425
|
end
|
|
426
|
+
function UnitAbility.prototype.onDestroy(self)
|
|
427
|
+
if self.owner.state ~= 2 then
|
|
428
|
+
self.owner:removeAbility(self.typeId)
|
|
429
|
+
end
|
|
430
|
+
return UnitAbility.____super.prototype.onDestroy(self)
|
|
431
|
+
end
|
|
423
432
|
__TS__SetDescriptor(
|
|
424
433
|
UnitAbility.prototype,
|
|
425
434
|
"isDisabled",
|
|
@@ -505,12 +514,20 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
505
514
|
)
|
|
506
515
|
end
|
|
507
516
|
function ItemAbility.prototype.interruptCast(self)
|
|
508
|
-
local
|
|
509
|
-
local
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
517
|
+
local item = self.owner
|
|
518
|
+
local itemHandle = item.handle
|
|
519
|
+
local ____opt_1 = item.owner
|
|
520
|
+
local itemOwnerHandle = ____opt_1 and ____opt_1.handle
|
|
521
|
+
local cooldownRemaining = doAbilityActionForceDummy(itemHandle, itemOwnerHandle, getAbilityCooldown, self.typeId)
|
|
522
|
+
if cooldownRemaining == 0 then
|
|
523
|
+
startItemCooldown(itemHandle, itemOwnerHandle, 0.015625)
|
|
524
|
+
end
|
|
525
|
+
end
|
|
526
|
+
function ItemAbility.prototype.onDestroy(self)
|
|
527
|
+
if self.owner.state ~= 2 then
|
|
528
|
+
self.owner:removeAbility(self.typeId)
|
|
513
529
|
end
|
|
530
|
+
return ItemAbility.____super.prototype.onDestroy(self)
|
|
514
531
|
end
|
|
515
532
|
__TS__SetDescriptor(
|
|
516
533
|
ItemAbility.prototype,
|
|
@@ -526,17 +543,17 @@ __TS__SetDescriptor(
|
|
|
526
543
|
{
|
|
527
544
|
get = function(self)
|
|
528
545
|
local item = self.owner
|
|
529
|
-
local
|
|
530
|
-
local
|
|
531
|
-
local
|
|
532
|
-
return
|
|
546
|
+
local ____doAbilityActionForceDummy_6 = doAbilityActionForceDummy
|
|
547
|
+
local ____item_handle_5 = item.handle
|
|
548
|
+
local ____opt_3 = item.owner
|
|
549
|
+
return ____doAbilityActionForceDummy_6(____item_handle_5, ____opt_3 and ____opt_3.handle, getAbilityCooldown, self.typeId)
|
|
533
550
|
end,
|
|
534
551
|
set = function(self, cooldownRemaining)
|
|
535
552
|
local item = self.owner
|
|
536
|
-
local
|
|
537
|
-
local
|
|
538
|
-
local
|
|
539
|
-
|
|
553
|
+
local ____startItemCooldown_10 = startItemCooldown
|
|
554
|
+
local ____item_handle_9 = item.handle
|
|
555
|
+
local ____opt_7 = item.owner
|
|
556
|
+
____startItemCooldown_10(____item_handle_9, ____opt_7 and ____opt_7.handle, cooldownRemaining)
|
|
540
557
|
end
|
|
541
558
|
},
|
|
542
559
|
true
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____item = require("engine.internal.item")
|
|
5
|
+
local Item = ____item.Item
|
|
6
|
+
local ____item = require("engine.standard.fields.item")
|
|
7
|
+
local CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD = ____item.CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD
|
|
8
|
+
local IS_ACTIVELY_USED_ITEM_FIELD = ____item.IS_ACTIVELY_USED_ITEM_FIELD
|
|
9
|
+
__TS__ObjectDefineProperty(
|
|
10
|
+
Item.prototype,
|
|
11
|
+
"canBeSold",
|
|
12
|
+
{
|
|
13
|
+
get = function(self)
|
|
14
|
+
return CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD:getValue(self)
|
|
15
|
+
end,
|
|
16
|
+
set = function(self, value)
|
|
17
|
+
CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD:setValue(self, value)
|
|
18
|
+
end
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
__TS__ObjectDefineProperty(
|
|
22
|
+
Item.prototype,
|
|
23
|
+
"isActivelyUsed",
|
|
24
|
+
{
|
|
25
|
+
get = function(self)
|
|
26
|
+
return IS_ACTIVELY_USED_ITEM_FIELD:getValue(self)
|
|
27
|
+
end,
|
|
28
|
+
set = function(self, value)
|
|
29
|
+
IS_ACTIVELY_USED_ITEM_FIELD:setValue(self, value)
|
|
30
|
+
end
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
return ____exports
|
|
@@ -9,11 +9,11 @@ import type { ItemTypeId } from "../object-data/entry/item-type";
|
|
|
9
9
|
type DefenseType = 0 | 1 | 2 | 3 | 4 | 5;
|
|
10
10
|
declare const enum ItemPropertyKey {
|
|
11
11
|
ABILITIES = 100,
|
|
12
|
-
|
|
12
|
+
DEATH_TRIGGER = 101
|
|
13
13
|
}
|
|
14
14
|
export declare class Item extends Handle<jitem> {
|
|
15
15
|
private readonly [ItemPropertyKey.ABILITIES];
|
|
16
|
-
private readonly [ItemPropertyKey.
|
|
16
|
+
private readonly [ItemPropertyKey.DEATH_TRIGGER];
|
|
17
17
|
constructor(handle: jitem);
|
|
18
18
|
protected onDestroy(): HandleDestructor;
|
|
19
19
|
static create<T extends Item>(this: typeof Item & (new (handle: jitem) => T), id: number, x: number, y: number, skinId?: number): T;
|
|
@@ -30,22 +30,18 @@ export declare class Item extends Handle<jitem> {
|
|
|
30
30
|
get extendedTooltip(): string;
|
|
31
31
|
set iconPath(v: string);
|
|
32
32
|
get iconPath(): string;
|
|
33
|
-
set
|
|
34
|
-
get
|
|
35
|
-
set
|
|
36
|
-
get
|
|
37
|
-
set
|
|
38
|
-
get
|
|
39
|
-
set
|
|
40
|
-
get
|
|
41
|
-
set powerup(v: boolean);
|
|
42
|
-
get powerup(): boolean;
|
|
33
|
+
set dropsOnDeath(dropsOnDeath: boolean);
|
|
34
|
+
get dropsOnDeath(): boolean;
|
|
35
|
+
set canBeDropped(canBeDropped: boolean);
|
|
36
|
+
get canBeDropped(): boolean;
|
|
37
|
+
set perishes(perishes: boolean);
|
|
38
|
+
get perishes(): boolean;
|
|
39
|
+
set isPowerUp(isPowerUp: boolean);
|
|
40
|
+
get isPowerUp(): boolean;
|
|
43
41
|
get isAlive(): boolean;
|
|
44
42
|
get isDead(): boolean;
|
|
45
43
|
set isInvulnerable(isInvulnerable: boolean);
|
|
46
44
|
get isInvulnerable(): boolean;
|
|
47
|
-
set usable(v: boolean);
|
|
48
|
-
get usable(): boolean;
|
|
49
45
|
set visible(v: boolean);
|
|
50
46
|
get visible(): boolean;
|
|
51
47
|
set level(v: number);
|
|
@@ -84,6 +80,7 @@ export declare class Item extends Handle<jitem> {
|
|
|
84
80
|
static getInRect(rect: ReadonlyRect): Item[];
|
|
85
81
|
static get onCreate(): Event<[Item]>;
|
|
86
82
|
static get destroyEvent(): Event<[Item]>;
|
|
83
|
+
static readonly deathEvent: Event<[Item]>;
|
|
87
84
|
static readonly chargesChangedEvent: Event<[Item]>;
|
|
88
85
|
}
|
|
89
86
|
export {};
|
package/engine/internal/item.lua
CHANGED
|
@@ -27,7 +27,13 @@ local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slo
|
|
|
27
27
|
local SLOT_FILLER_ITEM_TYPE_ID = ____add_2Ditem_2Dto_2Dslot.SLOT_FILLER_ITEM_TYPE_ID
|
|
28
28
|
local ____vec2 = require("math.vec2")
|
|
29
29
|
local distance = ____vec2.distance
|
|
30
|
-
local
|
|
30
|
+
local ____timer = require("core.types.timer")
|
|
31
|
+
local Timer = ____timer.Timer
|
|
32
|
+
local createTrigger = CreateTrigger
|
|
33
|
+
local triggerAddCondition = TriggerAddCondition
|
|
34
|
+
local triggerRegisterDeathEvent = TriggerRegisterDeathEvent
|
|
35
|
+
local condition = Condition
|
|
36
|
+
local destroyTrigger = DestroyTrigger
|
|
31
37
|
local itemAddAbility = BlzItemAddAbility
|
|
32
38
|
local itemRemoveAbility = BlzItemRemoveAbility
|
|
33
39
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -50,6 +56,17 @@ local unitRemoveItem = UnitRemoveItem
|
|
|
50
56
|
local unitUseItem = UnitUseItem
|
|
51
57
|
local unitUseItemPoint = UnitUseItemPoint
|
|
52
58
|
local unitUseItemTarget = UnitUseItemTarget
|
|
59
|
+
local setItemDropOnDeath = SetItemDropOnDeath
|
|
60
|
+
local setItemDroppable = SetItemDroppable
|
|
61
|
+
local getItemIntegerField = BlzGetItemIntegerField
|
|
62
|
+
local setItemBooleanField = BlzSetItemBooleanField
|
|
63
|
+
local getItemBooleanField = BlzGetItemBooleanField
|
|
64
|
+
local getTriggerWidget = GetTriggerWidget
|
|
65
|
+
local saveWidgetHandle = SaveWidgetHandle
|
|
66
|
+
local loadItemHandle = LoadItemHandle
|
|
67
|
+
local tableRemove = table.remove
|
|
68
|
+
local itemChargesChangeEvent = __TS__New(Event)
|
|
69
|
+
local itemDeathEvent = __TS__New(Event)
|
|
53
70
|
_G.SetItemCharges = function(whichItem, charges)
|
|
54
71
|
setItemCharges(whichItem, charges)
|
|
55
72
|
invoke(
|
|
@@ -57,9 +74,6 @@ _G.SetItemCharges = function(whichItem, charges)
|
|
|
57
74
|
____exports.Item:of(whichItem)
|
|
58
75
|
)
|
|
59
76
|
end
|
|
60
|
-
local getItemIntegerField = BlzGetItemIntegerField
|
|
61
|
-
local setItemBooleanField = BlzSetItemBooleanField
|
|
62
|
-
local getItemBooleanField = BlzGetItemBooleanField
|
|
63
77
|
invoke = Event.invoke
|
|
64
78
|
local enumRect = Rect:create(0, 0, 0, 0).handle
|
|
65
79
|
---
|
|
@@ -132,19 +146,36 @@ local function collectIntoTargetRange()
|
|
|
132
146
|
targetCollectionNextIndex = targetCollectionNextIndex + 1
|
|
133
147
|
end
|
|
134
148
|
end
|
|
149
|
+
local hashtable = InitHashtable()
|
|
150
|
+
local deathTriggerCondition = condition(function()
|
|
151
|
+
saveWidgetHandle(
|
|
152
|
+
hashtable,
|
|
153
|
+
1,
|
|
154
|
+
1,
|
|
155
|
+
getTriggerWidget()
|
|
156
|
+
)
|
|
157
|
+
local item = ____exports.Item:of(loadItemHandle(hashtable, 1, 1))
|
|
158
|
+
if item ~= nil then
|
|
159
|
+
invoke(itemDeathEvent, item)
|
|
160
|
+
end
|
|
161
|
+
end)
|
|
162
|
+
itemDeathEvent:addListener(
|
|
163
|
+
999999,
|
|
164
|
+
function(item)
|
|
165
|
+
Timer:run(item, "destroy")
|
|
166
|
+
end
|
|
167
|
+
)
|
|
135
168
|
____exports.Item = __TS__Class()
|
|
136
169
|
local Item = ____exports.Item
|
|
137
170
|
Item.name = "Item"
|
|
138
171
|
__TS__ClassExtends(Item, Handle)
|
|
139
172
|
function Item.prototype.____constructor(self, handle)
|
|
140
173
|
Handle.prototype.____constructor(self, handle)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
end
|
|
147
|
-
self[101] = luaIndexByAbilityTypeId
|
|
174
|
+
self[100] = doAbilityAction(handle, getItemAbilities, self)
|
|
175
|
+
local deathTrigger = createTrigger()
|
|
176
|
+
triggerRegisterDeathEvent(deathTrigger, handle)
|
|
177
|
+
triggerAddCondition(deathTrigger, deathTriggerCondition)
|
|
178
|
+
self[101] = deathTrigger
|
|
148
179
|
end
|
|
149
180
|
function Item.prototype.onDestroy(self)
|
|
150
181
|
local owner = self.owner
|
|
@@ -156,6 +187,7 @@ function Item.prototype.onDestroy(self)
|
|
|
156
187
|
abilities[i]:destroy()
|
|
157
188
|
end
|
|
158
189
|
removeItem(self.handle)
|
|
190
|
+
destroyTrigger(self[101])
|
|
159
191
|
return Handle.prototype.onDestroy(self)
|
|
160
192
|
end
|
|
161
193
|
function Item.create(self, id, x, y, skinId)
|
|
@@ -196,33 +228,32 @@ function Item.prototype.addAbility(self, abilityTypeId)
|
|
|
196
228
|
if nativeAbility ~= nil then
|
|
197
229
|
local ability = ItemAbility:of(nativeAbility, abilityTypeId, self)
|
|
198
230
|
local abilities = self[100]
|
|
199
|
-
|
|
200
|
-
abilities[luaIndex] = ability
|
|
201
|
-
self[101][abilityTypeId] = luaIndex
|
|
231
|
+
abilities[#abilities + 1] = ability
|
|
202
232
|
return ability
|
|
203
233
|
end
|
|
204
234
|
return nil
|
|
205
235
|
end
|
|
206
236
|
function Item.prototype.removeAbility(self, abilityTypeId)
|
|
207
|
-
local
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
for j = luaIndex, abilityTypeIdsLength do
|
|
215
|
-
abilities[j] = abilities[j + 1]
|
|
237
|
+
local abilities = self[100]
|
|
238
|
+
for i = 1, #abilities do
|
|
239
|
+
if abilities[i].typeId == abilityTypeId then
|
|
240
|
+
local ability = abilities[i]
|
|
241
|
+
tableRemove(abilities, i)
|
|
242
|
+
ability:destroy()
|
|
243
|
+
return true
|
|
216
244
|
end
|
|
217
245
|
end
|
|
218
|
-
return
|
|
246
|
+
return doAbilityAction(self.handle, itemRemoveAbility, abilityTypeId)
|
|
219
247
|
end
|
|
220
248
|
function Item.prototype.hasAbility(self, abilityTypeId)
|
|
221
|
-
return self
|
|
249
|
+
return doAbilityAction(self.handle, getItemAbility, abilityTypeId) ~= nil
|
|
222
250
|
end
|
|
223
251
|
function Item.prototype.getAbility(self, abilityTypeId)
|
|
224
|
-
|
|
225
|
-
|
|
252
|
+
return ItemAbility:of(
|
|
253
|
+
doAbilityAction(self.handle, getItemAbility, abilityTypeId),
|
|
254
|
+
abilityTypeId,
|
|
255
|
+
self
|
|
256
|
+
)
|
|
226
257
|
end
|
|
227
258
|
function Item.getInRange(self, x, y, range)
|
|
228
259
|
targetCollection = {}
|
|
@@ -334,65 +365,55 @@ __TS__SetDescriptor(
|
|
|
334
365
|
)
|
|
335
366
|
__TS__SetDescriptor(
|
|
336
367
|
Item.prototype,
|
|
337
|
-
"
|
|
338
|
-
{
|
|
339
|
-
get = function(self)
|
|
340
|
-
return BlzGetItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
|
|
341
|
-
end,
|
|
342
|
-
set = function(self, v)
|
|
343
|
-
SetItemDropOnDeath(self.handle, v)
|
|
344
|
-
end
|
|
345
|
-
},
|
|
346
|
-
true
|
|
347
|
-
)
|
|
348
|
-
__TS__SetDescriptor(
|
|
349
|
-
Item.prototype,
|
|
350
|
-
"droppable",
|
|
368
|
+
"dropsOnDeath",
|
|
351
369
|
{
|
|
352
370
|
get = function(self)
|
|
353
|
-
return
|
|
371
|
+
return getItemBooleanField(self.handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
|
|
354
372
|
end,
|
|
355
|
-
set = function(self,
|
|
356
|
-
|
|
373
|
+
set = function(self, dropsOnDeath)
|
|
374
|
+
setItemDropOnDeath(self.handle, dropsOnDeath)
|
|
357
375
|
end
|
|
358
376
|
},
|
|
359
377
|
true
|
|
360
378
|
)
|
|
361
379
|
__TS__SetDescriptor(
|
|
362
380
|
Item.prototype,
|
|
363
|
-
"
|
|
381
|
+
"canBeDropped",
|
|
364
382
|
{
|
|
365
383
|
get = function(self)
|
|
366
|
-
return
|
|
384
|
+
return getItemBooleanField(self.handle, ITEM_BF_CAN_BE_DROPPED)
|
|
367
385
|
end,
|
|
368
|
-
set = function(self,
|
|
369
|
-
|
|
386
|
+
set = function(self, canBeDropped)
|
|
387
|
+
setItemDroppable(self.handle, canBeDropped)
|
|
370
388
|
end
|
|
371
389
|
},
|
|
372
390
|
true
|
|
373
391
|
)
|
|
374
392
|
__TS__SetDescriptor(
|
|
375
393
|
Item.prototype,
|
|
376
|
-
"
|
|
394
|
+
"perishes",
|
|
377
395
|
{
|
|
378
396
|
get = function(self)
|
|
379
397
|
return getItemBooleanField(self.handle, ITEM_BF_PERISHABLE)
|
|
380
398
|
end,
|
|
381
|
-
set = function(self,
|
|
382
|
-
|
|
399
|
+
set = function(self, perishes)
|
|
400
|
+
local handle = self.handle
|
|
401
|
+
local powerUp = isItemPowerup(handle)
|
|
402
|
+
setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
|
|
403
|
+
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
|
|
383
404
|
end
|
|
384
405
|
},
|
|
385
406
|
true
|
|
386
407
|
)
|
|
387
408
|
__TS__SetDescriptor(
|
|
388
409
|
Item.prototype,
|
|
389
|
-
"
|
|
410
|
+
"isPowerUp",
|
|
390
411
|
{
|
|
391
412
|
get = function(self)
|
|
392
413
|
return isItemPowerup(self.handle)
|
|
393
414
|
end,
|
|
394
|
-
set = function(self,
|
|
395
|
-
setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED,
|
|
415
|
+
set = function(self, isPowerUp)
|
|
416
|
+
setItemBooleanField(self.handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, isPowerUp)
|
|
396
417
|
end
|
|
397
418
|
},
|
|
398
419
|
true
|
|
@@ -426,22 +447,6 @@ __TS__SetDescriptor(
|
|
|
426
447
|
},
|
|
427
448
|
true
|
|
428
449
|
)
|
|
429
|
-
__TS__SetDescriptor(
|
|
430
|
-
Item.prototype,
|
|
431
|
-
"usable",
|
|
432
|
-
{
|
|
433
|
-
get = function(self)
|
|
434
|
-
return getItemBooleanField(self.handle, ITEM_BF_ACTIVELY_USED)
|
|
435
|
-
end,
|
|
436
|
-
set = function(self, v)
|
|
437
|
-
local handle = self.handle
|
|
438
|
-
local powerup = isItemPowerup(handle)
|
|
439
|
-
setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, v)
|
|
440
|
-
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerup)
|
|
441
|
-
end
|
|
442
|
-
},
|
|
443
|
-
true
|
|
444
|
-
)
|
|
445
450
|
__TS__SetDescriptor(
|
|
446
451
|
Item.prototype,
|
|
447
452
|
"visible",
|
|
@@ -663,6 +668,7 @@ __TS__ObjectDefineProperty(
|
|
|
663
668
|
return self.onDestroyEvent
|
|
664
669
|
end}
|
|
665
670
|
)
|
|
671
|
+
Item.deathEvent = itemDeathEvent
|
|
666
672
|
Item.chargesChangedEvent = itemChargesChangeEvent
|
|
667
673
|
local getManipulatedItem = GetManipulatedItem
|
|
668
674
|
local trigger = CreateTrigger()
|
|
@@ -74,9 +74,12 @@ ____exports.castAbility = function(nativeUnit, abilityTypeId, prepareAbility, ..
|
|
|
74
74
|
unitRemoveAbility(nativeUnit, INVENTORY_ABILITY_TYPE_ID)
|
|
75
75
|
if latestInventoryAbilityTypeId ~= 0 then
|
|
76
76
|
unitAddAbility(nativeUnit, latestInventoryAbilityTypeId)
|
|
77
|
-
for slot,
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
for slot = 0, inventorySize - 1 do
|
|
78
|
+
local nativeItem = nativeItemBySlot[slot]
|
|
79
|
+
if nativeItem ~= nil then
|
|
80
|
+
unitAddItem(nativeUnit, nativeItem)
|
|
81
|
+
unitDropItemSlot(nativeUnit, nativeItem, slot)
|
|
82
|
+
end
|
|
80
83
|
end
|
|
81
84
|
end
|
|
82
85
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
|
-
local
|
|
3
|
-
local AttributeBonusAbilityType =
|
|
2
|
+
local ____attribute_2Dbonus = require("engine.object-data.entry.ability-type.attribute-bonus")
|
|
3
|
+
local AttributeBonusAbilityType = ____attribute_2Dbonus.AttributeBonusAbilityType
|
|
4
4
|
---
|
|
5
5
|
-- @internal For use by internal systems.
|
|
6
6
|
____exports.ATTRIBUTE_BONUS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____health_2Dbonus = require("engine.object-data.entry.ability-type.health-bonus")
|
|
3
|
+
local HealthBonusAbilityType = ____health_2Dbonus.HealthBonusAbilityType
|
|
4
|
+
---
|
|
5
|
+
-- @internal For use by internal systems only.
|
|
6
|
+
____exports.HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
7
|
+
local abilityType = HealthBonusAbilityType:create()
|
|
8
|
+
abilityType.isInternal = true
|
|
9
|
+
abilityType.isButtonVisible = false
|
|
10
|
+
abilityType.healthBonus = 0
|
|
11
|
+
return abilityType.id
|
|
12
|
+
end)
|
|
13
|
+
---
|
|
14
|
+
-- @internal For use by internal systems only.
|
|
15
|
+
____exports.HEALTH_BONUS_DUMMY_ABILITY_FIELD = ABILITY_ILF_MAX_LIFE_GAINED
|
|
16
|
+
return ____exports
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____mana_2Dbonus = require("engine.object-data.entry.ability-type.mana-bonus")
|
|
3
|
+
local ManaBonusAbilityType = ____mana_2Dbonus.ManaBonusAbilityType
|
|
4
|
+
---
|
|
5
|
+
-- @internal For use by internal systems only.
|
|
6
|
+
____exports.MANA_BONUS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
7
|
+
local abilityType = ManaBonusAbilityType:create()
|
|
8
|
+
abilityType.isInternal = true
|
|
9
|
+
abilityType.isButtonVisible = false
|
|
10
|
+
abilityType.manaBonus = 0
|
|
11
|
+
return abilityType.id
|
|
12
|
+
end)
|
|
13
|
+
---
|
|
14
|
+
-- @internal For use by internal systems only.
|
|
15
|
+
____exports.MANA_BONUS_DUMMY_ABILITY_FIELD = ABILITY_ILF_MAX_MANA_GAINED
|
|
16
|
+
return ____exports
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____mana_2Dregeneration = require("engine.object-data.entry.ability-type.mana-regeneration")
|
|
3
|
+
local ManaRegenerationAbilityType = ____mana_2Dregeneration.ManaRegenerationAbilityType
|
|
4
|
+
---
|
|
5
|
+
-- @internal For use by internal systems.
|
|
6
|
+
____exports.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = compiletime(function()
|
|
7
|
+
local abilityType = ManaRegenerationAbilityType:create()
|
|
8
|
+
abilityType.isInternal = true
|
|
9
|
+
abilityType.isButtonVisible = false
|
|
10
|
+
abilityType.manaRegenerationRateIncreaseFactor = 4
|
|
11
|
+
return abilityType.id
|
|
12
|
+
end)
|
|
13
|
+
---
|
|
14
|
+
-- @internal For use by internal systems.
|
|
15
|
+
____exports.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ABILITY_RLF_MANA_REGENERATION_BONUS_AS_FRACTION_OF_NORMAL
|
|
16
|
+
return ____exports
|
|
@@ -133,55 +133,55 @@ declare module "../unit" {
|
|
|
133
133
|
}
|
|
134
134
|
declare module "../unit" {
|
|
135
135
|
namespace Unit {
|
|
136
|
-
const
|
|
136
|
+
const abilityChannelingFinishEvent: DispatchingEvent<[Unit, Ability]>;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
declare module "../unit" {
|
|
140
140
|
namespace Unit {
|
|
141
|
-
const
|
|
141
|
+
const abilityStopEvent: DispatchingEvent<[Unit, Ability]>;
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
declare module "../unit" {
|
|
145
145
|
namespace Unit {
|
|
146
|
-
const
|
|
146
|
+
const abilityCommandEvent: {
|
|
147
|
+
readonly [abilityTypeId: number]: {
|
|
148
|
+
readonly [orderTypeStringId: string]: Event<[Unit, Ability, string]>;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
147
151
|
}
|
|
148
152
|
}
|
|
149
153
|
declare module "../unit" {
|
|
150
154
|
namespace Unit {
|
|
151
|
-
const
|
|
155
|
+
const abilityImpactEvent: DispatchingEvent<[Unit, Ability]>;
|
|
152
156
|
}
|
|
153
157
|
}
|
|
154
158
|
declare module "../unit" {
|
|
155
159
|
namespace Unit {
|
|
156
|
-
const
|
|
160
|
+
const abilityWidgetTargetImpactEvent: DispatchingEvent<[Unit, Ability, Widget]>;
|
|
157
161
|
}
|
|
158
162
|
}
|
|
159
163
|
declare module "../unit" {
|
|
160
164
|
namespace Unit {
|
|
161
|
-
const
|
|
165
|
+
const abilityUnitTargetImpactEvent: DispatchingEvent<[Unit, Ability, Unit]>;
|
|
162
166
|
}
|
|
163
167
|
}
|
|
164
168
|
declare module "../unit" {
|
|
165
169
|
namespace Unit {
|
|
166
|
-
const
|
|
170
|
+
const abilityItemTargetImpactEvent: DispatchingEvent<[Unit, Ability, Item]>;
|
|
167
171
|
}
|
|
168
172
|
}
|
|
169
173
|
declare module "../unit" {
|
|
170
174
|
namespace Unit {
|
|
171
|
-
const
|
|
175
|
+
const abilityDestructibleTargetImpactEvent: DispatchingEvent<[Unit, Ability, Destructable]>;
|
|
172
176
|
}
|
|
173
177
|
}
|
|
174
178
|
declare module "../unit" {
|
|
175
179
|
namespace Unit {
|
|
176
|
-
const
|
|
180
|
+
const abilityPointTargetImpactEvent: DispatchingEvent<[Unit, Ability, number, number]>;
|
|
177
181
|
}
|
|
178
182
|
}
|
|
179
183
|
declare module "../unit" {
|
|
180
184
|
namespace Unit {
|
|
181
|
-
const
|
|
182
|
-
readonly [abilityTypeId: number]: {
|
|
183
|
-
readonly [orderTypeStringId: string]: Event<[Unit, Ability, string]>;
|
|
184
|
-
};
|
|
185
|
-
};
|
|
185
|
+
const abilityNoTargetImpactEvent: DispatchingEvent<[Unit, Ability]>;
|
|
186
186
|
}
|
|
187
187
|
}
|