warscript 0.0.1-dev.a4deb44 → 0.0.1-dev.a5a2f5e

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.
Files changed (319) hide show
  1. package/attributes.d.ts +18 -0
  2. package/attributes.lua +32 -0
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/types/effect.d.ts +14 -6
  8. package/core/types/effect.lua +131 -35
  9. package/core/types/frame.d.ts +8 -1
  10. package/core/types/frame.lua +164 -23
  11. package/core/types/group.d.ts +0 -1
  12. package/core/types/handle.d.ts +2 -1
  13. package/core/types/handle.lua +5 -0
  14. package/core/types/image.d.ts +0 -1
  15. package/core/types/item.d.ts +1 -0
  16. package/core/types/item.lua +1 -0
  17. package/core/types/missile.d.ts +2 -2
  18. package/core/types/missile.lua +8 -2
  19. package/core/types/player.d.ts +17 -1
  20. package/core/types/player.lua +70 -24
  21. package/core/types/playerCamera.d.ts +2 -0
  22. package/core/types/playerCamera.lua +123 -5
  23. package/core/types/sound.d.ts +17 -24
  24. package/core/types/sound.lua +100 -25
  25. package/core/types/tileCell.d.ts +11 -1
  26. package/core/types/tileCell.lua +97 -0
  27. package/core/types/timer.d.ts +9 -8
  28. package/core/types/timer.lua +45 -23
  29. package/core/types/unit.lua +8 -0
  30. package/core/util.d.ts +1 -1
  31. package/core/util.lua +18 -1
  32. package/decl/index.d.ts +1 -0
  33. package/decl/native.d.ts +846 -790
  34. package/destroyable.d.ts +1 -0
  35. package/destroyable.lua +9 -0
  36. package/engine/ability.d.ts +1 -1
  37. package/engine/behavior.d.ts +24 -11
  38. package/engine/behavior.lua +233 -73
  39. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  40. package/engine/behaviour/ability/always-enabled.lua +31 -0
  41. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  42. package/engine/behaviour/ability/apply-buff.lua +36 -4
  43. package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
  44. package/engine/behaviour/ability/apply-unit-behavior.lua +32 -9
  45. package/engine/behaviour/ability/damage.d.ts +42 -11
  46. package/engine/behaviour/ability/damage.lua +89 -37
  47. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  48. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  49. package/engine/behaviour/ability/heal.d.ts +33 -6
  50. package/engine/behaviour/ability/heal.lua +89 -10
  51. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  52. package/engine/behaviour/ability/instant-impact.lua +4 -15
  53. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  54. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  55. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  56. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  57. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  58. package/engine/behaviour/ability/restore-mana.lua +29 -0
  59. package/engine/behaviour/ability.d.ts +35 -7
  60. package/engine/behaviour/ability.lua +183 -27
  61. package/engine/behaviour/unit/stun-immunity.d.ts +12 -7
  62. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  63. package/engine/behaviour/unit.d.ts +48 -4
  64. package/engine/behaviour/unit.lua +292 -2
  65. package/engine/buff.d.ts +160 -53
  66. package/engine/buff.lua +711 -269
  67. package/engine/game-map.d.ts +7 -0
  68. package/engine/game-map.lua +32 -0
  69. package/engine/internal/ability.d.ts +23 -14
  70. package/engine/internal/ability.lua +129 -85
  71. package/engine/internal/item/ability.lua +162 -4
  72. package/engine/internal/item/fields.d.ts +12 -0
  73. package/engine/internal/item/fields.lua +33 -0
  74. package/engine/internal/item+owner.lua +12 -6
  75. package/engine/internal/item.d.ts +16 -19
  76. package/engine/internal/item.lua +174 -94
  77. package/engine/internal/mechanics/ability-duration.d.ts +1 -3
  78. package/engine/internal/mechanics/ability-duration.lua +3 -1
  79. package/engine/internal/mechanics/cast-ability.lua +89 -0
  80. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  81. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  82. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  83. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  84. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  85. package/engine/internal/misc/frame-coordinates.lua +21 -0
  86. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  87. package/engine/internal/misc/get-terrain-z.lua +11 -0
  88. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  89. package/engine/internal/misc/player-local-handle.lua +5 -0
  90. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  91. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  92. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  93. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  94. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  95. package/engine/internal/object-data/evasion-probability.lua +16 -0
  96. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  97. package/engine/internal/object-data/health-bonus.lua +16 -0
  98. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  99. package/engine/internal/object-data/mana-bonus.lua +16 -0
  100. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  101. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  102. package/engine/internal/unit/ability.d.ts +45 -1
  103. package/engine/internal/unit/ability.lua +128 -17
  104. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  105. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  106. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  107. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  108. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  109. package/engine/internal/unit/allowed-targets.lua +9 -1
  110. package/engine/internal/unit/attributes.d.ts +17 -0
  111. package/engine/internal/unit/attributes.lua +46 -0
  112. package/engine/internal/unit/bonus.d.ts +17 -8
  113. package/engine/internal/unit/bonus.lua +56 -4
  114. package/engine/internal/unit/detach-missiles.d.ts +7 -0
  115. package/engine/internal/unit/detach-missiles.lua +30 -0
  116. package/engine/internal/unit/fly-height.d.ts +7 -0
  117. package/engine/internal/unit/fly-height.lua +20 -0
  118. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  119. package/engine/internal/unit/ignore-events-items.lua +5 -0
  120. package/engine/internal/unit/interrupts.d.ts +12 -0
  121. package/engine/internal/unit/interrupts.lua +28 -0
  122. package/engine/internal/unit/item.d.ts +24 -0
  123. package/engine/internal/unit/item.lua +78 -0
  124. package/engine/internal/unit/main-selected.d.ts +13 -0
  125. package/engine/internal/unit/main-selected.lua +36 -0
  126. package/engine/internal/unit/order.d.ts +20 -0
  127. package/engine/internal/unit/order.lua +136 -0
  128. package/engine/internal/unit/range-event.d.ts +12 -0
  129. package/engine/internal/unit/range-event.lua +90 -0
  130. package/engine/internal/unit/scale.d.ts +7 -0
  131. package/engine/internal/unit/scale.lua +20 -0
  132. package/engine/internal/unit+ability.lua +12 -3
  133. package/engine/internal/unit+bonus.lua +3 -3
  134. package/engine/internal/unit+damage.d.ts +2 -11
  135. package/engine/internal/unit+damage.lua +10 -14
  136. package/engine/internal/unit+spellSteal.lua +1 -2
  137. package/engine/internal/unit+transport.lua +4 -10
  138. package/engine/internal/unit-missile-launch.lua +70 -13
  139. package/engine/internal/unit.d.ts +97 -36
  140. package/engine/internal/unit.lua +701 -336
  141. package/engine/internal/utility.lua +12 -0
  142. package/engine/lightning.d.ts +12 -5
  143. package/engine/lightning.lua +48 -14
  144. package/engine/local-client.d.ts +14 -2
  145. package/engine/local-client.lua +168 -1
  146. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  147. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  148. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  149. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  150. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
  151. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  152. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  153. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  154. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  155. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  156. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  157. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  158. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  159. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  160. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  161. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  162. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  163. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  164. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  165. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  166. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  167. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  168. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  169. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  170. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  171. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  172. package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
  173. package/engine/object-data/entry/ability-type/blink.lua +39 -0
  174. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  175. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  176. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  177. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  178. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  179. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  180. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  181. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  182. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  183. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  184. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  185. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  186. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  187. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  188. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  189. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  190. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  191. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  192. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  193. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  194. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  195. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  196. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  197. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  198. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  199. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  200. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  201. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  202. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  203. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  204. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  205. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  206. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  207. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  208. package/engine/object-data/entry/ability-type/web.lua +52 -0
  209. package/engine/object-data/entry/ability-type.d.ts +21 -18
  210. package/engine/object-data/entry/ability-type.lua +177 -40
  211. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  212. package/engine/object-data/entry/buff-type/applicable.lua +143 -202
  213. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  214. package/engine/object-data/entry/buff-type.d.ts +6 -13
  215. package/engine/object-data/entry/buff-type.lua +13 -29
  216. package/engine/object-data/entry/destructible-type.d.ts +28 -3
  217. package/engine/object-data/entry/destructible-type.lua +155 -0
  218. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  219. package/engine/object-data/entry/item-type.d.ts +15 -2
  220. package/engine/object-data/entry/item-type.lua +93 -2
  221. package/engine/object-data/entry/lightning-type.d.ts +1 -2
  222. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  223. package/engine/object-data/entry/sound-preset.lua +140 -0
  224. package/engine/object-data/entry/unit-type.d.ts +65 -5
  225. package/engine/object-data/entry/unit-type.lua +555 -62
  226. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  227. package/engine/object-data/entry/upgrade.d.ts +1 -2
  228. package/engine/object-data/entry/upgrade.lua +4 -4
  229. package/engine/object-data/entry.d.ts +18 -17
  230. package/engine/object-data/entry.lua +60 -32
  231. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  232. package/engine/object-field/ability.d.ts +28 -5
  233. package/engine/object-field/ability.lua +61 -7
  234. package/engine/object-field/item.d.ts +22 -0
  235. package/engine/object-field/item.lua +118 -0
  236. package/engine/object-field/unit.d.ts +72 -3
  237. package/engine/object-field/unit.lua +268 -7
  238. package/engine/object-field.d.ts +26 -8
  239. package/engine/object-field.lua +362 -117
  240. package/engine/random.d.ts +11 -0
  241. package/engine/random.lua +30 -0
  242. package/engine/standard/entries/buff-type.d.ts +3 -0
  243. package/engine/standard/entries/buff-type.lua +3 -0
  244. package/engine/standard/entries/sound-preset.d.ts +10 -0
  245. package/engine/standard/entries/sound-preset.lua +10 -0
  246. package/engine/standard/entries/unit-type.d.ts +42 -1
  247. package/engine/standard/entries/unit-type.lua +42 -1
  248. package/engine/standard/fields/ability.d.ts +5 -3
  249. package/engine/standard/fields/ability.lua +5 -3
  250. package/engine/standard/fields/item.d.ts +4 -0
  251. package/engine/standard/fields/item.lua +6 -0
  252. package/engine/standard/fields/unit.d.ts +12 -0
  253. package/engine/standard/fields/unit.lua +20 -0
  254. package/engine/synchronization.d.ts +11 -0
  255. package/engine/synchronization.lua +77 -0
  256. package/engine/text-tag.d.ts +36 -2
  257. package/engine/text-tag.lua +250 -10
  258. package/engine/unit.d.ts +10 -0
  259. package/engine/unit.lua +19 -2
  260. package/event.d.ts +2 -3
  261. package/event.lua +9 -5
  262. package/global/vec2.lua +1 -0
  263. package/index.d.ts +1 -0
  264. package/index.lua +1 -0
  265. package/lualib_bundle.lua +147 -43
  266. package/math/vec2.d.ts +2 -9
  267. package/math.d.ts +2 -2
  268. package/math.lua +14 -0
  269. package/net/socket.d.ts +7 -1
  270. package/net/socket.lua +45 -4
  271. package/network.d.ts +1 -0
  272. package/network.lua +3 -2
  273. package/objutil/ability.d.ts +0 -1
  274. package/objutil/buff.d.ts +0 -1
  275. package/objutil/buff.lua +12 -11
  276. package/objutil/object.d.ts +0 -1
  277. package/objutil/object.lua +1 -1
  278. package/objutil/unit.d.ts +0 -1
  279. package/objutil/unit.lua +8 -0
  280. package/operation.lua +1 -4
  281. package/package.json +13 -14
  282. package/patch-lua.d.ts +0 -0
  283. package/patch-lua.lua +25 -0
  284. package/patch-lualib.lua +1 -1
  285. package/property.d.ts +55 -0
  286. package/property.lua +374 -0
  287. package/string.d.ts +30 -0
  288. package/string.lua +14 -0
  289. package/util/stream.d.ts +0 -1
  290. package/utility/arrays.d.ts +13 -5
  291. package/utility/arrays.lua +45 -3
  292. package/utility/bit-set.d.ts +0 -2
  293. package/utility/callback-array.d.ts +17 -0
  294. package/utility/callback-array.lua +61 -0
  295. package/utility/functions.d.ts +8 -0
  296. package/utility/functions.lua +13 -0
  297. package/utility/lazy.d.ts +2 -0
  298. package/utility/lazy.lua +14 -0
  299. package/utility/linked-map.d.ts +35 -0
  300. package/utility/linked-map.lua +107 -0
  301. package/utility/linked-set.d.ts +16 -4
  302. package/utility/linked-set.lua +54 -3
  303. package/utility/lua-maps.d.ts +16 -4
  304. package/utility/lua-maps.lua +53 -2
  305. package/utility/lua-sets.d.ts +3 -2
  306. package/utility/lua-sets.lua +7 -0
  307. package/utility/records.lua +20 -1
  308. package/utility/reflection.lua +11 -7
  309. package/utility/types.d.ts +6 -2
  310. package/utility/unordered-map.d.ts +27 -0
  311. package/utility/unordered-map.lua +99 -0
  312. package/core/mapbounds.d.ts +0 -8
  313. package/core/mapbounds.lua +0 -12
  314. package/core/types/order.d.ts +0 -25
  315. package/core/types/order.lua +0 -55
  316. /package/engine/internal/{object-data/armor-increase.d.ts → mechanics/cast-ability.d.ts} +0 -0
  317. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  318. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  319. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/buff.d.ts CHANGED
@@ -5,16 +5,22 @@ import { Ability } from "./internal/ability";
5
5
  import { AbilityTypeId } from "./object-data/entry/ability-type";
6
6
  import { BuffPolarity } from "./object-data/auxiliary/buff-polarity";
7
7
  import { BuffResistanceType } from "./object-data/auxiliary/buff-resistance-type";
8
- import { AbilityBooleanField, AbilityBooleanLevelField, AbilityCombatClassificationsLevelField, AbilityDependentValue, AbilityIntegerField, AbilityIntegerLevelField, AbilityNumberField, AbilityNumberLevelField } from "./object-field/ability";
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
- import { IsExactlyAny, NonEmptyArray, Prohibit } from "../utility/types";
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);
18
+ type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
15
19
  type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
16
20
  type IntegerParameterValueType = number | AbilityIntegerField | AbilityIntegerLevelField;
17
21
  type BooleanParameterValueType = boolean | AbilityBooleanField | AbilityBooleanLevelField;
22
+ export type BuffPolarityParameterType = EnumParameterValueType<BuffPolarity>;
23
+ export type BuffResistanceTypeParameterType = EnumParameterValueType<BuffResistanceType>;
18
24
  export declare class BuffUniqueGroup {
19
25
  }
20
26
  export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
@@ -25,8 +31,10 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
25
31
  source?: Unit;
26
32
  behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
27
33
  abilityTypeIds?: Record<AbilityTypeId, {
28
- [numberField: (AbilityNumberField | AbilityNumberLevelField) & symbol]: NumberParameterValueType;
29
- } & {
34
+ readonly fields?: [
35
+ AbilityNumberField | AbilityNumberLevelField,
36
+ NumberParameterValueType
37
+ ][];
30
38
  /** Default `true`. */
31
39
  readonly isButtonVisible?: boolean;
32
40
  /** Default is the level of the source ability or 0 if it is absent. */
@@ -48,14 +56,20 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
48
56
  damageIncrease?: NumberParameterValueType;
49
57
  damageIncreaseFactor?: NumberParameterValueType;
50
58
  armorIncrease?: NumberParameterValueType;
51
- armorIncreaseFactor?: NumberParameterValueType;
59
+ maxHealthIncrease?: NumberParameterValueType;
60
+ maxManaIncrease?: NumberParameterValueType;
52
61
  attackSpeedIncreaseFactor?: NumberParameterValueType;
53
62
  movementSpeedIncreaseFactor?: NumberParameterValueType;
63
+ manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
64
+ evasionProbability?: NumberParameterValueType;
65
+ missProbability?: NumberParameterValueType;
66
+ damageFactor?: NumberParameterValueType;
54
67
  receivedDamageFactor?: NumberParameterValueType;
55
68
  receivedMagicDamageFactor?: NumberParameterValueType;
56
69
  durationIncreaseOnAutoAttack?: NumberParameterValueType;
57
70
  maximumRemainingDuration?: NumberParameterValueType;
58
71
  maximumDuration?: NumberParameterValueType;
72
+ turnsIntoGhost?: BooleanParameterValueType;
59
73
  stuns?: BooleanParameterValueType;
60
74
  ignoresStunImmunity?: BooleanParameterValueType;
61
75
  providesStunImmunity?: BooleanParameterValueType;
@@ -64,61 +78,91 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
64
78
  disablesAutoAttack?: BooleanParameterValueType;
65
79
  destroysOnDamage?: BooleanParameterValueType;
66
80
  maximumAutoAttackCount?: IntegerParameterValueType;
81
+ maximumDamageDealtEventCount?: IntegerParameterValueType;
82
+ maximumDamageReceivedEventCount?: IntegerParameterValueType;
83
+ absorbedDamageFactor?: NumberParameterValueType;
84
+ maximumDamageAbsorbed?: NumberParameterValueType;
85
+ destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
86
+ damageOnExpiration?: NumberParameterValueType;
87
+ healingOnExpiration?: NumberParameterValueType;
88
+ killsOnExpiration?: BooleanParameterValueType;
89
+ explodesOnExpiration?: BooleanParameterValueType;
90
+ abilityCooldownFactor?: NumberParameterValueType;
67
91
  uniqueGroup?: BuffUniqueGroup;
68
- } : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : {});
92
+ } : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
69
93
  declare const enum BuffPropertyKey {
70
- UNIT = 100,
71
- SOURCE = 101,
72
- DURATION = 102,
73
- UNIQUE_GROUP = 103,
74
- EFFECT_MODEL_PATH = 104,
75
- SPECIAL_EFFECT_MODEL_PATH = 105,
76
- DURATION_INCREASE_ON_AUTO_ATTACK = 106,
77
- MAXIMUM_DURATION = 107,
78
- MAXIMUM_REMAINING_DURATION = 108,
79
- DAMAGE_OVER_DURATION = 109,
80
- DAMAGE_PER_INTERVAL = 110,
81
- DAMAGE_INTERVAL = 111,
82
- REMAINING_DAMAGE_OVER_DURATION = 112,
83
- DAMAGE_INTERVAL_TIMER = 113,
84
- HEALING_OVER_DURATION = 114,
85
- HEALING_PER_INTERVAL = 115,
86
- HEALING_INTERVAL = 116,
87
- REMAINING_HEALING_OVER_DURATION = 117,
88
- HEALING_INTERVAL_TIMER = 118,
89
- DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 119,
90
- DAMAGE_UPON_DEATH = 120,
91
- DAMAGE_UPON_DEATH_RANGE = 121,
92
- MEDIUM_DAMAGE_UPON_DEATH = 122,
93
- MEDIUM_DAMAGE_UPON_DEATH_RANGE = 123,
94
- SMALL_DAMAGE_UPON_DEATH = 124,
95
- SMALL_DAMAGE_UPON_DEATH_RANGE = 125,
96
- AUTO_ATTACK_COUNT = 126,
97
- MAXIMUM_AUTO_ATTACK_COUNT = 127,
98
- STUNS = 128,
99
- IGNORES_STUN_IMMUNITY = 129,
100
- DISABLES_AUTO_ATTACK = 130,
101
- PROVIDES_INVULNERABILITY = 131
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
102
143
  }
103
144
  export declare const enum BuffTypeIdSelectionPolicy {
104
145
  LEAST_DURATION = 0
105
146
  }
106
147
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
107
- export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
148
+ export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
108
149
  ...typeId: [ApplicableBuffTypeId] | [
109
- typeIds: NonEmptyArray<ApplicableBuffTypeId>,
150
+ typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
110
151
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
111
152
  ],
112
- polarity: BuffPolarity,
113
- resistanceType: BuffResistanceType,
153
+ polarity: BuffPolarityParameterType,
154
+ resistanceType: BuffResistanceTypeParameterType,
114
155
  ...abilityOrParameters: [
115
- ability: Ability,
156
+ ability?: Ability | AbilityBehavior,
116
157
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
117
- ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
118
- ];
119
- export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = {}> extends UnitBehavior {
158
+ ] | [
159
+ parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
160
+ ]
161
+ ] : never;
162
+ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
120
163
  private _unit;
121
164
  protected readonly __additionalParametersBrand?: AdditionalParameters;
165
+ private [BuffPropertyKey.STATE];
122
166
  private [BuffPropertyKey.UNIT];
123
167
  private [BuffPropertyKey.SOURCE]?;
124
168
  private [BuffPropertyKey.DURATION];
@@ -138,6 +182,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
138
182
  private [BuffPropertyKey.HEALING_INTERVAL]?;
139
183
  private [BuffPropertyKey.REMAINING_HEALING_OVER_DURATION]?;
140
184
  private [BuffPropertyKey.HEALING_INTERVAL_TIMER]?;
185
+ private [BuffPropertyKey.DAMAGE_ON_EXPIRATION]?;
186
+ private [BuffPropertyKey.HEALING_ON_EXPIRATION]?;
141
187
  private [BuffPropertyKey.DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS]?;
142
188
  private [BuffPropertyKey.DAMAGE_UPON_DEATH]?;
143
189
  private [BuffPropertyKey.DAMAGE_UPON_DEATH_RANGE]?;
@@ -147,29 +193,41 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
147
193
  private [BuffPropertyKey.SMALL_DAMAGE_UPON_DEATH_RANGE]?;
148
194
  private [BuffPropertyKey.MAXIMUM_AUTO_ATTACK_COUNT]?;
149
195
  private [BuffPropertyKey.AUTO_ATTACK_COUNT]?;
196
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_DEALT_EVENT_COUNT]?;
197
+ private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
198
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
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]?;
150
205
  private [BuffPropertyKey.STUNS]?;
151
206
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
152
207
  private [BuffPropertyKey.DISABLES_AUTO_ATTACK]?;
153
208
  private [BuffPropertyKey.PROVIDES_INVULNERABILITY]?;
209
+ private [BuffPropertyKey.KILLS_ON_EXPIRATION]?;
210
+ private [BuffPropertyKey.EXPLODES_ON_EXPIRATION]?;
211
+ private [BuffPropertyKey.ABILITY_COOLDOWN_FACTOR]?;
212
+ private [BuffPropertyKey.ABILITY_COOLDOWN_MODIFIER]?;
154
213
  protected static readonly defaultParameters: BuffParameters;
155
214
  get source(): Unit;
156
215
  readonly typeId: ApplicableBuffTypeId;
157
216
  readonly polarity: BuffPolarity;
158
217
  readonly resistanceType: BuffResistanceType;
159
- readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : keyof AdditionalParameters extends never ? undefined : {
218
+ readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : AdditionalParameters extends Record<PropertyKey, never> ? undefined : {
160
219
  [K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
161
220
  };
162
221
  private readonly handle;
222
+ readonly previousBuff?: Buff;
163
223
  private _timer?;
164
224
  private readonly _level?;
165
225
  private readonly _spellStealPriority?;
166
226
  private readonly _learnLevelMinimum?;
167
- private _bonusIdByBonusType?;
227
+ private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
168
228
  private readonly _abilityTypeIds?;
169
229
  private _behaviors?;
170
- private getUnitBonus;
171
- private addOrUpdateOrRemoveUnitBonus;
172
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
230
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
173
231
  get level(): number;
174
232
  get remainingDamageOverDuration(): number;
175
233
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -187,10 +245,22 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
187
245
  set healingPerInterval(healingPerInterval: number);
188
246
  get healingInterval(): number;
189
247
  set healingInterval(healingInterval: number);
248
+ get damageOnExpiration(): number;
249
+ set damageOnExpiration(damageOnExpiration: number);
250
+ get healingOnExpiration(): number;
251
+ set healingOnExpiration(healingOnExpiration: number);
252
+ get damageFactor(): number;
253
+ set damageFactor(damageFactor: number);
190
254
  get receivedDamageFactor(): number;
191
255
  set receivedDamageFactor(receivedDamageFactor: number);
192
256
  get armorIncrease(): number;
193
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);
194
264
  get stuns(): boolean;
195
265
  set stuns(stuns: boolean);
196
266
  get ignoresStunImmunity(): boolean;
@@ -199,6 +269,14 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
199
269
  set disablesAutoAttack(disablesAutoAttack: boolean);
200
270
  get providesInvulnerability(): boolean;
201
271
  set providesInvulnerability(providesInvulnerability: boolean);
272
+ get killsOnExpiration(): boolean;
273
+ set killsOnExpiration(killsOnExpiration: boolean);
274
+ get explodesOnExpiration(): boolean;
275
+ set explodesOnExpiration(killsOnExpiration: boolean);
276
+ get maximumDamageDealtEventCount(): number;
277
+ set maximumDamageDealtEventCount(maximumDamageDealtEventCount: number);
278
+ get maximumDamageReceivedEventCount(): number;
279
+ set maximumDamageReceivedEventCount(maximumDamageReceivedEventCount: number);
202
280
  get maximumAutoAttackCount(): number;
203
281
  set maximumAutoAttackCount(maximumAutoAttackCount: number);
204
282
  get durationIncreaseOnAutoAttack(): number;
@@ -207,15 +285,44 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
207
285
  set attackSpeedIncreaseFactor(attackSpeedIncreaseFactor: number);
208
286
  get movementSpeedIncreaseFactor(): number;
209
287
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
288
+ get evasionProbability(): number;
289
+ set evasionProbability(evasionProbability: number);
290
+ get manaRegenerationRateIncreaseFactor(): number;
291
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
210
292
  get duration(): number;
293
+ set duration(duration: number);
211
294
  get remainingDuration(): number;
212
295
  set remainingDuration(remainingDuration: number);
213
- flashEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
214
- flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
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;
215
318
  protected onDestroy(): Destructor;
216
319
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
217
320
  static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
321
+ onExpiration(): void;
218
322
  onDeath(source: Unit | undefined): void;
219
323
  onDamageDealt(target: Unit, event: DamageEvent): void;
324
+ onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
325
+ static readonly createdEvent: Event<[Buff<object>]>;
326
+ static readonly beingDestroyedEvent: Event<[Buff<object>]>;
220
327
  }
221
328
  export {};