warscript 0.0.1-dev.9eab2af → 0.0.1-dev.9f30788

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 (163) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +1 -3
  6. package/core/types/effect.lua +26 -29
  7. package/core/types/frame.lua +24 -21
  8. package/core/types/player.lua +3 -1
  9. package/core/types/playerCamera.d.ts +2 -0
  10. package/core/types/playerCamera.lua +123 -5
  11. package/core/types/sound.d.ts +17 -24
  12. package/core/types/sound.lua +99 -24
  13. package/core/types/tileCell.d.ts +9 -0
  14. package/core/types/tileCell.lua +92 -0
  15. package/core/types/timer.d.ts +9 -8
  16. package/core/types/timer.lua +45 -23
  17. package/core/util.lua +6 -1
  18. package/decl/native.d.ts +846 -790
  19. package/engine/behavior.d.ts +5 -0
  20. package/engine/behavior.lua +106 -27
  21. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  22. package/engine/behaviour/ability/apply-buff.lua +32 -0
  23. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  24. package/engine/behaviour/ability/damage.d.ts +9 -3
  25. package/engine/behaviour/ability/damage.lua +26 -38
  26. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  27. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  28. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  29. package/engine/behaviour/ability/restore-mana.lua +6 -6
  30. package/engine/behaviour/ability.d.ts +5 -1
  31. package/engine/behaviour/ability.lua +28 -22
  32. package/engine/behaviour/unit/stun-immunity.d.ts +7 -3
  33. package/engine/behaviour/unit/stun-immunity.lua +52 -27
  34. package/engine/behaviour/unit.d.ts +34 -0
  35. package/engine/behaviour/unit.lua +190 -4
  36. package/engine/buff.d.ts +54 -44
  37. package/engine/buff.lua +258 -221
  38. package/engine/internal/ability.d.ts +7 -1
  39. package/engine/internal/ability.lua +49 -9
  40. package/engine/internal/item/ability.lua +63 -11
  41. package/engine/internal/item+owner.lua +12 -6
  42. package/engine/internal/item.d.ts +20 -19
  43. package/engine/internal/item.lua +191 -74
  44. package/engine/internal/mechanics/ability-duration.lua +1 -1
  45. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  46. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  47. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  48. package/engine/internal/misc/frame-coordinates.lua +21 -0
  49. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  50. package/engine/internal/misc/get-terrain-z.lua +11 -0
  51. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  52. package/engine/internal/misc/player-local-handle.lua +5 -0
  53. package/engine/internal/unit/ability.d.ts +35 -0
  54. package/engine/internal/unit/ability.lua +98 -9
  55. package/engine/internal/unit/add-item-to-slot.lua +4 -2
  56. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  57. package/engine/internal/unit/allowed-targets.lua +9 -1
  58. package/engine/internal/unit/order.d.ts +20 -0
  59. package/engine/internal/unit/order.lua +136 -0
  60. package/engine/internal/unit+ability.lua +10 -1
  61. package/engine/internal/unit+damage.d.ts +2 -11
  62. package/engine/internal/unit+damage.lua +10 -14
  63. package/engine/internal/unit+spellSteal.lua +1 -2
  64. package/engine/internal/unit-missile-launch.lua +45 -8
  65. package/engine/internal/unit.d.ts +32 -10
  66. package/engine/internal/unit.lua +257 -110
  67. package/engine/lightning.d.ts +4 -3
  68. package/engine/lightning.lua +21 -12
  69. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  70. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  71. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  72. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  73. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  74. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  75. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  76. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  77. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  78. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  79. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  80. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  81. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  82. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  83. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  84. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  85. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  86. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  87. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  88. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  89. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  90. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  91. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  92. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  93. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  94. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  95. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  96. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  97. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  98. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  99. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  100. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  101. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  102. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  103. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  104. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  105. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  106. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  107. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  108. package/engine/object-data/entry/ability-type/web.lua +52 -0
  109. package/engine/object-data/entry/ability-type.d.ts +19 -17
  110. package/engine/object-data/entry/ability-type.lua +85 -24
  111. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  112. package/engine/object-data/entry/buff-type.d.ts +6 -12
  113. package/engine/object-data/entry/buff-type.lua +13 -29
  114. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  115. package/engine/object-data/entry/item-type.d.ts +1 -1
  116. package/engine/object-data/entry/item-type.lua +4 -4
  117. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  118. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  119. package/engine/object-data/entry/sound-preset.lua +140 -0
  120. package/engine/object-data/entry/unit-type.d.ts +21 -5
  121. package/engine/object-data/entry/unit-type.lua +214 -93
  122. package/engine/object-data/entry/upgrade.d.ts +1 -1
  123. package/engine/object-data/entry/upgrade.lua +4 -4
  124. package/engine/object-data/entry.d.ts +16 -14
  125. package/engine/object-data/entry.lua +60 -32
  126. package/engine/object-field/ability.d.ts +4 -4
  127. package/engine/object-field/ability.lua +7 -6
  128. package/engine/object-field/unit.d.ts +57 -3
  129. package/engine/object-field/unit.lua +207 -7
  130. package/engine/object-field.d.ts +17 -6
  131. package/engine/object-field.lua +188 -92
  132. package/engine/random.d.ts +9 -0
  133. package/engine/random.lua +13 -0
  134. package/engine/standard/entries/buff-type.d.ts +3 -0
  135. package/engine/standard/entries/buff-type.lua +3 -0
  136. package/engine/standard/entries/sound-preset.d.ts +10 -0
  137. package/engine/standard/entries/sound-preset.lua +10 -0
  138. package/engine/standard/fields/unit.d.ts +4 -0
  139. package/engine/standard/fields/unit.lua +7 -0
  140. package/engine/text-tag.d.ts +36 -2
  141. package/engine/text-tag.lua +249 -10
  142. package/engine/unit.d.ts +1 -0
  143. package/engine/unit.lua +1 -0
  144. package/objutil/buff.lua +2 -3
  145. package/objutil/unit.lua +8 -0
  146. package/package.json +2 -2
  147. package/patch-lualib.lua +1 -1
  148. package/utility/arrays.d.ts +2 -0
  149. package/utility/arrays.lua +11 -0
  150. package/utility/callback-array.d.ts +17 -0
  151. package/utility/callback-array.lua +61 -0
  152. package/utility/functions.d.ts +8 -0
  153. package/utility/functions.lua +13 -0
  154. package/utility/linked-set.d.ts +1 -0
  155. package/utility/linked-set.lua +3 -0
  156. package/utility/lua-maps.d.ts +15 -2
  157. package/utility/lua-maps.lua +53 -2
  158. package/utility/lua-sets.d.ts +2 -0
  159. package/utility/lua-sets.lua +7 -0
  160. package/utility/reflection.lua +11 -7
  161. package/utility/types.d.ts +3 -0
  162. package/core/types/order.d.ts +0 -25
  163. package/core/types/order.lua +0 -55
@@ -5,21 +5,25 @@ local checkNotNull = ____preconditions.checkNotNull
5
5
  -- @internal For use by internal systems only.
6
6
  ____exports.implementReadonlyNumberIndexSupplier = function(clazz, supplier)
7
7
  local metatable = checkNotNull(getmetatable(clazz))
8
- local originalIndex = checkNotNull(metatable.__index)
8
+ local originalIndex = checkNotNull(rawget(metatable, "__index"))
9
9
  local memoizedValueByKey = {}
10
- metatable.__index = setmetatable(
11
- memoizedValueByKey,
12
- {__index = function(self, key)
10
+ rawset(
11
+ metatable,
12
+ "__index",
13
+ function(self, key)
13
14
  if type(key) == "number" then
14
- local value = supplier(key)
15
- memoizedValueByKey[key] = value
15
+ local value = memoizedValueByKey[key]
16
+ if value == nil then
17
+ value = supplier(key)
18
+ memoizedValueByKey[key] = value
19
+ end
16
20
  return value
17
21
  end
18
22
  if type(originalIndex) == "function" then
19
23
  return originalIndex(self, key)
20
24
  end
21
25
  return originalIndex[key]
22
- end}
26
+ end
23
27
  )
24
28
  end
25
29
  ____exports.getClass = function(object)
@@ -37,4 +37,7 @@ export type Flatten<T extends readonly any[], A extends readonly any[] = []> = T
37
37
  export type Prohibit<T, K extends keyof any> = T & {
38
38
  [P in K]?: never;
39
39
  };
40
+ type TupleSplit<T, N extends number, O extends readonly any[] = readonly []> = O["length"] extends N ? [O, T] : T extends readonly [infer F, ...infer R] ? TupleSplit<readonly [...R], N, readonly [...O, F]> : [O, T];
41
+ export type TakeFirst<T extends readonly any[], N extends number> = TupleSplit<T, N>[0];
42
+ export type SkipFirst<T extends readonly any[], N extends number> = TupleSplit<T, N>[1];
40
43
  export {};
@@ -1,25 +0,0 @@
1
- /** @noSelfInFile */
2
- import { Unit } from "./unit";
3
- import { Item } from "./item";
4
- import { Destructable } from "./destructable";
5
- export type Order = {
6
- id: number;
7
- startX: number;
8
- startY: number;
9
- } & ({
10
- type: "immediate";
11
- } | {
12
- type: "point";
13
- targetX: number;
14
- targetY: number;
15
- } | {
16
- type: "target";
17
- target: Unit | Item | Destructable;
18
- });
19
- declare module "../../engine/internal/unit" {
20
- interface Unit {
21
- readonly currentOrder: Order;
22
- readonly lastOrder: Order;
23
- issueOrder(order: Order): void;
24
- }
25
- }
@@ -1,55 +0,0 @@
1
- local ____lualib = require("lualib_bundle")
2
- local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
3
- local ____exports = {}
4
- local ____unit = require("core.types.unit")
5
- local Unit = ____unit.Unit
6
- local getUnitCurrentOrder = GetUnitCurrentOrder
7
- local orders = setmetatable({}, {__mode = "k"})
8
- Unit.onImmediateOrder:addListener(function(unit, orderId)
9
- orders[unit] = {id = orderId, startX = unit.x, startY = unit.y, type = "immediate"}
10
- end)
11
- Unit.onPointOrder:addListener(function(unit, orderId, x, y)
12
- orders[unit] = {
13
- id = orderId,
14
- startX = unit.x,
15
- startY = unit.y,
16
- type = "point",
17
- targetX = x,
18
- targetY = y
19
- }
20
- end)
21
- Unit.onTargetOrder:addListener(function(unit, orderId, target)
22
- orders[unit] = {
23
- id = orderId,
24
- startX = unit.x,
25
- startY = unit.y,
26
- type = "target",
27
- target = target
28
- }
29
- end)
30
- __TS__ObjectDefineProperty(
31
- Unit.prototype,
32
- "currentOrder",
33
- {get = function(self)
34
- local currentOrderId = getUnitCurrentOrder(self.handle)
35
- local lastOrder = orders[self]
36
- return lastOrder and (lastOrder.id == currentOrderId or currentOrderId == orderId("patrolAI") and lastOrder.id == orderId("patrol")) and lastOrder or ({id = 0, type = "immediate"})
37
- end}
38
- )
39
- __TS__ObjectDefineProperty(
40
- Unit.prototype,
41
- "lastOrder",
42
- {get = function(self)
43
- return orders[self] or ({id = 0, type = "immediate"})
44
- end}
45
- )
46
- Unit.prototype.issueOrder = function(self, order)
47
- if order.type == "immediate" then
48
- IssueImmediateOrderById(self.handle, order.id)
49
- elseif order.type == "point" then
50
- IssuePointOrderById(self.handle, order.id, order.targetX, order.targetY)
51
- else
52
- IssueTargetOrderById(self.handle, order.id, order.target.handle)
53
- end
54
- end
55
- return ____exports