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
package/engine/buff.d.ts CHANGED
@@ -31,8 +31,10 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
31
31
  source?: Unit;
32
32
  behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
33
33
  abilityTypeIds?: Record<AbilityTypeId, {
34
- [numberField: (AbilityNumberField | AbilityNumberLevelField) & symbol]: NumberParameterValueType;
35
- } & {
34
+ readonly fields?: [
35
+ AbilityNumberField | AbilityNumberLevelField,
36
+ NumberParameterValueType
37
+ ][];
36
38
  /** Default `true`. */
37
39
  readonly isButtonVisible?: boolean;
38
40
  /** Default is the level of the source ability or 0 if it is absent. */
@@ -54,9 +56,11 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
54
56
  damageIncrease?: NumberParameterValueType;
55
57
  damageIncreaseFactor?: NumberParameterValueType;
56
58
  armorIncrease?: NumberParameterValueType;
57
- armorIncreaseFactor?: NumberParameterValueType;
59
+ maxHealthIncrease?: NumberParameterValueType;
60
+ maxManaIncrease?: NumberParameterValueType;
58
61
  attackSpeedIncreaseFactor?: NumberParameterValueType;
59
62
  movementSpeedIncreaseFactor?: NumberParameterValueType;
63
+ manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
60
64
  evasionProbability?: NumberParameterValueType;
61
65
  missProbability?: NumberParameterValueType;
62
66
  damageFactor?: NumberParameterValueType;
@@ -76,6 +80,9 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
76
80
  maximumAutoAttackCount?: IntegerParameterValueType;
77
81
  maximumDamageDealtEventCount?: IntegerParameterValueType;
78
82
  maximumDamageReceivedEventCount?: IntegerParameterValueType;
83
+ absorbedDamageFactor?: NumberParameterValueType;
84
+ maximumDamageAbsorbed?: NumberParameterValueType;
85
+ destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
79
86
  damageOnExpiration?: NumberParameterValueType;
80
87
  healingOnExpiration?: NumberParameterValueType;
81
88
  killsOnExpiration?: BooleanParameterValueType;
@@ -119,22 +126,26 @@ declare const enum BuffPropertyKey {
119
126
  MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
120
127
  DAMAGE_RECEIVED_EVENT_COUNT = 133,
121
128
  MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
122
- TURNS_INTO_GHOST = 135,
123
- STUNS = 136,
124
- IGNORES_STUN_IMMUNITY = 137,
125
- DISABLES_AUTO_ATTACK = 138,
126
- PROVIDES_INVULNERABILITY = 139,
127
- KILLS_ON_EXPIRATION = 140,
128
- EXPLODES_ON_EXPIRATION = 141,
129
- MISS_PROBABILITY = 142,
130
- ABILITY_COOLDOWN_FACTOR = 143,
131
- ABILITY_COOLDOWN_MODIFIER = 144
129
+ ABSORBED_DAMAGE_FACTOR = 135,
130
+ MAXIMUM_DAMAGE_ABSORBED = 136,
131
+ DAMAGE_ABSORBED = 137,
132
+ DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED = 138,
133
+ TURNS_INTO_GHOST = 139,
134
+ STUNS = 140,
135
+ IGNORES_STUN_IMMUNITY = 141,
136
+ DISABLES_AUTO_ATTACK = 142,
137
+ PROVIDES_INVULNERABILITY = 143,
138
+ KILLS_ON_EXPIRATION = 144,
139
+ EXPLODES_ON_EXPIRATION = 145,
140
+ MISS_PROBABILITY = 146,
141
+ ABILITY_COOLDOWN_FACTOR = 147,
142
+ ABILITY_COOLDOWN_MODIFIER = 148
132
143
  }
133
144
  export declare const enum BuffTypeIdSelectionPolicy {
134
145
  LEAST_DURATION = 0
135
146
  }
136
147
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
137
- export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
148
+ export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
138
149
  ...typeId: [ApplicableBuffTypeId] | [
139
150
  typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
140
151
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
@@ -144,8 +155,10 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
144
155
  ...abilityOrParameters: [
145
156
  ability?: Ability | AbilityBehavior,
146
157
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
147
- ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
148
- ];
158
+ ] | [
159
+ parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
160
+ ]
161
+ ] : never;
149
162
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
150
163
  private _unit;
151
164
  protected readonly __additionalParametersBrand?: AdditionalParameters;
@@ -184,6 +197,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
184
197
  private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
185
198
  private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
186
199
  private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
200
+ private [BuffPropertyKey.ABSORBED_DAMAGE_FACTOR]?;
201
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_ABSORBED]?;
202
+ private [BuffPropertyKey.DAMAGE_ABSORBED]?;
203
+ private [BuffPropertyKey.DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED]?;
187
204
  private [BuffPropertyKey.TURNS_INTO_GHOST]?;
188
205
  private [BuffPropertyKey.STUNS]?;
189
206
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
@@ -198,10 +215,11 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
198
215
  readonly typeId: ApplicableBuffTypeId;
199
216
  readonly polarity: BuffPolarity;
200
217
  readonly resistanceType: BuffResistanceType;
201
- readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : keyof AdditionalParameters extends never ? undefined : {
218
+ readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : AdditionalParameters extends Record<PropertyKey, never> ? undefined : {
202
219
  [K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
203
220
  };
204
221
  private readonly handle;
222
+ readonly previousBuff?: Buff;
205
223
  private _timer?;
206
224
  private readonly _level?;
207
225
  private readonly _spellStealPriority?;
@@ -209,7 +227,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
209
227
  private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
210
228
  private readonly _abilityTypeIds?;
211
229
  private _behaviors?;
212
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
230
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
213
231
  get level(): number;
214
232
  get remainingDamageOverDuration(): number;
215
233
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -237,6 +255,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
237
255
  set receivedDamageFactor(receivedDamageFactor: number);
238
256
  get armorIncrease(): number;
239
257
  set armorIncrease(armorIncrease: number);
258
+ get maxHealthIncrease(): number;
259
+ set maxHealthIncrease(maxHealthIncrease: number);
260
+ get maxManaIncrease(): number;
261
+ set maxManaIncrease(maxManaIncrease: number);
240
262
  get turnsIntoGhost(): boolean;
241
263
  set turnsIntoGhost(turnsIntoGhost: boolean);
242
264
  get stuns(): boolean;
@@ -265,9 +287,19 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
265
287
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
266
288
  get evasionProbability(): number;
267
289
  set evasionProbability(evasionProbability: number);
290
+ get manaRegenerationRateIncreaseFactor(): number;
291
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
268
292
  get duration(): number;
293
+ set duration(duration: number);
269
294
  get remainingDuration(): number;
270
295
  set remainingDuration(remainingDuration: number);
296
+ get absorbedDamageFactor(): number;
297
+ set absorbedDamageFactor(absorbedDamageFactor: number);
298
+ get maximumDamageAbsorbed(): number;
299
+ set maximumDamageAbsorbed(maximumDamageAbsorbed: number);
300
+ get damageAbsorbed(): number;
301
+ get destroysOnMaximumDamageAbsorbed(): boolean;
302
+ set destroysOnMaximumDamageAbsorbed(destroysOnMaximumDamageAbsorbed: boolean);
271
303
  get abilityCooldownFactor(): number;
272
304
  set abilityCooldownFactor(abilityCooldownFactor: number);
273
305
  onAbilityGained(ability: Ability): void;
@@ -276,7 +308,12 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
276
308
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
277
309
  ...parametersOrDuration: [] | [EffectParameters] | [number]
278
310
  ]): void;
279
- flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
311
+ flashSpecialEffect(...parameters: [
312
+ ...widgetOrXY: [] | [Widget] | [x: number, x: number],
313
+ ...parametersOrDuration: [] | [EffectParameters] | [number]
314
+ ]): void;
315
+ private flash;
316
+ expire(): void;
280
317
  protected onCreate(): void;
281
318
  protected onDestroy(): Destructor;
282
319
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;