warscript 0.0.1-dev.ee2345e → 0.0.1-dev.f955a59

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 (141) hide show
  1. package/attributes.d.ts +0 -1
  2. package/binaryreader.d.ts +1 -0
  3. package/binaryreader.lua +3 -0
  4. package/core/types/effect.d.ts +13 -3
  5. package/core/types/effect.lua +116 -17
  6. package/core/types/frame.d.ts +8 -1
  7. package/core/types/frame.lua +93 -1
  8. package/core/types/group.d.ts +0 -1
  9. package/core/types/image.d.ts +0 -1
  10. package/core/types/missile.d.ts +2 -2
  11. package/core/types/missile.lua +8 -2
  12. package/core/types/unit.lua +8 -0
  13. package/core/util.d.ts +1 -1
  14. package/core/util.lua +12 -0
  15. package/decl/index.d.ts +1 -0
  16. package/engine/ability.d.ts +1 -1
  17. package/engine/behavior.d.ts +10 -10
  18. package/engine/behavior.lua +6 -6
  19. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  20. package/engine/behaviour/ability/always-enabled.lua +31 -0
  21. package/engine/behaviour/ability/apply-buff.d.ts +3 -5
  22. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  23. package/engine/behaviour/ability/damage.d.ts +33 -11
  24. package/engine/behaviour/ability/damage.lua +89 -31
  25. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  26. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  27. package/engine/behaviour/ability/heal.d.ts +33 -6
  28. package/engine/behaviour/ability/heal.lua +89 -10
  29. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  30. package/engine/behaviour/ability/instant-impact.lua +4 -15
  31. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  32. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  33. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  34. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  35. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  36. package/engine/behaviour/ability/restore-mana.lua +29 -0
  37. package/engine/behaviour/ability.d.ts +21 -3
  38. package/engine/behaviour/ability.lua +120 -12
  39. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  40. package/engine/behaviour/unit.d.ts +8 -2
  41. package/engine/behaviour/unit.lua +27 -0
  42. package/engine/buff.d.ts +68 -21
  43. package/engine/buff.lua +276 -90
  44. package/engine/game-map.d.ts +7 -0
  45. package/engine/game-map.lua +32 -0
  46. package/engine/internal/ability.d.ts +16 -13
  47. package/engine/internal/ability.lua +82 -76
  48. package/engine/internal/item/ability.lua +106 -0
  49. package/engine/internal/item+owner.lua +2 -2
  50. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  51. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  52. package/engine/internal/unit/ability.d.ts +10 -1
  53. package/engine/internal/unit/ability.lua +36 -14
  54. package/engine/internal/unit/bonus.d.ts +9 -8
  55. package/engine/internal/unit/bonus.lua +6 -1
  56. package/engine/internal/unit/item.d.ts +24 -0
  57. package/engine/internal/unit/item.lua +79 -0
  58. package/engine/internal/unit/main-selected.d.ts +13 -0
  59. package/engine/internal/unit/main-selected.lua +51 -0
  60. package/engine/internal/unit+ability.lua +2 -2
  61. package/engine/internal/unit+transport.lua +4 -10
  62. package/engine/internal/unit-missile-launch.lua +25 -6
  63. package/engine/internal/unit.d.ts +58 -16
  64. package/engine/internal/unit.lua +365 -132
  65. package/engine/internal/utility.lua +12 -0
  66. package/engine/local-client.d.ts +7 -2
  67. package/engine/local-client.lua +82 -0
  68. package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
  69. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  70. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  71. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  72. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  73. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  74. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  75. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  76. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  77. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  78. package/engine/object-data/entry/ability-type.d.ts +0 -1
  79. package/engine/object-data/entry/ability-type.lua +8 -12
  80. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  81. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  82. package/engine/object-data/entry/buff-type.d.ts +0 -1
  83. package/engine/object-data/entry/destructible-type.d.ts +0 -1
  84. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  85. package/engine/object-data/entry/item-type.d.ts +14 -1
  86. package/engine/object-data/entry/item-type.lua +91 -0
  87. package/engine/object-data/entry/lightning-type.d.ts +0 -1
  88. package/engine/object-data/entry/unit-type.d.ts +37 -2
  89. package/engine/object-data/entry/unit-type.lua +333 -49
  90. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  91. package/engine/object-data/entry/upgrade.d.ts +0 -1
  92. package/engine/object-data/entry.d.ts +2 -3
  93. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  94. package/engine/object-field/ability.d.ts +26 -3
  95. package/engine/object-field/ability.lua +54 -1
  96. package/engine/object-field.d.ts +2 -3
  97. package/engine/object-field.lua +4 -0
  98. package/engine/random.d.ts +1 -0
  99. package/engine/random.lua +9 -0
  100. package/engine/standard/entries/unit-type.d.ts +39 -1
  101. package/engine/standard/entries/unit-type.lua +39 -1
  102. package/engine/standard/fields/ability.d.ts +3 -1
  103. package/engine/standard/fields/ability.lua +3 -1
  104. package/engine/unit.d.ts +2 -0
  105. package/engine/unit.lua +11 -2
  106. package/event.d.ts +2 -3
  107. package/event.lua +9 -5
  108. package/index.d.ts +1 -0
  109. package/index.lua +1 -0
  110. package/lualib_bundle.lua +146 -42
  111. package/math/vec2.d.ts +2 -9
  112. package/math.d.ts +0 -2
  113. package/net/socket.d.ts +7 -1
  114. package/net/socket.lua +45 -4
  115. package/network.d.ts +1 -0
  116. package/network.lua +3 -2
  117. package/objutil/ability.d.ts +0 -1
  118. package/objutil/buff.d.ts +0 -1
  119. package/objutil/buff.lua +1 -1
  120. package/objutil/object.d.ts +0 -1
  121. package/objutil/unit.d.ts +0 -1
  122. package/package.json +13 -14
  123. package/patch-lua.d.ts +0 -0
  124. package/patch-lua.lua +10 -0
  125. package/property.d.ts +55 -0
  126. package/property.lua +374 -0
  127. package/string.d.ts +30 -0
  128. package/string.lua +14 -0
  129. package/util/stream.d.ts +0 -1
  130. package/utility/arrays.d.ts +11 -5
  131. package/utility/arrays.lua +34 -3
  132. package/utility/bit-set.d.ts +0 -2
  133. package/utility/lazy.d.ts +2 -0
  134. package/utility/lazy.lua +14 -0
  135. package/utility/linked-set.d.ts +11 -3
  136. package/utility/linked-set.lua +5 -2
  137. package/utility/lua-maps.d.ts +1 -2
  138. package/utility/lua-sets.d.ts +1 -2
  139. package/utility/types.d.ts +1 -0
  140. package/core/mapbounds.d.ts +0 -8
  141. package/core/mapbounds.lua +0 -12
package/lualib_bundle.lua CHANGED
@@ -193,8 +193,14 @@ do
193
193
  result[#result + 1] = v
194
194
  end
195
195
  else
196
- for i, v in arrayLikeIterator(arrayLike) do
197
- result[#result + 1] = mapFn(thisArg, v, i - 1)
196
+ local i = 0
197
+ for ____, v in arrayLikeIterator(arrayLike) do
198
+ local ____mapFn_3 = mapFn
199
+ local ____thisArg_1 = thisArg
200
+ local ____v_2 = v
201
+ local ____i_0 = i
202
+ i = ____i_0 + 1
203
+ result[#result + 1] = ____mapFn_3(____thisArg_1, ____v_2, ____i_0)
198
204
  end
199
205
  end
200
206
  return result
@@ -773,10 +779,11 @@ end
773
779
 
774
780
  local __TS__AsyncAwaiter, __TS__Await
775
781
  do
776
- local cocreate = coroutine.create
777
- local coresume = coroutine.resume
778
- local costatus = coroutine.status
779
- local coyield = coroutine.yield
782
+ local ____coroutine = _G.coroutine or ({})
783
+ local cocreate = ____coroutine.create
784
+ local coresume = ____coroutine.resume
785
+ local costatus = ____coroutine.status
786
+ local coyield = ____coroutine.yield
780
787
  function __TS__AsyncAwaiter(generator)
781
788
  return __TS__New(
782
789
  __TS__Promise,
@@ -1087,6 +1094,11 @@ do
1087
1094
  end
1088
1095
  if __TS__StringIncludes(_VERSION, "Lua 5.0") then
1089
1096
  return debug.traceback(("[Level " .. tostring(level)) .. "]")
1097
+ elseif _VERSION == "Lua 5.1" then
1098
+ return string.sub(
1099
+ debug.traceback("", level),
1100
+ 2
1101
+ )
1090
1102
  else
1091
1103
  return debug.traceback(nil, level)
1092
1104
  end
@@ -1095,7 +1107,7 @@ do
1095
1107
  return function(self)
1096
1108
  local description = getDescription(self)
1097
1109
  local caller = debug.getinfo(3, "f")
1098
- local isClassicLua = __TS__StringIncludes(_VERSION, "Lua 5.0") or _VERSION == "Lua 5.1"
1110
+ local isClassicLua = __TS__StringIncludes(_VERSION, "Lua 5.0")
1099
1111
  if isClassicLua or caller and caller.func ~= error then
1100
1112
  return description
1101
1113
  else
@@ -1119,7 +1131,7 @@ do
1119
1131
  end
1120
1132
  self.message = message
1121
1133
  self.name = "Error"
1122
- self.stack = getErrorStack(nil, self.constructor.new)
1134
+ self.stack = getErrorStack(nil, __TS__New)
1123
1135
  local metatable = getmetatable(self)
1124
1136
  if metatable and not metatable.__errorToStringPatched then
1125
1137
  metatable.__errorToStringPatched = true
@@ -1417,19 +1429,51 @@ do
1417
1429
  Map[Symbol.species] = Map
1418
1430
  end
1419
1431
 
1432
+ local function __TS__MapGroupBy(items, keySelector)
1433
+ local result = __TS__New(Map)
1434
+ local i = 0
1435
+ for ____, item in __TS__Iterator(items) do
1436
+ local key = keySelector(nil, item, i)
1437
+ if result:has(key) then
1438
+ local ____temp_0 = result:get(key)
1439
+ ____temp_0[#____temp_0 + 1] = item
1440
+ else
1441
+ result:set(key, {item})
1442
+ end
1443
+ i = i + 1
1444
+ end
1445
+ return result
1446
+ end
1447
+
1420
1448
  local __TS__Match = string.match
1421
1449
 
1422
1450
  local __TS__MathAtan2 = math.atan2 or math.atan
1423
1451
 
1424
1452
  local __TS__MathModf = math.modf
1425
1453
 
1454
+ local function __TS__NumberIsNaN(value)
1455
+ return value ~= value
1456
+ end
1457
+
1426
1458
  local function __TS__MathSign(val)
1427
- if val > 0 then
1428
- return 1
1429
- elseif val < 0 then
1459
+ if __TS__NumberIsNaN(val) or val == 0 then
1460
+ return val
1461
+ end
1462
+ if val < 0 then
1430
1463
  return -1
1431
1464
  end
1432
- return 0
1465
+ return 1
1466
+ end
1467
+
1468
+ local function __TS__NumberIsFinite(value)
1469
+ return type(value) == "number" and value == value and value ~= math.huge and value ~= -math.huge
1470
+ end
1471
+
1472
+ local function __TS__MathTrunc(val)
1473
+ if not __TS__NumberIsFinite(val) or val == 0 then
1474
+ return val
1475
+ end
1476
+ return val > 0 and math.floor(val) or math.ceil(val)
1433
1477
  end
1434
1478
 
1435
1479
  local function __TS__Number(value)
@@ -1459,18 +1503,10 @@ local function __TS__Number(value)
1459
1503
  end
1460
1504
  end
1461
1505
 
1462
- local function __TS__NumberIsFinite(value)
1463
- return type(value) == "number" and value == value and value ~= math.huge and value ~= -math.huge
1464
- end
1465
-
1466
1506
  local function __TS__NumberIsInteger(value)
1467
1507
  return __TS__NumberIsFinite(value) and math.floor(value) == value
1468
1508
  end
1469
1509
 
1470
- local function __TS__NumberIsNaN(value)
1471
- return value ~= value
1472
- end
1473
-
1474
1510
  local function __TS__StringSubstring(self, start, ____end)
1475
1511
  if ____end ~= ____end then
1476
1512
  ____end = 0
@@ -1603,23 +1639,17 @@ local function __TS__ObjectDefineProperty(target, key, desc)
1603
1639
  local valueExists = value ~= nil
1604
1640
  local ____desc_set_4 = desc.set
1605
1641
  local ____desc_get_5 = desc.get
1606
- local ____temp_0
1607
- if desc.configurable ~= nil then
1608
- ____temp_0 = desc.configurable
1609
- else
1610
- ____temp_0 = valueExists
1642
+ local ____desc_configurable_0 = desc.configurable
1643
+ if ____desc_configurable_0 == nil then
1644
+ ____desc_configurable_0 = valueExists
1611
1645
  end
1612
- local ____temp_1
1613
- if desc.enumerable ~= nil then
1614
- ____temp_1 = desc.enumerable
1615
- else
1616
- ____temp_1 = valueExists
1646
+ local ____desc_enumerable_1 = desc.enumerable
1647
+ if ____desc_enumerable_1 == nil then
1648
+ ____desc_enumerable_1 = valueExists
1617
1649
  end
1618
- local ____temp_2
1619
- if desc.writable ~= nil then
1620
- ____temp_2 = desc.writable
1621
- else
1622
- ____temp_2 = valueExists
1650
+ local ____desc_writable_2 = desc.writable
1651
+ if ____desc_writable_2 == nil then
1652
+ ____desc_writable_2 = valueExists
1623
1653
  end
1624
1654
  local ____temp_3
1625
1655
  if desc.value ~= nil then
@@ -1630,9 +1660,9 @@ local function __TS__ObjectDefineProperty(target, key, desc)
1630
1660
  descriptor = {
1631
1661
  set = ____desc_set_4,
1632
1662
  get = ____desc_get_5,
1633
- configurable = ____temp_0,
1634
- enumerable = ____temp_1,
1635
- writable = ____temp_2,
1663
+ configurable = ____desc_configurable_0,
1664
+ enumerable = ____desc_enumerable_1,
1665
+ writable = ____desc_writable_2,
1636
1666
  value = ____temp_3
1637
1667
  }
1638
1668
  end
@@ -1671,6 +1701,22 @@ local function __TS__ObjectFromEntries(entries)
1671
1701
  return obj
1672
1702
  end
1673
1703
 
1704
+ local function __TS__ObjectGroupBy(items, keySelector)
1705
+ local result = {}
1706
+ local i = 0
1707
+ for ____, item in __TS__Iterator(items) do
1708
+ local key = keySelector(nil, item, i)
1709
+ if result[key] ~= nil then
1710
+ local ____result_key_0 = result[key]
1711
+ ____result_key_0[#____result_key_0 + 1] = item
1712
+ else
1713
+ result[key] = {item}
1714
+ end
1715
+ i = i + 1
1716
+ end
1717
+ return result
1718
+ end
1719
+
1674
1720
  local function __TS__ObjectKeys(obj)
1675
1721
  local result = {}
1676
1722
  local len = 0
@@ -1994,6 +2040,64 @@ do
1994
2040
  end
1995
2041
  }
1996
2042
  end
2043
+ function Set.prototype.union(self, other)
2044
+ local result = __TS__New(Set, self)
2045
+ for ____, item in __TS__Iterator(other) do
2046
+ result:add(item)
2047
+ end
2048
+ return result
2049
+ end
2050
+ function Set.prototype.intersection(self, other)
2051
+ local result = __TS__New(Set)
2052
+ for ____, item in __TS__Iterator(self) do
2053
+ if other:has(item) then
2054
+ result:add(item)
2055
+ end
2056
+ end
2057
+ return result
2058
+ end
2059
+ function Set.prototype.difference(self, other)
2060
+ local result = __TS__New(Set, self)
2061
+ for ____, item in __TS__Iterator(other) do
2062
+ result:delete(item)
2063
+ end
2064
+ return result
2065
+ end
2066
+ function Set.prototype.symmetricDifference(self, other)
2067
+ local result = __TS__New(Set, self)
2068
+ for ____, item in __TS__Iterator(other) do
2069
+ if self:has(item) then
2070
+ result:delete(item)
2071
+ else
2072
+ result:add(item)
2073
+ end
2074
+ end
2075
+ return result
2076
+ end
2077
+ function Set.prototype.isSubsetOf(self, other)
2078
+ for ____, item in __TS__Iterator(self) do
2079
+ if not other:has(item) then
2080
+ return false
2081
+ end
2082
+ end
2083
+ return true
2084
+ end
2085
+ function Set.prototype.isSupersetOf(self, other)
2086
+ for ____, item in __TS__Iterator(other) do
2087
+ if not self:has(item) then
2088
+ return false
2089
+ end
2090
+ end
2091
+ return true
2092
+ end
2093
+ function Set.prototype.isDisjointFrom(self, other)
2094
+ for ____, item in __TS__Iterator(self) do
2095
+ if other:has(item) then
2096
+ return false
2097
+ end
2098
+ end
2099
+ return true
2100
+ end
1997
2101
  Set[Symbol.species] = Set
1998
2102
  end
1999
2103
 
@@ -2443,10 +2547,7 @@ local function __TS__Using(self, cb, ...)
2443
2547
  local args = {...}
2444
2548
  local thrownError
2445
2549
  local ok, result = xpcall(
2446
- function() return cb(
2447
- nil,
2448
- __TS__Unpack(args)
2449
- ) end,
2550
+ function() return cb(__TS__Unpack(args)) end,
2450
2551
  function(err)
2451
2552
  thrownError = err
2452
2553
  return thrownError
@@ -2563,10 +2664,12 @@ return {
2563
2664
  __TS__Iterator = __TS__Iterator,
2564
2665
  __TS__LuaIteratorSpread = __TS__LuaIteratorSpread,
2565
2666
  Map = Map,
2667
+ __TS__MapGroupBy = __TS__MapGroupBy,
2566
2668
  __TS__Match = __TS__Match,
2567
2669
  __TS__MathAtan2 = __TS__MathAtan2,
2568
2670
  __TS__MathModf = __TS__MathModf,
2569
2671
  __TS__MathSign = __TS__MathSign,
2672
+ __TS__MathTrunc = __TS__MathTrunc,
2570
2673
  __TS__New = __TS__New,
2571
2674
  __TS__Number = __TS__Number,
2572
2675
  __TS__NumberIsFinite = __TS__NumberIsFinite,
@@ -2582,6 +2685,7 @@ return {
2582
2685
  __TS__ObjectFromEntries = __TS__ObjectFromEntries,
2583
2686
  __TS__ObjectGetOwnPropertyDescriptor = __TS__ObjectGetOwnPropertyDescriptor,
2584
2687
  __TS__ObjectGetOwnPropertyDescriptors = __TS__ObjectGetOwnPropertyDescriptors,
2688
+ __TS__ObjectGroupBy = __TS__ObjectGroupBy,
2585
2689
  __TS__ObjectKeys = __TS__ObjectKeys,
2586
2690
  __TS__ObjectRest = __TS__ObjectRest,
2587
2691
  __TS__ObjectValues = __TS__ObjectValues,
package/math/vec2.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  /** Gets the height of the terrain at the position specified by the vector. */
4
3
  export declare const getTerrainZ: (x: number, y: number) => number;
@@ -7,12 +6,6 @@ export declare const angleBetweenPoints: (x1: number, y1: number, x2: number, y2
7
6
  /** Returns the distance between a and b. */
8
7
  export declare const distance: (x1: number, y1: number, x2: number, y2: number) => number;
9
8
  /** Moves a point current towards target. */
10
- export declare const moveTowards: (x1: number, y1: number, x2: number, y2: number, distance: number) => LuaMultiReturn<[
11
- number,
12
- number
13
- ]>;
9
+ export declare const moveTowards: (x1: number, y1: number, x2: number, y2: number, distance: number) => LuaMultiReturn<[number, number]>;
14
10
  /** Gets a polar offset from this vector. Angle should be specified in degrees. */
15
- export declare const polarOffset: (x: number, y: number, angle: number, distance: number) => LuaMultiReturn<[
16
- number,
17
- number
18
- ]>;
11
+ export declare const polarOffset: (x: number, y: number, angle: number, distance: number) => LuaMultiReturn<[number, number]>;
package/math.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- /// <reference types="lua-types/5.3" />
2
- /// <reference types="lua-types/5.3" />
3
1
  /** @noSelfInFile */
4
2
  export declare const MINIMUM_POSITIVE_NORMALIZED_FLOAT: number;
5
3
  export declare const MINIMUM_POSITIVE_FLOAT: number;
package/net/socket.d.ts CHANGED
@@ -1,9 +1,15 @@
1
1
  /** @noSelfInFile */
2
2
  import { Event } from "../event";
3
3
  import { Player } from "../core/types/player";
4
+ declare const enum SocketPropertyKey {
5
+ ID = 0,
6
+ CHUNK_ID = 1
7
+ }
4
8
  export declare class Socket {
5
- private readonly id;
9
+ private readonly [SocketPropertyKey.ID];
10
+ private readonly [SocketPropertyKey.CHUNK_ID];
6
11
  readonly onMessage: Event<[Player, string]>;
7
12
  constructor();
8
13
  send(data: string): void;
9
14
  }
15
+ export {};
package/net/socket.lua CHANGED
@@ -7,6 +7,11 @@ local Event = ____event.Event
7
7
  local ____network = require("network")
8
8
  local send = ____network.send
9
9
  local onReceive = ____network.onReceive
10
+ local MAX_PAYLOAD_LENGTH = ____network.MAX_PAYLOAD_LENGTH
11
+ local ____math = require("math")
12
+ local ceil = ____math.ceil
13
+ local stringSub = string.sub
14
+ local tableConcat = table.concat
10
15
  local nextId = 0
11
16
  ____exports.Socket = __TS__Class()
12
17
  local Socket = ____exports.Socket
@@ -14,13 +19,49 @@ Socket.name = "Socket"
14
19
  function Socket.prototype.____constructor(self)
15
20
  local ____tostring_0 = tostring
16
21
  nextId = nextId + 1
17
- self.id = ____tostring_0(nextId)
22
+ self[0] = ____tostring_0(nextId)
23
+ local ____tostring_1 = tostring
24
+ nextId = nextId + 1
25
+ self[1] = ____tostring_1(nextId)
18
26
  self.onMessage = __TS__New(Event)
19
- onReceive[self.id]:addListener(function(sender, data)
20
- Event.invoke(self.onMessage, sender, data)
27
+ local chunksByPlayer = {}
28
+ onReceive[self[0]]:addListener(function(sender, data)
29
+ local chunks = chunksByPlayer[sender]
30
+ if chunks ~= nil then
31
+ chunks[#chunks + 1] = data
32
+ Event.invoke(
33
+ self.onMessage,
34
+ sender,
35
+ tableConcat(chunks)
36
+ )
37
+ chunksByPlayer[sender] = nil
38
+ else
39
+ Event.invoke(self.onMessage, sender, data)
40
+ end
41
+ end)
42
+ onReceive[self[1]]:addListener(function(sender, data)
43
+ local chunks = chunksByPlayer[sender]
44
+ if chunks == nil then
45
+ chunks = {}
46
+ chunksByPlayer[sender] = chunks
47
+ end
48
+ chunks[#chunks + 1] = data
21
49
  end)
22
50
  end
23
51
  function Socket.prototype.send(self, data)
24
- send(self.id, data)
52
+ local chunks = ceil(#data / MAX_PAYLOAD_LENGTH) - 1
53
+ local offset = 1
54
+ for _ = 0, chunks - 1 do
55
+ local nextOffset = offset + MAX_PAYLOAD_LENGTH
56
+ send(
57
+ self[1],
58
+ stringSub(data, offset, nextOffset - 1)
59
+ )
60
+ offset = nextOffset
61
+ end
62
+ send(
63
+ self[0],
64
+ stringSub(data, offset)
65
+ )
25
66
  end
26
67
  return ____exports
package/network.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  import { Event } from "./event";
3
3
  import { Player } from "./core/types/player";
4
4
  import { Operation, OperationContinue, OperationMonitor } from "./operation";
5
+ export declare const MAX_PAYLOAD_LENGTH = 255;
5
6
  export declare const onReceive: {
6
7
  [prefix: string]: Event<[Player, string]>;
7
8
  } & {
package/network.lua CHANGED
@@ -25,6 +25,7 @@ local concat = table.concat
25
25
  local pack = string.pack
26
26
  local sub = string.sub
27
27
  local ____unpack = string.unpack
28
+ ____exports.MAX_PAYLOAD_LENGTH = 255
28
29
  ____exports.onReceive = setmetatable(
29
30
  {},
30
31
  {__index = function(self, prefix)
@@ -42,11 +43,11 @@ ____exports.onReceive = setmetatable(
42
43
  end}
43
44
  )
44
45
  function ____exports.send(id, payload)
45
- if #payload > 255 then
46
+ if #payload > ____exports.MAX_PAYLOAD_LENGTH then
46
47
  error(
47
48
  __TS__New(
48
49
  IllegalArgumentException,
49
- "payload length must be <= 256, but was " .. tostring(#payload)
50
+ (("payload length must be <= " .. tostring(____exports.MAX_PAYLOAD_LENGTH)) .. ", but was ") .. tostring(#payload)
50
51
  ),
51
52
  0
52
53
  )
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { LevelFieldValueProvider, ObjectDefinition } from "./object";
4
3
  export declare namespace AbilityDefinition {
package/objutil/buff.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { ObjectDefinition } from "./object";
4
3
  import { Unit } from "../core/types/unit";
package/objutil/buff.lua CHANGED
@@ -762,7 +762,7 @@ Unit.onDamaging:addListener(function(source, target, event)
762
762
  end)
763
763
  end
764
764
  end)
765
- Unit.onItemPickup:addListener(function(unit, item)
765
+ Unit.itemPickedUpEvent:addListener(function(unit, item)
766
766
  if item.powerup and item:hasAbility(fourCC("APdi")) then
767
767
  end
768
768
  end)
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  export type LevelFieldValueProvider<T> = T | T[] | ((level: number, value: T) => T);
4
3
  export declare namespace ObjectDefinition {
package/objutil/unit.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { ObjectDefinition } from "./object";
4
3
  import { AbilityDefinition } from "./ability";
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.ee2345e",
4
+ "version": "0.0.1-dev.f955a59",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",
@@ -22,23 +22,22 @@
22
22
  },
23
23
  "peerDependencies": {
24
24
  "@warscript/language-extensions": "^0.0.1",
25
- "@warscript/tstl-plugin": "^0.0.2",
26
- "typescript-to-lua": "^1.24.1",
25
+ "@warscript/tstl-plugin": "^0.0.4",
27
26
  "lua-types": "^2.13.1",
28
- "warpack": "0.0.1-dev.5bdabe5"
27
+ "warpack": "0.0.1-dev.880fc91"
29
28
  },
30
29
  "devDependencies": {
31
- "@typescript-eslint/eslint-plugin": "^5.59.11",
32
- "@typescript-eslint/parser": "^5.59.11",
33
- "async": "^3.2.0",
30
+ "@typescript-eslint/eslint-plugin": "^8.13.0",
31
+ "@typescript-eslint/parser": "^8.13.0",
32
+ "async": "^3.2.6",
34
33
  "copyfiles": "^2.4.1",
35
- "eslint": "^8.42.0",
36
- "eslint-config-prettier": "^8.8.0",
37
- "eslint-plugin-prettier": "^3.4.0",
38
- "prettier": "^2.8.8",
39
- "rimraf": "^5.0.5",
40
- "ts-node": "^10.9.1",
41
- "tsc-watch": "^4.2.9"
34
+ "eslint": "^9.14.0",
35
+ "eslint-config-prettier": "^9.1.0",
36
+ "eslint-plugin-prettier": "^5.2.1",
37
+ "prettier": "^3.3.3",
38
+ "rimraf": "^6.0.1",
39
+ "ts-node": "^10.9.2",
40
+ "tsc-watch": "^6.2.0"
42
41
  },
43
42
  "publishConfig": {
44
43
  "access": "public",
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
package/property.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ /** @noSelfInFile */
2
+ import { Player } from "./core/types/player";
3
+ import { Event } from "./event";
4
+ export declare class PersistentPropertiesConfig {
5
+ static defaultFileName: string;
6
+ }
7
+ declare const enum PropertyPropertyKey {
8
+ DEFAULT_VALUE = 0,
9
+ VALUE = 1,
10
+ IS_CHANGED = 2
11
+ }
12
+ export declare class Property<T> {
13
+ readonly valueChangeEvent: Event<[newValue: T, oldValue: T]>;
14
+ private [PropertyPropertyKey.DEFAULT_VALUE];
15
+ private [PropertyPropertyKey.VALUE];
16
+ private [PropertyPropertyKey.IS_CHANGED]?;
17
+ constructor(defaultValue: T);
18
+ get defaultValue(): T;
19
+ set defaultValue(defaultValue: T);
20
+ get value(): T;
21
+ set value(value: T);
22
+ get isChanged(): boolean;
23
+ reset(): boolean;
24
+ set(value: T): boolean;
25
+ get(): T;
26
+ }
27
+ declare const enum PlayerPropertyPropertyKey {
28
+ DEFAULT_VALUE = 0,
29
+ VALUE_BY_PLAYER = 1,
30
+ IS_CHANGED_BY_PLAYER = 2
31
+ }
32
+ export declare class PlayerProperty<T> {
33
+ readonly valueChangeEvent: Event<[player: Player, newValue: T, oldValue: T]>;
34
+ private readonly [PlayerPropertyPropertyKey.DEFAULT_VALUE];
35
+ private readonly [PlayerPropertyPropertyKey.VALUE_BY_PLAYER];
36
+ private readonly [PlayerPropertyPropertyKey.IS_CHANGED_BY_PLAYER];
37
+ constructor(defaultValue: T);
38
+ isChanged(player: Player): boolean;
39
+ reset(player: Player): boolean;
40
+ set(player: Player, value: T): boolean;
41
+ get(player: Player): T;
42
+ }
43
+ export declare class PersistentProperty<T extends undefined | boolean | number | string> extends Property<T> {
44
+ readonly id: number;
45
+ constructor(id: number, defaultValue: T, valueChangeEventListener?: (newValue: T, oldValue: T) => void);
46
+ reset(): boolean;
47
+ set(value: T): boolean;
48
+ }
49
+ export declare class PersistentPlayerProperty<T extends string | number | boolean> extends PlayerProperty<T> {
50
+ readonly id: number;
51
+ constructor(id: number, initialValue: T, valueChangeEventListener?: (player: Player, newValue: T, oldValue: T) => void);
52
+ reset(player: Player): boolean;
53
+ set(player: Player, value: T): boolean;
54
+ }
55
+ export {};