warscript 0.0.1-dev.d18f377 → 0.0.1-dev.d410c75

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 (84) 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 +1 -0
  6. package/core/types/sound.lua +32 -2
  7. package/core/util.d.ts +1 -1
  8. package/core/util.lua +6 -0
  9. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  10. package/engine/behaviour/ability/always-enabled.lua +31 -0
  11. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  12. package/engine/behaviour/ability/apply-buff.lua +32 -0
  13. package/engine/behaviour/ability/emulate-impact.lua +6 -7
  14. package/engine/behaviour/ability/on-command-impact.lua +7 -0
  15. package/engine/behaviour/ability.d.ts +10 -2
  16. package/engine/behaviour/ability.lua +59 -1
  17. package/engine/buff.d.ts +50 -40
  18. package/engine/buff.lua +261 -225
  19. package/engine/internal/ability.d.ts +11 -1
  20. package/engine/internal/ability.lua +67 -2
  21. package/engine/internal/item/ability.lua +106 -0
  22. package/engine/internal/item.d.ts +2 -2
  23. package/engine/internal/item.lua +56 -25
  24. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  25. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  26. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  27. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  28. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  29. package/engine/internal/object-data/evasion-probability.lua +16 -0
  30. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  31. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  32. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  33. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  34. package/engine/internal/unit/bonus.d.ts +2 -0
  35. package/engine/internal/unit/bonus.lua +17 -0
  36. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  37. package/engine/internal/unit/ignore-events-items.lua +5 -0
  38. package/engine/internal/unit/item.lua +6 -12
  39. package/engine/internal/unit.d.ts +3 -1
  40. package/engine/internal/unit.lua +63 -13
  41. package/engine/internal/utility.lua +12 -0
  42. package/engine/lightning.d.ts +12 -5
  43. package/engine/lightning.lua +48 -14
  44. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  45. package/engine/object-data/auxiliary/animation-name.lua +16 -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 +21 -1
  48. package/engine/object-data/entry/ability-type/curse.lua +2 -2
  49. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  50. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  51. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  52. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  53. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  54. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  55. package/engine/object-data/entry/ability-type.d.ts +6 -6
  56. package/engine/object-data/entry/ability-type.lua +24 -27
  57. package/engine/object-data/entry/buff-type/applicable.lua +11 -35
  58. package/engine/object-data/entry/buff-type.d.ts +1 -1
  59. package/engine/object-data/entry/buff-type.lua +2 -2
  60. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  61. package/engine/object-data/entry/item-type.d.ts +3 -1
  62. package/engine/object-data/entry/item-type.lua +15 -2
  63. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  64. package/engine/object-data/entry/sound-preset.d.ts +17 -0
  65. package/engine/object-data/entry/sound-preset.lua +50 -0
  66. package/engine/object-data/entry/unit-type.d.ts +8 -1
  67. package/engine/object-data/entry/unit-type.lua +61 -8
  68. package/engine/object-data/entry/upgrade.d.ts +1 -1
  69. package/engine/object-data/entry/upgrade.lua +4 -4
  70. package/engine/object-data/entry.d.ts +15 -13
  71. package/engine/object-data/entry.lua +60 -32
  72. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  73. package/engine/object-field/ability.d.ts +9 -3
  74. package/engine/object-field/ability.lua +3 -0
  75. package/engine/object-field.d.ts +2 -2
  76. package/engine/object-field.lua +4 -0
  77. package/engine/standard/entries/sound-preset.d.ts +10 -0
  78. package/engine/standard/entries/sound-preset.lua +10 -0
  79. package/engine/standard/fields/ability.d.ts +2 -0
  80. package/engine/standard/fields/ability.lua +2 -0
  81. package/engine/unit.d.ts +1 -0
  82. package/engine/unit.lua +1 -0
  83. package/objutil/unit.lua +8 -0
  84. package/package.json +2 -2
@@ -1,7 +1,6 @@
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
6
5
  local ____exports = {}
7
6
  local ____unit = require("engine.internal.unit")
@@ -31,7 +30,7 @@ local ____entry = require("engine.object-data.entry")
31
30
  local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLevelFieldValue
32
31
  local ObjectDataEntry = ____entry.ObjectDataEntry
33
32
  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
33
+ local abilityTypeIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.abilityTypeIdGenerator
35
34
  local ____upgrade = require("engine.object-data.entry.upgrade")
36
35
  local Upgrade = ____upgrade.Upgrade
37
36
  local castAnimationFQNByAbilityTypeId = {}
@@ -53,10 +52,7 @@ end
53
52
  function AbilityType.getObjectData(self, map)
54
53
  return map.objects.ability
55
54
  end
56
- AbilityType.idGenerator = __TS__New(
57
- ObjectDataEntryIdGenerator,
58
- fourCC("A000")
59
- )
55
+ AbilityType.idGenerator = abilityTypeIdGenerator
60
56
  __TS__SetDescriptor(
61
57
  AbilityType.prototype,
62
58
  "channelingAnimation",
@@ -275,10 +271,10 @@ __TS__SetDescriptor(
275
271
  "lightningTypeIds",
276
272
  {
277
273
  get = function(self)
278
- return self:getObjectDataEntryIdsField("alig")
274
+ return self:getObjectDataEntryNumericIdsField("alig")
279
275
  end,
280
276
  set = function(self, lightningTypeIds)
281
- self:setObjectDataEntryIdsField("alig", lightningTypeIds)
277
+ self:setObjectDataEntryNumericIdsField("alig", lightningTypeIds)
282
278
  end
283
279
  },
284
280
  true
@@ -512,7 +508,7 @@ __TS__SetDescriptor(
512
508
  "techTreeDependencies",
513
509
  {
514
510
  get = function(self)
515
- local techTreeDependencyIds = self:getObjectDataEntryIdsField("areq")
511
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsField("areq")
516
512
  local techTreeDependencyInternalLevels = self:getNumbersField("arqa")
517
513
  return mapIndexed(
518
514
  techTreeDependencyIds,
@@ -532,7 +528,7 @@ __TS__SetDescriptor(
532
528
  map(techTreeDependencies, extractTechTreeDependencyInputLevel),
533
529
  function(techTreeDependencyLevel) return techTreeDependencyLevel + 1 end
534
530
  )
535
- self:setObjectDataEntryIdsField("areq", techTreeDependencyIds)
531
+ self:setObjectDataEntryNumericIdsField("areq", techTreeDependencyIds)
536
532
  self:setNumbersField("arqa", techTreeDependencyInternalLevels)
537
533
  end
538
534
  },
@@ -722,26 +718,27 @@ __TS__SetDescriptor(
722
718
  )
723
719
  __TS__SetDescriptor(
724
720
  AbilityType.prototype,
725
- "soundPresetName",
721
+ "casterEffectSoundPresetId",
726
722
  {
727
723
  get = function(self)
728
- return self:getStringField("aefs")
724
+ local casterEffectSoundPresetId = self:getStringField("aefs")
725
+ return casterEffectSoundPresetId ~= "" and casterEffectSoundPresetId or nil
729
726
  end,
730
- set = function(self, soundPresetName)
731
- self:setStringField("aefs", soundPresetName)
727
+ set = function(self, casterEffectSoundPresetId)
728
+ self:setStringField("aefs", casterEffectSoundPresetId or "")
732
729
  end
733
730
  },
734
731
  true
735
732
  )
736
733
  __TS__SetDescriptor(
737
734
  AbilityType.prototype,
738
- "loopingSoundPresetName",
735
+ "casterEffectLoopingSoundPresetId",
739
736
  {
740
737
  get = function(self)
741
738
  return self:getStringField("aefl")
742
739
  end,
743
- set = function(self, loopingSoundPresetName)
744
- self:setStringField("aefl", loopingSoundPresetName)
740
+ set = function(self, casterEffectLoopingSoundPresetId)
741
+ self:setStringField("aefl", casterEffectLoopingSoundPresetId)
745
742
  end
746
743
  },
747
744
  true
@@ -800,10 +797,10 @@ __TS__SetDescriptor(
800
797
  "buffTypeIds",
801
798
  {
802
799
  get = function(self)
803
- return self:getObjectDataEntryIdsLevelField("abuf")
800
+ return self:getObjectDataEntryNumericIdsLevelField("abuf")
804
801
  end,
805
802
  set = function(self, buffTypeIds)
806
- self:setObjectDataEntryIdsLevelField("abuf", buffTypeIds)
803
+ self:setObjectDataEntryNumericIdsLevelField("abuf", buffTypeIds)
807
804
  end
808
805
  },
809
806
  true
@@ -852,10 +849,10 @@ __TS__SetDescriptor(
852
849
  "effectBuffTypeIds",
853
850
  {
854
851
  get = function(self)
855
- return self:getObjectDataEntryIdsLevelField("aeff")
852
+ return self:getObjectDataEntryNumericIdsLevelField("aeff")
856
853
  end,
857
854
  set = function(self, effectBuffTypeIds)
858
- self:setObjectDataEntryIdsLevelField("aeff", effectBuffTypeIds)
855
+ self:setObjectDataEntryNumericIdsLevelField("aeff", effectBuffTypeIds)
859
856
  end
860
857
  },
861
858
  true
@@ -999,7 +996,7 @@ local function handleAbilityCastingStartEvent(caster, ability)
999
996
  end
1000
997
  casterCastingEffectsByCaster[caster] = effects
1001
998
  end
1002
- local function handleAbilityStopEvent(caster)
999
+ local function handleAbilityStopCastingEvent(caster)
1003
1000
  local effects = casterCastingEffectsByCaster[caster]
1004
1001
  if effects ~= nil then
1005
1002
  for i = 1, #effects do
@@ -1010,8 +1007,8 @@ local function handleAbilityStopEvent(caster)
1010
1007
  end
1011
1008
  for abilityTypeId in pairs(casterCastingEffectModelPathsByAbilityTypeId) do
1012
1009
  Unit.abilityCastingStartEvent[abilityTypeId]:addListener(4, handleAbilityCastingStartEvent)
1013
- Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityStopEvent)
1014
- Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopEvent)
1010
+ Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
1011
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopCastingEvent)
1015
1012
  end
1016
1013
  local casterChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
1017
1014
  return mapValues(
@@ -1042,7 +1039,7 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1042
1039
  end
1043
1040
  casterChannelingEffectsByCaster[caster] = effects
1044
1041
  end
1045
- local function handleAbilityStopEventV2(caster)
1042
+ local function handleAbilityStopChannelingEvent(caster)
1046
1043
  local effects = casterChannelingEffectsByCaster[caster]
1047
1044
  if effects ~= nil then
1048
1045
  for i = 1, #effects do
@@ -1053,7 +1050,7 @@ local function handleAbilityStopEventV2(caster)
1053
1050
  end
1054
1051
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1055
1052
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1056
- Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopEventV2)
1057
- Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopEventV2)
1053
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1054
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1058
1055
  end
1059
1056
  return ____exports
@@ -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,10 +101,8 @@ 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
107
  applicatorAbilityTypeIdByApplicatorType[852189] = applicatorAbilityType.id
122
108
  end
@@ -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,7 +221,7 @@ 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)
224
+ ____exports.internalApplyBuff = function(unit, applicableBuffTypeId, polarity, resistanceType, level, duration, spellStealPriority, learnLevelMinimum, missProbability)
248
225
  local applicatorType = polarity == 1 and (resistanceType == 1 and 852101 or 852100) or (polarity == 2 and (resistanceType == 1 and 852189 or 852173) or 0)
249
226
  local ____opt_1 = applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffTypeId]
250
227
  local applicatorAbilityTypeId = ____opt_1 and ____opt_1[applicatorType]
@@ -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 == 852189 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> {
@@ -45,6 +45,8 @@ export declare class ItemType extends ObjectDataEntry<ItemTypeId> {
45
45
  set tooltipText(tooltipText: string);
46
46
  get tooltipExtendedText(): string;
47
47
  set tooltipExtendedText(tooltipText: string);
48
+ get cooldownGroupId(): number;
49
+ set cooldownGroupId(cooldownGroupId: number);
48
50
  get goldCost(): number;
49
51
  set goldCost(goldCost: number);
50
52
  get lumberCost(): number;
@@ -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
@@ -256,6 +256,19 @@ __TS__SetDescriptor(
256
256
  },
257
257
  true
258
258
  )
259
+ __TS__SetDescriptor(
260
+ ItemType.prototype,
261
+ "cooldownGroupId",
262
+ {
263
+ get = function(self)
264
+ return self:getObjectDataEntryNumericIdField("icid")
265
+ end,
266
+ set = function(self, cooldownGroupId)
267
+ self:setObjectDataEntryNumericIdField("icid", cooldownGroupId)
268
+ end
269
+ },
270
+ true
271
+ )
259
272
  __TS__SetDescriptor(
260
273
  ItemType.prototype,
261
274
  "goldCost",
@@ -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 & {
@@ -0,0 +1,17 @@
1
+ /** @noSelfInFile */
2
+ import { ObjectDataEntry, ObjectDataEntryConstructor, ObjectDataEntryId } from "../entry";
3
+ export type SoundPresetId = ObjectDataEntryId & string & {
4
+ readonly __soundPresetId: unique symbol;
5
+ };
6
+ export type StandardSoundPresetId = SoundPresetId & {
7
+ readonly __standardSoundPresetId: unique symbol;
8
+ };
9
+ export declare class SoundPreset extends ObjectDataEntry<SoundPresetId> {
10
+ static readonly [id: StandardSoundPresetId]: ObjectDataEntryConstructor<SoundPreset>;
11
+ static readonly BASE_ID: SoundPresetId;
12
+ private static nextId;
13
+ protected static generateId(): string;
14
+ protected static getObjectData(map: WarMap): WarObjects;
15
+ get filePaths(): string[];
16
+ set filePaths(filePaths: string[]);
17
+ }
@@ -0,0 +1,50 @@
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 ____entry = require("engine.object-data.entry")
7
+ local ObjectDataEntry = ____entry.ObjectDataEntry
8
+ local ____reflection = require("utility.reflection")
9
+ local implementReadonlyNumberIndexSupplier = ____reflection.implementReadonlyNumberIndexSupplier
10
+ ____exports.SoundPreset = __TS__Class()
11
+ local SoundPreset = ____exports.SoundPreset
12
+ SoundPreset.name = "SoundPreset"
13
+ __TS__ClassExtends(SoundPreset, ObjectDataEntry)
14
+ function SoundPreset.generateId(self)
15
+ local ____self_0, ____nextId_1 = self, "nextId"
16
+ local ____self_nextId_2 = ____self_0[____nextId_1]
17
+ ____self_0[____nextId_1] = ____self_nextId_2 + 1
18
+ return "CustomSound" .. tostring(____self_nextId_2)
19
+ end
20
+ function SoundPreset.getObjectData(self, map)
21
+ return map.objects.sound
22
+ end;
23
+ (function(self)
24
+ implementReadonlyNumberIndexSupplier(
25
+ ____exports.SoundPreset,
26
+ function(id)
27
+ local ____class_3 = __TS__Class()
28
+ ____class_3.name = ____class_3.name
29
+ __TS__ClassExtends(____class_3, ____exports.SoundPreset)
30
+ ____class_3.BASE_ID = id
31
+ return ____class_3
32
+ end
33
+ )
34
+ end)(SoundPreset)
35
+ SoundPreset.BASE_ID = "BlizzardWave"
36
+ SoundPreset.nextId = 0
37
+ __TS__SetDescriptor(
38
+ SoundPreset.prototype,
39
+ "filePaths",
40
+ {
41
+ get = function(self)
42
+ return self:getStringsField("FileNames")
43
+ end,
44
+ set = function(self, filePaths)
45
+ self:setStringsField("FileNames", filePaths)
46
+ end
47
+ },
48
+ true
49
+ )
50
+ return ____exports
@@ -13,7 +13,7 @@ import type { AbilityTypeId } from "./ability-type";
13
13
  import type { UpgradeId } from "./upgrade";
14
14
  import { AnimationQualifier } from "../auxiliary/animation-qualifier";
15
15
  import { AttackType } from "../auxiliary/attack-type";
16
- export type UnitTypeId = ObjectDataEntryId & {
16
+ export type UnitTypeId = ObjectDataEntryId & number & {
17
17
  readonly __unitTypeId: unique symbol;
18
18
  };
19
19
  export type StandardUnitTypeId = UnitTypeId & {
@@ -55,6 +55,7 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
55
55
  protected static readonly idGenerator: ObjectDataEntryIdGenerator;
56
56
  protected static generateId(): number;
57
57
  protected static getObjectData(map: WarMap): WarObjects;
58
+ private isPortraitModelPathSet?;
58
59
  get abilityTypeIds(): AbilityTypeId[];
59
60
  set abilityTypeIds(abilityTypeIds: AbilityTypeId[]);
60
61
  get defaultActiveAbilityTypeId(): AbilityTypeId | undefined;
@@ -131,6 +132,12 @@ export declare abstract class UnitType<Id extends UnitTypeId = UnitTypeId> exten
131
132
  set modelPathSD(modelPathSD: string);
132
133
  get modelPathHD(): string;
133
134
  set modelPathHD(modelPathHD: string);
135
+ get portraitModelPath(): string;
136
+ set portraitModelPath(portraitModelPath: string);
137
+ get portraitModelPathSD(): string;
138
+ set portraitModelPathSD(portraitModelPathSD: string);
139
+ get portraitModelPathHD(): string;
140
+ set portraitModelPathHD(portraitModelPathHD: string);
134
141
  get runSpeed(): number;
135
142
  set runSpeed(runSpeed: number);
136
143
  get runSpeedSD(): number;
@@ -19,6 +19,8 @@ local ____entry = require("engine.object-data.entry")
19
19
  local ObjectDataEntry = ____entry.ObjectDataEntry
20
20
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
21
21
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
22
+ local ____config = require("config")
23
+ local WarscriptConfig = ____config.WarscriptConfig
22
24
  local getOrCreateUnitTypeWeapons
23
25
  ____exports.UnitTypeWeapon = __TS__Class()
24
26
  local UnitTypeWeapon = ____exports.UnitTypeWeapon
@@ -345,10 +347,10 @@ __TS__SetDescriptor(
345
347
  "abilityTypeIds",
346
348
  {
347
349
  get = function(self)
348
- return self:getObjectDataEntryIdsField("uabi")
350
+ return self:getObjectDataEntryNumericIdsField("uabi")
349
351
  end,
350
352
  set = function(self, abilityTypeIds)
351
- self:setObjectDataEntryIdsField("uabi", abilityTypeIds)
353
+ self:setObjectDataEntryNumericIdsField("uabi", abilityTypeIds)
352
354
  end
353
355
  },
354
356
  true
@@ -358,10 +360,10 @@ __TS__SetDescriptor(
358
360
  "defaultActiveAbilityTypeId",
359
361
  {
360
362
  get = function(self)
361
- return self:getObjectDataEntryIdsField("udaa")[1]
363
+ return self:getObjectDataEntryNumericIdsField("udaa")[1]
362
364
  end,
363
365
  set = function(self, abilityTypeId)
364
- self:setObjectDataEntryIdsField(
366
+ self:setObjectDataEntryNumericIdsField(
365
367
  "udaa",
366
368
  arrayOfNotNull(abilityTypeId)
367
369
  )
@@ -807,6 +809,9 @@ __TS__SetDescriptor(
807
809
  end,
808
810
  set = function(self, modelPath)
809
811
  self:setStringField("umdl", modelPath)
812
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
813
+ self:setStringField("upor", modelPath)
814
+ end
810
815
  end
811
816
  },
812
817
  true
@@ -820,6 +825,9 @@ __TS__SetDescriptor(
820
825
  end,
821
826
  set = function(self, modelPathSD)
822
827
  self:setStringField("umdl:sd", modelPathSD)
828
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
829
+ self:setStringField("upor:sd", modelPathSD)
830
+ end
823
831
  end
824
832
  },
825
833
  true
@@ -833,6 +841,51 @@ __TS__SetDescriptor(
833
841
  end,
834
842
  set = function(self, modelPathHD)
835
843
  self:setStringField("umdl:hd", modelPathHD)
844
+ if not self.isPortraitModelPathSet and WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
845
+ self:setStringField("upor:hd", modelPathHD)
846
+ end
847
+ end
848
+ },
849
+ true
850
+ )
851
+ __TS__SetDescriptor(
852
+ UnitType.prototype,
853
+ "portraitModelPath",
854
+ {
855
+ get = function(self)
856
+ return self:getStringField("upor")
857
+ end,
858
+ set = function(self, portraitModelPath)
859
+ self:setStringField("upor", portraitModelPath)
860
+ self.isPortraitModelPathSet = true
861
+ end
862
+ },
863
+ true
864
+ )
865
+ __TS__SetDescriptor(
866
+ UnitType.prototype,
867
+ "portraitModelPathSD",
868
+ {
869
+ get = function(self)
870
+ return self:getStringField("upor:sd")
871
+ end,
872
+ set = function(self, portraitModelPathSD)
873
+ self:setStringField("upor:sd", portraitModelPathSD)
874
+ self.isPortraitModelPathSet = true
875
+ end
876
+ },
877
+ true
878
+ )
879
+ __TS__SetDescriptor(
880
+ UnitType.prototype,
881
+ "portraitModelPathHD",
882
+ {
883
+ get = function(self)
884
+ return self:getStringField("upor:hd")
885
+ end,
886
+ set = function(self, portraitModelPathHD)
887
+ self:setStringField("upor:hd", portraitModelPathHD)
888
+ self.isPortraitModelPathSet = true
836
889
  end
837
890
  },
838
891
  true
@@ -1496,10 +1549,10 @@ __TS__SetDescriptor(
1496
1549
  "affectingUpgradeIds",
1497
1550
  {
1498
1551
  get = function(self)
1499
- return self:getObjectDataEntryIdsField("upgr")
1552
+ return self:getObjectDataEntryNumericIdsField("upgr")
1500
1553
  end,
1501
1554
  set = function(self, affectingUpgradeIds)
1502
- self:setObjectDataEntryIdsField("upgr", affectingUpgradeIds)
1555
+ self:setObjectDataEntryNumericIdsField("upgr", affectingUpgradeIds)
1503
1556
  end
1504
1557
  },
1505
1558
  true
@@ -1582,10 +1635,10 @@ __TS__SetDescriptor(
1582
1635
  "heroAbilityTypeIds",
1583
1636
  {
1584
1637
  get = function(self)
1585
- return self:getObjectDataEntryIdsField("uhab")
1638
+ return self:getObjectDataEntryNumericIdsField("uhab")
1586
1639
  end,
1587
1640
  set = function(self, heroAbilityTypeIds)
1588
- self:setObjectDataEntryIdsField("uhab", heroAbilityTypeIds)
1641
+ self:setObjectDataEntryNumericIdsField("uhab", heroAbilityTypeIds)
1589
1642
  end
1590
1643
  },
1591
1644
  true
@@ -3,7 +3,7 @@ import { TupleOf } from "../../../utility/types";
3
3
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
4
4
  import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
5
5
  import { AbilityTypeId } from "./ability-type";
6
- export type UpgradeId = ObjectDataEntryId & {
6
+ export type UpgradeId = ObjectDataEntryId & number & {
7
7
  readonly __upgradeId: unique symbol;
8
8
  };
9
9
  export declare const enum UpgradeEffectType {
@@ -32,7 +32,7 @@ function Upgrade.prototype.getEffect(self, i)
32
32
  type = effectType,
33
33
  bonusBase = self:getNumberField("gba" .. tostring(i)),
34
34
  bonusIncrement = self:getNumberField("gmo" .. tostring(i)),
35
- abilityTypeId = self:getObjectDataEntryIdField("gco" .. tostring(i))
35
+ abilityTypeId = self:getObjectDataEntryNumericIdField("gco" .. tostring(i))
36
36
  }
37
37
  end
38
38
  return nil
@@ -51,7 +51,7 @@ function Upgrade.prototype.setEffect(self, i, effect)
51
51
  effect and effect.bonusIncrement or 0
52
52
  )
53
53
  if (effect and effect.abilityTypeId) ~= nil then
54
- self:setObjectDataEntryIdField(
54
+ self:setObjectDataEntryNumericIdField(
55
55
  "gco" .. tostring(i),
56
56
  effect and effect.abilityTypeId
57
57
  )
@@ -145,7 +145,7 @@ __TS__SetDescriptor(
145
145
  "techTreeDependencies",
146
146
  {
147
147
  get = function(self)
148
- local techTreeDependencyIds = self:getObjectDataEntryIdsLevelField("greq")
148
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsLevelField("greq")
149
149
  local techTreeDependencyInternalLevels = self:getNumbersLevelField("grqc")
150
150
  return mapIndexed(
151
151
  techTreeDependencyIds,
@@ -177,7 +177,7 @@ __TS__SetDescriptor(
177
177
  function(level) return level + 1 end
178
178
  )
179
179
  end
180
- self:setObjectDataEntryIdsLevelField("greq", techTreeDependencyIds)
180
+ self:setObjectDataEntryNumericIdsLevelField("greq", techTreeDependencyIds)
181
181
  self:setNumbersLevelField("grqc", techTreeDependencyInternalLevels)
182
182
  end
183
183
  },