warscript 0.0.1-dev.a21905e → 0.0.1-dev.a228cc0

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 (59) 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/emulate-impact.d.ts +6 -0
  12. package/engine/behaviour/ability/emulate-impact.lua +29 -0
  13. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  14. package/engine/behaviour/ability/instant-impact.lua +4 -19
  15. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  16. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  17. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  18. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  19. package/engine/behaviour/ability.d.ts +9 -2
  20. package/engine/behaviour/ability.lua +47 -33
  21. package/engine/buff.d.ts +6 -1
  22. package/engine/buff.lua +29 -18
  23. package/engine/internal/ability.d.ts +16 -13
  24. package/engine/internal/ability.lua +79 -76
  25. package/engine/internal/item/ability.lua +81 -0
  26. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  27. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  28. package/engine/internal/unit/ability.d.ts +10 -1
  29. package/engine/internal/unit/ability.lua +36 -14
  30. package/engine/internal/unit/item.d.ts +2 -0
  31. package/engine/internal/unit/item.lua +20 -4
  32. package/engine/internal/unit/main-selected.d.ts +13 -0
  33. package/engine/internal/unit/main-selected.lua +51 -0
  34. package/engine/internal/unit-missile-launch.lua +24 -5
  35. package/engine/internal/unit.d.ts +20 -7
  36. package/engine/internal/unit.lua +112 -66
  37. package/engine/internal/utility.lua +12 -0
  38. package/engine/local-client.d.ts +7 -2
  39. package/engine/local-client.lua +82 -0
  40. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  41. package/engine/object-data/entry/ability-type.lua +8 -12
  42. package/engine/object-data/entry/item-type.d.ts +14 -0
  43. package/engine/object-data/entry/item-type.lua +91 -0
  44. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  45. package/engine/object-field/ability.d.ts +4 -1
  46. package/engine/object-field/ability.lua +1 -1
  47. package/engine/standard/fields/ability.d.ts +2 -0
  48. package/engine/standard/fields/ability.lua +2 -0
  49. package/engine/unit.d.ts +1 -0
  50. package/engine/unit.lua +1 -0
  51. package/index.d.ts +1 -0
  52. package/index.lua +1 -0
  53. package/package.json +1 -1
  54. package/patch-lua.d.ts +0 -0
  55. package/patch-lua.lua +10 -0
  56. package/utility/arrays.d.ts +8 -1
  57. package/utility/arrays.lua +34 -3
  58. package/utility/lazy.d.ts +2 -0
  59. package/utility/lazy.lua +14 -0
@@ -256,4 +256,95 @@ __TS__SetDescriptor(
256
256
  },
257
257
  true
258
258
  )
259
+ __TS__SetDescriptor(
260
+ ItemType.prototype,
261
+ "cooldownGroupId",
262
+ {
263
+ get = function(self)
264
+ return self:getObjectDataEntryIdField("icid")
265
+ end,
266
+ set = function(self, cooldownGroupId)
267
+ self:setObjectDataEntryIdField("icid", cooldownGroupId)
268
+ end
269
+ },
270
+ true
271
+ )
272
+ __TS__SetDescriptor(
273
+ ItemType.prototype,
274
+ "goldCost",
275
+ {
276
+ get = function(self)
277
+ return self:getNumberField("igol")
278
+ end,
279
+ set = function(self, goldCost)
280
+ self:setNumberField("igol", goldCost)
281
+ end
282
+ },
283
+ true
284
+ )
285
+ __TS__SetDescriptor(
286
+ ItemType.prototype,
287
+ "lumberCost",
288
+ {
289
+ get = function(self)
290
+ return self:getNumberField("ilum")
291
+ end,
292
+ set = function(self, lumberCost)
293
+ self:setNumberField("ilum", lumberCost)
294
+ end
295
+ },
296
+ true
297
+ )
298
+ __TS__SetDescriptor(
299
+ ItemType.prototype,
300
+ "activelyUsed",
301
+ {
302
+ get = function(self)
303
+ return self:getBooleanField("iusa")
304
+ end,
305
+ set = function(self, activelyUsed)
306
+ self:setBooleanField("iusa", activelyUsed)
307
+ end
308
+ },
309
+ true
310
+ )
311
+ __TS__SetDescriptor(
312
+ ItemType.prototype,
313
+ "perishable",
314
+ {
315
+ get = function(self)
316
+ return self:getBooleanField("iper")
317
+ end,
318
+ set = function(self, perishable)
319
+ self:setBooleanField("iper", perishable)
320
+ end
321
+ },
322
+ true
323
+ )
324
+ __TS__SetDescriptor(
325
+ ItemType.prototype,
326
+ "initialStackSize",
327
+ {
328
+ get = function(self)
329
+ return self:getNumberField("iuse")
330
+ end,
331
+ set = function(self, initialStackSize)
332
+ self:setNumberField("iuse", initialStackSize)
333
+ end
334
+ },
335
+ true
336
+ )
337
+ __TS__SetDescriptor(
338
+ ItemType.prototype,
339
+ "maximumStackSize",
340
+ {
341
+ get = function(self)
342
+ return self:getNumberField("ista")
343
+ end,
344
+ set = function(self, maximumStackSize)
345
+ self:setNumberField("ista", maximumStackSize)
346
+ end
347
+ },
348
+ true
349
+ )
259
350
  return ____exports
@@ -1,5 +1,6 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
3
4
  local ____exports = {}
4
5
  local ____preconditions = require("utility.preconditions")
5
6
  local checkNotNull = ____preconditions.checkNotNull
@@ -60,4 +61,10 @@ function ObjectDataEntryIdGenerator.prototype.next(self)
60
61
  self.id = id
61
62
  return id
62
63
  end
64
+ ---
65
+ -- @internal For use by internal systems only.
66
+ ____exports.abilityTypeIdGenerator = __TS__New(
67
+ ____exports.ObjectDataEntryIdGenerator,
68
+ fourCC("A000")
69
+ )
63
70
  return ____exports
@@ -131,4 +131,7 @@ export declare class AbilityCombatClassificationsLevelField extends AbilityLevel
131
131
  protected setNativeFieldValue(instance: Ability, level: number, value: CombatClassifications): boolean;
132
132
  }
133
133
  export type AbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType> | ((ability: Ability) => ValueType);
134
- export declare const resolveCurrentAbilityDependentValue: <ValueType extends boolean | number | string>(ability: Ability, value: AbilityDependentValue<ValueType>) => ValueType;
134
+ export declare const resolveCurrentAbilityDependentValue: {
135
+ <ValueType extends boolean | number | string>(ability: Ability, value: AbilityDependentValue<ValueType>): ValueType;
136
+ <ValueType extends boolean | number | string>(ability: Ability, value?: AbilityDependentValue<ValueType>): ValueType | undefined;
137
+ };
@@ -261,7 +261,7 @@ local AbilityLevelField = ____exports.AbilityLevelField
261
261
  AbilityLevelField.name = "AbilityLevelField"
262
262
  __TS__ClassExtends(AbilityLevelField, ObjectLevelField)
263
263
  function AbilityLevelField.prototype.getLevelCount(self, entry)
264
- return __TS__InstanceOf(entry, Ability) and #entry.levels or entry.levelCount
264
+ return entry.levelCount
265
265
  end
266
266
  function AbilityLevelField.prototype.getObjectDataEntryId(self, instance)
267
267
  return instance.typeId
@@ -687,6 +687,8 @@ export declare const DISABLE_OTHER_ABILITIES_ABILITY_BOOLEAN_LEVEL_FIELD: Abilit
687
687
  export declare const ALLOW_BOUNTY_ABILITY_BOOLEAN_LEVEL_FIELD: AbilityBooleanLevelField & symbol;
688
688
  export declare const ICON_NORMAL_ABILITY_STRING_LEVEL_FIELD: AbilityStringLevelField & symbol;
689
689
  export declare const CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD: AbilityStringArrayField & symbol;
690
+ export declare const CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
691
+ export declare const CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
690
692
  export declare const TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD: AbilityStringArrayField & symbol;
691
693
  export declare const TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
692
694
  export declare const TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
@@ -698,6 +698,8 @@ ____exports.DISABLE_OTHER_ABILITIES_ABILITY_BOOLEAN_LEVEL_FIELD = AbilityBoolean
698
698
  ____exports.ALLOW_BOUNTY_ABILITY_BOOLEAN_LEVEL_FIELD = AbilityBooleanLevelField:create(fourCC("Ntm4"))
699
699
  ____exports.ICON_NORMAL_ABILITY_STRING_LEVEL_FIELD = AbilityStringLevelField:create(fourCC("aart"))
700
700
  ____exports.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = AbilityStringArrayField:create(fourCC("acat"))
701
+ ____exports.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("acap"))
702
+ ____exports.CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("aca1"))
701
703
  ____exports.TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = AbilityStringArrayField:create(fourCC("atat"))
702
704
  ____exports.TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("ata0"))
703
705
  ____exports.TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("ata1"))
package/engine/unit.d.ts CHANGED
@@ -16,6 +16,7 @@ import "./internal/unit-missile-launch";
16
16
  import "./internal/unit/ghost-counter";
17
17
  import "./internal/unit/invulnerability-counter";
18
18
  import "./internal/unit/detach-missiles";
19
+ import "./internal/unit/main-selected";
19
20
  import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
20
21
  export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
21
22
  export * from "./internal/unit+damage";
package/engine/unit.lua CHANGED
@@ -16,6 +16,7 @@ require("engine.internal.unit-missile-launch")
16
16
  require("engine.internal.unit.ghost-counter")
17
17
  require("engine.internal.unit.invulnerability-counter")
18
18
  require("engine.internal.unit.detach-missiles")
19
+ require("engine.internal.unit.main-selected")
19
20
  require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
20
21
  do
21
22
  local ____unit = require("engine.internal.unit")
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import "./types";
3
+ import "./patch-lua";
3
4
  import "./patch-lualib";
4
5
  import "./patch-natives";
5
6
  import "./global/math";
package/index.lua CHANGED
@@ -1,5 +1,6 @@
1
1
  local ____exports = {}
2
2
  require("types")
3
+ require("patch-lua")
3
4
  require("patch-lualib")
4
5
  require("patch-natives")
5
6
  require("global.math")
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.a21905e",
4
+ "version": "0.0.1-dev.a228cc0",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",
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