warscript 0.0.1-dev.524f1b8 → 0.0.1-dev.539675b

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 (61) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/core/types/order.d.ts +1 -0
  4. package/core/types/order.lua +11 -1
  5. package/decl/native.d.ts +840 -786
  6. package/engine/behaviour/ability/damage.d.ts +6 -3
  7. package/engine/behaviour/ability/damage.lua +24 -36
  8. package/engine/behaviour/ability/emulate-impact.lua +16 -2
  9. package/engine/behaviour/ability.lua +1 -1
  10. package/engine/behaviour/unit.d.ts +15 -0
  11. package/engine/behaviour/unit.lua +114 -4
  12. package/engine/internal/ability.d.ts +4 -0
  13. package/engine/internal/ability.lua +17 -0
  14. package/engine/internal/item/ability.lua +12 -10
  15. package/engine/internal/item.d.ts +5 -2
  16. package/engine/internal/item.lua +75 -3
  17. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  18. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  19. package/engine/internal/unit/ability.d.ts +5 -0
  20. package/engine/internal/unit/ability.lua +14 -0
  21. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  22. package/engine/internal/unit/allowed-targets.lua +9 -1
  23. package/engine/internal/unit+damage.d.ts +2 -11
  24. package/engine/internal/unit+damage.lua +10 -14
  25. package/engine/internal/unit+spellSteal.lua +1 -2
  26. package/engine/internal/unit-missile-launch.lua +1 -1
  27. package/engine/internal/unit.d.ts +21 -3
  28. package/engine/internal/unit.lua +178 -37
  29. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  30. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  31. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  32. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  33. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  34. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  35. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  36. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  37. package/engine/object-data/entry/buff-type.d.ts +5 -11
  38. package/engine/object-data/entry/buff-type.lua +11 -27
  39. package/engine/object-data/entry/unit-type.d.ts +2 -2
  40. package/engine/object-data/entry/unit-type.lua +94 -84
  41. package/engine/object-field/ability.d.ts +1 -1
  42. package/engine/object-field/unit.d.ts +46 -3
  43. package/engine/object-field/unit.lua +173 -7
  44. package/engine/object-field.d.ts +15 -4
  45. package/engine/object-field.lua +184 -90
  46. package/engine/standard/entries/buff-type.d.ts +3 -0
  47. package/engine/standard/entries/buff-type.lua +3 -0
  48. package/engine/text-tag.d.ts +12 -1
  49. package/engine/text-tag.lua +44 -10
  50. package/objutil/buff.lua +1 -2
  51. package/package.json +2 -2
  52. package/utility/arrays.d.ts +1 -0
  53. package/utility/arrays.lua +3 -0
  54. package/utility/functions.d.ts +1 -0
  55. package/utility/functions.lua +1 -0
  56. package/utility/linked-set.d.ts +1 -0
  57. package/utility/linked-set.lua +3 -0
  58. package/utility/lua-maps.d.ts +4 -0
  59. package/utility/lua-maps.lua +20 -0
  60. package/utility/lua-sets.d.ts +1 -0
  61. package/utility/lua-sets.lua +3 -0
@@ -53,13 +53,17 @@ local ____math = require("math")
53
53
  local min = ____math.min
54
54
  local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
55
55
  local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
56
+ local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
57
+ local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
58
+ local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
59
+ local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
60
+ local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
61
+ local ____attributes = require("attributes")
62
+ local isAttribute = ____attributes.isAttribute
56
63
  local match = string.match
57
64
  local ____tostring = _G.tostring
58
65
  local setUnitAnimation = SetUnitAnimation
59
- local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
60
66
  local setUnitAnimationByIndex = SetUnitAnimationByIndex
61
- local resetUnitAnimation = ResetUnitAnimation
62
- local queueUnitAnimation = QueueUnitAnimation
63
67
  local getUnitIntegerField = BlzGetUnitIntegerField
64
68
  local getUnitRealField = BlzGetUnitRealField
65
69
  local getHeroStr = GetHeroStr
@@ -81,7 +85,6 @@ local getHandleId = GetHandleId
81
85
  local getUnitCurrentOrder = GetUnitCurrentOrder
82
86
  local createUnit = CreateUnit
83
87
  local killUnit = KillUnit
84
- local setUnitExploded = SetUnitExploded
85
88
  local removeUnit = RemoveUnit
86
89
  local getUnitTypeId = GetUnitTypeId
87
90
  local isHeroUnitId = IsHeroUnitId
@@ -97,8 +100,6 @@ local getSpellTargetItem = GetSpellTargetItem
97
100
  local getSpellTargetDestructable = GetSpellTargetDestructable
98
101
  local isUnitInRangeXY = IsUnitInRangeXY
99
102
  local isUnitInRange = IsUnitInRange
100
- local setResourceAmount = SetResourceAmount
101
- local getResourceAmount = GetResourceAmount
102
103
  local getUnitWeaponRealField = BlzGetUnitWeaponRealField
103
104
  local setUnitWeaponRealField = BlzSetUnitWeaponRealField
104
105
  local getUnitWeaponStringField = BlzGetUnitWeaponStringField
@@ -129,8 +130,6 @@ local isUnitType = IsUnitType
129
130
  local isUnitAlly = IsUnitAlly
130
131
  local isUnitEnemy = IsUnitEnemy
131
132
  local getOwningPlayer = GetOwningPlayer
132
- local setUnitColor = SetUnitColor
133
- local showUnitTeamGlow = BlzShowUnitTeamGlow
134
133
  ____exports.UnitClassification = {}
135
134
  local UnitClassification = ____exports.UnitClassification
136
135
  do
@@ -140,6 +139,7 @@ do
140
139
  UnitClassification.GROUND = UNIT_TYPE_GROUND
141
140
  UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
142
141
  UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
142
+ UnitClassification.WORKER = UNIT_TYPE_PEON
143
143
  UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
144
144
  UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
145
145
  UnitClassification.TAUREN = UNIT_TYPE_TAUREN
@@ -347,6 +347,9 @@ local function dispatchAbility(event)
347
347
  }
348
348
  )
349
349
  end
350
+ local function damagingEventPreventRetaliation(self)
351
+ self[0] = true
352
+ end
350
353
  local function damageEventPreventDeath(self, callback, ...)
351
354
  if self[0] ~= nil then
352
355
  return
@@ -358,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
358
361
  rawset(self, 1 + i, (select(i, ...)))
359
362
  end
360
363
  end
361
- local damageSetters = {amount = BlzSetEventDamage, attackType = BlzSetEventAttackType, damageType = BlzSetEventDamageType, weaponType = BlzSetEventWeaponType}
364
+ local damageSetters = {
365
+ amount = BlzSetEventDamage,
366
+ attackType = function(attackType)
367
+ return BlzSetEventAttackType(attackTypeToNative(attackType))
368
+ end,
369
+ damageType = BlzSetEventDamageType,
370
+ weaponType = BlzSetEventWeaponType
371
+ }
362
372
  local jlimitopByOperator = {
363
373
  [0] = LESS_THAN_OR_EQUAL,
364
374
  [1] = LESS_THAN_OR_EQUAL,
@@ -436,6 +446,19 @@ __TS__SetDescriptor(
436
446
  },
437
447
  true
438
448
  )
449
+ __TS__SetDescriptor(
450
+ UnitWeapon.prototype,
451
+ "allowedTargetCombatClassifications",
452
+ {
453
+ get = function(self)
454
+ return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
455
+ end,
456
+ set = function(self, allowedTargetCombatClassifications)
457
+ BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
458
+ end
459
+ },
460
+ true
461
+ )
439
462
  __TS__SetDescriptor(
440
463
  UnitWeapon.prototype,
441
464
  "damageBase",
@@ -640,7 +663,8 @@ local function delayHealthChecksCallback(unit)
640
663
  end
641
664
  end
642
665
  local nextSyncId = 1
643
- local unitBySyncId = setmetatable({}, {__mode = "k"})
666
+ local unitBySyncId = setmetatable({}, {__mode = "v"})
667
+ local damagingEventByTarget = setmetatable({}, {__mode = "k"})
644
668
  ____exports.Unit = __TS__Class()
645
669
  local Unit = ____exports.Unit
646
670
  Unit.name = "Unit"
@@ -793,16 +817,25 @@ function Unit.prototype.playAnimation(self, animation, rarity)
793
817
  if type(animation) == "number" then
794
818
  setUnitAnimationByIndex(self.handle, animation)
795
819
  elseif rarity then
796
- setUnitAnimationWithRarity(self.handle, animation, rarity)
820
+ SetUnitAnimationWithRarity(self.handle, animation, rarity)
797
821
  else
798
822
  setUnitAnimation(self.handle, animation)
799
823
  end
800
824
  end
801
825
  function Unit.prototype.resetAnimation(self)
802
- resetUnitAnimation(self.handle)
826
+ ResetUnitAnimation(self.handle)
803
827
  end
804
828
  function Unit.prototype.queueAnimation(self, animation)
805
- queueUnitAnimation(self.handle, animation)
829
+ QueueUnitAnimation(self.handle, animation)
830
+ end
831
+ function Unit.prototype.chooseWeapon(self, target)
832
+ if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
833
+ return self.firstWeapon
834
+ end
835
+ if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
836
+ return self.secondWeapon
837
+ end
838
+ return nil
806
839
  end
807
840
  function Unit.prototype.delayHealthChecks(self)
808
841
  self[103] = (self[103] or 0) + 1
@@ -815,7 +848,7 @@ function Unit.prototype.isSelected(self, player)
815
848
  return IsUnitSelected(self.handle, player.handle)
816
849
  end
817
850
  function Unit.prototype.explode(self)
818
- setUnitExploded(self.handle, true)
851
+ SetUnitExploded(self.handle, true)
819
852
  killUnit(self.handle)
820
853
  end
821
854
  function Unit.prototype.kill(self)
@@ -934,6 +967,21 @@ end
934
967
  function Unit.prototype.endAbilityCooldown(self, abilityId)
935
968
  BlzEndUnitAbilityCooldown(self.handle, abilityId)
936
969
  end
970
+ function Unit.prototype.interruptMovement(self)
971
+ local handle = self.handle
972
+ unitDisableAbility(
973
+ handle,
974
+ fourCC("Amov"),
975
+ true,
976
+ false
977
+ )
978
+ unitDisableAbility(
979
+ handle,
980
+ fourCC("Amov"),
981
+ false,
982
+ false
983
+ )
984
+ end
937
985
  function Unit.prototype.interruptAttack(self)
938
986
  unitInterruptAttack(self.handle)
939
987
  end
@@ -1292,6 +1340,19 @@ __TS__SetDescriptor(
1292
1340
  },
1293
1341
  true
1294
1342
  )
1343
+ __TS__SetDescriptor(
1344
+ Unit.prototype,
1345
+ "primaryAttribute",
1346
+ {
1347
+ get = function(self)
1348
+ return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
1349
+ end,
1350
+ set = function(self, primaryAttribute)
1351
+ setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
1352
+ end
1353
+ },
1354
+ true
1355
+ )
1295
1356
  __TS__SetDescriptor(
1296
1357
  Unit.prototype,
1297
1358
  "strengthBase",
@@ -1416,7 +1477,7 @@ __TS__SetDescriptor(
1416
1477
  return not self[106]
1417
1478
  end,
1418
1479
  set = function(self, isTeamGlowVisible)
1419
- showUnitTeamGlow(self.handle, isTeamGlowVisible)
1480
+ BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1420
1481
  local ____temp_6
1421
1482
  if not isTeamGlowVisible then
1422
1483
  ____temp_6 = true
@@ -1432,9 +1493,9 @@ __TS__SetDescriptor(
1432
1493
  Unit.prototype,
1433
1494
  "color",
1434
1495
  {set = function(self, color)
1435
- setUnitColor(self.handle, color.handle)
1496
+ SetUnitColor(self.handle, color.handle)
1436
1497
  if self[106] then
1437
- showUnitTeamGlow(self.handle, false)
1498
+ BlzShowUnitTeamGlow(self.handle, false)
1438
1499
  end
1439
1500
  end},
1440
1501
  true
@@ -1702,10 +1763,10 @@ __TS__SetDescriptor(
1702
1763
  "gold",
1703
1764
  {
1704
1765
  get = function(self)
1705
- return getResourceAmount(self.handle)
1766
+ return GetResourceAmount(self.handle)
1706
1767
  end,
1707
1768
  set = function(self, gold)
1708
- setResourceAmount(self.handle, gold)
1769
+ SetResourceAmount(self.handle, gold)
1709
1770
  end
1710
1771
  },
1711
1772
  true
@@ -1833,6 +1894,19 @@ __TS__SetDescriptor(
1833
1894
  end},
1834
1895
  true
1835
1896
  )
1897
+ __TS__SetDescriptor(
1898
+ Unit.prototype,
1899
+ "movementType",
1900
+ {
1901
+ get = function(self)
1902
+ return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
1903
+ end,
1904
+ set = function(self, movementType)
1905
+ setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
1906
+ end
1907
+ },
1908
+ true
1909
+ )
1836
1910
  __TS__SetDescriptor(
1837
1911
  Unit.prototype,
1838
1912
  "pathing",
@@ -2014,6 +2088,14 @@ __TS__SetDescriptor(
2014
2088
  end},
2015
2089
  true
2016
2090
  )
2091
+ __TS__SetDescriptor(
2092
+ Unit.prototype,
2093
+ "targetAcquiredEvent",
2094
+ {get = function(self)
2095
+ return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
2096
+ end},
2097
+ true
2098
+ )
2017
2099
  __TS__SetDescriptor(
2018
2100
  Unit.prototype,
2019
2101
  "onSelect",
@@ -2375,13 +2457,19 @@ Unit.onDamaging = (function()
2375
2457
  if source and source.typeId == dummyUnitId then
2376
2458
  source = nil
2377
2459
  end
2378
- local target = BlzGetEventDamageTarget()
2460
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2461
+ local metadata = damageMetadataByTarget[target]
2462
+ damageMetadataByTarget[target] = nil
2379
2463
  local data = {
2380
2464
  amount = GetEventDamage(),
2381
- attackType = BlzGetEventAttackType(),
2465
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2382
2466
  damageType = BlzGetEventDamageType(),
2383
2467
  weaponType = BlzGetEventWeaponType(),
2384
- isAttack = BlzGetEventIsAttack()
2468
+ metadata = metadata,
2469
+ isAttack = BlzGetEventIsAttack(),
2470
+ originalAmount = GetEventDamage(),
2471
+ originalMetadata = metadata,
2472
+ preventRetaliation = damagingEventPreventRetaliation
2385
2473
  }
2386
2474
  if data.isAttack and source then
2387
2475
  local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
@@ -2395,18 +2483,36 @@ Unit.onDamaging = (function()
2395
2483
  invoke(
2396
2484
  event,
2397
2485
  source,
2398
- ____exports.Unit:of(target),
2486
+ target,
2399
2487
  setmetatable(
2400
2488
  {},
2401
2489
  {
2402
2490
  __index = data,
2403
2491
  __newindex = function(self, key, value)
2404
- damageSetters[key](value)
2492
+ local damageSetter = damageSetters[key]
2493
+ if damageSetter ~= nil then
2494
+ damageSetter(value)
2495
+ end
2405
2496
  data[key] = value
2406
2497
  end
2407
2498
  }
2408
2499
  )
2409
2500
  )
2501
+ if data[0] and source then
2502
+ local sourceOwner = source.owner.handle
2503
+ data[1] = sourceOwner
2504
+ local targetOwner = target.owner.handle
2505
+ data[2] = targetOwner
2506
+ if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2507
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2508
+ data[3] = true
2509
+ end
2510
+ if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
2511
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
2512
+ data[4] = true
2513
+ end
2514
+ end
2515
+ damagingEventByTarget[target] = data
2410
2516
  return
2411
2517
  end
2412
2518
  BlzSetEventDamage(0)
@@ -2414,7 +2520,7 @@ Unit.onDamaging = (function()
2414
2520
  BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
2415
2521
  BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
2416
2522
  local sourceOwner = source.owner.handle
2417
- local targetOwner = GetOwningPlayer(target)
2523
+ local targetOwner = target.owner.handle
2418
2524
  if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2419
2525
  SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2420
2526
  Timer:run(function()
@@ -2430,23 +2536,19 @@ Unit.onDamaging = (function()
2430
2536
  for ____, ____value in ipairs(source._attackHandlers) do
2431
2537
  local condition = ____value[1]
2432
2538
  local action = ____value[2]
2433
- if condition(
2434
- source,
2435
- ____exports.Unit:of(target),
2436
- data
2437
- ) then
2539
+ if condition(source, target, data) then
2438
2540
  action(
2439
2541
  source,
2440
- ____exports.Unit:of(target),
2542
+ target,
2441
2543
  setmetatable(
2442
2544
  {fire = function()
2443
2545
  UnitDamageTarget(
2444
2546
  source.handle,
2445
- target,
2547
+ target.handle,
2446
2548
  data.amount,
2447
2549
  true,
2448
2550
  true,
2449
- data.attackType,
2551
+ attackTypeToNative(data.attackType),
2450
2552
  data.damageType,
2451
2553
  data.weaponType
2452
2554
  )
@@ -2473,26 +2575,50 @@ Unit.onDamage = __TS__New(
2473
2575
  if source and source.typeId == dummyUnitId then
2474
2576
  source = nil
2475
2577
  end
2578
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2579
+ local damagingEvent = damagingEventByTarget[target]
2580
+ damagingEventByTarget[target] = nil
2476
2581
  local data = {
2477
2582
  amount = GetEventDamage(),
2478
- attackType = BlzGetEventAttackType(),
2583
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2479
2584
  damageType = BlzGetEventDamageType(),
2480
2585
  weaponType = BlzGetEventWeaponType(),
2586
+ metadata = damagingEvent and damagingEvent.metadata,
2481
2587
  isAttack = BlzGetEventIsAttack(),
2482
- originalAmount = GetEventDamage(),
2588
+ originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
2589
+ originalMetadata = damagingEvent and damagingEvent.originalMetadata,
2483
2590
  preventDeath = damageEventPreventDeath
2484
2591
  }
2592
+ if damagingEvent then
2593
+ for key, value in pairs(damagingEvent) do
2594
+ if isAttribute(key) then
2595
+ data[key] = value
2596
+ end
2597
+ end
2598
+ local sourceOwner = damagingEvent[1]
2599
+ if sourceOwner then
2600
+ local targetOwner = damagingEvent[2]
2601
+ if damagingEvent[3] then
2602
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
2603
+ end
2604
+ if damagingEvent[4] then
2605
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
2606
+ end
2607
+ end
2608
+ end
2485
2609
  local evData = setmetatable(
2486
2610
  {},
2487
2611
  {
2488
2612
  __index = data,
2489
2613
  __newindex = function(self, key, value)
2490
- damageSetters[key](value)
2614
+ local damageSetter = damageSetters[key]
2615
+ if damageSetter ~= nil then
2616
+ damageSetter(value)
2617
+ end
2491
2618
  data[key] = value
2492
2619
  end
2493
2620
  }
2494
2621
  )
2495
- local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2496
2622
  invoke(event, source, target, evData)
2497
2623
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2498
2624
  local bonusHealth = math.ceil(evData.amount)
@@ -2571,6 +2697,21 @@ Unit.itemStackedEvent = __TS__New(
2571
2697
  EVENT_PLAYER_UNIT_STACK_ITEM,
2572
2698
  function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2573
2699
  )
2700
+ __TS__ObjectDefineProperty(
2701
+ Unit,
2702
+ "itemChargesChangedEvent",
2703
+ {get = function(self)
2704
+ local event = __TS__New(Event)
2705
+ Item.chargesChangedEvent:addListener(function(item)
2706
+ local unit = item.owner
2707
+ if unit ~= nil then
2708
+ invoke(event, unit, item)
2709
+ end
2710
+ end)
2711
+ rawset(self, "itemChargesChangedEvent", event)
2712
+ return event
2713
+ end}
2714
+ )
2574
2715
  __TS__ObjectDefineProperty(
2575
2716
  Unit,
2576
2717
  "itemUseOrderEvent",
@@ -1,11 +1,10 @@
1
1
  /** @noSelfInFile */
2
2
  export declare const enum AttackType {
3
- NONE = "unknown",
4
- NORMAL = "normal",
5
- PIERCE = "pierce",
6
- SIEGE = "siege",
7
- SPELL = "spells",
8
- CHAOS = "chaos",
9
- MAGIC = "magic",
10
- HERO = "hero"
3
+ SPELL = 0,
4
+ NORMAL = 1,
5
+ PIERCE = 2,
6
+ SIEGE = 3,
7
+ MAGIC = 4,
8
+ CHAOS = 5,
9
+ HERO = 6
11
10
  }
@@ -1,2 +1,44 @@
1
1
  local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByAttackType = {
5
+ [1] = "normal",
6
+ [2] = "pierce",
7
+ [3] = "siege",
8
+ [0] = "spells",
9
+ [5] = "chaos",
10
+ [4] = "magic",
11
+ [6] = "hero"
12
+ }
13
+ local attackTypeByString = invertRecord(stringByAttackType)
14
+ local nativeByAttackType = {
15
+ [1] = ATTACK_TYPE_MELEE,
16
+ [2] = ATTACK_TYPE_PIERCE,
17
+ [3] = ATTACK_TYPE_SIEGE,
18
+ [0] = ATTACK_TYPE_NORMAL,
19
+ [5] = ATTACK_TYPE_CHAOS,
20
+ [4] = ATTACK_TYPE_MAGIC,
21
+ [6] = ATTACK_TYPE_HERO
22
+ }
23
+ local attackTypeByNative = invertRecord(nativeByAttackType)
24
+ ---
25
+ -- @internal For use by internal systems only.
26
+ ____exports.attackTypeToString = function(attackType)
27
+ return attackType ~= nil and stringByAttackType[attackType] or "unknown"
28
+ end
29
+ ---
30
+ -- @internal For use by internal systems only.
31
+ ____exports.stringToAttackType = function(____string)
32
+ return attackTypeByString[____string]
33
+ end
34
+ ---
35
+ -- @internal For use by internal systems only.
36
+ ____exports.attackTypeToNative = function(attackType)
37
+ return nativeByAttackType[attackType]
38
+ end
39
+ ---
40
+ -- @internal For use by internal systems only.
41
+ ____exports.nativeToAttackType = function(attackType)
42
+ return attackTypeByNative[attackType]
43
+ end
2
44
  return ____exports
@@ -1,10 +1,10 @@
1
1
  /** @noSelfInFile */
2
2
  export declare const enum MovementType {
3
- NONE = "",
4
- FLOAT = "float",
5
- FLY = "fly",
6
- FOOT = "foot",
7
- HORSE = "horse",
8
- HOVER = "hover",
9
- AMPHIBIOUS = "amph"
3
+ NONE = 0,
4
+ FOOT = 1,
5
+ FLY = 2,
6
+ HORSE = 4,
7
+ HOVER = 8,
8
+ FLOAT = 16,
9
+ AMPHIBIOUS = 32
10
10
  }
@@ -1,2 +1,24 @@
1
1
  local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByMovementType = {
5
+ [0] = "",
6
+ [16] = "float",
7
+ [2] = "fly",
8
+ [1] = "foot",
9
+ [4] = "horse",
10
+ [8] = "hover",
11
+ [32] = "amph"
12
+ }
13
+ local movementTypeByString = invertRecord(stringByMovementType)
14
+ ---
15
+ -- @internal For use by internal systems only.
16
+ ____exports.movementTypeToString = function(movementType)
17
+ return stringByMovementType[movementType]
18
+ end
19
+ ---
20
+ -- @internal For use by internal systems only.
21
+ ____exports.stringToMovementType = function(____string)
22
+ return movementTypeByString[____string] or 0
23
+ end
2
24
  return ____exports
@@ -0,0 +1,6 @@
1
+ /** @noSelfInFile */
2
+ export declare enum UnitAttribute {
3
+ STRENGTH = 1,
4
+ INTELLIGENCE = 2,
5
+ AGILITY = 3
6
+ }
@@ -0,0 +1,9 @@
1
+ local ____exports = {}
2
+ ____exports.UnitAttribute = UnitAttribute or ({})
3
+ ____exports.UnitAttribute.STRENGTH = 1
4
+ ____exports.UnitAttribute[____exports.UnitAttribute.STRENGTH] = "STRENGTH"
5
+ ____exports.UnitAttribute.INTELLIGENCE = 2
6
+ ____exports.UnitAttribute[____exports.UnitAttribute.INTELLIGENCE] = "INTELLIGENCE"
7
+ ____exports.UnitAttribute.AGILITY = 3
8
+ ____exports.UnitAttribute[____exports.UnitAttribute.AGILITY] = "AGILITY"
9
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class PermanentInvisibilityAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get shouldAutoAcquireAttackTargets(): boolean[];
7
+ set shouldAutoAcquireAttackTargets(shouldAutoAcquireAttackTargets: ObjectDataEntryLevelFieldValueSupplier<boolean>);
8
+ }
@@ -0,0 +1,26 @@
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.PermanentInvisibilityAbilityType = __TS__Class()
9
+ local PermanentInvisibilityAbilityType = ____exports.PermanentInvisibilityAbilityType
10
+ PermanentInvisibilityAbilityType.name = "PermanentInvisibilityAbilityType"
11
+ __TS__ClassExtends(PermanentInvisibilityAbilityType, AbilityType)
12
+ PermanentInvisibilityAbilityType.BASE_ID = fourCC("Apiv")
13
+ __TS__SetDescriptor(
14
+ PermanentInvisibilityAbilityType.prototype,
15
+ "shouldAutoAcquireAttackTargets",
16
+ {
17
+ get = function(self)
18
+ return self:getBooleanLevelField("Gho1")
19
+ end,
20
+ set = function(self, shouldAutoAcquireAttackTargets)
21
+ self:setBooleanLevelField("Gho1", shouldAutoAcquireAttackTargets)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -3,12 +3,16 @@ import { TupleOf } from "../../../utility/types";
3
3
  import { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
4
4
  import { Race } from "../auxiliary/race";
5
5
  import { SoundPresetName } from "../auxiliary/sound-preset-name";
6
- import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
6
+ import { ObjectDataEntry, ObjectDataEntryConstructor, ObjectDataEntryId } from "../entry";
7
7
  import { LightningTypeId } from "./lightning-type";
8
8
  export type BuffTypeId = ObjectDataEntryId & number & {
9
9
  readonly __buffTypeId: unique symbol;
10
10
  };
11
+ export type StandardBuffTypeId = BuffTypeId & {
12
+ readonly __standardBuffTypeId: unique symbol;
13
+ };
11
14
  export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> extends ObjectDataEntry<Id> {
15
+ static readonly [id: StandardBuffTypeId]: ObjectDataEntryConstructor<BuffType>;
12
16
  private static readonly idGenerator;
13
17
  protected static generateId(): number;
14
18
  protected static getObjectData(map: WarMap): WarObjects;
@@ -51,13 +55,3 @@ export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> exten
51
55
  get tooltipExtendedText(): string;
52
56
  set tooltipExtendedText(tooltipText: string);
53
57
  }
54
- declare const AvatarBuffType_base: typeof BuffType;
55
- export declare class AvatarBuffType extends AvatarBuffType_base {
56
- }
57
- declare const DevotionAuraBuffType_base: typeof BuffType;
58
- export declare class DevotionAuraBuffType extends DevotionAuraBuffType_base {
59
- }
60
- declare const DivineShieldBuffType_base: typeof BuffType;
61
- export declare class DivineShieldBuffType extends DivineShieldBuffType_base {
62
- }
63
- export {};
@@ -6,6 +6,8 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
6
6
  local ____exports = {}
7
7
  local ____arrays = require("utility.arrays")
8
8
  local array = ____arrays.array
9
+ local ____reflection = require("utility.reflection")
10
+ local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNumberIndexSupplier
9
11
  local ____entry = require("engine.object-data.entry")
10
12
  local ObjectDataEntry = ____entry.ObjectDataEntry
11
13
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
@@ -285,32 +287,14 @@ __TS__SetDescriptor(
285
287
  },
286
288
  true
287
289
  )
288
- local function makeBaseBuffType(id)
289
- local BaseBuffType = __TS__Class()
290
- BaseBuffType.name = "BaseBuffType"
291
- __TS__ClassExtends(BaseBuffType, ____exports.BuffType)
292
- BaseBuffType.BASE_ID = id
293
- return BaseBuffType
294
- end
295
- ____exports.AvatarBuffType = __TS__Class()
296
- local AvatarBuffType = ____exports.AvatarBuffType
297
- AvatarBuffType.name = "AvatarBuffType"
298
- __TS__ClassExtends(
299
- AvatarBuffType,
300
- makeBaseBuffType(fourCC("BHav"))
301
- )
302
- ____exports.DevotionAuraBuffType = __TS__Class()
303
- local DevotionAuraBuffType = ____exports.DevotionAuraBuffType
304
- DevotionAuraBuffType.name = "DevotionAuraBuffType"
305
- __TS__ClassExtends(
306
- DevotionAuraBuffType,
307
- makeBaseBuffType(fourCC("BHad"))
308
- )
309
- ____exports.DivineShieldBuffType = __TS__Class()
310
- local DivineShieldBuffType = ____exports.DivineShieldBuffType
311
- DivineShieldBuffType.name = "DivineShieldBuffType"
312
- __TS__ClassExtends(
313
- DivineShieldBuffType,
314
- makeBaseBuffType(fourCC("BHds"))
290
+ implementReadonlyNumberIndexSupplier(
291
+ ____exports.BuffType,
292
+ function(id)
293
+ local ____class_0 = __TS__Class()
294
+ ____class_0.name = ____class_0.name
295
+ __TS__ClassExtends(____class_0, ____exports.BuffType)
296
+ ____class_0.BASE_ID = id
297
+ return ____class_0
298
+ end
315
299
  )
316
300
  return ____exports