warscript 0.0.1-dev.697548e → 0.0.1-dev.69b6655

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 (203) hide show
  1. package/core/types/frame.d.ts +1 -0
  2. package/core/types/frame.lua +112 -37
  3. package/core/types/handle.lua +6 -9
  4. package/core/types/item.d.ts +1 -0
  5. package/core/types/item.lua +1 -0
  6. package/core/types/player.d.ts +2 -1
  7. package/core/types/player.lua +18 -13
  8. package/core/types/playerColor.lua +4 -3
  9. package/core/types/sound.d.ts +1 -1
  10. package/core/types/sound.lua +13 -8
  11. package/core/types/unit.d.ts +4 -0
  12. package/core/types/unit.lua +4 -0
  13. package/decl/native.d.ts +705 -7
  14. package/engine/behaviour/ability/damage.lua +11 -14
  15. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  16. package/engine/behaviour/ability.d.ts +1 -0
  17. package/engine/behaviour/ability.lua +11 -0
  18. package/engine/behaviour/unit.d.ts +1 -0
  19. package/engine/behaviour/unit.lua +1 -0
  20. package/engine/buff.d.ts +13 -10
  21. package/engine/buff.lua +66 -17
  22. package/engine/index.d.ts +2 -1
  23. package/engine/internal/ability.d.ts +4 -0
  24. package/engine/internal/ability.lua +52 -33
  25. package/engine/internal/item/fields.d.ts +12 -0
  26. package/engine/internal/item/fields.lua +33 -0
  27. package/engine/internal/item+owner.d.ts +1 -0
  28. package/engine/internal/item+owner.lua +7 -0
  29. package/engine/internal/item.d.ts +16 -5
  30. package/engine/internal/item.lua +130 -57
  31. package/engine/internal/unit/ability.lua +15 -3
  32. package/engine/internal/unit/appearance.d.ts +15 -0
  33. package/engine/internal/unit/appearance.lua +85 -0
  34. package/engine/internal/unit/bag.d.ts +18 -0
  35. package/engine/internal/unit/bag.lua +63 -0
  36. package/engine/internal/unit/buff.d.ts +2 -2
  37. package/engine/internal/unit/buff.lua +34 -19
  38. package/engine/internal/unit/equipment.d.ts +36 -0
  39. package/engine/internal/unit/equipment.lua +169 -0
  40. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  41. package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
  42. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  43. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  44. package/engine/internal/unit+damage.d.ts +9 -0
  45. package/engine/internal/unit+damage.lua +33 -0
  46. package/engine/internal/unit-missile-data.lua +58 -32
  47. package/engine/internal/unit.d.ts +0 -1
  48. package/engine/internal/unit.lua +2 -7
  49. package/engine/local-client.d.ts +25 -0
  50. package/engine/local-client.lua +364 -54
  51. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  52. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  53. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  54. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  55. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  56. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  57. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  58. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  59. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  60. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  61. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  62. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  63. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  64. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  65. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  66. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  67. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  68. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  69. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  70. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  71. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  72. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  73. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  74. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  75. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  76. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  77. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  78. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  79. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  80. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  81. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  82. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  83. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  84. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  85. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  86. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  87. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  88. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  89. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  90. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  91. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  92. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  93. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  94. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  95. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  96. package/engine/object-data/entry/ability-type/healing-modifier.d.ts +9 -0
  97. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  98. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  99. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  100. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  101. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  102. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  103. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  104. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  105. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  106. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  107. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  108. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  109. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  110. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  111. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  112. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  113. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  114. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  115. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  116. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  117. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  118. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  119. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  120. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  121. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  122. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  123. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  124. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  125. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  126. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  127. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  128. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  129. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  130. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  131. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  132. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  133. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  134. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  135. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  136. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  137. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  138. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  139. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  140. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  141. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  142. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  143. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  144. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  145. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  146. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  147. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  148. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  149. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  150. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  151. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  152. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  153. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  154. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  155. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  156. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  157. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  158. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  159. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  160. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  161. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  162. package/engine/object-data/entry/ability-type.d.ts +10 -3
  163. package/engine/object-data/entry/ability-type.lua +53 -0
  164. package/engine/object-data/entry/buff-type.d.ts +6 -2
  165. package/engine/object-data/entry/buff-type.lua +26 -0
  166. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  167. package/engine/object-data/entry/destructible-type.lua +26 -0
  168. package/engine/object-data/entry/item-type.d.ts +12 -3
  169. package/engine/object-data/entry/item-type.lua +52 -0
  170. package/engine/object-data/entry/lightning-type.d.ts +2 -2
  171. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  172. package/engine/object-data/entry/unit-type.d.ts +47 -2
  173. package/engine/object-data/entry/unit-type.lua +383 -49
  174. package/engine/object-data/entry/upgrade.d.ts +2 -2
  175. package/engine/object-data/entry.d.ts +4 -1
  176. package/engine/object-field/item.d.ts +22 -0
  177. package/engine/object-field/item.lua +118 -0
  178. package/engine/standard/entries/ability-type.d.ts +3102 -7
  179. package/engine/standard/entries/ability-type.lua +0 -6
  180. package/engine/standard/entries/item-type.d.ts +1299 -0
  181. package/engine/standard/entries/item-type.lua +2 -0
  182. package/engine/standard/entries/unit-type.d.ts +5 -0
  183. package/engine/standard/entries/unit-type.lua +5 -0
  184. package/engine/standard/fields/item.d.ts +4 -0
  185. package/engine/standard/fields/item.lua +6 -0
  186. package/engine/unit.d.ts +4 -1
  187. package/engine/unit.lua +4 -1
  188. package/event.d.ts +1 -1
  189. package/lualib_bundle.lua +46 -117
  190. package/math.d.ts +2 -0
  191. package/math.lua +14 -0
  192. package/network.lua +25 -1
  193. package/operation.d.ts +8 -1
  194. package/operation.lua +49 -35
  195. package/package.json +3 -23
  196. package/utility/linked-map.d.ts +2 -1
  197. package/utility/linked-map.lua +6 -0
  198. package/utility/linked-set.d.ts +1 -0
  199. package/utility/linked-set.lua +6 -0
  200. package/utility/random.d.ts +102 -0
  201. package/utility/random.lua +273 -0
  202. package/utility/unordered-map.d.ts +27 -0
  203. package/utility/unordered-map.lua +99 -0
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports
@@ -15,6 +15,7 @@ export declare const MOUNTAIN_KING_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
15
15
  export declare const PALADIN_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
16
16
  export declare const ARCHER_HIGH_ELF_UNIT_TYPE_ID: StandardUnitTypeId;
17
17
  export declare const CAPTAIN_UNIT_TYPE_ID: StandardUnitTypeId;
18
+ export declare const CHAPLAIN_UNIT_TYPE_ID: StandardUnitTypeId;
18
19
  export declare const SWORDSMAN_UNIT_TYPE_ID: StandardUnitTypeId;
19
20
  export declare const ADMIRAL_PROUDMOORE_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
20
21
  export declare const ANASTERIAN_SUNSTRIDER_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
@@ -47,6 +48,7 @@ export declare const SPIRIT_WALKER_UNIT_TYPE_ID: StandardUnitTypeId;
47
48
  export declare const TAUREN_UNIT_TYPE_ID: StandardUnitTypeId;
48
49
  export declare const WIND_RIDER_UNIT_TYPE_ID: StandardUnitTypeId;
49
50
  export declare const WITCH_DOCTOR_UNIT_TYPE_ID: StandardUnitTypeId;
51
+ export declare const BLADEMASTER_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
50
52
  export declare const ARCHER_UNIT_TYPE_ID: StandardUnitTypeId;
51
53
  export declare const CHIMAERA_UNIT_TYPE_ID: StandardUnitTypeId;
52
54
  export declare const DRUID_OF_THE_CLAW_UNIT_TYPE_ID: StandardUnitTypeId;
@@ -67,9 +69,11 @@ export declare const DEMON_HUNTER_DEMON_FORM_HERO_UNIT_TYPE_ID: StandardHeroUnit
67
69
  export declare const ABOMINATION_UNIT_TYPE_ID: StandardUnitTypeId;
68
70
  export declare const GHOUL_UNIT_TYPE_ID: StandardUnitTypeId;
69
71
  export declare const DEATH_KNIGHT_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
72
+ export declare const DREADLORD_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
70
73
  export declare const ZOMBIE_UNIT_TYPE_ID: StandardUnitTypeId;
71
74
  export declare const ZOMBIE_FEMALE_UNIT_TYPE_ID: StandardUnitTypeId;
72
75
  export declare const ARTHAS_EVIL_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
76
+ export declare const MAL_GANIS_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
73
77
  export declare const DIRE_MAMMOTH_UNIT_TYPE_ID: StandardUnitTypeId;
74
78
  export declare const ELDER_JUNGLE_STALKER_UNIT_TYPE_ID: StandardUnitTypeId;
75
79
  export declare const ENRAGED_ELEMENTAL_UNIT_TYPE_ID: StandardUnitTypeId;
@@ -98,6 +102,7 @@ export declare const WENDIGO_UNIT_TYPE_ID: StandardUnitTypeId;
98
102
  export declare const WENDIGO_SHAMAN_UNIT_TYPE_ID: StandardUnitTypeId;
99
103
  export declare const WILDKIN_UNIT_TYPE_ID: StandardUnitTypeId;
100
104
  export declare const WRAITH_UNIT_TYPE_ID: StandardUnitTypeId;
105
+ export declare const PIT_LORD_HERO_UNIT_TYPE_ID: StandardHeroUnitTypeId;
101
106
  export declare const GOBLIN_LAND_MINE_UNIT_TYPE_ID: StandardUnitTypeId;
102
107
  export declare const CIRCLE_OF_POWER_UNIT_TYPE_ID: StandardUnitTypeId;
103
108
  export declare const CIRCLE_OF_POWER_MEDIUM_UNIT_TYPE_ID: StandardUnitTypeId;
@@ -14,6 +14,7 @@ ____exports.MOUNTAIN_KING_HERO_UNIT_TYPE_ID = fourCC("Hmkg")
14
14
  ____exports.PALADIN_HERO_UNIT_TYPE_ID = fourCC("Hpal")
15
15
  ____exports.ARCHER_HIGH_ELF_UNIT_TYPE_ID = fourCC("nhea")
16
16
  ____exports.CAPTAIN_UNIT_TYPE_ID = fourCC("hcth")
17
+ ____exports.CHAPLAIN_UNIT_TYPE_ID = fourCC("nchp")
17
18
  ____exports.SWORDSMAN_UNIT_TYPE_ID = fourCC("hhes")
18
19
  ____exports.ADMIRAL_PROUDMOORE_HERO_UNIT_TYPE_ID = fourCC("Hapm")
19
20
  ____exports.ANASTERIAN_SUNSTRIDER_HERO_UNIT_TYPE_ID = fourCC("Hssa")
@@ -46,6 +47,7 @@ ____exports.SPIRIT_WALKER_UNIT_TYPE_ID = fourCC("ospw")
46
47
  ____exports.TAUREN_UNIT_TYPE_ID = fourCC("otau")
47
48
  ____exports.WIND_RIDER_UNIT_TYPE_ID = fourCC("owyv")
48
49
  ____exports.WITCH_DOCTOR_UNIT_TYPE_ID = fourCC("odoc")
50
+ ____exports.BLADEMASTER_HERO_UNIT_TYPE_ID = fourCC("Obla")
49
51
  ____exports.ARCHER_UNIT_TYPE_ID = fourCC("earc")
50
52
  ____exports.CHIMAERA_UNIT_TYPE_ID = fourCC("echm")
51
53
  ____exports.DRUID_OF_THE_CLAW_UNIT_TYPE_ID = fourCC("edoc")
@@ -66,9 +68,11 @@ ____exports.DEMON_HUNTER_DEMON_FORM_HERO_UNIT_TYPE_ID = fourCC("Edmm")
66
68
  ____exports.ABOMINATION_UNIT_TYPE_ID = fourCC("uabo")
67
69
  ____exports.GHOUL_UNIT_TYPE_ID = fourCC("ugho")
68
70
  ____exports.DEATH_KNIGHT_HERO_UNIT_TYPE_ID = fourCC("Udea")
71
+ ____exports.DREADLORD_HERO_UNIT_TYPE_ID = fourCC("Udre")
69
72
  ____exports.ZOMBIE_UNIT_TYPE_ID = fourCC("nzom")
70
73
  ____exports.ZOMBIE_FEMALE_UNIT_TYPE_ID = fourCC("nzof")
71
74
  ____exports.ARTHAS_EVIL_HERO_UNIT_TYPE_ID = fourCC("Uear")
75
+ ____exports.MAL_GANIS_HERO_UNIT_TYPE_ID = fourCC("Umal")
72
76
  ____exports.DIRE_MAMMOTH_UNIT_TYPE_ID = fourCC("nmdr")
73
77
  ____exports.ELDER_JUNGLE_STALKER_UNIT_TYPE_ID = fourCC("njga")
74
78
  ____exports.ENRAGED_ELEMENTAL_UNIT_TYPE_ID = fourCC("nele")
@@ -97,6 +101,7 @@ ____exports.WENDIGO_UNIT_TYPE_ID = fourCC("nwen")
97
101
  ____exports.WENDIGO_SHAMAN_UNIT_TYPE_ID = fourCC("nwns")
98
102
  ____exports.WILDKIN_UNIT_TYPE_ID = fourCC("nowb")
99
103
  ____exports.WRAITH_UNIT_TYPE_ID = fourCC("ngh2")
104
+ ____exports.PIT_LORD_HERO_UNIT_TYPE_ID = fourCC("Nplh")
100
105
  ____exports.GOBLIN_LAND_MINE_UNIT_TYPE_ID = fourCC("nglm")
101
106
  ____exports.CIRCLE_OF_POWER_UNIT_TYPE_ID = fourCC("ncop")
102
107
  ____exports.CIRCLE_OF_POWER_MEDIUM_UNIT_TYPE_ID = fourCC("ncp2")
@@ -0,0 +1,4 @@
1
+ /** @noSelfInFile */
2
+ import { ItemBooleanField } from "../../object-field/item";
3
+ export declare const CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD: ItemBooleanField & symbol;
4
+ export declare const IS_ACTIVELY_USED_ITEM_FIELD: ItemBooleanField & symbol;
@@ -0,0 +1,6 @@
1
+ local ____exports = {}
2
+ local ____item = require("engine.object-field.item")
3
+ local ItemBooleanField = ____item.ItemBooleanField
4
+ ____exports.CAN_BE_SOLD_TO_MERCHANTS_ITEM_FIELD = ItemBooleanField:create(fourCC("ipaw"))
5
+ ____exports.IS_ACTIVELY_USED_ITEM_FIELD = ItemBooleanField:create(fourCC("iusa"))
6
+ return ____exports
package/engine/unit.d.ts CHANGED
@@ -2,10 +2,13 @@
2
2
  import "./internal/unit";
3
3
  import "./internal/unit/order";
4
4
  import "./internal/unit/ability";
5
+ import "./internal/unit/appearance";
6
+ import "./internal/unit/bag";
7
+ import "./internal/unit/equipment";
5
8
  import "./internal/unit/allowed-targets";
6
9
  import "./internal/unit/buff";
7
10
  import "./internal/unit/expiration-timer";
8
- import "./internal/unit/item";
11
+ import "./internal/unit/inventory";
9
12
  import "./internal/unit+ability";
10
13
  import "./internal/unit+damage";
11
14
  import "./internal/unit+rally";
package/engine/unit.lua CHANGED
@@ -2,10 +2,13 @@ local ____exports = {}
2
2
  require("engine.internal.unit")
3
3
  require("engine.internal.unit.order")
4
4
  require("engine.internal.unit.ability")
5
+ require("engine.internal.unit.appearance")
6
+ require("engine.internal.unit.bag")
7
+ require("engine.internal.unit.equipment")
5
8
  require("engine.internal.unit.allowed-targets")
6
9
  require("engine.internal.unit.buff")
7
10
  require("engine.internal.unit.expiration-timer")
8
- require("engine.internal.unit.item")
11
+ require("engine.internal.unit.inventory")
9
12
  require("engine.internal.unit+ability")
10
13
  require("engine.internal.unit+damage")
11
14
  require("engine.internal.unit+rally")
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
@@ -653,6 +653,7 @@ do
653
653
  self.state = 0
654
654
  self.fulfilledCallbacks = {}
655
655
  self.rejectedCallbacks = {}
656
+ self.finallyCallbacks = {}
656
657
  local success, ____error = ____pcall(
657
658
  executor,
658
659
  nil,
@@ -702,40 +703,14 @@ do
702
703
  return self["then"](self, nil, onRejected)
703
704
  end
704
705
  function __TS__Promise.prototype.finally(self, onFinally)
705
- if type(onFinally) ~= "function" then
706
- return self["then"](self, onFinally, onFinally)
707
- end
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
- )
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)
737
711
  end
738
- )
712
+ end
713
+ return self
739
714
  end
740
715
  function __TS__Promise.prototype.resolve(self, value)
741
716
  if isPromiseLike(value) then
@@ -759,11 +734,22 @@ do
759
734
  end
760
735
  function __TS__Promise.prototype.invokeCallbacks(self, callbacks, value)
761
736
  local callbacksLength = #callbacks
737
+ local finallyCallbacks = self.finallyCallbacks
738
+ local finallyCallbacksLength = #finallyCallbacks
762
739
  if callbacksLength ~= 0 then
763
740
  for i = 1, callbacksLength - 1 do
764
741
  callbacks[i](callbacks, value)
765
742
  end
766
- return callbacks[callbacksLength](callbacks, value)
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)
767
753
  end
768
754
  end
769
755
  function __TS__Promise.prototype.createPromiseResolvingCallback(self, f, resolve, reject)
@@ -918,10 +904,8 @@ local function __TS__ObjectAssign(target, ...)
918
904
  local sources = {...}
919
905
  for i = 1, #sources do
920
906
  local source = sources[i]
921
- if type(source) == "table" then
922
- for key in pairs(source) do
923
- target[key] = source[key]
924
- end
907
+ for key in pairs(source) do
908
+ target[key] = source[key]
925
909
  end
926
910
  end
927
911
  return target
@@ -1027,13 +1011,6 @@ do
1027
1011
  metatable = {}
1028
1012
  setmetatable(target, metatable)
1029
1013
  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
1037
1014
  local value = rawget(target, key)
1038
1015
  if value ~= nil then
1039
1016
  rawset(target, key, nil)
@@ -1406,70 +1383,46 @@ do
1406
1383
  return self:entries()
1407
1384
  end
1408
1385
  function Map.prototype.entries(self)
1409
- local function getFirstKey()
1410
- return self.firstKey
1411
- end
1412
1386
  local items = self.items
1413
1387
  local nextKey = self.nextKey
1414
- local key
1415
- local started = false
1388
+ local key = self.firstKey
1416
1389
  return {
1417
1390
  [Symbol.iterator] = function(self)
1418
1391
  return self
1419
1392
  end,
1420
1393
  next = function(self)
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]}}
1394
+ local result = {done = not key, value = {key, items[key]}}
1395
+ key = nextKey[key]
1396
+ return result
1428
1397
  end
1429
1398
  }
1430
1399
  end
1431
1400
  function Map.prototype.keys(self)
1432
- local function getFirstKey()
1433
- return self.firstKey
1434
- end
1435
1401
  local nextKey = self.nextKey
1436
- local key
1437
- local started = false
1402
+ local key = self.firstKey
1438
1403
  return {
1439
1404
  [Symbol.iterator] = function(self)
1440
1405
  return self
1441
1406
  end,
1442
1407
  next = function(self)
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}
1408
+ local result = {done = not key, value = key}
1409
+ key = nextKey[key]
1410
+ return result
1450
1411
  end
1451
1412
  }
1452
1413
  end
1453
1414
  function Map.prototype.values(self)
1454
- local function getFirstKey()
1455
- return self.firstKey
1456
- end
1457
1415
  local items = self.items
1458
1416
  local nextKey = self.nextKey
1459
- local key
1460
- local started = false
1417
+ local key = self.firstKey
1461
1418
  return {
1462
1419
  [Symbol.iterator] = function(self)
1463
1420
  return self
1464
1421
  end,
1465
1422
  next = function(self)
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]}
1423
+ local result = {done = not key, value = items[key]}
1424
+ key = nextKey[key]
1425
+ return result
1473
1426
  end
1474
1427
  }
1475
1428
  end
@@ -2046,68 +1999,44 @@ do
2046
1999
  return self:values()
2047
2000
  end
2048
2001
  function Set.prototype.entries(self)
2049
- local function getFirstKey()
2050
- return self.firstKey
2051
- end
2052
2002
  local nextKey = self.nextKey
2053
- local key
2054
- local started = false
2003
+ local key = self.firstKey
2055
2004
  return {
2056
2005
  [Symbol.iterator] = function(self)
2057
2006
  return self
2058
2007
  end,
2059
2008
  next = function(self)
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}}
2009
+ local result = {done = not key, value = {key, key}}
2010
+ key = nextKey[key]
2011
+ return result
2067
2012
  end
2068
2013
  }
2069
2014
  end
2070
2015
  function Set.prototype.keys(self)
2071
- local function getFirstKey()
2072
- return self.firstKey
2073
- end
2074
2016
  local nextKey = self.nextKey
2075
- local key
2076
- local started = false
2017
+ local key = self.firstKey
2077
2018
  return {
2078
2019
  [Symbol.iterator] = function(self)
2079
2020
  return self
2080
2021
  end,
2081
2022
  next = function(self)
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}
2023
+ local result = {done = not key, value = key}
2024
+ key = nextKey[key]
2025
+ return result
2089
2026
  end
2090
2027
  }
2091
2028
  end
2092
2029
  function Set.prototype.values(self)
2093
- local function getFirstKey()
2094
- return self.firstKey
2095
- end
2096
2030
  local nextKey = self.nextKey
2097
- local key
2098
- local started = false
2031
+ local key = self.firstKey
2099
2032
  return {
2100
2033
  [Symbol.iterator] = function(self)
2101
2034
  return self
2102
2035
  end,
2103
2036
  next = function(self)
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}
2037
+ local result = {done = not key, value = key}
2038
+ key = nextKey[key]
2039
+ return result
2111
2040
  end
2112
2041
  }
2113
2042
  end
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/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()
package/operation.d.ts CHANGED
@@ -16,9 +16,11 @@ export { OperationContinue };
16
16
  export declare abstract class Operation<T> {
17
17
  protected constructor();
18
18
  private started;
19
+ private settled;
20
+ private canceled;
19
21
  protected progress: number;
20
22
  protected maximum: number;
21
- isCanceled: boolean;
23
+ get isCanceled(): boolean;
22
24
  get isStarted(): boolean;
23
25
  execute(): OperationMonitor<T>;
24
26
  protected abstract estimate(): number | Promise<number>;
@@ -30,6 +32,11 @@ export declare abstract class Operation<T> {
30
32
  ...result: [success: true, result: T] | [success: false, reason?: any]
31
33
  ]>;
32
34
  get onProgress(): Event<[operation: Operation<T>]>;
35
+ /**
36
+ * Invoked with `isCanceled` already set. Should unblock any pending `estimate`/`work` promise
37
+ * (e.g. by rejecting it) and return whether cancellation is possible; on `false` the canceled
38
+ * state is reverted.
39
+ */
33
40
  protected abstract doCancel(): boolean;
34
41
  cancel(): boolean;
35
42
  }
package/operation.lua CHANGED
@@ -35,9 +35,10 @@ local Operation = ____exports.Operation
35
35
  Operation.name = "Operation"
36
36
  function Operation.prototype.____constructor(self)
37
37
  self.started = false
38
+ self.settled = false
39
+ self.canceled = false
38
40
  self.progress = 0
39
41
  self.maximum = 0
40
- self.isCanceled = false
41
42
  end
42
43
  function Operation.prototype.execute(self)
43
44
  if self.started then
@@ -54,8 +55,13 @@ function Operation.prototype.execute(self)
54
55
  return __TS__AsyncAwaiter(function(____awaiter_resolve)
55
56
  local result
56
57
  local progress = self.progress
57
- local ____hasReturned, ____returnValue
58
58
  local ____try = __TS__AsyncAwaiter(function()
59
+ if self.canceled then
60
+ error(
61
+ __TS__New(CancellationException),
62
+ 0
63
+ )
64
+ end
59
65
  local maximum = __TS__Await(self:estimate())
60
66
  self.maximum = maximum
61
67
  if maximum ~= 0 then
@@ -66,21 +72,19 @@ function Operation.prototype.execute(self)
66
72
  end
67
73
  repeat
68
74
  do
69
- if self.isCanceled then
70
- local reason = __TS__New(CancellationException)
71
- reject(nil, reason)
72
- local onFailure = ____rawget(self, "onFailure")
73
- if onFailure ~= nil then
74
- Event.invoke(onFailure, self, reason)
75
- end
76
- local onComplete = ____rawget(self, "onComplete")
77
- if onComplete ~= nil then
78
- Event.invoke(onComplete, self, false, reason)
79
- end
80
- ____hasReturned = true
81
- return
75
+ if self.canceled then
76
+ error(
77
+ __TS__New(CancellationException),
78
+ 0
79
+ )
82
80
  end
83
81
  result = __TS__Await(self:work())
82
+ if self.canceled then
83
+ error(
84
+ __TS__New(CancellationException),
85
+ 0
86
+ )
87
+ end
84
88
  if self.progress ~= progress or self.maximum ~= maximum then
85
89
  progress = self.progress
86
90
  maximum = self.maximum
@@ -92,28 +96,23 @@ function Operation.prototype.execute(self)
92
96
  end
93
97
  until not (result == OperationContinue)
94
98
  end)
95
- ____try = ____try.catch(
99
+ __TS__Await(____try.catch(
96
100
  ____try,
97
101
  function(____, reason)
98
- return __TS__AsyncAwaiter(function()
99
- reject(nil, reason)
100
- local onFailure = ____rawget(self, "onFailure")
101
- if onFailure ~= nil then
102
- Event.invoke(onFailure, self, reason)
103
- end
104
- local onComplete = ____rawget(self, "onComplete")
105
- if onComplete ~= nil then
106
- Event.invoke(onComplete, self, false, reason)
107
- end
108
- ____hasReturned = true
109
- return
110
- end)
102
+ self.settled = true
103
+ reject(nil, reason)
104
+ local onFailure = ____rawget(self, "onFailure")
105
+ if onFailure ~= nil then
106
+ Event.invoke(onFailure, self, reason)
107
+ end
108
+ local onComplete = ____rawget(self, "onComplete")
109
+ if onComplete ~= nil then
110
+ Event.invoke(onComplete, self, false, reason)
111
+ end
112
+ return ____awaiter_resolve(nil)
111
113
  end
112
- )
113
- __TS__Await(____try)
114
- if ____hasReturned then
115
- return ____awaiter_resolve(nil, ____returnValue)
116
- end
114
+ ))
115
+ self.settled = true
117
116
  resolve(nil, result)
118
117
  local onSuccess = ____rawget(self, "onSuccess")
119
118
  if onSuccess ~= nil then
@@ -128,12 +127,27 @@ function Operation.prototype.execute(self)
128
127
  )
129
128
  end
130
129
  function Operation.prototype.cancel(self)
130
+ if self.canceled then
131
+ return true
132
+ end
133
+ if self.settled then
134
+ return false
135
+ end
136
+ self.canceled = true
131
137
  if self:doCancel() then
132
- self.isCanceled = true
133
138
  return true
134
139
  end
140
+ self.canceled = false
135
141
  return false
136
142
  end
143
+ __TS__SetDescriptor(
144
+ Operation.prototype,
145
+ "isCanceled",
146
+ {get = function(self)
147
+ return self.canceled
148
+ end},
149
+ true
150
+ )
137
151
  __TS__SetDescriptor(
138
152
  Operation.prototype,
139
153
  "isStarted",