warscript 0.0.1-dev.0a43a35 → 0.0.1-dev.0ad346c

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 (247) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/types/effect.d.ts +14 -6
  8. package/core/types/effect.lua +131 -35
  9. package/core/types/frame.d.ts +8 -0
  10. package/core/types/frame.lua +117 -22
  11. package/core/types/player.d.ts +16 -0
  12. package/core/types/player.lua +60 -15
  13. package/core/types/playerCamera.d.ts +2 -0
  14. package/core/types/playerCamera.lua +123 -5
  15. package/core/types/sound.d.ts +17 -24
  16. package/core/types/sound.lua +99 -24
  17. package/core/types/tileCell.d.ts +11 -1
  18. package/core/types/tileCell.lua +97 -0
  19. package/core/types/timer.d.ts +9 -8
  20. package/core/types/timer.lua +45 -23
  21. package/core/util.d.ts +1 -1
  22. package/core/util.lua +18 -1
  23. package/decl/native.d.ts +846 -790
  24. package/destroyable.d.ts +1 -0
  25. package/destroyable.lua +9 -0
  26. package/engine/behavior.d.ts +16 -3
  27. package/engine/behavior.lua +233 -73
  28. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  29. package/engine/behaviour/ability/always-enabled.lua +31 -0
  30. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  31. package/engine/behaviour/ability/apply-buff.lua +36 -4
  32. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  33. package/engine/behaviour/ability/damage.d.ts +39 -11
  34. package/engine/behaviour/ability/damage.lua +83 -37
  35. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  36. package/engine/behaviour/ability/emulate-impact.lua +43 -0
  37. package/engine/behaviour/ability/heal.d.ts +33 -6
  38. package/engine/behaviour/ability/heal.lua +89 -10
  39. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  40. package/engine/behaviour/ability/instant-impact.lua +4 -19
  41. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  42. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  43. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  44. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  45. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  46. package/engine/behaviour/ability/restore-mana.lua +29 -0
  47. package/engine/behaviour/ability.d.ts +26 -5
  48. package/engine/behaviour/ability.lua +137 -43
  49. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  50. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  51. package/engine/behaviour/unit.d.ts +45 -2
  52. package/engine/behaviour/unit.lua +289 -6
  53. package/engine/buff.d.ts +127 -48
  54. package/engine/buff.lua +579 -241
  55. package/engine/game-map.d.ts +7 -0
  56. package/engine/game-map.lua +32 -0
  57. package/engine/internal/ability.d.ts +23 -14
  58. package/engine/internal/ability.lua +129 -85
  59. package/engine/internal/item/ability.lua +162 -4
  60. package/engine/internal/item+owner.lua +12 -6
  61. package/engine/internal/item.d.ts +20 -19
  62. package/engine/internal/item.lua +191 -74
  63. package/engine/internal/mechanics/ability-duration.lua +1 -1
  64. package/engine/internal/mechanics/cast-ability.lua +6 -3
  65. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  66. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  67. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  68. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  69. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  70. package/engine/internal/misc/frame-coordinates.lua +21 -0
  71. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  72. package/engine/internal/misc/get-terrain-z.lua +11 -0
  73. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  74. package/engine/internal/misc/player-local-handle.lua +5 -0
  75. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  76. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  77. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  78. package/engine/internal/object-data/evasion-probability.lua +16 -0
  79. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  80. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  81. package/engine/internal/unit/ability.d.ts +45 -1
  82. package/engine/internal/unit/ability.lua +128 -17
  83. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  84. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  85. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  86. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  87. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  88. package/engine/internal/unit/allowed-targets.lua +9 -1
  89. package/engine/internal/unit/attributes.d.ts +17 -0
  90. package/engine/internal/unit/attributes.lua +46 -0
  91. package/engine/internal/unit/bonus.d.ts +8 -2
  92. package/engine/internal/unit/bonus.lua +33 -1
  93. package/engine/internal/unit/fly-height.d.ts +7 -0
  94. package/engine/internal/unit/fly-height.lua +20 -0
  95. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  96. package/engine/internal/unit/ignore-events-items.lua +5 -0
  97. package/engine/internal/unit/interrupts.d.ts +12 -0
  98. package/engine/internal/unit/interrupts.lua +28 -0
  99. package/engine/internal/unit/item.d.ts +24 -0
  100. package/engine/internal/unit/item.lua +78 -0
  101. package/engine/internal/unit/main-selected.d.ts +13 -0
  102. package/engine/internal/unit/main-selected.lua +36 -0
  103. package/engine/internal/unit/order.d.ts +20 -0
  104. package/engine/internal/unit/order.lua +136 -0
  105. package/engine/internal/unit/range-event.d.ts +12 -0
  106. package/engine/internal/unit/range-event.lua +90 -0
  107. package/engine/internal/unit/scale.d.ts +7 -0
  108. package/engine/internal/unit/scale.lua +20 -0
  109. package/engine/internal/unit+ability.lua +12 -3
  110. package/engine/internal/unit+damage.d.ts +2 -11
  111. package/engine/internal/unit+damage.lua +10 -14
  112. package/engine/internal/unit+spellSteal.lua +1 -2
  113. package/engine/internal/unit+transport.lua +4 -10
  114. package/engine/internal/unit-missile-launch.lua +70 -13
  115. package/engine/internal/unit.d.ts +64 -30
  116. package/engine/internal/unit.lua +501 -293
  117. package/engine/internal/utility.lua +12 -0
  118. package/engine/lightning.d.ts +12 -5
  119. package/engine/lightning.lua +48 -14
  120. package/engine/local-client.d.ts +9 -2
  121. package/engine/local-client.lua +112 -0
  122. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  123. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  124. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  125. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  126. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  127. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  128. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  129. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  130. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  131. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  132. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  133. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  134. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  135. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  136. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  137. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  138. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  139. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  140. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  141. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  142. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  143. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  144. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  145. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  146. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  147. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  148. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  149. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  150. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  151. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  152. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  153. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  154. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  155. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  156. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  157. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  158. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  159. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  160. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  161. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  162. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  163. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  164. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  165. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  166. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  167. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  168. package/engine/object-data/entry/ability-type/web.lua +52 -0
  169. package/engine/object-data/entry/ability-type.d.ts +19 -17
  170. package/engine/object-data/entry/ability-type.lua +93 -36
  171. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  172. package/engine/object-data/entry/buff-type.d.ts +6 -12
  173. package/engine/object-data/entry/buff-type.lua +13 -29
  174. package/engine/object-data/entry/destructible-type.d.ts +28 -2
  175. package/engine/object-data/entry/destructible-type.lua +155 -0
  176. package/engine/object-data/entry/item-type.d.ts +15 -1
  177. package/engine/object-data/entry/item-type.lua +93 -2
  178. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  179. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  180. package/engine/object-data/entry/sound-preset.lua +140 -0
  181. package/engine/object-data/entry/unit-type.d.ts +25 -5
  182. package/engine/object-data/entry/unit-type.lua +258 -93
  183. package/engine/object-data/entry/upgrade.d.ts +1 -1
  184. package/engine/object-data/entry/upgrade.lua +4 -4
  185. package/engine/object-data/entry.d.ts +16 -14
  186. package/engine/object-data/entry.lua +60 -32
  187. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  188. package/engine/object-field/ability.d.ts +28 -5
  189. package/engine/object-field/ability.lua +59 -5
  190. package/engine/object-field/unit.d.ts +72 -3
  191. package/engine/object-field/unit.lua +268 -7
  192. package/engine/object-field.d.ts +25 -6
  193. package/engine/object-field.lua +359 -116
  194. package/engine/random.d.ts +10 -0
  195. package/engine/random.lua +21 -0
  196. package/engine/standard/entries/buff-type.d.ts +3 -0
  197. package/engine/standard/entries/buff-type.lua +3 -0
  198. package/engine/standard/entries/sound-preset.d.ts +10 -0
  199. package/engine/standard/entries/sound-preset.lua +10 -0
  200. package/engine/standard/fields/ability.d.ts +4 -2
  201. package/engine/standard/fields/ability.lua +4 -2
  202. package/engine/standard/fields/unit.d.ts +12 -0
  203. package/engine/standard/fields/unit.lua +20 -0
  204. package/engine/synchronization.d.ts +11 -0
  205. package/engine/synchronization.lua +77 -0
  206. package/engine/text-tag.d.ts +36 -2
  207. package/engine/text-tag.lua +250 -10
  208. package/engine/unit.d.ts +9 -0
  209. package/engine/unit.lua +9 -0
  210. package/index.d.ts +1 -0
  211. package/index.lua +1 -0
  212. package/lualib_bundle.lua +7 -2
  213. package/net/socket.d.ts +7 -1
  214. package/net/socket.lua +45 -4
  215. package/network.d.ts +1 -0
  216. package/network.lua +3 -2
  217. package/objutil/buff.lua +12 -11
  218. package/objutil/unit.lua +8 -0
  219. package/package.json +2 -2
  220. package/patch-lua.d.ts +0 -0
  221. package/patch-lua.lua +25 -0
  222. package/patch-lualib.lua +1 -1
  223. package/property.d.ts +55 -0
  224. package/property.lua +374 -0
  225. package/utility/arrays.d.ts +10 -1
  226. package/utility/arrays.lua +45 -3
  227. package/utility/callback-array.d.ts +17 -0
  228. package/utility/callback-array.lua +61 -0
  229. package/utility/functions.d.ts +8 -0
  230. package/utility/functions.lua +13 -0
  231. package/utility/lazy.d.ts +2 -0
  232. package/utility/lazy.lua +14 -0
  233. package/utility/linked-map.d.ts +34 -0
  234. package/utility/linked-map.lua +101 -0
  235. package/utility/linked-set.d.ts +15 -3
  236. package/utility/linked-set.lua +48 -3
  237. package/utility/lua-maps.d.ts +15 -2
  238. package/utility/lua-maps.lua +53 -2
  239. package/utility/lua-sets.d.ts +2 -0
  240. package/utility/lua-sets.lua +7 -0
  241. package/utility/records.lua +20 -1
  242. package/utility/reflection.lua +11 -7
  243. package/utility/types.d.ts +4 -0
  244. package/core/mapbounds.d.ts +0 -8
  245. package/core/mapbounds.lua +0 -12
  246. package/core/types/order.d.ts +0 -25
  247. package/core/types/order.lua +0 -55
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
+ chunksByPlayer[sender] = nil
32
+ chunks[#chunks + 1] = data
33
+ Event.invoke(
34
+ self.onMessage,
35
+ sender,
36
+ tableConcat(chunks)
37
+ )
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
  )
package/objutil/buff.lua CHANGED
@@ -20,7 +20,6 @@ local AbilityDefinitionInnerFire = ____ability.AbilityDefinitionInnerFire
20
20
  local AbilityDefinitionSearingArrows = ____ability.AbilityDefinitionSearingArrows
21
21
  local AbilityDefinitionSlowPoison = ____ability.AbilityDefinitionSlowPoison
22
22
  local ____unit = require("core.types.unit")
23
- local AttackType = ____unit.AttackType
24
23
  local DamageType = ____unit.DamageType
25
24
  local Unit = ____unit.Unit
26
25
  local ____dummy = require("core.dummy")
@@ -30,6 +29,8 @@ local ____timer = require("core.types.timer")
30
29
  local Timer = ____timer.Timer
31
30
  local ____exception = require("exception")
32
31
  local IllegalStateException = ____exception.IllegalStateException
32
+ local ____linked_2Dmap = require("utility.linked-map")
33
+ local LinkedMap = ____linked_2Dmap.LinkedMap
33
34
  local ____assert = _G.assert
34
35
  local ____pairs = _G.pairs
35
36
  ____exports.BuffDefinition = __TS__Class()
@@ -462,7 +463,7 @@ local buffs = setmetatable(
462
463
  {
463
464
  __mode = "k",
464
465
  __index = function(self, unit)
465
- local ____table = {}
466
+ local ____table = __TS__New(LinkedMap)
466
467
  self[unit] = ____table
467
468
  return ____table
468
469
  end
@@ -495,7 +496,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
495
496
  end
496
497
  local constructor = self.constructor
497
498
  local instances = buffs[unit]
498
- local instance = instances[constructor]
499
+ local instance = instances:get(constructor)
499
500
  if instance then
500
501
  instance:destroy()
501
502
  if not instance.destroyed then
@@ -508,7 +509,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
508
509
  )
509
510
  end
510
511
  end
511
- instances[constructor] = self
512
+ instances:put(constructor, self)
512
513
  if preset then
513
514
  local unitHandle = unit.handle
514
515
  local slowPoisonMethod = not preset.positive and not preset.magic
@@ -587,13 +588,13 @@ function Buff.apply(self, ...)
587
588
  end
588
589
  end
589
590
  function Buff.getInstance(self, unit)
590
- return buffs[unit][self]
591
+ return buffs[unit]:get(self)
591
592
  end
592
593
  function Buff.isApplied(self, unit)
593
- return buffs[unit][self] ~= nil
594
+ return buffs[unit]:get(self) ~= nil
594
595
  end
595
596
  function Buff.ifApplied(self, unit, action)
596
- local instance = buffs[unit][self]
597
+ local instance = buffs[unit]:get(self)
597
598
  if instance then
598
599
  ____assert(__TS__InstanceOf(instance, self))
599
600
  action(instance)
@@ -616,7 +617,7 @@ function Buff.prototype.destroy(self)
616
617
  if self.preset then
617
618
  self.unit:removeAbility(self.preset.buffId)
618
619
  end
619
- buffs[self.unit][self.constructor] = nil
620
+ buffs[self.unit]:remove(self.constructor)
620
621
  self.destroyed = true
621
622
  end
622
623
  function Buff.prototype.onDispel(self, source)
@@ -756,14 +757,14 @@ for ____, pointDispelAbilityId in ipairs(pointDispelAbilityIds) do
756
757
  end)
757
758
  end
758
759
  Unit.onDamaging:addListener(function(source, target, event)
759
- if event.amount == 0 and event.attackType == AttackType.SPELL and event.damageType == DamageType.NORMAL and not event.isAttack then
760
+ if event.amount == 0 and event.attackType == 0 and event.damageType == DamageType.NORMAL and not event.isAttack then
760
761
  Timer:run(function()
761
762
  checkBuffs(target, true, source)
762
763
  end)
763
764
  end
764
765
  end)
765
- Unit.onItemPickup:addListener(function(unit, item)
766
- if item.powerup and item:hasAbility(fourCC("APdi")) then
766
+ Unit.itemPickedUpEvent:addListener(function(unit, item)
767
+ if item.isPowerUp and item:hasAbility(fourCC("APdi")) then
767
768
  end
768
769
  end)
769
770
  return ____exports
package/objutil/unit.lua CHANGED
@@ -11,6 +11,8 @@ local ____exports = {}
11
11
  local ____object = require("objutil.object")
12
12
  local ObjectDefinition = ____object.ObjectDefinition
13
13
  local idgen = require("objutil.idgen")
14
+ local ____config = require("config")
15
+ local WarscriptConfig = ____config.WarscriptConfig
14
16
  local attackTypes = setmetatable(
15
17
  {
16
18
  normal = "normal",
@@ -593,6 +595,9 @@ __TS__SetDescriptor(
593
595
  end,
594
596
  set = function(self, v)
595
597
  self:setStringField("umdl", v)
598
+ if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
599
+ self:setStringField("upor", "")
600
+ end
596
601
  end
597
602
  },
598
603
  true
@@ -606,6 +611,9 @@ __TS__SetDescriptor(
606
611
  end,
607
612
  set = function(self, v)
608
613
  self.object:setField("umdl:hd", v)
614
+ if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
615
+ self.object:setField("upor:hd", "")
616
+ end
609
617
  end
610
618
  },
611
619
  true
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.0a43a35",
4
+ "version": "0.0.1-dev.0ad346c",
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.07dd222"
27
+ "warpack": "0.0.1-dev.e490aaf"
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,25 @@
1
+ local error = _G.error
2
+ local getmetatable = _G.getmetatable
3
+ local ipairs = _G.ipairs
4
+ local select = _G.select
5
+ local tostring = _G.tostring
6
+ local tableconcat = table.concat
7
+
8
+ _G.ipairs = function(t)
9
+ local metatable = getmetatable(t)
10
+ if metatable and metatable.__ipairs then
11
+ return metatable.__ipairs(t)
12
+ end
13
+ return ipairs(t)
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
package/patch-lualib.lua CHANGED
@@ -3,7 +3,7 @@ local lualib = _G.require("lualib_bundle")
3
3
  local next = _G.next
4
4
  local ____type = _G.type
5
5
  lualib.__TS__ArrayIsArray = function(value)
6
- return ____type(value) == "table" and (value[1] ~= nil or ({next(value)}) == nil) and value.constructor == nil
6
+ return ____type(value) == "table" and (value[1] ~= nil or (next(value)) == nil) and value.constructor == nil
7
7
  end
8
8
  local __TS__SetDescriptor = lualib.__TS__SetDescriptor
9
9
  lualib.__TS__ObjectDefineProperty = function(target, key, desc)
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 {};