warscript 0.0.1-dev.81b7909 → 0.0.1-dev.82b83f9

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 (79) hide show
  1. package/core/types/effect.d.ts +13 -3
  2. package/core/types/effect.lua +116 -17
  3. package/core/types/frame.d.ts +4 -0
  4. package/core/types/frame.lua +71 -0
  5. package/core/util.d.ts +1 -1
  6. package/core/util.lua +12 -0
  7. package/engine/behavior.d.ts +2 -2
  8. package/engine/behavior.lua +6 -6
  9. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  10. package/engine/behaviour/ability/always-enabled.lua +31 -0
  11. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  12. package/engine/behaviour/ability/apply-buff.lua +32 -0
  13. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  14. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  15. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  16. package/engine/behaviour/ability/instant-impact.lua +4 -19
  17. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  18. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  19. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  20. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  21. package/engine/behaviour/ability.d.ts +15 -3
  22. package/engine/behaviour/ability.lua +93 -34
  23. package/engine/buff.d.ts +11 -1
  24. package/engine/buff.lua +50 -19
  25. package/engine/internal/ability.d.ts +16 -13
  26. package/engine/internal/ability.lua +80 -76
  27. package/engine/internal/item/ability.lua +106 -0
  28. package/engine/internal/item.d.ts +2 -2
  29. package/engine/internal/item.lua +56 -25
  30. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  31. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  32. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  33. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  34. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  35. package/engine/internal/object-data/evasion-probability.lua +16 -0
  36. package/engine/internal/unit/ability.d.ts +10 -1
  37. package/engine/internal/unit/ability.lua +36 -14
  38. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  39. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  40. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  41. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  42. package/engine/internal/unit/bonus.d.ts +2 -0
  43. package/engine/internal/unit/bonus.lua +17 -0
  44. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  45. package/engine/internal/unit/ignore-events-items.lua +5 -0
  46. package/engine/internal/unit/item.d.ts +3 -1
  47. package/engine/internal/unit/item.lua +27 -8
  48. package/engine/internal/unit/main-selected.d.ts +13 -0
  49. package/engine/internal/unit/main-selected.lua +51 -0
  50. package/engine/internal/unit-missile-launch.lua +24 -5
  51. package/engine/internal/unit.d.ts +21 -7
  52. package/engine/internal/unit.lua +152 -77
  53. package/engine/internal/utility.lua +12 -0
  54. package/engine/lightning.d.ts +12 -5
  55. package/engine/lightning.lua +48 -14
  56. package/engine/local-client.d.ts +7 -2
  57. package/engine/local-client.lua +82 -0
  58. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  59. package/engine/object-data/entry/ability-type.lua +8 -12
  60. package/engine/object-data/entry/item-type.d.ts +14 -0
  61. package/engine/object-data/entry/item-type.lua +91 -0
  62. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  63. package/engine/object-field/ability.d.ts +9 -3
  64. package/engine/object-field/ability.lua +4 -1
  65. package/engine/object-field.d.ts +2 -2
  66. package/engine/object-field.lua +4 -0
  67. package/engine/standard/fields/ability.d.ts +2 -0
  68. package/engine/standard/fields/ability.lua +2 -0
  69. package/engine/unit.d.ts +2 -0
  70. package/engine/unit.lua +2 -0
  71. package/index.d.ts +1 -0
  72. package/index.lua +1 -0
  73. package/package.json +2 -2
  74. package/patch-lua.d.ts +0 -0
  75. package/patch-lua.lua +10 -0
  76. package/utility/arrays.d.ts +8 -1
  77. package/utility/arrays.lua +34 -3
  78. package/utility/lazy.d.ts +2 -0
  79. package/utility/lazy.lua +14 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "warscript",
4
- "version": "0.0.1-dev.81b7909",
4
+ "version": "0.0.1-dev.82b83f9",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",
@@ -24,7 +24,7 @@
24
24
  "@warscript/language-extensions": "^0.0.1",
25
25
  "@warscript/tstl-plugin": "^0.0.4",
26
26
  "lua-types": "^2.13.1",
27
- "warpack": "0.0.1-dev.880fc91"
27
+ "warpack": "0.0.1-dev.1830aad"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@typescript-eslint/eslint-plugin": "^8.13.0",
package/patch-lua.d.ts ADDED
File without changes
package/patch-lua.lua ADDED
@@ -0,0 +1,10 @@
1
+ local getmetatable = _G.getmetatable
2
+ local ipairs = _G.ipairs
3
+
4
+ _G.ipairs = function(t)
5
+ local metatable = getmetatable(t)
6
+ if metatable and metatable.__ipairs then
7
+ return metatable.__ipairs(t)
8
+ end
9
+ return ipairs(t)
10
+ end
@@ -32,7 +32,10 @@ export declare const flatMapToLuaSet: {
32
32
  };
33
33
  export declare const mapIndexed: <T, R>(array: readonly T[], transform: (index: number, value: T) => R) => R[];
34
34
  export declare const associate: <T, K extends AnyNotNil, V>(array: readonly T[], keySelector: (value: T) => K, valueSelector: (value: T) => V) => LuaMap<K, V>;
35
- export declare const associateBy: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K) => LuaMap<K, V>;
35
+ export declare const associateBy: {
36
+ <K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K): LuaMap<K, V>;
37
+ <K extends KeysOfType<V, AnyNotNil>, V>(array: readonly V[], keySelector: K): LuaMap<V[K] extends AnyNotNil ? V[K] : never, V>;
38
+ };
36
39
  export declare const associateByIndexed: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (index: number, value: V) => K) => LuaMap<K, V>;
37
40
  export declare const associateWith: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (value: K) => V) => LuaMap<K, V>;
38
41
  export declare const associateWithIndexed: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (index: number, value: K) => V) => LuaMap<K, V>;
@@ -41,6 +44,10 @@ export declare const average: (array: readonly number[]) => number;
41
44
  export declare const sum: (array: readonly number[]) => number;
42
45
  export declare const product: (array: readonly number[]) => number;
43
46
  export declare const max: (array: readonly number[]) => number;
47
+ export declare const maxBy: {
48
+ <T, Args extends any[]>(array: readonly T[], selector: (value: T, ...args: Args) => number, ...args: Args): T | undefined;
49
+ <T, K extends KeysOfType<T, number>>(array: readonly T[], key: K): T | undefined;
50
+ };
44
51
  export declare const intersperse: <T>(array: readonly T[], delimiter: T) => T[];
45
52
  export declare const zip: <T, R, V>(array: readonly T[], otherArray: readonly R[], transform: (value: T, otherValue: R) => V) => V[];
46
53
  export declare const chunked: <T>(array: readonly T[], size: number) => T[][];
@@ -178,9 +178,16 @@ ____exports.associate = function(array, keySelector, valueSelector)
178
178
  end
179
179
  ____exports.associateBy = function(array, keySelector)
180
180
  local result = {}
181
- for i = 1, #array do
182
- local value = array[i]
183
- result[keySelector(value)] = value
181
+ if type(keySelector) == "function" then
182
+ for i = 1, #array do
183
+ local value = array[i]
184
+ result[keySelector(value)] = value
185
+ end
186
+ else
187
+ for i = 1, #array do
188
+ local value = array[i]
189
+ result[value[keySelector]] = value
190
+ end
184
191
  end
185
192
  return result
186
193
  end
@@ -251,6 +258,30 @@ ____exports.max = function(array)
251
258
  end
252
259
  return mathMax(table.unpack(array))
253
260
  end
261
+ ____exports.maxBy = function(array, selector, ...)
262
+ local result = nil
263
+ local maxValue = -math.huge
264
+ if type(selector) == "function" then
265
+ for i = 1, #array do
266
+ local element = array[i]
267
+ local value = selector(element, ...)
268
+ if value > maxValue then
269
+ result = element
270
+ maxValue = value
271
+ end
272
+ end
273
+ else
274
+ for i = 1, #array do
275
+ local element = array[i]
276
+ local value = element[selector]
277
+ if value > maxValue then
278
+ result = element
279
+ maxValue = value
280
+ end
281
+ end
282
+ end
283
+ return result
284
+ end
254
285
  ____exports.intersperse = function(array, delimiter)
255
286
  local result = {}
256
287
  local length = #array
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export declare const lazyRecord: <K extends keyof any, V>(initializer: (key: K) => V) => Readonly<Record<K, V>>;
@@ -0,0 +1,14 @@
1
+ local ____exports = {}
2
+ local rawset = _G.rawset
3
+ local setmetatable = _G.setmetatable
4
+ ____exports.lazyRecord = function(initializer)
5
+ return setmetatable(
6
+ {},
7
+ {__index = function(self, key)
8
+ local value = initializer(key)
9
+ rawset(self, key, value)
10
+ return value
11
+ end}
12
+ )
13
+ end
14
+ return ____exports