warscript 0.0.1-dev.87b6c38 → 0.0.1-dev.8895725

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 (102) hide show
  1. package/core/types/frame.lua +47 -1
  2. package/core/types/handle.lua +6 -9
  3. package/core/types/item.d.ts +1 -0
  4. package/core/types/item.lua +1 -0
  5. package/core/types/player.d.ts +1 -1
  6. package/core/types/player.lua +12 -11
  7. package/core/types/sound.lua +1 -1
  8. package/destroyable.d.ts +1 -0
  9. package/destroyable.lua +9 -0
  10. package/engine/behavior.d.ts +4 -2
  11. package/engine/behavior.lua +69 -11
  12. package/engine/behaviour/ability/damage.d.ts +3 -0
  13. package/engine/behaviour/ability/damage.lua +8 -2
  14. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  15. package/engine/behaviour/ability.d.ts +9 -5
  16. package/engine/behaviour/ability.lua +29 -0
  17. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  18. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  19. package/engine/behaviour/unit.lua +13 -3
  20. package/engine/buff.d.ts +56 -19
  21. package/engine/buff.lua +283 -142
  22. package/engine/internal/ability.lua +15 -15
  23. package/engine/internal/item/fields.d.ts +12 -0
  24. package/engine/internal/item/fields.lua +33 -0
  25. package/engine/internal/item.d.ts +4 -5
  26. package/engine/internal/item.lua +37 -40
  27. package/engine/internal/mechanics/cast-ability.lua +6 -3
  28. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  29. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  30. package/engine/internal/object-data/health-bonus.lua +16 -0
  31. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  32. package/engine/internal/object-data/mana-bonus.lua +16 -0
  33. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  34. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  35. package/engine/internal/unit/attributes.d.ts +17 -0
  36. package/engine/internal/unit/attributes.lua +46 -0
  37. package/engine/internal/unit/bonus.d.ts +6 -0
  38. package/engine/internal/unit/bonus.lua +33 -3
  39. package/engine/internal/unit/fly-height.lua +3 -3
  40. package/engine/internal/unit/interrupts.d.ts +12 -0
  41. package/engine/internal/unit/interrupts.lua +28 -0
  42. package/engine/internal/unit/range-event.d.ts +12 -0
  43. package/engine/internal/unit/range-event.lua +90 -0
  44. package/engine/internal/unit/scale.lua +3 -3
  45. package/engine/internal/unit+bonus.lua +3 -3
  46. package/engine/internal/unit-missile-launch.lua +12 -5
  47. package/engine/internal/unit.d.ts +2 -9
  48. package/engine/internal/unit.lua +79 -121
  49. package/engine/local-client.d.ts +6 -1
  50. package/engine/local-client.lua +60 -5
  51. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  52. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  53. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  54. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  55. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  56. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  57. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  58. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  59. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  60. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  61. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  62. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  63. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  64. package/engine/object-data/entry/ability-type.d.ts +2 -0
  65. package/engine/object-data/entry/ability-type.lua +84 -4
  66. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  67. package/engine/object-data/entry/destructible-type.d.ts +12 -0
  68. package/engine/object-data/entry/destructible-type.lua +78 -0
  69. package/engine/object-field/ability.lua +2 -2
  70. package/engine/object-field/item.d.ts +22 -0
  71. package/engine/object-field/item.lua +118 -0
  72. package/engine/object-field/unit.d.ts +7 -4
  73. package/engine/object-field/unit.lua +4 -0
  74. package/engine/object-field.d.ts +3 -1
  75. package/engine/object-field.lua +177 -119
  76. package/engine/random.d.ts +1 -0
  77. package/engine/random.lua +8 -0
  78. package/engine/standard/fields/item.d.ts +4 -0
  79. package/engine/standard/fields/item.lua +6 -0
  80. package/engine/standard/fields/unit.d.ts +11 -5
  81. package/engine/standard/fields/unit.lua +13 -4
  82. package/engine/unit.d.ts +3 -0
  83. package/engine/unit.lua +3 -0
  84. package/lualib_bundle.lua +1 -1
  85. package/math.d.ts +2 -0
  86. package/math.lua +14 -0
  87. package/objutil/buff.lua +9 -7
  88. package/objutil/object.lua +1 -1
  89. package/operation.lua +1 -4
  90. package/package.json +5 -5
  91. package/patch-lua.lua +15 -0
  92. package/utility/linked-map.d.ts +35 -0
  93. package/utility/linked-map.lua +107 -0
  94. package/utility/linked-set.d.ts +3 -1
  95. package/utility/linked-set.lua +27 -0
  96. package/utility/records.lua +20 -1
  97. package/utility/unordered-map.d.ts +27 -0
  98. package/utility/unordered-map.lua +99 -0
  99. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  100. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  101. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  102. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -27,6 +27,32 @@ DestructibleType.idGenerator = __TS__New(
27
27
  ObjectDataEntryIdGenerator,
28
28
  fourCC("D000")
29
29
  )
30
+ __TS__SetDescriptor(
31
+ DestructibleType.prototype,
32
+ "fixedFacing",
33
+ {
34
+ get = function(self)
35
+ return self:getNumberField("bfxr")
36
+ end,
37
+ set = function(self, fixedFacing)
38
+ self:setNumberField("bfxr", fixedFacing)
39
+ end
40
+ },
41
+ true
42
+ )
43
+ __TS__SetDescriptor(
44
+ DestructibleType.prototype,
45
+ "flyOverHeight",
46
+ {
47
+ get = function(self)
48
+ return self:getNumberField("bflh")
49
+ end,
50
+ set = function(self, flyOverHeight)
51
+ self:setNumberField("bflh", flyOverHeight)
52
+ end
53
+ },
54
+ true
55
+ )
30
56
  __TS__SetDescriptor(
31
57
  DestructibleType.prototype,
32
58
  "modelPath",
@@ -66,6 +92,19 @@ __TS__SetDescriptor(
66
92
  },
67
93
  true
68
94
  )
95
+ __TS__SetDescriptor(
96
+ DestructibleType.prototype,
97
+ "occlusionHeight",
98
+ {
99
+ get = function(self)
100
+ return self:getNumberField("boch")
101
+ end,
102
+ set = function(self, occlusionHeight)
103
+ self:setNumberField("boch", occlusionHeight)
104
+ end
105
+ },
106
+ true
107
+ )
69
108
  __TS__SetDescriptor(
70
109
  DestructibleType.prototype,
71
110
  "armorSoundType",
@@ -121,6 +160,32 @@ __TS__SetDescriptor(
121
160
  },
122
161
  true
123
162
  )
163
+ __TS__SetDescriptor(
164
+ DestructibleType.prototype,
165
+ "cliffHeight",
166
+ {
167
+ get = function(self)
168
+ return self:getNumberField("bclh")
169
+ end,
170
+ set = function(self, cliffHeight)
171
+ self:setNumberField("bclh", cliffHeight)
172
+ end
173
+ },
174
+ true
175
+ )
176
+ __TS__SetDescriptor(
177
+ DestructibleType.prototype,
178
+ "isWalkable",
179
+ {
180
+ get = function(self)
181
+ return self:getBooleanField("bwal")
182
+ end,
183
+ set = function(self, isWalkable)
184
+ self:setBooleanField("bwal", isWalkable)
185
+ end
186
+ },
187
+ true
188
+ )
124
189
  __TS__SetDescriptor(
125
190
  DestructibleType.prototype,
126
191
  "pathingTexturePath",
@@ -147,6 +212,19 @@ __TS__SetDescriptor(
147
212
  },
148
213
  true
149
214
  )
215
+ __TS__SetDescriptor(
216
+ DestructibleType.prototype,
217
+ "name",
218
+ {
219
+ get = function(self)
220
+ return self:getStringField("bnam")
221
+ end,
222
+ set = function(self, name)
223
+ self:setStringField("bnam", name)
224
+ end
225
+ },
226
+ true
227
+ )
150
228
  implementReadonlyNumberIndexSupplier(
151
229
  ____exports.DestructibleType,
152
230
  function(id)
@@ -519,9 +519,9 @@ __TS__SetDescriptor(
519
519
  )
520
520
  ____exports.resolveCurrentAbilityDependentValue = function(ability, value)
521
521
  if __TS__InstanceOf(value, ____exports.AbilityField) then
522
- return value:getValue(ability)
522
+ return value:getValue(ability, true)
523
523
  elseif __TS__InstanceOf(value, ____exports.AbilityLevelField) then
524
- return value:getValue(ability, ability.level)
524
+ return value:getValue(ability, ability.level, true)
525
525
  elseif type(value) == "function" then
526
526
  return value(ability)
527
527
  else
@@ -0,0 +1,22 @@
1
+ /** @noSelfInFile */
2
+ import { ObjectField } from "../object-field";
3
+ import { Item } from "../internal/item";
4
+ import { ItemType, ItemTypeId } from "../object-data/entry/item-type";
5
+ export declare abstract class ItemField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<ItemType, Item, ValueType, NativeFieldType> {
6
+ protected get instanceClass(): typeof Item;
7
+ protected getObjectDataEntryId(instance: Item): ItemTypeId;
8
+ }
9
+ export declare class ItemBooleanField extends ItemField<boolean, jitembooleanfield> {
10
+ protected get defaultValue(): boolean;
11
+ protected getNativeFieldById(id: number): jitembooleanfield;
12
+ protected hasNativeFieldValue(): boolean;
13
+ protected getNativeFieldValue(instance: Item): boolean;
14
+ protected setNativeFieldValue(instance: Item, value: boolean): boolean;
15
+ }
16
+ export declare class ItemIntegerField extends ItemField<number, jitemintegerfield> {
17
+ protected get defaultValue(): number;
18
+ protected getNativeFieldById(id: number): jitemintegerfield;
19
+ protected hasNativeFieldValue(): boolean;
20
+ protected getNativeFieldValue(instance: Item): number;
21
+ protected setNativeFieldValue(instance: Item, value: number): boolean;
22
+ }
@@ -0,0 +1,118 @@
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 ____object_2Dfield = require("engine.object-field")
7
+ local ObjectField = ____object_2Dfield.ObjectField
8
+ local ____item = require("engine.internal.item")
9
+ local Item = ____item.Item
10
+ local ____lua_2Dsets = require("utility.lua-sets")
11
+ local luaSetOf = ____lua_2Dsets.luaSetOf
12
+ local convertItemBooleanField = ConvertItemBooleanField
13
+ local convertItemIntegerField = ConvertItemIntegerField
14
+ local getItemBooleanField = BlzGetItemBooleanField
15
+ local getItemIntegerField = BlzGetItemIntegerField
16
+ local isItemPawnable = IsItemPawnable
17
+ local isItemPowerup = IsItemPowerup
18
+ local setItemBooleanField = BlzSetItemBooleanField
19
+ local setItemDropOnDeath = SetItemDropOnDeath
20
+ local setItemDroppable = SetItemDroppable
21
+ local setItemPawnable = SetItemPawnable
22
+ local setItemIntegerField = BlzSetItemIntegerField
23
+ ____exports.ItemField = __TS__Class()
24
+ local ItemField = ____exports.ItemField
25
+ ItemField.name = "ItemField"
26
+ __TS__ClassExtends(ItemField, ObjectField)
27
+ function ItemField.prototype.getObjectDataEntryId(self, instance)
28
+ return instance.typeId
29
+ end
30
+ __TS__SetDescriptor(
31
+ ItemField.prototype,
32
+ "instanceClass",
33
+ {get = function(self)
34
+ return Item
35
+ end},
36
+ true
37
+ )
38
+ local nativeItemBooleanFieldIds = luaSetOf(
39
+ fourCC("ipaw"),
40
+ fourCC("iusa")
41
+ )
42
+ ____exports.ItemBooleanField = __TS__Class()
43
+ local ItemBooleanField = ____exports.ItemBooleanField
44
+ ItemBooleanField.name = "ItemBooleanField"
45
+ __TS__ClassExtends(ItemBooleanField, ____exports.ItemField)
46
+ function ItemBooleanField.prototype.getNativeFieldById(self, id)
47
+ return convertItemBooleanField(id)
48
+ end
49
+ function ItemBooleanField.prototype.hasNativeFieldValue(self)
50
+ return nativeItemBooleanFieldIds[self.id] ~= nil
51
+ end
52
+ function ItemBooleanField.prototype.getNativeFieldValue(self, instance)
53
+ return getItemBooleanField(instance.handle, self.nativeField)
54
+ end
55
+ function ItemBooleanField.prototype.setNativeFieldValue(self, instance, value)
56
+ if self.id == fourCC("iusa") then
57
+ local handle = instance.handle
58
+ local powerUp = isItemPowerup(handle)
59
+ local perishes = getItemBooleanField(handle, ITEM_BF_PERISHABLE)
60
+ local dropsOnDeath = getItemBooleanField(handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
61
+ local canBeDropped = getItemBooleanField(handle, ITEM_BF_CAN_BE_DROPPED)
62
+ local canBeSold = isItemPawnable(handle)
63
+ local result = setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, value)
64
+ setItemPawnable(handle, canBeSold)
65
+ setItemDroppable(handle, canBeDropped)
66
+ setItemDropOnDeath(handle, dropsOnDeath)
67
+ setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
68
+ setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
69
+ return result
70
+ end
71
+ return setItemBooleanField(instance.handle, self.nativeField, value)
72
+ end
73
+ __TS__SetDescriptor(
74
+ ItemBooleanField.prototype,
75
+ "defaultValue",
76
+ {get = function(self)
77
+ return false
78
+ end},
79
+ true
80
+ )
81
+ local nativeItemIntegerFieldIds = luaSetOf(
82
+ fourCC("ilev"),
83
+ fourCC("iuse"),
84
+ fourCC("icid"),
85
+ fourCC("ihtp"),
86
+ fourCC("ihpc"),
87
+ fourCC("ipri"),
88
+ fourCC("iarm"),
89
+ fourCC("iclr"),
90
+ fourCC("iclg"),
91
+ fourCC("iclb"),
92
+ fourCC("ical")
93
+ )
94
+ ____exports.ItemIntegerField = __TS__Class()
95
+ local ItemIntegerField = ____exports.ItemIntegerField
96
+ ItemIntegerField.name = "ItemIntegerField"
97
+ __TS__ClassExtends(ItemIntegerField, ____exports.ItemField)
98
+ function ItemIntegerField.prototype.getNativeFieldById(self, id)
99
+ return convertItemIntegerField(id)
100
+ end
101
+ function ItemIntegerField.prototype.hasNativeFieldValue(self)
102
+ return nativeItemIntegerFieldIds[self.id] ~= nil
103
+ end
104
+ function ItemIntegerField.prototype.getNativeFieldValue(self, instance)
105
+ return getItemIntegerField(instance.handle, self.nativeField)
106
+ end
107
+ function ItemIntegerField.prototype.setNativeFieldValue(self, instance, value)
108
+ return setItemIntegerField(instance.handle, self.nativeField, value)
109
+ end
110
+ __TS__SetDescriptor(
111
+ ItemIntegerField.prototype,
112
+ "defaultValue",
113
+ {get = function(self)
114
+ return 0
115
+ end},
116
+ true
117
+ )
118
+ return ____exports
@@ -5,6 +5,7 @@ import { UnitType, UnitTypeId } from "../object-data/entry/unit-type";
5
5
  import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
6
6
  import { AttackType } from "../object-data/auxiliary/attack-type";
7
7
  import { UnitClassifications } from "../object-data/auxiliary/unit-classification";
8
+ import { HealthRegenerationType } from "../object-data/auxiliary/health-regeneration-type";
8
9
  export declare abstract class UnitField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<UnitType, Unit, ValueType, NativeFieldType> {
9
10
  protected get instanceClass(): typeof Unit;
10
11
  protected getObjectDataEntryId(instance: Unit): UnitTypeId;
@@ -25,11 +26,11 @@ export declare class UnitFloatField extends UnitField<number, junitrealfield> {
25
26
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
26
27
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitFloatField>>;
27
28
  }
28
- export declare class UnitIntegerField extends UnitField<number, junitintegerfield> {
29
- protected get defaultValue(): number;
29
+ export declare class UnitIntegerField<T extends number = number> extends UnitField<T, junitintegerfield> {
30
+ protected get defaultValue(): T;
30
31
  protected getNativeFieldById(id: number): junitintegerfield;
31
- protected getNativeFieldValue(instance: Unit): number;
32
- protected setNativeFieldValue(instance: Unit, value: number): boolean;
32
+ protected getNativeFieldValue(instance: Unit): T;
33
+ protected setNativeFieldValue(instance: Unit, value: T): boolean;
33
34
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<UnitIntegerField>>;
34
35
  }
35
36
  export declare class UnitStringField extends UnitField<string, junitstringfield> {
@@ -76,6 +77,8 @@ export declare class UnitPropulsionWindowField extends UnitFloatField {
76
77
  protected getNativeFieldValue(instance: Unit): number;
77
78
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
78
79
  }
80
+ export declare class UnitHealthRegenerationTypeField extends UnitIntegerField<HealthRegenerationType> {
81
+ }
79
82
  export declare class UnitScalingValueField extends UnitFloatField {
80
83
  protected setNativeFieldValue(instance: Unit, value: number): boolean;
81
84
  }
@@ -298,6 +298,10 @@ function UnitPropulsionWindowField.prototype.setNativeFieldValue(self, instance,
298
298
  setUnitPropulsionWindow(instance.handle, value)
299
299
  return true
300
300
  end
301
+ ____exports.UnitHealthRegenerationTypeField = __TS__Class()
302
+ local UnitHealthRegenerationTypeField = ____exports.UnitHealthRegenerationTypeField
303
+ UnitHealthRegenerationTypeField.name = "UnitHealthRegenerationTypeField"
304
+ __TS__ClassExtends(UnitHealthRegenerationTypeField, ____exports.UnitIntegerField)
301
305
  ____exports.UnitScalingValueField = __TS__Class()
302
306
  local UnitScalingValueField = ____exports.UnitScalingValueField
303
307
  UnitScalingValueField.name = "UnitScalingValueField"
@@ -46,6 +46,7 @@ export declare abstract class ObjectField<ObjectDataEntryType extends ObjectData
46
46
  private modifiersByInstance?;
47
47
  getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
48
48
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
49
+ updateActualValue(instance: InstanceType): void;
49
50
  applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
50
51
  removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
51
52
  removeValue(entry: ObjectDataEntryType): boolean;
@@ -87,8 +88,9 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
87
88
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
88
89
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
89
90
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
90
- getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
91
+ getValue<LevelType extends [number, boolean?] | [boolean?]>(entry: ObjectDataEntryType | InstanceType, ...[level, includeModifiers]: LevelType): LevelType extends [number, boolean?] ? ValueType : ValueType[];
91
92
  setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
93
+ updateActualValue(instance: InstanceType, level?: number): void;
92
94
  applyModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): void;
93
95
  removeModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): boolean;
94
96
  trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;