warscript 0.0.1-dev.ea69747 → 0.0.1-dev.fa6dee5

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 (95) hide show
  1. package/attributes.d.ts +12 -0
  2. package/attributes.lua +16 -0
  3. package/core/types/frame.d.ts +0 -1
  4. package/core/types/group.d.ts +0 -1
  5. package/core/types/handle.d.ts +2 -1
  6. package/core/types/handle.lua +5 -0
  7. package/core/types/image.d.ts +0 -1
  8. package/core/types/missile.d.ts +2 -2
  9. package/core/types/missile.lua +8 -2
  10. package/core/types/unit.lua +8 -0
  11. package/core/util.lua +1 -1
  12. package/engine/ability.d.ts +1 -1
  13. package/engine/behavior.d.ts +6 -6
  14. package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
  15. package/engine/behaviour/ability/apply-unit-behavior.lua +31 -9
  16. package/engine/behaviour/ability/instant-impact.lua +4 -0
  17. package/engine/behaviour/ability.d.ts +8 -1
  18. package/engine/behaviour/ability.lua +62 -0
  19. package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
  20. package/engine/buff.d.ts +2 -2
  21. package/engine/internal/ability.d.ts +1 -1
  22. package/engine/internal/mechanics/ability-duration.d.ts +1 -3
  23. package/engine/internal/mechanics/ability-duration.lua +2 -0
  24. package/engine/internal/mechanics/cast-ability.d.ts +2 -0
  25. package/engine/internal/mechanics/cast-ability.lua +86 -0
  26. package/engine/internal/unit/bonus.d.ts +5 -6
  27. package/engine/internal/unit/detach-missiles.d.ts +7 -0
  28. package/engine/internal/unit/detach-missiles.lua +30 -0
  29. package/engine/internal/unit-missile-launch.lua +1 -1
  30. package/engine/internal/unit.d.ts +36 -9
  31. package/engine/internal/unit.lua +215 -63
  32. package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
  33. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  34. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  35. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  36. package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
  37. package/engine/object-data/entry/ability-type/blink.lua +39 -0
  38. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  39. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  40. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  41. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  42. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  43. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  44. package/engine/object-data/entry/ability-type.d.ts +1 -1
  45. package/engine/object-data/entry/ability-type.lua +1 -0
  46. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  47. package/engine/object-data/entry/buff-type/applicable.lua +27 -71
  48. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  49. package/engine/object-data/entry/buff-type.d.ts +0 -1
  50. package/engine/object-data/entry/destructible-type.d.ts +0 -1
  51. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  52. package/engine/object-data/entry/item-type.d.ts +0 -1
  53. package/engine/object-data/entry/lightning-type.d.ts +0 -1
  54. package/engine/object-data/entry/unit-type.d.ts +42 -2
  55. package/engine/object-data/entry/unit-type.lua +378 -50
  56. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  57. package/engine/object-data/entry/upgrade.d.ts +0 -1
  58. package/engine/object-data/entry.d.ts +2 -3
  59. package/engine/object-field/ability.d.ts +8 -6
  60. package/engine/object-field/ability.lua +6 -0
  61. package/engine/object-field/unit.d.ts +1 -0
  62. package/engine/object-field/unit.lua +3 -0
  63. package/engine/object-field.d.ts +6 -4
  64. package/engine/object-field.lua +38 -12
  65. package/engine/random.d.ts +1 -0
  66. package/engine/random.lua +9 -0
  67. package/engine/standard/entries/unit-type.d.ts +42 -1
  68. package/engine/standard/entries/unit-type.lua +42 -1
  69. package/engine/standard/fields/ability.d.ts +1 -1
  70. package/engine/standard/fields/ability.lua +1 -1
  71. package/engine/unit.d.ts +1 -0
  72. package/engine/unit.lua +10 -2
  73. package/event.d.ts +0 -1
  74. package/exception.d.ts +2 -0
  75. package/exception.lua +4 -0
  76. package/global/vec2.lua +1 -0
  77. package/lualib_bundle.lua +139 -40
  78. package/math/vec2.d.ts +2 -9
  79. package/math.d.ts +0 -2
  80. package/objutil/ability.d.ts +0 -1
  81. package/objutil/buff.d.ts +0 -1
  82. package/objutil/object.d.ts +0 -1
  83. package/objutil/unit.d.ts +0 -1
  84. package/package.json +13 -14
  85. package/string.d.ts +30 -0
  86. package/string.lua +14 -0
  87. package/util/stream.d.ts +0 -1
  88. package/utility/arrays.d.ts +4 -5
  89. package/utility/arrays.lua +4 -1
  90. package/utility/bit-set.d.ts +0 -2
  91. package/utility/linked-set.d.ts +21 -8
  92. package/utility/linked-set.lua +16 -0
  93. package/utility/lua-maps.d.ts +1 -2
  94. package/utility/lua-sets.d.ts +1 -2
  95. package/utility/types.d.ts +2 -2
@@ -1,4 +1,3 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { Handle, HandleDestructor } from "../../core/types/handle";
4
3
  import { Player } from "../../core/types/player";
@@ -68,23 +67,44 @@ declare const modifiers: {
68
67
  speed: (unit: junit, value: number) => void;
69
68
  armor: (unit: junit, value: number) => void;
70
69
  };
71
- interface UnitWeapon {
70
+ export declare class UnitWeapon {
71
+ readonly unit: Unit;
72
72
  readonly index: 0 | 1;
73
- cooldown: number;
74
- projectileArc: number;
75
- projectileArt: string;
76
- projectileSpeed: number;
77
- attackPoint: number;
73
+ constructor(unit: Unit, index: 0 | 1);
74
+ get cooldown(): number;
75
+ set cooldown(cooldown: number);
76
+ get damage(): [minimumDamage: number, maximumDamage: number];
77
+ set damage([minimumDamage, maximumDamage]: [number, number]);
78
+ get damageBase(): number;
79
+ set damageBase(damageBase: number);
80
+ get damageDiceCount(): number;
81
+ set damageDiceCount(damageDiceCount: number);
82
+ get damageDiceSideCount(): number;
83
+ set damageDiceSideCount(damageDiceSideCount: number);
84
+ get range(): number;
85
+ set range(range: number);
86
+ get impactDelay(): number;
87
+ set impactDelay(impactDelay: number);
88
+ get missileArc(): number;
89
+ set missileArc(missileArc: number);
90
+ get missileModelPath(): string;
91
+ set missileModelPath(missileModelPath: string);
92
+ get missileSpeed(): number;
93
+ set missileSpeed(missileSpeed: number);
78
94
  }
79
95
  declare const enum UnitPropertyKey {
80
96
  IS_PAUSED = 100,
81
97
  STUN_COUNTER = 101,
82
- PREVENT_DEATH_HEALTH_BONUS = 102,
83
- IS_TEAM_GLOW_HIDDEN = 103
98
+ DELAY_HEALTH_CHECKS_COUNTER = 102,
99
+ DELAY_HEALTH_CHECKS_HEALTH_BONUS = 103,
100
+ PREVENT_DEATH_HEALTH_BONUS = 104,
101
+ IS_TEAM_GLOW_HIDDEN = 105
84
102
  }
85
103
  export declare class Unit extends Handle<junit> {
86
104
  private [UnitPropertyKey.IS_PAUSED]?;
87
105
  private [UnitPropertyKey.STUN_COUNTER]?;
106
+ private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
107
+ private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
88
108
  private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
89
109
  private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
90
110
  private _owner?;
@@ -123,6 +143,8 @@ export declare class Unit extends Handle<junit> {
123
143
  playAnimation(animation: number): void;
124
144
  queueAnimation(animation: string): void;
125
145
  get weapons(): [UnitWeapon, UnitWeapon];
146
+ get firstWeapon(): UnitWeapon;
147
+ get secondWeapon(): UnitWeapon;
126
148
  get level(): number;
127
149
  set level(v: number);
128
150
  get xp(): number;
@@ -148,6 +170,10 @@ export declare class Unit extends Handle<junit> {
148
170
  set color(color: PlayerColor);
149
171
  get acquisitionRange(): number;
150
172
  set acquisitionRange(v: number);
173
+ /**
174
+ * Keeps this unit alive even if its health becomes negative until the current game thread yields.
175
+ */
176
+ delayHealthChecks(): void;
151
177
  get maxHealth(): number;
152
178
  set maxHealth(maxHealth: number);
153
179
  get healthRegenerationRate(): number;
@@ -222,6 +248,7 @@ export declare class Unit extends Handle<junit> {
222
248
  getAbilityById(abilityId: number): UnitAbility | undefined;
223
249
  removeAbility(abilityId: number): boolean;
224
250
  hideAbility(abilityId: number, flag: boolean): void;
251
+ getAbilityRemainingCooldown(abilityId: number): number;
225
252
  startAbilityCooldown(abilityId: number, cooldown: number): void;
226
253
  endAbilityCooldown(abilityId: number): void;
227
254
  interruptAttack(): void;
@@ -5,9 +5,9 @@ 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
9
10
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
10
- local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
11
11
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
12
12
  local Set = ____lualib.Set
13
13
  local __TS__Spread = ____lualib.__TS__Spread
@@ -92,6 +92,10 @@ local isUnitInRangeXY = IsUnitInRangeXY
92
92
  local isUnitInRange = IsUnitInRange
93
93
  local setResourceAmount = SetResourceAmount
94
94
  local getResourceAmount = GetResourceAmount
95
+ local getUnitWeaponRealField = BlzGetUnitWeaponRealField
96
+ local setUnitWeaponRealField = BlzSetUnitWeaponRealField
97
+ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
98
+ local setUnitWeaponStringField = BlzSetUnitWeaponStringField
95
99
  local getUnitAbilityLevel = GetUnitAbilityLevel
96
100
  local unitDisableAbility = BlzUnitDisableAbility
97
101
  local unitInterruptAttack = BlzUnitInterruptAttack
@@ -387,51 +391,158 @@ local getters = {
387
391
  return BlzGetUnitArmor(unit)
388
392
  end
389
393
  }
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))
425
- 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)
433
- end
434
- }
394
+ ____exports.UnitWeapon = __TS__Class()
395
+ local UnitWeapon = ____exports.UnitWeapon
396
+ UnitWeapon.name = "UnitWeapon"
397
+ function UnitWeapon.prototype.____constructor(self, unit, index)
398
+ self.unit = unit
399
+ self.index = index
400
+ end
401
+ __TS__SetDescriptor(
402
+ UnitWeapon.prototype,
403
+ "cooldown",
404
+ {
405
+ get = function(self)
406
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
407
+ end,
408
+ set = function(self, cooldown)
409
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
410
+ end
411
+ },
412
+ true
413
+ )
414
+ __TS__SetDescriptor(
415
+ UnitWeapon.prototype,
416
+ "damage",
417
+ {
418
+ get = function(self)
419
+ local minimumDamage = self.damageBase + self.damageDiceCount
420
+ local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
421
+ return {minimumDamage, maximumDamage}
422
+ end,
423
+ set = function(self, ____bindingPattern0)
424
+ local maximumDamage
425
+ local minimumDamage
426
+ minimumDamage = ____bindingPattern0[1]
427
+ maximumDamage = ____bindingPattern0[2]
428
+ self.damageBase = minimumDamage - 1
429
+ self.damageDiceCount = 1
430
+ self.damageDiceSideCount = maximumDamage - minimumDamage + 1
431
+ end
432
+ },
433
+ true
434
+ )
435
+ __TS__SetDescriptor(
436
+ UnitWeapon.prototype,
437
+ "damageBase",
438
+ {
439
+ get = function(self)
440
+ return BlzGetUnitBaseDamage(self.unit.handle, self.index)
441
+ end,
442
+ set = function(self, damageBase)
443
+ BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
444
+ end
445
+ },
446
+ true
447
+ )
448
+ __TS__SetDescriptor(
449
+ UnitWeapon.prototype,
450
+ "damageDiceCount",
451
+ {
452
+ get = function(self)
453
+ return BlzGetUnitDiceNumber(self.unit.handle, self.index)
454
+ end,
455
+ set = function(self, damageDiceCount)
456
+ BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
457
+ end
458
+ },
459
+ true
460
+ )
461
+ __TS__SetDescriptor(
462
+ UnitWeapon.prototype,
463
+ "damageDiceSideCount",
464
+ {
465
+ get = function(self)
466
+ return BlzGetUnitDiceSides(self.unit.handle, self.index)
467
+ end,
468
+ set = function(self, damageDiceSideCount)
469
+ BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
470
+ end
471
+ },
472
+ true
473
+ )
474
+ __TS__SetDescriptor(
475
+ UnitWeapon.prototype,
476
+ "range",
477
+ {
478
+ get = function(self)
479
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
480
+ end,
481
+ set = function(self, range)
482
+ local handle = self.unit.handle
483
+ local index = self.index
484
+ setUnitWeaponRealField(
485
+ handle,
486
+ UNIT_WEAPON_RF_ATTACK_RANGE,
487
+ index + 1,
488
+ getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
489
+ )
490
+ end
491
+ },
492
+ true
493
+ )
494
+ __TS__SetDescriptor(
495
+ UnitWeapon.prototype,
496
+ "impactDelay",
497
+ {
498
+ get = function(self)
499
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
500
+ end,
501
+ set = function(self, impactDelay)
502
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
503
+ end
504
+ },
505
+ true
506
+ )
507
+ __TS__SetDescriptor(
508
+ UnitWeapon.prototype,
509
+ "missileArc",
510
+ {
511
+ get = function(self)
512
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
513
+ end,
514
+ set = function(self, missileArc)
515
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
516
+ end
517
+ },
518
+ true
519
+ )
520
+ __TS__SetDescriptor(
521
+ UnitWeapon.prototype,
522
+ "missileModelPath",
523
+ {
524
+ get = function(self)
525
+ return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
526
+ end,
527
+ set = function(self, missileModelPath)
528
+ setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
529
+ end
530
+ },
531
+ true
532
+ )
533
+ __TS__SetDescriptor(
534
+ UnitWeapon.prototype,
535
+ "missileSpeed",
536
+ {
537
+ get = function(self)
538
+ return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
539
+ end,
540
+ set = function(self, missileSpeed)
541
+ setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
542
+ end
543
+ },
544
+ true
545
+ )
435
546
  local unitInventorySize = UnitInventorySize
436
547
  local unitItemInSlot = UnitItemInSlot
437
548
  local getItemAbility = BlzGetItemAbility
@@ -442,8 +553,6 @@ local getAbilityName = GetAbilityName
442
553
  local unitAddAbility = UnitAddAbility
443
554
  local getUnitGoldCost = GetUnitGoldCost
444
555
  local getUnitLumberCost = GetUnitWoodCost
445
- local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
446
- local unitAddItem = UnitAddItem
447
556
  local unitRemoveAbility = UnitRemoveAbility
448
557
  local function retrieveAbility(unit, ability, abilityId)
449
558
  if ability == nil then
@@ -520,6 +629,23 @@ for ____, player in ipairs(Player.all) do
520
629
  ShowUnit(dummy, false)
521
630
  dummies[player] = dummy
522
631
  end
632
+ local function delayHealthChecksCallback(unit)
633
+ local counter = (unit[102] or 0) - 1
634
+ if counter ~= 0 then
635
+ unit[102] = counter
636
+ return
637
+ end
638
+ unit[102] = nil
639
+ local healthBonus = unit[103]
640
+ if healthBonus ~= nil then
641
+ unit[103] = nil
642
+ local handle = unit.handle
643
+ BlzSetUnitMaxHP(
644
+ handle,
645
+ BlzGetUnitMaxHP(handle) - healthBonus
646
+ )
647
+ end
648
+ end
523
649
  ____exports.Unit = __TS__Class()
524
650
  local Unit = ____exports.Unit
525
651
  Unit.name = "Unit"
@@ -674,6 +800,10 @@ end
674
800
  function Unit.prototype.queueAnimation(self, animation)
675
801
  queueUnitAnimation(self.handle, animation)
676
802
  end
803
+ function Unit.prototype.delayHealthChecks(self)
804
+ self[102] = (self[102] or 0) + 1
805
+ Timer:run(delayHealthChecksCallback, self)
806
+ end
677
807
  function Unit.prototype.setPosition(self, x, y)
678
808
  setUnitPosition(self.handle, x, y)
679
809
  end
@@ -784,6 +914,9 @@ end
784
914
  function Unit.prototype.hideAbility(self, abilityId, flag)
785
915
  BlzUnitHideAbility(self.handle, abilityId, flag)
786
916
  end
917
+ function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
918
+ return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
919
+ end
787
920
  function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
788
921
  BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
789
922
  end
@@ -1071,12 +1204,27 @@ __TS__SetDescriptor(
1071
1204
  Unit.prototype,
1072
1205
  "weapons",
1073
1206
  {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
1207
+ return {self.firstWeapon, self.secondWeapon}
1208
+ end},
1209
+ true
1210
+ )
1211
+ __TS__SetDescriptor(
1212
+ Unit.prototype,
1213
+ "firstWeapon",
1214
+ {get = function(self)
1215
+ local weapon = __TS__New(____exports.UnitWeapon, self, 0)
1216
+ rawset(self, "firstWeapon", weapon)
1217
+ return weapon
1218
+ end},
1219
+ true
1220
+ )
1221
+ __TS__SetDescriptor(
1222
+ Unit.prototype,
1223
+ "secondWeapon",
1224
+ {get = function(self)
1225
+ local weapon = __TS__New(____exports.UnitWeapon, self, 1)
1226
+ rawset(self, "secondWeapon", weapon)
1227
+ return weapon
1080
1228
  end},
1081
1229
  true
1082
1230
  )
@@ -1233,7 +1381,7 @@ __TS__SetDescriptor(
1233
1381
  "isTeamGlowVisible",
1234
1382
  {
1235
1383
  get = function(self)
1236
- return not self[103]
1384
+ return not self[105]
1237
1385
  end,
1238
1386
  set = function(self, isTeamGlowVisible)
1239
1387
  showUnitTeamGlow(self.handle, isTeamGlowVisible)
@@ -1243,7 +1391,7 @@ __TS__SetDescriptor(
1243
1391
  else
1244
1392
  ____temp_2 = nil
1245
1393
  end
1246
- self[103] = ____temp_2
1394
+ self[105] = ____temp_2
1247
1395
  end
1248
1396
  },
1249
1397
  true
@@ -1253,7 +1401,7 @@ __TS__SetDescriptor(
1253
1401
  "color",
1254
1402
  {set = function(self, color)
1255
1403
  setUnitColor(self.handle, color.handle)
1256
- if self[103] then
1404
+ if self[105] then
1257
1405
  showUnitTeamGlow(self.handle, false)
1258
1406
  end
1259
1407
  end},
@@ -1277,10 +1425,14 @@ __TS__SetDescriptor(
1277
1425
  "maxHealth",
1278
1426
  {
1279
1427
  get = function(self)
1280
- return BlzGetUnitMaxHP(self.handle) - (self[102] or 0)
1428
+ return BlzGetUnitMaxHP(self.handle) - (self[103] or 0) - (self[104] or 0)
1281
1429
  end,
1282
1430
  set = function(self, maxHealth)
1283
- BlzSetUnitMaxHP(self.handle, maxHealth + (self[102] or 0))
1431
+ if maxHealth < 1 and self[102] ~= nil then
1432
+ self[103] = (self[103] or 0) + (1 - maxHealth)
1433
+ maxHealth = 1
1434
+ end
1435
+ BlzSetUnitMaxHP(self.handle, maxHealth + (self[104] or 0))
1284
1436
  end
1285
1437
  },
1286
1438
  true
@@ -1322,10 +1474,10 @@ __TS__SetDescriptor(
1322
1474
  "health",
1323
1475
  {
1324
1476
  get = function(self)
1325
- return GetWidgetLife(self.handle) - (self[102] or 0)
1477
+ return GetWidgetLife(self.handle) - (self[104] or 0)
1326
1478
  end,
1327
1479
  set = function(self, health)
1328
- SetWidgetLife(self.handle, health + (self[102] or 0))
1480
+ SetWidgetLife(self.handle, health + (self[104] or 0))
1329
1481
  end
1330
1482
  },
1331
1483
  true
@@ -2308,7 +2460,7 @@ Unit.onDamage = __TS__New(
2308
2460
  invoke(event, source, target, evData)
2309
2461
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2310
2462
  local bonusHealth = math.ceil(evData.amount)
2311
- target[102] = (target[102] or 0) + bonusHealth
2463
+ target[104] = (target[104] or 0) + bonusHealth
2312
2464
  BlzSetUnitMaxHP(
2313
2465
  target.handle,
2314
2466
  BlzGetUnitMaxHP(target.handle) + bonusHealth
@@ -2322,7 +2474,7 @@ Unit.onDamage = __TS__New(
2322
2474
  evData[0],
2323
2475
  table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
2324
2476
  )
2325
- target[102] = (target[102] or 0) - bonusHealth
2477
+ target[104] = (target[104] or 0) - bonusHealth
2326
2478
  SetWidgetLife(
2327
2479
  target.handle,
2328
2480
  GetWidgetLife(target.handle) - bonusHealth
@@ -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
+ }
@@ -0,0 +1,39 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.BlinkAbilityType = __TS__Class()
9
+ local BlinkAbilityType = ____exports.BlinkAbilityType
10
+ BlinkAbilityType.name = "BlinkAbilityType"
11
+ __TS__ClassExtends(BlinkAbilityType, AbilityType)
12
+ BlinkAbilityType.BASE_ID = fourCC("AEbl")
13
+ __TS__SetDescriptor(
14
+ BlinkAbilityType.prototype,
15
+ "maximumRange",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ebl1")
19
+ end,
20
+ set = function(self, maximumRange)
21
+ self:setNumberLevelField("Ebl1", maximumRange)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ BlinkAbilityType.prototype,
28
+ "minimumRange",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Ebl2")
32
+ end,
33
+ set = function(self, minimumRange)
34
+ self:setNumberLevelField("Ebl2", minimumRange)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ return ____exports
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { AbilityType, AbilityTypeId } from "../ability-type";
4
3
  import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
@@ -7,7 +7,7 @@ local ____exports = {}
7
7
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
8
8
  local AbilityType = ____ability_2Dtype.AbilityType
9
9
  local ____arrays = require("utility.arrays")
10
- local EMPTY_ARRAY = ____arrays.EMPTY_ARRAY
10
+ local emptyArray = ____arrays.emptyArray
11
11
  local map = ____arrays.map
12
12
  local ____buff_2Dtype = require("engine.object-data.entry.buff-type")
13
13
  local BuffType = ____buff_2Dtype.BuffType
@@ -78,7 +78,7 @@ __TS__SetDescriptor(
78
78
  function(levelAbilityUpgrades)
79
79
  return levelAbilityUpgrades[i + 1]
80
80
  end
81
- ) or (abilityUpgrades[i + 1] or EMPTY_ARRAY)
81
+ ) or (abilityUpgrades[i + 1] or emptyArray())
82
82
  )
83
83
  end
84
84
  end
@@ -0,0 +1,10 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class MineAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get activationDelay(): number[];
7
+ set activationDelay(activationDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ get invisibilityDelay(): number[];
9
+ set invisibilityDelay(invisibilityDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ }
@@ -0,0 +1,39 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.MineAbilityType = __TS__Class()
9
+ local MineAbilityType = ____exports.MineAbilityType
10
+ MineAbilityType.name = "MineAbilityType"
11
+ __TS__ClassExtends(MineAbilityType, AbilityType)
12
+ MineAbilityType.BASE_ID = fourCC("Amin")
13
+ __TS__SetDescriptor(
14
+ MineAbilityType.prototype,
15
+ "activationDelay",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Min1")
19
+ end,
20
+ set = function(self, activationDelay)
21
+ self:setNumberLevelField("Min1", activationDelay)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ MineAbilityType.prototype,
28
+ "invisibilityDelay",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Min2")
32
+ end,
33
+ set = function(self, invisibilityDelay)
34
+ self:setNumberLevelField("Min2", invisibilityDelay)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ return ____exports
@@ -7,8 +7,8 @@ export declare class SpiritTouchAbilityType extends AbilityType {
7
7
  set manaGain(manaGain: ObjectDataEntryLevelFieldValueSupplier<number>);
8
8
  get manaRequirement(): number[];
9
9
  set manaRequirement(manaRequirement: ObjectDataEntryLevelFieldValueSupplier<number>);
10
- get maximumTargetCount(): number[];
11
- set maximumTargetCount(maximumTargetCount: ObjectDataEntryLevelFieldValueSupplier<number>);
12
10
  get maximumManaCostFactor(): number[];
13
11
  set maximumManaCostFactor(maximumManaCostFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ get maximumTargetCount(): number[];
13
+ set maximumTargetCount(maximumTargetCount: ObjectDataEntryLevelFieldValueSupplier<number>);
14
14
  }
@@ -38,26 +38,26 @@ __TS__SetDescriptor(
38
38
  )
39
39
  __TS__SetDescriptor(
40
40
  SpiritTouchAbilityType.prototype,
41
- "maximumTargetCount",
41
+ "maximumManaCostFactor",
42
42
  {
43
43
  get = function(self)
44
44
  return self:getNumberLevelField("Rpb5")
45
45
  end,
46
- set = function(self, maximumTargetCount)
47
- self:setNumberLevelField("Rpb5", maximumTargetCount)
46
+ set = function(self, maximumManaCostFactor)
47
+ self:setNumberLevelField("Rpb5", maximumManaCostFactor)
48
48
  end
49
49
  },
50
50
  true
51
51
  )
52
52
  __TS__SetDescriptor(
53
53
  SpiritTouchAbilityType.prototype,
54
- "maximumManaCostFactor",
54
+ "maximumTargetCount",
55
55
  {
56
56
  get = function(self)
57
57
  return self:getNumberLevelField("Rpb6")
58
58
  end,
59
- set = function(self, maximumManaCostFactor)
60
- self:setNumberLevelField("Rpb6", maximumManaCostFactor)
59
+ set = function(self, maximumTargetCount)
60
+ self:setNumberLevelField("Rpb6", maximumTargetCount)
61
61
  end
62
62
  },
63
63
  true