warscript 0.0.1-dev.f5421e8 → 0.0.1-dev.f70428f

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 (122) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/types/frame.lua +24 -21
  4. package/core/types/player.d.ts +15 -0
  5. package/core/types/player.lua +56 -14
  6. package/core/types/playerCamera.d.ts +2 -0
  7. package/core/types/playerCamera.lua +123 -5
  8. package/core/types/sound.lua +5 -0
  9. package/core/types/tileCell.d.ts +11 -1
  10. package/core/types/tileCell.lua +97 -0
  11. package/core/types/timer.d.ts +3 -1
  12. package/core/types/timer.lua +27 -2
  13. package/decl/native.d.ts +846 -790
  14. package/engine/behavior.d.ts +12 -1
  15. package/engine/behavior.lua +172 -70
  16. package/engine/behaviour/ability/apply-buff.lua +1 -1
  17. package/engine/behaviour/ability/damage.d.ts +6 -3
  18. package/engine/behaviour/ability/damage.lua +24 -36
  19. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  20. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  21. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  22. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  23. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  24. package/engine/behaviour/ability/restore-mana.lua +6 -6
  25. package/engine/behaviour/ability.lua +8 -17
  26. package/engine/behaviour/unit/stun-immunity.d.ts +11 -5
  27. package/engine/behaviour/unit/stun-immunity.lua +53 -28
  28. package/engine/behaviour/unit.d.ts +34 -2
  29. package/engine/behaviour/unit.lua +192 -6
  30. package/engine/buff.d.ts +12 -5
  31. package/engine/buff.lua +125 -87
  32. package/engine/internal/ability.d.ts +7 -1
  33. package/engine/internal/ability.lua +49 -9
  34. package/engine/internal/item/ability.lua +63 -11
  35. package/engine/internal/item+owner.lua +12 -6
  36. package/engine/internal/item.d.ts +18 -17
  37. package/engine/internal/item.lua +135 -49
  38. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  39. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  40. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  41. package/engine/internal/misc/frame-coordinates.lua +21 -0
  42. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  43. package/engine/internal/misc/get-terrain-z.lua +11 -0
  44. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  45. package/engine/internal/misc/player-local-handle.lua +5 -0
  46. package/engine/internal/unit/ability.d.ts +35 -0
  47. package/engine/internal/unit/ability.lua +98 -9
  48. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  49. package/engine/internal/unit/allowed-targets.lua +9 -1
  50. package/engine/internal/unit/fly-height.d.ts +7 -0
  51. package/engine/internal/unit/fly-height.lua +20 -0
  52. package/engine/internal/unit/main-selected.lua +12 -27
  53. package/engine/internal/unit/order.d.ts +20 -0
  54. package/engine/internal/unit/order.lua +136 -0
  55. package/engine/internal/unit/scale.d.ts +7 -0
  56. package/engine/internal/unit/scale.lua +20 -0
  57. package/engine/internal/unit+ability.lua +10 -1
  58. package/engine/internal/unit+damage.d.ts +2 -11
  59. package/engine/internal/unit+damage.lua +10 -14
  60. package/engine/internal/unit+spellSteal.lua +1 -2
  61. package/engine/internal/unit-missile-launch.lua +45 -14
  62. package/engine/internal/unit.d.ts +39 -19
  63. package/engine/internal/unit.lua +329 -169
  64. package/engine/local-client.d.ts +2 -0
  65. package/engine/local-client.lua +30 -0
  66. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  67. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  68. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  69. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  70. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  71. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  72. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  73. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  74. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  75. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  76. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  77. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  78. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  79. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  80. package/engine/object-data/entry/ability-type.lua +11 -3
  81. package/engine/object-data/entry/buff-type/applicable.lua +5 -0
  82. package/engine/object-data/entry/buff-type.d.ts +5 -11
  83. package/engine/object-data/entry/buff-type.lua +11 -27
  84. package/engine/object-data/entry/unit-type.d.ts +13 -4
  85. package/engine/object-data/entry/unit-type.lua +153 -85
  86. package/engine/object-field/ability.d.ts +4 -4
  87. package/engine/object-field/ability.lua +7 -6
  88. package/engine/object-field/unit.d.ts +69 -3
  89. package/engine/object-field/unit.lua +264 -7
  90. package/engine/object-field.d.ts +23 -6
  91. package/engine/object-field.lua +309 -126
  92. package/engine/random.d.ts +9 -0
  93. package/engine/random.lua +13 -0
  94. package/engine/standard/entries/buff-type.d.ts +3 -0
  95. package/engine/standard/entries/buff-type.lua +3 -0
  96. package/engine/standard/fields/unit.d.ts +6 -0
  97. package/engine/standard/fields/unit.lua +11 -0
  98. package/engine/synchronization.d.ts +11 -0
  99. package/engine/synchronization.lua +77 -0
  100. package/engine/text-tag.d.ts +36 -2
  101. package/engine/text-tag.lua +250 -10
  102. package/engine/unit.d.ts +3 -0
  103. package/engine/unit.lua +3 -0
  104. package/net/socket.lua +1 -1
  105. package/objutil/buff.lua +2 -3
  106. package/package.json +2 -2
  107. package/patch-lualib.lua +1 -1
  108. package/utility/arrays.d.ts +2 -0
  109. package/utility/arrays.lua +11 -0
  110. package/utility/callback-array.d.ts +17 -0
  111. package/utility/callback-array.lua +61 -0
  112. package/utility/functions.d.ts +8 -0
  113. package/utility/functions.lua +13 -0
  114. package/utility/linked-set.d.ts +2 -0
  115. package/utility/linked-set.lua +22 -1
  116. package/utility/lua-maps.d.ts +15 -2
  117. package/utility/lua-maps.lua +53 -2
  118. package/utility/lua-sets.d.ts +2 -0
  119. package/utility/lua-sets.lua +7 -0
  120. package/utility/types.d.ts +3 -0
  121. package/core/types/order.d.ts +0 -25
  122. package/core/types/order.lua +0 -55
@@ -36,6 +36,7 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
36
36
  copyOf(): LinkedSet<T>;
37
37
  first(): T | undefined;
38
38
  last(): T | undefined;
39
+ pop(): T | undefined;
39
40
  next(key: T): T | undefined;
40
41
  previous(key: T): T | undefined;
41
42
  add(key: T): boolean;
@@ -50,6 +51,7 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
50
51
  protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
51
52
  }
52
53
  export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
54
+ export declare const mutableLinkedSet: <T extends AnyNotNil>() => LinkedSet<T>;
53
55
  export declare const mutableLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => LinkedSet<T>;
54
56
  export declare const mutableLinkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LinkedSet<T>;
55
57
  export declare const linkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
@@ -42,6 +42,23 @@ end
42
42
  function LinkedSet.prototype.last(self)
43
43
  return self.l
44
44
  end
45
+ function LinkedSet.prototype.pop(self)
46
+ local f = self.f
47
+ if f == nil then
48
+ return nil
49
+ end
50
+ local n = self.n
51
+ local next = n[f]
52
+ n[f] = nil
53
+ self.f = next
54
+ if next ~= nil then
55
+ self.p[next] = nil
56
+ else
57
+ self.l = nil
58
+ end
59
+ self.s = self.s - 1
60
+ return f
61
+ end
45
62
  function LinkedSet.prototype.next(self, key)
46
63
  return self.n[key]
47
64
  end
@@ -107,8 +124,9 @@ function LinkedSet.prototype.forEach(self, action, ...)
107
124
  local n = self.n
108
125
  local c = self.f
109
126
  while c ~= nil do
127
+ local next = n[c]
110
128
  action(c, ...)
111
- c = n[c]
129
+ c = next
112
130
  end
113
131
  end
114
132
  function LinkedSet.prototype.toArray(self)
@@ -177,6 +195,9 @@ local EMPTY_LINKED_SET = __TS__New(EmptyLinkedSet)
177
195
  ____exports.emptyLinkedSet = function()
178
196
  return EMPTY_LINKED_SET
179
197
  end
198
+ ____exports.mutableLinkedSet = function()
199
+ return __TS__New(____exports.LinkedSet)
200
+ end
180
201
  ____exports.mutableLinkedSetOf = function(...)
181
202
  local linkedSet = __TS__New(____exports.LinkedSet)
182
203
  for i = 1, select("#", ...) do
@@ -1,5 +1,18 @@
1
1
  /** @noSelfInFile */
2
2
  import { Flatten, TupleOf } from "./types";
3
+ export declare const emptyLuaMap: <K extends AnyNotNil, V>() => ReadonlyLuaMap<K, V>;
4
+ export declare const mutableLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
5
+ export declare const mutableWeakLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
3
6
  export declare const luaMapOf: <K extends AnyNotNil, V>(...pairs: Flatten<TupleOf<[K, V], 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40>>) => LuaMap<K, V>;
4
- export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: LuaMap<K, V>) => LuaMap<V, K>;
5
- export declare const mapValues: <K extends AnyNotNil, V1, V2>(luaMap: LuaMap<K, V1>, transform: (value: V1) => V2) => LuaMap<K, V2>;
7
+ export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: ReadonlyLuaMap<K, V | undefined | null>) => LuaMap<V, K>;
8
+ export declare const toLuaMap: <K extends PropertyKey, V>(record: Record<K, V>) => LuaMap<K, V>;
9
+ export declare const flattenKeys: <K extends AnyNotNil, V>(luaMap: ReadonlyLuaMap<readonly K[], V> | ReadonlyLuaMap<K[], V>) => LuaMap<K, V>;
10
+ export declare const mapKeys: {
11
+ <K1 extends AnyNotNil, K2 extends AnyNotNil, V>(luaMap: ReadonlyLuaMap<K1, V>, transform: (value: K1) => K2): LuaMap<K2, V>;
12
+ <K1 extends AnyNotNil, K2 extends keyof K1, V>(luaMap: ReadonlyLuaMap<K1, V>, key: K2): K1[K2] extends AnyNotNil ? LuaMap<K1[K2], V> : never;
13
+ };
14
+ export declare const mapValues: {
15
+ <K extends AnyNotNil, V1, V2>(luaMap: ReadonlyLuaMap<K, V1>, transform: (value: V1) => V2): LuaMap<K, V2>;
16
+ <K extends AnyNotNil, V1, V2 extends keyof V1>(luaMap: ReadonlyLuaMap<K, V1>, key: V2): LuaMap<K, V1[V2]>;
17
+ };
18
+ export declare const getOrPut: <K extends AnyNotNil, V>(luaMap: LuaMap<K, V>, key: K, defaultValue: () => V) => V;
@@ -1,5 +1,17 @@
1
1
  local ____exports = {}
2
2
  local select = _G.select
3
+ local setmetatable = _G.setmetatable
4
+ local weakKeysMetatable = {__mode = "k"}
5
+ local EMPTY_LUA_MAP = {}
6
+ ____exports.emptyLuaMap = function()
7
+ return EMPTY_LUA_MAP
8
+ end
9
+ ____exports.mutableLuaMap = function()
10
+ return {}
11
+ end
12
+ ____exports.mutableWeakLuaMap = function()
13
+ return setmetatable({}, weakKeysMetatable)
14
+ end
3
15
  ____exports.luaMapOf = function(...)
4
16
  local luaMap = {}
5
17
  for i = 1, select("#", ...), 2 do
@@ -15,11 +27,50 @@ ____exports.luaMapInvert = function(luaMap)
15
27
  end
16
28
  return invertLuaMap
17
29
  end
30
+ ____exports.toLuaMap = function(record)
31
+ return record
32
+ end
33
+ ____exports.flattenKeys = function(luaMap)
34
+ local result = {}
35
+ for keys, value in pairs(luaMap) do
36
+ for ____, key in ipairs(keys) do
37
+ result[key] = value
38
+ end
39
+ end
40
+ return result
41
+ end
42
+ ____exports.mapKeys = function(luaMap, transform)
43
+ local result = {}
44
+ if type(transform) == "function" then
45
+ for key, value in pairs(luaMap) do
46
+ result[transform(key)] = value
47
+ end
48
+ else
49
+ for key, value in pairs(luaMap) do
50
+ result[key[transform]] = value
51
+ end
52
+ end
53
+ return result
54
+ end
18
55
  ____exports.mapValues = function(luaMap, transform)
19
56
  local result = {}
20
- for key, value in pairs(luaMap) do
21
- result[key] = transform(value)
57
+ if type(transform) == "function" then
58
+ for key, value in pairs(luaMap) do
59
+ result[key] = transform(value)
60
+ end
61
+ else
62
+ for key, value in pairs(luaMap) do
63
+ result[key] = value[transform]
64
+ end
22
65
  end
23
66
  return result
24
67
  end
68
+ ____exports.getOrPut = function(luaMap, key, defaultValue)
69
+ local value = luaMap[key]
70
+ if value == nil then
71
+ value = defaultValue()
72
+ luaMap[key] = value
73
+ end
74
+ return value
75
+ end
25
76
  return ____exports
@@ -1,4 +1,6 @@
1
1
  /** @noSelfInFile */
2
+ export declare const emptyLuaSet: <T extends AnyNotNil>() => ReadonlyLuaSet<T>;
3
+ export declare const mutableLuaSet: <T extends AnyNotNil>() => LuaSet<T>;
2
4
  export declare const luaSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LuaSet<T>;
3
5
  export declare const luaSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LuaSet<T>;
4
6
  export declare const luaSetIntersection: <T extends AnyNotNil>(firstLuaSet: ReadonlyLuaSet<T>, secondLuaSet: ReadonlyLuaSet<T>) => LuaSet<T>;
@@ -1,5 +1,12 @@
1
1
  local ____exports = {}
2
2
  local select = _G.select
3
+ local EMPTY_LUA_SET = {}
4
+ ____exports.emptyLuaSet = function()
5
+ return EMPTY_LUA_SET
6
+ end
7
+ ____exports.mutableLuaSet = function()
8
+ return {}
9
+ end
3
10
  ____exports.luaSetOf = function(...)
4
11
  local luaSet = {}
5
12
  for i = 1, select("#", ...) do
@@ -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