warscript 0.0.1-dev.c79b20b → 0.0.1-dev.c7b0c06
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 +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +4 -0
- package/core/types/frame.lua +142 -22
- 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.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +16 -3
- package/engine/behavior.lua +233 -73
- 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 +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 +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- 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 +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -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 +28 -7
- package/engine/behaviour/ability.lua +137 -43
- 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 +119 -54
- package/engine/buff.lua +565 -298
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- package/engine/internal/item/ability.lua +162 -4
- 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/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- 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/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 +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- 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/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/{unit+item.d.ts → unit/item.d.ts} +5 -4
- package/engine/internal/{unit+item.lua → unit/item.lua} +32 -11
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- 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 +70 -13
- package/engine/internal/unit.d.ts +60 -28
- package/engine/internal/unit.lua +482 -283
- 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 +14 -2
- package/engine/local-client.lua +168 -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/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/{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 +177 -40
- 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 +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- 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-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +12 -6
- package/engine/object-field/ability.lua +11 -7
- 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 +362 -117
- 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 +4 -2
- package/engine/standard/fields/ability.lua +4 -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 +9 -1
- package/engine/unit.lua +9 -1
- package/index.d.ts +1 -0
- package/index.lua +1 -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.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- 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/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +43 -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/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.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,6 +1,7 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__New = ____lualib.__TS__New
|
|
4
5
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
6
|
local ____exports = {}
|
|
6
7
|
local ____behavior = require("engine.behavior")
|
|
@@ -9,17 +10,161 @@ local ____unit = require("engine.internal.unit")
|
|
|
9
10
|
local Unit = ____unit.Unit
|
|
10
11
|
require("engine.internal.unit+ability")
|
|
11
12
|
require("engine.internal.unit-missile-launch")
|
|
13
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
14
|
+
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
15
|
+
local ____lua_2Dmaps = require("utility.lua-maps")
|
|
16
|
+
local getOrPut = ____lua_2Dmaps.getOrPut
|
|
17
|
+
local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
|
|
18
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
19
|
+
local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
|
|
20
|
+
local ____bonus = require("engine.internal.unit.bonus")
|
|
21
|
+
local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
|
|
22
|
+
local getUnitBonus = ____bonus.getUnitBonus
|
|
23
|
+
local removeUnitBonus = ____bonus.removeUnitBonus
|
|
24
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
25
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
26
|
+
local safeCall = warpack.safeCall
|
|
27
|
+
local createBehaviorFunctionsByUnitTypeId = {}
|
|
28
|
+
local behaviorsByOwningPlayerEvent = {}
|
|
29
|
+
local listenerByBehaviorByOwningPlayerEvent = {}
|
|
30
|
+
local owningPlayerEventsByBehavior = {}
|
|
31
|
+
local behaviorsByInRangeUnitEvent = {}
|
|
32
|
+
local rangeByBehaviorByInRangeUnitEvent = {}
|
|
33
|
+
local listenerByBehaviorByInRangeUnitEvent = {}
|
|
34
|
+
local inRangeUnitEventsByBehavior = {}
|
|
12
35
|
____exports.UnitBehavior = __TS__Class()
|
|
13
36
|
local UnitBehavior = ____exports.UnitBehavior
|
|
14
37
|
UnitBehavior.name = "UnitBehavior"
|
|
15
38
|
__TS__ClassExtends(UnitBehavior, Behavior)
|
|
16
|
-
function UnitBehavior.prototype.____constructor(self, unit)
|
|
17
|
-
Behavior.prototype.____constructor(self, unit)
|
|
39
|
+
function UnitBehavior.prototype.____constructor(self, unit, priority)
|
|
40
|
+
Behavior.prototype.____constructor(self, unit, priority)
|
|
41
|
+
end
|
|
42
|
+
function UnitBehavior.prototype.onDestroy(self)
|
|
43
|
+
local owningPlayerEvents = owningPlayerEventsByBehavior[self]
|
|
44
|
+
if owningPlayerEvents ~= nil then
|
|
45
|
+
for event in pairs(owningPlayerEvents) do
|
|
46
|
+
local ____opt_0 = behaviorsByOwningPlayerEvent[event]
|
|
47
|
+
if ____opt_0 ~= nil then
|
|
48
|
+
____opt_0:remove(self)
|
|
49
|
+
end
|
|
50
|
+
local ____opt_2 = listenerByBehaviorByOwningPlayerEvent[event]
|
|
51
|
+
if ____opt_2 ~= nil then
|
|
52
|
+
____opt_2[self] = nil
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
owningPlayerEventsByBehavior[self] = nil
|
|
56
|
+
end
|
|
57
|
+
local inRangeUnitEvents = inRangeUnitEventsByBehavior[self]
|
|
58
|
+
if inRangeUnitEvents ~= nil then
|
|
59
|
+
for event in pairs(inRangeUnitEvents) do
|
|
60
|
+
local ____opt_4 = behaviorsByInRangeUnitEvent[event]
|
|
61
|
+
if ____opt_4 ~= nil then
|
|
62
|
+
____opt_4:remove(self)
|
|
63
|
+
end
|
|
64
|
+
local ____opt_6 = rangeByBehaviorByInRangeUnitEvent[event]
|
|
65
|
+
if ____opt_6 ~= nil then
|
|
66
|
+
____opt_6[self] = nil
|
|
67
|
+
end
|
|
68
|
+
local ____opt_8 = listenerByBehaviorByInRangeUnitEvent[event]
|
|
69
|
+
if ____opt_8 ~= nil then
|
|
70
|
+
____opt_8[self] = nil
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
inRangeUnitEventsByBehavior[self] = nil
|
|
74
|
+
end
|
|
75
|
+
if self._bonusIdByBonusType ~= nil then
|
|
76
|
+
for bonusType, bonusId in pairs(self._bonusIdByBonusType) do
|
|
77
|
+
removeUnitBonus(self.object, bonusType, bonusId)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
return Behavior.prototype.onDestroy(self)
|
|
81
|
+
end
|
|
82
|
+
function UnitBehavior.prototype.getUnitBonus(self, bonusType)
|
|
83
|
+
local ____opt_10 = self._bonusIdByBonusType
|
|
84
|
+
local bonusId = ____opt_10 and ____opt_10:get(bonusType)
|
|
85
|
+
return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
|
|
86
|
+
end
|
|
87
|
+
function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
|
|
88
|
+
local bonusIdByBonusType = self._bonusIdByBonusType
|
|
89
|
+
if bonusIdByBonusType == nil then
|
|
90
|
+
bonusIdByBonusType = __TS__New(LinkedMap)
|
|
91
|
+
self._bonusIdByBonusType = bonusIdByBonusType
|
|
92
|
+
end
|
|
93
|
+
bonusIdByBonusType:put(
|
|
94
|
+
bonusType,
|
|
95
|
+
addOrUpdateOrRemoveUnitBonus(
|
|
96
|
+
self.object,
|
|
97
|
+
bonusType,
|
|
98
|
+
bonusIdByBonusType:get(bonusType),
|
|
99
|
+
value
|
|
100
|
+
)
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
function UnitBehavior.prototype.registerOwningPlayerEvent(self, event, extractPlayer, listener)
|
|
104
|
+
local listenerByBehavior = getOrPut(listenerByBehaviorByOwningPlayerEvent, event, mutableLuaMap)
|
|
105
|
+
listenerByBehavior[self] = listener
|
|
106
|
+
getOrPut(inRangeUnitEventsByBehavior, self, mutableLuaSet)[event] = true
|
|
107
|
+
local behaviors = behaviorsByOwningPlayerEvent[event]
|
|
108
|
+
if behaviors == nil then
|
|
109
|
+
event:addListener(function(...)
|
|
110
|
+
local behaviors = behaviorsByOwningPlayerEvent[event]
|
|
111
|
+
if behaviors ~= nil then
|
|
112
|
+
local player = extractPlayer(...)
|
|
113
|
+
if player ~= nil then
|
|
114
|
+
for behavior in pairs(behaviors) do
|
|
115
|
+
if behavior.unit.owner == player then
|
|
116
|
+
safeCall(behavior[listenerByBehavior[behavior]], behavior, ...)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end)
|
|
122
|
+
behaviors = __TS__New(LinkedSet)
|
|
123
|
+
behaviorsByOwningPlayerEvent[event] = behaviors
|
|
124
|
+
end
|
|
125
|
+
behaviors:add(self)
|
|
126
|
+
end
|
|
127
|
+
function UnitBehavior.prototype.registerInRangeUnitEvent(self, event, extractUnit, range, listener)
|
|
128
|
+
local rangeByBehavior = getOrPut(rangeByBehaviorByInRangeUnitEvent, event, mutableLuaMap)
|
|
129
|
+
rangeByBehavior[self] = range
|
|
130
|
+
local listenerByBehavior = getOrPut(listenerByBehaviorByInRangeUnitEvent, event, mutableLuaMap)
|
|
131
|
+
listenerByBehavior[self] = listener
|
|
132
|
+
getOrPut(inRangeUnitEventsByBehavior, self, mutableLuaSet)[event] = true
|
|
133
|
+
local behaviors = behaviorsByInRangeUnitEvent[event]
|
|
134
|
+
if behaviors == nil then
|
|
135
|
+
event:addListener(function(...)
|
|
136
|
+
local behaviors = behaviorsByInRangeUnitEvent[event]
|
|
137
|
+
if behaviors ~= nil then
|
|
138
|
+
local unit = extractUnit(...)
|
|
139
|
+
if unit ~= nil then
|
|
140
|
+
for behavior in pairs(behaviors) do
|
|
141
|
+
local range = rangeByBehavior[behavior]
|
|
142
|
+
if range ~= nil and unit:getCollisionDistanceTo(behavior.unit) <= range then
|
|
143
|
+
safeCall(behavior[listenerByBehavior[behavior]], behavior, ...)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end)
|
|
149
|
+
behaviors = __TS__New(LinkedSet)
|
|
150
|
+
behaviorsByInRangeUnitEvent[event] = behaviors
|
|
151
|
+
end
|
|
152
|
+
behaviors:add(self)
|
|
153
|
+
end
|
|
154
|
+
function UnitBehavior.prototype.onImmediateOrder(self, orderId)
|
|
155
|
+
end
|
|
156
|
+
function UnitBehavior.prototype.onTargetOrder(self, orderId, target)
|
|
157
|
+
end
|
|
158
|
+
function UnitBehavior.prototype.onPointOrder(self, orderId, x, y)
|
|
18
159
|
end
|
|
19
160
|
function UnitBehavior.prototype.onAutoAttackStart(self, target)
|
|
20
161
|
end
|
|
21
162
|
function UnitBehavior.prototype.onAutoAttackFinish(self, target)
|
|
22
163
|
end
|
|
164
|
+
function UnitBehavior.prototype.onTargetingAutoAttackStart(self, source)
|
|
165
|
+
end
|
|
166
|
+
function UnitBehavior.prototype.onTargetingAutoAttackFinish(self, source)
|
|
167
|
+
end
|
|
23
168
|
function UnitBehavior.prototype.onDamageDealing(self, target, event)
|
|
24
169
|
end
|
|
25
170
|
function UnitBehavior.prototype.onDamageDealt(self, target, event)
|
|
@@ -32,6 +177,34 @@ function UnitBehavior.prototype.onAbilityGained(self, ability)
|
|
|
32
177
|
end
|
|
33
178
|
function UnitBehavior.prototype.onAbilityLost(self, ability)
|
|
34
179
|
end
|
|
180
|
+
function UnitBehavior.prototype.onAbilityChannelingStart(self, ability)
|
|
181
|
+
end
|
|
182
|
+
function UnitBehavior.prototype.onAbilityImpact(self, ability)
|
|
183
|
+
end
|
|
184
|
+
function UnitBehavior.prototype.onAbilityWidgetTargetImpact(self, ability, target)
|
|
185
|
+
end
|
|
186
|
+
function UnitBehavior.prototype.onAbilityUnitTargetImpact(self, ability, target)
|
|
187
|
+
end
|
|
188
|
+
function UnitBehavior.prototype.onAbilityItemTargetImpact(self, ability, target)
|
|
189
|
+
end
|
|
190
|
+
function UnitBehavior.prototype.onAbilityDestructibleTargetImpact(self, ability, target)
|
|
191
|
+
end
|
|
192
|
+
function UnitBehavior.prototype.onAbilityPointTargetImpact(self, ability, x, y)
|
|
193
|
+
end
|
|
194
|
+
function UnitBehavior.prototype.onAbilityNoTargetImpact(self, ability)
|
|
195
|
+
end
|
|
196
|
+
function UnitBehavior.prototype.onAbilityChannelingFinish(self, ability)
|
|
197
|
+
end
|
|
198
|
+
function UnitBehavior.prototype.onAbilityStop(self, ability)
|
|
199
|
+
end
|
|
200
|
+
function UnitBehavior.prototype.onTargetingAbilityChannelingStart(self, ability, source)
|
|
201
|
+
end
|
|
202
|
+
function UnitBehavior.prototype.onTargetingAbilityImpact(self, ability, source)
|
|
203
|
+
end
|
|
204
|
+
function UnitBehavior.prototype.onBuffGained(self, buff)
|
|
205
|
+
end
|
|
206
|
+
function UnitBehavior.prototype.onBuffLost(self, buff)
|
|
207
|
+
end
|
|
35
208
|
function UnitBehavior.prototype.onItemDropped(self, item)
|
|
36
209
|
end
|
|
37
210
|
function UnitBehavior.prototype.onItemPickedUp(self, item)
|
|
@@ -40,10 +213,29 @@ function UnitBehavior.prototype.onItemUsed(self, item)
|
|
|
40
213
|
end
|
|
41
214
|
function UnitBehavior.prototype.onItemStacked(self, item)
|
|
42
215
|
end
|
|
216
|
+
function UnitBehavior.prototype.onItemChargesChanged(self, item)
|
|
217
|
+
end
|
|
43
218
|
function UnitBehavior.prototype.onKill(self, target)
|
|
44
219
|
end
|
|
45
220
|
function UnitBehavior.prototype.onDeath(self, source)
|
|
46
221
|
end
|
|
222
|
+
function UnitBehavior.prototype.onOwnerChange(self, previousOwner)
|
|
223
|
+
end
|
|
224
|
+
function UnitBehavior.bindUnitType(self, unitTypeId, ...)
|
|
225
|
+
local args = {...}
|
|
226
|
+
local createBehaviorFunctions = createBehaviorFunctionsByUnitTypeId[unitTypeId]
|
|
227
|
+
if createBehaviorFunctions == nil then
|
|
228
|
+
createBehaviorFunctions = {}
|
|
229
|
+
createBehaviorFunctionsByUnitTypeId[unitTypeId] = createBehaviorFunctions
|
|
230
|
+
end
|
|
231
|
+
createBehaviorFunctions[#createBehaviorFunctions + 1] = function(unit)
|
|
232
|
+
return __TS__New(
|
|
233
|
+
self,
|
|
234
|
+
unit,
|
|
235
|
+
table.unpack(args)
|
|
236
|
+
)
|
|
237
|
+
end
|
|
238
|
+
end
|
|
47
239
|
__TS__SetDescriptor(
|
|
48
240
|
UnitBehavior.prototype,
|
|
49
241
|
"unit",
|
|
@@ -53,11 +245,28 @@ __TS__SetDescriptor(
|
|
|
53
245
|
true
|
|
54
246
|
);
|
|
55
247
|
(function(self)
|
|
248
|
+
Unit.onImmediateOrder:addListener(function(source, orderId)
|
|
249
|
+
____exports.UnitBehavior:forAll(source, "onImmediateOrder", orderId)
|
|
250
|
+
end)
|
|
251
|
+
Unit.onTargetOrder:addListener(function(source, orderId, target)
|
|
252
|
+
____exports.UnitBehavior:forAll(source, "onTargetOrder", orderId, target)
|
|
253
|
+
end)
|
|
254
|
+
Unit.onPointOrder:addListener(function(source, orderId, x, y)
|
|
255
|
+
____exports.UnitBehavior:forAll(
|
|
256
|
+
source,
|
|
257
|
+
"onPointOrder",
|
|
258
|
+
orderId,
|
|
259
|
+
x,
|
|
260
|
+
y
|
|
261
|
+
)
|
|
262
|
+
end)
|
|
56
263
|
Unit.autoAttackStartEvent:addListener(function(source, target)
|
|
57
264
|
____exports.UnitBehavior:forAll(source, "onAutoAttackStart", target)
|
|
265
|
+
____exports.UnitBehavior:forAll(target, "onTargetingAutoAttackStart", source)
|
|
58
266
|
end)
|
|
59
267
|
Unit.autoAttackFinishEvent:addListener(function(source, target)
|
|
60
268
|
____exports.UnitBehavior:forAll(source, "onAutoAttackFinish", target)
|
|
269
|
+
____exports.UnitBehavior:forAll(target, "onTargetingAutoAttackFinish", source)
|
|
61
270
|
end)
|
|
62
271
|
Unit.onDamaging:addListener(function(source, target, event)
|
|
63
272
|
if source ~= nil then
|
|
@@ -71,11 +280,51 @@ __TS__SetDescriptor(
|
|
|
71
280
|
end
|
|
72
281
|
____exports.UnitBehavior:forAll(target, "onDamageReceived", source, event)
|
|
73
282
|
end)
|
|
74
|
-
Unit.abilityGainedEvent:addListener(function(source,
|
|
75
|
-
____exports.UnitBehavior:forAll(source, "onAbilityGained",
|
|
283
|
+
Unit.abilityGainedEvent:addListener(function(source, ability)
|
|
284
|
+
____exports.UnitBehavior:forAll(source, "onAbilityGained", ability)
|
|
285
|
+
end)
|
|
286
|
+
Unit.abilityLostEvent:addListener(function(source, ability)
|
|
287
|
+
____exports.UnitBehavior:forAll(source, "onAbilityLost", ability)
|
|
288
|
+
end)
|
|
289
|
+
Unit.abilityChannelingStartEvent:addListener(function(source, ability)
|
|
290
|
+
____exports.UnitBehavior:forAll(source, "onAbilityChannelingStart", ability)
|
|
291
|
+
end)
|
|
292
|
+
Unit.abilityUnitTargetChannelingStartEvent:addListener(function(source, ability, target)
|
|
293
|
+
____exports.UnitBehavior:forAll(target, "onTargetingAbilityChannelingStart", ability, source)
|
|
76
294
|
end)
|
|
77
|
-
Unit.
|
|
78
|
-
____exports.UnitBehavior:forAll(source, "
|
|
295
|
+
Unit.abilityImpactEvent:addListener(function(source, ability)
|
|
296
|
+
____exports.UnitBehavior:forAll(source, "onAbilityImpact", ability)
|
|
297
|
+
end)
|
|
298
|
+
Unit.abilityWidgetTargetImpactEvent:addListener(function(source, ability, target)
|
|
299
|
+
____exports.UnitBehavior:forAll(source, "onAbilityWidgetTargetImpact", ability, target)
|
|
300
|
+
end)
|
|
301
|
+
Unit.abilityUnitTargetImpactEvent:addListener(function(source, ability, target)
|
|
302
|
+
____exports.UnitBehavior:forAll(source, "onAbilityUnitTargetImpact", ability, target)
|
|
303
|
+
____exports.UnitBehavior:forAll(target, "onTargetingAbilityImpact", ability, source)
|
|
304
|
+
end)
|
|
305
|
+
Unit.abilityItemTargetImpactEvent:addListener(function(source, ability, target)
|
|
306
|
+
____exports.UnitBehavior:forAll(source, "onAbilityItemTargetImpact", ability, target)
|
|
307
|
+
end)
|
|
308
|
+
Unit.abilityDestructibleTargetImpactEvent:addListener(function(source, ability, target)
|
|
309
|
+
____exports.UnitBehavior:forAll(source, "onAbilityDestructibleTargetImpact", ability, target)
|
|
310
|
+
end)
|
|
311
|
+
Unit.abilityPointTargetImpactEvent:addListener(function(source, ability, x, y)
|
|
312
|
+
____exports.UnitBehavior:forAll(
|
|
313
|
+
source,
|
|
314
|
+
"onAbilityPointTargetImpact",
|
|
315
|
+
ability,
|
|
316
|
+
x,
|
|
317
|
+
y
|
|
318
|
+
)
|
|
319
|
+
end)
|
|
320
|
+
Unit.abilityNoTargetImpactEvent:addListener(function(source, ability)
|
|
321
|
+
____exports.UnitBehavior:forAll(source, "onAbilityNoTargetImpact", ability)
|
|
322
|
+
end)
|
|
323
|
+
Unit.abilityChannelingFinishEvent:addListener(function(source, ability)
|
|
324
|
+
____exports.UnitBehavior:forAll(source, "onAbilityChannelingFinish", ability)
|
|
325
|
+
end)
|
|
326
|
+
Unit.abilityStopEvent:addListener(function(source, ability)
|
|
327
|
+
____exports.UnitBehavior:forAll(source, "onAbilityStop", ability)
|
|
79
328
|
end)
|
|
80
329
|
Unit.deathEvent:addListener(function(target, source)
|
|
81
330
|
if source ~= nil then
|
|
@@ -95,7 +344,21 @@ __TS__SetDescriptor(
|
|
|
95
344
|
Unit.itemStackedEvent:addListener(function(unit, item)
|
|
96
345
|
____exports.UnitBehavior:forAll(unit, "onItemStacked", item)
|
|
97
346
|
end)
|
|
347
|
+
Unit.itemChargesChangedEvent:addListener(function(unit, item)
|
|
348
|
+
____exports.UnitBehavior:forAll(unit, "onItemChargesChanged", item)
|
|
349
|
+
end)
|
|
350
|
+
Unit.onOwnerChange:addListener(function(unit, previousOwner)
|
|
351
|
+
____exports.UnitBehavior:forAll(unit, "onOwnerChange", previousOwner)
|
|
352
|
+
end)
|
|
98
353
|
end)(UnitBehavior)
|
|
354
|
+
Unit.onCreate:addListener(function(unit)
|
|
355
|
+
local createBehaviorFunctions = createBehaviorFunctionsByUnitTypeId[unit.typeId]
|
|
356
|
+
if createBehaviorFunctions ~= nil then
|
|
357
|
+
for ____, createBehavior in ipairs(createBehaviorFunctions) do
|
|
358
|
+
createBehavior(unit)
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
end)
|
|
99
362
|
Unit.destroyEvent:addListener(function(unit)
|
|
100
363
|
____exports.UnitBehavior:forAll(unit, "destroy")
|
|
101
364
|
end)
|
package/engine/buff.d.ts
CHANGED
|
@@ -8,9 +8,12 @@ import { BuffResistanceType } from "./object-data/auxiliary/buff-resistance-type
|
|
|
8
8
|
import { AbilityBooleanField, AbilityBooleanLevelField, AbilityCombatClassificationsLevelField, AbilityDependentValue, AbilityEnumLevelField, AbilityIntegerField, AbilityIntegerLevelField, AbilityNumberField, AbilityNumberLevelField } from "./object-field/ability";
|
|
9
9
|
import { CombatClassifications } from "./object-data/auxiliary/combat-classification";
|
|
10
10
|
import { IsExactlyAny, Prohibit, ReadonlyNonEmptyArray } from "../utility/types";
|
|
11
|
+
import { EffectParameters } from "../core/types/effect";
|
|
11
12
|
import { UnitBehavior } from "./behaviour/unit";
|
|
12
13
|
import type { Widget } from "../core/types/widget";
|
|
13
14
|
import { Destructor } from "../destroyable";
|
|
15
|
+
import { Event } from "../event";
|
|
16
|
+
import { AbilityBehavior } from "./behaviour/ability";
|
|
14
17
|
export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
|
|
15
18
|
type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
|
|
16
19
|
type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
|
|
@@ -28,8 +31,10 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
28
31
|
source?: Unit;
|
|
29
32
|
behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
|
|
30
33
|
abilityTypeIds?: Record<AbilityTypeId, {
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
readonly fields?: [
|
|
35
|
+
AbilityNumberField | AbilityNumberLevelField,
|
|
36
|
+
NumberParameterValueType
|
|
37
|
+
][];
|
|
33
38
|
/** Default `true`. */
|
|
34
39
|
readonly isButtonVisible?: boolean;
|
|
35
40
|
/** Default is the level of the source ability or 0 if it is absent. */
|
|
@@ -51,15 +56,20 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
51
56
|
damageIncrease?: NumberParameterValueType;
|
|
52
57
|
damageIncreaseFactor?: NumberParameterValueType;
|
|
53
58
|
armorIncrease?: NumberParameterValueType;
|
|
54
|
-
|
|
59
|
+
maxHealthIncrease?: NumberParameterValueType;
|
|
60
|
+
maxManaIncrease?: NumberParameterValueType;
|
|
55
61
|
attackSpeedIncreaseFactor?: NumberParameterValueType;
|
|
56
62
|
movementSpeedIncreaseFactor?: NumberParameterValueType;
|
|
63
|
+
manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
|
|
64
|
+
evasionProbability?: NumberParameterValueType;
|
|
65
|
+
missProbability?: NumberParameterValueType;
|
|
57
66
|
damageFactor?: NumberParameterValueType;
|
|
58
67
|
receivedDamageFactor?: NumberParameterValueType;
|
|
59
68
|
receivedMagicDamageFactor?: NumberParameterValueType;
|
|
60
69
|
durationIncreaseOnAutoAttack?: NumberParameterValueType;
|
|
61
70
|
maximumRemainingDuration?: NumberParameterValueType;
|
|
62
71
|
maximumDuration?: NumberParameterValueType;
|
|
72
|
+
turnsIntoGhost?: BooleanParameterValueType;
|
|
63
73
|
stuns?: BooleanParameterValueType;
|
|
64
74
|
ignoresStunImmunity?: BooleanParameterValueType;
|
|
65
75
|
providesStunImmunity?: BooleanParameterValueType;
|
|
@@ -70,59 +80,72 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
|
|
|
70
80
|
maximumAutoAttackCount?: IntegerParameterValueType;
|
|
71
81
|
maximumDamageDealtEventCount?: IntegerParameterValueType;
|
|
72
82
|
maximumDamageReceivedEventCount?: IntegerParameterValueType;
|
|
83
|
+
absorbedDamageFactor?: NumberParameterValueType;
|
|
84
|
+
maximumDamageAbsorbed?: NumberParameterValueType;
|
|
85
|
+
destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
|
|
73
86
|
damageOnExpiration?: NumberParameterValueType;
|
|
74
87
|
healingOnExpiration?: NumberParameterValueType;
|
|
75
88
|
killsOnExpiration?: BooleanParameterValueType;
|
|
76
89
|
explodesOnExpiration?: BooleanParameterValueType;
|
|
90
|
+
abilityCooldownFactor?: NumberParameterValueType;
|
|
77
91
|
uniqueGroup?: BuffUniqueGroup;
|
|
78
92
|
} : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
|
|
79
93
|
declare const enum BuffPropertyKey {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
94
|
+
STATE = 100,
|
|
95
|
+
UNIT = 101,
|
|
96
|
+
SOURCE = 102,
|
|
97
|
+
DURATION = 103,
|
|
98
|
+
UNIQUE_GROUP = 104,
|
|
99
|
+
EFFECT_MODEL_PATH = 105,
|
|
100
|
+
SPECIAL_EFFECT_MODEL_PATH = 106,
|
|
101
|
+
DURATION_INCREASE_ON_AUTO_ATTACK = 107,
|
|
102
|
+
MAXIMUM_DURATION = 108,
|
|
103
|
+
MAXIMUM_REMAINING_DURATION = 109,
|
|
104
|
+
DAMAGE_OVER_DURATION = 110,
|
|
105
|
+
DAMAGE_PER_INTERVAL = 111,
|
|
106
|
+
DAMAGE_INTERVAL = 112,
|
|
107
|
+
REMAINING_DAMAGE_OVER_DURATION = 113,
|
|
108
|
+
DAMAGE_INTERVAL_TIMER = 114,
|
|
109
|
+
HEALING_OVER_DURATION = 115,
|
|
110
|
+
HEALING_PER_INTERVAL = 116,
|
|
111
|
+
HEALING_INTERVAL = 117,
|
|
112
|
+
REMAINING_HEALING_OVER_DURATION = 118,
|
|
113
|
+
HEALING_INTERVAL_TIMER = 119,
|
|
114
|
+
DAMAGE_ON_EXPIRATION = 120,
|
|
115
|
+
HEALING_ON_EXPIRATION = 121,
|
|
116
|
+
DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 122,
|
|
117
|
+
DAMAGE_UPON_DEATH = 123,
|
|
118
|
+
DAMAGE_UPON_DEATH_RANGE = 124,
|
|
119
|
+
MEDIUM_DAMAGE_UPON_DEATH = 125,
|
|
120
|
+
MEDIUM_DAMAGE_UPON_DEATH_RANGE = 126,
|
|
121
|
+
SMALL_DAMAGE_UPON_DEATH = 127,
|
|
122
|
+
SMALL_DAMAGE_UPON_DEATH_RANGE = 128,
|
|
123
|
+
AUTO_ATTACK_COUNT = 129,
|
|
124
|
+
MAXIMUM_AUTO_ATTACK_COUNT = 130,
|
|
125
|
+
DAMAGE_DEALT_EVENT_COUNT = 131,
|
|
126
|
+
MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
|
|
127
|
+
DAMAGE_RECEIVED_EVENT_COUNT = 133,
|
|
128
|
+
MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
|
|
129
|
+
ABSORBED_DAMAGE_FACTOR = 135,
|
|
130
|
+
MAXIMUM_DAMAGE_ABSORBED = 136,
|
|
131
|
+
DAMAGE_ABSORBED = 137,
|
|
132
|
+
DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED = 138,
|
|
133
|
+
TURNS_INTO_GHOST = 139,
|
|
134
|
+
STUNS = 140,
|
|
135
|
+
IGNORES_STUN_IMMUNITY = 141,
|
|
136
|
+
DISABLES_AUTO_ATTACK = 142,
|
|
137
|
+
PROVIDES_INVULNERABILITY = 143,
|
|
138
|
+
KILLS_ON_EXPIRATION = 144,
|
|
139
|
+
EXPLODES_ON_EXPIRATION = 145,
|
|
140
|
+
MISS_PROBABILITY = 146,
|
|
141
|
+
ABILITY_COOLDOWN_FACTOR = 147,
|
|
142
|
+
ABILITY_COOLDOWN_MODIFIER = 148
|
|
120
143
|
}
|
|
121
144
|
export declare const enum BuffTypeIdSelectionPolicy {
|
|
122
145
|
LEAST_DURATION = 0
|
|
123
146
|
}
|
|
124
147
|
export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
|
|
125
|
-
export type BuffConstructorParameters<
|
|
148
|
+
export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
|
|
126
149
|
...typeId: [ApplicableBuffTypeId] | [
|
|
127
150
|
typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
|
|
128
151
|
typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
|
|
@@ -130,13 +153,16 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
|
|
|
130
153
|
polarity: BuffPolarityParameterType,
|
|
131
154
|
resistanceType: BuffResistanceTypeParameterType,
|
|
132
155
|
...abilityOrParameters: [
|
|
133
|
-
ability
|
|
156
|
+
ability?: Ability | AbilityBehavior,
|
|
134
157
|
parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
|
|
135
|
-
] | [
|
|
136
|
-
|
|
158
|
+
] | [
|
|
159
|
+
parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
|
|
160
|
+
]
|
|
161
|
+
] : never;
|
|
137
162
|
export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
|
|
138
163
|
private _unit;
|
|
139
164
|
protected readonly __additionalParametersBrand?: AdditionalParameters;
|
|
165
|
+
private [BuffPropertyKey.STATE];
|
|
140
166
|
private [BuffPropertyKey.UNIT];
|
|
141
167
|
private [BuffPropertyKey.SOURCE]?;
|
|
142
168
|
private [BuffPropertyKey.DURATION];
|
|
@@ -171,31 +197,37 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
171
197
|
private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
|
|
172
198
|
private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
|
|
173
199
|
private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
|
|
200
|
+
private [BuffPropertyKey.ABSORBED_DAMAGE_FACTOR]?;
|
|
201
|
+
private [BuffPropertyKey.MAXIMUM_DAMAGE_ABSORBED]?;
|
|
202
|
+
private [BuffPropertyKey.DAMAGE_ABSORBED]?;
|
|
203
|
+
private [BuffPropertyKey.DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED]?;
|
|
204
|
+
private [BuffPropertyKey.TURNS_INTO_GHOST]?;
|
|
174
205
|
private [BuffPropertyKey.STUNS]?;
|
|
175
206
|
private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
|
|
176
207
|
private [BuffPropertyKey.DISABLES_AUTO_ATTACK]?;
|
|
177
208
|
private [BuffPropertyKey.PROVIDES_INVULNERABILITY]?;
|
|
178
209
|
private [BuffPropertyKey.KILLS_ON_EXPIRATION]?;
|
|
179
210
|
private [BuffPropertyKey.EXPLODES_ON_EXPIRATION]?;
|
|
211
|
+
private [BuffPropertyKey.ABILITY_COOLDOWN_FACTOR]?;
|
|
212
|
+
private [BuffPropertyKey.ABILITY_COOLDOWN_MODIFIER]?;
|
|
180
213
|
protected static readonly defaultParameters: BuffParameters;
|
|
181
214
|
get source(): Unit;
|
|
182
215
|
readonly typeId: ApplicableBuffTypeId;
|
|
183
216
|
readonly polarity: BuffPolarity;
|
|
184
217
|
readonly resistanceType: BuffResistanceType;
|
|
185
|
-
readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any :
|
|
218
|
+
readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : AdditionalParameters extends Record<PropertyKey, never> ? undefined : {
|
|
186
219
|
[K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
|
|
187
220
|
};
|
|
188
221
|
private readonly handle;
|
|
222
|
+
readonly previousBuff?: Buff;
|
|
189
223
|
private _timer?;
|
|
190
224
|
private readonly _level?;
|
|
191
225
|
private readonly _spellStealPriority?;
|
|
192
226
|
private readonly _learnLevelMinimum?;
|
|
193
|
-
private
|
|
227
|
+
private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
|
|
194
228
|
private readonly _abilityTypeIds?;
|
|
195
229
|
private _behaviors?;
|
|
196
|
-
|
|
197
|
-
private addOrUpdateOrRemoveUnitBonus;
|
|
198
|
-
constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
|
|
230
|
+
constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
|
|
199
231
|
get level(): number;
|
|
200
232
|
get remainingDamageOverDuration(): number;
|
|
201
233
|
set remainingDamageOverDuration(remainingDamageOverDuration: number);
|
|
@@ -223,6 +255,12 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
223
255
|
set receivedDamageFactor(receivedDamageFactor: number);
|
|
224
256
|
get armorIncrease(): number;
|
|
225
257
|
set armorIncrease(armorIncrease: number);
|
|
258
|
+
get maxHealthIncrease(): number;
|
|
259
|
+
set maxHealthIncrease(maxHealthIncrease: number);
|
|
260
|
+
get maxManaIncrease(): number;
|
|
261
|
+
set maxManaIncrease(maxManaIncrease: number);
|
|
262
|
+
get turnsIntoGhost(): boolean;
|
|
263
|
+
set turnsIntoGhost(turnsIntoGhost: boolean);
|
|
226
264
|
get stuns(): boolean;
|
|
227
265
|
set stuns(stuns: boolean);
|
|
228
266
|
get ignoresStunImmunity(): boolean;
|
|
@@ -247,11 +285,36 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
247
285
|
set attackSpeedIncreaseFactor(attackSpeedIncreaseFactor: number);
|
|
248
286
|
get movementSpeedIncreaseFactor(): number;
|
|
249
287
|
set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
|
|
288
|
+
get evasionProbability(): number;
|
|
289
|
+
set evasionProbability(evasionProbability: number);
|
|
290
|
+
get manaRegenerationRateIncreaseFactor(): number;
|
|
291
|
+
set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
|
|
250
292
|
get duration(): number;
|
|
293
|
+
set duration(duration: number);
|
|
251
294
|
get remainingDuration(): number;
|
|
252
295
|
set remainingDuration(remainingDuration: number);
|
|
253
|
-
|
|
254
|
-
|
|
296
|
+
get absorbedDamageFactor(): number;
|
|
297
|
+
set absorbedDamageFactor(absorbedDamageFactor: number);
|
|
298
|
+
get maximumDamageAbsorbed(): number;
|
|
299
|
+
set maximumDamageAbsorbed(maximumDamageAbsorbed: number);
|
|
300
|
+
get damageAbsorbed(): number;
|
|
301
|
+
get destroysOnMaximumDamageAbsorbed(): boolean;
|
|
302
|
+
set destroysOnMaximumDamageAbsorbed(destroysOnMaximumDamageAbsorbed: boolean);
|
|
303
|
+
get abilityCooldownFactor(): number;
|
|
304
|
+
set abilityCooldownFactor(abilityCooldownFactor: number);
|
|
305
|
+
onAbilityGained(ability: Ability): void;
|
|
306
|
+
onAbilityLost(ability: Ability): void;
|
|
307
|
+
flashEffect(...parameters: [
|
|
308
|
+
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
309
|
+
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
310
|
+
]): void;
|
|
311
|
+
flashSpecialEffect(...parameters: [
|
|
312
|
+
...widgetOrXY: [] | [Widget] | [x: number, x: number],
|
|
313
|
+
...parametersOrDuration: [] | [EffectParameters] | [number]
|
|
314
|
+
]): void;
|
|
315
|
+
private flash;
|
|
316
|
+
expire(): void;
|
|
317
|
+
protected onCreate(): void;
|
|
255
318
|
protected onDestroy(): Destructor;
|
|
256
319
|
static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
|
|
257
320
|
static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
|
|
@@ -259,5 +322,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
|
|
|
259
322
|
onDeath(source: Unit | undefined): void;
|
|
260
323
|
onDamageDealt(target: Unit, event: DamageEvent): void;
|
|
261
324
|
onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
|
|
325
|
+
static readonly createdEvent: Event<[Buff<object>]>;
|
|
326
|
+
static readonly beingDestroyedEvent: Event<[Buff<object>]>;
|
|
262
327
|
}
|
|
263
328
|
export {};
|