warscript 0.0.1-dev.989e1a3 → 0.0.1-dev.9979c8f

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 (69) hide show
  1. package/core/types/frame.lua +47 -1
  2. package/core/types/sound.lua +1 -1
  3. package/engine/behaviour/ability/damage.d.ts +3 -0
  4. package/engine/behaviour/ability/damage.lua +8 -2
  5. package/engine/behaviour/ability.d.ts +9 -5
  6. package/engine/behaviour/ability.lua +29 -0
  7. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  8. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  9. package/engine/behaviour/unit.lua +13 -3
  10. package/engine/buff.d.ts +53 -19
  11. package/engine/buff.lua +268 -142
  12. package/engine/internal/mechanics/cast-ability.lua +6 -3
  13. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  14. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  15. package/engine/internal/object-data/health-bonus.lua +16 -0
  16. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  17. package/engine/internal/object-data/mana-bonus.lua +16 -0
  18. package/engine/internal/unit/attributes.d.ts +17 -0
  19. package/engine/internal/unit/attributes.lua +46 -0
  20. package/engine/internal/unit/bonus.d.ts +4 -0
  21. package/engine/internal/unit/bonus.lua +23 -3
  22. package/engine/internal/unit/fly-height.lua +3 -3
  23. package/engine/internal/unit/interrupts.d.ts +12 -0
  24. package/engine/internal/unit/interrupts.lua +28 -0
  25. package/engine/internal/unit/range-event.d.ts +12 -0
  26. package/engine/internal/unit/range-event.lua +90 -0
  27. package/engine/internal/unit/scale.lua +3 -3
  28. package/engine/internal/unit+bonus.lua +3 -3
  29. package/engine/internal/unit-missile-launch.lua +12 -5
  30. package/engine/internal/unit.d.ts +2 -9
  31. package/engine/internal/unit.lua +79 -121
  32. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  33. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  34. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  35. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  36. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  37. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  38. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  39. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  40. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  41. package/engine/object-data/entry/ability-type.d.ts +2 -0
  42. package/engine/object-data/entry/ability-type.lua +84 -4
  43. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  44. package/engine/object-field/ability.lua +2 -2
  45. package/engine/object-field.d.ts +3 -1
  46. package/engine/object-field.lua +42 -18
  47. package/engine/random.d.ts +1 -0
  48. package/engine/random.lua +8 -0
  49. package/engine/standard/fields/unit.d.ts +11 -6
  50. package/engine/standard/fields/unit.lua +12 -5
  51. package/engine/unit.d.ts +3 -0
  52. package/engine/unit.lua +3 -0
  53. package/lualib_bundle.lua +1 -1
  54. package/math.d.ts +2 -0
  55. package/math.lua +14 -0
  56. package/objutil/buff.lua +9 -7
  57. package/objutil/object.lua +1 -1
  58. package/operation.lua +1 -4
  59. package/package.json +5 -5
  60. package/patch-lua.lua +15 -0
  61. package/utility/linked-map.d.ts +34 -0
  62. package/utility/linked-map.lua +101 -0
  63. package/utility/linked-set.d.ts +2 -1
  64. package/utility/linked-set.lua +21 -0
  65. package/utility/records.lua +20 -1
  66. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  67. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  68. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  69. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/patch-lua.lua CHANGED
@@ -1,5 +1,9 @@
1
+ local error = _G.error
1
2
  local getmetatable = _G.getmetatable
2
3
  local ipairs = _G.ipairs
4
+ local select = _G.select
5
+ local tostring = _G.tostring
6
+ local tableconcat = table.concat
3
7
 
4
8
  _G.ipairs = function(t)
5
9
  local metatable = getmetatable(t)
@@ -8,3 +12,14 @@ _G.ipairs = function(t)
8
12
  end
9
13
  return ipairs(t)
10
14
  end
15
+
16
+ _G.assert = function(v, ...)
17
+ if not v then
18
+ local args = {}
19
+ for i = 1, select("#", ...) do
20
+ args[i] = tostring(select(i, ...))
21
+ end
22
+ error(tableconcat(args, " "))
23
+ end
24
+ return v, ...
25
+ end
@@ -0,0 +1,34 @@
1
+ /** @noSelfInFile */
2
+ import { ReadonlyLinkedSet } from "./linked-set";
3
+ type IteratorState<K extends AnyNotNil, V> = {
4
+ n?: K;
5
+ t: LuaMap<K, K>;
6
+ v: LuaMap<K, V>;
7
+ };
8
+ type OneSidedTypeGuard = {
9
+ readonly __oneSidedTypeGuard: unique symbol;
10
+ };
11
+ export interface ReadonlyLinkedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
12
+ readonly keys: ReadonlyLinkedSet<K>;
13
+ get(key: K): V | undefined;
14
+ contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
15
+ readonly size: number;
16
+ }
17
+ export interface LinkedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
18
+ readonly __linkedSet: unique symbol;
19
+ }
20
+ export declare class LinkedMap<K extends AnyNotNil, V> implements ReadonlyLinkedMap<K, V> {
21
+ private k;
22
+ private v;
23
+ get keys(): ReadonlyLinkedSet<K>;
24
+ get(key: K): V | undefined;
25
+ getOrPut(key: K, defaultValue: (this: void) => V): V;
26
+ put(key: K, value: V): void;
27
+ remove(key: K): boolean;
28
+ contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
29
+ get size(): number;
30
+ protected __pairs(this: LinkedMap<K, V>): LuaIterator<LuaMultiReturn<[K | undefined, V | undefined]>, IteratorState<K, V>>;
31
+ }
32
+ export declare const emptyLinkedMap: <K extends AnyNotNil, V>() => ReadonlyLinkedMap<K, V>;
33
+ export declare const mutableLinkedMap: <K extends AnyNotNil, V>() => LinkedMap<K, V>;
34
+ export {};
@@ -0,0 +1,101 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
6
+ local ____exports = {}
7
+ local ____linked_2Dset = require("utility.linked-set")
8
+ local LinkedSet = ____linked_2Dset.LinkedSet
9
+ local ____exception = require("exception")
10
+ local UnsupportedOperationException = ____exception.UnsupportedOperationException
11
+ local function linkedMapNext(state)
12
+ local n = state.n
13
+ state.n = state.t[n]
14
+ return n, state.v[n]
15
+ end
16
+ ____exports.LinkedMap = __TS__Class()
17
+ local LinkedMap = ____exports.LinkedMap
18
+ LinkedMap.name = "LinkedMap"
19
+ function LinkedMap.prototype.____constructor(self)
20
+ self.k = __TS__New(LinkedSet)
21
+ self.v = {}
22
+ end
23
+ function LinkedMap.prototype.get(self, key)
24
+ return self.v[key]
25
+ end
26
+ function LinkedMap.prototype.getOrPut(self, key, defaultValue)
27
+ local value = self.v[key]
28
+ if value ~= nil then
29
+ return value
30
+ end
31
+ value = defaultValue()
32
+ self.k:add(key)
33
+ self.v[key] = value
34
+ return value
35
+ end
36
+ function LinkedMap.prototype.put(self, key, value)
37
+ self.k:add(key)
38
+ self.v[key] = value
39
+ end
40
+ function LinkedMap.prototype.remove(self, key)
41
+ if self.k:remove(key) then
42
+ self.v[key] = nil
43
+ return true
44
+ end
45
+ return false
46
+ end
47
+ function LinkedMap.prototype.contains(self, key)
48
+ return self.keys:contains(key)
49
+ end
50
+ function LinkedMap.prototype.__pairs(self)
51
+ return linkedMapNext, {n = self.k.f, t = self.k.n, v = self.v}, nil
52
+ end
53
+ __TS__SetDescriptor(
54
+ LinkedMap.prototype,
55
+ "keys",
56
+ {get = function(self)
57
+ return self.k
58
+ end},
59
+ true
60
+ )
61
+ __TS__SetDescriptor(
62
+ LinkedMap.prototype,
63
+ "size",
64
+ {get = function(self)
65
+ return self.keys.size
66
+ end},
67
+ true
68
+ )
69
+ local emptyIteratorState = {t = {}, v = {}}
70
+ local EmptyLinkedMap = __TS__Class()
71
+ EmptyLinkedMap.name = "EmptyLinkedMap"
72
+ __TS__ClassExtends(EmptyLinkedMap, ____exports.LinkedMap)
73
+ function EmptyLinkedMap.prototype.getOrPut(self)
74
+ error(
75
+ __TS__New(UnsupportedOperationException),
76
+ 0
77
+ )
78
+ end
79
+ function EmptyLinkedMap.prototype.put(self)
80
+ error(
81
+ __TS__New(UnsupportedOperationException),
82
+ 0
83
+ )
84
+ end
85
+ function EmptyLinkedMap.prototype.remove(self)
86
+ error(
87
+ __TS__New(UnsupportedOperationException),
88
+ 0
89
+ )
90
+ end
91
+ function EmptyLinkedMap.prototype.__pairs(self)
92
+ return linkedMapNext, emptyIteratorState, nil
93
+ end
94
+ local EMPTY_LINKED_MAP = __TS__New(EmptyLinkedMap)
95
+ ____exports.emptyLinkedMap = function()
96
+ return EMPTY_LINKED_MAP
97
+ end
98
+ ____exports.mutableLinkedMap = function()
99
+ return __TS__New(____exports.LinkedMap)
100
+ end
101
+ return ____exports
@@ -14,7 +14,7 @@ export interface ReadonlyLinkedSet<T extends AnyNotNil> extends LuaPairsKeyItera
14
14
  next(key: T): T | undefined;
15
15
  previous(key: T): T | undefined;
16
16
  contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
17
- size: number;
17
+ readonly size: number;
18
18
  forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;
19
19
  toArray(): T[];
20
20
  sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
@@ -40,6 +40,7 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
40
40
  next(key: T): T | undefined;
41
41
  previous(key: T): T | undefined;
42
42
  add(key: T): boolean;
43
+ protected addBefore(value: T, key: T): boolean;
43
44
  remove(key: T): boolean;
44
45
  contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
45
46
  clear(): void;
@@ -85,6 +85,23 @@ function LinkedSet.prototype.add(self, key)
85
85
  end
86
86
  return true
87
87
  end
88
+ function LinkedSet.prototype.addBefore(self, value, key)
89
+ local n = self.n
90
+ local p = self.p
91
+ local previous = p[value]
92
+ if previous ~= nil then
93
+ n[previous] = key
94
+ p[key] = previous
95
+ elseif value == self.f then
96
+ self.f = key
97
+ else
98
+ return false
99
+ end
100
+ n[key] = value
101
+ p[value] = key
102
+ self.s = self.s + 1
103
+ return true
104
+ end
88
105
  function LinkedSet.prototype.remove(self, key)
89
106
  local n = self.n
90
107
  local next = n[key]
@@ -182,6 +199,7 @@ __TS__SetDescriptor(
182
199
  end},
183
200
  true
184
201
  )
202
+ local emptyIteratorState = {t = {}}
185
203
  local EmptyLinkedSet = __TS__Class()
186
204
  EmptyLinkedSet.name = "EmptyLinkedSet"
187
205
  __TS__ClassExtends(EmptyLinkedSet, ____exports.LinkedSet)
@@ -191,6 +209,9 @@ function EmptyLinkedSet.prototype.add(self)
191
209
  0
192
210
  )
193
211
  end
212
+ function EmptyLinkedSet.prototype.__pairs(self)
213
+ return linkedSetNext, emptyIteratorState, nil
214
+ end
194
215
  local EMPTY_LINKED_SET = __TS__New(EmptyLinkedSet)
195
216
  ____exports.emptyLinkedSet = function()
196
217
  return EMPTY_LINKED_SET
@@ -1,9 +1,28 @@
1
1
  local ____exports = {}
2
+ local ____pairs = _G.pairs
3
+ local tableSort = table.sort
2
4
  ____exports.invertRecord = function(record)
3
5
  local invertRecord = {}
4
- for key, value in pairs(record) do
6
+ for key, value in ____pairs(record) do
5
7
  invertRecord[value] = key
6
8
  end
7
9
  return invertRecord
8
10
  end
11
+ local sortedKeysInternal = {}
12
+ local lastSortedKeysLength = 0
13
+ ---
14
+ -- @internal For use by internal systems only.
15
+ ____exports.sortedKeysUnnested = function(record)
16
+ local length = 0
17
+ for key in ____pairs(record) do
18
+ length = length + 1
19
+ sortedKeysInternal[length] = key
20
+ end
21
+ for i = length + 1, lastSortedKeysLength do
22
+ sortedKeysInternal[i] = nil
23
+ end
24
+ lastSortedKeysLength = length
25
+ tableSort(sortedKeysInternal)
26
+ return sortedKeysInternal
27
+ end
9
28
  return ____exports