warscript 0.0.1-dev.19d0f81 → 0.0.1-dev.1a26d39
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/core/types/frame.lua +24 -21
- 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/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/decl/native.d.ts +6 -4
- 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.lua +5 -5
- package/engine/behaviour/ability/damage.d.ts +4 -2
- package/engine/behaviour/ability/damage.lua +24 -36
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +11 -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 +6 -1
- package/engine/behaviour/ability.lua +38 -17
- 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 +39 -3
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +21 -8
- package/engine/buff.lua +187 -121
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +49 -9
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +16 -16
- package/engine/internal/item.lua +135 -49
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/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/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 +2 -0
- package/engine/internal/unit/bonus.lua +10 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/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+damage.lua +3 -4
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +30 -27
- package/engine/internal/unit.lua +321 -246
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -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/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -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/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.lua +5 -4
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +15 -2
- package/engine/object-data/entry/unit-type.lua +135 -33
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +31 -5
- package/engine/object-field/unit.lua +95 -0
- package/engine/object-field.d.ts +17 -6
- package/engine/object-field.lua +291 -134
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- 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 +6 -0
- package/engine/unit.lua +6 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/package.json +2 -2
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +40 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { Event } from "../../../event";
|
|
3
|
+
declare module "../unit" {
|
|
4
|
+
interface Unit {
|
|
5
|
+
readonly unitInRangeEvent: Record<number, Event<[unit: Unit, range: number, unitInRange: Unit]>>;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
declare module "../unit" {
|
|
9
|
+
interface Unit {
|
|
10
|
+
readonly unitOutOfRangeEvent: Record<number, Event<[unit: Unit, range: number, unitOutOfRange: Unit]>>;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
local ____event = require("event")
|
|
6
|
+
local Event = ____event.Event
|
|
7
|
+
local InitializingEvent = ____event.InitializingEvent
|
|
8
|
+
local TriggerEvent = ____event.TriggerEvent
|
|
9
|
+
local ____unit = require("engine.internal.unit")
|
|
10
|
+
local Unit = ____unit.Unit
|
|
11
|
+
local ____timer = require("core.types.timer")
|
|
12
|
+
local Timer = ____timer.Timer
|
|
13
|
+
local ____attributes = require("attributes")
|
|
14
|
+
local attribute = ____attributes.attribute
|
|
15
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
16
|
+
local mutableLinkedMap = ____linked_2Dmap.mutableLinkedMap
|
|
17
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
18
|
+
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
19
|
+
local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
|
|
20
|
+
local getTriggerUnit = GetTriggerUnit
|
|
21
|
+
local triggerRegisterUnitInRange = TriggerRegisterUnitInRange
|
|
22
|
+
local eventInvoke = Event.invoke
|
|
23
|
+
__TS__ObjectDefineProperty(
|
|
24
|
+
Unit.prototype,
|
|
25
|
+
"unitInRangeEvent",
|
|
26
|
+
{get = function(self)
|
|
27
|
+
local unit = self
|
|
28
|
+
local handle = self.handle
|
|
29
|
+
local unitInRangeEvent = setmetatable(
|
|
30
|
+
{},
|
|
31
|
+
{__index = function(self, value)
|
|
32
|
+
local event = __TS__New(
|
|
33
|
+
TriggerEvent,
|
|
34
|
+
function(trigger)
|
|
35
|
+
triggerRegisterUnitInRange(trigger, handle, value, nil)
|
|
36
|
+
end,
|
|
37
|
+
function() return unit, value, Unit:of(getTriggerUnit()) end
|
|
38
|
+
)
|
|
39
|
+
rawset(self, value, event)
|
|
40
|
+
return event
|
|
41
|
+
end}
|
|
42
|
+
)
|
|
43
|
+
rawset(self, "unitInRangeEvent", unitInRangeEvent)
|
|
44
|
+
return unitInRangeEvent
|
|
45
|
+
end}
|
|
46
|
+
)
|
|
47
|
+
local units = __TS__New(LinkedSet)
|
|
48
|
+
local unitsInRangeByRangeAttribute = attribute()
|
|
49
|
+
local function registerUnitOfRangeEvent(unit, range, unitInRange)
|
|
50
|
+
units:add(unit)
|
|
51
|
+
unit:getOrPut(unitsInRangeByRangeAttribute, mutableLinkedMap):getOrPut(range, mutableLinkedSet):add(unitInRange)
|
|
52
|
+
end
|
|
53
|
+
__TS__ObjectDefineProperty(
|
|
54
|
+
Unit.prototype,
|
|
55
|
+
"unitOutOfRangeEvent",
|
|
56
|
+
{get = function(self)
|
|
57
|
+
local unit = self
|
|
58
|
+
local unitOutOfRangeEvent = setmetatable(
|
|
59
|
+
{},
|
|
60
|
+
{__index = function(self, value)
|
|
61
|
+
local event = __TS__New(
|
|
62
|
+
InitializingEvent,
|
|
63
|
+
function()
|
|
64
|
+
unit.unitInRangeEvent[value]:addListener(999999, registerUnitOfRangeEvent)
|
|
65
|
+
end
|
|
66
|
+
)
|
|
67
|
+
rawset(self, value, event)
|
|
68
|
+
return event
|
|
69
|
+
end}
|
|
70
|
+
)
|
|
71
|
+
rawset(self, "unitOutOfRangeEvent", unitOutOfRangeEvent)
|
|
72
|
+
return unitOutOfRangeEvent
|
|
73
|
+
end}
|
|
74
|
+
)
|
|
75
|
+
Timer.onPeriod[1]:addListener(function()
|
|
76
|
+
for unit in pairs(units) do
|
|
77
|
+
local unitsInRangeByRange = unit[unitsInRangeByRangeAttribute]
|
|
78
|
+
if unitsInRangeByRange ~= nil then
|
|
79
|
+
for range, unitsInRange in pairs(unitsInRangeByRange) do
|
|
80
|
+
for unitInRange in pairs(unitsInRange) do
|
|
81
|
+
if unit:getDistanceTo(unitInRange) > range then
|
|
82
|
+
unitsInRange:remove(unitInRange)
|
|
83
|
+
eventInvoke(unit.unitOutOfRangeEvent[range], unit, range, unitInRange)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end)
|
|
90
|
+
return ____exports
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____unit = require("engine.internal.unit")
|
|
5
|
+
local Unit = ____unit.Unit
|
|
6
|
+
local ____unit = require("engine.standard.fields.unit")
|
|
7
|
+
local SCALING_VALUE_UNIT_FIELD = ____unit.SCALING_VALUE_UNIT_FIELD
|
|
8
|
+
__TS__ObjectDefineProperty(
|
|
9
|
+
Unit.prototype,
|
|
10
|
+
"scale",
|
|
11
|
+
{
|
|
12
|
+
get = function(self)
|
|
13
|
+
return SCALING_VALUE_UNIT_FIELD:getValue(self)
|
|
14
|
+
end,
|
|
15
|
+
set = function(self, value)
|
|
16
|
+
SCALING_VALUE_UNIT_FIELD:setValue(self, value)
|
|
17
|
+
end
|
|
18
|
+
}
|
|
19
|
+
)
|
|
20
|
+
return ____exports
|
|
@@ -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)
|
|
@@ -9,6 +9,8 @@ local ____dummy = require("objutil.dummy")
|
|
|
9
9
|
local dummyUnitId = ____dummy.dummyUnitId
|
|
10
10
|
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
11
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
|
|
12
14
|
local createUnit = CreateUnit
|
|
13
15
|
local getOwningPlayer = GetOwningPlayer
|
|
14
16
|
local showUnit = ShowUnit
|
|
@@ -79,9 +81,6 @@ for ____, player in ipairs(Player.all) do
|
|
|
79
81
|
showUnit(dummy, false)
|
|
80
82
|
dummies[player] = dummy
|
|
81
83
|
end
|
|
82
|
-
---
|
|
83
|
-
-- @internal For use by internal systems only.
|
|
84
|
-
____exports.damageMetadataByTarget = setmetatable({}, {__mode = "k"})
|
|
85
84
|
Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType, metadata)
|
|
86
85
|
if attack == nil then
|
|
87
86
|
attack = false
|
|
@@ -104,7 +103,7 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
|
|
|
104
103
|
handle = dummies[__TS__InstanceOf(target, Unit) and target.owner or (self._owner or Player.neutralAggressive)]
|
|
105
104
|
end
|
|
106
105
|
if __TS__InstanceOf(target, Unit) then
|
|
107
|
-
|
|
106
|
+
damageMetadataByTarget[target] = metadata
|
|
108
107
|
end
|
|
109
108
|
return unitDamageTarget(
|
|
110
109
|
handle,
|
|
@@ -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"),
|
|
@@ -27,25 +36,54 @@ local instantOrderIds = luaSetOf(
|
|
|
27
36
|
orderId("undivineshield"),
|
|
28
37
|
orderId("unimmolation")
|
|
29
38
|
)
|
|
30
|
-
|
|
39
|
+
---
|
|
40
|
+
-- @internal For use by internal systems only.
|
|
41
|
+
____exports.resetAutoAttackTimer = function(unit)
|
|
42
|
+
if units:remove(unit) then
|
|
43
|
+
unit[targetAttribute] = nil
|
|
44
|
+
unit[impactDelayAttribute] = nil
|
|
45
|
+
unit[passedTimeAttribute] = nil
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
local function reset(unit, orderId)
|
|
31
49
|
if not (instantOrderIds[orderId] ~= nil) then
|
|
32
|
-
|
|
33
|
-
if eventTimer then
|
|
34
|
-
eventTimer:destroy()
|
|
35
|
-
eventTimerByUnit[source] = nil
|
|
36
|
-
end
|
|
50
|
+
____exports.resetAutoAttackTimer(unit)
|
|
37
51
|
end
|
|
38
52
|
end
|
|
39
53
|
Unit.onImmediateOrder:addListener(reset)
|
|
40
54
|
Unit.onPointOrder:addListener(reset)
|
|
41
55
|
Unit.onTargetOrder:addListener(reset)
|
|
42
|
-
local
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
local timerPeriod = 1 / 64
|
|
57
|
+
local function invokeEvent(unit)
|
|
58
|
+
units:remove(unit)
|
|
59
|
+
local target = unit[targetAttribute]
|
|
60
|
+
unit[targetAttribute] = nil
|
|
61
|
+
unit[impactDelayAttribute] = nil
|
|
62
|
+
unit[passedTimeAttribute] = nil
|
|
63
|
+
Event.invoke(autoAttackFinishEvent, unit, target)
|
|
64
|
+
end
|
|
65
|
+
local function checkUnit(unit)
|
|
66
|
+
local passedTime = unit[passedTimeAttribute] + timerPeriod
|
|
67
|
+
local impactDelay = unit[impactDelayAttribute]
|
|
68
|
+
if passedTime >= impactDelay and ceil(passedTime / 0.02) >= ceil(impactDelay / 0.02) then
|
|
69
|
+
invokeEvent(unit)
|
|
70
|
+
else
|
|
71
|
+
unit[passedTimeAttribute] = passedTime
|
|
72
|
+
end
|
|
45
73
|
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
local timer = Timer:simple(attackPoint, timerCallback, source, target)
|
|
49
|
-
eventTimerByUnit[source] = timer
|
|
74
|
+
Timer.onPeriod[timerPeriod]:addListener(function()
|
|
75
|
+
units:forEach(checkUnit)
|
|
50
76
|
end)
|
|
77
|
+
Unit.autoAttackStartEvent:addListener(
|
|
78
|
+
999999,
|
|
79
|
+
function(source, target)
|
|
80
|
+
if source[targetAttribute] ~= nil then
|
|
81
|
+
invokeEvent(source)
|
|
82
|
+
end
|
|
83
|
+
source[targetAttribute] = target
|
|
84
|
+
source[impactDelayAttribute] = (source:chooseWeapon(target) or source.firstWeapon).impactDelay
|
|
85
|
+
source[passedTimeAttribute] = -timerPeriod
|
|
86
|
+
units:add(source)
|
|
87
|
+
end
|
|
88
|
+
)
|
|
51
89
|
return ____exports
|
|
@@ -14,7 +14,7 @@ import { CombatClassification, CombatClassifications } from "../object-data/auxi
|
|
|
14
14
|
import { MovementType } from "../object-data/auxiliary/movement-type";
|
|
15
15
|
import { UnitAttribute } from "../object-data/auxiliary/unit-attribute";
|
|
16
16
|
import { AttackType } from "../object-data/auxiliary/attack-type";
|
|
17
|
-
import "
|
|
17
|
+
import { AttributesHolder } from "../../attributes";
|
|
18
18
|
export type UnitClassification = junittype;
|
|
19
19
|
export declare namespace UnitClassification {
|
|
20
20
|
const STRUCTURE: junittype;
|
|
@@ -23,6 +23,7 @@ export declare namespace UnitClassification {
|
|
|
23
23
|
const GROUND: junittype;
|
|
24
24
|
const SUMMONED: junittype;
|
|
25
25
|
const MECHANICAL: junittype;
|
|
26
|
+
const WORKER: junittype;
|
|
26
27
|
const ANCIENT: junittype;
|
|
27
28
|
const SUICIDAL: junittype;
|
|
28
29
|
const TAUREN: junittype;
|
|
@@ -40,7 +41,7 @@ type AbilityDispatcherTable<T extends any[] = []> = {
|
|
|
40
41
|
readonly [id: number]: Event<[Unit, Ability, ...T]>;
|
|
41
42
|
};
|
|
42
43
|
type AbilityEventDispatcher<T extends any[] = []> = Event<[Unit, Ability, ...T]> & AbilityDispatcherTable<T>;
|
|
43
|
-
export interface DamagingEvent {
|
|
44
|
+
export interface DamagingEvent extends AttributesHolder {
|
|
44
45
|
amount: number;
|
|
45
46
|
attackType: AttackType;
|
|
46
47
|
damageType: jdamagetype;
|
|
@@ -49,8 +50,9 @@ export interface DamagingEvent {
|
|
|
49
50
|
readonly isAttack: boolean;
|
|
50
51
|
readonly originalAmount: number;
|
|
51
52
|
readonly originalMetadata: unknown;
|
|
53
|
+
preventRetaliation(this: DamagingEvent): void;
|
|
52
54
|
}
|
|
53
|
-
export type DamageEvent = DamagingEvent & {
|
|
55
|
+
export type DamageEvent = Omit<DamagingEvent, "preventRetaliation"> & {
|
|
54
56
|
preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
|
|
55
57
|
};
|
|
56
58
|
export type AttackDamageEvent = DamagingEvent & {
|
|
@@ -78,10 +80,14 @@ export declare class UnitWeapon {
|
|
|
78
80
|
readonly unit: Unit;
|
|
79
81
|
readonly index: 0 | 1;
|
|
80
82
|
constructor(unit: Unit, index: 0 | 1);
|
|
83
|
+
get isEnabled(): boolean;
|
|
84
|
+
set isEnabled(isEnabled: boolean);
|
|
81
85
|
get cooldown(): number;
|
|
82
86
|
set cooldown(cooldown: number);
|
|
83
87
|
get damage(): [minimumDamage: number, maximumDamage: number];
|
|
84
88
|
set damage([minimumDamage, maximumDamage]: [number, number]);
|
|
89
|
+
get allowedTargetCombatClassifications(): CombatClassifications;
|
|
90
|
+
set allowedTargetCombatClassifications(allowedTargetCombatClassifications: CombatClassifications);
|
|
85
91
|
get damageBase(): number;
|
|
86
92
|
set damageBase(damageBase: number);
|
|
87
93
|
get damageDiceCount(): number;
|
|
@@ -103,12 +109,13 @@ declare const enum UnitPropertyKey {
|
|
|
103
109
|
SYNC_ID = 100,
|
|
104
110
|
IS_PAUSED = 101,
|
|
105
111
|
STUN_COUNTER = 102,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
|
112
119
|
}
|
|
113
120
|
export type UnitSyncId = number & {
|
|
114
121
|
readonly __unitSyncId: unique symbol;
|
|
@@ -117,6 +124,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
117
124
|
readonly syncId: UnitSyncId;
|
|
118
125
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
119
126
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
127
|
+
private [UnitPropertyKey.FORCE_STUN_COUNTER]?;
|
|
120
128
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
121
129
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
122
130
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
@@ -131,6 +139,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
131
139
|
private _fields?;
|
|
132
140
|
private getEvent;
|
|
133
141
|
constructor(handle: junit);
|
|
142
|
+
private saveData;
|
|
134
143
|
protected onDestroy(): HandleDestructor;
|
|
135
144
|
addAttackHandler(condition: AttackHandlerCondition, action: AttackHandlerAction): AttackHandler;
|
|
136
145
|
removeAttackHandler(handler: AttackHandler): boolean;
|
|
@@ -156,29 +165,23 @@ export declare class Unit extends Handle<junit> {
|
|
|
156
165
|
isInRangeOf(unit: Unit, range: number): boolean;
|
|
157
166
|
isAllyOf(unit: Unit): boolean;
|
|
158
167
|
isEnemyOf(unit: Unit): boolean;
|
|
159
|
-
playAnimation(animation: string, rarity?: jraritycontrol): void;
|
|
160
|
-
playAnimation(animation: number): void;
|
|
168
|
+
playAnimation(...parameters: [animation: number] | [animation: string, rarity?: jraritycontrol]): void;
|
|
161
169
|
resetAnimation(): void;
|
|
162
170
|
queueAnimation(animation: string): void;
|
|
163
171
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
164
172
|
get firstWeapon(): UnitWeapon;
|
|
165
173
|
get secondWeapon(): UnitWeapon;
|
|
174
|
+
chooseWeapon(target: Unit): UnitWeapon | undefined;
|
|
166
175
|
get level(): number;
|
|
167
176
|
set level(v: number);
|
|
168
177
|
get xp(): number;
|
|
169
178
|
set xp(v: number);
|
|
170
179
|
get primaryAttribute(): UnitAttribute;
|
|
171
180
|
set primaryAttribute(primaryAttribute: UnitAttribute);
|
|
172
|
-
get strengthBase(): number;
|
|
173
|
-
set strengthBase(strengthBase: number);
|
|
174
181
|
get strengthBonus(): number;
|
|
175
182
|
get strength(): number;
|
|
176
|
-
get agilityBase(): number;
|
|
177
|
-
set agilityBase(agilityBase: number);
|
|
178
183
|
get agilityBonus(): number;
|
|
179
184
|
get agility(): number;
|
|
180
|
-
get intelligenceBase(): number;
|
|
181
|
-
set intelligenceBase(intelligenceBase: number);
|
|
182
185
|
get intelligenceBonus(): number;
|
|
183
186
|
get intelligence(): number;
|
|
184
187
|
get name(): string;
|
|
@@ -212,8 +215,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
212
215
|
set facing(v: number);
|
|
213
216
|
get speed(): number;
|
|
214
217
|
set speed(v: number);
|
|
215
|
-
get flyHeight(): number;
|
|
216
|
-
set flyHeight(v: number);
|
|
217
218
|
get x(): number;
|
|
218
219
|
set x(v: number);
|
|
219
220
|
get y(): number;
|
|
@@ -237,8 +238,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
237
238
|
get isInvulnerable(): boolean;
|
|
238
239
|
get vertexColor(): Color;
|
|
239
240
|
set vertexColor(v: Color);
|
|
240
|
-
get scale(): number;
|
|
241
|
-
set scale(v: number);
|
|
242
241
|
get timeScale(): number;
|
|
243
242
|
set timeScale(v: number);
|
|
244
243
|
get collisionSize(): number;
|
|
@@ -262,18 +261,17 @@ export declare class Unit extends Handle<junit> {
|
|
|
262
261
|
dropItemTarget(item: Item, target: Widget): boolean;
|
|
263
262
|
dropItemSlot(item: Item, slot: number): boolean;
|
|
264
263
|
itemInSlot(slot: number): Item | null;
|
|
265
|
-
addAbility(abilityId: number): UnitAbility |
|
|
264
|
+
addAbility(abilityId: number): UnitAbility | undefined;
|
|
266
265
|
makeAbilityPermanent(abilityId: number, permanent: true): boolean;
|
|
267
266
|
setAbilityLevel(abilityId: number, level: number): number;
|
|
268
267
|
getAbilityLevel(abilityId: number): number;
|
|
269
268
|
hasAbility(abilityId: number): boolean;
|
|
270
|
-
|
|
271
|
-
removeAbility(
|
|
269
|
+
getAbility(abilityId: number): UnitAbility | undefined;
|
|
270
|
+
removeAbility(abilityTypeId: number): boolean;
|
|
272
271
|
hideAbility(abilityId: number, flag: boolean): void;
|
|
273
272
|
getAbilityRemainingCooldown(abilityId: number): number;
|
|
274
273
|
startAbilityCooldown(abilityId: number, cooldown: number): void;
|
|
275
274
|
endAbilityCooldown(abilityId: number): void;
|
|
276
|
-
interruptAttack(): void;
|
|
277
275
|
interruptCast(abilityId: number): void;
|
|
278
276
|
getDistanceTo(target: Unit | Vec2): number;
|
|
279
277
|
getCollisionDistanceTo(...target: [Unit] | [targetX: number, targetY: number]): number;
|
|
@@ -287,14 +285,16 @@ export declare class Unit extends Handle<junit> {
|
|
|
287
285
|
unpauseEx(): void;
|
|
288
286
|
incrementStunCounter(): void;
|
|
289
287
|
decrementStunCounter(): void;
|
|
288
|
+
incrementForceStunCounter(): void;
|
|
289
|
+
decrementForceStunCounter(): void;
|
|
290
290
|
set waygateActive(v: boolean);
|
|
291
291
|
get waygateActive(): boolean;
|
|
292
292
|
set waygateDestination(v: Vec2);
|
|
293
293
|
get waygateDestination(): Vec2;
|
|
294
294
|
get abilities(): ReadonlyArray<UnitAbility>;
|
|
295
|
-
get onUnitInRange(): Record<number, Event<[Unit]>>;
|
|
296
295
|
get onManaEqual(): Record<number, Event<[Unit, number]>>;
|
|
297
296
|
get manaEvent(): Record<Operator, Record<number, Event<[Unit]>>>;
|
|
297
|
+
get targetAcquiredEvent(): Event;
|
|
298
298
|
get onSelect(): Event;
|
|
299
299
|
get onDeselect(): Event;
|
|
300
300
|
get onImmediateOrder(): Event<[number]>;
|
|
@@ -310,6 +310,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
310
310
|
static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
311
311
|
static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
|
|
312
312
|
static getSelectionOf(player: Player, target?: Unit[]): Unit[];
|
|
313
|
+
static readonly levelChangedEvent: UnitTriggerEvent<[]>;
|
|
313
314
|
static readonly deathEvent: UnitTriggerEvent<[Unit]>;
|
|
314
315
|
static readonly onDecay: UnitTriggerEvent<[]>;
|
|
315
316
|
static readonly onResurrect: InitializingEvent<[Unit], void>;
|
|
@@ -347,7 +348,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
347
348
|
static itemDroppedEvent: UnitTriggerEvent<[Item]>;
|
|
348
349
|
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
349
350
|
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
350
|
-
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
351
|
+
static itemStackedEvent: UnitTriggerEvent<[target: Item, source: Item]>;
|
|
352
|
+
static get itemChargesChangedEvent(): Event<[unit: Unit, item: Item]>;
|
|
351
353
|
static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
|
|
352
354
|
static get itemMoveOrderEvent(): Event<[
|
|
353
355
|
unit: Unit,
|
|
@@ -366,5 +368,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
366
368
|
setField(field: junitstringfield, value: string): boolean;
|
|
367
369
|
toString(): string;
|
|
368
370
|
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
371
|
+
static synchronize: (player: Player, object: Unit | undefined) => Promise<Unit | undefined>;
|
|
369
372
|
}
|
|
370
373
|
export {};
|