warscript 0.0.1-dev.70ae346 → 0.0.1-dev.7278154

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 (131) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/core/types/effect.d.ts +1 -3
  4. package/core/types/effect.lua +26 -29
  5. package/core/types/frame.lua +10 -12
  6. package/core/types/player.lua +3 -1
  7. package/core/types/playerCamera.d.ts +2 -0
  8. package/core/types/playerCamera.lua +79 -5
  9. package/core/types/sound.d.ts +17 -25
  10. package/core/types/sound.lua +91 -46
  11. package/core/types/timer.d.ts +8 -8
  12. package/core/types/timer.lua +39 -23
  13. package/core/util.lua +6 -1
  14. package/decl/native.d.ts +844 -788
  15. package/engine/behavior.d.ts +4 -0
  16. package/engine/behavior.lua +97 -27
  17. package/engine/behaviour/ability/apply-buff.lua +1 -1
  18. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  19. package/engine/behaviour/ability/damage.d.ts +9 -3
  20. package/engine/behaviour/ability/damage.lua +26 -38
  21. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  22. package/engine/behaviour/ability/emulate-impact.lua +18 -3
  23. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  24. package/engine/behaviour/ability/restore-mana.lua +6 -6
  25. package/engine/behaviour/ability.d.ts +5 -1
  26. package/engine/behaviour/ability.lua +26 -21
  27. package/engine/behaviour/unit/stun-immunity.d.ts +5 -3
  28. package/engine/behaviour/unit/stun-immunity.lua +43 -27
  29. package/engine/behaviour/unit.d.ts +32 -0
  30. package/engine/behaviour/unit.lua +185 -4
  31. package/engine/buff.d.ts +15 -12
  32. package/engine/buff.lua +133 -117
  33. package/engine/internal/ability.d.ts +7 -1
  34. package/engine/internal/ability.lua +48 -9
  35. package/engine/internal/item/ability.lua +63 -11
  36. package/engine/internal/item+owner.lua +12 -6
  37. package/engine/internal/item.d.ts +5 -2
  38. package/engine/internal/item.lua +85 -10
  39. package/engine/internal/mechanics/ability-duration.lua +1 -1
  40. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  41. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  42. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  43. package/engine/internal/misc/frame-coordinates.lua +21 -0
  44. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  45. package/engine/internal/misc/get-terrain-z.lua +11 -0
  46. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  47. package/engine/internal/misc/player-local-handle.lua +5 -0
  48. package/engine/internal/unit/ability.d.ts +35 -0
  49. package/engine/internal/unit/ability.lua +62 -0
  50. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  51. package/engine/internal/unit/allowed-targets.lua +9 -1
  52. package/engine/internal/unit/order.d.ts +20 -0
  53. package/engine/internal/unit/order.lua +136 -0
  54. package/engine/internal/unit+ability.lua +10 -1
  55. package/engine/internal/unit+damage.d.ts +2 -11
  56. package/engine/internal/unit+damage.lua +10 -14
  57. package/engine/internal/unit+spellSteal.lua +1 -2
  58. package/engine/internal/unit-missile-launch.lua +9 -2
  59. package/engine/internal/unit.d.ts +30 -8
  60. package/engine/internal/unit.lua +253 -107
  61. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  62. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  63. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  64. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  65. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  66. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  67. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  68. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  69. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  70. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  71. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  72. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  73. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  74. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  75. package/engine/object-data/entry/ability-type/blank-configurable.lua +0 -9
  76. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  77. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  78. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  79. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  80. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  81. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  82. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  83. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  84. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  85. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  86. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  87. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  88. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  89. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  90. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  91. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  92. package/engine/object-data/entry/ability-type/web.lua +52 -0
  93. package/engine/object-data/entry/ability-type.d.ts +13 -11
  94. package/engine/object-data/entry/ability-type.lua +66 -9
  95. package/engine/object-data/entry/buff-type/applicable.lua +5 -0
  96. package/engine/object-data/entry/buff-type.d.ts +5 -11
  97. package/engine/object-data/entry/buff-type.lua +11 -27
  98. package/engine/object-data/entry/sound-preset.d.ts +17 -0
  99. package/engine/object-data/entry/sound-preset.lua +104 -0
  100. package/engine/object-data/entry/unit-type.d.ts +13 -4
  101. package/engine/object-data/entry/unit-type.lua +153 -85
  102. package/engine/object-field/ability.d.ts +4 -4
  103. package/engine/object-field/ability.lua +7 -6
  104. package/engine/object-field/unit.d.ts +57 -3
  105. package/engine/object-field/unit.lua +207 -7
  106. package/engine/object-field.d.ts +17 -6
  107. package/engine/object-field.lua +188 -92
  108. package/engine/standard/entries/buff-type.d.ts +3 -0
  109. package/engine/standard/entries/buff-type.lua +3 -0
  110. package/engine/standard/fields/unit.d.ts +4 -0
  111. package/engine/standard/fields/unit.lua +7 -0
  112. package/engine/text-tag.d.ts +36 -2
  113. package/engine/text-tag.lua +249 -10
  114. package/engine/unit.d.ts +1 -0
  115. package/engine/unit.lua +1 -0
  116. package/objutil/buff.lua +1 -2
  117. package/package.json +2 -2
  118. package/utility/arrays.d.ts +1 -0
  119. package/utility/arrays.lua +3 -0
  120. package/utility/callback-array.d.ts +13 -0
  121. package/utility/callback-array.lua +46 -0
  122. package/utility/functions.d.ts +8 -0
  123. package/utility/functions.lua +13 -0
  124. package/utility/linked-set.d.ts +1 -0
  125. package/utility/linked-set.lua +3 -0
  126. package/utility/lua-maps.d.ts +4 -0
  127. package/utility/lua-maps.lua +20 -0
  128. package/utility/lua-sets.d.ts +2 -0
  129. package/utility/lua-sets.lua +7 -0
  130. package/core/types/order.d.ts +0 -25
  131. package/core/types/order.lua +0 -55
@@ -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
@@ -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
@@ -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
@@ -3,7 +3,7 @@ import "../../internal/unit/ability";
3
3
  import { TupleOf } from "../../../utility/types";
4
4
  import { AnimationName } from "../auxiliary/animation-name";
5
5
  import { AnimationQualifier } from "../auxiliary/animation-qualifier";
6
- import { AttachmentPreset, AttachmentPresetInput } from "../auxiliary/attachment-preset";
6
+ import { AttachmentPresetInput, EffectPresetWithParameters, EffectPresetWithParametersInput } from "../auxiliary/attachment-preset";
7
7
  import { CombatClassifications } from "../auxiliary/combat-classification";
8
8
  import { Race } from "../auxiliary/race";
9
9
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
@@ -27,11 +27,11 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
27
27
  set buttonPositionX(buttonPositionX: number);
28
28
  get buttonPositionY(): number;
29
29
  set buttonPositionY(buttonPositionY: number);
30
- get casterCastingEffectPresets(): AttachmentPreset[];
31
- set casterCastingEffectPresets(casterCastingEffectPresets: AttachmentPresetInput[]);
32
- get casterChannelingEffectPresets(): AttachmentPreset[];
33
- set casterChannelingEffectPresets(casterChannelingEffectPresets: AttachmentPresetInput[]);
34
- get casterAttachmentPresets(): TupleOf<AttachmentPreset, 0 | 1 | 2>;
30
+ get casterCastingEffectPresets(): EffectPresetWithParameters[];
31
+ set casterCastingEffectPresets(casterCastingEffectPresets: EffectPresetWithParametersInput[]);
32
+ get casterChannelingEffectPresets(): EffectPresetWithParameters[];
33
+ set casterChannelingEffectPresets(casterChannelingEffectPresets: EffectPresetWithParametersInput[]);
34
+ get casterAttachmentPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2>;
35
35
  set casterAttachmentPresets(casterAttachmentPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2>);
36
36
  get effectModelPaths(): string[];
37
37
  set effectModelPaths(effectModelPaths: string[]);
@@ -63,15 +63,15 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
63
63
  set missileMovementArc(missileMovementArc: number);
64
64
  get missileMovementSpeed(): number;
65
65
  set missileMovementSpeed(missileMovementSpeed: number);
66
- get specialAttachmentPreset(): AttachmentPreset | undefined;
66
+ get specialAttachmentPreset(): EffectPresetWithParameters | undefined;
67
67
  set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
68
- get targetCastingEffectPresets(): AttachmentPreset[];
68
+ get targetCastingEffectPresets(): EffectPresetWithParameters[];
69
69
  set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
70
- get targetEffectPresets(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
70
+ get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
71
71
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
72
- get targetEffectPresetsSD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
72
+ get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
73
73
  set targetEffectPresetsSD(targetEffectPresetsSD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
74
- get targetEffectPresetsHD(): TupleOf<AttachmentPreset, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
74
+ get targetEffectPresetsHD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
75
75
  set targetEffectPresetsHD(targetEffectPresetsHD: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
76
76
  get turnOffButtonPositionX(): number;
77
77
  set turnOffButtonPositionX(buttonPositionX: number);
@@ -115,6 +115,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
115
115
  set casterEffectSoundPresetId(casterEffectSoundPresetId: SoundPresetId | undefined);
116
116
  get casterEffectLoopingSoundPresetId(): SoundPresetId;
117
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[];
@@ -2,6 +2,7 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
6
  local ____exports = {}
6
7
  local ____unit = require("engine.internal.unit")
7
8
  local Unit = ____unit.Unit
@@ -19,7 +20,7 @@ local mapIndexed = ____arrays.mapIndexed
19
20
  local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
20
21
  local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
21
22
  local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
22
- local toAttachmentPreset = ____attachment_2Dpreset.toAttachmentPreset
23
+ local toEffectPreset = ____attachment_2Dpreset.toEffectPreset
23
24
  local ____combat_2Dclassification = require("engine.object-data.auxiliary.combat-classification")
24
25
  local combatClassificationsToStringArray = ____combat_2Dclassification.combatClassificationsToStringArray
25
26
  local stringArrayToCombatClassifications = ____combat_2Dclassification.stringArrayToCombatClassifications
@@ -33,11 +34,16 @@ local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.u
33
34
  local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
34
35
  local ____upgrade = require("engine.object-data.entry.upgrade")
35
36
  local Upgrade = ____upgrade.Upgrade
37
+ local ____sound = require("core.types.sound")
38
+ local isSoundLabelCustom = ____sound.isSoundLabelCustom
39
+ local Sound3D = ____sound.Sound3D
40
+ local SoundSettings = ____sound.SoundSettings
36
41
  local castAnimationFQNByAbilityTypeId = {}
37
42
  local isButtonVisibleFalseAbilityTypes = {}
38
43
  local casterCastingEffectPresetsByAbilityTypeId = {}
39
44
  local casterChannelingEffectPresetsByAbilityTypeId = {}
40
45
  local targetCastingEffectPresetsByAbilityTypeId = {}
46
+ local targetEffectSoundPresetByAbilityTypeId = {}
41
47
  ____exports.AbilityType = __TS__Class()
42
48
  local AbilityType = ____exports.AbilityType
43
49
  AbilityType.name = "AbilityType"
@@ -113,7 +119,7 @@ __TS__SetDescriptor(
113
119
  return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
114
120
  end,
115
121
  set = function(self, casterCastingEffectPresets)
116
- casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toAttachmentPreset)
122
+ casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
117
123
  end
118
124
  },
119
125
  true
@@ -126,7 +132,7 @@ __TS__SetDescriptor(
126
132
  return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
127
133
  end,
128
134
  set = function(self, casterChannelingEffectPresets)
129
- casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toAttachmentPreset)
135
+ casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
130
136
  end
131
137
  },
132
138
  true
@@ -365,7 +371,7 @@ __TS__SetDescriptor(
365
371
  return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
366
372
  end,
367
373
  set = function(self, targetCastingEffectPresets)
368
- targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toAttachmentPreset)
374
+ targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
369
375
  end
370
376
  },
371
377
  true
@@ -743,6 +749,19 @@ __TS__SetDescriptor(
743
749
  },
744
750
  true
745
751
  )
752
+ __TS__SetDescriptor(
753
+ AbilityType.prototype,
754
+ "targetEffectSoundPresetId",
755
+ {
756
+ get = function(self)
757
+ return targetEffectSoundPresetByAbilityTypeId[self.id]
758
+ end,
759
+ set = function(self, targetEffectSoundPresetId)
760
+ targetEffectSoundPresetByAbilityTypeId[self.id] = targetEffectSoundPresetId
761
+ end
762
+ },
763
+ true
764
+ )
746
765
  __TS__SetDescriptor(
747
766
  AbilityType.prototype,
748
767
  "allowedTargetCombatClassifications",
@@ -960,13 +979,37 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
960
979
  4,
961
980
  function(caster, ability)
962
981
  if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
963
- Timer:run(function()
964
- caster:playAnimation(animationFQN)
965
- end)
982
+ Timer:run(caster, "playAnimation", animationFQN)
966
983
  end
967
984
  end
968
985
  )
969
986
  end
987
+ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEffectSoundPresetByAbilityTypeId end)) do
988
+ if soundPresetId ~= nil then
989
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(
990
+ 4,
991
+ function(caster, ability, target)
992
+ if __TS__InstanceOf(target, Unit) then
993
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target)
994
+ else
995
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, target.x, target.y)
996
+ end
997
+ end
998
+ )
999
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(
1000
+ 4,
1001
+ function(caster, ability, x, y)
1002
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, x, y)
1003
+ end
1004
+ )
1005
+ end
1006
+ end
1007
+ Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1008
+ local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1009
+ if isSoundLabelCustom(soundPresetId) then
1010
+ Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1011
+ end
1012
+ end)
970
1013
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
971
1014
  return mapValues(
972
1015
  casterCastingEffectPresetsByAbilityTypeId,
@@ -979,10 +1022,17 @@ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function(
979
1022
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
980
1023
  )
981
1024
  end)
1025
+ local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
1026
+ return mapValues(
1027
+ casterCastingEffectPresetsByAbilityTypeId,
1028
+ function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
1029
+ )
1030
+ end)
982
1031
  local casterCastingEffectsByCaster = {}
983
1032
  local function handleAbilityCastingStartEvent(caster, ability)
984
1033
  local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
985
1034
  local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1035
+ local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
986
1036
  local effects = {}
987
1037
  if effectModelPaths ~= nil then
988
1038
  for i = 1, #effectModelPaths do
@@ -991,7 +1041,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
991
1041
  if attachmentPoint == nil or attachmentPoint == "" then
992
1042
  attachmentPoint = "origin"
993
1043
  end
994
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1044
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
995
1045
  end
996
1046
  end
997
1047
  casterCastingEffectsByCaster[caster] = effects
@@ -1022,10 +1072,17 @@ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(functi
1022
1072
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1023
1073
  )
1024
1074
  end)
1075
+ local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
1076
+ return mapValues(
1077
+ casterChannelingEffectPresetsByAbilityTypeId,
1078
+ function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
1079
+ )
1080
+ end)
1025
1081
  local casterChannelingEffectsByCaster = {}
1026
1082
  local function handleAbilityChannelingStartEvent(caster, ability)
1027
1083
  local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1028
1084
  local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1085
+ local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
1029
1086
  local effects = {}
1030
1087
  if effectModelPaths ~= nil then
1031
1088
  for i = 1, #effectModelPaths do
@@ -1034,7 +1091,7 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1034
1091
  if attachmentPoint == nil or attachmentPoint == "" then
1035
1092
  attachmentPoint = "origin"
1036
1093
  end
1037
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1094
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1038
1095
  end
1039
1096
  end
1040
1097
  casterChannelingEffectsByCaster[caster] = effects
@@ -121,6 +121,10 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
121
121
  applicatorAbilityType.damagePerSecond = 0
122
122
  applicatorAbilityType.movementSpeedDecreaseFactor = 0
123
123
  applicatorAbilityType.attackSpeedDecreaseFactor = 0
124
+ applicatorAbilityType.isDamageStacking = false
125
+ applicatorAbilityType.isMovementSpeedFactorStacking = false
126
+ applicatorAbilityType.isAttackSpeedFactorStacking = false
127
+ applicatorAbilityType.isAbleToKill = false
124
128
  applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
125
129
  applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
126
130
  end
@@ -128,6 +132,7 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
128
132
  local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
129
133
  applicatorAbilityType.attackSpeedIncreaseFactor = 0
130
134
  applicatorAbilityType.movementSpeedIncreaseFactor = 0
135
+ applicatorAbilityType.receivedDamageIncreaseFactor = 0
131
136
  applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
132
137
  if applicatorAbilityType.levelCount > 1 then
133
138
  multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
@@ -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
@@ -1,5 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
3
+ import { SoundEax } from "../auxiliary/sound-eax";
3
4
  export type SoundPresetId = ObjectDataEntryId & string & {
4
5
  readonly __soundPresetId: unique symbol;
5
6
  };
@@ -13,4 +14,20 @@ export declare class SoundPreset extends ObjectDataEntry<SoundPresetId> {
13
14
  protected static getObjectData(map: WarMap): WarObjects;
14
15
  get filePaths(): string[];
15
16
  set filePaths(filePaths: string[]);
17
+ get volume(): number;
18
+ set volume(volume: number);
19
+ get pitch(): number;
20
+ set pitch(pitch: number);
21
+ get priority(): number;
22
+ set priority(priority: number);
23
+ get channel(): number;
24
+ set channel(channel: number);
25
+ get minimumDistance(): number;
26
+ set minimumDistance(minimumDistance: number);
27
+ get maximumDistance(): number;
28
+ set maximumDistance(maximumDistance: number);
29
+ get distanceCutoff(): number;
30
+ set distanceCutoff(distanceCutoff: number);
31
+ get eax(): SoundEax;
32
+ set eax(eax: SoundEax);
16
33
  }
@@ -33,4 +33,108 @@ __TS__SetDescriptor(
33
33
  },
34
34
  true
35
35
  )
36
+ __TS__SetDescriptor(
37
+ SoundPreset.prototype,
38
+ "volume",
39
+ {
40
+ get = function(self)
41
+ return self:getNumberField("Volume")
42
+ end,
43
+ set = function(self, volume)
44
+ self:setNumberField("Volume", volume)
45
+ end
46
+ },
47
+ true
48
+ )
49
+ __TS__SetDescriptor(
50
+ SoundPreset.prototype,
51
+ "pitch",
52
+ {
53
+ get = function(self)
54
+ return self:getNumberField("Pitch")
55
+ end,
56
+ set = function(self, pitch)
57
+ self:setNumberField("Pitch", pitch)
58
+ end
59
+ },
60
+ true
61
+ )
62
+ __TS__SetDescriptor(
63
+ SoundPreset.prototype,
64
+ "priority",
65
+ {
66
+ get = function(self)
67
+ return self:getNumberField("Priority")
68
+ end,
69
+ set = function(self, priority)
70
+ self:setNumberField("Priority", priority)
71
+ end
72
+ },
73
+ true
74
+ )
75
+ __TS__SetDescriptor(
76
+ SoundPreset.prototype,
77
+ "channel",
78
+ {
79
+ get = function(self)
80
+ return self:getNumberField("Channel")
81
+ end,
82
+ set = function(self, channel)
83
+ self:setNumberField("Channel", channel)
84
+ end
85
+ },
86
+ true
87
+ )
88
+ __TS__SetDescriptor(
89
+ SoundPreset.prototype,
90
+ "minimumDistance",
91
+ {
92
+ get = function(self)
93
+ return self:getNumberField("MinDistance")
94
+ end,
95
+ set = function(self, minimumDistance)
96
+ self:setNumberField("MinDistance", minimumDistance)
97
+ end
98
+ },
99
+ true
100
+ )
101
+ __TS__SetDescriptor(
102
+ SoundPreset.prototype,
103
+ "maximumDistance",
104
+ {
105
+ get = function(self)
106
+ return self:getNumberField("MaxDistance")
107
+ end,
108
+ set = function(self, maximumDistance)
109
+ self:setNumberField("MaxDistance", maximumDistance)
110
+ end
111
+ },
112
+ true
113
+ )
114
+ __TS__SetDescriptor(
115
+ SoundPreset.prototype,
116
+ "distanceCutoff",
117
+ {
118
+ get = function(self)
119
+ return self:getNumberField("DistanceCutoff")
120
+ end,
121
+ set = function(self, distanceCutoff)
122
+ self:setNumberField("DistanceCutoff", distanceCutoff)
123
+ end
124
+ },
125
+ true
126
+ )
127
+ __TS__SetDescriptor(
128
+ SoundPreset.prototype,
129
+ "eax",
130
+ {
131
+ get = function(self)
132
+ return self:getStringField("EAXFlags")
133
+ end,
134
+ set = function(self, eax)
135
+ self:setStringField("EAXFlags", eax)
136
+ end
137
+ },
138
+ true
139
+ )
36
140
  return ____exports