warscript 0.0.1-dev.ea69747 → 0.0.1-dev.ebee5b2

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 (124) hide show
  1. package/attributes.d.ts +12 -0
  2. package/attributes.lua +16 -0
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/core/types/frame.d.ts +4 -1
  6. package/core/types/frame.lua +22 -1
  7. package/core/types/group.d.ts +0 -1
  8. package/core/types/handle.d.ts +2 -1
  9. package/core/types/handle.lua +5 -0
  10. package/core/types/image.d.ts +0 -1
  11. package/core/types/missile.d.ts +2 -2
  12. package/core/types/missile.lua +8 -2
  13. package/core/types/unit.lua +8 -0
  14. package/decl/index.d.ts +1 -0
  15. package/engine/ability.d.ts +1 -1
  16. package/engine/behavior.d.ts +10 -10
  17. package/engine/behaviour/ability/apply-buff.d.ts +3 -5
  18. package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
  19. package/engine/behaviour/ability/apply-unit-behavior.lua +31 -9
  20. package/engine/behaviour/ability/damage.d.ts +33 -11
  21. package/engine/behaviour/ability/damage.lua +89 -31
  22. package/engine/behaviour/ability/heal.d.ts +33 -6
  23. package/engine/behaviour/ability/heal.lua +89 -10
  24. package/engine/behaviour/ability/instant-impact.lua +4 -0
  25. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  26. package/engine/behaviour/ability/restore-mana.lua +29 -0
  27. package/engine/behaviour/ability.d.ts +8 -1
  28. package/engine/behaviour/ability.lua +62 -0
  29. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  30. package/engine/behaviour/unit.d.ts +8 -2
  31. package/engine/behaviour/unit.lua +27 -0
  32. package/engine/buff.d.ts +62 -20
  33. package/engine/buff.lua +247 -72
  34. package/engine/game-map.d.ts +7 -0
  35. package/engine/game-map.lua +32 -0
  36. package/engine/internal/ability.d.ts +1 -1
  37. package/engine/internal/item+owner.lua +2 -2
  38. package/engine/internal/mechanics/ability-duration.d.ts +1 -3
  39. package/engine/internal/mechanics/ability-duration.lua +2 -0
  40. package/engine/internal/mechanics/cast-ability.d.ts +2 -0
  41. package/engine/internal/mechanics/cast-ability.lua +86 -0
  42. package/engine/internal/unit/bonus.d.ts +9 -8
  43. package/engine/internal/unit/bonus.lua +6 -1
  44. package/engine/internal/unit/detach-missiles.d.ts +7 -0
  45. package/engine/internal/unit/detach-missiles.lua +30 -0
  46. package/engine/internal/unit+ability.lua +2 -2
  47. package/engine/internal/unit+transport.lua +4 -10
  48. package/engine/internal/unit-missile-launch.lua +1 -1
  49. package/engine/internal/unit.d.ts +59 -13
  50. package/engine/internal/unit.lua +306 -93
  51. package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
  52. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  53. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  54. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  55. package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
  56. package/engine/object-data/entry/ability-type/blink.lua +39 -0
  57. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  58. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  59. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  60. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  61. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  62. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  63. package/engine/object-data/entry/ability-type.d.ts +1 -1
  64. package/engine/object-data/entry/ability-type.lua +1 -0
  65. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  66. package/engine/object-data/entry/buff-type/applicable.lua +27 -71
  67. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  68. package/engine/object-data/entry/buff-type.d.ts +0 -1
  69. package/engine/object-data/entry/destructible-type.d.ts +0 -1
  70. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  71. package/engine/object-data/entry/item-type.d.ts +0 -1
  72. package/engine/object-data/entry/lightning-type.d.ts +0 -1
  73. package/engine/object-data/entry/unit-type.d.ts +42 -2
  74. package/engine/object-data/entry/unit-type.lua +378 -50
  75. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  76. package/engine/object-data/entry/upgrade.d.ts +0 -1
  77. package/engine/object-data/entry.d.ts +2 -3
  78. package/engine/object-field/ability.d.ts +25 -6
  79. package/engine/object-field/ability.lua +56 -0
  80. package/engine/object-field/unit.d.ts +1 -0
  81. package/engine/object-field/unit.lua +3 -0
  82. package/engine/object-field.d.ts +6 -4
  83. package/engine/object-field.lua +38 -12
  84. package/engine/random.d.ts +1 -0
  85. package/engine/random.lua +9 -0
  86. package/engine/standard/entries/unit-type.d.ts +42 -1
  87. package/engine/standard/entries/unit-type.lua +42 -1
  88. package/engine/standard/fields/ability.d.ts +1 -1
  89. package/engine/standard/fields/ability.lua +1 -1
  90. package/engine/unit.d.ts +1 -0
  91. package/engine/unit.lua +10 -2
  92. package/event.d.ts +2 -3
  93. package/event.lua +9 -5
  94. package/exception.d.ts +2 -0
  95. package/exception.lua +4 -0
  96. package/global/vec2.lua +1 -0
  97. package/lualib_bundle.lua +146 -42
  98. package/math/vec2.d.ts +2 -9
  99. package/math.d.ts +0 -2
  100. package/net/socket.d.ts +7 -1
  101. package/net/socket.lua +45 -4
  102. package/network.d.ts +1 -0
  103. package/network.lua +3 -2
  104. package/objutil/ability.d.ts +0 -1
  105. package/objutil/buff.d.ts +0 -1
  106. package/objutil/buff.lua +1 -1
  107. package/objutil/object.d.ts +0 -1
  108. package/objutil/unit.d.ts +0 -1
  109. package/package.json +13 -14
  110. package/property.d.ts +55 -0
  111. package/property.lua +374 -0
  112. package/string.d.ts +30 -0
  113. package/string.lua +14 -0
  114. package/util/stream.d.ts +0 -1
  115. package/utility/arrays.d.ts +4 -5
  116. package/utility/arrays.lua +4 -1
  117. package/utility/bit-set.d.ts +0 -2
  118. package/utility/linked-set.d.ts +31 -9
  119. package/utility/linked-set.lua +21 -2
  120. package/utility/lua-maps.d.ts +1 -2
  121. package/utility/lua-sets.d.ts +1 -2
  122. package/utility/types.d.ts +3 -2
  123. package/core/mapbounds.d.ts +0 -8
  124. package/core/mapbounds.lua +0 -12
@@ -5,13 +5,17 @@ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
5
5
  local __TS__New = ____lualib.__TS__New
6
6
  local __TS__Class = ____lualib.__TS__Class
7
7
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
8
9
  local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
10
+ local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
11
+ local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
12
+ local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
9
13
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
10
- local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
11
14
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
12
15
  local Set = ____lualib.Set
13
16
  local __TS__Spread = ____lualib.__TS__Spread
14
17
  local ____exports = {}
18
+ local unitInventorySize, unitItemInSlot, unitDropItemSlot, unitRemoveItemFromSlot, unitAddItem, isItemPowerup, setItemBooleanField
15
19
  local ____handle = require("core.types.handle")
16
20
  local Handle = ____handle.Handle
17
21
  local ____player = require("core.types.player")
@@ -92,6 +96,10 @@ local isUnitInRangeXY = IsUnitInRangeXY
92
96
  local isUnitInRange = IsUnitInRange
93
97
  local setResourceAmount = SetResourceAmount
94
98
  local getResourceAmount = GetResourceAmount
99
+ local getUnitWeaponRealField = BlzGetUnitWeaponRealField
100
+ local setUnitWeaponRealField = BlzSetUnitWeaponRealField
101
+ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
102
+ local setUnitWeaponStringField = BlzSetUnitWeaponStringField
95
103
  local getUnitAbilityLevel = GetUnitAbilityLevel
96
104
  local unitDisableAbility = BlzUnitDisableAbility
97
105
  local unitInterruptAttack = BlzUnitInterruptAttack
@@ -275,16 +283,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
275
283
  end
276
284
  local function dispatch(event, idGetter, argsGetter)
277
285
  local initialized = false
278
- local x = {}
279
286
  return setmetatable(
280
- x,
287
+ {},
281
288
  {
282
289
  __index = function(self, id)
283
290
  if type(id) ~= "number" then
284
291
  return event[id]
285
292
  end
286
293
  if not initialized then
287
- local invoke = Event.invoke
288
294
  event:addListener(function(...)
289
295
  local id = idGetter(...)
290
296
  local dispatched = rawget(self, id)
@@ -322,7 +328,6 @@ local function dispatchAbility(event)
322
328
  return event[id]
323
329
  end
324
330
  if not initialized then
325
- local invoke = Event.invoke
326
331
  event:addListener(function(unit, ability, ...)
327
332
  local dispatched = rawget(self, ability.typeId)
328
333
  if dispatched ~= nil then
@@ -387,53 +392,196 @@ local getters = {
387
392
  return BlzGetUnitArmor(unit)
388
393
  end
389
394
  }
390
- local weaponGetters = {
391
- index = function(self, handle, index)
392
- return index
393
- end,
394
- cooldown = function(self, handle, index)
395
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, index)
396
- end,
397
- projectileArc = function(self, handle, index)
398
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, index)
399
- end,
400
- projectileArt = function(self, handle, index)
401
- return BlzGetUnitWeaponStringField(handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, index)
402
- end,
403
- projectileSpeed = function(self, handle, index)
404
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, index)
405
- end,
406
- attackPoint = function(self, handle, index)
407
- return BlzGetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, index)
408
- end
409
- }
410
- local weaponSetters = {
411
- cooldown = function(self, handle, index, value)
412
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, index, value))
413
- end,
414
- projectileArc = function(self, handle, index, value)
415
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, index, value))
416
- end,
417
- projectileArt = function(self, handle, index, value)
418
- assert(BlzSetUnitWeaponStringField(handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, index, value))
419
- end,
420
- projectileSpeed = function(self, handle, index, value)
421
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, index, value))
422
- end,
423
- attackPoint = function(self, handle, index, value)
424
- assert(BlzSetUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, index, value))
395
+ ____exports.UnitItems = __TS__Class()
396
+ local UnitItems = ____exports.UnitItems
397
+ UnitItems.name = "UnitItems"
398
+ function UnitItems.prototype.____constructor(self, handle)
399
+ self.handle = handle
400
+ end
401
+ function UnitItems.prototype.__newindex(self, slot, item)
402
+ local handle = self.handle
403
+ if slot < 0 or slot >= unitInventorySize(handle) then
404
+ return
425
405
  end
426
- }
427
- local weaponMetatable = {
428
- __index = function(self, key)
429
- return weaponGetters[key](weaponGetters, self.h, self.i)
430
- end,
431
- __newindex = function(self, key, value)
432
- weaponSetters[key](weaponSetters, self.h, self.i, value)
406
+ unitRemoveItemFromSlot(handle, slot)
407
+ if item ~= nil then
408
+ local itemHandle = item.handle
409
+ local isPowerup = isItemPowerup(itemHandle)
410
+ if isPowerup then
411
+ setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, false)
412
+ end
413
+ unitAddItem(handle, itemHandle)
414
+ unitDropItemSlot(handle, itemHandle, slot)
415
+ if isPowerup then
416
+ setItemBooleanField(itemHandle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, true)
417
+ end
433
418
  end
434
- }
435
- local unitInventorySize = UnitInventorySize
436
- local unitItemInSlot = UnitItemInSlot
419
+ end
420
+ function UnitItems.prototype.__index(self, slot)
421
+ return Item:of(unitItemInSlot(self.handle, slot))
422
+ end
423
+ function UnitItems.prototype.__len(self)
424
+ return unitInventorySize(self.handle)
425
+ end
426
+ ____exports.UnitWeapon = __TS__Class()
427
+ local UnitWeapon = ____exports.UnitWeapon
428
+ UnitWeapon.name = "UnitWeapon"
429
+ function UnitWeapon.prototype.____constructor(self, unit, index)
430
+ self.unit = unit
431
+ self.index = index
432
+ end
433
+ __TS__SetDescriptor(
434
+ UnitWeapon.prototype,
435
+ "cooldown",
436
+ {
437
+ get = function(self)
438
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
439
+ end,
440
+ set = function(self, cooldown)
441
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
442
+ end
443
+ },
444
+ true
445
+ )
446
+ __TS__SetDescriptor(
447
+ UnitWeapon.prototype,
448
+ "damage",
449
+ {
450
+ get = function(self)
451
+ local minimumDamage = self.damageBase + self.damageDiceCount
452
+ local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
453
+ return {minimumDamage, maximumDamage}
454
+ end,
455
+ set = function(self, ____bindingPattern0)
456
+ local maximumDamage
457
+ local minimumDamage
458
+ minimumDamage = ____bindingPattern0[1]
459
+ maximumDamage = ____bindingPattern0[2]
460
+ self.damageBase = minimumDamage - 1
461
+ self.damageDiceCount = 1
462
+ self.damageDiceSideCount = maximumDamage - minimumDamage + 1
463
+ end
464
+ },
465
+ true
466
+ )
467
+ __TS__SetDescriptor(
468
+ UnitWeapon.prototype,
469
+ "damageBase",
470
+ {
471
+ get = function(self)
472
+ return BlzGetUnitBaseDamage(self.unit.handle, self.index)
473
+ end,
474
+ set = function(self, damageBase)
475
+ BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
476
+ end
477
+ },
478
+ true
479
+ )
480
+ __TS__SetDescriptor(
481
+ UnitWeapon.prototype,
482
+ "damageDiceCount",
483
+ {
484
+ get = function(self)
485
+ return BlzGetUnitDiceNumber(self.unit.handle, self.index)
486
+ end,
487
+ set = function(self, damageDiceCount)
488
+ BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
489
+ end
490
+ },
491
+ true
492
+ )
493
+ __TS__SetDescriptor(
494
+ UnitWeapon.prototype,
495
+ "damageDiceSideCount",
496
+ {
497
+ get = function(self)
498
+ return BlzGetUnitDiceSides(self.unit.handle, self.index)
499
+ end,
500
+ set = function(self, damageDiceSideCount)
501
+ BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
502
+ end
503
+ },
504
+ true
505
+ )
506
+ __TS__SetDescriptor(
507
+ UnitWeapon.prototype,
508
+ "range",
509
+ {
510
+ get = function(self)
511
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
512
+ end,
513
+ set = function(self, range)
514
+ local handle = self.unit.handle
515
+ local index = self.index
516
+ setUnitWeaponRealField(
517
+ handle,
518
+ UNIT_WEAPON_RF_ATTACK_RANGE,
519
+ index + 1,
520
+ getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
521
+ )
522
+ end
523
+ },
524
+ true
525
+ )
526
+ __TS__SetDescriptor(
527
+ UnitWeapon.prototype,
528
+ "impactDelay",
529
+ {
530
+ get = function(self)
531
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
532
+ end,
533
+ set = function(self, impactDelay)
534
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
535
+ end
536
+ },
537
+ true
538
+ )
539
+ __TS__SetDescriptor(
540
+ UnitWeapon.prototype,
541
+ "missileArc",
542
+ {
543
+ get = function(self)
544
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
545
+ end,
546
+ set = function(self, missileArc)
547
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
548
+ end
549
+ },
550
+ true
551
+ )
552
+ __TS__SetDescriptor(
553
+ UnitWeapon.prototype,
554
+ "missileModelPath",
555
+ {
556
+ get = function(self)
557
+ return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
558
+ end,
559
+ set = function(self, missileModelPath)
560
+ setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
561
+ end
562
+ },
563
+ true
564
+ )
565
+ __TS__SetDescriptor(
566
+ UnitWeapon.prototype,
567
+ "missileSpeed",
568
+ {
569
+ get = function(self)
570
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
571
+ end,
572
+ set = function(self, missileSpeed)
573
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
574
+ end
575
+ },
576
+ true
577
+ )
578
+ unitInventorySize = UnitInventorySize
579
+ unitItemInSlot = UnitItemInSlot
580
+ unitDropItemSlot = UnitDropItemSlot
581
+ unitRemoveItemFromSlot = UnitRemoveItemFromSlot
582
+ unitAddItem = UnitAddItem
583
+ isItemPowerup = IsItemPowerup
584
+ setItemBooleanField = BlzSetItemBooleanField
437
585
  local getItemAbility = BlzGetItemAbility
438
586
  local getUnitAbility = BlzGetUnitAbility
439
587
  local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
@@ -442,8 +590,6 @@ local getAbilityName = GetAbilityName
442
590
  local unitAddAbility = UnitAddAbility
443
591
  local getUnitGoldCost = GetUnitGoldCost
444
592
  local getUnitLumberCost = GetUnitWoodCost
445
- local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
446
- local unitAddItem = UnitAddItem
447
593
  local unitRemoveAbility = UnitRemoveAbility
448
594
  local function retrieveAbility(unit, ability, abilityId)
449
595
  if ability == nil then
@@ -520,6 +666,23 @@ for ____, player in ipairs(Player.all) do
520
666
  ShowUnit(dummy, false)
521
667
  dummies[player] = dummy
522
668
  end
669
+ local function delayHealthChecksCallback(unit)
670
+ local counter = (unit[102] or 0) - 1
671
+ if counter ~= 0 then
672
+ unit[102] = counter
673
+ return
674
+ end
675
+ unit[102] = nil
676
+ local healthBonus = unit[103]
677
+ if healthBonus ~= nil then
678
+ unit[103] = nil
679
+ local handle = unit.handle
680
+ BlzSetUnitMaxHP(
681
+ handle,
682
+ BlzGetUnitMaxHP(handle) - healthBonus
683
+ )
684
+ end
685
+ end
523
686
  ____exports.Unit = __TS__Class()
524
687
  local Unit = ____exports.Unit
525
688
  Unit.name = "Unit"
@@ -674,6 +837,10 @@ end
674
837
  function Unit.prototype.queueAnimation(self, animation)
675
838
  queueUnitAnimation(self.handle, animation)
676
839
  end
840
+ function Unit.prototype.delayHealthChecks(self)
841
+ self[102] = (self[102] or 0) + 1
842
+ Timer:run(delayHealthChecksCallback, self)
843
+ end
677
844
  function Unit.prototype.setPosition(self, x, y)
678
845
  setUnitPosition(self.handle, x, y)
679
846
  end
@@ -687,8 +854,15 @@ end
687
854
  function Unit.prototype.kill(self)
688
855
  killUnit(self.handle)
689
856
  end
690
- function Unit.prototype.revive(self, pos, doEffect)
691
- ReviveHero(self.handle, pos.x, pos.y, doEffect)
857
+ function Unit.prototype.revive(self, x, y, doEffect)
858
+ local ____ReviveHero_4 = ReviveHero
859
+ local ____array_3 = __TS__SparseArrayNew(self.handle, x, y)
860
+ local ____doEffect_2 = doEffect
861
+ if ____doEffect_2 == nil then
862
+ ____doEffect_2 = false
863
+ end
864
+ __TS__SparseArrayPush(____array_3, ____doEffect_2)
865
+ ____ReviveHero_4(__TS__SparseArraySpread(____array_3))
692
866
  end
693
867
  function Unit.prototype.healTarget(self, target, amount)
694
868
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -728,7 +902,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
728
902
  return UnitDropItemSlot(self.handle, item.handle, slot)
729
903
  end
730
904
  function Unit.prototype.itemInSlot(self, slot)
731
- return Item:of(UnitItemInSlot(self.handle, slot))
905
+ return Item:of(unitItemInSlot(self.handle, slot))
732
906
  end
733
907
  function Unit.prototype.addAbility(self, abilityId)
734
908
  if unitAddAbility(self.handle, abilityId) then
@@ -784,6 +958,9 @@ end
784
958
  function Unit.prototype.hideAbility(self, abilityId, flag)
785
959
  BlzUnitHideAbility(self.handle, abilityId, flag)
786
960
  end
961
+ function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
962
+ return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
963
+ end
787
964
  function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
788
965
  BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
789
966
  end
@@ -1071,12 +1248,27 @@ __TS__SetDescriptor(
1071
1248
  Unit.prototype,
1072
1249
  "weapons",
1073
1250
  {get = function(self)
1074
- local weapons = {
1075
- setmetatable({h = self.handle, i = 0}, weaponMetatable),
1076
- setmetatable({h = self.handle, i = 1}, weaponMetatable)
1077
- }
1078
- rawset(self, "weapons", weapons)
1079
- return weapons
1251
+ return {self.firstWeapon, self.secondWeapon}
1252
+ end},
1253
+ true
1254
+ )
1255
+ __TS__SetDescriptor(
1256
+ Unit.prototype,
1257
+ "firstWeapon",
1258
+ {get = function(self)
1259
+ local weapon = __TS__New(____exports.UnitWeapon, self, 0)
1260
+ rawset(self, "firstWeapon", weapon)
1261
+ return weapon
1262
+ end},
1263
+ true
1264
+ )
1265
+ __TS__SetDescriptor(
1266
+ Unit.prototype,
1267
+ "secondWeapon",
1268
+ {get = function(self)
1269
+ local weapon = __TS__New(____exports.UnitWeapon, self, 1)
1270
+ rawset(self, "secondWeapon", weapon)
1271
+ return weapon
1080
1272
  end},
1081
1273
  true
1082
1274
  )
@@ -1233,17 +1425,17 @@ __TS__SetDescriptor(
1233
1425
  "isTeamGlowVisible",
1234
1426
  {
1235
1427
  get = function(self)
1236
- return not self[103]
1428
+ return not self[105]
1237
1429
  end,
1238
1430
  set = function(self, isTeamGlowVisible)
1239
1431
  showUnitTeamGlow(self.handle, isTeamGlowVisible)
1240
- local ____temp_2
1432
+ local ____temp_5
1241
1433
  if not isTeamGlowVisible then
1242
- ____temp_2 = true
1434
+ ____temp_5 = true
1243
1435
  else
1244
- ____temp_2 = nil
1436
+ ____temp_5 = nil
1245
1437
  end
1246
- self[103] = ____temp_2
1438
+ self[105] = ____temp_5
1247
1439
  end
1248
1440
  },
1249
1441
  true
@@ -1253,7 +1445,7 @@ __TS__SetDescriptor(
1253
1445
  "color",
1254
1446
  {set = function(self, color)
1255
1447
  setUnitColor(self.handle, color.handle)
1256
- if self[103] then
1448
+ if self[105] then
1257
1449
  showUnitTeamGlow(self.handle, false)
1258
1450
  end
1259
1451
  end},
@@ -1277,10 +1469,14 @@ __TS__SetDescriptor(
1277
1469
  "maxHealth",
1278
1470
  {
1279
1471
  get = function(self)
1280
- return BlzGetUnitMaxHP(self.handle) - (self[102] or 0)
1472
+ return BlzGetUnitMaxHP(self.handle) - (self[103] or 0) - (self[104] or 0)
1281
1473
  end,
1282
1474
  set = function(self, maxHealth)
1283
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[102] or 0))
1475
+ if maxHealth < 1 and self[102] ~= nil then
1476
+ self[103] = (self[103] or 0) + (1 - maxHealth)
1477
+ maxHealth = 1
1478
+ end
1479
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[104] or 0))
1284
1480
  end
1285
1481
  },
1286
1482
  true
@@ -1322,10 +1518,10 @@ __TS__SetDescriptor(
1322
1518
  "health",
1323
1519
  {
1324
1520
  get = function(self)
1325
- return GetWidgetLife(self.handle) - (self[102] or 0)
1521
+ return GetWidgetLife(self.handle) - (self[104] or 0)
1326
1522
  end,
1327
1523
  set = function(self, health)
1328
- SetWidgetLife(self.handle, health + (self[102] or 0))
1524
+ SetWidgetLife(self.handle, health + (self[104] or 0))
1329
1525
  end
1330
1526
  },
1331
1527
  true
@@ -1657,6 +1853,16 @@ __TS__SetDescriptor(
1657
1853
  end},
1658
1854
  true
1659
1855
  )
1856
+ __TS__SetDescriptor(
1857
+ Unit.prototype,
1858
+ "items",
1859
+ {get = function(self)
1860
+ local items = __TS__New(____exports.UnitItems, self.handle)
1861
+ rawset(self, "items", items)
1862
+ return items
1863
+ end},
1864
+ true
1865
+ )
1660
1866
  __TS__SetDescriptor(
1661
1867
  Unit.prototype,
1662
1868
  "buffIds",
@@ -1903,7 +2109,6 @@ Unit.onDecay = __TS__New(
1903
2109
  Unit.onResurrect = __TS__New(
1904
2110
  InitializingEvent,
1905
2111
  function(event)
1906
- local invoke = Event.invoke
1907
2112
  local dead = setmetatable({}, {__mode = "k"})
1908
2113
  ____exports.Unit.deathEvent:addListener(function(unit)
1909
2114
  dead[unit] = true
@@ -1919,10 +2124,15 @@ Unit.onResurrect = __TS__New(
1919
2124
  Unit.morphEvent = __TS__New(
1920
2125
  InitializingEvent,
1921
2126
  function(event)
2127
+ local function ifNotLeft(unit)
2128
+ local handle = unit.handle
2129
+ if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
2130
+ invoke(event, unit)
2131
+ end
2132
+ end
1922
2133
  ____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
1923
2134
  if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
1924
- assert(unitAddAbility(unit.handle, morphDetectAbilityId))
1925
- Timer:run(Event.invoke, event, unit)
2135
+ Timer:run(ifNotLeft, unit)
1926
2136
  end
1927
2137
  end)
1928
2138
  end
@@ -1960,27 +2170,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
1960
2170
  Unit.onTargetCast = dispatchId(__TS__New(
1961
2171
  InitializingEvent,
1962
2172
  function(event)
1963
- local invoke = Event.invoke
1964
2173
  local function listener(unit, id)
1965
- local ____GetSpellTargetUnit_result_5
2174
+ local ____GetSpellTargetUnit_result_8
1966
2175
  if GetSpellTargetUnit() then
1967
- ____GetSpellTargetUnit_result_5 = ____exports.Unit:of(GetSpellTargetUnit())
2176
+ ____GetSpellTargetUnit_result_8 = ____exports.Unit:of(GetSpellTargetUnit())
1968
2177
  else
1969
- local ____GetSpellTargetItem_result_4
2178
+ local ____GetSpellTargetItem_result_7
1970
2179
  if GetSpellTargetItem() then
1971
- ____GetSpellTargetItem_result_4 = Item:of(GetSpellTargetItem())
2180
+ ____GetSpellTargetItem_result_7 = Item:of(GetSpellTargetItem())
1972
2181
  else
1973
- local ____GetSpellTargetDestructable_result_3
2182
+ local ____GetSpellTargetDestructable_result_6
1974
2183
  if GetSpellTargetDestructable() then
1975
- ____GetSpellTargetDestructable_result_3 = Destructable:of(GetSpellTargetDestructable())
2184
+ ____GetSpellTargetDestructable_result_6 = Destructable:of(GetSpellTargetDestructable())
1976
2185
  else
1977
- ____GetSpellTargetDestructable_result_3 = nil
2186
+ ____GetSpellTargetDestructable_result_6 = nil
1978
2187
  end
1979
- ____GetSpellTargetItem_result_4 = ____GetSpellTargetDestructable_result_3
2188
+ ____GetSpellTargetItem_result_7 = ____GetSpellTargetDestructable_result_6
1980
2189
  end
1981
- ____GetSpellTargetUnit_result_5 = ____GetSpellTargetItem_result_4
2190
+ ____GetSpellTargetUnit_result_8 = ____GetSpellTargetItem_result_7
1982
2191
  end
1983
- local target = ____GetSpellTargetUnit_result_5
2192
+ local target = ____GetSpellTargetUnit_result_8
1984
2193
  if target then
1985
2194
  invoke(event, unit, id, target)
1986
2195
  end
@@ -2177,7 +2386,6 @@ Unit.autoAttackStartEvent = __TS__New(
2177
2386
  )
2178
2387
  Unit.onDamaging = (function()
2179
2388
  local event = __TS__New(Event)
2180
- local invoke = Event.invoke
2181
2389
  local trigger = CreateTrigger()
2182
2390
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
2183
2391
  TriggerAddCondition(
@@ -2276,7 +2484,6 @@ end)()
2276
2484
  Unit.onDamage = __TS__New(
2277
2485
  InitializingEvent,
2278
2486
  function(event)
2279
- local invoke = Event.invoke
2280
2487
  local trigger = CreateTrigger()
2281
2488
  TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
2282
2489
  TriggerAddCondition(
@@ -2292,6 +2499,7 @@ Unit.onDamage = __TS__New(
2292
2499
  damageType = BlzGetEventDamageType(),
2293
2500
  weaponType = BlzGetEventWeaponType(),
2294
2501
  isAttack = BlzGetEventIsAttack(),
2502
+ originalAmount = GetEventDamage(),
2295
2503
  preventDeath = damageEventPreventDeath
2296
2504
  }
2297
2505
  local evData = setmetatable(
@@ -2308,7 +2516,7 @@ Unit.onDamage = __TS__New(
2308
2516
  invoke(event, source, target, evData)
2309
2517
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2310
2518
  local bonusHealth = math.ceil(evData.amount)
2311
- target[102] = (target[102] or 0) + bonusHealth
2519
+ target[104] = (target[104] or 0) + bonusHealth
2312
2520
  BlzSetUnitMaxHP(
2313
2521
  target.handle,
2314
2522
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2322,7 +2530,7 @@ Unit.onDamage = __TS__New(
2322
2530
  evData[0],
2323
2531
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2324
2532
  )
2325
- target[102] = (target[102] or 0) - bonusHealth
2533
+ target[104] = (target[104] or 0) - bonusHealth
2326
2534
  SetWidgetLife(
2327
2535
  target.handle,
2328
2536
  GetWidgetLife(target.handle) - bonusHealth
@@ -2342,7 +2550,7 @@ Unit.onDamage = __TS__New(
2342
2550
  DestroyTrigger(trigger)
2343
2551
  end
2344
2552
  )
2345
- Unit.onItemDrop = __TS__New(
2553
+ Unit.itemDroppedEvent = __TS__New(
2346
2554
  ____exports.UnitTriggerEvent,
2347
2555
  EVENT_PLAYER_UNIT_DROP_ITEM,
2348
2556
  function()
@@ -2353,7 +2561,7 @@ Unit.onItemDrop = __TS__New(
2353
2561
  return IgnoreEvent
2354
2562
  end
2355
2563
  )
2356
- Unit.onItemPickup = __TS__New(
2564
+ Unit.itemPickedUpEvent = __TS__New(
2357
2565
  ____exports.UnitTriggerEvent,
2358
2566
  EVENT_PLAYER_UNIT_PICKUP_ITEM,
2359
2567
  function()
@@ -2364,10 +2572,15 @@ Unit.onItemPickup = __TS__New(
2364
2572
  return IgnoreEvent
2365
2573
  end
2366
2574
  )
2367
- Unit.onItemUse = __TS__New(
2575
+ Unit.itemUsedEvent = __TS__New(
2368
2576
  ____exports.UnitTriggerEvent,
2369
2577
  EVENT_PLAYER_UNIT_USE_ITEM,
2370
- function() return ____exports.Unit:of(GetTriggerUnit()), Item:of(GetManipulatedItem()) end
2578
+ function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2579
+ )
2580
+ Unit.itemStackedEvent = __TS__New(
2581
+ ____exports.UnitTriggerEvent,
2582
+ EVENT_PLAYER_UNIT_STACK_ITEM,
2583
+ function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2371
2584
  )
2372
2585
  __TS__ObjectDefineProperty(
2373
2586
  Unit,
@@ -1,4 +1,3 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { ModelNodeName } from "./model-node-name";
4
3
  import { ModelNodeQualifier } from "./model-node-qualifier";
@@ -1,5 +1,3 @@
1
- /// <reference types="@warscript/language-extensions" />
2
- /// <reference types="@typescript-to-lua/language-extensions" />
3
1
  /** @noSelfInFile */
4
2
  export declare const enum CombatClassification {
5
3
  NONE = 1,// 2^0
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { ChannelAbilityType, ChannelAbilityTypeTargetingType } from "./channel";
4
3
  import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { DiseaseCloudAbilityType } from "./disease-cloud";
4
3
  export declare class BlankPassiveAbilityType extends DiseaseCloudAbilityType {
@@ -0,0 +1,10 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class BlinkAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get maximumRange(): number[];
7
+ set maximumRange(maximumRange: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ get minimumRange(): number[];
9
+ set minimumRange(minimumRange: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ }