warscript 0.0.1-dev.e1acea3 → 0.0.1-dev.e27e5b1

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 (281) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +2 -3
  6. package/core/types/effect.lua +95 -48
  7. package/core/types/frame.d.ts +1 -0
  8. package/core/types/frame.lua +136 -58
  9. package/core/types/handle.lua +6 -9
  10. package/core/types/item.d.ts +1 -0
  11. package/core/types/item.lua +1 -0
  12. package/core/types/player.d.ts +18 -1
  13. package/core/types/player.lua +76 -26
  14. package/core/types/playerCamera.d.ts +2 -0
  15. package/core/types/playerCamera.lua +123 -5
  16. package/core/types/playerColor.lua +4 -3
  17. package/core/types/sound.d.ts +18 -25
  18. package/core/types/sound.lua +113 -33
  19. package/core/types/tileCell.d.ts +11 -1
  20. package/core/types/tileCell.lua +97 -0
  21. package/core/types/timer.d.ts +9 -8
  22. package/core/types/timer.lua +45 -23
  23. package/core/types/unit.d.ts +4 -0
  24. package/core/types/unit.lua +4 -0
  25. package/core/util.d.ts +1 -1
  26. package/core/util.lua +12 -1
  27. package/decl/native.d.ts +1718 -964
  28. package/destroyable.d.ts +1 -0
  29. package/destroyable.lua +9 -0
  30. package/engine/behavior.d.ts +14 -1
  31. package/engine/behavior.lua +230 -70
  32. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  33. package/engine/behaviour/ability/always-enabled.lua +31 -0
  34. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  35. package/engine/behaviour/ability/apply-buff.lua +36 -4
  36. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  37. package/engine/behaviour/ability/damage.d.ts +12 -3
  38. package/engine/behaviour/ability/damage.lua +33 -39
  39. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  40. package/engine/behaviour/ability/emulate-impact.lua +21 -6
  41. package/engine/behaviour/ability/on-command-impact.lua +7 -0
  42. package/engine/behaviour/ability/remove-buffs.d.ts +13 -1
  43. package/engine/behaviour/ability/remove-buffs.lua +29 -2
  44. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  45. package/engine/behaviour/ability/restore-mana.lua +6 -6
  46. package/engine/behaviour/ability.d.ts +23 -6
  47. package/engine/behaviour/ability.lua +115 -22
  48. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  49. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  50. package/engine/behaviour/unit.d.ts +41 -2
  51. package/engine/behaviour/unit.lua +270 -6
  52. package/engine/buff.d.ts +113 -53
  53. package/engine/buff.lua +544 -288
  54. package/engine/internal/ability.d.ts +22 -2
  55. package/engine/internal/ability.lua +151 -27
  56. package/engine/internal/item/ability.lua +162 -4
  57. package/engine/internal/item/fields.d.ts +12 -0
  58. package/engine/internal/item/fields.lua +33 -0
  59. package/engine/internal/item+owner.d.ts +1 -0
  60. package/engine/internal/item+owner.lua +19 -6
  61. package/engine/internal/item.d.ts +30 -18
  62. package/engine/internal/item.lua +292 -102
  63. package/engine/internal/mechanics/ability-duration.lua +1 -1
  64. package/engine/internal/mechanics/cast-ability.lua +6 -3
  65. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  66. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  67. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  68. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  69. package/engine/internal/misc/frame-coordinates.lua +21 -0
  70. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  71. package/engine/internal/misc/get-terrain-z.lua +11 -0
  72. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  73. package/engine/internal/misc/player-local-handle.lua +5 -0
  74. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  75. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  76. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  77. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  78. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  79. package/engine/internal/object-data/evasion-probability.lua +16 -0
  80. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  81. package/engine/internal/object-data/health-bonus.lua +16 -0
  82. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  83. package/engine/internal/object-data/mana-bonus.lua +16 -0
  84. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  85. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  86. package/engine/internal/unit/ability.d.ts +35 -0
  87. package/engine/internal/unit/ability.lua +113 -12
  88. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  89. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  90. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  91. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  92. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  93. package/engine/internal/unit/allowed-targets.lua +9 -1
  94. package/engine/internal/unit/appearance.d.ts +15 -0
  95. package/engine/internal/unit/appearance.lua +85 -0
  96. package/engine/internal/unit/attributes.d.ts +17 -0
  97. package/engine/internal/unit/attributes.lua +46 -0
  98. package/engine/internal/unit/bag.d.ts +18 -0
  99. package/engine/internal/unit/bag.lua +63 -0
  100. package/engine/internal/unit/bonus.d.ts +8 -0
  101. package/engine/internal/unit/bonus.lua +50 -3
  102. package/engine/internal/unit/buff.d.ts +2 -2
  103. package/engine/internal/unit/buff.lua +32 -17
  104. package/engine/internal/unit/equipment.d.ts +36 -0
  105. package/engine/internal/unit/equipment.lua +169 -0
  106. package/engine/internal/unit/fly-height.d.ts +7 -0
  107. package/engine/internal/unit/fly-height.lua +20 -0
  108. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  109. package/engine/internal/unit/ignore-events-items.lua +5 -0
  110. package/engine/internal/unit/interrupts.d.ts +12 -0
  111. package/engine/internal/unit/interrupts.lua +28 -0
  112. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  113. package/engine/internal/unit/inventory.lua +77 -0
  114. package/engine/internal/unit/main-selected.lua +12 -27
  115. package/engine/internal/unit/order.d.ts +20 -0
  116. package/engine/internal/unit/order.lua +136 -0
  117. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  118. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  119. package/engine/internal/unit/range-event.d.ts +12 -0
  120. package/engine/internal/unit/range-event.lua +90 -0
  121. package/engine/internal/unit/scale.d.ts +7 -0
  122. package/engine/internal/unit/scale.lua +20 -0
  123. package/engine/internal/unit+ability.lua +10 -1
  124. package/engine/internal/unit+bonus.lua +3 -3
  125. package/engine/internal/unit+damage.d.ts +2 -11
  126. package/engine/internal/unit+damage.lua +10 -14
  127. package/engine/internal/unit+spellSteal.lua +1 -2
  128. package/engine/internal/unit-missile-launch.lua +52 -14
  129. package/engine/internal/unit.d.ts +45 -26
  130. package/engine/internal/unit.lua +443 -274
  131. package/engine/internal/utility.lua +12 -0
  132. package/engine/lightning.d.ts +12 -5
  133. package/engine/lightning.lua +48 -14
  134. package/engine/local-client.d.ts +21 -0
  135. package/engine/local-client.lua +150 -7
  136. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  137. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  138. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  139. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  140. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  141. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  142. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  143. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  144. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  145. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  146. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  147. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  148. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  149. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  150. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  151. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  152. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  153. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  154. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  155. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  156. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  157. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  158. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  159. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  160. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  161. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  162. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  163. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  164. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  165. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  166. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  167. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  168. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  169. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  170. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  171. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  172. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  173. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  174. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  175. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  176. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  177. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  178. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  179. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  180. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  181. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  182. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  183. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  184. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  185. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  186. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  187. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  188. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  189. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  190. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  191. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  192. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  193. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  194. package/engine/object-data/entry/ability-type/web.lua +52 -0
  195. package/engine/object-data/entry/ability-type.d.ts +21 -17
  196. package/engine/object-data/entry/ability-type.lua +177 -40
  197. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  198. package/engine/object-data/entry/buff-type.d.ts +6 -12
  199. package/engine/object-data/entry/buff-type.lua +13 -29
  200. package/engine/object-data/entry/destructible-type.d.ts +28 -2
  201. package/engine/object-data/entry/destructible-type.lua +155 -0
  202. package/engine/object-data/entry/item-type.d.ts +3 -1
  203. package/engine/object-data/entry/item-type.lua +15 -2
  204. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  205. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  206. package/engine/object-data/entry/sound-preset.lua +140 -0
  207. package/engine/object-data/entry/unit-type.d.ts +25 -5
  208. package/engine/object-data/entry/unit-type.lua +258 -93
  209. package/engine/object-data/entry/upgrade.d.ts +1 -1
  210. package/engine/object-data/entry/upgrade.lua +4 -4
  211. package/engine/object-data/entry.d.ts +16 -14
  212. package/engine/object-data/entry.lua +60 -32
  213. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  214. package/engine/object-field/ability.d.ts +12 -6
  215. package/engine/object-field/ability.lua +10 -6
  216. package/engine/object-field/item.d.ts +22 -0
  217. package/engine/object-field/item.lua +118 -0
  218. package/engine/object-field/unit.d.ts +72 -3
  219. package/engine/object-field/unit.lua +268 -7
  220. package/engine/object-field.d.ts +26 -7
  221. package/engine/object-field.lua +362 -117
  222. package/engine/random.d.ts +10 -0
  223. package/engine/random.lua +21 -0
  224. package/engine/standard/entries/buff-type.d.ts +3 -0
  225. package/engine/standard/entries/buff-type.lua +3 -0
  226. package/engine/standard/entries/sound-preset.d.ts +10 -0
  227. package/engine/standard/entries/sound-preset.lua +10 -0
  228. package/engine/standard/fields/ability.d.ts +4 -2
  229. package/engine/standard/fields/ability.lua +4 -2
  230. package/engine/standard/fields/item.d.ts +4 -0
  231. package/engine/standard/fields/item.lua +6 -0
  232. package/engine/standard/fields/unit.d.ts +12 -0
  233. package/engine/standard/fields/unit.lua +20 -0
  234. package/engine/synchronization.d.ts +11 -0
  235. package/engine/synchronization.lua +77 -0
  236. package/engine/text-tag.d.ts +36 -2
  237. package/engine/text-tag.lua +250 -10
  238. package/engine/unit.d.ts +11 -1
  239. package/engine/unit.lua +11 -1
  240. package/event.d.ts +1 -1
  241. package/lualib_bundle.lua +1 -1
  242. package/math.d.ts +2 -0
  243. package/math.lua +14 -0
  244. package/net/socket.lua +1 -1
  245. package/network.lua +25 -1
  246. package/objutil/buff.lua +11 -10
  247. package/objutil/object.lua +1 -1
  248. package/objutil/unit.lua +8 -0
  249. package/operation.d.ts +8 -1
  250. package/operation.lua +38 -18
  251. package/package.json +5 -5
  252. package/patch-lua.lua +15 -0
  253. package/patch-lualib.lua +1 -1
  254. package/utility/arrays.d.ts +2 -0
  255. package/utility/arrays.lua +11 -0
  256. package/utility/callback-array.d.ts +17 -0
  257. package/utility/callback-array.lua +61 -0
  258. package/utility/functions.d.ts +8 -0
  259. package/utility/functions.lua +13 -0
  260. package/utility/linked-map.d.ts +35 -0
  261. package/utility/linked-map.lua +107 -0
  262. package/utility/linked-set.d.ts +5 -1
  263. package/utility/linked-set.lua +49 -1
  264. package/utility/lua-maps.d.ts +15 -2
  265. package/utility/lua-maps.lua +53 -2
  266. package/utility/lua-sets.d.ts +2 -0
  267. package/utility/lua-sets.lua +7 -0
  268. package/utility/random.d.ts +102 -0
  269. package/utility/random.lua +273 -0
  270. package/utility/records.lua +20 -1
  271. package/utility/reflection.lua +11 -7
  272. package/utility/types.d.ts +3 -0
  273. package/utility/unordered-map.d.ts +27 -0
  274. package/utility/unordered-map.lua +99 -0
  275. package/core/types/order.d.ts +0 -25
  276. package/core/types/order.lua +0 -55
  277. package/engine/internal/unit/item.lua +0 -84
  278. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  279. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  280. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  281. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,6 +1,8 @@
1
1
  local ____exports = {}
2
2
  local getUnitAbility = BlzGetUnitAbility
3
3
  local unitAddAbility = UnitAddAbility
4
+ local unitInventorySize = UnitInventorySize
5
+ local unitItemInSlot = UnitItemInSlot
4
6
  local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
5
7
  ---
6
8
  -- @internal For use by internal systems only.
@@ -10,4 +12,14 @@ ____exports.addInternalAbility = function(unit, abilityTypeId)
10
12
  end
11
13
  return getUnitAbility(unit, abilityTypeId)
12
14
  end
15
+ ---
16
+ -- @internal For use by internal systems only.
17
+ ____exports.findUnitItemSlot = function(unit, item)
18
+ for slot = 0, unitInventorySize(unit) - 1 do
19
+ if item == unitItemInSlot(unit, slot) then
20
+ return slot
21
+ end
22
+ end
23
+ return nil
24
+ end
13
25
  return ____exports
@@ -1,7 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { LightningTypeId } from "./object-data/entry/lightning-type";
3
- import { Handle, HandleDestructor } from "../core/types/handle";
4
3
  import { Unit } from "../core/types/unit";
4
+ import { AbstractDestroyable, Destructor } from "../destroyable";
5
5
  declare const enum LightningPropertyKey {
6
6
  CHECK_VISIBILITY = 100,
7
7
  SOURCE_UNIT = 101,
@@ -12,10 +12,12 @@ declare const enum LightningPropertyKey {
12
12
  TARGET_X = 106,
13
13
  TARGET_Y = 107,
14
14
  TARGET_Z = 108,
15
- DURATION = 109
15
+ DURATION = 109,
16
+ FADING = 110
16
17
  }
17
18
  export type LightningConstructor<T extends Lightning> = typeof Lightning & (new (handle: jlightning, typeId: LightningTypeId) => T);
18
- export declare class Lightning extends Handle<jlightning> {
19
+ export declare class Lightning extends AbstractDestroyable {
20
+ readonly handle: jlightning;
19
21
  readonly typeId: LightningTypeId;
20
22
  private [LightningPropertyKey.CHECK_VISIBILITY]?;
21
23
  private [LightningPropertyKey.SOURCE_UNIT]?;
@@ -27,8 +29,9 @@ export declare class Lightning extends Handle<jlightning> {
27
29
  private [LightningPropertyKey.TARGET_Y]?;
28
30
  private [LightningPropertyKey.TARGET_Z]?;
29
31
  private [LightningPropertyKey.DURATION]?;
32
+ private [LightningPropertyKey.FADING]?;
30
33
  constructor(handle: jlightning, typeId: LightningTypeId);
31
- protected onDestroy(): HandleDestructor;
34
+ protected onDestroy(): Destructor;
32
35
  static create<T extends Lightning>(this: LightningConstructor<T>, typeId: LightningTypeId, ...parameters: [
33
36
  ...checkVisibility: [boolean] | [],
34
37
  ...sourceAndTarget: [sourceX: number, sourceY: number, targetX: number, targetY: number] | [
@@ -46,6 +49,10 @@ export declare class Lightning extends Handle<jlightning> {
46
49
  target: Unit
47
50
  ]
48
51
  ]): T;
49
- static flash(...parameters: [...parameters: Parameters<(typeof Lightning)["create"]>, duration: number]): void;
52
+ static flash(...parameters: [
53
+ ...parameters: Parameters<(typeof Lightning)["create"]>,
54
+ duration: number,
55
+ fading?: boolean
56
+ ]): void;
50
57
  }
51
58
  export {};
@@ -1,15 +1,16 @@
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 ____exports = {}
5
- local ____handle = require("core.types.handle")
6
- local Handle = ____handle.Handle
7
6
  local ____timer = require("core.types.timer")
8
7
  local Timer = ____timer.Timer
9
8
  local ____functions = require("utility.functions")
10
9
  local forwardByN = ____functions.forwardByN
11
10
  local ____unit_2Dmissile_2Ddata = require("engine.internal.unit-missile-data")
12
11
  local MISSILE_DATA_BY_UNIT_TYPE_ID = ____unit_2Dmissile_2Ddata.MISSILE_DATA_BY_UNIT_TYPE_ID
12
+ local ____destroyable = require("destroyable")
13
+ local AbstractDestroyable = ____destroyable.AbstractDestroyable
13
14
  local ____type = _G.type
14
15
  local select = _G.select
15
16
  local cos = math.cos
@@ -27,6 +28,11 @@ local getUnitZ = BlzGetUnitZ
27
28
  local getUnitFlyHeight = GetUnitFlyHeight
28
29
  local getLocationZ = GetLocationZ
29
30
  local moveLocation = MoveLocation
31
+ local getLightningColorA = GetLightningColorA
32
+ local getLightningColorR = GetLightningColorR
33
+ local getLightningColorG = GetLightningColorG
34
+ local getLightningColorB = GetLightningColorB
35
+ local setLightningColor = SetLightningColor
30
36
  local location = Location(0, 0)
31
37
  local unitToUnitLightnings = setmetatable({}, {__mode = "k"})
32
38
  local unitToPointLightnings = setmetatable({}, {__mode = "k"})
@@ -36,9 +42,10 @@ local temporaryLightningsCount = 0
36
42
  ____exports.Lightning = __TS__Class()
37
43
  local Lightning = ____exports.Lightning
38
44
  Lightning.name = "Lightning"
39
- __TS__ClassExtends(Lightning, Handle)
45
+ __TS__ClassExtends(Lightning, AbstractDestroyable)
40
46
  function Lightning.prototype.____constructor(self, handle, typeId)
41
- Handle.prototype.____constructor(self, handle)
47
+ AbstractDestroyable.prototype.____constructor(self)
48
+ self.handle = handle
42
49
  self.typeId = typeId
43
50
  end
44
51
  function Lightning.prototype.onDestroy(self)
@@ -46,7 +53,7 @@ function Lightning.prototype.onDestroy(self)
46
53
  unitToPointLightnings[self] = nil
47
54
  pointToUnitLightnings[self] = nil
48
55
  destroyLightning(self.handle)
49
- return Handle.prototype.onDestroy(self)
56
+ return AbstractDestroyable.prototype.onDestroy(self)
50
57
  end
51
58
  function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY, targetXOrTargetUnitOrTargetYOrTargetZ, targetY, targetZ)
52
59
  if type(checkVisibility) ~= "boolean" then
@@ -62,7 +69,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
62
69
  )
63
70
  end
64
71
  if targetZ ~= nil then
65
- return self:of(
72
+ return __TS__New(
73
+ self,
66
74
  addLightningEx(
67
75
  util.id2s(typeId),
68
76
  checkVisibility,
@@ -79,7 +87,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
79
87
  if targetXOrTargetUnitOrTargetYOrTargetZ ~= nil then
80
88
  if ____type(targetXOrTargetUnitOrTargetYOrTargetZ) == "number" then
81
89
  if ____type(sourceXOrSourceUnit) == "number" then
82
- return self:of(
90
+ return __TS__New(
91
+ self,
83
92
  addLightning(
84
93
  util.id2s(typeId),
85
94
  checkVisibility,
@@ -92,7 +101,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
92
101
  )
93
102
  end
94
103
  local unit = sourceXOrSourceUnit.handle
95
- local lightning = self:of(
104
+ local lightning = __TS__New(
105
+ self,
96
106
  addLightningEx(
97
107
  util.id2s(typeId),
98
108
  checkVisibility,
@@ -117,7 +127,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
117
127
  return lightning
118
128
  end
119
129
  local unit = targetXOrTargetUnitOrTargetYOrTargetZ.handle
120
- local lightning = self:of(
130
+ local lightning = __TS__New(
131
+ self,
121
132
  addLightningEx(
122
133
  util.id2s(typeId),
123
134
  checkVisibility,
@@ -146,7 +157,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
146
157
  local unit = sourceXOrSourceUnit.handle
147
158
  moveLocation(location, sourceYOrTargetXOrTargetUnit, sourceZOrTargetXOrTargetUnitOrTargetY)
148
159
  local z = getLocationZ(location)
149
- local lightning = self:of(
160
+ local lightning = __TS__New(
161
+ self,
150
162
  addLightningEx(
151
163
  util.id2s(typeId),
152
164
  checkVisibility,
@@ -173,7 +185,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
173
185
  local unit = sourceZOrTargetXOrTargetUnitOrTargetY.handle
174
186
  moveLocation(location, sourceXOrSourceUnit, sourceYOrTargetXOrTargetUnit)
175
187
  local z = getLocationZ(location)
176
- local lightning = self:of(
188
+ local lightning = __TS__New(
189
+ self,
177
190
  addLightningEx(
178
191
  util.id2s(typeId),
179
192
  checkVisibility,
@@ -199,7 +212,8 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
199
212
  end
200
213
  local sourceUnit = sourceXOrSourceUnit.handle
201
214
  local targetUnit = sourceYOrTargetXOrTargetUnit.handle
202
- local lightning = self:of(
215
+ local lightning = __TS__New(
216
+ self,
203
217
  addLightningEx(
204
218
  util.id2s(typeId),
205
219
  checkVisibility,
@@ -225,9 +239,19 @@ function Lightning.create(self, typeId, checkVisibility, sourceXOrSourceUnit, so
225
239
  return lightning
226
240
  end
227
241
  function Lightning.flash(self, ...)
228
- local parametersToForwardCount = select("#", ...) - 1
242
+ local parameterOrDuration, durationOrFading = select(-2, ...)
243
+ local hasFading = ____type(durationOrFading) ~= "number"
244
+ local parametersToForwardCount = select("#", ...) - (hasFading and 2 or 1)
229
245
  local lightning = forwardByN[parametersToForwardCount](____exports.Lightning.create, self, ...)
230
- local duration = select(-1, ...)
246
+ local duration
247
+ if hasFading then
248
+ duration = parameterOrDuration
249
+ if durationOrFading then
250
+ lightning[110] = true
251
+ end
252
+ else
253
+ duration = durationOrFading
254
+ end
231
255
  lightning[109] = duration
232
256
  temporaryLightningsCount = temporaryLightningsCount + 1
233
257
  temporaryLightnings[temporaryLightningsCount] = lightning
@@ -295,6 +319,16 @@ Timer.onPeriod[UPDATE_PERIOD]:addListener(function()
295
319
  temporaryLightnings[temporaryLightningsCount] = nil
296
320
  temporaryLightningsCount = temporaryLightningsCount - 1
297
321
  else
322
+ if lightning[110] then
323
+ local handle = lightning.handle
324
+ setLightningColor(
325
+ handle,
326
+ getLightningColorR(handle),
327
+ getLightningColorG(handle),
328
+ getLightningColorB(handle),
329
+ getLightningColorA(handle) * (1 - UPDATE_PERIOD / duration)
330
+ )
331
+ end
298
332
  lightning[109] = duration - UPDATE_PERIOD
299
333
  i = i + 1
300
334
  end
@@ -3,6 +3,7 @@ import { Unit } from "../core/types/unit";
3
3
  import { Async } from "../core/types/async";
4
4
  import { Event, TriggerEvent } from "../event";
5
5
  import { GraphicsMode } from "./index";
6
+ import { Color } from "../core/types/color";
6
7
  export declare class LocalClient {
7
8
  private constructor();
8
9
  static readonly locale: string;
@@ -11,11 +12,31 @@ export declare class LocalClient {
11
12
  static get isHD(): boolean;
12
13
  static get graphicsMode(): GraphicsMode;
13
14
  static get isActive(): boolean;
15
+ static get isMinimized(): boolean;
16
+ static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
17
+ /** Local input state; do not use to branch synchronized game logic. */
18
+ static isKeyPressed(key: joskeytype): boolean;
19
+ /** Local input state. Uses the same modifier mask as Player key events. */
20
+ static isMetaKeyPressed(key: oskeymeta): boolean;
21
+ /** Local input state. */
22
+ static isMouseButtonPressed(button: jmousebuttontype): boolean;
23
+ static get mouseScreenX(): number;
24
+ static get mouseScreenY(): number;
25
+ static screenToFrameX(x: number): number;
26
+ static screenToFrameY(y: number): number;
27
+ static frameToScreenX(x: number): number;
28
+ static frameToScreenY(y: number): number;
29
+ static get mouseFrameX(): number;
30
+ static get mouseFrameY(): number;
14
31
  static get mouseFocusUnit(): Async<Unit> | undefined;
15
32
  static get mainSelectedUnit(): Async<Unit> | undefined;
16
33
  static get mainSelectedUnitChangeEvent(): Event<[
17
34
  previousMainSelectedUnit: Unit | undefined,
18
35
  newMainSelectedUnit: Unit | undefined
19
36
  ]>;
37
+ static get isInTargetingMode(): boolean;
38
+ static readonly targetingModeEnterEvent: Event<[]>;
39
+ static readonly targetingModeLeaveEvent: Event<[]>;
40
+ static readonly targetingModeStateChangeEvent: Event<[]>;
20
41
  static readonly onDisconnect: TriggerEvent<[]>;
21
42
  }
@@ -1,9 +1,11 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__ArrayMap = ____lualib.__TS__ArrayMap
3
+ local __TS__New = ____lualib.__TS__New
3
4
  local __TS__Class = ____lualib.__TS__Class
5
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
4
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
- local __TS__New = ____lualib.__TS__New
6
7
  local ____exports = {}
8
+ local actualizeTargetingModeState
7
9
  local ____unit = require("core.types.unit")
8
10
  local Unit = ____unit.Unit
9
11
  local ____event = require("event")
@@ -15,16 +17,31 @@ local ____player = require("core.types.player")
15
17
  local Player = ____player.Player
16
18
  local ____timer = require("core.types.timer")
17
19
  local Timer = ____timer.Timer
18
- local loadTOCFile = BlzLoadTOCFile
19
- local getLocalClientWidth = BlzGetLocalClientWidth
20
- local getLocalClientHeight = BlzGetLocalClientHeight
21
- local isLocalClientActive = BlzIsLocalClientActive
22
- local isHeroUnitId = IsHeroUnitId
20
+ local ____color = require("core.types.color")
21
+ local Color = ____color.Color
22
+ local ____arrays = require("utility.arrays")
23
+ local array = ____arrays.array
24
+ local frameToPixelX = BlzFrameToPixelX
25
+ local frameToPixelY = BlzFrameToPixelY
23
26
  local getHandleId = GetHandleId
27
+ local getLocalClientHeight = BlzGetLocalClientHeight
28
+ local getLocalClientWidth = BlzGetLocalClientWidth
29
+ local getLocale = BlzGetLocale
24
30
  local getMouseFocusUnit = BlzGetMouseFocusUnit
31
+ local getMouseScreenPosX = BlzGetMouseScreenPosX
32
+ local getMouseScreenPosY = BlzGetMouseScreenPosY
25
33
  local getUnitRealField = BlzGetUnitRealField
26
34
  local getUnitTypeId = GetUnitTypeId
27
- local getLocale = BlzGetLocale
35
+ local isHeroUnitId = IsHeroUnitId
36
+ local isKeyPressed = BlzIsKeyPressed
37
+ local isLocalClientActive = BlzIsLocalClientActive
38
+ local isMetaKeyPressed = BlzIsMetaKeyPressed
39
+ local isMouseButtonPressed = BlzIsMouseButtonPressed
40
+ local loadTOCFile = BlzLoadTOCFile
41
+ local pingMinimap = PingMinimap
42
+ local pingMinimapEx = PingMinimapEx
43
+ local pixelToFrameX = BlzPixelToFrameX
44
+ local pixelToFrameY = BlzPixelToFrameY
28
45
  local tableSort = table.sort
29
46
  local tocPath = "_warscript\\IsHD.toc"
30
47
  compiletime(function()
@@ -57,11 +74,61 @@ local function compareUnitsSelectionPriority(a, b)
57
74
  end
58
75
  local mainSelectedUnitChangeEvent
59
76
  local previousMainSelectedUnit
77
+ local lastTargetingModeState = false
78
+ local targetingModeEnterEvent = __TS__New(Event)
79
+ local targetingModeLeaveEvent = __TS__New(Event)
80
+ local targetingModeStateChangeEvent = __TS__New(Event)
60
81
  ____exports.LocalClient = __TS__Class()
61
82
  local LocalClient = ____exports.LocalClient
62
83
  LocalClient.name = "LocalClient"
63
84
  function LocalClient.prototype.____constructor(self)
64
85
  end
86
+ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
87
+ if redOrColor == nil then
88
+ pingMinimap(x, y, duration)
89
+ elseif __TS__InstanceOf(redOrColor, Color) then
90
+ pingMinimapEx(
91
+ x,
92
+ y,
93
+ duration,
94
+ redOrColor.r,
95
+ redOrColor.g,
96
+ redOrColor.b,
97
+ greenOrFlashy or false
98
+ )
99
+ else
100
+ pingMinimapEx(
101
+ x,
102
+ y,
103
+ duration,
104
+ redOrColor,
105
+ greenOrFlashy,
106
+ blue,
107
+ flashy or false
108
+ )
109
+ end
110
+ end
111
+ function LocalClient.isKeyPressed(self, key)
112
+ return isKeyPressed(key)
113
+ end
114
+ function LocalClient.isMetaKeyPressed(self, key)
115
+ return isMetaKeyPressed(key)
116
+ end
117
+ function LocalClient.isMouseButtonPressed(self, button)
118
+ return isMouseButtonPressed(button)
119
+ end
120
+ function LocalClient.screenToFrameX(self, x)
121
+ return pixelToFrameX(x)
122
+ end
123
+ function LocalClient.screenToFrameY(self, y)
124
+ return pixelToFrameY(y)
125
+ end
126
+ function LocalClient.frameToScreenX(self, x)
127
+ return frameToPixelX(x)
128
+ end
129
+ function LocalClient.frameToScreenY(self, y)
130
+ return frameToPixelY(y)
131
+ end
65
132
  LocalClient.locale = getLocale()
66
133
  __TS__ObjectDefineProperty(
67
134
  LocalClient,
@@ -98,6 +165,41 @@ __TS__ObjectDefineProperty(
98
165
  return isLocalClientActive()
99
166
  end}
100
167
  )
168
+ __TS__ObjectDefineProperty(
169
+ LocalClient,
170
+ "isMinimized",
171
+ {get = function(self)
172
+ return getLocalClientHeight() == 0
173
+ end}
174
+ )
175
+ __TS__ObjectDefineProperty(
176
+ LocalClient,
177
+ "mouseScreenX",
178
+ {get = function(self)
179
+ return getMouseScreenPosX()
180
+ end}
181
+ )
182
+ __TS__ObjectDefineProperty(
183
+ LocalClient,
184
+ "mouseScreenY",
185
+ {get = function(self)
186
+ return getMouseScreenPosY()
187
+ end}
188
+ )
189
+ __TS__ObjectDefineProperty(
190
+ LocalClient,
191
+ "mouseFrameX",
192
+ {get = function(self)
193
+ return pixelToFrameX(getMouseScreenPosX())
194
+ end}
195
+ )
196
+ __TS__ObjectDefineProperty(
197
+ LocalClient,
198
+ "mouseFrameY",
199
+ {get = function(self)
200
+ return pixelToFrameY(getMouseScreenPosY())
201
+ end}
202
+ )
101
203
  __TS__ObjectDefineProperty(
102
204
  LocalClient,
103
205
  "mouseFocusUnit",
@@ -151,6 +253,16 @@ __TS__ObjectDefineProperty(
151
253
  return mainSelectedUnitChangeEvent
152
254
  end}
153
255
  )
256
+ __TS__ObjectDefineProperty(
257
+ LocalClient,
258
+ "isInTargetingMode",
259
+ {get = function(self)
260
+ return actualizeTargetingModeState()
261
+ end}
262
+ )
263
+ LocalClient.targetingModeEnterEvent = targetingModeEnterEvent
264
+ LocalClient.targetingModeLeaveEvent = targetingModeLeaveEvent
265
+ LocalClient.targetingModeStateChangeEvent = targetingModeStateChangeEvent
154
266
  LocalClient.onDisconnect = __TS__New(
155
267
  TriggerEvent,
156
268
  function(trigger)
@@ -158,6 +270,37 @@ LocalClient.onDisconnect = __TS__New(
158
270
  end,
159
271
  function() return end
160
272
  )
273
+ local commandButtons = array(
274
+ 12,
275
+ function(i) return Frame:byOrigin(ORIGIN_FRAME_COMMAND_BUTTON, i) end
276
+ )
277
+ local function getTargetingModeState()
278
+ for i = 0, 10 do
279
+ if commandButtons[i + 1].visible then
280
+ return false
281
+ end
282
+ end
283
+ return commandButtons[12].visible
284
+ end
285
+ actualizeTargetingModeState = function()
286
+ if getTargetingModeState() then
287
+ if not lastTargetingModeState then
288
+ lastTargetingModeState = true
289
+ Event.invoke(targetingModeEnterEvent)
290
+ Event.invoke(targetingModeStateChangeEvent)
291
+ end
292
+ return true
293
+ end
294
+ if lastTargetingModeState then
295
+ lastTargetingModeState = false
296
+ Event.invoke(targetingModeLeaveEvent)
297
+ Event.invoke(targetingModeStateChangeEvent)
298
+ end
299
+ return false
300
+ end
301
+ Timer.onPeriod[1 / 64]:addListener(function()
302
+ actualizeTargetingModeState()
303
+ end)
161
304
  warpack.afterMapInit(function()
162
305
  rawset(
163
306
  ____exports.LocalClient,
@@ -12,3 +12,4 @@ export declare const enum AnimationName {
12
12
  STAND = "stand",
13
13
  WALK = "walk"
14
14
  }
15
+ export declare const isAnimationName: (value: string) => value is AnimationName;
@@ -1,2 +1,18 @@
1
1
  local ____exports = {}
2
+ local animationNames = {
3
+ attack = true,
4
+ birth = true,
5
+ death = true,
6
+ decay = true,
7
+ dissipate = true,
8
+ morph = true,
9
+ portrait = true,
10
+ sleep = true,
11
+ spell = true,
12
+ stand = true,
13
+ walk = true
14
+ }
15
+ ____exports.isAnimationName = function(value)
16
+ return animationNames[value] ~= nil
17
+ end
2
18
  return ____exports
@@ -0,0 +1,11 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum ArmorType {
3
+ LIGHT = 0,
4
+ MEDIUM = 1,
5
+ HEAVY = 2,
6
+ FORTIFIED = 3,
7
+ NORMAL = 4,
8
+ HERO = 5,
9
+ DIVINE = 6,
10
+ UNARMORED = 7
11
+ }
@@ -0,0 +1,46 @@
1
+ local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByArmorType = {
5
+ [0] = "small",
6
+ [1] = "medium",
7
+ [2] = "large",
8
+ [3] = "fort",
9
+ [4] = "normal",
10
+ [5] = "hero",
11
+ [6] = "divine",
12
+ [7] = "none"
13
+ }
14
+ local armorTypeByString = invertRecord(stringByArmorType)
15
+ local nativeByArmorType = {
16
+ [0] = DEFENSE_TYPE_LIGHT,
17
+ [1] = DEFENSE_TYPE_MEDIUM,
18
+ [2] = DEFENSE_TYPE_LARGE,
19
+ [3] = DEFENSE_TYPE_FORT,
20
+ [4] = DEFENSE_TYPE_NORMAL,
21
+ [5] = DEFENSE_TYPE_HERO,
22
+ [6] = DEFENSE_TYPE_DIVINE,
23
+ [7] = DEFENSE_TYPE_NONE
24
+ }
25
+ local armorTypeByNative = invertRecord(nativeByArmorType)
26
+ ---
27
+ -- @internal For use by internal systems only.
28
+ ____exports.armorTypeToString = function(armorType)
29
+ return stringByArmorType[armorType]
30
+ end
31
+ ---
32
+ -- @internal For use by internal systems only.
33
+ ____exports.stringToArmorType = function(____string)
34
+ return armorTypeByString[____string] or 7
35
+ end
36
+ ---
37
+ -- @internal For use by internal systems only.
38
+ ____exports.armorTypeToNative = function(armorType)
39
+ return nativeByArmorType[armorType]
40
+ end
41
+ ---
42
+ -- @internal For use by internal systems only.
43
+ ____exports.nativeToArmorType = function(armorType)
44
+ return armorTypeByNative[armorType]
45
+ end
46
+ return ____exports
@@ -2,13 +2,18 @@
2
2
  import { ModelNodeName } from "./model-node-name";
3
3
  import { ModelNodeQualifier } from "./model-node-qualifier";
4
4
  import { Optional } from "../../../utility/types";
5
+ import { EffectParameters } from "../../../core/types/effect";
5
6
  export type AttachmentPreset = {
6
7
  modelPath: string;
7
8
  nodeName: ModelNodeName;
8
9
  nodeQualifiers: ModelNodeQualifier[];
9
10
  };
10
- export type AttachmentPresetInput = Optional<AttachmentPreset, "nodeQualifiers"> | string;
11
- export declare const toAttachmentPreset: (attachmentPresetInput: AttachmentPresetInput) => AttachmentPreset;
11
+ export type EffectPresetWithParameters = AttachmentPreset & {
12
+ parameters?: EffectParameters;
13
+ };
14
+ export type AttachmentPresetInput<T extends AttachmentPreset = AttachmentPreset> = Optional<T, "nodeName" | "nodeQualifiers"> | string;
15
+ export type EffectPresetWithParametersInput = AttachmentPresetInput<EffectPresetWithParameters>;
16
+ export declare const toEffectPreset: (effectPresetInput: EffectPresetWithParametersInput) => EffectPresetWithParameters;
12
17
  export declare const extractAttachmentPresetInputModelPath: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
13
18
  export declare const extractAttachmentPresetInputNodeFQN: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
14
19
  export declare const splitAttachmentNodeFQN: (attachmentNodeFQN: string) => LuaMultiReturn<[attachmentNodeName: ModelNodeName, attachmentNodeQualifiers: ModelNodeQualifier[]]>;
@@ -1,9 +1,10 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__ArrayJoin = ____lualib.__TS__ArrayJoin
2
3
  local __TS__StringSplit = ____lualib.__TS__StringSplit
3
4
  local __TS__ArraySlice = ____lualib.__TS__ArraySlice
4
5
  local ____exports = {}
5
- ____exports.toAttachmentPreset = function(attachmentPresetInput)
6
- return type(attachmentPresetInput) == "string" and ({modelPath = attachmentPresetInput, nodeName = "origin", nodeQualifiers = {}}) or ({modelPath = attachmentPresetInput.modelPath, nodeName = attachmentPresetInput.nodeName, nodeQualifiers = attachmentPresetInput.nodeQualifiers or ({})})
6
+ ____exports.toEffectPreset = function(effectPresetInput)
7
+ return type(effectPresetInput) == "string" and ({modelPath = effectPresetInput, nodeName = "origin", nodeQualifiers = {}}) or ({modelPath = effectPresetInput.modelPath, nodeName = effectPresetInput.nodeName or "origin", nodeQualifiers = effectPresetInput.nodeQualifiers or ({}), parameters = effectPresetInput.parameters})
7
8
  end
8
9
  ____exports.extractAttachmentPresetInputModelPath = function(attachmentPresetInput)
9
10
  return type(attachmentPresetInput) == "string" and attachmentPresetInput or (attachmentPresetInput and attachmentPresetInput.modelPath or "")
@@ -12,7 +13,7 @@ ____exports.extractAttachmentPresetInputNodeFQN = function(attachmentPresetInput
12
13
  if type(attachmentPresetInput) == "string" or attachmentPresetInput == nil then
13
14
  return ""
14
15
  end
15
- return table.concat(
16
+ return __TS__ArrayJoin(
16
17
  {
17
18
  attachmentPresetInput.nodeName,
18
19
  table.unpack(attachmentPresetInput.nodeQualifiers or ({}))
@@ -1,11 +1,10 @@
1
1
  /** @noSelfInFile */
2
2
  export declare const enum AttackType {
3
- NONE = "unknown",
4
- NORMAL = "normal",
5
- PIERCE = "pierce",
6
- SIEGE = "siege",
7
- SPELL = "spells",
8
- CHAOS = "chaos",
9
- MAGIC = "magic",
10
- HERO = "hero"
3
+ SPELL = 0,
4
+ NORMAL = 1,
5
+ PIERCE = 2,
6
+ SIEGE = 3,
7
+ MAGIC = 4,
8
+ CHAOS = 5,
9
+ HERO = 6
11
10
  }
@@ -1,2 +1,44 @@
1
1
  local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByAttackType = {
5
+ [1] = "normal",
6
+ [2] = "pierce",
7
+ [3] = "siege",
8
+ [0] = "spells",
9
+ [5] = "chaos",
10
+ [4] = "magic",
11
+ [6] = "hero"
12
+ }
13
+ local attackTypeByString = invertRecord(stringByAttackType)
14
+ local nativeByAttackType = {
15
+ [1] = ATTACK_TYPE_MELEE,
16
+ [2] = ATTACK_TYPE_PIERCE,
17
+ [3] = ATTACK_TYPE_SIEGE,
18
+ [0] = ATTACK_TYPE_NORMAL,
19
+ [5] = ATTACK_TYPE_CHAOS,
20
+ [4] = ATTACK_TYPE_MAGIC,
21
+ [6] = ATTACK_TYPE_HERO
22
+ }
23
+ local attackTypeByNative = invertRecord(nativeByAttackType)
24
+ ---
25
+ -- @internal For use by internal systems only.
26
+ ____exports.attackTypeToString = function(attackType)
27
+ return attackType ~= nil and stringByAttackType[attackType] or "unknown"
28
+ end
29
+ ---
30
+ -- @internal For use by internal systems only.
31
+ ____exports.stringToAttackType = function(____string)
32
+ return attackTypeByString[____string]
33
+ end
34
+ ---
35
+ -- @internal For use by internal systems only.
36
+ ____exports.attackTypeToNative = function(attackType)
37
+ return nativeByAttackType[attackType]
38
+ end
39
+ ---
40
+ -- @internal For use by internal systems only.
41
+ ____exports.nativeToAttackType = function(attackType)
42
+ return attackTypeByNative[attackType]
43
+ end
2
44
  return ____exports
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum EquipmentSlot {
3
+ HEAD = 0,
4
+ CHEST = 1,
5
+ GLOVES = 2,
6
+ BOOTS = 3,
7
+ RING = 4,
8
+ ALTERNATE_RING = 5,
9
+ PRIMARY = 6,
10
+ OFFHAND = 7,
11
+ TRINKET = 8
12
+ }