warscript 0.0.1-dev.ed60fea → 0.0.1-dev.edf7fad

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 (233) 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 +1 -3
  6. package/core/types/effect.lua +26 -29
  7. package/core/types/frame.lua +71 -22
  8. package/core/types/player.d.ts +16 -0
  9. package/core/types/player.lua +60 -15
  10. package/core/types/playerCamera.d.ts +2 -0
  11. package/core/types/playerCamera.lua +123 -5
  12. package/core/types/sound.d.ts +17 -24
  13. package/core/types/sound.lua +100 -25
  14. package/core/types/tileCell.d.ts +11 -1
  15. package/core/types/tileCell.lua +97 -0
  16. package/core/types/timer.d.ts +9 -8
  17. package/core/types/timer.lua +45 -23
  18. package/core/util.lua +6 -1
  19. package/decl/native.d.ts +846 -790
  20. package/destroyable.d.ts +1 -0
  21. package/destroyable.lua +9 -0
  22. package/engine/behavior.d.ts +14 -1
  23. package/engine/behavior.lua +230 -70
  24. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  25. package/engine/behaviour/ability/apply-buff.lua +36 -4
  26. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  27. package/engine/behaviour/ability/damage.d.ts +12 -3
  28. package/engine/behaviour/ability/damage.lua +33 -39
  29. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  30. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  31. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  32. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  33. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  34. package/engine/behaviour/ability/restore-mana.lua +6 -6
  35. package/engine/behaviour/ability.d.ts +15 -5
  36. package/engine/behaviour/ability.lua +72 -24
  37. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  38. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  39. package/engine/behaviour/unit.d.ts +40 -2
  40. package/engine/behaviour/unit.lua +269 -6
  41. package/engine/buff.d.ts +113 -53
  42. package/engine/buff.lua +544 -288
  43. package/engine/internal/ability.d.ts +7 -1
  44. package/engine/internal/ability.lua +49 -11
  45. package/engine/internal/item/ability.lua +82 -14
  46. package/engine/internal/item+owner.lua +12 -6
  47. package/engine/internal/item.d.ts +20 -19
  48. package/engine/internal/item.lua +191 -74
  49. package/engine/internal/mechanics/ability-duration.lua +1 -1
  50. package/engine/internal/mechanics/cast-ability.lua +6 -3
  51. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  52. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  53. package/engine/internal/misc/frame-coordinates.lua +21 -0
  54. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  55. package/engine/internal/misc/get-terrain-z.lua +11 -0
  56. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  57. package/engine/internal/misc/player-local-handle.lua +5 -0
  58. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  59. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  60. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  61. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  62. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  63. package/engine/internal/object-data/evasion-probability.lua +16 -0
  64. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  65. package/engine/internal/object-data/health-bonus.lua +16 -0
  66. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  67. package/engine/internal/object-data/mana-bonus.lua +16 -0
  68. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  69. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  70. package/engine/internal/unit/ability.d.ts +35 -0
  71. package/engine/internal/unit/ability.lua +98 -9
  72. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  73. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  74. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  75. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  76. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  77. package/engine/internal/unit/allowed-targets.lua +9 -1
  78. package/engine/internal/unit/attributes.d.ts +17 -0
  79. package/engine/internal/unit/attributes.lua +46 -0
  80. package/engine/internal/unit/bonus.d.ts +8 -0
  81. package/engine/internal/unit/bonus.lua +50 -3
  82. package/engine/internal/unit/fly-height.d.ts +7 -0
  83. package/engine/internal/unit/fly-height.lua +20 -0
  84. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  85. package/engine/internal/unit/ignore-events-items.lua +5 -0
  86. package/engine/internal/unit/interrupts.d.ts +12 -0
  87. package/engine/internal/unit/interrupts.lua +28 -0
  88. package/engine/internal/unit/item.lua +3 -4
  89. package/engine/internal/unit/main-selected.lua +12 -27
  90. package/engine/internal/unit/order.d.ts +20 -0
  91. package/engine/internal/unit/order.lua +136 -0
  92. package/engine/internal/unit/range-event.d.ts +12 -0
  93. package/engine/internal/unit/range-event.lua +90 -0
  94. package/engine/internal/unit/scale.d.ts +7 -0
  95. package/engine/internal/unit/scale.lua +20 -0
  96. package/engine/internal/unit+ability.lua +10 -1
  97. package/engine/internal/unit+bonus.lua +3 -3
  98. package/engine/internal/unit+damage.d.ts +2 -11
  99. package/engine/internal/unit+damage.lua +10 -14
  100. package/engine/internal/unit+spellSteal.lua +1 -2
  101. package/engine/internal/unit-missile-launch.lua +52 -14
  102. package/engine/internal/unit.d.ts +44 -25
  103. package/engine/internal/unit.lua +401 -263
  104. package/engine/lightning.d.ts +12 -5
  105. package/engine/lightning.lua +48 -14
  106. package/engine/local-client.d.ts +7 -0
  107. package/engine/local-client.lua +79 -1
  108. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  109. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  110. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  111. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  112. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  113. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  114. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  115. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  116. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  117. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  118. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  119. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  120. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  121. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  122. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  123. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  124. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  125. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  126. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  127. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  128. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  129. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  130. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  131. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  132. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  133. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  134. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  135. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  136. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  137. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  138. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  139. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  140. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  141. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  142. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  143. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  144. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  145. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  146. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  147. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  148. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  149. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  150. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  151. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  152. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  153. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  154. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  155. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  156. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  157. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  158. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  159. package/engine/object-data/entry/ability-type/web.lua +52 -0
  160. package/engine/object-data/entry/ability-type.d.ts +21 -17
  161. package/engine/object-data/entry/ability-type.lua +169 -28
  162. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  163. package/engine/object-data/entry/buff-type.d.ts +6 -12
  164. package/engine/object-data/entry/buff-type.lua +13 -29
  165. package/engine/object-data/entry/destructible-type.d.ts +28 -2
  166. package/engine/object-data/entry/destructible-type.lua +155 -0
  167. package/engine/object-data/entry/item-type.d.ts +1 -1
  168. package/engine/object-data/entry/item-type.lua +4 -4
  169. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  170. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  171. package/engine/object-data/entry/sound-preset.lua +140 -0
  172. package/engine/object-data/entry/unit-type.d.ts +25 -5
  173. package/engine/object-data/entry/unit-type.lua +258 -93
  174. package/engine/object-data/entry/upgrade.d.ts +1 -1
  175. package/engine/object-data/entry/upgrade.lua +4 -4
  176. package/engine/object-data/entry.d.ts +16 -14
  177. package/engine/object-data/entry.lua +60 -32
  178. package/engine/object-field/ability.d.ts +4 -4
  179. package/engine/object-field/ability.lua +9 -8
  180. package/engine/object-field/unit.d.ts +72 -3
  181. package/engine/object-field/unit.lua +268 -7
  182. package/engine/object-field.d.ts +26 -7
  183. package/engine/object-field.lua +360 -119
  184. package/engine/random.d.ts +10 -0
  185. package/engine/random.lua +21 -0
  186. package/engine/standard/entries/buff-type.d.ts +3 -0
  187. package/engine/standard/entries/buff-type.lua +3 -0
  188. package/engine/standard/entries/sound-preset.d.ts +10 -0
  189. package/engine/standard/entries/sound-preset.lua +10 -0
  190. package/engine/standard/fields/ability.d.ts +2 -2
  191. package/engine/standard/fields/ability.lua +2 -2
  192. package/engine/standard/fields/unit.d.ts +12 -0
  193. package/engine/standard/fields/unit.lua +20 -0
  194. package/engine/synchronization.d.ts +11 -0
  195. package/engine/synchronization.lua +77 -0
  196. package/engine/text-tag.d.ts +36 -2
  197. package/engine/text-tag.lua +250 -10
  198. package/engine/unit.d.ts +7 -0
  199. package/engine/unit.lua +7 -0
  200. package/lualib_bundle.lua +1 -1
  201. package/math.d.ts +2 -0
  202. package/math.lua +14 -0
  203. package/net/socket.lua +1 -1
  204. package/objutil/buff.lua +11 -10
  205. package/objutil/object.lua +1 -1
  206. package/objutil/unit.lua +8 -0
  207. package/operation.lua +1 -4
  208. package/package.json +5 -5
  209. package/patch-lua.lua +15 -0
  210. package/patch-lualib.lua +1 -1
  211. package/utility/arrays.d.ts +2 -0
  212. package/utility/arrays.lua +11 -0
  213. package/utility/callback-array.d.ts +17 -0
  214. package/utility/callback-array.lua +61 -0
  215. package/utility/functions.d.ts +8 -0
  216. package/utility/functions.lua +13 -0
  217. package/utility/linked-map.d.ts +34 -0
  218. package/utility/linked-map.lua +101 -0
  219. package/utility/linked-set.d.ts +4 -1
  220. package/utility/linked-set.lua +43 -1
  221. package/utility/lua-maps.d.ts +15 -2
  222. package/utility/lua-maps.lua +53 -2
  223. package/utility/lua-sets.d.ts +2 -0
  224. package/utility/lua-sets.lua +7 -0
  225. package/utility/records.lua +20 -1
  226. package/utility/reflection.lua +11 -7
  227. package/utility/types.d.ts +3 -0
  228. package/core/types/order.d.ts +0 -25
  229. package/core/types/order.lua +0 -55
  230. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  231. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  232. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  233. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/attributes.d.ts CHANGED
@@ -1,12 +1,18 @@
1
1
  /** @noSelfInFile */
2
+ declare const marker: {};
2
3
  export type Attribute<T> = {
3
4
  readonly __attribute: unique symbol;
4
5
  readonly __type: T;
6
+ readonly __marker: typeof marker;
5
7
  } & symbol;
8
+ export declare const attribute: <T>() => Attribute<T>;
9
+ export declare const isAttribute: (value: unknown) => value is Attribute<unknown>;
6
10
  export declare namespace Attribute {
7
11
  const create: <T>() => Attribute<T>;
8
12
  }
9
13
  export declare class AttributesHolder {
10
14
  readonly get: (<T>(attribute: Attribute<T>) => T | undefined) & LuaExtension<"TableGetMethod">;
11
15
  readonly set: (<T>(attribute: Attribute<T>, value: T | undefined) => void) & LuaExtension<"TableSetMethod">;
16
+ getOrPut<T>(attribute: Attribute<T>, defaultValue: () => T): T;
12
17
  }
18
+ export {};
package/attributes.lua CHANGED
@@ -1,11 +1,18 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local ____exports = {}
4
+ local marker = {}
5
+ ____exports.attribute = function()
6
+ return {__marker = marker}
7
+ end
8
+ ____exports.isAttribute = function(value)
9
+ return type(value) == "table" and rawget(value, "__marker") == marker
10
+ end
4
11
  ____exports.Attribute = {}
5
12
  local Attribute = ____exports.Attribute
6
13
  do
7
14
  Attribute.create = function()
8
- return {}
15
+ return {__marker = marker}
9
16
  end
10
17
  end
11
18
  ____exports.AttributesHolder = __TS__Class()
@@ -13,4 +20,13 @@ local AttributesHolder = ____exports.AttributesHolder
13
20
  AttributesHolder.name = "AttributesHolder"
14
21
  function AttributesHolder.prototype.____constructor(self)
15
22
  end
23
+ function AttributesHolder.prototype.getOrPut(self, attribute, defaultValue)
24
+ local value = self[attribute]
25
+ if value ~= nil then
26
+ return value
27
+ end
28
+ value = defaultValue()
29
+ self[attribute] = value
30
+ return value
31
+ end
16
32
  return ____exports
package/config.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /** @noSelfInFile */
2
+ export declare class WarscriptConfig {
3
+ private constructor();
4
+ static AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH: boolean;
5
+ }
package/config.lua ADDED
@@ -0,0 +1,10 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local ____exports = {}
4
+ ____exports.WarscriptConfig = __TS__Class()
5
+ local WarscriptConfig = ____exports.WarscriptConfig
6
+ WarscriptConfig.name = "WarscriptConfig"
7
+ function WarscriptConfig.prototype.____constructor(self)
8
+ end
9
+ WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH = true
10
+ return ____exports
@@ -30,12 +30,10 @@ export declare class Effect extends Handle<jeffect> {
30
30
  set pitch(pitch: number);
31
31
  get roll(): number;
32
32
  set roll(roll: number);
33
- static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, pos: Vec2): T;
34
- static createTarget<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), model: string, target: Widget, attachPoint: string): T;
33
+ static create<T extends Effect>(this: typeof Effect & (new (handle: jeffect) => T), modelPath: string, xOrWidget: number | Widget, yOrAttachmentPoint?: number | string, parameters?: EffectParameters): T;
35
34
  static flash(modelPath: string, ...args: [
36
35
  ...pointOrWidget: [x: number, y: number] | [widget: Widget, attachmentPoint?: string],
37
36
  ...parametersOrDuration: [parametersOrDuration?: EffectParameters | number] | [duration?: number, parameters?: EffectParameters]
38
37
  ]): void;
39
- static flashTarget(model: string, target: Widget, attachPoint: string, duration?: number): void;
40
38
  }
41
39
  export {};
@@ -4,7 +4,7 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
5
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
6
6
  local ____exports = {}
7
- local dummyPlayer, flash
7
+ local dummyPlayer, addSpecialEffectInternal, flash
8
8
  local ____handle = require("core.types.handle")
9
9
  local Handle = ____handle.Handle
10
10
  local ____playerColor = require("core.types.playerColor")
@@ -119,6 +119,7 @@ local function setSpecialEffectColor(effect, color)
119
119
  dummyPlayer.color = dummyColor
120
120
  end
121
121
  local setters = {scale = setSpecialEffectScale, color = setSpecialEffectColor, pitch = setSpecialEffectPitchDegrees, roll = setSpecialEffectRollDegrees}
122
+ local setterProperties = {"scale", "color", "pitch", "roll"}
122
123
  dummyPlayer = Player.neutralExtra
123
124
  local temporaryEffects = {}
124
125
  local temporaryEffectsDurations = {}
@@ -177,11 +178,14 @@ function Effect.prototype.onDestroy(self)
177
178
  destroyEffect(self.handle)
178
179
  return Handle.prototype.onDestroy(self)
179
180
  end
180
- function Effect.create(self, model, pos)
181
- return self:of(addSpecialEffect(model, pos.x, pos.y))
182
- end
183
- function Effect.createTarget(self, model, target, attachPoint)
184
- return self:of(addSpecialEffectTarget(model, target.handle, attachPoint))
181
+ function Effect.create(self, modelPath, xOrWidget, yOrAttachmentPoint, parameters)
182
+ local effect = self:of(addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters))
183
+ if parameters ~= nil then
184
+ effect[100] = parameters.color
185
+ effect[101] = parameters.pitch
186
+ effect[102] = parameters.roll
187
+ end
188
+ return effect
185
189
  end
186
190
  function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, parametersOrDuration, parameters)
187
191
  if type(parametersOrDuration) ~= "number" then
@@ -206,24 +210,12 @@ function Effect.flash(self, modelPath, xOrWidget, yOrOrAttachmentPoint, paramete
206
210
  parameters
207
211
  )
208
212
  end
209
- function Effect.flashTarget(self, model, target, attachPoint, duration)
210
- local effect = addSpecialEffectTarget(model, target.handle, attachPoint)
211
- if effect ~= nil then
212
- if duration and duration > 0 then
213
- temporaryEffectsCount = temporaryEffectsCount + 1
214
- temporaryEffects[temporaryEffectsCount] = effect
215
- temporaryEffectsDurations[temporaryEffectsCount] = duration
216
- else
217
- destroyEffect(effect)
218
- end
219
- end
220
- end
221
213
  __TS__SetDescriptor(
222
214
  Effect.prototype,
223
215
  "color",
224
216
  {
225
217
  get = function(self)
226
- return self[100] or PlayerColor.black
218
+ return self[100] or PlayerColor.red
227
219
  end,
228
220
  set = function(self, color)
229
221
  setSpecialEffectColor(self.handle, color)
@@ -273,30 +265,35 @@ __TS__SetDescriptor(
273
265
  },
274
266
  true
275
267
  )
276
- flash = function(modelPath, xOrWidget, yOrOrAttachmentPoint, duration, parameters)
268
+ addSpecialEffectInternal = function(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
277
269
  local coordinatesProvided = type(xOrWidget) == "number"
278
270
  local isPositional = coordinatesProvided or (parameters and parameters.detached) == true
279
271
  local x = not isPositional and 0 or (coordinatesProvided and xOrWidget or xOrWidget.x)
280
- local y = not isPositional and 0 or (coordinatesProvided and yOrOrAttachmentPoint or xOrWidget.y)
281
- local effect = isPositional and addSpecialEffect(modelPath, x, y) or addSpecialEffectTarget(modelPath, xOrWidget.handle, yOrOrAttachmentPoint or "origin")
282
- if isPositional and not coordinatesProvided and (parameters and parameters.scale) == nil and __TS__InstanceOf(xOrWidget, Unit) then
283
- setSpecialEffectScale(effect, xOrWidget.scale)
284
- end
272
+ local y = not isPositional and 0 or (coordinatesProvided and yOrAttachmentPoint or xOrWidget.y)
273
+ local effect = isPositional and addSpecialEffect(modelPath, x, y) or addSpecialEffectTarget(modelPath, xOrWidget.handle, yOrAttachmentPoint or "origin")
285
274
  if parameters ~= nil then
286
- for key, value in ____pairs(parameters) do
287
- if key ~= "zOffset" and key ~= "detached" and key ~= "scaleZOffset" and key ~= "delay" then
288
- setters[key](effect, value)
275
+ if isPositional and parameters.scale == nil and __TS__InstanceOf(xOrWidget, Unit) then
276
+ setSpecialEffectScale(effect, xOrWidget.scale)
277
+ end
278
+ for ____, property in ipairs(setterProperties) do
279
+ local value = parameters[property]
280
+ if value ~= nil then
281
+ setters[property](effect, value)
289
282
  end
290
283
  end
291
284
  if isPositional and parameters.zOffset ~= nil then
292
285
  moveLocation(location, x, y)
293
286
  local z = __TS__InstanceOf(xOrWidget, Unit) and getLocationZ(location) + xOrWidget.flyHeight or getLocationZ(location)
294
- BlzSetSpecialEffectZ(
287
+ setSpecialEffectZ(
295
288
  effect,
296
289
  z + parameters.zOffset * (parameters.scaleZOffset and getSpecialEffectScale(effect) or 1)
297
290
  )
298
291
  end
299
292
  end
293
+ return effect
294
+ end
295
+ flash = function(modelPath, xOrWidget, yOrAttachmentPoint, duration, parameters)
296
+ local effect = addSpecialEffectInternal(modelPath, xOrWidget, yOrAttachmentPoint, parameters)
300
297
  if duration ~= nil and duration > 0 then
301
298
  temporaryEffectsCount = temporaryEffectsCount + 1
302
299
  temporaryEffects[temporaryEffectsCount] = effect
@@ -15,13 +15,32 @@ local Event = ____event.Event
15
15
  local TriggerEvent = ____event.TriggerEvent
16
16
  local ____timer = require("core.types.timer")
17
17
  local Timer = ____timer.Timer
18
+ local ____frame_2Dcoordinates = require("engine.internal.misc.frame-coordinates")
19
+ local FRAME_MAX_Y = ____frame_2Dcoordinates.FRAME_MAX_Y
20
+ local FRAME_MIN_Y = ____frame_2Dcoordinates.FRAME_MIN_Y
21
+ local getFrameMinXMaxX = ____frame_2Dcoordinates.getFrameMinXMaxX
22
+ local ____playerCamera = require("core.types.playerCamera")
23
+ local frameCoordinatesToWorld = ____playerCamera.frameCoordinatesToWorld
24
+ local worldCoordinatesToFrame = ____playerCamera.worldCoordinatesToFrame
25
+ local ____get_2Dterrain_2Dz = require("engine.internal.misc.get-terrain-z")
26
+ local getTerrainZ = ____get_2Dterrain_2Dz.getTerrainZ
27
+ local ____lua_2Dsets = require("utility.lua-sets")
28
+ local mutableLuaSet = ____lua_2Dsets.mutableLuaSet
29
+ local ____socket = require("net.socket")
30
+ local Socket = ____socket.Socket
31
+ local ____lua_2Dmaps = require("utility.lua-maps")
32
+ local getOrPut = ____lua_2Dmaps.getOrPut
33
+ local luaMapInvert = ____lua_2Dmaps.luaMapInvert
34
+ local luaMapOf = ____lua_2Dmaps.luaMapOf
35
+ local mutableLuaMap = ____lua_2Dmaps.mutableLuaMap
18
36
  local frameClick = BlzFrameClick
19
37
  local frameGetEnable = BlzFrameGetEnable
20
38
  local frameIsVisible = BlzFrameIsVisible
21
39
  local frameSetEnable = BlzFrameSetEnable
22
40
  local frameSetScale = BlzFrameSetScale
23
- local getCameraTargetPositionX = GetCameraTargetPositionX
24
- local getCameraTargetPositionY = GetCameraTargetPositionY
41
+ local getHandleId = GetHandleId
42
+ local getOriginFrame = BlzGetOriginFrame
43
+ local location = Location
25
44
  local ____rawget = _G.rawget
26
45
  local rawset = _G.rawset
27
46
  local invoke = Event.invoke
@@ -123,6 +142,30 @@ do
123
142
  FramePoint.BOTTOM_RIGHT = FRAMEPOINT_BOTTOMRIGHT
124
143
  end
125
144
  local tooltipByFrame = setmetatable({}, {__mode = "k"})
145
+ local keyByAsyncInitOriginFrameType = luaMapOf(ORIGIN_FRAME_PORTRAIT_HP_TEXT, "hp", ORIGIN_FRAME_PORTRAIT_MANA_TEXT, "mana")
146
+ local asyncInitOriginFrameTypeByKey = luaMapInvert(keyByAsyncInitOriginFrameType)
147
+ local seenAsyncInitOriginFrameTypes = mutableLuaSet()
148
+ local seenAsyncInitOriginFrameTypesSocket = __TS__New(Socket)
149
+ local seenPlayersByAsyncInitOriginFrameType = mutableLuaMap()
150
+ seenAsyncInitOriginFrameTypesSocket.onMessage:addListener(function(player, key)
151
+ local asyncInitOriginFrameType = asyncInitOriginFrameTypeByKey[key]
152
+ if asyncInitOriginFrameType ~= nil then
153
+ getOrPut(seenPlayersByAsyncInitOriginFrameType, asyncInitOriginFrameType, mutableLuaSet)[player] = true
154
+ end
155
+ end)
156
+ local function haveAllPlayersSeenAsyncInitOriginFrameType(frame)
157
+ local players = seenPlayersByAsyncInitOriginFrameType[frame]
158
+ if players == nil then
159
+ return false
160
+ end
161
+ for ____, player in ipairs(Player.all) do
162
+ if player.isUser and player.isPlaying and not (players[player] ~= nil) then
163
+ return false
164
+ end
165
+ end
166
+ keyByAsyncInitOriginFrameType[frame] = nil
167
+ return true
168
+ end
126
169
  ____exports.Frame = __TS__Class()
127
170
  local Frame = ____exports.Frame
128
171
  Frame.name = "Frame"
@@ -301,7 +344,17 @@ function Frame.byOrigin(self, frameType, index)
301
344
  if index == nil then
302
345
  index = 0
303
346
  end
304
- return self:of(BlzGetOriginFrame(frameType, index))
347
+ local frame = getOriginFrame(frameType, index)
348
+ local asyncInitOriginFrameTypeKey = keyByAsyncInitOriginFrameType[frameType]
349
+ if index == 0 and asyncInitOriginFrameTypeKey ~= nil and not haveAllPlayersSeenAsyncInitOriginFrameType(frameType) then
350
+ if getHandleId(frame) == 0 or seenAsyncInitOriginFrameTypes[frameType] ~= nil then
351
+ location(0, 0)
352
+ else
353
+ seenAsyncInitOriginFrameTypes[frameType] = true
354
+ seenAsyncInitOriginFrameTypesSocket:send(asyncInitOriginFrameTypeKey)
355
+ end
356
+ end
357
+ return self:of(frame)
305
358
  end
306
359
  Frame.GAME_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_GAME_UI)
307
360
  Frame.CONSOLE_UI = ____exports.Frame:byOrigin(ORIGIN_FRAME_SIMPLE_UI_PARENT)
@@ -344,27 +397,21 @@ __TS__ObjectDefineProperty(
344
397
  Frame,
345
398
  "minX",
346
399
  {get = function(self)
347
- local w = BlzGetLocalClientWidth()
348
- local h = BlzGetLocalClientHeight()
349
- local width4by3 = (w - h / 600 * 800) / 2
350
- local pxtodpi = 0.6 / h
351
- return -width4by3 * pxtodpi
400
+ local minX = getFrameMinXMaxX()
401
+ return minX
352
402
  end}
353
403
  )
354
404
  __TS__ObjectDefineProperty(
355
405
  Frame,
356
406
  "maxX",
357
407
  {get = function(self)
358
- local w = BlzGetLocalClientWidth()
359
- local h = BlzGetLocalClientHeight()
360
- local width4by3 = (w - h / 600 * 800) / 2
361
- local pxtodpi = 0.6 / h
362
- return (-width4by3 + w) * pxtodpi
408
+ local ____, maxX = getFrameMinXMaxX()
409
+ return maxX
363
410
  end}
364
411
  )
365
412
  Frame.centerX = 0.4
366
- Frame.minY = 0
367
- Frame.maxY = 0.6
413
+ Frame.minY = FRAME_MIN_Y
414
+ Frame.maxY = FRAME_MAX_Y
368
415
  Frame.centerY = 0.3
369
416
  __TS__SetDescriptor(
370
417
  Frame.prototype,
@@ -938,16 +985,19 @@ __TS__ObjectDefineProperty(
938
985
  local event = __TS__New(Event)
939
986
  local syncX = 0
940
987
  local syncY = 0
941
- local syncCamX = getCameraTargetPositionX()
942
- local syncCamY = getCameraTargetPositionY()
988
+ local syncFrameX = 0
989
+ local syncFrameY = 0
943
990
  local lastX = syncX
944
991
  local lastY = syncY
945
992
  self.onMouseMove:addListener(function(player, x, y)
946
993
  if player.isLocal then
947
994
  syncX = x
948
995
  syncY = y
949
- syncCamX = getCameraTargetPositionX()
950
- syncCamY = getCameraTargetPositionY()
996
+ syncFrameX, syncFrameY = worldCoordinatesToFrame(
997
+ x,
998
+ y,
999
+ getTerrainZ(x, y)
1000
+ )
951
1001
  lastX = x
952
1002
  lastY = y
953
1003
  invoke(event, x, y)
@@ -957,9 +1007,8 @@ __TS__ObjectDefineProperty(
957
1007
  if syncX == 0 and syncY == 0 then
958
1008
  return
959
1009
  end
960
- local x = syncX + (getCameraTargetPositionX() - syncCamX)
961
- local y = syncY + (getCameraTargetPositionY() - syncCamY)
962
- if x ~= lastX or y ~= lastY then
1010
+ local x, y, ____, isDefinite = frameCoordinatesToWorld(syncFrameX, syncFrameY)
1011
+ if isDefinite and (x ~= lastX or y ~= lastY) then
963
1012
  lastX = x
964
1013
  lastY = y
965
1014
  invoke(event, x, y)
@@ -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;
@@ -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,14 +21,35 @@ 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"
@@ -83,6 +104,12 @@ end
83
104
  function Player.prototype.isEnemyOf(self, other)
84
105
  return IsPlayerEnemy(self.handle, other.handle)
85
106
  end
107
+ function Player.prototype.setAlliance(self, other, ____type, value)
108
+ setPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type], value)
109
+ end
110
+ function Player.prototype.getAlliance(self, other, ____type)
111
+ return getPlayerAlliance(self.handle, other.handle, nativeByPlayerAllianceType[____type])
112
+ end
86
113
  function Player.prototype.setAbilityAvailable(self, abilityId, available)
87
114
  setPlayerAbilityAvailable(self.handle, abilityId, available)
88
115
  end
@@ -122,14 +149,11 @@ function Player.getMouseEvent(self, event, collector)
122
149
  self.events[eventId] = __TS__New(
123
150
  TriggerEvent,
124
151
  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
152
+ Timer:run(function()
153
+ for ____, player in ipairs(____exports.Player.all) do
154
+ TriggerRegisterPlayerEvent(trigger, player.handle, event)
131
155
  end
132
- )
156
+ end)
133
157
  end,
134
158
  collector or (function() return {} end)
135
159
  )
@@ -178,7 +202,7 @@ function Player.getKeyEvent(self, isDown)
178
202
  TriggerAddCondition(
179
203
  trigger,
180
204
  Condition(function()
181
- local player = ____exports.Player:of(GetTriggerPlayer())
205
+ local player = ____exports.Player:of(getTriggerPlayer())
182
206
  local key = BlzGetTriggerPlayerKey()
183
207
  local metaKey = BlzGetTriggerPlayerMetaKey()
184
208
  Event.invoke(event, player, key, metaKey)
@@ -249,7 +273,7 @@ Player.all = (function()
249
273
  end
250
274
  return all
251
275
  end)()
252
- Player["local"] = ____exports.Player:of(GetLocalPlayer())
276
+ Player["local"] = ____exports.Player:of(PLAYER_LOCAL_HANDLE)
253
277
  Player.neutralPassive = ____exports.Player.all[PLAYER_NEUTRAL_PASSIVE + 1]
254
278
  Player.neutralAggressive = ____exports.Player.all[PLAYER_NEUTRAL_AGGRESSIVE + 1]
255
279
  Player.neutralVictim = ____exports.Player.all[bj_PLAYER_NEUTRAL_VICTIM + 1]
@@ -277,6 +301,7 @@ __TS__SetDescriptor(
277
301
  end,
278
302
  set = function(self, color)
279
303
  SetPlayerColor(self.handle, color.handle)
304
+ Event.invoke(playerColorChangedEvent, self)
280
305
  end
281
306
  },
282
307
  true
@@ -367,13 +392,32 @@ __TS__SetDescriptor(
367
392
  end},
368
393
  true
369
394
  )
395
+ __TS__ObjectDefineProperty(
396
+ Player,
397
+ "allianceChangedEvent",
398
+ {get = function(self)
399
+ local event = lazyRecord(function(____type)
400
+ return __TS__New(
401
+ TriggerEvent,
402
+ function(trigger)
403
+ for ____, player in ipairs(____exports.Player.all) do
404
+ triggerRegisterPlayerAllianceChange(trigger, player.handle, nativeByPlayerAllianceType[____type])
405
+ end
406
+ end,
407
+ function() return ____exports.Player:of(getTriggerPlayer()) end
408
+ )
409
+ end)
410
+ rawset(self, "allianceChangedEvent", event)
411
+ return event
412
+ end}
413
+ )
370
414
  __TS__ObjectDefineProperty(
371
415
  Player,
372
416
  "onLeave",
373
417
  {get = function(self)
374
418
  return ____exports.Player:getEvent(
375
419
  EVENT_PLAYER_LEAVE,
376
- function() return ____exports.Player:of(GetTriggerPlayer()) end
420
+ function() return ____exports.Player:of(getTriggerPlayer()) end
377
421
  )
378
422
  end}
379
423
  )
@@ -383,7 +427,7 @@ __TS__ObjectDefineProperty(
383
427
  {get = function(self)
384
428
  return ____exports.Player:getMouseEvent(
385
429
  EVENT_PLAYER_MOUSE_DOWN,
386
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
430
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
387
431
  )
388
432
  end}
389
433
  )
@@ -393,7 +437,7 @@ __TS__ObjectDefineProperty(
393
437
  {get = function(self)
394
438
  return ____exports.Player:getMouseEvent(
395
439
  EVENT_PLAYER_MOUSE_UP,
396
- function() return ____exports.Player:of(GetTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
440
+ function() return ____exports.Player:of(getTriggerPlayer()), BlzGetTriggerPlayerMouseButton() end
397
441
  )
398
442
  end}
399
443
  )
@@ -403,7 +447,7 @@ __TS__ObjectDefineProperty(
403
447
  {get = function(self)
404
448
  return ____exports.Player:getMouseEvent(
405
449
  EVENT_PLAYER_MOUSE_MOVE,
406
- function() return ____exports.Player:of(GetTriggerPlayer()), vec2(
450
+ function() return ____exports.Player:of(getTriggerPlayer()), vec2(
407
451
  BlzGetTriggerPlayerMouseX(),
408
452
  BlzGetTriggerPlayerMouseY()
409
453
  ) end
@@ -439,10 +483,11 @@ __TS__ObjectDefineProperty(
439
483
  TriggerRegisterPlayerChatEvent(trigger, player.handle, "", false)
440
484
  end
441
485
  end,
442
- function() return ____exports.Player:of(GetTriggerPlayer()), GetEventPlayerChatString() end
486
+ function() return ____exports.Player:of(getTriggerPlayer()), GetEventPlayerChatString() end
443
487
  )
444
488
  rawset(self, "onChat", event)
445
489
  return event
446
490
  end}
447
491
  )
492
+ Player.colorChangedEvent = playerColorChangedEvent
448
493
  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
  }