warscript 0.0.1-dev.f48f7bb → 0.0.1-dev.f70428f
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 +24 -21
- package/core/types/player.d.ts +15 -0
- package/core/types/player.lua +56 -14
- 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 +99 -24
- 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/engine/behavior.d.ts +12 -1
- package/engine/behavior.lua +172 -70
- package/engine/behaviour/ability/apply-buff.d.ts +5 -0
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +18 -3
- 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 +7 -2
- package/engine/behaviour/ability.lua +42 -24
- package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
- package/engine/behaviour/unit/stun-immunity.lua +53 -28
- package/engine/behaviour/unit.d.ts +36 -2
- package/engine/behaviour/unit.lua +192 -6
- package/engine/buff.d.ts +66 -44
- package/engine/buff.lua +330 -225
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -11
- package/engine/internal/item/ability.lua +66 -14
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- 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/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/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/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +17 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -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/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+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 +45 -14
- package/engine/internal/unit.d.ts +43 -17
- package/engine/internal/unit.lua +340 -165
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- 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/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/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/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/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 +19 -17
- package/engine/object-data/entry/ability-type.lua +85 -24
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- 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 +1 -1
- 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 +21 -5
- package/engine/object-data/entry/unit-type.lua +214 -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 +7 -6
- package/engine/object-field/unit.d.ts +69 -3
- package/engine/object-field/unit.lua +264 -7
- package/engine/object-field.d.ts +23 -6
- package/engine/object-field.lua +309 -126
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -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/unit.d.ts +6 -0
- package/engine/standard/fields/unit.lua +11 -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 +4 -0
- package/engine/unit.lua +4 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +2 -3
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- 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-set.d.ts +2 -0
- package/utility/linked-set.lua +22 -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/reflection.lua +11 -7
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
|
@@ -7,8 +7,8 @@ local UnitAbility = ____ability.UnitAbility
|
|
|
7
7
|
local ____unit = require("engine.internal.unit")
|
|
8
8
|
local Unit = ____unit.Unit
|
|
9
9
|
local ____event = require("event")
|
|
10
|
-
local Event = ____event.Event
|
|
11
10
|
local createDispatchingEvent = ____event.createDispatchingEvent
|
|
11
|
+
local Event = ____event.Event
|
|
12
12
|
local abilityGainedEvent = createDispatchingEvent(
|
|
13
13
|
__TS__New(Event),
|
|
14
14
|
function(unit, ability) return ability.typeId end
|
|
@@ -40,6 +40,15 @@ ItemAbility.onCreate:addListener(
|
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
)
|
|
43
|
+
ItemAbility.destroyEvent:addListener(
|
|
44
|
+
4,
|
|
45
|
+
function(ability)
|
|
46
|
+
local unit = ability.owner.owner
|
|
47
|
+
if unit ~= nil then
|
|
48
|
+
Event.invoke(abilityLostEvent, unit, ability)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
)
|
|
43
52
|
Unit.itemPickedUpEvent:addListener(
|
|
44
53
|
0,
|
|
45
54
|
function(unit, item)
|
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Widget } from "../../core/types/widget";
|
|
3
|
-
|
|
4
|
-
export declare namespace AttackType {
|
|
5
|
-
const SPELL: jattacktype;
|
|
6
|
-
const NORMAL: jattacktype;
|
|
7
|
-
const PIERCE: jattacktype;
|
|
8
|
-
const SIEGE: jattacktype;
|
|
9
|
-
const MAGIC: jattacktype;
|
|
10
|
-
const CHAOS: jattacktype;
|
|
11
|
-
const HERO: jattacktype;
|
|
12
|
-
}
|
|
3
|
+
import { AttackType } from "../object-data/auxiliary/attack-type";
|
|
13
4
|
export type DamageType = jdamagetype;
|
|
14
5
|
export declare namespace DamageType {
|
|
15
6
|
const UNKNOWN: jdamagetype;
|
|
@@ -64,6 +55,6 @@ export declare namespace WeaponType {
|
|
|
64
55
|
}
|
|
65
56
|
declare module "./unit" {
|
|
66
57
|
interface Unit {
|
|
67
|
-
damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType): boolean;
|
|
58
|
+
damageTarget(target: Widget, amount: number, attack?: boolean, ranged?: boolean, attackType?: AttackType, damageType?: DamageType, weaponType?: WeaponType, metadata?: unknown): boolean;
|
|
68
59
|
}
|
|
69
60
|
}
|
|
@@ -7,21 +7,14 @@ local ____player = require("core.types.player")
|
|
|
7
7
|
local Player = ____player.Player
|
|
8
8
|
local ____dummy = require("objutil.dummy")
|
|
9
9
|
local dummyUnitId = ____dummy.dummyUnitId
|
|
10
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
11
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
12
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
13
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
10
14
|
local createUnit = CreateUnit
|
|
11
15
|
local getOwningPlayer = GetOwningPlayer
|
|
12
16
|
local showUnit = ShowUnit
|
|
13
17
|
local unitDamageTarget = UnitDamageTarget
|
|
14
|
-
____exports.AttackType = {}
|
|
15
|
-
local AttackType = ____exports.AttackType
|
|
16
|
-
do
|
|
17
|
-
AttackType.SPELL = ATTACK_TYPE_NORMAL
|
|
18
|
-
AttackType.NORMAL = ATTACK_TYPE_MELEE
|
|
19
|
-
AttackType.PIERCE = ATTACK_TYPE_PIERCE
|
|
20
|
-
AttackType.SIEGE = ATTACK_TYPE_SIEGE
|
|
21
|
-
AttackType.MAGIC = ATTACK_TYPE_MAGIC
|
|
22
|
-
AttackType.CHAOS = ATTACK_TYPE_CHAOS
|
|
23
|
-
AttackType.HERO = ATTACK_TYPE_HERO
|
|
24
|
-
end
|
|
25
18
|
____exports.DamageType = {}
|
|
26
19
|
local DamageType = ____exports.DamageType
|
|
27
20
|
do
|
|
@@ -88,7 +81,7 @@ for ____, player in ipairs(Player.all) do
|
|
|
88
81
|
showUnit(dummy, false)
|
|
89
82
|
dummies[player] = dummy
|
|
90
83
|
end
|
|
91
|
-
Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType)
|
|
84
|
+
Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType, metadata)
|
|
92
85
|
if attack == nil then
|
|
93
86
|
attack = false
|
|
94
87
|
end
|
|
@@ -96,7 +89,7 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
|
|
|
96
89
|
ranged = false
|
|
97
90
|
end
|
|
98
91
|
if attackType == nil then
|
|
99
|
-
attackType =
|
|
92
|
+
attackType = 0
|
|
100
93
|
end
|
|
101
94
|
if damageType == nil then
|
|
102
95
|
damageType = ____exports.DamageType.MAGIC
|
|
@@ -109,13 +102,16 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
|
|
|
109
102
|
if not getOwningPlayer(handle) then
|
|
110
103
|
handle = dummies[__TS__InstanceOf(target, Unit) and target.owner or (self._owner or Player.neutralAggressive)]
|
|
111
104
|
end
|
|
105
|
+
if __TS__InstanceOf(target, Unit) then
|
|
106
|
+
damageMetadataByTarget[target] = metadata
|
|
107
|
+
end
|
|
112
108
|
return unitDamageTarget(
|
|
113
109
|
handle,
|
|
114
110
|
targetHandle,
|
|
115
111
|
amount,
|
|
116
112
|
attack,
|
|
117
113
|
ranged,
|
|
118
|
-
attackType,
|
|
114
|
+
attackTypeToNative(attackType),
|
|
119
115
|
damageType,
|
|
120
116
|
weaponType
|
|
121
117
|
)
|
|
@@ -6,7 +6,6 @@ local ____exports = {}
|
|
|
6
6
|
local ____unit = require("engine.internal.unit")
|
|
7
7
|
local Unit = ____unit.Unit
|
|
8
8
|
local ____unit_2Bdamage = require("engine.internal.unit+damage")
|
|
9
|
-
local AttackType = ____unit_2Bdamage.AttackType
|
|
10
9
|
local DamageType = ____unit_2Bdamage.DamageType
|
|
11
10
|
local ____event = require("event")
|
|
12
11
|
local Event = ____event.Event
|
|
@@ -33,7 +32,7 @@ local spellStealEventStack = {}
|
|
|
33
32
|
Unit.onDamaging:addListener(function(source, target, event)
|
|
34
33
|
if event.amount == 0 and source ~= nil then
|
|
35
34
|
local count = countByUnit[source] or 0
|
|
36
|
-
if count > 0 and event.attackType ==
|
|
35
|
+
if count > 0 and event.attackType == 0 then
|
|
37
36
|
if event.damageType == DamageType.UNKNOWN then
|
|
38
37
|
spellStealEventStack[#spellStealEventStack + 1] = {
|
|
39
38
|
sourceBuffIds = source.buffIds,
|
|
@@ -9,9 +9,18 @@ local ____timer = require("core.types.timer")
|
|
|
9
9
|
local Timer = ____timer.Timer
|
|
10
10
|
local ____lua_2Dsets = require("utility.lua-sets")
|
|
11
11
|
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
12
|
+
local ____attributes = require("attributes")
|
|
13
|
+
local attribute = ____attributes.attribute
|
|
14
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
15
|
+
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
16
|
+
local ____math = require("math")
|
|
17
|
+
local ceil = ____math.ceil
|
|
12
18
|
local autoAttackFinishEvent = __TS__New(Event)
|
|
13
19
|
rawset(Unit, "autoAttackFinishEvent", autoAttackFinishEvent)
|
|
14
|
-
local
|
|
20
|
+
local units = __TS__New(LinkedSet)
|
|
21
|
+
local targetAttribute = attribute()
|
|
22
|
+
local impactDelayAttribute = attribute()
|
|
23
|
+
local passedTimeAttribute = attribute()
|
|
15
24
|
local instantOrderIds = luaSetOf(
|
|
16
25
|
orderId("avatar"),
|
|
17
26
|
orderId("berserk"),
|
|
@@ -28,24 +37,46 @@ local instantOrderIds = luaSetOf(
|
|
|
28
37
|
orderId("unimmolation")
|
|
29
38
|
)
|
|
30
39
|
local function reset(source, orderId)
|
|
31
|
-
if not (instantOrderIds[orderId] ~= nil) then
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
eventTimerByUnit[source] = nil
|
|
36
|
-
end
|
|
40
|
+
if not (instantOrderIds[orderId] ~= nil) and units:remove(source) then
|
|
41
|
+
source[targetAttribute] = nil
|
|
42
|
+
source[impactDelayAttribute] = nil
|
|
43
|
+
source[passedTimeAttribute] = nil
|
|
37
44
|
end
|
|
38
45
|
end
|
|
39
46
|
Unit.onImmediateOrder:addListener(reset)
|
|
40
47
|
Unit.onPointOrder:addListener(reset)
|
|
41
48
|
Unit.onTargetOrder:addListener(reset)
|
|
42
|
-
local
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
local timerPeriod = 1 / 64
|
|
50
|
+
local function invokeEvent(unit)
|
|
51
|
+
units:remove(unit)
|
|
52
|
+
local target = unit[targetAttribute]
|
|
53
|
+
unit[targetAttribute] = nil
|
|
54
|
+
unit[impactDelayAttribute] = nil
|
|
55
|
+
unit[passedTimeAttribute] = nil
|
|
56
|
+
Event.invoke(autoAttackFinishEvent, unit, target)
|
|
57
|
+
end
|
|
58
|
+
local function checkUnit(unit)
|
|
59
|
+
local passedTime = unit[passedTimeAttribute] + timerPeriod
|
|
60
|
+
local impactDelay = unit[impactDelayAttribute]
|
|
61
|
+
if passedTime >= impactDelay and ceil(passedTime / 0.02) >= ceil(impactDelay / 0.02) then
|
|
62
|
+
invokeEvent(unit)
|
|
63
|
+
else
|
|
64
|
+
unit[passedTimeAttribute] = passedTime
|
|
65
|
+
end
|
|
45
66
|
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
local timer = Timer:simple(attackPoint, timerCallback, source, target)
|
|
49
|
-
eventTimerByUnit[source] = timer
|
|
67
|
+
Timer.onPeriod[timerPeriod]:addListener(function()
|
|
68
|
+
units:forEach(checkUnit)
|
|
50
69
|
end)
|
|
70
|
+
Unit.autoAttackStartEvent:addListener(
|
|
71
|
+
999999,
|
|
72
|
+
function(source, target)
|
|
73
|
+
if source[targetAttribute] ~= nil then
|
|
74
|
+
invokeEvent(source)
|
|
75
|
+
end
|
|
76
|
+
source[targetAttribute] = target
|
|
77
|
+
source[impactDelayAttribute] = (source:chooseWeapon(target) or source.firstWeapon).impactDelay
|
|
78
|
+
source[passedTimeAttribute] = -timerPeriod
|
|
79
|
+
units:add(source)
|
|
80
|
+
end
|
|
81
|
+
)
|
|
51
82
|
return ____exports
|
|
@@ -11,6 +11,10 @@ import { Ability, UnitAbility } from "./ability";
|
|
|
11
11
|
import { Widget } from "../../core/types/widget";
|
|
12
12
|
import type { UnitTypeId } from "../object-data/entry/unit-type";
|
|
13
13
|
import { CombatClassification, CombatClassifications } from "../object-data/auxiliary/combat-classification";
|
|
14
|
+
import { MovementType } from "../object-data/auxiliary/movement-type";
|
|
15
|
+
import { UnitAttribute } from "../object-data/auxiliary/unit-attribute";
|
|
16
|
+
import { AttackType } from "../object-data/auxiliary/attack-type";
|
|
17
|
+
import { AttributesHolder } from "../../attributes";
|
|
14
18
|
export type UnitClassification = junittype;
|
|
15
19
|
export declare namespace UnitClassification {
|
|
16
20
|
const STRUCTURE: junittype;
|
|
@@ -19,6 +23,7 @@ export declare namespace UnitClassification {
|
|
|
19
23
|
const GROUND: junittype;
|
|
20
24
|
const SUMMONED: junittype;
|
|
21
25
|
const MECHANICAL: junittype;
|
|
26
|
+
const WORKER: junittype;
|
|
22
27
|
const ANCIENT: junittype;
|
|
23
28
|
const SUICIDAL: junittype;
|
|
24
29
|
const TAUREN: junittype;
|
|
@@ -36,15 +41,18 @@ type AbilityDispatcherTable<T extends any[] = []> = {
|
|
|
36
41
|
readonly [id: number]: Event<[Unit, Ability, ...T]>;
|
|
37
42
|
};
|
|
38
43
|
type AbilityEventDispatcher<T extends any[] = []> = Event<[Unit, Ability, ...T]> & AbilityDispatcherTable<T>;
|
|
39
|
-
export interface DamagingEvent {
|
|
44
|
+
export interface DamagingEvent extends AttributesHolder {
|
|
40
45
|
amount: number;
|
|
41
|
-
attackType:
|
|
46
|
+
attackType: AttackType;
|
|
42
47
|
damageType: jdamagetype;
|
|
43
48
|
weaponType: jweapontype;
|
|
49
|
+
metadata: unknown;
|
|
44
50
|
readonly isAttack: boolean;
|
|
45
51
|
readonly originalAmount: number;
|
|
52
|
+
readonly originalMetadata: unknown;
|
|
53
|
+
preventRetaliation(this: DamagingEvent): void;
|
|
46
54
|
}
|
|
47
|
-
export type DamageEvent = DamagingEvent & {
|
|
55
|
+
export type DamageEvent = Omit<DamagingEvent, "preventRetaliation"> & {
|
|
48
56
|
preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
|
|
49
57
|
};
|
|
50
58
|
export type AttackDamageEvent = DamagingEvent & {
|
|
@@ -72,10 +80,14 @@ export declare class UnitWeapon {
|
|
|
72
80
|
readonly unit: Unit;
|
|
73
81
|
readonly index: 0 | 1;
|
|
74
82
|
constructor(unit: Unit, index: 0 | 1);
|
|
83
|
+
get isEnabled(): boolean;
|
|
84
|
+
set isEnabled(isEnabled: boolean);
|
|
75
85
|
get cooldown(): number;
|
|
76
86
|
set cooldown(cooldown: number);
|
|
77
87
|
get damage(): [minimumDamage: number, maximumDamage: number];
|
|
78
88
|
set damage([minimumDamage, maximumDamage]: [number, number]);
|
|
89
|
+
get allowedTargetCombatClassifications(): CombatClassifications;
|
|
90
|
+
set allowedTargetCombatClassifications(allowedTargetCombatClassifications: CombatClassifications);
|
|
79
91
|
get damageBase(): number;
|
|
80
92
|
set damageBase(damageBase: number);
|
|
81
93
|
get damageDiceCount(): number;
|
|
@@ -97,10 +109,13 @@ declare const enum UnitPropertyKey {
|
|
|
97
109
|
SYNC_ID = 100,
|
|
98
110
|
IS_PAUSED = 101,
|
|
99
111
|
STUN_COUNTER = 102,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
112
|
+
FORCE_STUN_COUNTER = 103,
|
|
113
|
+
DELAY_HEALTH_CHECKS_COUNTER = 104,
|
|
114
|
+
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 105,
|
|
115
|
+
PREVENT_DEATH_HEALTH_BONUS = 106,
|
|
116
|
+
IS_TEAM_GLOW_HIDDEN = 107,
|
|
117
|
+
LAST_X = 108,
|
|
118
|
+
LAST_Y = 109
|
|
104
119
|
}
|
|
105
120
|
export type UnitSyncId = number & {
|
|
106
121
|
readonly __unitSyncId: unique symbol;
|
|
@@ -109,10 +124,13 @@ export declare class Unit extends Handle<junit> {
|
|
|
109
124
|
readonly syncId: UnitSyncId;
|
|
110
125
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
111
126
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
127
|
+
private [UnitPropertyKey.FORCE_STUN_COUNTER]?;
|
|
112
128
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
113
129
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
114
130
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
115
131
|
private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
|
|
132
|
+
private [UnitPropertyKey.LAST_X]?;
|
|
133
|
+
private [UnitPropertyKey.LAST_Y]?;
|
|
116
134
|
private _owner?;
|
|
117
135
|
private _timeScale?;
|
|
118
136
|
private events?;
|
|
@@ -133,6 +151,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
133
151
|
get isAlive(): boolean;
|
|
134
152
|
get isDead(): boolean;
|
|
135
153
|
get isIllusion(): boolean;
|
|
154
|
+
get isStunned(): boolean;
|
|
136
155
|
get combatClassifications(): CombatClassifications;
|
|
137
156
|
set combatClassifications(combatClassifications: CombatClassifications);
|
|
138
157
|
hasCombatClassification(combatClassification: CombatClassification): boolean;
|
|
@@ -145,16 +164,19 @@ export declare class Unit extends Handle<junit> {
|
|
|
145
164
|
isInRangeOf(unit: Unit, range: number): boolean;
|
|
146
165
|
isAllyOf(unit: Unit): boolean;
|
|
147
166
|
isEnemyOf(unit: Unit): boolean;
|
|
148
|
-
playAnimation(animation: string, rarity?: jraritycontrol): void;
|
|
149
|
-
|
|
167
|
+
playAnimation(...parameters: [animation: number] | [animation: string, rarity?: jraritycontrol]): void;
|
|
168
|
+
resetAnimation(): void;
|
|
150
169
|
queueAnimation(animation: string): void;
|
|
151
170
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
152
171
|
get firstWeapon(): UnitWeapon;
|
|
153
172
|
get secondWeapon(): UnitWeapon;
|
|
173
|
+
chooseWeapon(target: Unit): UnitWeapon | undefined;
|
|
154
174
|
get level(): number;
|
|
155
175
|
set level(v: number);
|
|
156
176
|
get xp(): number;
|
|
157
177
|
set xp(v: number);
|
|
178
|
+
get primaryAttribute(): UnitAttribute;
|
|
179
|
+
set primaryAttribute(primaryAttribute: UnitAttribute);
|
|
158
180
|
get strengthBase(): number;
|
|
159
181
|
set strengthBase(strengthBase: number);
|
|
160
182
|
get strengthBonus(): number;
|
|
@@ -198,8 +220,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
198
220
|
set facing(v: number);
|
|
199
221
|
get speed(): number;
|
|
200
222
|
set speed(v: number);
|
|
201
|
-
get flyHeight(): number;
|
|
202
|
-
set flyHeight(v: number);
|
|
203
223
|
get x(): number;
|
|
204
224
|
set x(v: number);
|
|
205
225
|
get y(): number;
|
|
@@ -223,12 +243,12 @@ export declare class Unit extends Handle<junit> {
|
|
|
223
243
|
get isInvulnerable(): boolean;
|
|
224
244
|
get vertexColor(): Color;
|
|
225
245
|
set vertexColor(v: Color);
|
|
226
|
-
get scale(): number;
|
|
227
|
-
set scale(v: number);
|
|
228
246
|
get timeScale(): number;
|
|
229
247
|
set timeScale(v: number);
|
|
230
248
|
get collisionSize(): number;
|
|
231
249
|
get pathingCollisionRange(): number;
|
|
250
|
+
get movementType(): MovementType;
|
|
251
|
+
set movementType(movementType: MovementType);
|
|
232
252
|
set pathing(v: boolean);
|
|
233
253
|
isSelected(player: Player): boolean;
|
|
234
254
|
explode(): void;
|
|
@@ -246,17 +266,18 @@ export declare class Unit extends Handle<junit> {
|
|
|
246
266
|
dropItemTarget(item: Item, target: Widget): boolean;
|
|
247
267
|
dropItemSlot(item: Item, slot: number): boolean;
|
|
248
268
|
itemInSlot(slot: number): Item | null;
|
|
249
|
-
addAbility(abilityId: number): UnitAbility |
|
|
269
|
+
addAbility(abilityId: number): UnitAbility | undefined;
|
|
250
270
|
makeAbilityPermanent(abilityId: number, permanent: true): boolean;
|
|
251
271
|
setAbilityLevel(abilityId: number, level: number): number;
|
|
252
272
|
getAbilityLevel(abilityId: number): number;
|
|
253
273
|
hasAbility(abilityId: number): boolean;
|
|
254
|
-
|
|
255
|
-
removeAbility(
|
|
274
|
+
getAbility(abilityId: number): UnitAbility | undefined;
|
|
275
|
+
removeAbility(abilityTypeId: number): boolean;
|
|
256
276
|
hideAbility(abilityId: number, flag: boolean): void;
|
|
257
277
|
getAbilityRemainingCooldown(abilityId: number): number;
|
|
258
278
|
startAbilityCooldown(abilityId: number, cooldown: number): void;
|
|
259
279
|
endAbilityCooldown(abilityId: number): void;
|
|
280
|
+
interruptMovement(): void;
|
|
260
281
|
interruptAttack(): void;
|
|
261
282
|
interruptCast(abilityId: number): void;
|
|
262
283
|
getDistanceTo(target: Unit | Vec2): number;
|
|
@@ -271,6 +292,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
271
292
|
unpauseEx(): void;
|
|
272
293
|
incrementStunCounter(): void;
|
|
273
294
|
decrementStunCounter(): void;
|
|
295
|
+
incrementForceStunCounter(): void;
|
|
296
|
+
decrementForceStunCounter(): void;
|
|
274
297
|
set waygateActive(v: boolean);
|
|
275
298
|
get waygateActive(): boolean;
|
|
276
299
|
set waygateDestination(v: Vec2);
|
|
@@ -279,6 +302,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
279
302
|
get onUnitInRange(): Record<number, Event<[Unit]>>;
|
|
280
303
|
get onManaEqual(): Record<number, Event<[Unit, number]>>;
|
|
281
304
|
get manaEvent(): Record<Operator, Record<number, Event<[Unit]>>>;
|
|
305
|
+
get targetAcquiredEvent(): Event;
|
|
282
306
|
get onSelect(): Event;
|
|
283
307
|
get onDeselect(): Event;
|
|
284
308
|
get onImmediateOrder(): Event<[number]>;
|
|
@@ -331,7 +355,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
331
355
|
static itemDroppedEvent: UnitTriggerEvent<[Item]>;
|
|
332
356
|
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
333
357
|
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
334
|
-
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
358
|
+
static itemStackedEvent: UnitTriggerEvent<[target: Item, source: Item]>;
|
|
359
|
+
static get itemChargesChangedEvent(): Event<[unit: Unit, item: Item]>;
|
|
335
360
|
static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
|
|
336
361
|
static get itemMoveOrderEvent(): Event<[
|
|
337
362
|
unit: Unit,
|
|
@@ -350,5 +375,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
350
375
|
setField(field: junitstringfield, value: string): boolean;
|
|
351
376
|
toString(): string;
|
|
352
377
|
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
378
|
+
static synchronize: (player: Player, object: Unit | undefined) => Promise<Unit | undefined>;
|
|
353
379
|
}
|
|
354
380
|
export {};
|