warscript 0.0.1-dev.f0a9ffe → 0.0.1-dev.f0daa48

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 (132) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/types/frame.lua +24 -21
  4. package/core/types/player.d.ts +16 -0
  5. package/core/types/player.lua +60 -15
  6. package/core/types/playerCamera.d.ts +2 -0
  7. package/core/types/playerCamera.lua +123 -5
  8. package/core/types/sound.lua +1 -1
  9. package/core/types/tileCell.d.ts +11 -1
  10. package/core/types/tileCell.lua +97 -0
  11. package/core/types/timer.d.ts +3 -2
  12. package/core/types/timer.lua +22 -2
  13. package/decl/native.d.ts +2 -2
  14. package/destroyable.d.ts +1 -0
  15. package/destroyable.lua +9 -0
  16. package/engine/behavior.d.ts +12 -1
  17. package/engine/behavior.lua +199 -65
  18. package/engine/behaviour/ability/apply-buff.lua +4 -4
  19. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  20. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  21. package/engine/behaviour/ability.d.ts +11 -6
  22. package/engine/behaviour/ability.lua +31 -1
  23. package/engine/behaviour/unit/stun-immunity.d.ts +9 -5
  24. package/engine/behaviour/unit/stun-immunity.lua +17 -7
  25. package/engine/behaviour/unit.d.ts +15 -5
  26. package/engine/behaviour/unit.lua +126 -22
  27. package/engine/buff.d.ts +64 -21
  28. package/engine/buff.lua +360 -178
  29. package/engine/internal/ability.d.ts +3 -1
  30. package/engine/internal/ability.lua +26 -9
  31. package/engine/internal/item+owner.lua +12 -6
  32. package/engine/internal/item.d.ts +13 -15
  33. package/engine/internal/item.lua +63 -49
  34. package/engine/internal/mechanics/cast-ability.lua +6 -3
  35. package/engine/internal/misc/frame-coordinates.lua +21 -0
  36. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  37. package/engine/internal/misc/get-terrain-z.lua +11 -0
  38. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  39. package/engine/internal/misc/player-local-handle.lua +5 -0
  40. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  41. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  42. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  43. package/engine/internal/object-data/health-bonus.lua +16 -0
  44. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  45. package/engine/internal/object-data/mana-bonus.lua +16 -0
  46. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  47. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  48. package/engine/internal/unit/ability.d.ts +14 -14
  49. package/engine/internal/unit/ability.lua +72 -45
  50. package/engine/internal/unit/attributes.d.ts +17 -0
  51. package/engine/internal/unit/attributes.lua +46 -0
  52. package/engine/internal/unit/bonus.d.ts +6 -0
  53. package/engine/internal/unit/bonus.lua +33 -3
  54. package/engine/internal/unit/fly-height.d.ts +7 -0
  55. package/engine/internal/unit/fly-height.lua +20 -0
  56. package/engine/internal/unit/interrupts.d.ts +12 -0
  57. package/engine/internal/unit/interrupts.lua +28 -0
  58. package/engine/internal/unit/item.lua +1 -1
  59. package/engine/internal/unit/main-selected.lua +12 -27
  60. package/engine/internal/unit/range-event.d.ts +12 -0
  61. package/engine/internal/unit/range-event.lua +90 -0
  62. package/engine/internal/unit/scale.d.ts +7 -0
  63. package/engine/internal/unit/scale.lua +20 -0
  64. package/engine/internal/unit+ability.lua +10 -1
  65. package/engine/internal/unit+bonus.lua +3 -3
  66. package/engine/internal/unit-missile-launch.lua +51 -20
  67. package/engine/internal/unit.d.ts +18 -22
  68. package/engine/internal/unit.lua +179 -200
  69. package/engine/local-client.d.ts +2 -0
  70. package/engine/local-client.lua +30 -0
  71. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  72. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  73. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  74. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  75. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  76. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  77. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  78. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  79. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  80. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  81. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  82. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  83. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  84. package/engine/object-data/entry/ability-type.d.ts +2 -0
  85. package/engine/object-data/entry/ability-type.lua +88 -5
  86. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  87. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  88. package/engine/object-data/entry/destructible-type.lua +155 -0
  89. package/engine/object-data/entry/unit-type.d.ts +4 -0
  90. package/engine/object-data/entry/unit-type.lua +76 -32
  91. package/engine/object-field/ability.d.ts +3 -3
  92. package/engine/object-field/ability.lua +9 -8
  93. package/engine/object-field/unit.d.ts +20 -5
  94. package/engine/object-field/unit.lua +61 -0
  95. package/engine/object-field.d.ts +12 -4
  96. package/engine/object-field.lua +273 -126
  97. package/engine/random.d.ts +10 -0
  98. package/engine/random.lua +21 -0
  99. package/engine/standard/fields/ability.d.ts +2 -2
  100. package/engine/standard/fields/ability.lua +2 -2
  101. package/engine/standard/fields/unit.d.ts +11 -3
  102. package/engine/standard/fields/unit.lua +15 -2
  103. package/engine/synchronization.d.ts +11 -0
  104. package/engine/synchronization.lua +77 -0
  105. package/engine/text-tag.d.ts +1 -1
  106. package/engine/text-tag.lua +92 -17
  107. package/engine/unit.d.ts +5 -0
  108. package/engine/unit.lua +5 -0
  109. package/lualib_bundle.lua +118 -47
  110. package/net/socket.lua +1 -1
  111. package/objutil/buff.lua +10 -8
  112. package/objutil/object.lua +1 -1
  113. package/operation.lua +23 -17
  114. package/package.json +5 -5
  115. package/patch-lua.lua +15 -0
  116. package/patch-lualib.lua +1 -1
  117. package/utility/arrays.d.ts +1 -0
  118. package/utility/arrays.lua +8 -0
  119. package/utility/callback-array.d.ts +17 -0
  120. package/utility/callback-array.lua +61 -0
  121. package/utility/linked-map.d.ts +34 -0
  122. package/utility/linked-map.lua +101 -0
  123. package/utility/linked-set.d.ts +3 -1
  124. package/utility/linked-set.lua +40 -1
  125. package/utility/lua-maps.d.ts +11 -2
  126. package/utility/lua-maps.lua +33 -2
  127. package/utility/records.lua +20 -1
  128. package/utility/types.d.ts +3 -0
  129. /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
  130. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  131. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  132. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,7 +1,20 @@
1
1
  local ____exports = {}
2
2
  local ____unit = require("engine.object-field.unit")
3
3
  local UnitClassificationsField = ____unit.UnitClassificationsField
4
+ local UnitFloatField = ____unit.UnitFloatField
5
+ local UnitFlyHeightField = ____unit.UnitFlyHeightField
6
+ local UnitHealthRegenerationTypeField = ____unit.UnitHealthRegenerationTypeField
7
+ local UnitIntegerField = ____unit.UnitIntegerField
4
8
  local UnitPropulsionWindowField = ____unit.UnitPropulsionWindowField
5
- ____exports.PROPULSION_WINDOW_UNIT_FLOAT_FIELD = UnitPropulsionWindowField:create(fourCC("urpw"))
6
- ____exports.UNIT_CLASSIFICATIONS_FIELD = UnitClassificationsField:create(fourCC("utyp"))
9
+ local UnitScalingValueField = ____unit.UnitScalingValueField
10
+ ____exports.PROPULSION_WINDOW_UNIT_FIELD = UnitPropulsionWindowField:create(fourCC("urpw"))
11
+ ____exports.CLASSIFICATIONS_UNIT_FIELD = UnitClassificationsField:create(fourCC("utyp"))
12
+ ____exports.FLY_HEIGHT_UNIT_FIELD = UnitFlyHeightField:create(fourCC("ufyh"))
13
+ ____exports.SCALING_VALUE_UNIT_FIELD = UnitScalingValueField:create(fourCC("usca"))
14
+ ____exports.HEALTH_REGENERATION_RATE_UNIT_FIELD = UnitFloatField:create(fourCC("uhpr"))
15
+ ____exports.MANA_REGENERATION_RATE_UNIT_FIELD = UnitFloatField:create(fourCC("umpr"))
16
+ ____exports.HEALTH_REGENERATION_TYPE_UNIT_FIELD = UnitHealthRegenerationTypeField:create(fourCC("uhrt"))
17
+ ____exports.STRENGTH_UNIT_FIELD = UnitIntegerField:create(fourCC("ustc"))
18
+ ____exports.AGILITY_UNIT_FIELD = UnitIntegerField:create(fourCC("uagc"))
19
+ ____exports.INTELLIGENCE_UNIT_FIELD = UnitIntegerField:create(fourCC("uinc"))
7
20
  return ____exports
@@ -0,0 +1,11 @@
1
+ /** @noSelfInFile */
2
+ import { Player } from "../core/types/player";
3
+ import { Event } from "../event";
4
+ export declare const synchronizer: <T, K extends number>(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined) => ((player: Player, object: T | undefined) => Promise<T | undefined>);
5
+ export declare class ObjectBus<T, K extends number> {
6
+ private readonly getSyncId;
7
+ readonly event: Event<[Player, T | undefined]>;
8
+ private readonly syncSlider;
9
+ constructor(getSyncId: (object: T) => K, getObject: (syncId: K) => T | undefined);
10
+ send(object: T | undefined): void;
11
+ }
@@ -0,0 +1,77 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
3
+ local __TS__Promise = ____lualib.__TS__Promise
4
+ local __TS__Class = ____lualib.__TS__Class
5
+ local ____exports = {}
6
+ local ____player = require("core.types.player")
7
+ local Player = ____player.Player
8
+ local ____math = require("math")
9
+ local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
10
+ local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
11
+ local ____linked_2Dset = require("utility.linked-set")
12
+ local LinkedSet = ____linked_2Dset.LinkedSet
13
+ local ____event = require("event")
14
+ local Event = ____event.Event
15
+ local eventInvoke = Event.invoke
16
+ local createFrameByType = BlzCreateFrameByType
17
+ local createTrigger = CreateTrigger
18
+ local getOriginFrame = BlzGetOriginFrame
19
+ local getTriggerFrameValue = BlzGetTriggerFrameValue
20
+ local getTriggerPlayer = GetTriggerPlayer
21
+ local frameSetMinMaxValue = BlzFrameSetMinMaxValue
22
+ local frameSetValue = BlzFrameSetValue
23
+ local triggerAddAction = TriggerAddAction
24
+ local triggerRegisterFrameEvent = BlzTriggerRegisterFrameEvent
25
+ ____exports.synchronizer = function(getSyncId, getObject)
26
+ local queue = __TS__New(LinkedSet)
27
+ local socket = __TS__New(____exports.ObjectBus, getSyncId, getObject)
28
+ socket.event:addListener(function(_, object)
29
+ local ____opt_0 = queue:pop()
30
+ if ____opt_0 ~= nil then
31
+ ____opt_0(object)
32
+ end
33
+ end)
34
+ local function executor(____, resolve)
35
+ queue:add(resolve)
36
+ end
37
+ return function(player, object)
38
+ if player.isLocal then
39
+ socket:send(object)
40
+ end
41
+ return __TS__New(__TS__Promise, executor)
42
+ end
43
+ end
44
+ ____exports.ObjectBus = __TS__Class()
45
+ local ObjectBus = ____exports.ObjectBus
46
+ ObjectBus.name = "ObjectBus"
47
+ function ObjectBus.prototype.____constructor(self, getSyncId, getObject)
48
+ self.getSyncId = getSyncId
49
+ local syncSlider = createFrameByType(
50
+ "SLIDER",
51
+ "Synchronizer",
52
+ getOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0),
53
+ "",
54
+ 0
55
+ )
56
+ frameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
57
+ self.syncSlider = syncSlider
58
+ local event = __TS__New(Event)
59
+ local trigger = createTrigger()
60
+ triggerRegisterFrameEvent(trigger, syncSlider, FRAMEEVENT_SLIDER_VALUE_CHANGED)
61
+ triggerAddAction(
62
+ trigger,
63
+ function()
64
+ eventInvoke(
65
+ event,
66
+ Player:of(getTriggerPlayer()),
67
+ getObject(getTriggerFrameValue())
68
+ )
69
+ end
70
+ )
71
+ self.event = event
72
+ end
73
+ function ObjectBus.prototype.send(self, object)
74
+ local syncId = object ~= nil and self.getSyncId(object) or 0
75
+ frameSetValue(self.syncSlider, syncId)
76
+ end
77
+ return ____exports
@@ -23,7 +23,7 @@ declare const enum TextTagPropertyKey {
23
23
  Y = 107
24
24
  }
25
25
  export declare class TextTag extends AbstractDestroyable {
26
- private readonly [TextTagPropertyKey.HANDLE];
26
+ private [TextTagPropertyKey.HANDLE]?;
27
27
  private [TextTagPropertyKey.CONFIGURATION]?;
28
28
  private [TextTagPropertyKey.TEXT]?;
29
29
  private [TextTagPropertyKey.FONT_SIZE]?;
@@ -11,6 +11,12 @@ local ____timer = require("core.types.timer")
11
11
  local Timer = ____timer.Timer
12
12
  local ____destroyable = require("destroyable")
13
13
  local AbstractDestroyable = ____destroyable.AbstractDestroyable
14
+ local ____playerCamera = require("core.types.playerCamera")
15
+ local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
16
+ local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
17
+ local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
18
+ local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
19
+ local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
14
20
  local createTextTag = CreateTextTag
15
21
  local destroyTextTag = DestroyTextTag
16
22
  local setTextTagText = SetTextTagText
@@ -24,6 +30,13 @@ local setTextTagPermanent = SetTextTagPermanent
24
30
  local setTextTagAge = SetTextTagAge
25
31
  local setTextTagLifespan = SetTextTagLifespan
26
32
  local setTextTagFadepoint = SetTextTagFadepoint
33
+ local isUnitHidden = IsUnitHidden
34
+ local isUnitLoaded = IsUnitLoaded
35
+ local isUnitVisible = IsUnitVisible
36
+ local getUnitFlyHeight = GetUnitFlyHeight
37
+ local getUnitX = GetUnitX
38
+ local getUnitY = GetUnitY
39
+ local unitAlive = UnitAlive
27
40
  local DEFAULT_FONT_SIZE = 0.024
28
41
  local function applyConfiguration(textTag, configuration)
29
42
  setTextTagFadepoint(textTag, configuration.fadepoint)
@@ -41,6 +54,33 @@ local function applyConfiguration(textTag, configuration)
41
54
  setTextTagVisibility(textTag, true)
42
55
  end
43
56
  local unitTextTags = setmetatable({}, {__mode = "k"})
57
+ local function ensureHandle(textTag)
58
+ local handle = textTag[101]
59
+ if handle == nil then
60
+ handle = createTextTag()
61
+ applyConfiguration(handle, textTag[102])
62
+ setTextTagPermanent(handle, true)
63
+ setTextTagText(handle, textTag[103] or "", textTag[104] or DEFAULT_FONT_SIZE)
64
+ local color = textTag[105]
65
+ if color ~= nil then
66
+ setTextTagColor(
67
+ handle,
68
+ color.r,
69
+ color.g,
70
+ color.b,
71
+ color.a
72
+ )
73
+ end
74
+ local unit = textTag[100]
75
+ if unit ~= nil then
76
+ setTextTagPosUnit(handle, unit.handle, textTag[102].offsetZ)
77
+ else
78
+ setTextTagPos(handle, textTag[106] or 0, textTag[107] or 0, 0)
79
+ end
80
+ textTag[101] = handle
81
+ end
82
+ return handle
83
+ end
44
84
  ____exports.TextTag = __TS__Class()
45
85
  local TextTag = ____exports.TextTag
46
86
  TextTag.name = "TextTag"
@@ -50,7 +90,11 @@ function TextTag.prototype.____constructor(self, handle)
50
90
  self[101] = handle
51
91
  end
52
92
  function TextTag.prototype.onDestroy(self)
53
- destroyTextTag(self[101])
93
+ local handle = self[101]
94
+ if handle ~= nil then
95
+ destroyTextTag(handle)
96
+ self[101] = nil
97
+ end
54
98
  unitTextTags[self] = nil
55
99
  return AbstractDestroyable.prototype.onDestroy(self)
56
100
  end
@@ -61,14 +105,11 @@ function TextTag.flash(self, configuration, text, x, y, z)
61
105
  applyConfiguration(textTag, configuration)
62
106
  end
63
107
  function TextTag.create(self, configuration, text, unit)
64
- local handle = createTextTag()
65
- setTextTagText(handle, text, DEFAULT_FONT_SIZE)
66
- setTextTagPosUnit(handle, unit.handle, configuration.offsetZ)
67
- applyConfiguration(handle, configuration)
68
- setTextTagPermanent(handle, true)
69
- local textTag = __TS__New(____exports.TextTag, handle)
108
+ local textTag = __TS__New(____exports.TextTag)
109
+ textTag[103] = text
70
110
  textTag[100] = unit
71
111
  textTag[102] = configuration
112
+ ensureHandle(textTag)
72
113
  unitTextTags[textTag] = true
73
114
  return textTag
74
115
  end
@@ -80,7 +121,11 @@ __TS__SetDescriptor(
80
121
  return self[103] or ""
81
122
  end,
82
123
  set = function(self, text)
83
- setTextTagText(self[101], text, self[104] or DEFAULT_FONT_SIZE)
124
+ setTextTagText(
125
+ ensureHandle(self),
126
+ text,
127
+ self[104] or DEFAULT_FONT_SIZE
128
+ )
84
129
  self[103] = text
85
130
  end
86
131
  },
@@ -94,7 +139,11 @@ __TS__SetDescriptor(
94
139
  return self[104] or DEFAULT_FONT_SIZE
95
140
  end,
96
141
  set = function(self, fontSize)
97
- setTextTagText(self[101], self[103] or "", DEFAULT_FONT_SIZE)
142
+ setTextTagText(
143
+ ensureHandle(self),
144
+ self[103] or "",
145
+ fontSize
146
+ )
98
147
  self[104] = fontSize
99
148
  end
100
149
  },
@@ -109,7 +158,7 @@ __TS__SetDescriptor(
109
158
  end,
110
159
  set = function(self, color)
111
160
  setTextTagColor(
112
- self[101],
161
+ ensureHandle(self),
113
162
  color.r,
114
163
  color.g,
115
164
  color.b,
@@ -129,7 +178,11 @@ __TS__SetDescriptor(
129
178
  end,
130
179
  set = function(self, unit)
131
180
  if unit ~= nil then
132
- setTextTagPosUnit(self[101], unit.handle, 0)
181
+ setTextTagPosUnit(
182
+ ensureHandle(self),
183
+ unit.handle,
184
+ 0
185
+ )
133
186
  self[106] = nil
134
187
  self[107] = nil
135
188
  unitTextTags[self] = true
@@ -137,7 +190,12 @@ __TS__SetDescriptor(
137
190
  local unit = self[100]
138
191
  local x = unit.x
139
192
  local y = unit.y
140
- setTextTagPos(self[101], x, y, 0)
193
+ setTextTagPos(
194
+ ensureHandle(self),
195
+ x,
196
+ y,
197
+ 0
198
+ )
141
199
  self[106] = x
142
200
  self[107] = y
143
201
  unitTextTags[self] = nil
@@ -160,14 +218,14 @@ __TS__SetDescriptor(
160
218
  return ____self__106_2 or 0
161
219
  end,
162
220
  set = function(self, x)
163
- local ____self__101_6 = self[101]
221
+ local ____ensureHandle_result_6 = ensureHandle(self)
164
222
  local ____x_7 = x
165
223
  local ____self__107_5 = self[107]
166
224
  if ____self__107_5 == nil then
167
225
  local ____opt_3 = self[100]
168
226
  ____self__107_5 = ____opt_3 and ____opt_3.y
169
227
  end
170
- setTextTagPos(____self__101_6, ____x_7, ____self__107_5 or 0, 0)
228
+ setTextTagPos(____ensureHandle_result_6, ____x_7, ____self__107_5 or 0, 0)
171
229
  self[106] = x
172
230
  self[100] = nil
173
231
  unitTextTags[self] = nil
@@ -188,13 +246,13 @@ __TS__SetDescriptor(
188
246
  return ____self__107_10 or 0
189
247
  end,
190
248
  set = function(self, y)
191
- local ____self__101_14 = self[101]
249
+ local ____ensureHandle_result_14 = ensureHandle(self)
192
250
  local ____self__106_13 = self[106]
193
251
  if ____self__106_13 == nil then
194
252
  local ____opt_11 = self[100]
195
253
  ____self__106_13 = ____opt_11 and ____opt_11.x
196
254
  end
197
- setTextTagPos(____self__101_14, ____self__106_13 or 0, y, 0)
255
+ setTextTagPos(____ensureHandle_result_14, ____self__106_13 or 0, y, 0)
198
256
  self[107] = y
199
257
  self[100] = nil
200
258
  unitTextTags[self] = nil
@@ -268,7 +326,24 @@ TextTag.SHADOW_STRIKE = __TS__ObjectAssign(
268
326
  )
269
327
  Timer.onPeriod[1 / 64]:addListener(function()
270
328
  for textTag in pairs(unitTextTags) do
271
- setTextTagPosUnit(textTag[101], textTag[100].handle, textTag[102].offsetZ)
329
+ local unit = textTag[100].handle
330
+ local x = getUnitX(unit)
331
+ local y = getUnitY(unit)
332
+ local ____, ____, isInView = worldCoordinatesToFrame(
333
+ x,
334
+ y,
335
+ getUnitFlyHeight(unit) + getTerrainZ(x, y)
336
+ )
337
+ if isInView and not isUnitHidden(unit) and not isUnitLoaded(unit) and isUnitVisible(unit, PLAYER_LOCAL_HANDLE) and unitAlive(unit) then
338
+ setTextTagPosUnit(
339
+ ensureHandle(textTag),
340
+ unit,
341
+ textTag[102].offsetZ
342
+ )
343
+ elseif textTag[101] ~= nil then
344
+ destroyTextTag(textTag[101])
345
+ textTag[101] = nil
346
+ end
272
347
  end
273
348
  end)
274
349
  return ____exports
package/engine/unit.d.ts CHANGED
@@ -19,6 +19,11 @@ import "./internal/unit/invulnerability-counter";
19
19
  import "./internal/unit/detach-missiles";
20
20
  import "./internal/unit/main-selected";
21
21
  import "./internal/unit/add-item-to-slot-init";
22
+ import "./internal/unit/attributes";
23
+ import "./internal/unit/fly-height";
24
+ import "./internal/unit/scale";
25
+ import "./internal/unit/interrupts";
26
+ import "./internal/unit/range-event";
22
27
  import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
23
28
  export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
24
29
  export * from "./internal/unit+damage";
package/engine/unit.lua CHANGED
@@ -19,6 +19,11 @@ require("engine.internal.unit.invulnerability-counter")
19
19
  require("engine.internal.unit.detach-missiles")
20
20
  require("engine.internal.unit.main-selected")
21
21
  require("engine.internal.unit.add-item-to-slot-init")
22
+ require("engine.internal.unit.attributes")
23
+ require("engine.internal.unit.fly-height")
24
+ require("engine.internal.unit.scale")
25
+ require("engine.internal.unit.interrupts")
26
+ require("engine.internal.unit.range-event")
22
27
  require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
23
28
  do
24
29
  local ____unit = require("engine.internal.unit")
package/lualib_bundle.lua CHANGED
@@ -653,7 +653,6 @@ do
653
653
  self.state = 0
654
654
  self.fulfilledCallbacks = {}
655
655
  self.rejectedCallbacks = {}
656
- self.finallyCallbacks = {}
657
656
  local success, ____error = ____pcall(
658
657
  executor,
659
658
  nil,
@@ -703,14 +702,40 @@ do
703
702
  return self["then"](self, nil, onRejected)
704
703
  end
705
704
  function __TS__Promise.prototype.finally(self, onFinally)
706
- if onFinally then
707
- local ____self_finallyCallbacks_2 = self.finallyCallbacks
708
- ____self_finallyCallbacks_2[#____self_finallyCallbacks_2 + 1] = onFinally
709
- if self.state ~= 0 then
710
- onFinally(nil)
711
- end
705
+ if type(onFinally) ~= "function" then
706
+ return self["then"](self, onFinally, onFinally)
712
707
  end
713
- return self
708
+ return self["then"](
709
+ self,
710
+ function(____, x)
711
+ local ____self_2 = __TS__New(
712
+ __TS__Promise,
713
+ function(____, resolve) return resolve(
714
+ nil,
715
+ onFinally(nil)
716
+ ) end
717
+ )
718
+ return ____self_2["then"](
719
+ ____self_2,
720
+ function() return x end
721
+ )
722
+ end,
723
+ function(____, e)
724
+ local ____self_3 = __TS__New(
725
+ __TS__Promise,
726
+ function(____, resolve) return resolve(
727
+ nil,
728
+ onFinally(nil)
729
+ ) end
730
+ )
731
+ return ____self_3["then"](
732
+ ____self_3,
733
+ function()
734
+ error(e, 0)
735
+ end
736
+ )
737
+ end
738
+ )
714
739
  end
715
740
  function __TS__Promise.prototype.resolve(self, value)
716
741
  if isPromiseLike(value) then
@@ -734,22 +759,11 @@ do
734
759
  end
735
760
  function __TS__Promise.prototype.invokeCallbacks(self, callbacks, value)
736
761
  local callbacksLength = #callbacks
737
- local finallyCallbacks = self.finallyCallbacks
738
- local finallyCallbacksLength = #finallyCallbacks
739
762
  if callbacksLength ~= 0 then
740
763
  for i = 1, callbacksLength - 1 do
741
764
  callbacks[i](callbacks, value)
742
765
  end
743
- if finallyCallbacksLength == 0 then
744
- return callbacks[callbacksLength](callbacks, value)
745
- end
746
- callbacks[callbacksLength](callbacks, value)
747
- end
748
- if finallyCallbacksLength ~= 0 then
749
- for i = 1, finallyCallbacksLength - 1 do
750
- finallyCallbacks[i](finallyCallbacks)
751
- end
752
- return finallyCallbacks[finallyCallbacksLength](finallyCallbacks)
766
+ return callbacks[callbacksLength](callbacks, value)
753
767
  end
754
768
  end
755
769
  function __TS__Promise.prototype.createPromiseResolvingCallback(self, f, resolve, reject)
@@ -904,8 +918,10 @@ local function __TS__ObjectAssign(target, ...)
904
918
  local sources = {...}
905
919
  for i = 1, #sources do
906
920
  local source = sources[i]
907
- for key in pairs(source) do
908
- target[key] = source[key]
921
+ if type(source) == "table" then
922
+ for key in pairs(source) do
923
+ target[key] = source[key]
924
+ end
909
925
  end
910
926
  end
911
927
  return target
@@ -1011,6 +1027,13 @@ do
1011
1027
  metatable = {}
1012
1028
  setmetatable(target, metatable)
1013
1029
  end
1030
+ if not isPrototype and not rawget(metatable, "_isOwnDescriptorMetatable") then
1031
+ local instanceMetatable = {}
1032
+ instanceMetatable._isOwnDescriptorMetatable = true
1033
+ setmetatable(instanceMetatable, metatable)
1034
+ setmetatable(target, instanceMetatable)
1035
+ metatable = instanceMetatable
1036
+ end
1014
1037
  local value = rawget(target, key)
1015
1038
  if value ~= nil then
1016
1039
  rawset(target, key, nil)
@@ -1383,46 +1406,70 @@ do
1383
1406
  return self:entries()
1384
1407
  end
1385
1408
  function Map.prototype.entries(self)
1409
+ local function getFirstKey()
1410
+ return self.firstKey
1411
+ end
1386
1412
  local items = self.items
1387
1413
  local nextKey = self.nextKey
1388
- local key = self.firstKey
1414
+ local key
1415
+ local started = false
1389
1416
  return {
1390
1417
  [Symbol.iterator] = function(self)
1391
1418
  return self
1392
1419
  end,
1393
1420
  next = function(self)
1394
- local result = {done = not key, value = {key, items[key]}}
1395
- key = nextKey[key]
1396
- return result
1421
+ if not started then
1422
+ started = true
1423
+ key = getFirstKey(nil)
1424
+ else
1425
+ key = nextKey[key]
1426
+ end
1427
+ return {done = not key, value = {key, items[key]}}
1397
1428
  end
1398
1429
  }
1399
1430
  end
1400
1431
  function Map.prototype.keys(self)
1432
+ local function getFirstKey()
1433
+ return self.firstKey
1434
+ end
1401
1435
  local nextKey = self.nextKey
1402
- local key = self.firstKey
1436
+ local key
1437
+ local started = false
1403
1438
  return {
1404
1439
  [Symbol.iterator] = function(self)
1405
1440
  return self
1406
1441
  end,
1407
1442
  next = function(self)
1408
- local result = {done = not key, value = key}
1409
- key = nextKey[key]
1410
- return result
1443
+ if not started then
1444
+ started = true
1445
+ key = getFirstKey(nil)
1446
+ else
1447
+ key = nextKey[key]
1448
+ end
1449
+ return {done = not key, value = key}
1411
1450
  end
1412
1451
  }
1413
1452
  end
1414
1453
  function Map.prototype.values(self)
1454
+ local function getFirstKey()
1455
+ return self.firstKey
1456
+ end
1415
1457
  local items = self.items
1416
1458
  local nextKey = self.nextKey
1417
- local key = self.firstKey
1459
+ local key
1460
+ local started = false
1418
1461
  return {
1419
1462
  [Symbol.iterator] = function(self)
1420
1463
  return self
1421
1464
  end,
1422
1465
  next = function(self)
1423
- local result = {done = not key, value = items[key]}
1424
- key = nextKey[key]
1425
- return result
1466
+ if not started then
1467
+ started = true
1468
+ key = getFirstKey(nil)
1469
+ else
1470
+ key = nextKey[key]
1471
+ end
1472
+ return {done = not key, value = items[key]}
1426
1473
  end
1427
1474
  }
1428
1475
  end
@@ -1999,44 +2046,68 @@ do
1999
2046
  return self:values()
2000
2047
  end
2001
2048
  function Set.prototype.entries(self)
2049
+ local function getFirstKey()
2050
+ return self.firstKey
2051
+ end
2002
2052
  local nextKey = self.nextKey
2003
- local key = self.firstKey
2053
+ local key
2054
+ local started = false
2004
2055
  return {
2005
2056
  [Symbol.iterator] = function(self)
2006
2057
  return self
2007
2058
  end,
2008
2059
  next = function(self)
2009
- local result = {done = not key, value = {key, key}}
2010
- key = nextKey[key]
2011
- return result
2060
+ if not started then
2061
+ started = true
2062
+ key = getFirstKey(nil)
2063
+ else
2064
+ key = nextKey[key]
2065
+ end
2066
+ return {done = not key, value = {key, key}}
2012
2067
  end
2013
2068
  }
2014
2069
  end
2015
2070
  function Set.prototype.keys(self)
2071
+ local function getFirstKey()
2072
+ return self.firstKey
2073
+ end
2016
2074
  local nextKey = self.nextKey
2017
- local key = self.firstKey
2075
+ local key
2076
+ local started = false
2018
2077
  return {
2019
2078
  [Symbol.iterator] = function(self)
2020
2079
  return self
2021
2080
  end,
2022
2081
  next = function(self)
2023
- local result = {done = not key, value = key}
2024
- key = nextKey[key]
2025
- return result
2082
+ if not started then
2083
+ started = true
2084
+ key = getFirstKey(nil)
2085
+ else
2086
+ key = nextKey[key]
2087
+ end
2088
+ return {done = not key, value = key}
2026
2089
  end
2027
2090
  }
2028
2091
  end
2029
2092
  function Set.prototype.values(self)
2093
+ local function getFirstKey()
2094
+ return self.firstKey
2095
+ end
2030
2096
  local nextKey = self.nextKey
2031
- local key = self.firstKey
2097
+ local key
2098
+ local started = false
2032
2099
  return {
2033
2100
  [Symbol.iterator] = function(self)
2034
2101
  return self
2035
2102
  end,
2036
2103
  next = function(self)
2037
- local result = {done = not key, value = key}
2038
- key = nextKey[key]
2039
- return result
2104
+ if not started then
2105
+ started = true
2106
+ key = getFirstKey(nil)
2107
+ else
2108
+ key = nextKey[key]
2109
+ end
2110
+ return {done = not key, value = key}
2040
2111
  end
2041
2112
  }
2042
2113
  end
@@ -2241,7 +2312,7 @@ local function __TS__SourceMapTraceBack(fileName, sourceMap)
2241
2312
  end
2242
2313
  local result = string.gsub(
2243
2314
  trace,
2244
- "(%S+)%.lua:(%d+)",
2315
+ "([^%s<]+)%.lua:(%d+)",
2245
2316
  function(file, line) return replacer(nil, file .. ".lua", file .. ".ts", line) end
2246
2317
  )
2247
2318
  local function stringReplacer(____, file, line)
package/net/socket.lua CHANGED
@@ -28,13 +28,13 @@ function Socket.prototype.____constructor(self)
28
28
  onReceive[self[0]]:addListener(function(sender, data)
29
29
  local chunks = chunksByPlayer[sender]
30
30
  if chunks ~= nil then
31
+ chunksByPlayer[sender] = nil
31
32
  chunks[#chunks + 1] = data
32
33
  Event.invoke(
33
34
  self.onMessage,
34
35
  sender,
35
36
  tableConcat(chunks)
36
37
  )
37
- chunksByPlayer[sender] = nil
38
38
  else
39
39
  Event.invoke(self.onMessage, sender, data)
40
40
  end