warscript 0.0.1-dev.e4a5fce → 0.0.1-dev.ea10f2b

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 (97) hide show
  1. package/config.d.ts +5 -0
  2. package/config.lua +10 -0
  3. package/core/types/effect.d.ts +1 -0
  4. package/core/types/effect.lua +80 -30
  5. package/core/types/sound.d.ts +17 -24
  6. package/core/types/sound.lua +94 -24
  7. package/core/util.d.ts +1 -1
  8. package/core/util.lua +12 -1
  9. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  10. package/engine/behaviour/ability/apply-buff.lua +32 -0
  11. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  12. package/engine/behaviour/ability/damage.d.ts +3 -0
  13. package/engine/behaviour/ability/damage.lua +2 -2
  14. package/engine/behaviour/ability/emulate-impact.lua +5 -7
  15. package/engine/behaviour/ability/on-command-impact.lua +7 -0
  16. package/engine/behaviour/ability.d.ts +12 -3
  17. package/engine/behaviour/ability.lua +66 -7
  18. package/engine/behaviour/unit.d.ts +2 -0
  19. package/engine/buff.d.ts +56 -41
  20. package/engine/buff.lua +295 -228
  21. package/engine/internal/ability.d.ts +11 -1
  22. package/engine/internal/ability.lua +67 -2
  23. package/engine/internal/item/ability.lua +106 -0
  24. package/engine/internal/item.d.ts +2 -2
  25. package/engine/internal/item.lua +56 -25
  26. package/engine/internal/mechanics/ability-duration.lua +1 -1
  27. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  28. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  29. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  30. package/engine/internal/object-data/evasion-probability.lua +16 -0
  31. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  32. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  33. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  34. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  35. package/engine/internal/unit/bonus.d.ts +2 -0
  36. package/engine/internal/unit/bonus.lua +17 -0
  37. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  38. package/engine/internal/unit/ignore-events-items.lua +5 -0
  39. package/engine/internal/unit/item.lua +6 -12
  40. package/engine/internal/unit.d.ts +9 -2
  41. package/engine/internal/unit.lua +71 -15
  42. package/engine/internal/utility.lua +12 -0
  43. package/engine/lightning.d.ts +12 -5
  44. package/engine/lightning.lua +48 -14
  45. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  46. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  47. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  48. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  49. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  50. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  51. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  52. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  53. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  54. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  55. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  56. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  57. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  58. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  59. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  60. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  61. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  62. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  63. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  64. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  65. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  66. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  67. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  68. package/engine/object-data/entry/ability-type/web.lua +52 -0
  69. package/engine/object-data/entry/ability-type.d.ts +8 -6
  70. package/engine/object-data/entry/ability-type.lua +62 -27
  71. package/engine/object-data/entry/buff-type/applicable.lua +13 -37
  72. package/engine/object-data/entry/buff-type.d.ts +1 -1
  73. package/engine/object-data/entry/buff-type.lua +2 -2
  74. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  75. package/engine/object-data/entry/item-type.d.ts +3 -1
  76. package/engine/object-data/entry/item-type.lua +15 -2
  77. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  78. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  79. package/engine/object-data/entry/sound-preset.lua +140 -0
  80. package/engine/object-data/entry/unit-type.d.ts +8 -1
  81. package/engine/object-data/entry/unit-type.lua +61 -8
  82. package/engine/object-data/entry/upgrade.d.ts +1 -1
  83. package/engine/object-data/entry/upgrade.lua +4 -4
  84. package/engine/object-data/entry.d.ts +16 -14
  85. package/engine/object-data/entry.lua +60 -32
  86. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  87. package/engine/object-field/ability.d.ts +5 -2
  88. package/engine/object-field/ability.lua +3 -0
  89. package/engine/object-field.d.ts +2 -2
  90. package/engine/object-field.lua +4 -0
  91. package/engine/standard/entries/sound-preset.d.ts +10 -0
  92. package/engine/standard/entries/sound-preset.lua +10 -0
  93. package/engine/unit.d.ts +1 -0
  94. package/engine/unit.lua +1 -0
  95. package/objutil/unit.lua +8 -0
  96. package/package.json +2 -2
  97. package/utility/reflection.lua +11 -7
@@ -55,7 +55,7 @@ __TS__SetDescriptor(
55
55
  get = function(self)
56
56
  local abilityUpgrades = {}
57
57
  for i = 0, 3 do
58
- local abilityUpgrade = self:getObjectDataEntryIdsLevelField("Neg" .. tostring(3 + i))
58
+ local abilityUpgrade = self:getObjectDataEntryNumericIdsLevelField("Neg" .. tostring(3 + i))
59
59
  for level = 0, #abilityUpgrade - 1 do
60
60
  local levelAbilityUpgrade = abilityUpgrade[level + 1]
61
61
  if #levelAbilityUpgrade == 2 then
@@ -71,7 +71,7 @@ __TS__SetDescriptor(
71
71
  local ____opt_0 = abilityUpgrades[1]
72
72
  local isArray = __TS__ArrayIsArray(____opt_0 and ____opt_0[1])
73
73
  for i = 0, #abilityUpgrades - 1 do
74
- self:setObjectDataEntryIdsLevelField(
74
+ self:setObjectDataEntryNumericIdsLevelField(
75
75
  "Neg" .. tostring(3 + i),
76
76
  isArray and map(
77
77
  abilityUpgrades,
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class EnsnareAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get airUnitLoweringDuration(): number[];
7
+ set airUnitLoweringDuration(airUnitLoweringDuration: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ get airUnitHeight(): number[];
9
+ set airUnitHeight(airUnitHeight: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ get meleeAttackRange(): number[];
11
+ set meleeAttackRange(meleeAttackRange: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ }
@@ -0,0 +1,52 @@
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.EnsnareAbilityType = __TS__Class()
9
+ local EnsnareAbilityType = ____exports.EnsnareAbilityType
10
+ EnsnareAbilityType.name = "EnsnareAbilityType"
11
+ __TS__ClassExtends(EnsnareAbilityType, AbilityType)
12
+ EnsnareAbilityType.BASE_ID = fourCC("Aens")
13
+ __TS__SetDescriptor(
14
+ EnsnareAbilityType.prototype,
15
+ "airUnitLoweringDuration",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ens1")
19
+ end,
20
+ set = function(self, airUnitLoweringDuration)
21
+ self:setNumberLevelField("Ens1", airUnitLoweringDuration)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ EnsnareAbilityType.prototype,
28
+ "airUnitHeight",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Ens2")
32
+ end,
33
+ set = function(self, airUnitHeight)
34
+ self:setNumberLevelField("Ens2", airUnitHeight)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ __TS__SetDescriptor(
40
+ EnsnareAbilityType.prototype,
41
+ "meleeAttackRange",
42
+ {
43
+ get = function(self)
44
+ return self:getNumberLevelField("Ens3")
45
+ end,
46
+ set = function(self, meleeAttackRange)
47
+ self:setNumberLevelField("Ens3", meleeAttackRange)
48
+ end
49
+ },
50
+ true
51
+ )
52
+ return ____exports
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
15
15
  "summonedUnitTypeId",
16
16
  {
17
17
  get = function(self)
18
- return self:getObjectDataEntryIdLevelField("Osf1")
18
+ return self:getObjectDataEntryNumericIdLevelField("Osf1")
19
19
  end,
20
20
  set = function(self, summonedUnitTypeId)
21
- self:setObjectDataEntryIdLevelField("Osf1", summonedUnitTypeId)
21
+ self:setObjectDataEntryNumericIdLevelField("Osf1", summonedUnitTypeId)
22
22
  end
23
23
  },
24
24
  true
@@ -0,0 +1,10 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class PhaseShiftAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get movementSpeedDecreaseFactor(): number[];
7
+ set movementSpeedDecreaseFactor(movementSpeedDecreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ get attackSpeedDecreaseFactor(): number[];
9
+ set attackSpeedDecreaseFactor(attackSpeedDecreaseFactor: 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.PhaseShiftAbilityType = __TS__Class()
9
+ local PhaseShiftAbilityType = ____exports.PhaseShiftAbilityType
10
+ PhaseShiftAbilityType.name = "PhaseShiftAbilityType"
11
+ __TS__ClassExtends(PhaseShiftAbilityType, AbilityType)
12
+ PhaseShiftAbilityType.BASE_ID = fourCC("Apsh")
13
+ __TS__SetDescriptor(
14
+ PhaseShiftAbilityType.prototype,
15
+ "movementSpeedDecreaseFactor",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Hbn1")
19
+ end,
20
+ set = function(self, movementSpeedDecreaseFactor)
21
+ self:setNumberLevelField("Hbn1", movementSpeedDecreaseFactor)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ PhaseShiftAbilityType.prototype,
28
+ "attackSpeedDecreaseFactor",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Hbn2")
32
+ end,
33
+ set = function(self, attackSpeedDecreaseFactor)
34
+ self:setNumberLevelField("Hbn2", attackSpeedDecreaseFactor)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ return ____exports
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
15
15
  "normalFormUnitTypeId",
16
16
  {
17
17
  get = function(self)
18
- return self:getObjectDataEntryIdLevelField("Eme1")
18
+ return self:getObjectDataEntryNumericIdLevelField("Eme1")
19
19
  end,
20
20
  set = function(self, normalFormUnitTypeId)
21
- self:setObjectDataEntryIdLevelField("Eme1", normalFormUnitTypeId)
21
+ self:setObjectDataEntryNumericIdLevelField("Eme1", normalFormUnitTypeId)
22
22
  end
23
23
  },
24
24
  true
@@ -119,10 +119,10 @@ __TS__SetDescriptor(
119
119
  "alternateFormUnitTypeId",
120
120
  {
121
121
  get = function(self)
122
- return self:getObjectDataEntryIdLevelField("Emeu")
122
+ return self:getObjectDataEntryNumericIdLevelField("Emeu")
123
123
  end,
124
124
  set = function(self, alternateFormUnitTypeId)
125
- self:setObjectDataEntryIdLevelField("Emeu", alternateFormUnitTypeId)
125
+ self:setObjectDataEntryNumericIdLevelField("Emeu", alternateFormUnitTypeId)
126
126
  end
127
127
  },
128
128
  true
@@ -0,0 +1,17 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ import { UnitTypeId } from "../unit-type";
5
+ export declare class RaiseDeadAbilityType extends AbilityType {
6
+ static readonly BASE_ID: AbilityTypeId;
7
+ get firstSummonedUnitCount(): number[];
8
+ set firstSummonedUnitCount(firstSummonedUnitCount: ObjectDataEntryLevelFieldValueSupplier<number>);
9
+ get secondSummonedUnitCount(): number[];
10
+ set secondSummonedUnitCount(secondSummonedUnitCount: ObjectDataEntryLevelFieldValueSupplier<number>);
11
+ get firstSummonedUnitTypeId(): UnitTypeId[];
12
+ set firstSummonedUnitTypeId(firstSummonedUnitTypeId: ObjectDataEntryLevelFieldValueSupplier<UnitTypeId>);
13
+ get secondSummonedUnitTypeId(): UnitTypeId[];
14
+ set secondSummonedUnitTypeId(secondSummonedUnitTypeId: ObjectDataEntryLevelFieldValueSupplier<UnitTypeId>);
15
+ get limitCheckUnitTypeId(): UnitTypeId[];
16
+ set limitCheckUnitTypeId(limitCheckUnitTypeId: ObjectDataEntryLevelFieldValueSupplier<UnitTypeId>);
17
+ }
@@ -0,0 +1,78 @@
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.RaiseDeadAbilityType = __TS__Class()
9
+ local RaiseDeadAbilityType = ____exports.RaiseDeadAbilityType
10
+ RaiseDeadAbilityType.name = "RaiseDeadAbilityType"
11
+ __TS__ClassExtends(RaiseDeadAbilityType, AbilityType)
12
+ RaiseDeadAbilityType.BASE_ID = fourCC("Arai")
13
+ __TS__SetDescriptor(
14
+ RaiseDeadAbilityType.prototype,
15
+ "firstSummonedUnitCount",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Rai1")
19
+ end,
20
+ set = function(self, firstSummonedUnitCount)
21
+ self:setNumberLevelField("Rai1", firstSummonedUnitCount)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ RaiseDeadAbilityType.prototype,
28
+ "secondSummonedUnitCount",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Rai2")
32
+ end,
33
+ set = function(self, secondSummonedUnitCount)
34
+ self:setNumberLevelField("Rai2", secondSummonedUnitCount)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ __TS__SetDescriptor(
40
+ RaiseDeadAbilityType.prototype,
41
+ "firstSummonedUnitTypeId",
42
+ {
43
+ get = function(self)
44
+ return self:getObjectDataEntryNumericIdLevelField("Rai3")
45
+ end,
46
+ set = function(self, firstSummonedUnitTypeId)
47
+ self:setObjectDataEntryNumericIdLevelField("Rai3", firstSummonedUnitTypeId)
48
+ end
49
+ },
50
+ true
51
+ )
52
+ __TS__SetDescriptor(
53
+ RaiseDeadAbilityType.prototype,
54
+ "secondSummonedUnitTypeId",
55
+ {
56
+ get = function(self)
57
+ return self:getObjectDataEntryNumericIdLevelField("Rai4")
58
+ end,
59
+ set = function(self, secondSummonedUnitTypeId)
60
+ self:setObjectDataEntryNumericIdLevelField("Rai4", secondSummonedUnitTypeId)
61
+ end
62
+ },
63
+ true
64
+ )
65
+ __TS__SetDescriptor(
66
+ RaiseDeadAbilityType.prototype,
67
+ "limitCheckUnitTypeId",
68
+ {
69
+ get = function(self)
70
+ return self:getObjectDataEntryNumericIdLevelField("Raiu")
71
+ end,
72
+ set = function(self, limitCheckUnitTypeId)
73
+ self:setObjectDataEntryNumericIdLevelField("Raiu", limitCheckUnitTypeId)
74
+ end
75
+ },
76
+ true
77
+ )
78
+ return ____exports
@@ -7,4 +7,8 @@ export declare class ShockWaveAbilityType extends AbilityType {
7
7
  set damagePerTarget(damagePerTarget: ObjectDataEntryLevelFieldValueSupplier<number>);
8
8
  get maximumTotalDamage(): number[];
9
9
  set maximumTotalDamage(maximumTotalDamage: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ get distance(): number[];
11
+ set distance(distance: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ get finalAreaOfEffect(): number[];
13
+ set finalAreaOfEffect(finalAreaOfEffect: ObjectDataEntryLevelFieldValueSupplier<number>);
10
14
  }
@@ -36,4 +36,30 @@ __TS__SetDescriptor(
36
36
  },
37
37
  true
38
38
  )
39
+ __TS__SetDescriptor(
40
+ ShockWaveAbilityType.prototype,
41
+ "distance",
42
+ {
43
+ get = function(self)
44
+ return self:getNumberLevelField("Osh3")
45
+ end,
46
+ set = function(self, distance)
47
+ self:setNumberLevelField("Osh3", distance)
48
+ end
49
+ },
50
+ true
51
+ )
52
+ __TS__SetDescriptor(
53
+ ShockWaveAbilityType.prototype,
54
+ "finalAreaOfEffect",
55
+ {
56
+ get = function(self)
57
+ return self:getNumberLevelField("Osh4")
58
+ end,
59
+ set = function(self, finalAreaOfEffect)
60
+ self:setNumberLevelField("Osh4", finalAreaOfEffect)
61
+ end
62
+ },
63
+ true
64
+ )
39
65
  return ____exports
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
15
15
  "summonedUnitTypeId",
16
16
  {
17
17
  get = function(self)
18
- return self:getObjectDataEntryIdLevelField("Hwe1")
18
+ return self:getObjectDataEntryNumericIdLevelField("Hwe1")
19
19
  end,
20
20
  set = function(self, summonedUnitTypeId)
21
- self:setObjectDataEntryIdLevelField("Hwe1", summonedUnitTypeId)
21
+ self:setObjectDataEntryNumericIdLevelField("Hwe1", summonedUnitTypeId)
22
22
  end
23
23
  },
24
24
  true
@@ -15,10 +15,10 @@ __TS__SetDescriptor(
15
15
  "summonedUnitTypeId",
16
16
  {
17
17
  get = function(self)
18
- return self:getObjectDataEntryIdLevelField("Hwe1")
18
+ return self:getObjectDataEntryNumericIdLevelField("Hwe1")
19
19
  end,
20
20
  set = function(self, summonedUnitTypeId)
21
- self:setObjectDataEntryIdLevelField("Hwe1", summonedUnitTypeId)
21
+ self:setObjectDataEntryNumericIdLevelField("Hwe1", summonedUnitTypeId)
22
22
  end
23
23
  },
24
24
  true
@@ -0,0 +1,12 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class WebAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get airUnitLoweringDuration(): number[];
7
+ set airUnitLoweringDuration(airUnitLoweringDuration: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ get airUnitHeight(): number[];
9
+ set airUnitHeight(airUnitHeight: ObjectDataEntryLevelFieldValueSupplier<number>);
10
+ get meleeAttackRange(): number[];
11
+ set meleeAttackRange(meleeAttackRange: ObjectDataEntryLevelFieldValueSupplier<number>);
12
+ }
@@ -0,0 +1,52 @@
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.WebAbilityType = __TS__Class()
9
+ local WebAbilityType = ____exports.WebAbilityType
10
+ WebAbilityType.name = "WebAbilityType"
11
+ __TS__ClassExtends(WebAbilityType, AbilityType)
12
+ WebAbilityType.BASE_ID = fourCC("Aweb")
13
+ __TS__SetDescriptor(
14
+ WebAbilityType.prototype,
15
+ "airUnitLoweringDuration",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ens1")
19
+ end,
20
+ set = function(self, airUnitLoweringDuration)
21
+ self:setNumberLevelField("Ens1", airUnitLoweringDuration)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ __TS__SetDescriptor(
27
+ WebAbilityType.prototype,
28
+ "airUnitHeight",
29
+ {
30
+ get = function(self)
31
+ return self:getNumberLevelField("Ens2")
32
+ end,
33
+ set = function(self, airUnitHeight)
34
+ self:setNumberLevelField("Ens2", airUnitHeight)
35
+ end
36
+ },
37
+ true
38
+ )
39
+ __TS__SetDescriptor(
40
+ WebAbilityType.prototype,
41
+ "meleeAttackRange",
42
+ {
43
+ get = function(self)
44
+ return self:getNumberLevelField("Ens3")
45
+ end,
46
+ set = function(self, meleeAttackRange)
47
+ self:setNumberLevelField("Ens3", meleeAttackRange)
48
+ end
49
+ },
50
+ true
51
+ )
52
+ return ____exports
@@ -6,12 +6,12 @@ import { AnimationQualifier } from "../auxiliary/animation-qualifier";
6
6
  import { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
7
7
  import { CombatClassifications } from "../auxiliary/combat-classification";
8
8
  import { Race } from "../auxiliary/race";
9
- import { SoundPresetName } from "../auxiliary/sound-preset-name";
10
9
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
11
10
  import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
12
11
  import { BuffTypeId } from "./buff-type";
13
12
  import { LightningTypeId } from "./lightning-type";
14
- export type AbilityTypeId = ObjectDataEntryId & {
13
+ import { SoundPresetId } from "./sound-preset";
14
+ export type AbilityTypeId = ObjectDataEntryId & number & {
15
15
  readonly __abilityTypeId: unique symbol;
16
16
  };
17
17
  export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId> {
@@ -111,10 +111,12 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
111
111
  set turnOffTooltipText(turnOffTooltipText: ObjectDataEntryLevelFieldValueSupplier<string>);
112
112
  get turnOffTooltipExtendedText(): string[];
113
113
  set turnOffTooltipExtendedText(turnOffTooltipExtendedText: ObjectDataEntryLevelFieldValueSupplier<string>);
114
- get soundPresetName(): SoundPresetName;
115
- set soundPresetName(soundPresetName: SoundPresetName);
116
- get loopingSoundPresetName(): SoundPresetName;
117
- set loopingSoundPresetName(loopingSoundPresetName: SoundPresetName);
114
+ get casterEffectSoundPresetId(): SoundPresetId | undefined;
115
+ set casterEffectSoundPresetId(casterEffectSoundPresetId: SoundPresetId | undefined);
116
+ get casterEffectLoopingSoundPresetId(): SoundPresetId;
117
+ set casterEffectLoopingSoundPresetId(casterEffectLoopingSoundPresetId: SoundPresetId);
118
+ get targetEffectSoundPresetId(): SoundPresetId | undefined;
119
+ set targetEffectSoundPresetId(targetEffectSoundPresetId: SoundPresetId | undefined);
118
120
  get allowedTargetCombatClassifications(): CombatClassifications[];
119
121
  set allowedTargetCombatClassifications(allowedTargetCombatClassifications: ObjectDataEntryLevelFieldValueSupplier<CombatClassifications>);
120
122
  get areaOfEffect(): number[];
@@ -1,8 +1,8 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
- local __TS__New = ____lualib.__TS__New
5
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
6
6
  local ____exports = {}
7
7
  local ____unit = require("engine.internal.unit")
8
8
  local Unit = ____unit.Unit
@@ -31,14 +31,18 @@ local ____entry = require("engine.object-data.entry")
31
31
  local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLevelFieldValue
32
32
  local ObjectDataEntry = ____entry.ObjectDataEntry
33
33
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
34
- local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
34
+ local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
35
35
  local ____upgrade = require("engine.object-data.entry.upgrade")
36
36
  local Upgrade = ____upgrade.Upgrade
37
+ local ____sound = require("core.types.sound")
38
+ local Sound3D = ____sound.Sound3D
39
+ local SoundSettings = ____sound.SoundSettings
37
40
  local castAnimationFQNByAbilityTypeId = {}
38
41
  local isButtonVisibleFalseAbilityTypes = {}
39
42
  local casterCastingEffectPresetsByAbilityTypeId = {}
40
43
  local casterChannelingEffectPresetsByAbilityTypeId = {}
41
44
  local targetCastingEffectPresetsByAbilityTypeId = {}
45
+ local targetEffectSoundPresetByAbilityTypeId = {}
42
46
  ____exports.AbilityType = __TS__Class()
43
47
  local AbilityType = ____exports.AbilityType
44
48
  AbilityType.name = "AbilityType"
@@ -53,10 +57,7 @@ end
53
57
  function AbilityType.getObjectData(self, map)
54
58
  return map.objects.ability
55
59
  end
56
- AbilityType.idGenerator = __TS__New(
57
- ObjectDataEntryIdGenerator,
58
- fourCC("A000")
59
- )
60
+ AbilityType.idGenerator = abilityTypeIdGenerator
60
61
  __TS__SetDescriptor(
61
62
  AbilityType.prototype,
62
63
  "channelingAnimation",
@@ -275,10 +276,10 @@ __TS__SetDescriptor(
275
276
  "lightningTypeIds",
276
277
  {
277
278
  get = function(self)
278
- return self:getObjectDataEntryIdsField("alig")
279
+ return self:getObjectDataEntryNumericIdsField("alig")
279
280
  end,
280
281
  set = function(self, lightningTypeIds)
281
- self:setObjectDataEntryIdsField("alig", lightningTypeIds)
282
+ self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
282
283
  end
283
284
  },
284
285
  true
@@ -512,7 +513,7 @@ __TS__SetDescriptor(
512
513
  "techTreeDependencies",
513
514
  {
514
515
  get = function(self)
515
- local techTreeDependencyIds = self:getObjectDataEntryIdsField("areq")
516
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
516
517
  local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
517
518
  return mapIndexed(
518
519
  techTreeDependencyIds,
@@ -532,7 +533,7 @@ __TS__SetDescriptor(
532
533
  map(techTreeDependencies, extractTechTreeDependencyInputLevel),
533
534
  function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
534
535
  )
535
- self:setObjectDataEntryIdsField("areq", techTreeDependencyIds)
536
+ self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
536
537
  self:setNumbersField("arqa", techTreeDependencyInternalLevels)
537
538
  end
538
539
  },
@@ -722,26 +723,40 @@ __TS__SetDescriptor(
722
723
  )
723
724
  __TS__SetDescriptor(
724
725
  AbilityType.prototype,
725
- "soundPresetName",
726
+ "casterEffectSoundPresetId",
726
727
  {
727
728
  get = function(self)
728
- return self:getStringField("aefs")
729
+ local casterEffectSoundPresetId = self:getStringField("aefs")
730
+ return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
729
731
  end,
730
- set = function(self, soundPresetName)
731
- self:setStringField("aefs", soundPresetName)
732
+ set = function(self, casterEffectSoundPresetId)
733
+ self:setStringField("aefs", casterEffectSoundPresetId or "")
732
734
  end
733
735
  },
734
736
  true
735
737
  )
736
738
  __TS__SetDescriptor(
737
739
  AbilityType.prototype,
738
- "loopingSoundPresetName",
740
+ "casterEffectLoopingSoundPresetId",
739
741
  {
740
742
  get = function(self)
741
743
  return self:getStringField("aefl")
742
744
  end,
743
- set = function(self, loopingSoundPresetName)
744
- self:setStringField("aefl", loopingSoundPresetName)
745
+ set = function(self, casterEffectLoopingSoundPresetId)
746
+ self:setStringField("aefl", casterEffectLoopingSoundPresetId)
747
+ end
748
+ },
749
+ true
750
+ )
751
+ __TS__SetDescriptor(
752
+ AbilityType.prototype,
753
+ "targetEffectSoundPresetId",
754
+ {
755
+ get = function(self)
756
+ return targetEffectSoundPresetByAbilityTypeId[self.id]
757
+ end,
758
+ set = function(self, targetEffectSoundPresetId)
759
+ targetEffectSoundPresetByAbilityTypeId[self.id] = targetEffectSoundPresetId
745
760
  end
746
761
  },
747
762
  true
@@ -800,10 +815,10 @@ __TS__SetDescriptor(
800
815
  "buffTypeIds",
801
816
  {
802
817
  get = function(self)
803
- return self:getObjectDataEntryIdsLevelField("abuf")
818
+ return self:getObjectDataEntryNumericIdsLevelField("abuf")
804
819
  end,
805
820
  set = function(self, buffTypeIds)
806
- self:setObjectDataEntryIdsLevelField("abuf", buffTypeIds)
821
+ self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
807
822
  end
808
823
  },
809
824
  true
@@ -852,10 +867,10 @@ __TS__SetDescriptor(
852
867
  "effectBuffTypeIds",
853
868
  {
854
869
  get = function(self)
855
- return self:getObjectDataEntryIdsLevelField("aeff")
870
+ return self:getObjectDataEntryNumericIdsLevelField("aeff")
856
871
  end,
857
872
  set = function(self, effectBuffTypeIds)
858
- self:setObjectDataEntryIdsLevelField("aeff", effectBuffTypeIds)
873
+ self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
859
874
  end
860
875
  },
861
876
  true
@@ -970,6 +985,26 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
970
985
  end
971
986
  )
972
987
  end
988
+ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEffectSoundPresetByAbilityTypeId end)) do
989
+ if soundPresetId ~= nil then
990
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(
991
+ 4,
992
+ function(caster, ability, target)
993
+ if __TS__InstanceOf(target, Unit) then
994
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target)
995
+ else
996
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target.x, target.y)
997
+ end
998
+ end
999
+ )
1000
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(
1001
+ 4,
1002
+ function(caster, ability, x, y)
1003
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, x, y)
1004
+ end
1005
+ )
1006
+ end
1007
+ end
973
1008
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
974
1009
  return mapValues(
975
1010
  casterCastingEffectPresetsByAbilityTypeId,
@@ -999,7 +1034,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
999
1034
  end
1000
1035
  casterCastingEffectsByCaster[caster] = effects
1001
1036
  end
1002
- local function handleAbilityStopEvent(caster)
1037
+ local function handleAbilityStopCastingEvent(caster)
1003
1038
  local effects = casterCastingEffectsByCaster[caster]
1004
1039
  if effects ~= nil then
1005
1040
  for i = 1, #effects do
@@ -1010,8 +1045,8 @@ local function handleAbilityStopEvent(caster)
1010
1045
  end
1011
1046
  for abilityTypeId in pairs(casterCastingEffectModelPathsByAbilityTypeId) do
1012
1047
  Unit.abilityCastingStartEvent[abilityTypeId]:addListener(4, handleAbilityCastingStartEvent)
1013
- Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityStopEvent)
1014
- Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopEvent)
1048
+ Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
1049
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
1015
1050
  end
1016
1051
  local casterChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
1017
1052
  return mapValues(
@@ -1042,7 +1077,7 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1042
1077
  end
1043
1078
  casterChannelingEffectsByCaster[caster] = effects
1044
1079
  end
1045
- local function handleAbilityStopEventV2(caster)
1080
+ local function handleAbilityStopChannelingEvent(caster)
1046
1081
  local effects = casterChannelingEffectsByCaster[caster]
1047
1082
  if effects ~= nil then
1048
1083
  for i = 1, #effects do
@@ -1053,7 +1088,7 @@ local function handleAbilityStopEventV2(caster)
1053
1088
  end
1054
1089
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1055
1090
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1056
- Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopEventV2)
1057
- Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopEventV2)
1091
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1092
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1058
1093
  end
1059
1094
  return ____exports