warscript 0.0.1-dev.f566ce7 → 0.0.1-dev.f594e71

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 (185) hide show
  1. package/core/types/frame.d.ts +1 -0
  2. package/core/types/frame.lua +65 -36
  3. package/core/types/handle.lua +9 -9
  4. package/core/types/player.d.ts +2 -1
  5. package/core/types/player.lua +18 -13
  6. package/core/types/playerColor.lua +4 -3
  7. package/core/types/sound.d.ts +1 -1
  8. package/core/types/sound.lua +13 -8
  9. package/core/types/unit.d.ts +4 -0
  10. package/core/types/unit.lua +4 -0
  11. package/decl/native.d.ts +705 -7
  12. package/engine/behaviour/ability/damage.lua +11 -14
  13. package/engine/behaviour/ability.d.ts +1 -0
  14. package/engine/behaviour/ability.lua +11 -0
  15. package/engine/behaviour/unit.d.ts +1 -0
  16. package/engine/behaviour/unit.lua +1 -0
  17. package/engine/buff.d.ts +12 -10
  18. package/engine/buff.lua +64 -16
  19. package/engine/index.d.ts +2 -1
  20. package/engine/internal/ability.d.ts +4 -0
  21. package/engine/internal/ability.lua +37 -18
  22. package/engine/internal/item+owner.d.ts +1 -0
  23. package/engine/internal/item+owner.lua +7 -0
  24. package/engine/internal/item.d.ts +16 -1
  25. package/engine/internal/item.lua +130 -20
  26. package/engine/internal/unit/ability.lua +15 -3
  27. package/engine/internal/unit/appearance.d.ts +15 -0
  28. package/engine/internal/unit/appearance.lua +85 -0
  29. package/engine/internal/unit/bag.d.ts +18 -0
  30. package/engine/internal/unit/bag.lua +63 -0
  31. package/engine/internal/unit/buff.d.ts +2 -2
  32. package/engine/internal/unit/buff.lua +34 -19
  33. package/engine/internal/unit/equipment.d.ts +36 -0
  34. package/engine/internal/unit/equipment.lua +169 -0
  35. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  36. package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
  37. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  38. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  39. package/engine/internal/unit+damage.d.ts +9 -0
  40. package/engine/internal/unit+damage.lua +33 -0
  41. package/engine/internal/unit-missile-data.lua +58 -32
  42. package/engine/internal/unit.d.ts +0 -1
  43. package/engine/internal/unit.lua +2 -7
  44. package/engine/local-client.d.ts +20 -0
  45. package/engine/local-client.lua +284 -53
  46. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  47. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  48. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  49. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  50. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  51. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  52. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  53. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  54. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  55. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  56. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  57. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  58. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  59. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  60. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  61. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  62. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  63. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  64. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  65. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  66. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  67. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  68. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  69. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  70. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  71. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  72. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  73. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  74. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  75. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  76. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  77. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  78. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  79. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  80. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  81. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  82. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  83. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  84. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  85. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  86. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  87. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  88. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  89. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  90. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  91. package/engine/object-data/entry/ability-type/healing-modifier.d.ts +9 -0
  92. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  93. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  94. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  95. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  96. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  97. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  98. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  99. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  100. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  101. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  102. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  103. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  104. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  105. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  106. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  107. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  108. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  109. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  110. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  111. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  112. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  113. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  114. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  115. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  116. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  117. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  118. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  119. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  120. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  121. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  122. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  123. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  124. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  125. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  126. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  127. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  128. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  129. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  130. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  131. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  132. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  133. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  134. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  135. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  136. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  137. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  138. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  139. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  140. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  141. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  142. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  143. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  144. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  145. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  146. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  147. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  148. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  149. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  150. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  151. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  152. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  153. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  154. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  155. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  156. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  157. package/engine/object-data/entry/ability-type.d.ts +10 -3
  158. package/engine/object-data/entry/ability-type.lua +53 -0
  159. package/engine/object-data/entry/buff-type.d.ts +6 -2
  160. package/engine/object-data/entry/buff-type.lua +26 -0
  161. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  162. package/engine/object-data/entry/destructible-type.lua +26 -0
  163. package/engine/object-data/entry/item-type.d.ts +12 -3
  164. package/engine/object-data/entry/item-type.lua +52 -0
  165. package/engine/object-data/entry/lightning-type.d.ts +2 -2
  166. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  167. package/engine/object-data/entry/unit-type.d.ts +47 -2
  168. package/engine/object-data/entry/unit-type.lua +383 -49
  169. package/engine/object-data/entry/upgrade.d.ts +2 -2
  170. package/engine/object-data/entry.d.ts +4 -1
  171. package/engine/standard/entries/ability-type.d.ts +3102 -7
  172. package/engine/standard/entries/ability-type.lua +0 -6
  173. package/engine/standard/entries/item-type.d.ts +1299 -0
  174. package/engine/standard/entries/item-type.lua +2 -0
  175. package/engine/standard/entries/unit-type.d.ts +5 -0
  176. package/engine/standard/entries/unit-type.lua +5 -0
  177. package/engine/unit.d.ts +4 -1
  178. package/engine/unit.lua +4 -1
  179. package/event.d.ts +1 -1
  180. package/network.lua +25 -1
  181. package/operation.d.ts +8 -1
  182. package/operation.lua +37 -14
  183. package/package.json +2 -22
  184. package/utility/random.d.ts +102 -0
  185. package/utility/random.lua +273 -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")
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/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
@@ -55,6 +56,12 @@ function Operation.prototype.execute(self)
55
56
  local result
56
57
  local progress = self.progress
57
58
  local ____try = __TS__AsyncAwaiter(function()
59
+ if self.canceled then
60
+ error(
61
+ __TS__New(CancellationException),
62
+ 0
63
+ )
64
+ end
58
65
  local maximum = __TS__Await(self:estimate())
59
66
  self.maximum = maximum
60
67
  if maximum ~= 0 then
@@ -65,20 +72,19 @@ function Operation.prototype.execute(self)
65
72
  end
66
73
  repeat
67
74
  do
68
- if self.isCanceled then
69
- local reason = __TS__New(CancellationException)
70
- reject(nil, reason)
71
- local onFailure = ____rawget(self, "onFailure")
72
- if onFailure ~= nil then
73
- Event.invoke(onFailure, self, reason)
74
- end
75
- local onComplete = ____rawget(self, "onComplete")
76
- if onComplete ~= nil then
77
- Event.invoke(onComplete, self, false, reason)
78
- end
79
- return ____awaiter_resolve(nil)
75
+ if self.canceled then
76
+ error(
77
+ __TS__New(CancellationException),
78
+ 0
79
+ )
80
80
  end
81
81
  result = __TS__Await(self:work())
82
+ if self.canceled then
83
+ error(
84
+ __TS__New(CancellationException),
85
+ 0
86
+ )
87
+ end
82
88
  if self.progress ~= progress or self.maximum ~= maximum then
83
89
  progress = self.progress
84
90
  maximum = self.maximum
@@ -93,6 +99,7 @@ function Operation.prototype.execute(self)
93
99
  __TS__Await(____try.catch(
94
100
  ____try,
95
101
  function(____, reason)
102
+ self.settled = true
96
103
  reject(nil, reason)
97
104
  local onFailure = ____rawget(self, "onFailure")
98
105
  if onFailure ~= nil then
@@ -105,6 +112,7 @@ function Operation.prototype.execute(self)
105
112
  return ____awaiter_resolve(nil)
106
113
  end
107
114
  ))
115
+ self.settled = true
108
116
  resolve(nil, result)
109
117
  local onSuccess = ____rawget(self, "onSuccess")
110
118
  if onSuccess ~= nil then
@@ -119,12 +127,27 @@ function Operation.prototype.execute(self)
119
127
  )
120
128
  end
121
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
122
137
  if self:doCancel() then
123
- self.isCanceled = true
124
138
  return true
125
139
  end
140
+ self.canceled = false
126
141
  return false
127
142
  end
143
+ __TS__SetDescriptor(
144
+ Operation.prototype,
145
+ "isCanceled",
146
+ {get = function(self)
147
+ return self.canceled
148
+ end},
149
+ true
150
+ )
128
151
  __TS__SetDescriptor(
129
152
  Operation.prototype,
130
153
  "isStarted",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "warscript",
4
- "version": "0.0.1-dev.f566ce7",
4
+ "version": "0.0.1-dev.f594e71",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",
@@ -13,31 +13,11 @@
13
13
  "type": "git",
14
14
  "url": "git+https://github.com/rhazarian/warscript.git"
15
15
  },
16
- "scripts": {
17
- "clean": "rimraf dist",
18
- "prebuild": "npm run clean",
19
- "build": "tstl && copyfiles -u 1 \"src/**/*.d.ts\" \"src/**/*.lua\" dist && copyfiles LICENSE package.json dist",
20
- "prepublishOnly": "echo You should run 'npm run publish' instead. && exit 1",
21
- "publish": "npm run build && npm publish ./dist --ignore-scripts"
22
- },
23
16
  "peerDependencies": {
24
17
  "@warscript/language-extensions": "^0.0.1",
25
18
  "@warscript/tstl-plugin": "^0.0.6",
26
19
  "lua-types": "^2.13.1",
27
- "warpack": "0.0.1-dev.e490aaf"
28
- },
29
- "devDependencies": {
30
- "@typescript-eslint/eslint-plugin": "^8.61.1",
31
- "@typescript-eslint/parser": "^8.61.1",
32
- "async": "^3.2.6",
33
- "copyfiles": "^2.4.1",
34
- "eslint": "^9.14.0",
35
- "eslint-config-prettier": "^9.1.0",
36
- "eslint-plugin-prettier": "^5.2.1",
37
- "prettier": "^3.3.3",
38
- "rimraf": "^6.0.1",
39
- "ts-node": "^10.9.2",
40
- "tsc-watch": "^6.2.0"
20
+ "warpack": "github:rhazarian/warpack#release"
41
21
  },
42
22
  "publishConfig": {
43
23
  "access": "public",
@@ -0,0 +1,102 @@
1
+ /** @noSelfInFile */
2
+ import { ReadonlyNonEmptyArray } from "./types";
3
+ /**
4
+ * A client-local pseudorandom generator that is safe to advance inside a local block.
5
+ *
6
+ * Instances are independent of each other and of the game's synchronous randomness.
7
+ */
8
+ export declare class AsyncRandom {
9
+ private a;
10
+ private b;
11
+ private c;
12
+ private d;
13
+ /**
14
+ * Creates a generator seeded with the given `seed`,
15
+ * or with client-local entropy if no seed is given.
16
+ */
17
+ constructor(seed?: number);
18
+ /** Resets the generator to the state defined by the given `seed`. */
19
+ setSeed(seed: number): void;
20
+ /**
21
+ * Folds freshly gathered client-local entropy, optionally together with the given `value`,
22
+ * into the current state.
23
+ *
24
+ * Useful to make streams of different clients diverge even further, e.g. by mixing in values
25
+ * that are local by definition, such as the local player's id or the local mouse position.
26
+ */
27
+ addEntropy(value?: number | string): void;
28
+ /** Advances the state and returns the next 32-bit word. */
29
+ private next;
30
+ /** Returns a uniformly distributed value in `[0, bound)`, where `bound` is in `[1, 2^32]`. */
31
+ private nextBounded;
32
+ /** Returns the given amount (`0` to `32`) of random bits as a non-negative integer. */
33
+ nextBits(bitCount: number): number;
34
+ /**
35
+ * Returns a uniformly distributed integer, both bounds being inclusive:
36
+ * in `[0, upperBound]` when called with a single bound, in `[lowerBound, upperBound]` otherwise.
37
+ */
38
+ nextInteger(upperBound?: number): number;
39
+ nextInteger(lowerBound: number, upperBound: number): number;
40
+ /**
41
+ * Returns a uniformly distributed float with 53 bits of precision, the upper bound being
42
+ * exclusive: in `[0, upperBound)` when called with a single bound,
43
+ * in `[lowerBound, upperBound)` otherwise.
44
+ */
45
+ nextFloat(upperBound?: number): number;
46
+ nextFloat(lowerBound: number, upperBound: number): number;
47
+ /** Returns `true` with the given `probability`, or with a probability of one half by default. */
48
+ nextBoolean(probability?: number): boolean;
49
+ /** Returns a uniformly distributed angle in degrees, in `[0, 360)`. */
50
+ nextAngle(): number;
51
+ /** Returns a uniformly distributed point within `range` of the given center. */
52
+ nextXY(centerX: number, centerY: number, range: number): LuaMultiReturn<[x: number, y: number]>;
53
+ /** Returns a uniformly distributed element of the given `array`. */
54
+ nextElement<T>(array: ReadonlyNonEmptyArray<T>): T;
55
+ nextElement<T>(array: ReadonlyArray<T>): T | undefined;
56
+ /** Returns a uniformly distributed one of the given `elements`. */
57
+ nextOf<T>(element: T, ...elements: T[]): T;
58
+ nextOf<T>(...elements: T[]): T | undefined;
59
+ /** Shuffles the given `array` in place, each permutation being equally likely. */
60
+ shuffle(array: unknown[]): void;
61
+ }
62
+ /**
63
+ * Folds freshly gathered client-local entropy, optionally together with the given `value`,
64
+ * into the state of the generator backing the `asyncRandom*` functions.
65
+ */
66
+ export declare const addAsyncRandomEntropy: (value?: number | string) => void;
67
+ /** Returns the given amount (`0` to `32`) of random bits as a non-negative integer. */
68
+ export declare const asyncRandomBits: (bitCount: number) => number;
69
+ /**
70
+ * Returns a uniformly distributed integer, both bounds being inclusive:
71
+ * in `[0, upperBound]` when called with a single bound, in `[lowerBound, upperBound]` otherwise.
72
+ */
73
+ export declare const asyncRandomInteger: {
74
+ (upperBound?: number): number;
75
+ (lowerBound: number, upperBound: number): number;
76
+ };
77
+ /**
78
+ * Returns a uniformly distributed float with 53 bits of precision, the upper bound being exclusive:
79
+ * in `[0, upperBound)` when called with a single bound, in `[lowerBound, upperBound)` otherwise.
80
+ */
81
+ export declare const asyncRandomFloat: {
82
+ (upperBound?: number): number;
83
+ (lowerBound: number, upperBound: number): number;
84
+ };
85
+ /** Returns `true` with the given `probability`, or with a probability of one half by default. */
86
+ export declare const asyncRandomBoolean: (probability?: number) => boolean;
87
+ /** Returns a uniformly distributed angle in degrees, in `[0, 360)`. */
88
+ export declare const asyncRandomAngle: () => number;
89
+ /** Returns a uniformly distributed point within `range` of the given center. */
90
+ export declare const asyncRandomXY: (centerX: number, centerY: number, range: number) => LuaMultiReturn<[x: number, y: number]>;
91
+ /** Returns a uniformly distributed element of the given `array`. */
92
+ export declare const asyncRandomElement: {
93
+ <T>(array: ReadonlyNonEmptyArray<T>): T;
94
+ <T>(array: ReadonlyArray<T>): T | undefined;
95
+ };
96
+ /** Returns a uniformly distributed one of the given `elements`. */
97
+ export declare const asyncRandom: {
98
+ <T>(element: T, ...elements: T[]): T;
99
+ <T>(...elements: T[]): T | undefined;
100
+ };
101
+ /** Shuffles the given `array` in place, each permutation being equally likely. */
102
+ export declare const asyncShuffle: (array: unknown[]) => void;