warscript 0.0.1-dev.671d3cf → 0.0.1-dev.685e1bc

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 (266) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/config.d.ts +5 -0
  4. package/config.lua +10 -0
  5. package/core/types/effect.d.ts +14 -6
  6. package/core/types/effect.lua +131 -35
  7. package/core/types/frame.d.ts +4 -0
  8. package/core/types/frame.lua +142 -22
  9. package/core/types/item.d.ts +1 -0
  10. package/core/types/item.lua +1 -0
  11. package/core/types/player.d.ts +17 -1
  12. package/core/types/player.lua +70 -24
  13. package/core/types/playerCamera.d.ts +2 -0
  14. package/core/types/playerCamera.lua +123 -5
  15. package/core/types/sound.d.ts +17 -24
  16. package/core/types/sound.lua +100 -25
  17. package/core/types/tileCell.d.ts +11 -1
  18. package/core/types/tileCell.lua +97 -0
  19. package/core/types/timer.d.ts +9 -8
  20. package/core/types/timer.lua +45 -23
  21. package/core/util.d.ts +1 -1
  22. package/core/util.lua +18 -1
  23. package/decl/native.d.ts +846 -790
  24. package/destroyable.d.ts +1 -0
  25. package/destroyable.lua +9 -0
  26. package/engine/behavior.d.ts +16 -3
  27. package/engine/behavior.lua +233 -73
  28. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  29. package/engine/behaviour/ability/always-enabled.lua +31 -0
  30. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  31. package/engine/behaviour/ability/apply-buff.lua +36 -4
  32. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  33. package/engine/behaviour/ability/damage.d.ts +12 -3
  34. package/engine/behaviour/ability/damage.lua +33 -39
  35. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  36. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  37. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  38. package/engine/behaviour/ability/instant-impact.lua +4 -19
  39. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  40. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  41. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  42. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  43. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  44. package/engine/behaviour/ability/restore-mana.lua +6 -6
  45. package/engine/behaviour/ability.d.ts +28 -7
  46. package/engine/behaviour/ability.lua +137 -43
  47. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  48. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  49. package/engine/behaviour/unit.d.ts +45 -2
  50. package/engine/behaviour/unit.lua +289 -6
  51. package/engine/buff.d.ts +141 -55
  52. package/engine/buff.lua +638 -290
  53. package/engine/internal/ability.d.ts +23 -14
  54. package/engine/internal/ability.lua +129 -85
  55. package/engine/internal/item/ability.lua +162 -4
  56. package/engine/internal/item/fields.d.ts +12 -0
  57. package/engine/internal/item/fields.lua +33 -0
  58. package/engine/internal/item+owner.lua +12 -6
  59. package/engine/internal/item.d.ts +18 -18
  60. package/engine/internal/item.lua +208 -94
  61. package/engine/internal/mechanics/ability-duration.lua +1 -1
  62. package/engine/internal/mechanics/cast-ability.lua +6 -3
  63. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  64. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  65. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  66. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  67. package/engine/internal/misc/frame-coordinates.lua +21 -0
  68. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  69. package/engine/internal/misc/get-terrain-z.lua +11 -0
  70. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  71. package/engine/internal/misc/player-local-handle.lua +5 -0
  72. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  73. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  74. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  75. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  76. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  77. package/engine/internal/object-data/evasion-probability.lua +16 -0
  78. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  79. package/engine/internal/object-data/health-bonus.lua +16 -0
  80. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  81. package/engine/internal/object-data/mana-bonus.lua +16 -0
  82. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  83. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  84. package/engine/internal/unit/ability.d.ts +45 -1
  85. package/engine/internal/unit/ability.lua +128 -17
  86. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  87. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  88. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  89. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  90. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  91. package/engine/internal/unit/allowed-targets.lua +9 -1
  92. package/engine/internal/unit/attributes.d.ts +17 -0
  93. package/engine/internal/unit/attributes.lua +46 -0
  94. package/engine/internal/unit/bonus.d.ts +12 -2
  95. package/engine/internal/unit/bonus.lua +56 -4
  96. package/engine/internal/unit/fly-height.d.ts +7 -0
  97. package/engine/internal/unit/fly-height.lua +20 -0
  98. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  99. package/engine/internal/unit/ignore-events-items.lua +5 -0
  100. package/engine/internal/unit/interrupts.d.ts +12 -0
  101. package/engine/internal/unit/interrupts.lua +28 -0
  102. package/engine/internal/unit/item.d.ts +24 -0
  103. package/engine/internal/unit/item.lua +78 -0
  104. package/engine/internal/unit/main-selected.d.ts +13 -0
  105. package/engine/internal/unit/main-selected.lua +36 -0
  106. package/engine/internal/unit/order.d.ts +20 -0
  107. package/engine/internal/unit/order.lua +136 -0
  108. package/engine/internal/unit/range-event.d.ts +12 -0
  109. package/engine/internal/unit/range-event.lua +90 -0
  110. package/engine/internal/unit/scale.d.ts +7 -0
  111. package/engine/internal/unit/scale.lua +20 -0
  112. package/engine/internal/unit+ability.lua +12 -3
  113. package/engine/internal/unit+bonus.lua +3 -3
  114. package/engine/internal/unit+damage.d.ts +2 -11
  115. package/engine/internal/unit+damage.lua +10 -14
  116. package/engine/internal/unit+spellSteal.lua +1 -2
  117. package/engine/internal/unit-missile-launch.lua +70 -13
  118. package/engine/internal/unit.d.ts +64 -30
  119. package/engine/internal/unit.lua +490 -285
  120. package/engine/internal/utility.lua +12 -0
  121. package/engine/lightning.d.ts +12 -5
  122. package/engine/lightning.lua +48 -14
  123. package/engine/local-client.d.ts +14 -2
  124. package/engine/local-client.lua +168 -1
  125. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  126. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  127. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  128. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  129. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  130. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  131. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  132. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  133. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  134. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  135. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  136. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  137. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  138. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  139. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  140. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  141. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  142. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  143. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  144. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  145. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  146. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  147. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  148. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  149. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  150. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  151. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  152. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  153. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  154. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  155. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  156. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  157. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  158. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  159. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  160. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  161. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  162. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  163. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  164. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  165. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  166. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  167. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  168. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  169. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  170. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  171. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  172. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  173. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  174. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  175. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  176. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  177. package/engine/object-data/entry/ability-type/web.lua +52 -0
  178. package/engine/object-data/entry/ability-type.d.ts +21 -17
  179. package/engine/object-data/entry/ability-type.lua +177 -40
  180. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  181. package/engine/object-data/entry/buff-type.d.ts +6 -12
  182. package/engine/object-data/entry/buff-type.lua +13 -29
  183. package/engine/object-data/entry/destructible-type.d.ts +28 -2
  184. package/engine/object-data/entry/destructible-type.lua +155 -0
  185. package/engine/object-data/entry/item-type.d.ts +15 -1
  186. package/engine/object-data/entry/item-type.lua +93 -2
  187. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  188. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  189. package/engine/object-data/entry/sound-preset.lua +140 -0
  190. package/engine/object-data/entry/unit-type.d.ts +25 -5
  191. package/engine/object-data/entry/unit-type.lua +258 -93
  192. package/engine/object-data/entry/upgrade.d.ts +1 -1
  193. package/engine/object-data/entry/upgrade.lua +4 -4
  194. package/engine/object-data/entry.d.ts +16 -14
  195. package/engine/object-data/entry.lua +60 -32
  196. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  197. package/engine/object-field/ability.d.ts +28 -5
  198. package/engine/object-field/ability.lua +61 -7
  199. package/engine/object-field/item.d.ts +22 -0
  200. package/engine/object-field/item.lua +118 -0
  201. package/engine/object-field/unit.d.ts +72 -3
  202. package/engine/object-field/unit.lua +268 -7
  203. package/engine/object-field.d.ts +26 -7
  204. package/engine/object-field.lua +362 -117
  205. package/engine/random.d.ts +10 -0
  206. package/engine/random.lua +21 -0
  207. package/engine/standard/entries/buff-type.d.ts +3 -0
  208. package/engine/standard/entries/buff-type.lua +3 -0
  209. package/engine/standard/entries/sound-preset.d.ts +10 -0
  210. package/engine/standard/entries/sound-preset.lua +10 -0
  211. package/engine/standard/fields/ability.d.ts +4 -2
  212. package/engine/standard/fields/ability.lua +4 -2
  213. package/engine/standard/fields/item.d.ts +4 -0
  214. package/engine/standard/fields/item.lua +6 -0
  215. package/engine/standard/fields/unit.d.ts +12 -0
  216. package/engine/standard/fields/unit.lua +20 -0
  217. package/engine/synchronization.d.ts +11 -0
  218. package/engine/synchronization.lua +77 -0
  219. package/engine/text-tag.d.ts +36 -2
  220. package/engine/text-tag.lua +250 -10
  221. package/engine/unit.d.ts +9 -0
  222. package/engine/unit.lua +9 -0
  223. package/index.d.ts +1 -0
  224. package/index.lua +1 -0
  225. package/lualib_bundle.lua +1 -1
  226. package/math.d.ts +2 -0
  227. package/math.lua +14 -0
  228. package/net/socket.d.ts +7 -1
  229. package/net/socket.lua +45 -4
  230. package/network.d.ts +1 -0
  231. package/network.lua +3 -2
  232. package/objutil/buff.lua +12 -11
  233. package/objutil/object.lua +1 -1
  234. package/objutil/unit.lua +8 -0
  235. package/operation.lua +1 -4
  236. package/package.json +5 -5
  237. package/patch-lua.d.ts +0 -0
  238. package/patch-lua.lua +25 -0
  239. package/patch-lualib.lua +1 -1
  240. package/utility/arrays.d.ts +10 -1
  241. package/utility/arrays.lua +45 -3
  242. package/utility/callback-array.d.ts +17 -0
  243. package/utility/callback-array.lua +61 -0
  244. package/utility/functions.d.ts +8 -0
  245. package/utility/functions.lua +13 -0
  246. package/utility/lazy.d.ts +2 -0
  247. package/utility/lazy.lua +14 -0
  248. package/utility/linked-map.d.ts +35 -0
  249. package/utility/linked-map.lua +107 -0
  250. package/utility/linked-set.d.ts +16 -3
  251. package/utility/linked-set.lua +54 -3
  252. package/utility/lua-maps.d.ts +15 -2
  253. package/utility/lua-maps.lua +53 -2
  254. package/utility/lua-sets.d.ts +2 -0
  255. package/utility/lua-sets.lua +7 -0
  256. package/utility/records.lua +20 -1
  257. package/utility/reflection.lua +11 -7
  258. package/utility/types.d.ts +4 -0
  259. package/utility/unordered-map.d.ts +27 -0
  260. package/utility/unordered-map.lua +99 -0
  261. package/core/types/order.d.ts +0 -25
  262. package/core/types/order.lua +0 -55
  263. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  264. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  265. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  266. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -7,6 +7,18 @@ import { UpgradeId } from "../../engine/object-data/entry/upgrade";
7
7
  interface Unit {
8
8
  handle: junit;
9
9
  }
10
+ export declare const enum PlayerAllianceType {
11
+ PASSIVE = 0,
12
+ RESCUABLE = 1,
13
+ HELP_REQUEST = 2,
14
+ HELP_RESPONSE = 3,
15
+ SHARED_XP = 4,
16
+ SHARED_SPELLS = 5,
17
+ SHARED_VISION = 6,
18
+ SHARED_VISION_FORCED = 7,
19
+ SHARED_CONTROL = 8,
20
+ SHARED_ADVANCED_CONTROL = 9
21
+ }
10
22
  export declare class Player extends Handle<jplayer> {
11
23
  static readonly all: Player[];
12
24
  static readonly local: Player;
@@ -16,6 +28,7 @@ export declare class Player extends Handle<jplayer> {
16
28
  static readonly neutralExtra: Player;
17
29
  private static events;
18
30
  readonly id: number;
31
+ readonly slotState: jplayerslotstate;
19
32
  constructor(handle: jplayer);
20
33
  onDestroy(): HandleDestructor;
21
34
  toString(): string;
@@ -33,7 +46,6 @@ export declare class Player extends Handle<jplayer> {
33
46
  get isUser(): boolean;
34
47
  get isPlaying(): boolean;
35
48
  get controller(): jmapcontrol;
36
- get slotState(): jplayerslotstate;
37
49
  clearSelection(): void;
38
50
  selectSingle(unit: Unit): void;
39
51
  select(unit: Unit): void;
@@ -42,6 +54,8 @@ export declare class Player extends Handle<jplayer> {
42
54
  forceUICancel(): void;
43
55
  isAllyOf(other: Player): boolean;
44
56
  isEnemyOf(other: Player): boolean;
57
+ setAlliance(other: Player, type: PlayerAllianceType, value: boolean): void;
58
+ getAlliance(other: Player, type: PlayerAllianceType): boolean;
45
59
  setAbilityAvailable(abilityId: number, available: boolean): void;
46
60
  getMaximumUpgradeLevel(upgradeId: UpgradeId): number;
47
61
  setMaximumUpgradeLevel(upgradeId: UpgradeId, maximumLevel: number): void;
@@ -50,6 +64,7 @@ export declare class Player extends Handle<jplayer> {
50
64
  setUpgradeLevel(upgradeId: UpgradeId, level: number): void;
51
65
  private static getEvent;
52
66
  private static getMouseEvent;
67
+ static get allianceChangedEvent(): Readonly<Record<PlayerAllianceType, Event<[Player]>>>;
53
68
  static get onLeave(): Event<[Player]>;
54
69
  static get onMouseDown(): Event<[Player, jmousebuttontype]>;
55
70
  static get onMouseUp(): Event<[Player, jmousebuttontype]>;
@@ -66,6 +81,7 @@ export declare class Player extends Handle<jplayer> {
66
81
  };
67
82
  };
68
83
  static get onChat(): Event<[player: Player, message: string]>;
84
+ static readonly colorChangedEvent: Event<[Player]>;
69
85
  static byId(id: number): Player | undefined;
70
86
  }
71
87
  export {};
@@ -1,7 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
2
3
  local __TS__Class = ____lualib.__TS__Class
3
4
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
- local __TS__New = ____lualib.__TS__New
5
5
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
6
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
7
7
  local ____exports = {}
@@ -21,20 +21,42 @@ local ____exception = require("exception")
21
21
  local IllegalStateException = ____exception.IllegalStateException
22
22
  local ____math = require("math")
23
23
  local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
24
+ local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
25
+ local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
26
+ local ____lazy = require("utility.lazy")
27
+ local lazyRecord = ____lazy.lazyRecord
28
+ local getPlayerAlliance = GetPlayerAlliance
24
29
  local getPlayerColor = GetPlayerColor
25
30
  local getPlayerName = GetPlayerName
26
31
  local getPlayerTechCount = GetPlayerTechCount
27
32
  local getPlayerTechMaxAllowed = GetPlayerTechMaxAllowed
33
+ local getTriggerPlayer = GetTriggerPlayer
34
+ local setPlayerAlliance = SetPlayerAlliance
28
35
  local setPlayerTechMaxAllowed = SetPlayerTechMaxAllowed
29
36
  local setPlayerTechResearched = SetPlayerTechResearched
30
37
  local setPlayerAbilityAvailable = SetPlayerAbilityAvailable
38
+ local triggerRegisterPlayerAllianceChange = TriggerRegisterPlayerAllianceChange
31
39
  local playerNative = _G.Player
40
+ local nativeByPlayerAllianceType = {
41
+ [0] = ALLIANCE_PASSIVE,
42
+ [1] = ALLIANCE_RESCUABLE,
43
+ [2] = ALLIANCE_HELP_REQUEST,
44
+ [3] = ALLIANCE_HELP_RESPONSE,
45
+ [4] = ALLIANCE_SHARED_XP,
46
+ [5] = ALLIANCE_SHARED_SPELLS,
47
+ [6] = ALLIANCE_SHARED_VISION,
48
+ [7] = ALLIANCE_SHARED_VISION_FORCED,
49
+ [8] = ALLIANCE_SHARED_CONTROL,
50
+ [9] = ALLIANCE_SHARED_ADVANCED_CONTROL
51
+ }
52
+ local playerColorChangedEvent = __TS__New(Event)
32
53
  ____exports.Player = __TS__Class()
33
54
  local Player = ____exports.Player
34
55
  Player.name = "Player"
35
56
  __TS__ClassExtends(Player, Handle)
36
57
  function Player.prototype.____constructor(self, handle)
37
58
  Handle.prototype.____constructor(self, handle)
59
+ self.slotState = GetPlayerSlotState(self.handle)
38
60
  self.id = GetPlayerId(handle)
39
61
  end
40
62
  function Player.prototype.onDestroy(self)
@@ -83,6 +105,12 @@ end
83
105
  function Player.prototype.isEnemyOf(self, other)
84
106
  return IsPlayerEnemy(self.handle, other.handle)
85
107
  end
108
+ function Player.prototype.setAlliance(self, other, ____type, value)
109
+ setPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type], value)
110
+ end
111
+ function Player.prototype.getAlliance(self, other, ____type)
112
+ return getPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type])
113
+ end
86
114
  function Player.prototype.setAbilityAvailable(self, abilityId, available)
87
115
  setPlayerAbilityAvailable(self.handle, abilityId, available)
88
116
  end
@@ -122,14 +150,11 @@ function Player.getMouseEvent(self, event, collector)
122
150
  self.events[eventId] = __TS__New(
123
151
  TriggerEvent,
124
152
  function(trigger)
125
- Timer:simple(
126
- 0,
127
- function()
128
- for ____, player in ipairs(____exports.Player.all) do
129
- TriggerRegisterPlayerEvent(trigger, player.handle, event)
130
- end
153
+ Timer:run(function()
154
+ for ____, player in ipairs(____exports.Player.all) do
155
+ TriggerRegisterPlayerEvent(trigger, player.handle, event)
131
156
  end
132
- )
157
+ end)
133
158
  end,
134
159
  collector or (function() return {} end)
135
160
  )
@@ -178,7 +203,7 @@ function Player.getKeyEvent(self, isDown)
178
203
  TriggerAddCondition(
179
204
  trigger,
180
205
  Condition(function()
181
- local player = ____exports.Player:of(GetTriggerPlayer())
206
+ local player = ____exports.Player:of(getTriggerPlayer())
182
207
  local key = BlzGetTriggerPlayerKey()
183
208
  local metaKey = BlzGetTriggerPlayerMetaKey()
184
209
  Event.invoke(event, player, key, metaKey)
@@ -249,7 +274,7 @@ Player.all = (function()
249
274
  end
250
275
  return all
251
276
  end)()
252
- Player["local"] = ____exports.Player:of(GetLocalPlayer())
277
+ Player["local"] = ____exports.Player:of(PLAYER_LOCAL_HANDLE)
253
278
  Player.neutralPassive = ____exports.Player.all[PLAYER_NEUTRAL_PASSIVE + 1]
254
279
  Player.neutralAggressive = ____exports.Player.all[PLAYER_NEUTRAL_AGGRESSIVE + 1]
255
280
  Player.neutralVictim = ____exports.Player.all[bj_PLAYER_NEUTRAL_VICTIM + 1]
@@ -277,6 +302,7 @@ __TS__SetDescriptor(
277
302
  end,
278
303
  set = function(self, color)
279
304
  SetPlayerColor(self.handle, color.handle)
305
+ Event.invoke(playerColorChangedEvent, self)
280
306
  end
281
307
  },
282
308
  true
@@ -339,7 +365,7 @@ __TS__SetDescriptor(
339
365
  Player.prototype,
340
366
  "isUser",
341
367
  {get = function(self)
342
- return GetPlayerController(self.handle) == MAP_CONTROL_USER
368
+ return self.controller == MAP_CONTROL_USER
343
369
  end},
344
370
  true
345
371
  )
@@ -347,7 +373,7 @@ __TS__SetDescriptor(
347
373
  Player.prototype,
348
374
  "isPlaying",
349
375
  {get = function(self)
350
- return GetPlayerSlotState(self.handle) == PLAYER_SLOT_STATE_PLAYING
376
+ return self.slotState == PLAYER_SLOT_STATE_PLAYING
351
377
  end},
352
378
  true
353
379
  )
@@ -355,17 +381,30 @@ __TS__SetDescriptor(
355
381
  Player.prototype,
356
382
  "controller",
357
383
  {get = function(self)
358
- return GetPlayerController(self.handle)
384
+ local controller = GetPlayerController(self.handle)
385
+ rawset(self, "controller", controller)
386
+ return controller
359
387
  end},
360
388
  true
361
389
  )
362
- __TS__SetDescriptor(
363
- Player.prototype,
364
- "slotState",
390
+ __TS__ObjectDefineProperty(
391
+ Player,
392
+ "allianceChangedEvent",
365
393
  {get = function(self)
366
- return GetPlayerSlotState(self.handle)
367
- end},
368
- true
394
+ local event = lazyRecord(function(____type)
395
+ return __TS__New(
396
+ TriggerEvent,
397
+ function(trigger)
398
+ for ____, player in ipairs(____exports.Player.all) do
399
+ triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
400
+ end
401
+ end,
402
+ function() return ____exports.Player:of(getTriggerPlayer()) end
403
+ )
404
+ end)
405
+ rawset(self, "allianceChangedEvent", event)
406
+ return event
407
+ end}
369
408
  )
370
409
  __TS__ObjectDefineProperty(
371
410
  Player,
@@ -373,7 +412,7 @@ __TS__ObjectDefineProperty(
373
412
  {get = function(self)
374
413
  return ____exports.Player:getEvent(
375
414
  EVENT_PLAYER_LEAVE,
376
- function() return ____exports.Player:of(GetTriggerPlayer()) end
415
+ function() return ____exports.Player:of(getTriggerPlayer()) end
377
416
  )
378
417
  end}
379
418
  )
@@ -383,7 +422,7 @@ __TS__ObjectDefineProperty(
383
422
  {get = function(self)
384
423
  return ____exports.Player:getMouseEvent(
385
424
  EVENT_PLAYER_MOUSE_DOWN,
386
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
425
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
387
426
  )
388
427
  end}
389
428
  )
@@ -393,7 +432,7 @@ __TS__ObjectDefineProperty(
393
432
  {get = function(self)
394
433
  return ____exports.Player:getMouseEvent(
395
434
  EVENT_PLAYER_MOUSE_UP,
396
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
435
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
397
436
  )
398
437
  end}
399
438
  )
@@ -403,7 +442,7 @@ __TS__ObjectDefineProperty(
403
442
  {get = function(self)
404
443
  return ____exports.Player:getMouseEvent(
405
444
  EVENT_PLAYER_MOUSE_MOVE,
406
- function() return ____exports.Player:of(GetTriggerPlayer()), vec2(
445
+ function() return ____exports.Player:of(getTriggerPlayer()), vec2(
407
446
  BlzGetTriggerPlayerMouseX(),
408
447
  BlzGetTriggerPlayerMouseY()
409
448
  ) end
@@ -439,10 +478,17 @@ __TS__ObjectDefineProperty(
439
478
  TriggerRegisterPlayerChatEvent(trigger, player.handle, "", false)
440
479
  end
441
480
  end,
442
- function() return ____exports.Player:of(GetTriggerPlayer()), GetEventPlayerChatString() end
481
+ function() return ____exports.Player:of(getTriggerPlayer()), GetEventPlayerChatString() end
443
482
  )
444
483
  rawset(self, "onChat", event)
445
484
  return event
446
485
  end}
447
486
  )
487
+ Player.colorChangedEvent = playerColorChangedEvent
488
+ ____exports.Player.onLeave:addListener(
489
+ 999999,
490
+ function(player)
491
+ rawset(player, "slotState", PLAYER_SLOT_STATE_LEFT)
492
+ end
493
+ )
448
494
  return ____exports
@@ -1,4 +1,5 @@
1
1
  /** @noSelfInFile */
2
+ import type { Unit } from "../../engine/internal/unit";
2
3
  export declare class PlayerCamera {
3
4
  private readonly player;
4
5
  private readonly isLocal;
@@ -28,5 +29,6 @@ export declare class PlayerCamera {
28
29
  get roll(): number;
29
30
  set roll(v: number);
30
31
  reset(): void;
32
+ static isUnitInView(unit: Unit): boolean;
31
33
  static of(player: jplayer): PlayerCamera;
32
34
  }
@@ -3,33 +3,52 @@ local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__New = ____lualib.__TS__New
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
5
  local ____exports = {}
6
+ local ____timer = require("core.types.timer")
7
+ local Timer = ____timer.Timer
8
+ local ____player_2Dlocal_2Dhandle = require("engine.internal.misc.player-local-handle")
9
+ local PLAYER_LOCAL_HANDLE = ____player_2Dlocal_2Dhandle.PLAYER_LOCAL_HANDLE
10
+ local ____preconditions = require("utility.preconditions")
11
+ local check = ____preconditions.check
12
+ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
13
+ local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
14
+ local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
15
+ local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
16
+ local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
17
+ local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
6
18
  local getHandleId = GetHandleId
7
19
  local setCameraField = SetCameraField
8
20
  local getCameraField = GetCameraField
9
21
  local setCameraPosition = SetCameraPosition
22
+ local getCameraEyePositionX = GetCameraEyePositionX
23
+ local getCameraEyePositionY = GetCameraEyePositionY
24
+ local getCameraEyePositionZ = GetCameraEyePositionZ
10
25
  local getCameraTargetPositionX = GetCameraTargetPositionX
11
26
  local getCameraTargetPositionY = GetCameraTargetPositionY
12
27
  local resetToGameCamera = ResetToGameCamera
28
+ local cos = math.cos
13
29
  local deg = math.deg
14
- local localPlayer = GetLocalPlayer()
30
+ local sin = math.sin
31
+ local sqrt = math.sqrt
15
32
  local memoized = {}
16
33
  ____exports.PlayerCamera = __TS__Class()
17
34
  local PlayerCamera = ____exports.PlayerCamera
18
35
  PlayerCamera.name = "PlayerCamera"
19
36
  function PlayerCamera.prototype.____constructor(self, player)
20
37
  local id = getHandleId(player)
21
- if memoized[id] then
22
- error("Double-constructor run player camera!")
23
- end
38
+ check(memoized[id] == nil)
24
39
  memoized[id] = self
25
40
  self.player = player
26
- self.isLocal = player == localPlayer
41
+ self.isLocal = player == PLAYER_LOCAL_HANDLE
27
42
  end
28
43
  function PlayerCamera.prototype.reset(self)
29
44
  if self.isLocal then
30
45
  resetToGameCamera(0)
31
46
  end
32
47
  end
48
+ function PlayerCamera.isUnitInView(self, unit)
49
+ local ____, ____, isInView = ____exports.worldCoordinatesToFrame(unit.x, unit.y, unit.z)
50
+ return isInView
51
+ end
33
52
  function PlayerCamera.of(self, player)
34
53
  return memoized[getHandleId(player)] or __TS__New(____exports.PlayerCamera, player)
35
54
  end
@@ -159,4 +178,103 @@ __TS__SetDescriptor(
159
178
  },
160
179
  true
161
180
  )
181
+ local cameraEyeX = 0
182
+ local cameraEyeY = 0
183
+ local cameraEyeZ = 0
184
+ local cameraAngleOfAttack = 0
185
+ local cameraAngleOfAttackCos = 0
186
+ local cameraAngleOfAttackSin = 0
187
+ local cameraRotation = 0
188
+ local cameraRotationCos = 0
189
+ local cameraRotationSin = 0
190
+ local cameraAngleOfAttackCosRotationCos = 0
191
+ local cameraAngleOfAttackCosRotationSin = 0
192
+ local cameraAngleOfAttackSinRotationCos = 0
193
+ local cameraAngleOfAttackSinRotationSin = 0
194
+ local yCenterScreenShift = 0
195
+ local scaleFactor = 0
196
+ local frameMinX = 0
197
+ local frameMaxX = 0
198
+ local isCameraViewPrecalculated = false
199
+ local function precalculateCameraView()
200
+ cameraEyeX = getCameraEyePositionX()
201
+ cameraEyeY = getCameraEyePositionY()
202
+ cameraEyeZ = getCameraEyePositionZ()
203
+ cameraAngleOfAttack = getCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)
204
+ cameraAngleOfAttackCos = cos(cameraAngleOfAttack)
205
+ cameraAngleOfAttackSin = sin(cameraAngleOfAttack)
206
+ cameraRotation = getCameraField(CAMERA_FIELD_ROTATION)
207
+ cameraRotationCos = cos(cameraRotation)
208
+ cameraRotationSin = sin(cameraRotation)
209
+ cameraAngleOfAttackCosRotationCos = cameraAngleOfAttackCos * cameraRotationCos
210
+ cameraAngleOfAttackCosRotationSin = cameraAngleOfAttackCos * cameraRotationSin
211
+ cameraAngleOfAttackSinRotationCos = cameraAngleOfAttackSin * cameraRotationCos
212
+ cameraAngleOfAttackSinRotationSin = cameraAngleOfAttackSin * cameraRotationSin
213
+ yCenterScreenShift = 0.1284 * cameraAngleOfAttackCos
214
+ local cameraFieldOfView = getCameraField(CAMERA_FIELD_FIELD_OF_VIEW)
215
+ scaleFactor = 0.0524 * cameraFieldOfView ^ 3 - 0.0283 * cameraFieldOfView ^ 2 + 1.061 * cameraFieldOfView
216
+ frameMinX, frameMaxX = getFrameMinXMaxX()
217
+ isCameraViewPrecalculated = true
218
+ end
219
+ Timer.onPeriod[1 / 64]:addListener(
220
+ 4,
221
+ function()
222
+ isCameraViewPrecalculated = false
223
+ end
224
+ )
225
+ ---
226
+ -- @internal For use by internal systems only.
227
+ ____exports.worldCoordinatesToFrame = function(x, y, z)
228
+ if not isCameraViewPrecalculated then
229
+ precalculateCameraView()
230
+ end
231
+ local dx = x - cameraEyeX
232
+ local dy = y - cameraEyeY
233
+ local dz = z - cameraEyeZ
234
+ local xPrime = scaleFactor * (-cameraAngleOfAttackCosRotationCos * dx - cameraAngleOfAttackCosRotationSin * dy - cameraAngleOfAttackSin * dz)
235
+ local frameX = 0.4 + (cameraRotationCos * dy - cameraRotationSin * dx) / xPrime
236
+ local frameY = 0.42625 - yCenterScreenShift + (cameraAngleOfAttackSinRotationCos * dx + cameraAngleOfAttackSinRotationSin * dy - cameraAngleOfAttackCos * dz) / xPrime
237
+ return frameX, frameY, xPrime < 0 and frameX >= frameMinX and frameX <= frameMaxX and frameY >= FRAME_MIN_Y and frameY <= FRAME_MAX_Y
238
+ end
239
+ ---
240
+ -- @internal For use by internal systems only.
241
+ ____exports.frameCoordinatesToWorld = function(x, y)
242
+ if not isCameraViewPrecalculated then
243
+ precalculateCameraView()
244
+ end
245
+ local a = (x - 0.4) * scaleFactor
246
+ local b = (0.42625 - yCenterScreenShift - y) * scaleFactor
247
+ local nx = 1 / sqrt(1 + a * a + b * b)
248
+ local ny = sqrt(1 - (1 + b * b) * nx * nx)
249
+ local nz = sqrt(1 - nx * nx - ny * ny)
250
+ if a > 0 then
251
+ ny = -ny
252
+ end
253
+ if b < 0 then
254
+ nz = -nz
255
+ end
256
+ local nxPrime = cameraAngleOfAttackCosRotationCos * nx - cameraRotationSin * ny + cameraAngleOfAttackSinRotationCos * nz
257
+ local nyPrime = cameraAngleOfAttackCosRotationSin * nx + cameraRotationCos * ny + cameraAngleOfAttackSinRotationSin * nz
258
+ local nzPrime = -cameraAngleOfAttackSin * nx + cameraAngleOfAttackCos * nz
259
+ local zGuess = getTerrainZ(cameraEyeX, cameraEyeY)
260
+ local xGuess = cameraEyeX + nxPrime * (cameraEyeZ - zGuess) / nzPrime
261
+ local yGuess = cameraEyeY + nyPrime * (cameraEyeZ - zGuess) / nzPrime
262
+ local zWorld = getTerrainZ(xGuess, yGuess)
263
+ local deltaZ = zWorld - zGuess
264
+ zGuess = zWorld
265
+ local zWorldOld = zWorld
266
+ local deltaZOld = deltaZ
267
+ local i = 0
268
+ while (deltaZ > 1 or deltaZ < -1) and i < 50 do
269
+ xGuess = cameraEyeX + nxPrime * (cameraEyeZ - zGuess) / nzPrime
270
+ yGuess = cameraEyeY + nyPrime * (cameraEyeZ - zGuess) / nzPrime
271
+ zWorld = getTerrainZ(xGuess, yGuess)
272
+ deltaZ = zWorld - zGuess
273
+ zGuess = (deltaZOld * zWorld - deltaZ * zWorldOld) / (deltaZOld - deltaZ)
274
+ zWorldOld = zWorld
275
+ deltaZOld = deltaZ
276
+ i = i + 1
277
+ end
278
+ return xGuess, yGuess, zWorld, i < 50
279
+ end
162
280
  return ____exports
@@ -1,6 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { Handle, HandleDestructor } from "./handle";
3
3
  import { Unit } from "./unit";
4
+ import { SoundEax } from "../../engine/object-data/auxiliary/sound-eax";
4
5
  export declare enum SoundChannel {
5
6
  General = 0,
6
7
  UnitSelection = 1,
@@ -18,16 +19,7 @@ export declare enum SoundChannel {
18
19
  Birth = 13,
19
20
  Fire = 14
20
21
  }
21
- export declare enum SoundEax {
22
- Default = "DefaultEAXON",
23
- Acknowledgements = "HeroAcksEAX",
24
- Environment = "DoodadsEAX",
25
- Drums = "KotoDrumsEAX",
26
- Attacks = "CombatSoundsEAX",
27
- Abilities = "SpellsEAX",
28
- Missiles = "MissilesEAX"
29
- }
30
- export type SoundPreset = Readonly<{
22
+ export type SoundSettings = Readonly<{
31
23
  channel?: SoundChannel;
32
24
  eax?: SoundEax;
33
25
  fadeInRate?: number;
@@ -36,19 +28,19 @@ export type SoundPreset = Readonly<{
36
28
  volume?: number;
37
29
  pitch?: number;
38
30
  }>;
39
- export type Sound3DPreset = SoundPreset & Readonly<{
31
+ export type Sound3DSettings = SoundSettings & Readonly<{
40
32
  stopWhenOutOfRange?: boolean;
41
33
  minDistance?: number;
42
34
  maxDistance?: number;
43
35
  distanceCutoff?: number;
44
36
  }>;
45
- export declare namespace SoundPreset {
46
- const UI: SoundPreset;
47
- const Music: SoundPreset;
48
- const Attack: Sound3DPreset;
49
- const Ability: Sound3DPreset;
50
- const AbilityLooping: Sound3DPreset;
51
- const Missile: Sound3DPreset;
37
+ export declare namespace SoundSettings {
38
+ const UI: SoundSettings;
39
+ const Music: SoundSettings;
40
+ const Attack: Sound3DSettings;
41
+ const Ability: Sound3DSettings;
42
+ const AbilityLooping: Sound3DSettings;
43
+ const Missile: Sound3DSettings;
52
44
  }
53
45
  export declare class Sound extends Handle<jsound, [fadeOut?: boolean]> {
54
46
  private _volume?;
@@ -58,12 +50,13 @@ export declare class Sound extends Handle<jsound, [fadeOut?: boolean]> {
58
50
  start(milliseconds?: number): void;
59
51
  stop(fadeOut?: boolean): void;
60
52
  restart(milliseconds?: number): void;
61
- static play(fileName: string, preset: SoundPreset): void;
62
- static create(fileName: string, preset: SoundPreset): Sound;
53
+ static play(fileName: string, preset: SoundSettings): void;
54
+ static create(fileName: string, preset: SoundSettings): Sound;
63
55
  }
64
56
  export declare class Sound3D extends Sound {
65
- static playAtPosition(fileName: string, preset: Sound3DPreset, x?: number, y?: number, z?: number): void;
66
- static playOnUnit(fileName: string, preset: Sound3DPreset, unit: Unit): void;
67
- static createAtPosition(fileName: string, preset: Sound3DPreset, x?: number, y?: number, z?: number): Sound3D;
68
- static createOnUnit(fileName: string, preset: Sound3DPreset, unit: Unit): Sound3D;
57
+ static playAtPosition(fileName: string, preset: Sound3DSettings, x?: number, y?: number, z?: number): void;
58
+ static playOnUnit(fileName: string, preset: Sound3DSettings, unit: Unit): void;
59
+ static playFromLabel(label: string, preset: Sound3DSettings, ...positionOrUnit: [Unit] | [number, number, number?]): void;
60
+ static createAtPosition(fileName: string, preset: Sound3DSettings, x?: number, y?: number, z?: number): Sound3D;
61
+ static createOnUnit(fileName: string, preset: Sound3DSettings, unit: Unit): Sound3D;
69
62
  }