warscript 0.0.1-dev.f48f7bb → 0.0.1-dev.f566ce7
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 +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/frame.lua +71 -22
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +100 -25
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.lua +6 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +12 -3
- package/engine/behaviour/ability/damage.lua +33 -39
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +23 -7
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +15 -5
- package/engine/behaviour/ability.lua +72 -24
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +40 -2
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +113 -53
- package/engine/buff.lua +544 -288
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +64 -26
- package/engine/internal/item/ability.lua +66 -14
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +16 -19
- package/engine/internal/item.lua +174 -94
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.lua +16 -0
- 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 +35 -0
- package/engine/internal/unit/ability.lua +98 -9
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +8 -0
- package/engine/internal/unit/bonus.lua +50 -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/item.lua +3 -48
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +44 -25
- package/engine/internal/unit.lua +393 -260
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +86 -1
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- 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/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- 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/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +21 -17
- package/engine/object-data/entry/ability-type.lua +169 -28
- package/engine/object-data/entry/buff-type/applicable.lua +122 -137
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +1 -1
- package/engine/object-data/entry/item-type.lua +4 -4
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-field/ability.d.ts +4 -4
- 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 +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +26 -7
- package/engine/object-field.lua +360 -119
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +7 -0
- package/engine/unit.lua +7 -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 +11 -10
- package/objutil/object.lua +1 -1
- package/objutil/unit.lua +8 -0
- 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 +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +5 -1
- package/utility/linked-set.lua +49 -1
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.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";
|
|
@@ -55,14 +55,19 @@ export declare class UnrecognizedAbility extends Ability {
|
|
|
55
55
|
export declare class UnitAbility extends Ability {
|
|
56
56
|
readonly owner: Unit;
|
|
57
57
|
private readonly u;
|
|
58
|
+
private d?;
|
|
58
59
|
constructor(handle: jability, typeId: number, owner: Unit);
|
|
59
60
|
incrementHideCounter(): void;
|
|
60
61
|
decrementHideCounter(): void;
|
|
62
|
+
incrementDisableCounter(): void;
|
|
63
|
+
decrementDisableCounter(): void;
|
|
64
|
+
get isDisabled(): boolean;
|
|
61
65
|
get level(): number;
|
|
62
66
|
set level(v: number);
|
|
63
67
|
get cooldownRemaining(): number;
|
|
64
68
|
set cooldownRemaining(cooldownRemaining: number);
|
|
65
69
|
interruptCast(): void;
|
|
70
|
+
protected onDestroy(): HandleDestructor;
|
|
66
71
|
static get onCreate(): Event<[UnitAbility]>;
|
|
67
72
|
static get onDestroy(): Event<[UnitAbility]>;
|
|
68
73
|
}
|
|
@@ -89,6 +94,7 @@ export declare class ItemAbility extends Ability {
|
|
|
89
94
|
get cooldownRemaining(): number;
|
|
90
95
|
set cooldownRemaining(cooldownRemaining: number);
|
|
91
96
|
interruptCast(): void;
|
|
97
|
+
protected onDestroy(): HandleDestructor;
|
|
92
98
|
static get onCreate(): Event<[ItemAbility]>;
|
|
93
99
|
static get onDestroy(): Event<[ItemAbility]>;
|
|
94
100
|
}
|
|
@@ -35,9 +35,8 @@ 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
|
|
39
|
+
local unitDisableAbility = BlzUnitDisableAbility
|
|
41
40
|
local match = string.match
|
|
42
41
|
local ____type = _G.type
|
|
43
42
|
local ____tostring = _G.tostring
|
|
@@ -231,6 +230,19 @@ ____exports.getOrderIdByAbilityTypeId = function(abilityTypeId)
|
|
|
231
230
|
local parentTypeId = availableFields[abilityTypeId]
|
|
232
231
|
return order2orderId(orders[____type(parentTypeId) == "number" and parentTypeId or abilityTypeId] or "")
|
|
233
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
|
|
234
246
|
____exports.Ability = __TS__Class()
|
|
235
247
|
local Ability = ____exports.Ability
|
|
236
248
|
Ability.name = "Ability"
|
|
@@ -246,15 +258,7 @@ function Ability.prototype.getSnapshot(self)
|
|
|
246
258
|
return nil
|
|
247
259
|
end
|
|
248
260
|
function Ability.prototype.hasField(self, field)
|
|
249
|
-
|
|
250
|
-
if commonFields[field] then
|
|
251
|
-
return true
|
|
252
|
-
end
|
|
253
|
-
local id = availableFields[self.typeId]
|
|
254
|
-
if ____type(id) == "number" then
|
|
255
|
-
id = availableFields[id]
|
|
256
|
-
end
|
|
257
|
-
return not not (id and id[field])
|
|
261
|
+
return ____exports.abilityTypeHasField(self.typeId, field)
|
|
258
262
|
end
|
|
259
263
|
function Ability.prototype.getField(self, field, level)
|
|
260
264
|
local fieldType = match(
|
|
@@ -402,9 +406,37 @@ end
|
|
|
402
406
|
function UnitAbility.prototype.decrementHideCounter(self)
|
|
403
407
|
unitHideAbility(self.u, self.typeId, false)
|
|
404
408
|
end
|
|
409
|
+
function UnitAbility.prototype.incrementDisableCounter(self)
|
|
410
|
+
local unit = self.u
|
|
411
|
+
local typeId = self.typeId
|
|
412
|
+
unitHideAbility(unit, typeId, true)
|
|
413
|
+
unitDisableAbility(unit, typeId, true, false)
|
|
414
|
+
self.d = (self.d or 0) + 1
|
|
415
|
+
end
|
|
416
|
+
function UnitAbility.prototype.decrementDisableCounter(self)
|
|
417
|
+
local unit = self.u
|
|
418
|
+
local typeId = self.typeId
|
|
419
|
+
unitDisableAbility(unit, typeId, false, false)
|
|
420
|
+
unitHideAbility(unit, typeId, true)
|
|
421
|
+
self.d = (self.d or 0) - 1
|
|
422
|
+
end
|
|
405
423
|
function UnitAbility.prototype.interruptCast(self)
|
|
406
424
|
self.owner:interruptCast(self.typeId)
|
|
407
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
|
|
432
|
+
__TS__SetDescriptor(
|
|
433
|
+
UnitAbility.prototype,
|
|
434
|
+
"isDisabled",
|
|
435
|
+
{get = function(self)
|
|
436
|
+
return self.d ~= nil and self.d > 0
|
|
437
|
+
end},
|
|
438
|
+
true
|
|
439
|
+
)
|
|
408
440
|
__TS__SetDescriptor(
|
|
409
441
|
UnitAbility.prototype,
|
|
410
442
|
"level",
|
|
@@ -454,8 +486,6 @@ end
|
|
|
454
486
|
local function getAbilityCooldown(_, abilityTypeId)
|
|
455
487
|
return getUnitAbilityCooldownRemaining(abilityActionDummy, abilityTypeId)
|
|
456
488
|
end
|
|
457
|
-
local function doNothing()
|
|
458
|
-
end
|
|
459
489
|
____exports.ItemAbility = __TS__Class()
|
|
460
490
|
local ItemAbility = ____exports.ItemAbility
|
|
461
491
|
ItemAbility.name = "ItemAbility"
|
|
@@ -484,12 +514,20 @@ function ItemAbility.prototype.setField(self, field, levelOrValue, value)
|
|
|
484
514
|
)
|
|
485
515
|
end
|
|
486
516
|
function ItemAbility.prototype.interruptCast(self)
|
|
487
|
-
local
|
|
488
|
-
local
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
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)
|
|
492
529
|
end
|
|
530
|
+
return ItemAbility.____super.prototype.onDestroy(self)
|
|
493
531
|
end
|
|
494
532
|
__TS__SetDescriptor(
|
|
495
533
|
ItemAbility.prototype,
|
|
@@ -505,17 +543,17 @@ __TS__SetDescriptor(
|
|
|
505
543
|
{
|
|
506
544
|
get = function(self)
|
|
507
545
|
local item = self.owner
|
|
508
|
-
local
|
|
509
|
-
local
|
|
510
|
-
local
|
|
511
|
-
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)
|
|
512
550
|
end,
|
|
513
551
|
set = function(self, cooldownRemaining)
|
|
514
552
|
local item = self.owner
|
|
515
|
-
local
|
|
516
|
-
local
|
|
517
|
-
local
|
|
518
|
-
|
|
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)
|
|
519
557
|
end
|
|
520
558
|
},
|
|
521
559
|
true
|
|
@@ -16,8 +16,11 @@ local ____timer = require("core.types.timer")
|
|
|
16
16
|
local Timer = ____timer.Timer
|
|
17
17
|
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
18
18
|
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
19
|
+
local ____add_2Ditem_2Dto_2Dslot = require("engine.internal.unit.add-item-to-slot")
|
|
20
|
+
local unitAddItemToSlot = ____add_2Ditem_2Dto_2Dslot.unitAddItemToSlot
|
|
19
21
|
local isItemOwned = IsItemOwned
|
|
20
22
|
local isItemPowerup = IsItemPowerup
|
|
23
|
+
local getItemAbility = BlzGetItemAbility
|
|
21
24
|
local getItemX = GetItemX
|
|
22
25
|
local getItemY = GetItemY
|
|
23
26
|
local setAbilityRealLevelField = BlzSetAbilityRealLevelField
|
|
@@ -26,10 +29,11 @@ local getItemIntegerField = BlzGetItemIntegerField
|
|
|
26
29
|
local setItemBooleanField = BlzSetItemBooleanField
|
|
27
30
|
local setItemPosition = SetItemPosition
|
|
28
31
|
local unitAddItem = UnitAddItem
|
|
29
|
-
local unitDropItemSlot = UnitDropItemSlot
|
|
30
32
|
local unitRemoveItem = UnitRemoveItem
|
|
31
33
|
local unitUseItem = UnitUseItem
|
|
32
34
|
local unitResetCooldown = UnitResetCooldown
|
|
35
|
+
local unitInventorySize = UnitInventorySize
|
|
36
|
+
local unitItemInSlot = UnitItemInSlot
|
|
33
37
|
local COOLDOWN_STARTER_ABILITY_TYPE_ID = compiletime(function()
|
|
34
38
|
if not currentMap then
|
|
35
39
|
return 0
|
|
@@ -54,22 +58,24 @@ local COOLDOWN_STARTER_ITEM_TYPE_ID = compiletime(function()
|
|
|
54
58
|
itemType.activelyUsed = true
|
|
55
59
|
return itemType.id
|
|
56
60
|
end)
|
|
57
|
-
|
|
61
|
+
---
|
|
62
|
+
-- @internal For use by internal systems only.
|
|
63
|
+
____exports.itemAbilityDummy = assert(CreateUnit(
|
|
58
64
|
Player.neutralVictim.handle,
|
|
59
65
|
dummyUnitId,
|
|
60
66
|
0,
|
|
61
67
|
0,
|
|
62
68
|
270
|
|
63
69
|
))
|
|
64
|
-
local cooldownStarterItem = UnitAddItemById(
|
|
65
|
-
local cooldownStarterAbility =
|
|
66
|
-
ShowUnit(
|
|
70
|
+
local cooldownStarterItem = UnitAddItemById(____exports.itemAbilityDummy, COOLDOWN_STARTER_ITEM_TYPE_ID)
|
|
71
|
+
local cooldownStarterAbility = getItemAbility(cooldownStarterItem, COOLDOWN_STARTER_ABILITY_TYPE_ID)
|
|
72
|
+
ShowUnit(____exports.itemAbilityDummy, false)
|
|
67
73
|
local function startItemCooldownInternal(handle, cooldown)
|
|
68
74
|
local cooldownGroup = getItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP)
|
|
69
75
|
setItemIntegerField(handle, ITEM_IF_COOLDOWN_GROUP, COOLDOWN_STARTER_ABILITY_TYPE_ID)
|
|
70
76
|
setAbilityRealLevelField(cooldownStarterAbility, ABILITY_RLF_COOLDOWN, 0, cooldown)
|
|
71
|
-
unitResetCooldown(
|
|
72
|
-
unitUseItem(
|
|
77
|
+
unitResetCooldown(____exports.itemAbilityDummy)
|
|
78
|
+
unitUseItem(____exports.itemAbilityDummy, cooldownStarterItem)
|
|
73
79
|
Timer:run(restoreCooldownGroup, handle, cooldownGroup)
|
|
74
80
|
end
|
|
75
81
|
restoreCooldownGroup = function(handle, cooldownGroup)
|
|
@@ -84,7 +90,7 @@ ____exports.startItemCooldown = function(handle, owner, cooldown)
|
|
|
84
90
|
end
|
|
85
91
|
---
|
|
86
92
|
-- @internal For use by internal systems only.
|
|
87
|
-
____exports.abilityActionDummy =
|
|
93
|
+
____exports.abilityActionDummy = ____exports.itemAbilityDummy
|
|
88
94
|
---
|
|
89
95
|
-- @internal For use by internal systems only.
|
|
90
96
|
____exports.doAbilityAction = function(handle, action, ...)
|
|
@@ -103,11 +109,11 @@ ____exports.doAbilityAction = function(handle, action, ...)
|
|
|
103
109
|
end
|
|
104
110
|
x = getItemX(handle)
|
|
105
111
|
y = getItemY(handle)
|
|
106
|
-
unitAddItem(
|
|
112
|
+
unitAddItem(____exports.itemAbilityDummy, handle)
|
|
107
113
|
end
|
|
108
114
|
local result = action(handle, ...)
|
|
109
115
|
if not isOwned then
|
|
110
|
-
unitRemoveItem(
|
|
116
|
+
unitRemoveItem(____exports.itemAbilityDummy, handle)
|
|
111
117
|
setItemPosition(handle, x, y)
|
|
112
118
|
if isPowerup then
|
|
113
119
|
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
@@ -138,11 +144,10 @@ ____exports.doAbilityActionForceDummy = function(handle, owner, action, ...)
|
|
|
138
144
|
isPowerup = true
|
|
139
145
|
end
|
|
140
146
|
unitRemoveItem(owner, handle)
|
|
141
|
-
unitAddItem(
|
|
147
|
+
unitAddItem(____exports.itemAbilityDummy, handle)
|
|
142
148
|
local result = action(handle, ...)
|
|
143
|
-
unitRemoveItem(
|
|
144
|
-
|
|
145
|
-
unitDropItemSlot(owner, handle, slot)
|
|
149
|
+
unitRemoveItem(____exports.itemAbilityDummy, handle)
|
|
150
|
+
unitAddItemToSlot(owner, handle, slot)
|
|
146
151
|
if isPowerup then
|
|
147
152
|
setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
148
153
|
end
|
|
@@ -151,4 +156,51 @@ ____exports.doAbilityActionForceDummy = function(handle, owner, action, ...)
|
|
|
151
156
|
end
|
|
152
157
|
return result
|
|
153
158
|
end
|
|
159
|
+
local depth = 0
|
|
160
|
+
local itemBySlot = {}
|
|
161
|
+
---
|
|
162
|
+
-- @internal For use by internal systems only.
|
|
163
|
+
____exports.doUnitAbilityAction = function(unit, abilityTypeId, action, ...)
|
|
164
|
+
local ____depth_0 = depth
|
|
165
|
+
depth = ____depth_0 + 1
|
|
166
|
+
local offset = 6 * ____depth_0
|
|
167
|
+
for slot = 0, unitInventorySize(unit) - 1 do
|
|
168
|
+
local item = unitItemInSlot(unit, slot)
|
|
169
|
+
if getItemAbility(item, abilityTypeId) ~= nil then
|
|
170
|
+
local isAlreadyIgnoredInEvents = ignoreEventsItems[item] ~= nil
|
|
171
|
+
if not isAlreadyIgnoredInEvents then
|
|
172
|
+
ignoreEventsItems[item] = true
|
|
173
|
+
end
|
|
174
|
+
unitRemoveItem(unit, item)
|
|
175
|
+
if not isAlreadyIgnoredInEvents then
|
|
176
|
+
ignoreEventsItems[item] = nil
|
|
177
|
+
end
|
|
178
|
+
itemBySlot[offset + slot] = item
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
local result = action(unit, ...)
|
|
182
|
+
for slot = 0, unitInventorySize(unit) - 1 do
|
|
183
|
+
local item = itemBySlot[offset + slot]
|
|
184
|
+
if item ~= nil then
|
|
185
|
+
local isAlreadyIgnoredInEvents = ignoreEventsItems[item] ~= nil
|
|
186
|
+
if not isAlreadyIgnoredInEvents then
|
|
187
|
+
ignoreEventsItems[item] = true
|
|
188
|
+
end
|
|
189
|
+
local isPowerup = isItemPowerup(item)
|
|
190
|
+
if isPowerup then
|
|
191
|
+
setItemBooleanField(item, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
|
|
192
|
+
end
|
|
193
|
+
unitAddItemToSlot(unit, item, slot)
|
|
194
|
+
if isPowerup then
|
|
195
|
+
setItemBooleanField(item, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
|
|
196
|
+
end
|
|
197
|
+
if not isAlreadyIgnoredInEvents then
|
|
198
|
+
ignoreEventsItems[item] = nil
|
|
199
|
+
end
|
|
200
|
+
itemBySlot[offset + slot] = nil
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
depth = depth - 1
|
|
204
|
+
return result
|
|
205
|
+
end
|
|
154
206
|
return ____exports
|
|
@@ -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
|
|
@@ -6,12 +6,18 @@ local Item = ____item.Item
|
|
|
6
6
|
local ____unit = require("engine.internal.unit")
|
|
7
7
|
local Unit = ____unit.Unit
|
|
8
8
|
local ownerByItem = setmetatable({}, {__mode = "kv"})
|
|
9
|
-
Unit.itemPickedUpEvent:addListener(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
Unit.itemPickedUpEvent:addListener(
|
|
10
|
+
4,
|
|
11
|
+
function(unit, item)
|
|
12
|
+
ownerByItem[item] = unit
|
|
13
|
+
end
|
|
14
|
+
)
|
|
15
|
+
Unit.itemDroppedEvent:addListener(
|
|
16
|
+
4,
|
|
17
|
+
function(unit, item)
|
|
18
|
+
ownerByItem[item] = nil
|
|
19
|
+
end
|
|
20
|
+
)
|
|
15
21
|
__TS__ObjectDefineProperty(
|
|
16
22
|
Item.prototype,
|
|
17
23
|
"owner",
|
|
@@ -5,19 +5,17 @@ import { Event } from "../../event";
|
|
|
5
5
|
import { ReadonlyRect } from "../../core/types/rect";
|
|
6
6
|
import { ItemAbility } from "./ability";
|
|
7
7
|
import { AbilityTypeId } from "../object-data/entry/ability-type";
|
|
8
|
+
import type { ItemTypeId } from "../object-data/entry/item-type";
|
|
8
9
|
type DefenseType = 0 | 1 | 2 | 3 | 4 | 5;
|
|
9
|
-
export declare const addAndGetAbility: (handle: jitem, abilityTypeId: AbilityTypeId) => jability | null;
|
|
10
10
|
declare const enum ItemPropertyKey {
|
|
11
|
-
ABILITIES = 100
|
|
12
|
-
LUA_INDEX_BY_ABILITY_TYPE_ID = 101
|
|
11
|
+
ABILITIES = 100
|
|
13
12
|
}
|
|
14
13
|
export declare class Item extends Handle<jitem> {
|
|
15
14
|
private readonly [ItemPropertyKey.ABILITIES];
|
|
16
|
-
private readonly [ItemPropertyKey.LUA_INDEX_BY_ABILITY_TYPE_ID];
|
|
17
15
|
constructor(handle: jitem);
|
|
18
16
|
protected onDestroy(): HandleDestructor;
|
|
19
17
|
static create<T extends Item>(this: typeof Item & (new (handle: jitem) => T), id: number, x: number, y: number, skinId?: number): T;
|
|
20
|
-
get typeId():
|
|
18
|
+
get typeId(): ItemTypeId;
|
|
21
19
|
set skinId(v: number);
|
|
22
20
|
get skinId(): number;
|
|
23
21
|
set name(v: string);
|
|
@@ -30,22 +28,18 @@ export declare class Item extends Handle<jitem> {
|
|
|
30
28
|
get extendedTooltip(): string;
|
|
31
29
|
set iconPath(v: string);
|
|
32
30
|
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;
|
|
31
|
+
set dropsOnDeath(dropsOnDeath: boolean);
|
|
32
|
+
get dropsOnDeath(): boolean;
|
|
33
|
+
set canBeDropped(canBeDropped: boolean);
|
|
34
|
+
get canBeDropped(): boolean;
|
|
35
|
+
set perishes(perishes: boolean);
|
|
36
|
+
get perishes(): boolean;
|
|
37
|
+
set isPowerUp(isPowerUp: boolean);
|
|
38
|
+
get isPowerUp(): boolean;
|
|
43
39
|
get isAlive(): boolean;
|
|
44
40
|
get isDead(): boolean;
|
|
45
41
|
set isInvulnerable(isInvulnerable: boolean);
|
|
46
42
|
get isInvulnerable(): boolean;
|
|
47
|
-
set usable(v: boolean);
|
|
48
|
-
get usable(): boolean;
|
|
49
43
|
set visible(v: boolean);
|
|
50
44
|
get visible(): boolean;
|
|
51
45
|
set level(v: number);
|
|
@@ -73,14 +67,17 @@ export declare class Item extends Handle<jitem> {
|
|
|
73
67
|
set position(v: Vec2);
|
|
74
68
|
set charges(v: number);
|
|
75
69
|
get charges(): number;
|
|
70
|
+
consumeCharge(): boolean;
|
|
71
|
+
consumeCharges(count: number): boolean;
|
|
76
72
|
addAbility(abilityTypeId: AbilityTypeId): ItemAbility | undefined;
|
|
77
73
|
removeAbility(abilityTypeId: AbilityTypeId): boolean;
|
|
78
74
|
hasAbility(abilityTypeId: AbilityTypeId): boolean;
|
|
79
75
|
getAbility(abilityTypeId: AbilityTypeId): ItemAbility | undefined;
|
|
80
76
|
get abilities(): readonly ItemAbility[];
|
|
81
|
-
static getInRange(
|
|
77
|
+
static getInRange(x: number, y: number, range: number): Item[];
|
|
82
78
|
static getInRect(rect: ReadonlyRect): Item[];
|
|
83
79
|
static get onCreate(): Event<[Item]>;
|
|
84
|
-
static get
|
|
80
|
+
static get destroyEvent(): Event<[Item]>;
|
|
81
|
+
static readonly chargesChangedEvent: Event<[Item]>;
|
|
85
82
|
}
|
|
86
83
|
export {};
|