warscript 0.0.1-dev.ed60fea → 0.0.1-dev.effa673

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 (89) hide show
  1. package/config.d.ts +5 -0
  2. package/config.lua +10 -0
  3. package/core/types/effect.d.ts +1 -3
  4. package/core/types/effect.lua +26 -29
  5. package/core/types/sound.d.ts +17 -24
  6. package/core/types/sound.lua +94 -24
  7. package/core/util.lua +6 -1
  8. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  9. package/engine/behaviour/ability/apply-buff.lua +32 -0
  10. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  11. package/engine/behaviour/ability/damage.d.ts +3 -0
  12. package/engine/behaviour/ability/damage.lua +2 -2
  13. package/engine/behaviour/ability.d.ts +7 -2
  14. package/engine/behaviour/ability.lua +34 -7
  15. package/engine/behaviour/unit.d.ts +2 -0
  16. package/engine/buff.d.ts +56 -41
  17. package/engine/buff.lua +295 -228
  18. package/engine/internal/ability.lua +0 -2
  19. package/engine/internal/item/ability.lua +19 -3
  20. package/engine/internal/item.d.ts +2 -2
  21. package/engine/internal/item.lua +56 -25
  22. package/engine/internal/mechanics/ability-duration.lua +1 -1
  23. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  24. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  25. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  26. package/engine/internal/object-data/evasion-probability.lua +16 -0
  27. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  28. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  29. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  30. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  31. package/engine/internal/unit/bonus.d.ts +2 -0
  32. package/engine/internal/unit/bonus.lua +17 -0
  33. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  34. package/engine/internal/unit/ignore-events-items.lua +5 -0
  35. package/engine/internal/unit/item.lua +3 -4
  36. package/engine/internal/unit.d.ts +7 -1
  37. package/engine/internal/unit.lua +28 -8
  38. package/engine/lightning.d.ts +12 -5
  39. package/engine/lightning.lua +48 -14
  40. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  41. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  42. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  43. package/engine/object-data/auxiliary/attachment-preset.lua +2 -2
  44. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  45. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  46. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  47. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  48. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  49. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  50. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  51. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  52. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  53. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  54. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  55. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  56. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  57. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  58. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  59. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  60. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  61. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  62. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  63. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  64. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  65. package/engine/object-data/entry/ability-type/web.lua +52 -0
  66. package/engine/object-data/entry/ability-type.d.ts +19 -17
  67. package/engine/object-data/entry/ability-type.lua +74 -21
  68. package/engine/object-data/entry/buff-type/applicable.lua +13 -37
  69. package/engine/object-data/entry/buff-type.d.ts +1 -1
  70. package/engine/object-data/entry/buff-type.lua +2 -2
  71. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  72. package/engine/object-data/entry/item-type.d.ts +1 -1
  73. package/engine/object-data/entry/item-type.lua +4 -4
  74. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  75. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  76. package/engine/object-data/entry/sound-preset.lua +140 -0
  77. package/engine/object-data/entry/unit-type.d.ts +8 -1
  78. package/engine/object-data/entry/unit-type.lua +61 -8
  79. package/engine/object-data/entry/upgrade.d.ts +1 -1
  80. package/engine/object-data/entry/upgrade.lua +4 -4
  81. package/engine/object-data/entry.d.ts +16 -14
  82. package/engine/object-data/entry.lua +60 -32
  83. package/engine/standard/entries/sound-preset.d.ts +10 -0
  84. package/engine/standard/entries/sound-preset.lua +10 -0
  85. package/engine/unit.d.ts +1 -0
  86. package/engine/unit.lua +1 -0
  87. package/objutil/unit.lua +8 -0
  88. package/package.json +2 -2
  89. package/utility/reflection.lua +11 -7
@@ -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
@@ -3,15 +3,15 @@ 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
- 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> {
@@ -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);
@@ -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[];
@@ -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,15 @@ 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 Sound3D = ____sound.Sound3D
39
+ local SoundSettings = ____sound.SoundSettings
36
40
  local castAnimationFQNByAbilityTypeId = {}
37
41
  local isButtonVisibleFalseAbilityTypes = {}
38
42
  local casterCastingEffectPresetsByAbilityTypeId = {}
39
43
  local casterChannelingEffectPresetsByAbilityTypeId = {}
40
44
  local targetCastingEffectPresetsByAbilityTypeId = {}
45
+ local targetEffectSoundPresetByAbilityTypeId = {}
41
46
  ____exports.AbilityType = __TS__Class()
42
47
  local AbilityType = ____exports.AbilityType
43
48
  AbilityType.name = "AbilityType"
@@ -113,7 +118,7 @@ __TS__SetDescriptor(
113
118
  return casterCastingEffectPresetsByAbilityTypeId[self.id] or ({})
114
119
  end,
115
120
  set = function(self, casterCastingEffectPresets)
116
- casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toAttachmentPreset)
121
+ casterCastingEffectPresetsByAbilityTypeId[self.id] = map(casterCastingEffectPresets, toEffectPreset)
117
122
  end
118
123
  },
119
124
  true
@@ -126,7 +131,7 @@ __TS__SetDescriptor(
126
131
  return casterChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
127
132
  end,
128
133
  set = function(self, casterChannelingEffectPresets)
129
- casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toAttachmentPreset)
134
+ casterChannelingEffectPresetsByAbilityTypeId[self.id] = map(casterChannelingEffectPresets, toEffectPreset)
130
135
  end
131
136
  },
132
137
  true
@@ -271,10 +276,10 @@ __TS__SetDescriptor(
271
276
  "lightningTypeIds",
272
277
  {
273
278
  get = function(self)
274
- return self:getObjectDataEntryIdsField("alig")
279
+ return self:getObjectDataEntryNumericIdsField("alig")
275
280
  end,
276
281
  set = function(self, lightningTypeIds)
277
- self:setObjectDataEntryIdsField("alig", lightningTypeIds)
282
+ self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
278
283
  end
279
284
  },
280
285
  true
@@ -365,7 +370,7 @@ __TS__SetDescriptor(
365
370
  return targetCastingEffectPresetsByAbilityTypeId[self.id] or ({})
366
371
  end,
367
372
  set = function(self, targetCastingEffectPresets)
368
- targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toAttachmentPreset)
373
+ targetCastingEffectPresetsByAbilityTypeId[self.id] = map(targetCastingEffectPresets, toEffectPreset)
369
374
  end
370
375
  },
371
376
  true
@@ -508,7 +513,7 @@ __TS__SetDescriptor(
508
513
  "techTreeDependencies",
509
514
  {
510
515
  get = function(self)
511
- local techTreeDependencyIds = self:getObjectDataEntryIdsField("areq")
516
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
512
517
  local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
513
518
  return mapIndexed(
514
519
  techTreeDependencyIds,
@@ -528,7 +533,7 @@ __TS__SetDescriptor(
528
533
  map(techTreeDependencies, extractTechTreeDependencyInputLevel),
529
534
  function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
530
535
  )
531
- self:setObjectDataEntryIdsField("areq", techTreeDependencyIds)
536
+ self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
532
537
  self:setNumbersField("arqa", techTreeDependencyInternalLevels)
533
538
  end
534
539
  },
@@ -718,26 +723,40 @@ __TS__SetDescriptor(
718
723
  )
719
724
  __TS__SetDescriptor(
720
725
  AbilityType.prototype,
721
- "soundPresetName",
726
+ "casterEffectSoundPresetId",
722
727
  {
723
728
  get = function(self)
724
- return self:getStringField("aefs")
729
+ local casterEffectSoundPresetId = self:getStringField("aefs")
730
+ return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
725
731
  end,
726
- set = function(self, soundPresetName)
727
- self:setStringField("aefs", soundPresetName)
732
+ set = function(self, casterEffectSoundPresetId)
733
+ self:setStringField("aefs", casterEffectSoundPresetId or "")
728
734
  end
729
735
  },
730
736
  true
731
737
  )
732
738
  __TS__SetDescriptor(
733
739
  AbilityType.prototype,
734
- "loopingSoundPresetName",
740
+ "casterEffectLoopingSoundPresetId",
735
741
  {
736
742
  get = function(self)
737
743
  return self:getStringField("aefl")
738
744
  end,
739
- set = function(self, loopingSoundPresetName)
740
- 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
741
760
  end
742
761
  },
743
762
  true
@@ -796,10 +815,10 @@ __TS__SetDescriptor(
796
815
  "buffTypeIds",
797
816
  {
798
817
  get = function(self)
799
- return self:getObjectDataEntryIdsLevelField("abuf")
818
+ return self:getObjectDataEntryNumericIdsLevelField("abuf")
800
819
  end,
801
820
  set = function(self, buffTypeIds)
802
- self:setObjectDataEntryIdsLevelField("abuf", buffTypeIds)
821
+ self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
803
822
  end
804
823
  },
805
824
  true
@@ -848,10 +867,10 @@ __TS__SetDescriptor(
848
867
  "effectBuffTypeIds",
849
868
  {
850
869
  get = function(self)
851
- return self:getObjectDataEntryIdsLevelField("aeff")
870
+ return self:getObjectDataEntryNumericIdsLevelField("aeff")
852
871
  end,
853
872
  set = function(self, effectBuffTypeIds)
854
- self:setObjectDataEntryIdsLevelField("aeff", effectBuffTypeIds)
873
+ self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
855
874
  end
856
875
  },
857
876
  true
@@ -966,6 +985,26 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
966
985
  end
967
986
  )
968
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
969
1008
  local casterCastingEffectModelPathsByAbilityTypeId = postcompile(function()
970
1009
  return mapValues(
971
1010
  casterCastingEffectPresetsByAbilityTypeId,
@@ -978,10 +1017,17 @@ local casterCastingEffectAttachmentPointsByAbilityTypeId = postcompile(function(
978
1017
  function(casterCastingEffectPresets) return map(casterCastingEffectPresets, extractAttachmentPresetInputNodeFQN) end
979
1018
  )
980
1019
  end)
1020
+ local casterCastingEffectParametersByAbilityTypeId = postcompile(function()
1021
+ return mapValues(
1022
+ casterCastingEffectPresetsByAbilityTypeId,
1023
+ function(casterCastingEffectPresets) return map(casterCastingEffectPresets, "parameters") end
1024
+ )
1025
+ end)
981
1026
  local casterCastingEffectsByCaster = {}
982
1027
  local function handleAbilityCastingStartEvent(caster, ability)
983
1028
  local effectModelPaths = casterCastingEffectModelPathsByAbilityTypeId[ability.typeId]
984
1029
  local attachmentPoints = casterCastingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1030
+ local parameters = casterCastingEffectParametersByAbilityTypeId[ability.typeId]
985
1031
  local effects = {}
986
1032
  if effectModelPaths ~= nil then
987
1033
  for i = 1, #effectModelPaths do
@@ -990,7 +1036,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
990
1036
  if attachmentPoint == nil or attachmentPoint == "" then
991
1037
  attachmentPoint = "origin"
992
1038
  end
993
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1039
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
994
1040
  end
995
1041
  end
996
1042
  casterCastingEffectsByCaster[caster] = effects
@@ -1021,10 +1067,17 @@ local casterChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(functi
1021
1067
  function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1022
1068
  )
1023
1069
  end)
1070
+ local casterChannelingEffectParametersByAbilityTypeId = postcompile(function()
1071
+ return mapValues(
1072
+ casterChannelingEffectPresetsByAbilityTypeId,
1073
+ function(casterChannelingEffectPresets) return map(casterChannelingEffectPresets, "parameters") end
1074
+ )
1075
+ end)
1024
1076
  local casterChannelingEffectsByCaster = {}
1025
1077
  local function handleAbilityChannelingStartEvent(caster, ability)
1026
1078
  local effectModelPaths = casterChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1027
1079
  local attachmentPoints = casterChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1080
+ local parameters = casterChannelingEffectParametersByAbilityTypeId[ability.typeId]
1028
1081
  local effects = {}
1029
1082
  if effectModelPaths ~= nil then
1030
1083
  for i = 1, #effectModelPaths do
@@ -1033,7 +1086,7 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1033
1086
  if attachmentPoint == nil or attachmentPoint == "" then
1034
1087
  attachmentPoint = "origin"
1035
1088
  end
1036
- effects[i] = Effect:createTarget(effectModelPath, caster, attachmentPoint)
1089
+ effects[i] = Effect:create(effectModelPath, caster, attachmentPoint, parameters and parameters[i])
1037
1090
  end
1038
1091
  end
1039
1092
  casterChannelingEffectsByCaster[caster] = effects
@@ -10,8 +10,8 @@ local ____exports = {}
10
10
  local preparePhysicalPositiveApplicatorAbility
11
11
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
12
12
  local AbilityType = ____ability_2Dtype.AbilityType
13
- local ____cripple = require("engine.object-data.entry.ability-type.cripple")
14
- local CrippleAbilityType = ____cripple.CrippleAbilityType
13
+ local ____curse = require("engine.object-data.entry.ability-type.curse")
14
+ local CurseAbilityType = ____curse.CurseAbilityType
15
15
  local ____searing_2Darrows = require("engine.object-data.entry.ability-type.searing-arrows")
16
16
  local SearingArrowsAbilityType = ____searing_2Darrows.SearingArrowsAbilityType
17
17
  local ____slow_2Dpoison = require("engine.object-data.entry.ability-type.slow-poison")
@@ -30,7 +30,6 @@ local ____arrays = require("utility.arrays")
30
30
  local chunked = ____arrays.chunked
31
31
  local map = ____arrays.map
32
32
  local max = ____arrays.max
33
- local toLuaSet = ____arrays.toLuaSet
34
33
  local ____blood_2Dlust = require("engine.object-data.entry.ability-type.blood-lust")
35
34
  local BloodLustAbilityType = ____blood_2Dlust.BloodLustAbilityType
36
35
  local ____berserk = require("engine.object-data.entry.ability-type.berserk")
@@ -43,22 +42,11 @@ local ____permanent_2Dimmolation = require("engine.object-data.entry.ability-typ
43
42
  local PermanentImmolationAbilityType = ____permanent_2Dimmolation.PermanentImmolationAbilityType
44
43
  local ____cast_2Dability = require("engine.internal.mechanics.cast-ability")
45
44
  local castAbility = ____cast_2Dability.castAbility
46
- local createItem = CreateItem
47
- local getAbilityId = BlzGetAbilityId
48
- local getItemAbility = BlzGetItemAbility
49
- local getOwningPlayer = GetOwningPlayer
50
- local getUnitAbilityByIndex = BlzGetUnitAbilityByIndex
51
- local itemAddAbility = BlzItemAddAbility
52
- local removeItem = RemoveItem
53
45
  local setAbilityIntegerField = BlzSetAbilityIntegerField
54
46
  local setAbilityRealLevelField = BlzSetAbilityRealLevelField
55
- local setItemBooleanField = BlzSetItemBooleanField
56
47
  local setPlayerTechResearched = SetPlayerTechResearched
57
48
  local unitAddAbility = UnitAddAbility
58
- local unitAddItem = UnitAddItem
59
49
  local unitDisableAbility = BlzUnitDisableAbility
60
- local unitDropItemSlot = UnitDropItemSlot
61
- local unitInventorySize = UnitInventorySize
62
50
  local unitRemoveAbility = UnitRemoveAbility
63
51
  local compiletimeApplicableBuffTypes = {}
64
52
  ____exports.ApplicableBuffType = __TS__Class()
@@ -86,7 +74,7 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
86
74
  abilityType.buttonPositionY = -11
87
75
  abilityType.casterAttachmentPresets = {}
88
76
  abilityType.targetEffectPresets = {}
89
- abilityType.soundPresetName = ""
77
+ abilityType.casterEffectSoundPresetId = nil
90
78
  abilityType.learnLevelMinimum = 6
91
79
  abilityType.race = "other"
92
80
  abilityType.shouldCheckTechTreeDependencies = false
@@ -113,12 +101,10 @@ local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorU
113
101
  local applicatorAbilityTypeIdByApplicatorType = {}
114
102
  if applicableBuffType.resistanceType == 1 or applicableBuffType.resistanceType == nil then
115
103
  if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
116
- local applicatorAbilityType = prepareAbilityType(CrippleAbilityType, applicableBuffType)
117
- applicatorAbilityType.movementSpeedDecreaseFactor = 0
118
- applicatorAbilityType.attackSpeedDecreaseFactor = 0
119
- applicatorAbilityType.damageDecreaseFactor = 0
104
+ local applicatorAbilityType = prepareAbilityType(CurseAbilityType, applicableBuffType)
105
+ applicatorAbilityType.missProbability = 0
120
106
  applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
121
- applicatorAbilityTypeIdByApplicatorType[852189] = applicatorAbilityType.id
107
+ applicatorAbilityTypeIdByApplicatorType[852190] = applicatorAbilityType.id
122
108
  end
123
109
  if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
124
110
  local applicatorAbilityType = prepareAbilityType(BloodLustAbilityType, applicableBuffType)
@@ -204,15 +190,6 @@ local EVASION_ABILITY_TYPE_IDS = postcompile(function()
204
190
  "AIcs"
205
191
  }, fourCC))
206
192
  end)
207
- local INVENTORY_ABILITY_TYPE_IDS = postcompile(function()
208
- return toLuaSet(AbilityType:getAllIdsByBaseIds(map({
209
- "AInv",
210
- "Aihn",
211
- "Aien",
212
- "Aion",
213
- "Aiun"
214
- }, fourCC)))
215
- end)
216
193
  local SEARING_ARROWS_DUMMY_ABILITY_TYPE_ID = compiletime(function()
217
194
  local abilityType = SearingArrowsAbilityType:create()
218
195
  abilityType.isInternal = true
@@ -244,8 +221,8 @@ Unit.abilityCastingStartEvent[SEARING_ARROWS_DUMMY_ABILITY_TYPE_ID]:addListener(
244
221
  )
245
222
  ---
246
223
  -- @internal For use by internal systems only.
247
- ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum, movementSpeedIncreaseFactor)
248
- local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852189 or 852173) or 0)
224
+ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum, missProbability)
225
+ local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852190 or 852173) or 0)
249
226
  local ____opt_1 = applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffTypeId]
250
227
  local applicatorAbilityTypeId = ____opt_1 and ____opt_1[applicatorType]
251
228
  if applicatorAbilityTypeId == nil then
@@ -267,8 +244,7 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
267
244
  applicatorAbilityTypeId,
268
245
  preparePhysicalPositiveApplicatorAbility,
269
246
  level,
270
- duration or 0,
271
- movementSpeedIncreaseFactor
247
+ duration or 0
272
248
  )
273
249
  if level ~= nil and level > 0 then
274
250
  local upgradeId = applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId]
@@ -298,6 +274,9 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
298
274
  ability:setField(ABILITY_RLF_DURATION_HERO, level, actualDuration)
299
275
  ability:setField(ABILITY_IF_PRIORITY, spellStealPriority or 0)
300
276
  ability:setField(ABILITY_IF_REQUIRED_LEVEL, learnLevelMinimum or 6)
277
+ if missProbability ~= nil and applicatorType == 852190 then
278
+ ability:setField(ABILITY_RLF_CHANCE_TO_MISS_CRS, missProbability)
279
+ end
301
280
  end,
302
281
  applicatorType,
303
282
  unit
@@ -309,16 +288,13 @@ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, r
309
288
  end
310
289
  return success
311
290
  end
312
- preparePhysicalPositiveApplicatorAbility = function(ability, level, duration, movementSpeedIncreaseFactor)
291
+ preparePhysicalPositiveApplicatorAbility = function(ability, level, duration)
313
292
  if level == nil then
314
293
  setAbilityIntegerField(ability, ABILITY_IF_LEVELS, 1)
315
294
  level = 1
316
295
  end
317
296
  setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_NORMAL, level, duration)
318
297
  setAbilityRealLevelField(ability, ABILITY_RLF_DURATION_HERO, level, duration)
319
- if movementSpeedIncreaseFactor ~= nil then
320
- setAbilityRealLevelField(ability, ABILITY_RLF_MOVEMENT_SPEED_INCREASE_BSK1, level, movementSpeedIncreaseFactor)
321
- end
322
298
  end
323
299
  ---
324
300
  -- @internal For use by internal systems only.
@@ -5,7 +5,7 @@ import { Race } from "../auxiliary/race";
5
5
  import { SoundPresetName } from "../auxiliary/sound-preset-name";
6
6
  import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
7
7
  import { LightningTypeId } from "./lightning-type";
8
- export type BuffTypeId = ObjectDataEntryId & {
8
+ export type BuffTypeId = ObjectDataEntryId & number & {
9
9
  readonly __buffTypeId: unique symbol;
10
10
  };
11
11
  export declare abstract class BuffType<Id extends BuffTypeId = BuffTypeId> extends ObjectDataEntry<Id> {
@@ -94,10 +94,10 @@ __TS__SetDescriptor(
94
94
  "lightningTypeIds",
95
95
  {
96
96
  get = function(self)
97
- return self:getObjectDataEntryIdsField("flig")
97
+ return self:getObjectDataEntryNumericIdsField("flig")
98
98
  end,
99
99
  set = function(self, lightningTypeIds)
100
- self:setObjectDataEntryIdsField("flig", lightningTypeIds)
100
+ self:setObjectDataEntryNumericIdsField("flig", lightningTypeIds)
101
101
  end
102
102
  },
103
103
  true
@@ -2,7 +2,7 @@
2
2
  import { ArmorSoundType } from "../auxiliary/armor-sound-type";
3
3
  import { CombatClassifications } from "../auxiliary/combat-classification";
4
4
  import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
5
- export type DestructibleTypeId = ObjectDataEntryId & {
5
+ export type DestructibleTypeId = ObjectDataEntryId & number & {
6
6
  readonly __destructibleTypeId: unique symbol;
7
7
  };
8
8
  export declare abstract class DestructibleType extends ObjectDataEntry<DestructibleTypeId> {
@@ -2,7 +2,7 @@
2
2
  import { ArmorSoundType } from "../auxiliary/armor-sound-type";
3
3
  import { ObjectDataEntry, ObjectDataEntryId } from "../entry";
4
4
  import type { AbilityTypeId } from "./ability-type";
5
- export type ItemTypeId = ObjectDataEntryId & {
5
+ export type ItemTypeId = ObjectDataEntryId & number & {
6
6
  readonly __itemTypeId: unique symbol;
7
7
  };
8
8
  export declare class ItemType extends ObjectDataEntry<ItemTypeId> {
@@ -27,10 +27,10 @@ __TS__SetDescriptor(
27
27
  "abilityTypeIds",
28
28
  {
29
29
  get = function(self)
30
- return self:getObjectDataEntryIdsField("iabi")
30
+ return self:getObjectDataEntryNumericIdsField("iabi")
31
31
  end,
32
32
  set = function(self, abilityTypeIds)
33
- self:setObjectDataEntryIdsField("iabi", abilityTypeIds)
33
+ self:setObjectDataEntryNumericIdsField("iabi", abilityTypeIds)
34
34
  end
35
35
  },
36
36
  true
@@ -261,10 +261,10 @@ __TS__SetDescriptor(
261
261
  "cooldownGroupId",
262
262
  {
263
263
  get = function(self)
264
- return self:getObjectDataEntryIdField("icid")
264
+ return self:getObjectDataEntryNumericIdField("icid")
265
265
  end,
266
266
  set = function(self, cooldownGroupId)
267
- self:setObjectDataEntryIdField("icid", cooldownGroupId)
267
+ self:setObjectDataEntryNumericIdField("icid", cooldownGroupId)
268
268
  end
269
269
  },
270
270
  true
@@ -1,7 +1,7 @@
1
1
  /** @noSelfInFile */
2
2
  import { ObjectDataEntry, ObjectDataEntryConstructor, ObjectDataEntryId } from "../entry";
3
3
  import { Color } from "../../../core/types/color";
4
- export type LightningTypeId = ObjectDataEntryId & {
4
+ export type LightningTypeId = ObjectDataEntryId & number & {
5
5
  readonly __lightningTypeId: unique symbol;
6
6
  };
7
7
  export type StandardLightningTypeId = LightningTypeId & {