warscript 0.0.1-dev.1858ab2 → 0.0.1-dev.19d0f81
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 +12 -0
- package/attributes.lua +16 -0
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +8 -1
- package/core/types/frame.lua +93 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/index.d.ts +1 -0
- package/decl/native.d.ts +840 -786
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +32 -0
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +32 -9
- package/engine/behaviour/ability/damage.d.ts +37 -11
- package/engine/behaviour/ability/damage.lua +90 -32
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +35 -0
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -15
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
- package/engine/behaviour/ability/remove-buffs.lua +28 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +27 -4
- package/engine/behaviour/ability.lua +152 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
- package/engine/behaviour/unit.d.ts +10 -2
- package/engine/behaviour/unit.lua +27 -0
- package/engine/buff.d.ts +103 -41
- package/engine/buff.lua +465 -212
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +17 -14
- package/engine/internal/ability.lua +80 -76
- package/engine/internal/item/ability.lua +106 -0
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/item.d.ts +4 -3
- package/engine/internal/item.lua +56 -25
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +3 -1
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -0
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -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 +10 -1
- package/engine/internal/unit/ability.lua +36 -14
- 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/bonus.d.ts +11 -8
- package/engine/internal/unit/bonus.lua +23 -1
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +11 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +25 -6
- package/engine/internal/unit.d.ts +75 -17
- package/engine/internal/unit.lua +452 -162
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -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/attachment-preset.d.ts +7 -3
- 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/combat-classification.d.ts +0 -2
- 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/sound-preset-name.d.ts +5 -1
- 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.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- 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/channel.d.ts +0 -1
- 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/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -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/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- 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 +20 -18
- package/engine/object-data/entry/ability-type.lua +90 -33
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +39 -102
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +6 -13
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +1 -2
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +15 -2
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -2
- 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 +50 -3
- package/engine/object-data/entry/unit-type.lua +452 -61
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +1 -2
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +18 -17
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +33 -8
- package/engine/object-field/ability.lua +60 -1
- package/engine/object-field/unit.d.ts +46 -2
- package/engine/object-field/unit.lua +173 -4
- package/engine/object-field.d.ts +11 -3
- package/engine/object-field.lua +174 -84
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -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/entries/unit-type.d.ts +42 -1
- package/engine/standard/entries/unit-type.lua +42 -1
- package/engine/standard/fields/ability.d.ts +3 -1
- package/engine/standard/fields/ability.lua +3 -1
- package/engine/unit.d.ts +4 -0
- package/engine/unit.lua +13 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/global/vec2.lua +1 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +2 -3
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/objutil/unit.lua +8 -0
- package/package.json +13 -14
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +12 -5
- package/utility/arrays.lua +37 -3
- package/utility/bit-set.d.ts +0 -2
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-set.d.ts +12 -3
- package/utility/linked-set.lua +8 -2
- package/utility/lua-maps.d.ts +4 -2
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +2 -2
- package/utility/lua-sets.lua +3 -0
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +3 -2
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
|
@@ -40,7 +40,7 @@ ItemAbility.onCreate:addListener(
|
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
)
|
|
43
|
-
Unit.
|
|
43
|
+
Unit.itemPickedUpEvent:addListener(
|
|
44
44
|
0,
|
|
45
45
|
function(unit, item)
|
|
46
46
|
for ____, ability in ipairs(item.abilities) do
|
|
@@ -48,7 +48,7 @@ Unit.onItemPickup:addListener(
|
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
)
|
|
51
|
-
Unit.
|
|
51
|
+
Unit.itemDroppedEvent:addListener(
|
|
52
52
|
4,
|
|
53
53
|
function(unit, item)
|
|
54
54
|
for ____, ability in ipairs(item.abilities) do
|
|
@@ -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,12 @@ 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
|
|
10
12
|
local createUnit = CreateUnit
|
|
11
13
|
local getOwningPlayer = GetOwningPlayer
|
|
12
14
|
local showUnit = ShowUnit
|
|
13
15
|
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
16
|
____exports.DamageType = {}
|
|
26
17
|
local DamageType = ____exports.DamageType
|
|
27
18
|
do
|
|
@@ -88,7 +79,10 @@ for ____, player in ipairs(Player.all) do
|
|
|
88
79
|
showUnit(dummy, false)
|
|
89
80
|
dummies[player] = dummy
|
|
90
81
|
end
|
|
91
|
-
|
|
82
|
+
---
|
|
83
|
+
-- @internal For use by internal systems only.
|
|
84
|
+
____exports.damageMetadataByTarget = setmetatable({}, {__mode = "k"})
|
|
85
|
+
Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType, metadata)
|
|
92
86
|
if attack == nil then
|
|
93
87
|
attack = false
|
|
94
88
|
end
|
|
@@ -96,7 +90,7 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
|
|
|
96
90
|
ranged = false
|
|
97
91
|
end
|
|
98
92
|
if attackType == nil then
|
|
99
|
-
attackType =
|
|
93
|
+
attackType = 0
|
|
100
94
|
end
|
|
101
95
|
if damageType == nil then
|
|
102
96
|
damageType = ____exports.DamageType.MAGIC
|
|
@@ -109,13 +103,16 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
|
|
|
109
103
|
if not getOwningPlayer(handle) then
|
|
110
104
|
handle = dummies[__TS__InstanceOf(target, Unit) and target.owner or (self._owner or Player.neutralAggressive)]
|
|
111
105
|
end
|
|
106
|
+
if __TS__InstanceOf(target, Unit) then
|
|
107
|
+
____exports.damageMetadataByTarget[target] = metadata
|
|
108
|
+
end
|
|
112
109
|
return unitDamageTarget(
|
|
113
110
|
handle,
|
|
114
111
|
targetHandle,
|
|
115
112
|
amount,
|
|
116
113
|
attack,
|
|
117
114
|
ranged,
|
|
118
|
-
attackType,
|
|
115
|
+
attackTypeToNative(attackType),
|
|
119
116
|
damageType,
|
|
120
117
|
weaponType
|
|
121
118
|
)
|
|
@@ -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,
|
|
@@ -6,9 +6,8 @@ local ____unit = require("engine.internal.unit")
|
|
|
6
6
|
local Unit = ____unit.Unit
|
|
7
7
|
local ____event = require("event")
|
|
8
8
|
local Event = ____event.Event
|
|
9
|
-
local
|
|
10
|
-
local
|
|
11
|
-
local boundRegion = ____mapbounds.boundRegion
|
|
9
|
+
local ____game_2Dmap = require("engine.game-map")
|
|
10
|
+
local GameMap = ____game_2Dmap.GameMap
|
|
12
11
|
local eventInvoke = Event.invoke
|
|
13
12
|
local tableRemove = table.remove
|
|
14
13
|
local ____assert = _G.assert
|
|
@@ -58,8 +57,8 @@ triggerAddCondition(
|
|
|
58
57
|
deboard(unit)
|
|
59
58
|
end
|
|
60
59
|
if not unitAlive(handle) then
|
|
61
|
-
unit.x =
|
|
62
|
-
unit.y =
|
|
60
|
+
unit.x = GameMap.worldBoundsRect.maxX
|
|
61
|
+
unit.y = GameMap.worldBoundsRect.maxY
|
|
63
62
|
end
|
|
64
63
|
local transport = Unit:of(getTransportUnit())
|
|
65
64
|
transportByUnit[unit] = transport
|
|
@@ -68,11 +67,6 @@ triggerAddCondition(
|
|
|
68
67
|
eventInvoke(onBoardEvent, unit, transport)
|
|
69
68
|
end)
|
|
70
69
|
)
|
|
71
|
-
boundRegion.onUnitEnter:addListener(function(unit)
|
|
72
|
-
if transportByUnit[unit] ~= nil and not isUnitLoaded(unit.handle) then
|
|
73
|
-
deboard(unit)
|
|
74
|
-
end
|
|
75
|
-
end)
|
|
76
70
|
Unit.deathEvent:addListener(function(unit)
|
|
77
71
|
if transportByUnit[unit] ~= nil then
|
|
78
72
|
deboard(unit)
|
|
@@ -7,14 +7,33 @@ local ____event = require("event")
|
|
|
7
7
|
local Event = ____event.Event
|
|
8
8
|
local ____timer = require("core.types.timer")
|
|
9
9
|
local Timer = ____timer.Timer
|
|
10
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
11
|
+
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
10
12
|
local autoAttackFinishEvent = __TS__New(Event)
|
|
11
13
|
rawset(Unit, "autoAttackFinishEvent", autoAttackFinishEvent)
|
|
12
14
|
local eventTimerByUnit = {}
|
|
13
|
-
local
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
local instantOrderIds = luaSetOf(
|
|
16
|
+
orderId("avatar"),
|
|
17
|
+
orderId("berserk"),
|
|
18
|
+
orderId("divineshield"),
|
|
19
|
+
orderId("immolation"),
|
|
20
|
+
orderId("moveslot0"),
|
|
21
|
+
orderId("moveslot1"),
|
|
22
|
+
orderId("moveslot2"),
|
|
23
|
+
orderId("moveslot3"),
|
|
24
|
+
orderId("moveslot4"),
|
|
25
|
+
orderId("moveslot5"),
|
|
26
|
+
orderId("unavatar"),
|
|
27
|
+
orderId("undivineshield"),
|
|
28
|
+
orderId("unimmolation")
|
|
29
|
+
)
|
|
30
|
+
local function reset(source, orderId)
|
|
31
|
+
if not (instantOrderIds[orderId] ~= nil) then
|
|
32
|
+
local eventTimer = eventTimerByUnit[source]
|
|
33
|
+
if eventTimer then
|
|
34
|
+
eventTimer:destroy()
|
|
35
|
+
eventTimerByUnit[source] = nil
|
|
36
|
+
end
|
|
18
37
|
end
|
|
19
38
|
end
|
|
20
39
|
Unit.onImmediateOrder:addListener(reset)
|
|
@@ -25,7 +44,7 @@ local function timerCallback(source, target)
|
|
|
25
44
|
Event.invoke(autoAttackFinishEvent, source, target)
|
|
26
45
|
end
|
|
27
46
|
Unit.autoAttackStartEvent:addListener(function(source, target)
|
|
28
|
-
local attackPoint = source.weapons[1].
|
|
47
|
+
local attackPoint = source.weapons[1].impactDelay
|
|
29
48
|
local timer = Timer:simple(attackPoint, timerCallback, source, target)
|
|
30
49
|
eventTimerByUnit[source] = timer
|
|
31
50
|
end)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
4
3
|
import { Player } from "../../core/types/player";
|
|
@@ -12,6 +11,10 @@ import { Ability, UnitAbility } from "./ability";
|
|
|
12
11
|
import { Widget } from "../../core/types/widget";
|
|
13
12
|
import type { UnitTypeId } from "../object-data/entry/unit-type";
|
|
14
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 "./unit+damage";
|
|
15
18
|
export type UnitClassification = junittype;
|
|
16
19
|
export declare namespace UnitClassification {
|
|
17
20
|
const STRUCTURE: junittype;
|
|
@@ -39,10 +42,13 @@ type AbilityDispatcherTable<T extends any[] = []> = {
|
|
|
39
42
|
type AbilityEventDispatcher<T extends any[] = []> = Event<[Unit, Ability, ...T]> & AbilityDispatcherTable<T>;
|
|
40
43
|
export interface DamagingEvent {
|
|
41
44
|
amount: number;
|
|
42
|
-
attackType:
|
|
45
|
+
attackType: AttackType;
|
|
43
46
|
damageType: jdamagetype;
|
|
44
47
|
weaponType: jweapontype;
|
|
48
|
+
metadata: unknown;
|
|
45
49
|
readonly isAttack: boolean;
|
|
50
|
+
readonly originalAmount: number;
|
|
51
|
+
readonly originalMetadata: unknown;
|
|
46
52
|
}
|
|
47
53
|
export type DamageEvent = DamagingEvent & {
|
|
48
54
|
preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
|
|
@@ -68,25 +74,55 @@ declare const modifiers: {
|
|
|
68
74
|
speed: (unit: junit, value: number) => void;
|
|
69
75
|
armor: (unit: junit, value: number) => void;
|
|
70
76
|
};
|
|
71
|
-
|
|
77
|
+
export declare class UnitWeapon {
|
|
78
|
+
readonly unit: Unit;
|
|
72
79
|
readonly index: 0 | 1;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
constructor(unit: Unit, index: 0 | 1);
|
|
81
|
+
get cooldown(): number;
|
|
82
|
+
set cooldown(cooldown: number);
|
|
83
|
+
get damage(): [minimumDamage: number, maximumDamage: number];
|
|
84
|
+
set damage([minimumDamage, maximumDamage]: [number, number]);
|
|
85
|
+
get damageBase(): number;
|
|
86
|
+
set damageBase(damageBase: number);
|
|
87
|
+
get damageDiceCount(): number;
|
|
88
|
+
set damageDiceCount(damageDiceCount: number);
|
|
89
|
+
get damageDiceSideCount(): number;
|
|
90
|
+
set damageDiceSideCount(damageDiceSideCount: number);
|
|
91
|
+
get range(): number;
|
|
92
|
+
set range(range: number);
|
|
93
|
+
get impactDelay(): number;
|
|
94
|
+
set impactDelay(impactDelay: number);
|
|
95
|
+
get missileArc(): number;
|
|
96
|
+
set missileArc(missileArc: number);
|
|
97
|
+
get missileModelPath(): string;
|
|
98
|
+
set missileModelPath(missileModelPath: string);
|
|
99
|
+
get missileSpeed(): number;
|
|
100
|
+
set missileSpeed(missileSpeed: number);
|
|
78
101
|
}
|
|
79
102
|
declare const enum UnitPropertyKey {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
103
|
+
SYNC_ID = 100,
|
|
104
|
+
IS_PAUSED = 101,
|
|
105
|
+
STUN_COUNTER = 102,
|
|
106
|
+
DELAY_HEALTH_CHECKS_COUNTER = 103,
|
|
107
|
+
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 104,
|
|
108
|
+
PREVENT_DEATH_HEALTH_BONUS = 105,
|
|
109
|
+
IS_TEAM_GLOW_HIDDEN = 106,
|
|
110
|
+
LAST_X = 107,
|
|
111
|
+
LAST_Y = 108
|
|
84
112
|
}
|
|
113
|
+
export type UnitSyncId = number & {
|
|
114
|
+
readonly __unitSyncId: unique symbol;
|
|
115
|
+
};
|
|
85
116
|
export declare class Unit extends Handle<junit> {
|
|
117
|
+
readonly syncId: UnitSyncId;
|
|
86
118
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
87
119
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
120
|
+
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
121
|
+
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
88
122
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
89
123
|
private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
|
|
124
|
+
private [UnitPropertyKey.LAST_X]?;
|
|
125
|
+
private [UnitPropertyKey.LAST_Y]?;
|
|
90
126
|
private _owner?;
|
|
91
127
|
private _timeScale?;
|
|
92
128
|
private events?;
|
|
@@ -107,6 +143,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
107
143
|
get isAlive(): boolean;
|
|
108
144
|
get isDead(): boolean;
|
|
109
145
|
get isIllusion(): boolean;
|
|
146
|
+
get isStunned(): boolean;
|
|
110
147
|
get combatClassifications(): CombatClassifications;
|
|
111
148
|
set combatClassifications(combatClassifications: CombatClassifications);
|
|
112
149
|
hasCombatClassification(combatClassification: CombatClassification): boolean;
|
|
@@ -121,12 +158,17 @@ export declare class Unit extends Handle<junit> {
|
|
|
121
158
|
isEnemyOf(unit: Unit): boolean;
|
|
122
159
|
playAnimation(animation: string, rarity?: jraritycontrol): void;
|
|
123
160
|
playAnimation(animation: number): void;
|
|
161
|
+
resetAnimation(): void;
|
|
124
162
|
queueAnimation(animation: string): void;
|
|
125
163
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
164
|
+
get firstWeapon(): UnitWeapon;
|
|
165
|
+
get secondWeapon(): UnitWeapon;
|
|
126
166
|
get level(): number;
|
|
127
167
|
set level(v: number);
|
|
128
168
|
get xp(): number;
|
|
129
169
|
set xp(v: number);
|
|
170
|
+
get primaryAttribute(): UnitAttribute;
|
|
171
|
+
set primaryAttribute(primaryAttribute: UnitAttribute);
|
|
130
172
|
get strengthBase(): number;
|
|
131
173
|
set strengthBase(strengthBase: number);
|
|
132
174
|
get strengthBonus(): number;
|
|
@@ -148,6 +190,10 @@ export declare class Unit extends Handle<junit> {
|
|
|
148
190
|
set color(color: PlayerColor);
|
|
149
191
|
get acquisitionRange(): number;
|
|
150
192
|
set acquisitionRange(v: number);
|
|
193
|
+
/**
|
|
194
|
+
* Keeps this unit alive even if its health becomes negative until the current game thread yields.
|
|
195
|
+
*/
|
|
196
|
+
delayHealthChecks(): void;
|
|
151
197
|
get maxHealth(): number;
|
|
152
198
|
set maxHealth(maxHealth: number);
|
|
153
199
|
get healthRegenerationRate(): number;
|
|
@@ -197,11 +243,13 @@ export declare class Unit extends Handle<junit> {
|
|
|
197
243
|
set timeScale(v: number);
|
|
198
244
|
get collisionSize(): number;
|
|
199
245
|
get pathingCollisionRange(): number;
|
|
246
|
+
get movementType(): MovementType;
|
|
247
|
+
set movementType(movementType: MovementType);
|
|
200
248
|
set pathing(v: boolean);
|
|
201
249
|
isSelected(player: Player): boolean;
|
|
202
250
|
explode(): void;
|
|
203
251
|
kill(): void;
|
|
204
|
-
revive(
|
|
252
|
+
revive(x: number, y: number, doEffect?: boolean): void;
|
|
205
253
|
healTarget(target: Widget, amount: number): void;
|
|
206
254
|
useItem(item: Item): boolean;
|
|
207
255
|
issueImmediateOrder(order: number): boolean;
|
|
@@ -222,6 +270,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
222
270
|
getAbilityById(abilityId: number): UnitAbility | undefined;
|
|
223
271
|
removeAbility(abilityId: number): boolean;
|
|
224
272
|
hideAbility(abilityId: number, flag: boolean): void;
|
|
273
|
+
getAbilityRemainingCooldown(abilityId: number): number;
|
|
225
274
|
startAbilityCooldown(abilityId: number, cooldown: number): void;
|
|
226
275
|
endAbilityCooldown(abilityId: number): void;
|
|
227
276
|
interruptAttack(): void;
|
|
@@ -260,7 +309,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
260
309
|
static getInRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
261
310
|
static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
262
311
|
static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
|
|
263
|
-
static getSelectionOf(player: Player): Unit[];
|
|
312
|
+
static getSelectionOf(player: Player, target?: Unit[]): Unit[];
|
|
264
313
|
static readonly deathEvent: UnitTriggerEvent<[Unit]>;
|
|
265
314
|
static readonly onDecay: UnitTriggerEvent<[]>;
|
|
266
315
|
static readonly onResurrect: InitializingEvent<[Unit], void>;
|
|
@@ -295,9 +344,17 @@ export declare class Unit extends Handle<junit> {
|
|
|
295
344
|
static readonly autoAttackStartEvent: UnitTriggerEvent<[Unit]>;
|
|
296
345
|
static readonly onDamaging: Event<[source: Unit | undefined, target: Unit, event: DamagingEvent]>;
|
|
297
346
|
static readonly onDamage: InitializingEvent<[source: Unit | undefined, target: Unit, event: DamageEvent], jtrigger>;
|
|
298
|
-
static
|
|
299
|
-
static
|
|
300
|
-
static
|
|
347
|
+
static itemDroppedEvent: UnitTriggerEvent<[Item]>;
|
|
348
|
+
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
349
|
+
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
350
|
+
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
351
|
+
static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
|
|
352
|
+
static get itemMoveOrderEvent(): Event<[
|
|
353
|
+
unit: Unit,
|
|
354
|
+
item: Item,
|
|
355
|
+
slotFrom: 0 | 1 | 2 | 3 | 4 | 5,
|
|
356
|
+
slotTo: 0 | 1 | 2 | 3 | 4 | 5
|
|
357
|
+
]>;
|
|
301
358
|
static get onCreate(): EventDispatcher<[Unit], [Unit]>;
|
|
302
359
|
static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
|
|
303
360
|
getField(field: junitintegerfield | junitrealfield): number;
|
|
@@ -308,5 +365,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
308
365
|
setField(field: junitbooleanfield, value: boolean): boolean;
|
|
309
366
|
setField(field: junitstringfield, value: string): boolean;
|
|
310
367
|
toString(): string;
|
|
368
|
+
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
311
369
|
}
|
|
312
370
|
export {};
|