warscript 0.0.1-dev.e196516 → 0.0.1-dev.e27e5b1

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 (192) hide show
  1. package/attributes.d.ts +1 -0
  2. package/attributes.lua +9 -0
  3. package/core/types/frame.d.ts +1 -0
  4. package/core/types/frame.lua +136 -58
  5. package/core/types/handle.lua +6 -9
  6. package/core/types/item.d.ts +1 -0
  7. package/core/types/item.lua +1 -0
  8. package/core/types/player.d.ts +18 -1
  9. package/core/types/player.lua +76 -26
  10. package/core/types/playerCamera.d.ts +2 -0
  11. package/core/types/playerCamera.lua +123 -5
  12. package/core/types/playerColor.lua +4 -3
  13. package/core/types/sound.d.ts +1 -1
  14. package/core/types/sound.lua +14 -9
  15. package/core/types/tileCell.d.ts +11 -1
  16. package/core/types/tileCell.lua +97 -0
  17. package/core/types/timer.d.ts +3 -1
  18. package/core/types/timer.lua +27 -2
  19. package/core/types/unit.d.ts +4 -0
  20. package/core/types/unit.lua +4 -0
  21. package/decl/native.d.ts +711 -11
  22. package/destroyable.d.ts +1 -0
  23. package/destroyable.lua +9 -0
  24. package/engine/behavior.d.ts +14 -1
  25. package/engine/behavior.lua +230 -70
  26. package/engine/behaviour/ability/apply-buff.lua +5 -5
  27. package/engine/behaviour/ability/damage.d.ts +3 -0
  28. package/engine/behaviour/ability/damage.lua +8 -2
  29. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  30. package/engine/behaviour/ability/emulate-impact.lua +7 -5
  31. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  32. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  33. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  34. package/engine/behaviour/ability/restore-mana.lua +6 -6
  35. package/engine/behaviour/ability.d.ts +11 -6
  36. package/engine/behaviour/ability.lua +37 -16
  37. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  38. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  39. package/engine/behaviour/unit.d.ts +27 -5
  40. package/engine/behaviour/unit.lua +181 -27
  41. package/engine/buff.d.ts +67 -22
  42. package/engine/buff.lua +371 -182
  43. package/engine/internal/ability.d.ts +7 -1
  44. package/engine/internal/ability.lua +86 -44
  45. package/engine/internal/item/ability.lua +51 -1
  46. package/engine/internal/item/fields.d.ts +12 -0
  47. package/engine/internal/item/fields.lua +33 -0
  48. package/engine/internal/item+owner.d.ts +1 -0
  49. package/engine/internal/item+owner.lua +19 -6
  50. package/engine/internal/item.d.ts +23 -14
  51. package/engine/internal/item.lua +169 -82
  52. package/engine/internal/mechanics/cast-ability.lua +6 -3
  53. package/engine/internal/misc/frame-coordinates.lua +21 -0
  54. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  55. package/engine/internal/misc/get-terrain-z.lua +11 -0
  56. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  57. package/engine/internal/misc/player-local-handle.lua +5 -0
  58. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  59. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  60. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  61. package/engine/internal/object-data/health-bonus.lua +16 -0
  62. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  63. package/engine/internal/object-data/mana-bonus.lua +16 -0
  64. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  65. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  66. package/engine/internal/unit/ability.d.ts +35 -5
  67. package/engine/internal/unit/ability.lua +111 -24
  68. package/engine/internal/unit/appearance.d.ts +15 -0
  69. package/engine/internal/unit/appearance.lua +85 -0
  70. package/engine/internal/unit/attributes.d.ts +17 -0
  71. package/engine/internal/unit/attributes.lua +46 -0
  72. package/engine/internal/unit/bag.d.ts +18 -0
  73. package/engine/internal/unit/bag.lua +63 -0
  74. package/engine/internal/unit/bonus.d.ts +6 -0
  75. package/engine/internal/unit/bonus.lua +33 -3
  76. package/engine/internal/unit/buff.d.ts +2 -2
  77. package/engine/internal/unit/buff.lua +32 -17
  78. package/engine/internal/unit/equipment.d.ts +36 -0
  79. package/engine/internal/unit/equipment.lua +169 -0
  80. package/engine/internal/unit/fly-height.d.ts +7 -0
  81. package/engine/internal/unit/fly-height.lua +20 -0
  82. package/engine/internal/unit/interrupts.d.ts +12 -0
  83. package/engine/internal/unit/interrupts.lua +28 -0
  84. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  85. package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
  86. package/engine/internal/unit/main-selected.lua +12 -27
  87. package/engine/internal/unit/order.d.ts +20 -0
  88. package/engine/internal/unit/order.lua +136 -0
  89. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  90. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  91. package/engine/internal/unit/range-event.d.ts +12 -0
  92. package/engine/internal/unit/range-event.lua +90 -0
  93. package/engine/internal/unit/scale.d.ts +7 -0
  94. package/engine/internal/unit/scale.lua +20 -0
  95. package/engine/internal/unit+ability.lua +10 -1
  96. package/engine/internal/unit+bonus.lua +3 -3
  97. package/engine/internal/unit-missile-launch.lua +52 -14
  98. package/engine/internal/unit.d.ts +19 -24
  99. package/engine/internal/unit.lua +233 -246
  100. package/engine/local-client.d.ts +21 -0
  101. package/engine/local-client.lua +150 -7
  102. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  103. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  104. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  105. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  106. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  107. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  108. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  109. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  110. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  111. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  112. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  113. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  114. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  115. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  116. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  117. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  118. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  119. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  120. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  121. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  122. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  123. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  124. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  125. package/engine/object-data/entry/ability-type.d.ts +2 -0
  126. package/engine/object-data/entry/ability-type.lua +89 -8
  127. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  128. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  129. package/engine/object-data/entry/destructible-type.lua +155 -0
  130. package/engine/object-data/entry/unit-type.d.ts +15 -2
  131. package/engine/object-data/entry/unit-type.lua +135 -33
  132. package/engine/object-field/ability.d.ts +3 -3
  133. package/engine/object-field/ability.lua +9 -8
  134. package/engine/object-field/item.d.ts +22 -0
  135. package/engine/object-field/item.lua +118 -0
  136. package/engine/object-field/unit.d.ts +31 -5
  137. package/engine/object-field/unit.lua +95 -0
  138. package/engine/object-field.d.ts +12 -4
  139. package/engine/object-field.lua +278 -131
  140. package/engine/random.d.ts +10 -0
  141. package/engine/random.lua +21 -0
  142. package/engine/standard/fields/ability.d.ts +2 -2
  143. package/engine/standard/fields/ability.lua +2 -2
  144. package/engine/standard/fields/item.d.ts +4 -0
  145. package/engine/standard/fields/item.lua +6 -0
  146. package/engine/standard/fields/unit.d.ts +12 -0
  147. package/engine/standard/fields/unit.lua +20 -0
  148. package/engine/synchronization.d.ts +11 -0
  149. package/engine/synchronization.lua +77 -0
  150. package/engine/text-tag.d.ts +26 -3
  151. package/engine/text-tag.lua +217 -11
  152. package/engine/unit.d.ts +10 -1
  153. package/engine/unit.lua +10 -1
  154. package/event.d.ts +1 -1
  155. package/lualib_bundle.lua +1 -1
  156. package/math.d.ts +2 -0
  157. package/math.lua +14 -0
  158. package/net/socket.lua +1 -1
  159. package/network.lua +25 -1
  160. package/objutil/buff.lua +10 -8
  161. package/objutil/object.lua +1 -1
  162. package/operation.d.ts +8 -1
  163. package/operation.lua +38 -18
  164. package/package.json +5 -5
  165. package/patch-lua.lua +15 -0
  166. package/patch-lualib.lua +1 -1
  167. package/utility/arrays.d.ts +1 -0
  168. package/utility/arrays.lua +8 -0
  169. package/utility/callback-array.d.ts +17 -0
  170. package/utility/callback-array.lua +61 -0
  171. package/utility/functions.d.ts +7 -0
  172. package/utility/functions.lua +12 -0
  173. package/utility/linked-map.d.ts +35 -0
  174. package/utility/linked-map.lua +107 -0
  175. package/utility/linked-set.d.ts +4 -1
  176. package/utility/linked-set.lua +46 -1
  177. package/utility/lua-maps.d.ts +11 -2
  178. package/utility/lua-maps.lua +33 -2
  179. package/utility/lua-sets.d.ts +1 -0
  180. package/utility/lua-sets.lua +4 -0
  181. package/utility/random.d.ts +102 -0
  182. package/utility/random.lua +273 -0
  183. package/utility/records.lua +20 -1
  184. package/utility/types.d.ts +3 -0
  185. package/utility/unordered-map.d.ts +27 -0
  186. package/utility/unordered-map.lua +99 -0
  187. package/core/types/order.d.ts +0 -26
  188. package/core/types/order.lua +0 -65
  189. /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
  190. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  191. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  192. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ import { UnitClassificationsField, UnitFloatField, UnitFlyHeightField, UnitHealthRegenerationTypeField, UnitIntegerField, UnitPropulsionWindowField, UnitScalingValueField } from "../../object-field/unit";
3
+ export declare const PROPULSION_WINDOW_UNIT_FIELD: UnitPropulsionWindowField & symbol;
4
+ export declare const CLASSIFICATIONS_UNIT_FIELD: UnitClassificationsField & symbol;
5
+ export declare const FLY_HEIGHT_UNIT_FIELD: UnitFlyHeightField & symbol;
6
+ export declare const SCALING_VALUE_UNIT_FIELD: UnitScalingValueField & symbol;
7
+ export declare const HEALTH_REGENERATION_RATE_UNIT_FIELD: UnitFloatField & symbol;
8
+ export declare const MANA_REGENERATION_RATE_UNIT_FIELD: UnitFloatField & symbol;
9
+ export declare const HEALTH_REGENERATION_TYPE_UNIT_FIELD: UnitHealthRegenerationTypeField & symbol;
10
+ export declare const STRENGTH_UNIT_FIELD: UnitIntegerField<number> & symbol;
11
+ export declare const AGILITY_UNIT_FIELD: UnitIntegerField<number> & symbol;
12
+ export declare const INTELLIGENCE_UNIT_FIELD: UnitIntegerField<number> & symbol;
@@ -0,0 +1,20 @@
1
+ local ____exports = {}
2
+ local ____unit = require("engine.object-field.unit")
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
8
+ local UnitPropulsionWindowField = ____unit.UnitPropulsionWindowField
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"))
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
@@ -14,14 +14,37 @@ export type TextTagPreset = {
14
14
  };
15
15
  declare const enum TextTagPropertyKey {
16
16
  UNIT = 100,
17
- CONFIGURATION = 101
17
+ HANDLE = 101,
18
+ CONFIGURATION = 102,
19
+ TEXT = 103,
20
+ FONT_SIZE = 104,
21
+ COLOR = 105,
22
+ X = 106,
23
+ Y = 107
18
24
  }
19
25
  export declare class TextTag extends AbstractDestroyable {
20
- private readonly handle;
21
- private [TextTagPropertyKey.UNIT]?;
26
+ private [TextTagPropertyKey.HANDLE]?;
22
27
  private [TextTagPropertyKey.CONFIGURATION]?;
28
+ private [TextTagPropertyKey.TEXT]?;
29
+ private [TextTagPropertyKey.FONT_SIZE]?;
30
+ private [TextTagPropertyKey.COLOR]?;
31
+ private [TextTagPropertyKey.UNIT]?;
32
+ private [TextTagPropertyKey.X]?;
33
+ private [TextTagPropertyKey.Y]?;
23
34
  private constructor();
24
35
  protected onDestroy(): Destructor;
36
+ get text(): string;
37
+ set text(text: string);
38
+ get fontSize(): number;
39
+ set fontSize(fontSize: number);
40
+ get color(): Color;
41
+ set color(color: Color);
42
+ get unit(): Unit | undefined;
43
+ set unit(unit: Unit | undefined);
44
+ get x(): number;
45
+ set x(x: number);
46
+ get y(): number;
47
+ set y(y: number);
25
48
  static BASE: Readonly<TextTagPreset>;
26
49
  static BASH: Readonly<TextTagPreset>;
27
50
  static CRITICAL_STRIKE: Readonly<TextTagPreset>;
@@ -2,6 +2,7 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__New = ____lualib.__TS__New
5
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
6
  local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign
6
7
  local ____exports = {}
7
8
  local ____color = require("core.types.color")
@@ -10,6 +11,12 @@ local ____timer = require("core.types.timer")
10
11
  local Timer = ____timer.Timer
11
12
  local ____destroyable = require("destroyable")
12
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
13
20
  local createTextTag = CreateTextTag
14
21
  local destroyTextTag = DestroyTextTag
15
22
  local setTextTagText = SetTextTagText
@@ -23,6 +30,13 @@ local setTextTagPermanent = SetTextTagPermanent
23
30
  local setTextTagAge = SetTextTagAge
24
31
  local setTextTagLifespan = SetTextTagLifespan
25
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
26
40
  local DEFAULT_FONT_SIZE = 0.024
27
41
  local function applyConfiguration(textTag, configuration)
28
42
  setTextTagFadepoint(textTag, configuration.fadepoint)
@@ -40,16 +54,47 @@ local function applyConfiguration(textTag, configuration)
40
54
  setTextTagVisibility(textTag, true)
41
55
  end
42
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
43
84
  ____exports.TextTag = __TS__Class()
44
85
  local TextTag = ____exports.TextTag
45
86
  TextTag.name = "TextTag"
46
87
  __TS__ClassExtends(TextTag, AbstractDestroyable)
47
88
  function TextTag.prototype.____constructor(self, handle)
48
89
  AbstractDestroyable.prototype.____constructor(self)
49
- self.handle = handle
90
+ self[101] = handle
50
91
  end
51
92
  function TextTag.prototype.onDestroy(self)
52
- destroyTextTag(self.handle)
93
+ local handle = self[101]
94
+ if handle ~= nil then
95
+ destroyTextTag(handle)
96
+ self[101] = nil
97
+ end
53
98
  unitTextTags[self] = nil
54
99
  return AbstractDestroyable.prototype.onDestroy(self)
55
100
  end
@@ -60,17 +105,161 @@ function TextTag.flash(self, configuration, text, x, y, z)
60
105
  applyConfiguration(textTag, configuration)
61
106
  end
62
107
  function TextTag.create(self, configuration, text, unit)
63
- local handle = createTextTag()
64
- setTextTagText(handle, text, DEFAULT_FONT_SIZE)
65
- setTextTagPosUnit(handle, unit.handle, configuration.offsetZ)
66
- applyConfiguration(handle, configuration)
67
- setTextTagPermanent(handle, true)
68
- local textTag = __TS__New(____exports.TextTag, handle)
69
- textTag[100] = unit.handle
70
- textTag[101] = configuration
108
+ local textTag = __TS__New(____exports.TextTag)
109
+ textTag[103] = text
110
+ textTag[100] = unit
111
+ textTag[102] = configuration
112
+ ensureHandle(textTag)
71
113
  unitTextTags[textTag] = true
72
114
  return textTag
73
115
  end
116
+ __TS__SetDescriptor(
117
+ TextTag.prototype,
118
+ "text",
119
+ {
120
+ get = function(self)
121
+ return self[103] or ""
122
+ end,
123
+ set = function(self, text)
124
+ setTextTagText(
125
+ ensureHandle(self),
126
+ text,
127
+ self[104] or DEFAULT_FONT_SIZE
128
+ )
129
+ self[103] = text
130
+ end
131
+ },
132
+ true
133
+ )
134
+ __TS__SetDescriptor(
135
+ TextTag.prototype,
136
+ "fontSize",
137
+ {
138
+ get = function(self)
139
+ return self[104] or DEFAULT_FONT_SIZE
140
+ end,
141
+ set = function(self, fontSize)
142
+ setTextTagText(
143
+ ensureHandle(self),
144
+ self[103] or "",
145
+ fontSize
146
+ )
147
+ self[104] = fontSize
148
+ end
149
+ },
150
+ true
151
+ )
152
+ __TS__SetDescriptor(
153
+ TextTag.prototype,
154
+ "color",
155
+ {
156
+ get = function(self)
157
+ return self[105] or Color.white
158
+ end,
159
+ set = function(self, color)
160
+ setTextTagColor(
161
+ ensureHandle(self),
162
+ color.r,
163
+ color.g,
164
+ color.b,
165
+ color.a
166
+ )
167
+ self[105] = color
168
+ end
169
+ },
170
+ true
171
+ )
172
+ __TS__SetDescriptor(
173
+ TextTag.prototype,
174
+ "unit",
175
+ {
176
+ get = function(self)
177
+ return self[100]
178
+ end,
179
+ set = function(self, unit)
180
+ if unit ~= nil then
181
+ setTextTagPosUnit(
182
+ ensureHandle(self),
183
+ unit.handle,
184
+ 0
185
+ )
186
+ self[106] = nil
187
+ self[107] = nil
188
+ unitTextTags[self] = true
189
+ elseif self[100] ~= nil then
190
+ local unit = self[100]
191
+ local x = unit.x
192
+ local y = unit.y
193
+ setTextTagPos(
194
+ ensureHandle(self),
195
+ x,
196
+ y,
197
+ 0
198
+ )
199
+ self[106] = x
200
+ self[107] = y
201
+ unitTextTags[self] = nil
202
+ end
203
+ self[100] = unit
204
+ end
205
+ },
206
+ true
207
+ )
208
+ __TS__SetDescriptor(
209
+ TextTag.prototype,
210
+ "x",
211
+ {
212
+ get = function(self)
213
+ local ____self__106_2 = self[106]
214
+ if ____self__106_2 == nil then
215
+ local ____opt_0 = self[100]
216
+ ____self__106_2 = ____opt_0 and ____opt_0.x
217
+ end
218
+ return ____self__106_2 or 0
219
+ end,
220
+ set = function(self, x)
221
+ local ____ensureHandle_result_6 = ensureHandle(self)
222
+ local ____x_7 = x
223
+ local ____self__107_5 = self[107]
224
+ if ____self__107_5 == nil then
225
+ local ____opt_3 = self[100]
226
+ ____self__107_5 = ____opt_3 and ____opt_3.y
227
+ end
228
+ setTextTagPos(____ensureHandle_result_6, ____x_7, ____self__107_5 or 0, 0)
229
+ self[106] = x
230
+ self[100] = nil
231
+ unitTextTags[self] = nil
232
+ end
233
+ },
234
+ true
235
+ )
236
+ __TS__SetDescriptor(
237
+ TextTag.prototype,
238
+ "y",
239
+ {
240
+ get = function(self)
241
+ local ____self__107_10 = self[107]
242
+ if ____self__107_10 == nil then
243
+ local ____opt_8 = self[100]
244
+ ____self__107_10 = ____opt_8 and ____opt_8.y
245
+ end
246
+ return ____self__107_10 or 0
247
+ end,
248
+ set = function(self, y)
249
+ local ____ensureHandle_result_14 = ensureHandle(self)
250
+ local ____self__106_13 = self[106]
251
+ if ____self__106_13 == nil then
252
+ local ____opt_11 = self[100]
253
+ ____self__106_13 = ____opt_11 and ____opt_11.x
254
+ end
255
+ setTextTagPos(____ensureHandle_result_14, ____self__106_13 or 0, y, 0)
256
+ self[107] = y
257
+ self[100] = nil
258
+ unitTextTags[self] = nil
259
+ end
260
+ },
261
+ true
262
+ )
74
263
  TextTag.BASE = {
75
264
  fadepoint = 2,
76
265
  lifespan = 3,
@@ -137,7 +326,24 @@ TextTag.SHADOW_STRIKE = __TS__ObjectAssign(
137
326
  )
138
327
  Timer.onPeriod[1 / 64]:addListener(function()
139
328
  for textTag in pairs(unitTextTags) do
140
- setTextTagPosUnit(textTag.handle, textTag[100], textTag[101].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
141
347
  end
142
348
  end)
143
349
  return ____exports
package/engine/unit.d.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  /** @noSelfInFile */
2
2
  import "./internal/unit";
3
+ import "./internal/unit/order";
3
4
  import "./internal/unit/ability";
5
+ import "./internal/unit/appearance";
6
+ import "./internal/unit/bag";
7
+ import "./internal/unit/equipment";
4
8
  import "./internal/unit/allowed-targets";
5
9
  import "./internal/unit/buff";
6
10
  import "./internal/unit/expiration-timer";
7
- import "./internal/unit/item";
11
+ import "./internal/unit/inventory";
8
12
  import "./internal/unit+ability";
9
13
  import "./internal/unit+damage";
10
14
  import "./internal/unit+rally";
@@ -18,6 +22,11 @@ import "./internal/unit/invulnerability-counter";
18
22
  import "./internal/unit/detach-missiles";
19
23
  import "./internal/unit/main-selected";
20
24
  import "./internal/unit/add-item-to-slot-init";
25
+ import "./internal/unit/attributes";
26
+ import "./internal/unit/fly-height";
27
+ import "./internal/unit/scale";
28
+ import "./internal/unit/interrupts";
29
+ import "./internal/unit/range-event";
21
30
  import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
22
31
  export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
23
32
  export * from "./internal/unit+damage";
package/engine/unit.lua CHANGED
@@ -1,10 +1,14 @@
1
1
  local ____exports = {}
2
2
  require("engine.internal.unit")
3
+ require("engine.internal.unit.order")
3
4
  require("engine.internal.unit.ability")
5
+ require("engine.internal.unit.appearance")
6
+ require("engine.internal.unit.bag")
7
+ require("engine.internal.unit.equipment")
4
8
  require("engine.internal.unit.allowed-targets")
5
9
  require("engine.internal.unit.buff")
6
10
  require("engine.internal.unit.expiration-timer")
7
- require("engine.internal.unit.item")
11
+ require("engine.internal.unit.inventory")
8
12
  require("engine.internal.unit+ability")
9
13
  require("engine.internal.unit+damage")
10
14
  require("engine.internal.unit+rally")
@@ -18,6 +22,11 @@ require("engine.internal.unit.invulnerability-counter")
18
22
  require("engine.internal.unit.detach-missiles")
19
23
  require("engine.internal.unit.main-selected")
20
24
  require("engine.internal.unit.add-item-to-slot-init")
25
+ require("engine.internal.unit.attributes")
26
+ require("engine.internal.unit.fly-height")
27
+ require("engine.internal.unit.scale")
28
+ require("engine.internal.unit.interrupts")
29
+ require("engine.internal.unit.range-event")
21
30
  require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
22
31
  do
23
32
  local ____unit = require("engine.internal.unit")
package/event.d.ts CHANGED
@@ -40,7 +40,7 @@ export declare const createDispatchingEvent: {
40
40
  <T extends Event<any>, S extends Event<EventParameters<T>>>(underlyingEvent: T, extractKey: (this: void, ...args: EventParameters<T>) => number, invokeEvent?: (this: void, event: S, ...args: EventParameters<T>) => unknown, ...createEvent: [...(Event<any> extends S ? [((this: void) => S)?] : [(this: void) => S])]): DispatchingEvent<EventParameters<T>, T, S>;
41
41
  };
42
42
  export declare class DependentInitializingEvent<T extends any[], R extends any[]> extends InitializingEvent<R, EventListener<T>> {
43
- constructor(underlyingEvent: Event<T>, priority: EventListenerPriority, collector: (...args: T) => LuaMultiReturn<[false] | [true, ...R]>);
43
+ constructor(underlyingEvent: Event<T>, priority: EventListenerPriority, collector: (...args: T) => LuaMultiReturn<[false, ...unknown[]] | [boolean, ...R]>);
44
44
  }
45
45
  export declare class EventParametersCaptor<T extends any[]> {
46
46
  private readonly event;
package/lualib_bundle.lua CHANGED
@@ -2241,7 +2241,7 @@ local function __TS__SourceMapTraceBack(fileName, sourceMap)
2241
2241
  end
2242
2242
  local result = string.gsub(
2243
2243
  trace,
2244
- "(%S+)%.lua:(%d+)",
2244
+ "([^%s<]+)%.lua:(%d+)",
2245
2245
  function(file, line) return replacer(nil, file .. ".lua", file .. ".ts", line) end
2246
2246
  )
2247
2247
  local function stringReplacer(____, file, line)
package/math.d.ts CHANGED
@@ -23,6 +23,8 @@ export declare const floor: typeof math.floor;
23
23
  export declare const log: typeof math.log;
24
24
  export declare const max: typeof math.max;
25
25
  export declare const min: typeof math.min;
26
+ export declare const sum: (x: number, ...numbers: number[]) => number;
27
+ export declare const product: (x: number, ...numbers: number[]) => number;
26
28
  /** Returns the signum function of the argument;
27
29
  * zero if the argument is zero,
28
30
  * 1.0 if the argument is greater than zero,
package/math.lua CHANGED
@@ -39,6 +39,20 @@ ____exports.floor = math.floor
39
39
  ____exports.log = math.log
40
40
  ____exports.max = math.max
41
41
  ____exports.min = math.min
42
+ ____exports.sum = function(x, ...)
43
+ for i = 1, select("#", ...) do
44
+ local number = select(i, ...)
45
+ x = x + number
46
+ end
47
+ return x
48
+ end
49
+ ____exports.product = function(x, ...)
50
+ for i = 1, select("#", ...) do
51
+ local number = select(i, ...)
52
+ x = x * number
53
+ end
54
+ return x
55
+ end
42
56
  --- Returns the signum function of the argument;
43
57
  -- zero if the argument is zero,
44
58
  -- 1.0 if the argument is greater than zero,
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
package/network.lua CHANGED
@@ -8,6 +8,7 @@ local ____exports = {}
8
8
  local ____event = require("event")
9
9
  local TriggerEvent = ____event.TriggerEvent
10
10
  local ____exception = require("exception")
11
+ local CancellationException = ____exception.CancellationException
11
12
  local IllegalArgumentException = ____exception.IllegalArgumentException
12
13
  local ____player = require("core.types.player")
13
14
  local Player = ____player.Player
@@ -86,6 +87,9 @@ function SyncOperation.prototype.____constructor(self, player, data)
86
87
  self.l = #self.d
87
88
  end
88
89
  function SyncOperation.prototype.estimate(self)
90
+ if self.isCanceled or not self.player.isPlaying then
91
+ return __TS__Promise.reject(__TS__New(CancellationException))
92
+ end
89
93
  if self.player.isLocal then
90
94
  sendSyncData(
91
95
  "__oh",
@@ -98,6 +102,7 @@ function SyncOperation.prototype.estimate(self)
98
102
  end
99
103
  function SyncOperation.prototype.work(self)
100
104
  if self.progress >= self.maximum then
105
+ syncOperationById[self.x] = nil
101
106
  return decode(concat(self.c))
102
107
  end
103
108
  self.s = packetsPerRound
@@ -116,7 +121,18 @@ function SyncOperation.prototype.work(self)
116
121
  return __TS__New(__TS__Promise, syncPromiseExecutor)
117
122
  end
118
123
  function SyncOperation.prototype.doCancel(self)
119
- return false
124
+ if not (syncOperationById[self.x] ~= nil) then
125
+ return false
126
+ end
127
+ syncOperationById[self.x] = nil
128
+ local ____opt_1 = self.r
129
+ if ____opt_1 ~= nil then
130
+ ____opt_1(
131
+ self,
132
+ __TS__New(CancellationException)
133
+ )
134
+ end
135
+ return true
120
136
  end
121
137
  __TS__ObjectDefineProperty(
122
138
  SyncOperation,
@@ -178,6 +194,7 @@ SyncOperation._ = (function()
178
194
  local resolveWork = syncOperation.w
179
195
  if resolveWork then
180
196
  if syncOperation.progress >= syncOperation.maximum then
197
+ syncOperationById[id] = nil
181
198
  resolveWork(
182
199
  nil,
183
200
  decode(concat(chunks))
@@ -188,6 +205,13 @@ SyncOperation._ = (function()
188
205
  end
189
206
  end
190
207
  end)
208
+ Player.onLeave:addListener(function(player)
209
+ for ____, operation in pairs(syncOperationById) do
210
+ if operation.player == player then
211
+ operation:cancel()
212
+ end
213
+ end
214
+ end)
191
215
  end)()
192
216
  function ____exports.synchronize(player, data)
193
217
  return __TS__New(____exports.SyncOperation, player, data):execute()