warscript 0.0.1-dev.f5421e8 → 0.0.1-dev.f9166a3

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 (66) 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/core/types/sound.lua +5 -0
  6. package/decl/native.d.ts +840 -786
  7. package/engine/behaviour/ability/damage.d.ts +6 -3
  8. package/engine/behaviour/ability/damage.lua +24 -36
  9. package/engine/behaviour/ability/emulate-impact.lua +16 -2
  10. package/engine/behaviour/ability.lua +1 -1
  11. package/engine/behaviour/unit.d.ts +15 -0
  12. package/engine/behaviour/unit.lua +114 -4
  13. package/engine/internal/ability.d.ts +4 -0
  14. package/engine/internal/ability.lua +17 -0
  15. package/engine/internal/item/ability.lua +12 -10
  16. package/engine/internal/item.d.ts +5 -2
  17. package/engine/internal/item.lua +75 -3
  18. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  19. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  20. package/engine/internal/unit/ability.d.ts +5 -0
  21. package/engine/internal/unit/ability.lua +14 -0
  22. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  23. package/engine/internal/unit/allowed-targets.lua +9 -1
  24. package/engine/internal/unit+damage.d.ts +2 -11
  25. package/engine/internal/unit+damage.lua +10 -14
  26. package/engine/internal/unit+spellSteal.lua +1 -2
  27. package/engine/internal/unit-missile-launch.lua +1 -1
  28. package/engine/internal/unit.d.ts +20 -3
  29. package/engine/internal/unit.lua +163 -37
  30. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  31. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  32. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  33. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  34. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  35. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  36. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  37. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  38. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  39. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  40. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  41. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  42. package/engine/object-data/entry/ability-type.lua +7 -0
  43. package/engine/object-data/entry/buff-type/applicable.lua +5 -0
  44. package/engine/object-data/entry/buff-type.d.ts +5 -11
  45. package/engine/object-data/entry/buff-type.lua +11 -27
  46. package/engine/object-data/entry/unit-type.d.ts +2 -2
  47. package/engine/object-data/entry/unit-type.lua +94 -84
  48. package/engine/object-field/ability.d.ts +1 -1
  49. package/engine/object-field/unit.d.ts +46 -3
  50. package/engine/object-field/unit.lua +173 -7
  51. package/engine/object-field.d.ts +12 -3
  52. package/engine/object-field.lua +164 -78
  53. package/engine/standard/entries/buff-type.d.ts +3 -0
  54. package/engine/standard/entries/buff-type.lua +3 -0
  55. package/objutil/buff.lua +1 -2
  56. package/package.json +2 -2
  57. package/utility/arrays.d.ts +1 -0
  58. package/utility/arrays.lua +3 -0
  59. package/utility/functions.d.ts +1 -0
  60. package/utility/functions.lua +1 -0
  61. package/utility/linked-set.d.ts +1 -0
  62. package/utility/linked-set.lua +3 -0
  63. package/utility/lua-maps.d.ts +3 -0
  64. package/utility/lua-maps.lua +16 -0
  65. package/utility/lua-sets.d.ts +1 -0
  66. 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)
@@ -1292,6 +1325,19 @@ __TS__SetDescriptor(
1292
1325
  },
1293
1326
  true
1294
1327
  )
1328
+ __TS__SetDescriptor(
1329
+ Unit.prototype,
1330
+ "primaryAttribute",
1331
+ {
1332
+ get = function(self)
1333
+ return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
1334
+ end,
1335
+ set = function(self, primaryAttribute)
1336
+ setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
1337
+ end
1338
+ },
1339
+ true
1340
+ )
1295
1341
  __TS__SetDescriptor(
1296
1342
  Unit.prototype,
1297
1343
  "strengthBase",
@@ -1416,7 +1462,7 @@ __TS__SetDescriptor(
1416
1462
  return not self[106]
1417
1463
  end,
1418
1464
  set = function(self, isTeamGlowVisible)
1419
- showUnitTeamGlow(self.handle, isTeamGlowVisible)
1465
+ BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
1420
1466
  local ____temp_6
1421
1467
  if not isTeamGlowVisible then
1422
1468
  ____temp_6 = true
@@ -1432,9 +1478,9 @@ __TS__SetDescriptor(
1432
1478
  Unit.prototype,
1433
1479
  "color",
1434
1480
  {set = function(self, color)
1435
- setUnitColor(self.handle, color.handle)
1481
+ SetUnitColor(self.handle, color.handle)
1436
1482
  if self[106] then
1437
- showUnitTeamGlow(self.handle, false)
1483
+ BlzShowUnitTeamGlow(self.handle, false)
1438
1484
  end
1439
1485
  end},
1440
1486
  true
@@ -1702,10 +1748,10 @@ __TS__SetDescriptor(
1702
1748
  "gold",
1703
1749
  {
1704
1750
  get = function(self)
1705
- return getResourceAmount(self.handle)
1751
+ return GetResourceAmount(self.handle)
1706
1752
  end,
1707
1753
  set = function(self, gold)
1708
- setResourceAmount(self.handle, gold)
1754
+ SetResourceAmount(self.handle, gold)
1709
1755
  end
1710
1756
  },
1711
1757
  true
@@ -1833,6 +1879,19 @@ __TS__SetDescriptor(
1833
1879
  end},
1834
1880
  true
1835
1881
  )
1882
+ __TS__SetDescriptor(
1883
+ Unit.prototype,
1884
+ "movementType",
1885
+ {
1886
+ get = function(self)
1887
+ return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
1888
+ end,
1889
+ set = function(self, movementType)
1890
+ setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
1891
+ end
1892
+ },
1893
+ true
1894
+ )
1836
1895
  __TS__SetDescriptor(
1837
1896
  Unit.prototype,
1838
1897
  "pathing",
@@ -2014,6 +2073,14 @@ __TS__SetDescriptor(
2014
2073
  end},
2015
2074
  true
2016
2075
  )
2076
+ __TS__SetDescriptor(
2077
+ Unit.prototype,
2078
+ "targetAcquiredEvent",
2079
+ {get = function(self)
2080
+ return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
2081
+ end},
2082
+ true
2083
+ )
2017
2084
  __TS__SetDescriptor(
2018
2085
  Unit.prototype,
2019
2086
  "onSelect",
@@ -2375,13 +2442,19 @@ Unit.onDamaging = (function()
2375
2442
  if source and source.typeId == dummyUnitId then
2376
2443
  source = nil
2377
2444
  end
2378
- local target = BlzGetEventDamageTarget()
2445
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2446
+ local metadata = damageMetadataByTarget[target]
2447
+ damageMetadataByTarget[target] = nil
2379
2448
  local data = {
2380
2449
  amount = GetEventDamage(),
2381
- attackType = BlzGetEventAttackType(),
2450
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2382
2451
  damageType = BlzGetEventDamageType(),
2383
2452
  weaponType = BlzGetEventWeaponType(),
2384
- isAttack = BlzGetEventIsAttack()
2453
+ metadata = metadata,
2454
+ isAttack = BlzGetEventIsAttack(),
2455
+ originalAmount = GetEventDamage(),
2456
+ originalMetadata = metadata,
2457
+ preventRetaliation = damagingEventPreventRetaliation
2385
2458
  }
2386
2459
  if data.isAttack and source then
2387
2460
  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 +2468,36 @@ Unit.onDamaging = (function()
2395
2468
  invoke(
2396
2469
  event,
2397
2470
  source,
2398
- ____exports.Unit:of(target),
2471
+ target,
2399
2472
  setmetatable(
2400
2473
  {},
2401
2474
  {
2402
2475
  __index = data,
2403
2476
  __newindex = function(self, key, value)
2404
- damageSetters[key](value)
2477
+ local damageSetter = damageSetters[key]
2478
+ if damageSetter ~= nil then
2479
+ damageSetter(value)
2480
+ end
2405
2481
  data[key] = value
2406
2482
  end
2407
2483
  }
2408
2484
  )
2409
2485
  )
2486
+ if data[0] and source then
2487
+ local sourceOwner = source.owner.handle
2488
+ data[1] = sourceOwner
2489
+ local targetOwner = target.owner.handle
2490
+ data[2] = targetOwner
2491
+ if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2492
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2493
+ data[3] = true
2494
+ end
2495
+ if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
2496
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
2497
+ data[4] = true
2498
+ end
2499
+ end
2500
+ damagingEventByTarget[target] = data
2410
2501
  return
2411
2502
  end
2412
2503
  BlzSetEventDamage(0)
@@ -2414,7 +2505,7 @@ Unit.onDamaging = (function()
2414
2505
  BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
2415
2506
  BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
2416
2507
  local sourceOwner = source.owner.handle
2417
- local targetOwner = GetOwningPlayer(target)
2508
+ local targetOwner = target.owner.handle
2418
2509
  if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
2419
2510
  SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
2420
2511
  Timer:run(function()
@@ -2430,23 +2521,19 @@ Unit.onDamaging = (function()
2430
2521
  for ____, ____value in ipairs(source._attackHandlers) do
2431
2522
  local condition = ____value[1]
2432
2523
  local action = ____value[2]
2433
- if condition(
2434
- source,
2435
- ____exports.Unit:of(target),
2436
- data
2437
- ) then
2524
+ if condition(source, target, data) then
2438
2525
  action(
2439
2526
  source,
2440
- ____exports.Unit:of(target),
2527
+ target,
2441
2528
  setmetatable(
2442
2529
  {fire = function()
2443
2530
  UnitDamageTarget(
2444
2531
  source.handle,
2445
- target,
2532
+ target.handle,
2446
2533
  data.amount,
2447
2534
  true,
2448
2535
  true,
2449
- data.attackType,
2536
+ attackTypeToNative(data.attackType),
2450
2537
  data.damageType,
2451
2538
  data.weaponType
2452
2539
  )
@@ -2473,26 +2560,50 @@ Unit.onDamage = __TS__New(
2473
2560
  if source and source.typeId == dummyUnitId then
2474
2561
  source = nil
2475
2562
  end
2563
+ local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2564
+ local damagingEvent = damagingEventByTarget[target]
2565
+ damagingEventByTarget[target] = nil
2476
2566
  local data = {
2477
2567
  amount = GetEventDamage(),
2478
- attackType = BlzGetEventAttackType(),
2568
+ attackType = nativeToAttackType(BlzGetEventAttackType()),
2479
2569
  damageType = BlzGetEventDamageType(),
2480
2570
  weaponType = BlzGetEventWeaponType(),
2571
+ metadata = damagingEvent and damagingEvent.metadata,
2481
2572
  isAttack = BlzGetEventIsAttack(),
2482
- originalAmount = GetEventDamage(),
2573
+ originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
2574
+ originalMetadata = damagingEvent and damagingEvent.originalMetadata,
2483
2575
  preventDeath = damageEventPreventDeath
2484
2576
  }
2577
+ if damagingEvent then
2578
+ for key, value in pairs(damagingEvent) do
2579
+ if isAttribute(key) then
2580
+ data[key] = value
2581
+ end
2582
+ end
2583
+ local sourceOwner = damagingEvent[1]
2584
+ if sourceOwner then
2585
+ local targetOwner = damagingEvent[2]
2586
+ if damagingEvent[3] then
2587
+ SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
2588
+ end
2589
+ if damagingEvent[4] then
2590
+ SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
2591
+ end
2592
+ end
2593
+ end
2485
2594
  local evData = setmetatable(
2486
2595
  {},
2487
2596
  {
2488
2597
  __index = data,
2489
2598
  __newindex = function(self, key, value)
2490
- damageSetters[key](value)
2599
+ local damageSetter = damageSetters[key]
2600
+ if damageSetter ~= nil then
2601
+ damageSetter(value)
2602
+ end
2491
2603
  data[key] = value
2492
2604
  end
2493
2605
  }
2494
2606
  )
2495
- local target = ____exports.Unit:of(BlzGetEventDamageTarget())
2496
2607
  invoke(event, source, target, evData)
2497
2608
  if evData[0] ~= nil and target.health - evData.amount < 0.405 then
2498
2609
  local bonusHealth = math.ceil(evData.amount)
@@ -2571,6 +2682,21 @@ Unit.itemStackedEvent = __TS__New(
2571
2682
  EVENT_PLAYER_UNIT_STACK_ITEM,
2572
2683
  function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
2573
2684
  )
2685
+ __TS__ObjectDefineProperty(
2686
+ Unit,
2687
+ "itemChargesChangedEvent",
2688
+ {get = function(self)
2689
+ local event = __TS__New(Event)
2690
+ Item.chargesChangedEvent:addListener(function(item)
2691
+ local unit = item.owner
2692
+ if unit ~= nil then
2693
+ invoke(event, unit, item)
2694
+ end
2695
+ end)
2696
+ rawset(self, "itemChargesChangedEvent", event)
2697
+ return event
2698
+ end}
2699
+ )
2574
2700
  __TS__ObjectDefineProperty(
2575
2701
  Unit,
2576
2702
  "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
@@ -7,4 +7,6 @@ export declare class BerserkAbilityType extends AbilityType {
7
7
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
8
8
  get attackSpeedIncreaseFactor(): number[];
9
9
  set attackSpeedIncreaseFactor(attackSpeedIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ get receivedDamageIncreaseFactor(): number[];
11
+ set receivedDamageIncreaseFactor(receivedDamageIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
10
12
  }
@@ -36,4 +36,17 @@ __TS__SetDescriptor(
36
36
  },
37
37
  true
38
38
  )
39
+ __TS__SetDescriptor(
40
+ BerserkAbilityType.prototype,
41
+ "receivedDamageIncreaseFactor",
42
+ {
43
+ get = function(self)
44
+ return self:getNumberLevelField("bsk3")
45
+ end,
46
+ set = function(self, receivedDamageIncreaseFactor)
47
+ self:setNumberLevelField("bsk3", receivedDamageIncreaseFactor)
48
+ end
49
+ },
50
+ true
51
+ )
39
52
  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
@@ -9,4 +9,14 @@ export declare class SlowPoisonAbilityType extends AbilityType {
9
9
  set movementSpeedDecreaseFactor(movementSpeedDecreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
10
10
  get attackSpeedDecreaseFactor(): number[];
11
11
  set attackSpeedDecreaseFactor(attackSpeedDecreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ get isDamageStacking(): boolean[];
13
+ set isDamageStacking(isDamageStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
14
+ get isMovementSpeedFactorStacking(): boolean[];
15
+ set isMovementSpeedFactorStacking(isMovementSpeedFactorStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
16
+ get isAttackSpeedFactorStacking(): boolean[];
17
+ set isAttackSpeedFactorStacking(isAttackSpeedFactorStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
18
+ get isAbleToKill(): boolean[];
19
+ set isAbleToKill(isAbleToKill: ObjectDataEntryLevelFieldValueSupplier<boolean>);
20
+ private setOption;
21
+ private getOption;
12
22
  }
@@ -9,6 +9,12 @@ ____exports.SlowPoisonAbilityType = __TS__Class()
9
9
  local SlowPoisonAbilityType = ____exports.SlowPoisonAbilityType
10
10
  SlowPoisonAbilityType.name = "SlowPoisonAbilityType"
11
11
  __TS__ClassExtends(SlowPoisonAbilityType, AbilityType)
12
+ function SlowPoisonAbilityType.prototype.setOption(self, option, supplier)
13
+ self:setFlagLevelFieldValue("Spo4", option, supplier)
14
+ end
15
+ function SlowPoisonAbilityType.prototype.getOption(self, option)
16
+ return self:getFlagLevelFieldValue("Spo4", option)
17
+ end
12
18
  SlowPoisonAbilityType.BASE_ID = fourCC("Aspo")
13
19
  __TS__SetDescriptor(
14
20
  SlowPoisonAbilityType.prototype,
@@ -49,4 +55,56 @@ __TS__SetDescriptor(
49
55
  },
50
56
  true
51
57
  )
58
+ __TS__SetDescriptor(
59
+ SlowPoisonAbilityType.prototype,
60
+ "isDamageStacking",
61
+ {
62
+ get = function(self)
63
+ return self:getOption(1)
64
+ end,
65
+ set = function(self, isDamageStacking)
66
+ self:setOption(1, isDamageStacking)
67
+ end
68
+ },
69
+ true
70
+ )
71
+ __TS__SetDescriptor(
72
+ SlowPoisonAbilityType.prototype,
73
+ "isMovementSpeedFactorStacking",
74
+ {
75
+ get = function(self)
76
+ return self:getOption(2)
77
+ end,
78
+ set = function(self, isMovementSpeedFactorStacking)
79
+ self:setOption(2, isMovementSpeedFactorStacking)
80
+ end
81
+ },
82
+ true
83
+ )
84
+ __TS__SetDescriptor(
85
+ SlowPoisonAbilityType.prototype,
86
+ "isAttackSpeedFactorStacking",
87
+ {
88
+ get = function(self)
89
+ return self:getOption(4)
90
+ end,
91
+ set = function(self, isAttackSpeedFactorStacking)
92
+ self:setOption(4, isAttackSpeedFactorStacking)
93
+ end
94
+ },
95
+ true
96
+ )
97
+ __TS__SetDescriptor(
98
+ SlowPoisonAbilityType.prototype,
99
+ "isAbleToKill",
100
+ {
101
+ get = function(self)
102
+ return self:getOption(8)
103
+ end,
104
+ set = function(self, isAbleToKill)
105
+ self:setOption(8, isAbleToKill)
106
+ end
107
+ },
108
+ true
109
+ )
52
110
  return ____exports